diff --git a/config/default/clientDiag.conf.php b/config/default/clientDiag.conf.php index 72d5e10e..93606ed8 100644 --- a/config/default/clientDiag.conf.php +++ b/config/default/clientDiag.conf.php @@ -51,6 +51,12 @@ */ 'configurableText' => null, + /** + * When this option is activated, the diagnostic will require a school name before allowing to start the checks + * @type boolean + */ + 'requireSchoolName' => false, + /** * List of testers that can be loaded * @type array diff --git a/controller/CompatibilityChecker.php b/controller/CompatibilityChecker.php index 39ffea1f..857a875d 100644 --- a/controller/CompatibilityChecker.php +++ b/controller/CompatibilityChecker.php @@ -200,6 +200,10 @@ protected function getData($check = false) unset($data[$type . '_type']); } + if ($this->hasRequestParameter('school')) { + $data[Storage::DIAGNOSTIC_SCHOOL] = \tao_helpers_Display::sanitizeXssHtml(trim($this->getRequestParameter('school'))); + } + if ($check) { if (!$this->hasRequestParameter('os')) { throw new \common_exception_MissingParameter('os'); diff --git a/controller/DiagnosticChecker.php b/controller/DiagnosticChecker.php index af5dd9f8..74826f9f 100644 --- a/controller/DiagnosticChecker.php +++ b/controller/DiagnosticChecker.php @@ -51,7 +51,7 @@ protected function getData($check = false) $data['login'] = UserHelper::getUserLogin(\common_session_SessionManager::getSession()->getUser()); if ($this->hasRequestParameter('workstation')) { - $data[PaginatedSqlStorage::DIAGNOSTIC_WORKSTATION] = trim($this->getRequestParameter('workstation')); + $data[PaginatedSqlStorage::DIAGNOSTIC_WORKSTATION] = \tao_helpers_Display::sanitizeXssHtml(trim($this->getRequestParameter('workstation'))); } return $data; diff --git a/manifest.php b/manifest.php index 4621ff3f..ffca0847 100755 --- a/manifest.php +++ b/manifest.php @@ -29,7 +29,7 @@ 'label' => 'Browser and OS diagnostic tool', 'description' => 'Check compatibility of the os and browser of a client', 'license' => 'GPL-2.0', - 'version' => '2.10.1', + 'version' => '2.11.0', 'author' => 'Open Assessment Technologies SA', 'requires' => array( 'tao' => '>=14.3.1', diff --git a/model/diagnostic/DiagnosticDataTable.php b/model/diagnostic/DiagnosticDataTable.php index cd044a05..413678b4 100644 --- a/model/diagnostic/DiagnosticDataTable.php +++ b/model/diagnostic/DiagnosticDataTable.php @@ -65,6 +65,7 @@ public function getDiagnostics($options = array()) foreach($data as $idx => $row) { $rowData = [ 'id' => $row[PaginatedSqlStorage::DIAGNOSTIC_ID], + 'school' => $row[PaginatedSqlStorage::DIAGNOSTIC_SCHOOL], 'fingerprint' => [ 'uuid' => $row[PaginatedSqlStorage::DIAGNOSTIC_FINGERPRINT_UUID], 'value' => $row[PaginatedSqlStorage::DIAGNOSTIC_FINGERPRINT_VALUE], diff --git a/model/storage/Storage.php b/model/storage/Storage.php index e8303030..d0809862 100644 --- a/model/storage/Storage.php +++ b/model/storage/Storage.php @@ -36,6 +36,7 @@ interface Storage const DIAGNOSTIC_LOGIN = 'login'; const DIAGNOSTIC_IP = 'ip'; const DIAGNOSTIC_WORKSTATION = 'workstation'; + const DIAGNOSTIC_SCHOOL = 'school'; const DIAGNOSTIC_FINGERPRINT_UUID = 'fingerprint_uuid'; const DIAGNOSTIC_FINGERPRINT_VALUE = 'fingerprint_value'; const DIAGNOSTIC_FINGERPRINT_DETAILS = 'fingerprint_details'; diff --git a/scripts/install/createDiagnosticTable.php b/scripts/install/createDiagnosticTable.php index 8c9661a9..3cb51dfc 100644 --- a/scripts/install/createDiagnosticTable.php +++ b/scripts/install/createDiagnosticTable.php @@ -49,6 +49,7 @@ public function __invoke($params) $tableResults->addColumn(Sql::DIAGNOSTIC_USER_ID, 'string', ['length' => 255, 'notnull' => false]); $tableResults->addColumn(Sql::DIAGNOSTIC_IP, 'string', ['length' => 32]); $tableResults->addColumn(Sql::DIAGNOSTIC_WORKSTATION, 'string', ['length' => 64, 'notnull' => false]); + $tableResults->addColumn(Sql::DIAGNOSTIC_SCHOOL, 'string', ['length' => 255, 'notnull' => false]); $tableResults->addColumn(Sql::DIAGNOSTIC_FINGERPRINT_UUID, 'string', ['length' => 32, 'notnull' => false]); $tableResults->addColumn(Sql::DIAGNOSTIC_FINGERPRINT_VALUE, 'string', ['length' => 32, 'notnull' => false]); $tableResults->addColumn(Sql::DIAGNOSTIC_FINGERPRINT_DETAILS, 'text', ['notnull' => false]); diff --git a/scripts/update/Updater.php b/scripts/update/Updater.php index bdc7deaf..1663ff1e 100755 --- a/scripts/update/Updater.php +++ b/scripts/update/Updater.php @@ -575,5 +575,37 @@ public function update($initialVersion) } $this->skip('2.9.0', '2.10.1'); + + if ($this->isVersion('2.10.1')) { + $extension = $this->getServiceManager()->get(\common_ext_ExtensionsManager::SERVICE_ID)->getExtensionById('taoClientDiagnostic'); + $config = $extension->getConfig('clientDiag'); + + $config['requireSchoolName'] = false; + + $extension->setConfig('clientDiag', $config); + + $storageService = $this->getServiceManager()->get(Storage::SERVICE_ID); + if ($storageService instanceof Sql) { + $persistence = $storageService->getPersistence(); + + $schemaManager = $persistence->getDriver()->getSchemaManager(); + $schema = $schemaManager->createSchema(); + + $fromSchema = clone $schema; + + /** @var \Doctrine\DBAL\Schema\Table $tableResults */ + $tableResults = $schema->getTable(Sql::DIAGNOSTIC_TABLE); + + if (! $tableResults->hasColumn(PaginatedSqlStorage::DIAGNOSTIC_SCHOOL)) { + $tableResults->addColumn(Sql::DIAGNOSTIC_SCHOOL, 'string', ['length' => 255, 'notnull' => false]); + $queries = $persistence->getPlatform()->getMigrateSchemaSql($fromSchema, $schema); + foreach ($queries as $query) { + $persistence->exec($query); + } + } + } + + $this->setVersion('2.11.0'); + } } } diff --git a/views/css/diagnostics.css b/views/css/diagnostics.css index 00a3498c..40b969ad 100644 --- a/views/css/diagnostics.css +++ b/views/css/diagnostics.css @@ -1,3 +1,3 @@ -.diagnostics-main-area{max-width:768px;margin:40px auto 0 auto;background:#f3f1ef;border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;padding:20px}.diagnostics-main-area h1,.diagnostics-main-area h2,.diagnostics-main-area h3{font-style:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif}.diagnostics-main-area h1{margin-bottom:20px;font-size:20px;font-size:2rem}.diagnostics-main-area h2{margin:0;font-size:14px;font-size:1.4rem}.diagnostics-main-area h3{margin-top:10px;margin-bottom:5px;font-size:12px;font-size:1.2rem}.diagnostics-main-area .status h2,.diagnostics-main-area .details h2{margin:1rem 0}.diagnostics-main-area .legend{font-style:italic;font-weight:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:11px;font-size:1.1rem}.diagnostics-main-area .customMsg{margin-top:10px}.diagnostics-main-area .quality-bar{height:15px;background:linear-gradient(to right, #CE1431 0%, #D57915 25%, #D5A215 50%, #D5CB15 75%, #36B111 100%);opacity:.8;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin:5px 0 10px;position:relative}.diagnostics-main-area .quality-indicator{position:absolute;border-width:10px 8px;border-style:solid;border-color:#333 transparent transparent;top:-1px;height:25px;width:0}.diagnostics-main-area .quality-indicator[title]:before{font-size:11px;font-size:1.1rem;content:attr(title);position:absolute;top:-36px;left:-12px;text-align:center;width:24px;height:24px;line-height:24px;display:inline-block;background-color:#0e5d91;color:rgba(255,255,255,0.9);-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px}.diagnostics-main-area .quality-indicator.wide[title]:before{left:-16px;width:32px}.diagnostics-main-area [data-result],.diagnostics-main-area .bandwidth-box{display:none}.diagnostics-main-area [data-action=bandwidth-launcher]{margin:5px 0 10px}.diagnostics-main-area li{padding-bottom:10px}.diagnostics-main-area .intro{margin-bottom:20px}table.datatable [class^="icon-"]{padding:0}table.datatable td{font-size:90%;font-weight:normal}table.datatable .progress .state:not(:first-child):before{content:' - '}table.datatable .progress .item-time:before{content:' ('}table.datatable .progress .item-time .total:before{content:' / '}table.datatable .progress .item-time:after{content:')'}.details table.matrix{border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;margin-top:5px}.details table.matrix td:first-child{min-width:30%}.diagnostic-scope h1{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.diagnostic-scope h2{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.diagnostic-scope form.daterange label{padding:0}.diagnostic-scope form.daterange input{margin:0 10px}.diagnostic-scope table.datatable [class^="icon-"]{padding:0}.diagnostic-scope table.datatable td{font-size:90%;font-weight:normal}.diagnostic-scope .content{margin:auto}.diagnostic-scope .diagnostic-index .content,.diagnostic-scope .diagnostic-runner .content{width:100%;padding:0 20px}.diagnostic-scope .diagnostic-index .message,.diagnostic-scope .diagnostic-runner .message{padding:8px;text-align:center}.diagnostic-scope .panel .action-bar{background:#266d9c;padding:3px;overflow:hidden;color:#e7eff4;margin:40px 0 10px 0}.diagnostic-scope .panel .action-bar .btn-info{overflow:hidden;background:transparent;border:1px rgba(255,255,255,0.3) solid}.diagnostic-scope .diagnostics-main-area{margin-top:0px;max-width:800px}.diagnostic-scope .detailed-value{display:flex;justify-content:space-between}.diagnostic-scope .detailed-value.errors{color:#d8ae5b}.diagnostic-scope .detailed-value .details{font-size:2rem;cursor:pointer;color:#3e7da7}.diagnostic-scope .detailed-value .details:hover{color:#03131d}.action-bar .tool-exitButton,.action-bar [data-control="exitButton"]{float:right} +.diagnostics-main-area{max-width:768px;margin:40px auto 0 auto;background:#f3f1ef;border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;padding:20px}.diagnostics-main-area h1,.diagnostics-main-area h2,.diagnostics-main-area h3{font-style:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif}.diagnostics-main-area h1{margin-bottom:20px;font-size:20px;font-size:2rem}.diagnostics-main-area h2{margin:0;font-size:14px;font-size:1.4rem}.diagnostics-main-area h3{margin-top:10px;margin-bottom:5px;font-size:12px;font-size:1.2rem}.diagnostics-main-area .status h2,.diagnostics-main-area .details h2{margin:1rem 0}.diagnostics-main-area .legend{font-style:italic;font-weight:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:11px;font-size:1.1rem}.diagnostics-main-area .customMsg{margin-top:10px}.diagnostics-main-area .quality-bar{height:15px;background:linear-gradient(to right, #CE1431 0%, #D57915 25%, #D5A215 50%, #D5CB15 75%, #36B111 100%);opacity:.8;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin:5px 0 10px;position:relative}.diagnostics-main-area .quality-indicator{position:absolute;border-width:10px 8px;border-style:solid;border-color:#333 transparent transparent;top:-1px;height:25px;width:0}.diagnostics-main-area .quality-indicator[title]:before{font-size:11px;font-size:1.1rem;content:attr(title);position:absolute;top:-36px;left:-12px;text-align:center;width:24px;height:24px;line-height:24px;display:inline-block;background-color:#0e5d91;color:rgba(255,255,255,0.9);-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px}.diagnostics-main-area .quality-indicator.wide[title]:before{left:-16px;width:32px}.diagnostics-main-area [data-result],.diagnostics-main-area .bandwidth-box{display:none}.diagnostics-main-area [data-action=bandwidth-launcher]{margin:5px 0 10px}.diagnostics-main-area li{padding-bottom:10px}.diagnostics-main-area .intro{margin-bottom:20px}.diagnostics-main-area .intro label{display:inline-block;width:100px}table.datatable [class^="icon-"]{padding:0}table.datatable td{font-size:90%;font-weight:normal}table.datatable .progress .state:not(:first-child):before{content:' - '}table.datatable .progress .item-time:before{content:' ('}table.datatable .progress .item-time .total:before{content:' / '}table.datatable .progress .item-time:after{content:')'}.details table.matrix{border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;margin-top:5px}.details table.matrix td:first-child{min-width:30%}.diagnostic-scope h1{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.diagnostic-scope h2{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.diagnostic-scope form.daterange label{padding:0}.diagnostic-scope form.daterange input{margin:0 10px}.diagnostic-scope table.datatable [class^="icon-"]{padding:0}.diagnostic-scope table.datatable td{font-size:90%;font-weight:normal}.diagnostic-scope .content{margin:auto}.diagnostic-scope .diagnostic-index .content,.diagnostic-scope .diagnostic-runner .content{width:100%;padding:0 20px}.diagnostic-scope .diagnostic-index .message,.diagnostic-scope .diagnostic-runner .message{padding:8px;text-align:center}.diagnostic-scope .panel .action-bar{background:#266d9c;padding:3px;overflow:hidden;color:#e7eff4;margin:40px 0 10px 0}.diagnostic-scope .panel .action-bar .btn-info{overflow:hidden;background:transparent;border:1px rgba(255,255,255,0.3) solid}.diagnostic-scope .diagnostics-main-area{margin-top:0px;max-width:800px}.diagnostic-scope .detailed-value{display:flex;justify-content:space-between}.diagnostic-scope .detailed-value.errors{color:#d8ae5b}.diagnostic-scope .detailed-value .details{font-size:2rem;cursor:pointer;color:#3e7da7}.diagnostic-scope .detailed-value .details:hover{color:#03131d}.action-bar .tool-exitButton,.action-bar [data-control="exitButton"]{float:right} /*# sourceMappingURL=diagnostics.css.map */ \ No newline at end of file diff --git a/views/css/diagnostics.css.map b/views/css/diagnostics.css.map index fb2d994d..101e9114 100644 --- a/views/css/diagnostics.css.map +++ b/views/css/diagnostics.css.map @@ -10,5 +10,5 @@ "../../../tao/views/scss/inc/fonts/_tao-icon-vars.scss" ], "names": [], - "mappings": "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" + "mappings": "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" } \ No newline at end of file diff --git a/views/js/controller/Diagnostic/index.js b/views/js/controller/Diagnostic/index.js index fe1bfa1c..69ae21c7 100644 --- a/views/js/controller/Diagnostic/index.js +++ b/views/js/controller/Diagnostic/index.js @@ -258,6 +258,14 @@ define([ label: __('Workstation') }); + // column: School name + if (config.requireSchoolName) { + model.push({ + id: 'school', + label: __('School') + }); + } + // results of fingerprinting if (config.testers.fingerprint && config.testers.fingerprint.enabled) { // column: Fingerprint of the workstation diff --git a/views/js/controllers.min.js b/views/js/controllers.min.js index a1d51eb8..88eb8ace 100644 --- a/views/js/controllers.min.js +++ b/views/js/controllers.min.js @@ -118,40 +118,44 @@ params.r=Math.random().toString(36).substring(7),params.w=screen.width,params.h= "use strict";function browserTester(config){var initConfig=getConfig(config,_defaults),labels=getLabels(_messages,initConfig.level);return{start:function(done){var self=this;getPlatformInfo(window,initConfig).then(function(results){$.post(url.route(initConfig.action,initConfig.controller,initConfig.extension),results,function(data){var percentage="success"===data.type?100:"warning"===data.type?33:0,status=self.getFeedback(percentage,data),summary=self.getSummary(results);status.customMsgRenderer=function(customMsg){return(customMsg||"").replace(_placeHolders.CURRENT_BROWSER,summary.browser.value).replace(_placeHolders.CURRENT_OS,summary.os.value)},done(status,summary,results); },"json")})},get labels(){return labels},getSummary:function(results){var currentBrowser=results.browser+" "+results.browserVersion,currentOs=results.os+" "+results.osVersion;return{browser:{message:labels.browser,value:currentBrowser},os:{message:labels.os,value:currentOs}}},getFeedback:function(result,data){var status=getStatus(result,data);return status.id=initConfig.id,status.title=labels.title,status}}}var _defaults={id:"browser",browserVersionAction:"whichBrowser",browserVersionController:"CompatibilityChecker",browserVersionExtension:"taoClientDiagnostic",action:"check",controller:"DiagnosticChecker"},_placeHolders={CURRENT_BROWSER:"%CURRENT_BROWSER%", CURRENT_OS:"%CURRENT_OS%"},_messages=[{title:__("Operating system and web browser"),status:__("Checking the browser..."),browser:__("Web browser"),os:__("Operating system")}];return browserTester}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/main",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var stack1,helper,buffer="";return buffer+="

",(helper=helpers.header)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.header,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

"}function program3(depth0,data){ -var stack1,helper,buffer="";return buffer+="

",(helper=helpers.info)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.info,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

"}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this;return buffer+='
\n\n

',(helper=helpers.title)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.title,stack1=typeof helper===functionType?helper.call(depth0,{ -hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'

\n\n
\n ',stack1=helpers.if.call(depth0,depth0&&depth0.header,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.info,{hash:{},inverse:self.noop,fn:self.program(3,program3,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+='\n
\n\n
\n \n
\n\n \n\n
\n

\n
\n\n
\n'})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/result",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var helper,options,buffer="";return buffer+='\n
\n \n \n \n
\n '}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,buffer="",helperMissing=helpers.helperMissing,escapeExpression=this.escapeExpression,functionType="function",self=this; -return buffer+='
  • \n

    ',(helper=helpers.title)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.title,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'

    \n
    \n\n ',stack1=helpers.if.call(depth0,depth0&&depth0.details,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1), -buffer+="\n
  • \n"})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/details",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var stack1,helper,buffer="";return buffer+="\n ",(helper=helpers.message)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.message,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"",(helper=helpers.value)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.value,stack1=typeof helper===functionType?helper.call(depth0,{ -hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"\n "}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,options,buffer="",functionType="function",escapeExpression=this.escapeExpression,helperMissing=helpers.helperMissing,self=this;return buffer+='
    \n

    '+escapeExpression((helper=helpers.__||depth0&&depth0.__,options={hash:{},data:data},helper?helper.call(depth0,"Details",options):helperMissing.call(depth0,"__","Details",options)))+'

    \n
    \n \n \n ',stack1=helpers.each.call(depth0,depth0,{ -hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n \n
    \n
    \n
    \n"})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var stack1,helper,buffer="";return buffer+='
    ',(helper=helpers.legend)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.legend,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"
    "; -}function program3(depth0,data){var stack1,helper,buffer="";return buffer+='
    ',(helper=helpers.customMsg)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.customMsg,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"
    "}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this;return buffer+='
    \n \n ',(helper=helpers.message)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.message,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"\n ",stack1=helpers.if.call(depth0,depth0&&depth0.legend,{ -hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.customMsg,{hash:{},inverse:self.noop,fn:self.program(3,program3,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n
    \n"})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){return" wide"}function program3(depth0,data){var stack1,helper,buffer="";return buffer+=' title="',(helper=helpers.label)?stack1=helper.call(depth0,{hash:{}, -data:data}):(helper=depth0&&depth0.label,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'"'}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this;return buffer+='
    \n
    \n
    \n"})}),define("css!taoClientDiagnosticCss/diagnostics",[],function(){}),define("taoClientDiagnostic/tools/diagnostic/diagnostic",["jquery","lodash","i18n","async","ui/feedback","ui/component","core/dataProvider/request","util/url","taoClientDiagnostic/tools/performances/tester","taoClientDiagnostic/tools/bandwidth/tester","taoClientDiagnostic/tools/upload/tester","taoClientDiagnostic/tools/browser/tester","taoClientDiagnostic/tools/getStatus","taoClientDiagnostic/tools/getConfig","tpl!taoClientDiagnostic/tools/diagnostic/tpl/main","tpl!taoClientDiagnostic/tools/diagnostic/tpl/result","tpl!taoClientDiagnostic/tools/diagnostic/tpl/details","tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback","tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar","css!taoClientDiagnosticCss/diagnostics"],function($,_,__,async,feedback,component,request,urlUtil,performancesTester,bandwidthTester,uploadTester,browserTester,getStatus,getConfig,mainTpl,resultTpl,detailsTpl,feedbackTpl,qualityBarTpl){ -"use strict";function diagnosticFactory(config){return config&&_.forEach(["title","header","footer","info","button"],function(name){config[name]&&(config[name]=__(config[name]))}),component(diagnostic,_defaults).setTemplate(mainTpl).on("destroy",function(){this.controls=null}).on("render",function(){var self=this;this.controls={$start:this.$component.find('[data-action="test-launcher"]'),$status:this.$component.find(".status h2"),$results:this.$component.find(".results")},this.controls.$start.on("click",function(){self.run()}),this.controls.$results.on("click",'button[data-action="show-details"]',function(){var $btn=$(this).closest("button"),$result=$btn.closest("[data-result]"),$details=$result.find(".details"); -$details.removeClass("hidden"),$btn.addClass("hidden"),$result.find('[data-action="hide-details"]').removeClass("hidden")}),this.controls.$results.on("click",'button[data-action="hide-details"]',function(){var $btn=$(this).closest("button"),$result=$btn.closest("[data-result]"),$details=$result.find(".details");$details.addClass("hidden"),$btn.addClass("hidden"),$result.find('[data-action="show-details"]').removeClass("hidden")})}).init(config)}var _defaults={title:__("Diagnostic Tool"),header:__("This tool will run a number of tests in order to establish how well your current environment is suitable to run the TAO platform."),info:__("Be aware that these tests will take up to several minutes."), -button:__("Begin diagnostics"),actionStore:"storeData",controller:"DiagnosticChecker",extension:"taoClientDiagnostic",actionDropId:"deleteId",storeAllRuns:!1,configurableText:{}},_thresholds=[{threshold:0,message:__("Your system requires a compatibility update, please contact your system administrator."),type:"error"},{threshold:33,message:__("Your system is not optimal, please contact your system administrator."),type:"warning"},{threshold:66,message:__("Your system is fully compliant."),type:"success"}],diagnostic={changeStatus:function(status){return this.is("rendered")&&this.controls.$status.html(status),this},store:function(type,details,done){var config=this.config; -details=_.omit(details,"values"),details.type=type,$.post(urlUtil.route(config.actionStore,config.controller,config.extension,config.storeParams),details,done,"json")},getCustomMsg:function(key){return this.config.configurableText[key]},addCustomFeedbackMsg:function(status,msg){this.hasFailed(status)&&msg&&(_.isFunction(status.customMsgRenderer)&&(msg=status.customMsgRenderer(msg)),status.feedback=status.feedback||{},status.feedback.customMsg=msg)},hasFailed:function(result){return!(result&&result.feedback&&"success"===result.feedback.type)},addResult:function(result){var $main,$indicator,$result;return this.is("rendered")&&(result.quality&&result.quality.label&&result.quality.label.toString().length>2&&(result.quality.wide=!0), -$main=$(resultTpl(result)),$result=$main.find(".result"),result.feedback&&$result.append($(feedbackTpl(result.feedback))),result.quality&&$result.append($(qualityBarTpl(result.quality))),result.details&&$main.find(".details").append($(detailsTpl(result.details))),$indicator=$main.find(".quality-indicator"),this.controls.$results.append($main),$main.fadeIn(function(){$indicator.length&&$indicator.animate({left:result.percentage*$main.outerWidth()/100-$indicator.outerWidth()/2})})),this},prepare:function(){return this.trigger("start"),this.changeStatus(__("Starting...")),this.setState("running",!0),this.setState("done",!1),this.controls.$results.empty(),this.controls.$start.addClass("hidden"), -this},finish:function(){var config=this.config;return this.controls.$start.removeClass("hidden"),config.storeAllRuns&&this.deleteIdentifier(),this.trigger("end"),this.changeStatus(__("Done!")),this.setState("running",!1),this.setState("done",!0),this},deleteIdentifier:function(){var url=urlUtil.route(this.config.actionDropId,this.config.controller,this.config.extension);return request(url,null,"POST")},run:function(){function doCheck(testerConfig,cb){var testerId=testerConfig.id;self.trigger("starttester",testerId),self.setState(testerId,!0),require([testerConfig.tester],function(testerFactory){var tester=testerFactory(getConfig(testerConfig,self.config),self); -self.changeStatus(tester.labels.status),tester.start(function(status,details,results){var customMsg;testerConfig.customMsgKey&&(customMsg=self.getCustomMsg(testerConfig.customMsgKey),self.addCustomFeedbackMsg(status,customMsg)),_.forEach(details,function(info){information.push(info)}),scores[status.id]=status,self.trigger("endtester",testerId,status),self.setState(testerId,!1),results=_.mapValues(results,function(value){switch(typeof value){case"boolean":return value?1:0;case"object":return JSON.stringify(value)}return value}),self.store(testerId,results,function(){self.addResult(status),cb()})})})}var self=this,information=[],scores={},testers=[];return this.is("rendered")&&(this.prepare(), -_.forEach(this.config.testers,function(testerConfig,testerId){testerConfig.id=testerConfig.id||testerId,testerConfig.enabled&&testers.push(function(cb){doCheck(testerConfig,cb)})}),async.series(testers,function(){var total=_.min(scores,"percentage"),status=getStatus(total.percentage,_thresholds);status.title=__("Total"),status.id="total",self.addCustomFeedbackMsg(status,self.config.configurableText.diagTotalCheckResult),status.details=information,self.addResult(status),self.finish()})),this}};return diagnosticFactory}),define("taoClientDiagnostic/controller/CompatibilityChecker/diagnostics",["jquery","layout/loading-bar","ui/feedback","taoClientDiagnostic/tools/message","taoClientDiagnostic/tools/diagnostic/diagnostic"],function($,loadingBar,feedback,showMessage,diagnosticFactory){ -"use strict";return{start:function(config){var $contentArea=$(".content");showMessage("#feedback-box"),diagnosticFactory(config).on("start",function(){loadingBar.start()}).on("end",function(){loadingBar.stop()}).render($contentArea)}}}),define("tpl!taoClientDiagnostic/templates/diagnostic/main",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var stack1,buffer="";return buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.diagInstructions,{hash:{},inverse:self.noop,fn:self.program(2,program2,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n "; -}function program2(depth0,data){var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.diagInstructions)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.diagInstructions,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}function program4(depth0,data){var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.header)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.header,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}function program6(depth0,data){var stack1,helper,buffer=""; -return buffer+="

    ",(helper=helpers.info)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.info,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,options,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this,helperMissing=helpers.helperMissing;return buffer+='
    \n\n

    ',(helper=helpers.title)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.title,stack1=typeof helper===functionType?helper.call(depth0,{ -hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'

    \n\n
    \n ',stack1=helpers.with.call(depth0,depth0&&depth0.configurableText,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.header,{hash:{},inverse:self.noop,fn:self.program(4,program4,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.info,{hash:{},inverse:self.noop,fn:self.program(6,program6,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+='\n

    \n \n \n

    \n
    \n\n
    \n \n
    \n\n \n\n
    \n

    \n
    \n\n
    \n'})}),define("taoClientDiagnostic/controller/Diagnostic/diagnostic",["module","jquery","i18n","helpers","layout/loading-bar","ui/actionbar","ui/feedback","taoClientDiagnostic/tools/diagnostic/diagnostic","tpl!taoClientDiagnostic/templates/diagnostic/main"],function(module,$,__,helpers,loadingBar,actionbar,feedback,diagnosticFactory,diagnosticTpl){"use strict";var cssScope=".diagnostic-runner",taoDiagnosticRunnerCtlr={ -start:function(){function installTester(workstation){diagnosticFactory(config).setTemplate(diagnosticTpl).on("render",function(){var self=this;this.controls.$workstation=this.getElement().find('[data-control="workstation"]').on("keypress",function(e){13===e.which&&(e.preventDefault(),self.run())}).val(workstation)}).on("start",function(){this.config.storeParams=this.config.storeParams||{},this.config.storeParams.workstation=this.controls.$workstation.val(),this.controls.$workstation.prop("disabled",!0),loadingBar.start()}).on("end",function(){this.controls.$workstation.removeProp("disabled"),loadingBar.stop()}).on("render",function(){loadingBar.stop(),config.autoStart&&this.run(); -}).render($list)}var $container=$(cssScope),extension=$container.data("extension")||"taoClientDiagnostic",$list=$container.find(".list"),$panel=$(".panel"),config=$container.data("config"),indexUrl=helpers._url("index","Diagnostic",extension),workstationUrl=helpers._url("workstation","DiagnosticChecker",extension),buttons=[],moduleConfig=module.config()||{};config.configurableText=moduleConfig.configurableText||{},buttons.push({id:"back",icon:"step-backward",title:__("Return to the list"),label:__("List of readiness checks"),action:function(){window.location.href=indexUrl}}),window.self===window.top&&buttons.push({id:"exitButton",icon:"close",title:__("Exit"), -label:__("Exit"),action:function(){window.self.close()}}),actionbar({renderTo:$panel,buttons:buttons}),$.get(workstationUrl,"json").done(function(data){installTester(data&&data.workstation)}).fail(function(){feedback().error(__("Unable to get the workstation name!")),installTester()})}};return loadingBar.start(),taoDiagnosticRunnerCtlr}),!function(e,t,i){"use strict";"function"==typeof define&&define.amd?define("taoClientDiagnostic/lib/fingerprint/fingerprint2",i):"undefined"!=typeof module&&module.exports?module.exports=i():t.exports?t.exports=i():t[e]=i()}("Fingerprint2",this,function(){"use strict";var e=function(t){if(!(this instanceof e))return new e(t);var i={ -swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",detectScreenOrientation:!0,sortPluginsFor:[/palemoon/i],userDefinedFonts:[]};this.options=this.extend(t,i),this.nativeForEach=Array.prototype.forEach,this.nativeMap=Array.prototype.map};return e.prototype={extend:function(e,t){if(null==e)return t;for(var i in e)null!=e[i]&&t[i]!==e[i]&&(t[i]=e[i]);return t},get:function(e){var t=this,i={data:[],push:function(e){var i=e.key,a=e.value;"function"==typeof t.options.preprocessor&&(a=t.options.preprocessor(i,a)),this.data.push({key:i,value:a})}};i=this.userAgentKey(i),i=this.languageKey(i),i=this.colorDepthKey(i),i=this.pixelRatioKey(i),i=this.hardwareConcurrencyKey(i), -i=this.screenResolutionKey(i),i=this.availableScreenResolutionKey(i),i=this.timezoneOffsetKey(i),i=this.sessionStorageKey(i),i=this.localStorageKey(i),i=this.indexedDbKey(i),i=this.addBehaviorKey(i),i=this.openDatabaseKey(i),i=this.cpuClassKey(i),i=this.platformKey(i),i=this.doNotTrackKey(i),i=this.pluginsKey(i),i=this.canvasKey(i),i=this.webglKey(i),i=this.adBlockKey(i),i=this.hasLiedLanguagesKey(i),i=this.hasLiedResolutionKey(i),i=this.hasLiedOsKey(i),i=this.hasLiedBrowserKey(i),i=this.touchSupportKey(i),i=this.customEntropyFunction(i),this.fontsKey(i,function(i){var a=[];t.each(i.data,function(e){var t=e.value;"undefined"!=typeof e.value.join&&(t=e.value.join(";")), -a.push(t)});var r=t.x64hash128(a.join("~~~"),31);return e(r,i.data)})},customEntropyFunction:function(e){return"function"==typeof this.options.customFunction&&e.push({key:"custom",value:this.options.customFunction()}),e},userAgentKey:function(e){return this.options.excludeUserAgent||e.push({key:"user_agent",value:this.getUserAgent()}),e},getUserAgent:function(){return navigator.userAgent},languageKey:function(e){return this.options.excludeLanguage||e.push({key:"language",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||""}),e},colorDepthKey:function(e){return this.options.excludeColorDepth||e.push({key:"color_depth", -value:screen.colorDepth||-1}),e},pixelRatioKey:function(e){return this.options.excludePixelRatio||e.push({key:"pixel_ratio",value:this.getPixelRatio()}),e},getPixelRatio:function(){return window.devicePixelRatio||""},screenResolutionKey:function(e){return this.options.excludeScreenResolution?e:this.getScreenResolution(e)},getScreenResolution:function(e){var t;return t=this.options.detectScreenOrientation&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],"undefined"!=typeof t&&e.push({key:"resolution",value:t}),e},availableScreenResolutionKey:function(e){return this.options.excludeAvailableScreenResolution?e:this.getAvailableScreenResolution(e); +var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.info)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.info,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}function program5(depth0,data){var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.setup)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.setup,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}function program7(depth0,data){var helper,options,buffer="";return buffer+='\n

    \n \n \n

    \n '}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,buffer="",functionType="function",escapeExpression=this.escapeExpression,helperMissing=helpers.helperMissing,self=this; +return buffer+='
    \n\n

    ',(helper=helpers.title)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.title,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'

    \n\n
    \n ',stack1=helpers.if.call(depth0,depth0&&depth0.header,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.info,{hash:{},inverse:self.noop,fn:self.program(3,program3,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1), +buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.setup,{hash:{},inverse:self.noop,fn:self.program(5,program5,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.requireSchoolName,{hash:{},inverse:self.noop,fn:self.program(7,program7,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+='\n
    \n\n
    \n \n
    \n\n \n\n
    \n

    \n
    \n\n
    \n'})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/result",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var helper,options,buffer="";return buffer+='\n
    \n \n \n \n
    \n '}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,buffer="",helperMissing=helpers.helperMissing,escapeExpression=this.escapeExpression,functionType="function",self=this;return buffer+='
  • \n

    ', +(helper=helpers.title)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.title,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'

    \n
    \n\n ',stack1=helpers.if.call(depth0,depth0&&depth0.details,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n
  • \n"})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/details",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var stack1,helper,buffer=""; +return buffer+="\n ",(helper=helpers.message)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.message,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"",(helper=helpers.value)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.value,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"\n "}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,options,buffer="",functionType="function",escapeExpression=this.escapeExpression,helperMissing=helpers.helperMissing,self=this; +return buffer+='
    \n

    '+escapeExpression((helper=helpers.__||depth0&&depth0.__,options={hash:{},data:data},helper?helper.call(depth0,"Details",options):helperMissing.call(depth0,"__","Details",options)))+'

    \n
    \n \n \n ',stack1=helpers.each.call(depth0,depth0,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n \n
    \n
    \n
    \n"})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback",["handlebars"],function(hb){return hb.template(function(Handlebars,depth0,helpers,partials,data){ +function program1(depth0,data){var stack1,helper,buffer="";return buffer+='
    ',(helper=helpers.legend)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.legend,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"
    "}function program3(depth0,data){var stack1,helper,buffer="";return buffer+='
    ',(helper=helpers.customMsg)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.customMsg,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"
    "}this.compilerInfo=[4,">= 1.0.0"], +helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this;return buffer+='
    \n \n ', +(helper=helpers.message)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.message,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"\n ",stack1=helpers.if.call(depth0,depth0&&depth0.legend,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.customMsg,{hash:{},inverse:self.noop,fn:self.program(3,program3,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n
    \n"})}),define("tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar",["handlebars"],function(hb){ +return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){return" wide"}function program3(depth0,data){var stack1,helper,buffer="";return buffer+=' title="',(helper=helpers.label)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.label,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'"'}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this;return buffer+='
    \n
    \n
    \n"})}),define("css!taoClientDiagnosticCss/diagnostics",[],function(){}),define("taoClientDiagnostic/tools/diagnostic/diagnostic",["jquery","lodash","i18n","async","ui/feedback","ui/component","core/logger","core/store","core/dataProvider/request","util/url","taoClientDiagnostic/tools/performances/tester","taoClientDiagnostic/tools/bandwidth/tester","taoClientDiagnostic/tools/upload/tester","taoClientDiagnostic/tools/browser/tester","taoClientDiagnostic/tools/getStatus","taoClientDiagnostic/tools/getConfig","tpl!taoClientDiagnostic/tools/diagnostic/tpl/main","tpl!taoClientDiagnostic/tools/diagnostic/tpl/result","tpl!taoClientDiagnostic/tools/diagnostic/tpl/details","tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback","tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar","css!taoClientDiagnosticCss/diagnostics"],function($,_,__,async,feedback,component,loggerFactory,store,request,urlUtil,performancesTester,bandwidthTester,uploadTester,browserTester,getStatus,getConfig,mainTpl,resultTpl,detailsTpl,feedbackTpl,qualityBarTpl){ +"use strict";function diagnosticFactory(config){return config&&_.forEach(["title","header","footer","info","button"],function(name){config[name]&&(config[name]=__(config[name]))}),component(diagnostic,_defaults).setTemplate(mainTpl).on("destroy",function(){this.controls=null}).on("render",function(){function getControl(name){return self.controls["$"+name]}function getInputValue(name){var $control=getControl(name);return($control&&$control.val()||"").trim()}function setInputValue(name,value){var $control=getControl(name);$control&&$control.val(value)}function toggleControl(name,state){var $control=getControl(name);$control&&("undefined"==typeof state&&(state=!$control.is(":enabled")), +state?$control.removeProp("disabled"):$control.prop("disabled",!0))}function manageSchoolName(){self.controls.$school=self.getElement().find('[data-control="school"]').on("keypress",function(e){_.defer(function(){toggleControl("start",!!getInputValue("school")),13===e.which&&(e.preventDefault(),self.controls.$start.click())})}),toggleControl("start",!!getInputValue("school")),toggleControl("school",!1),store("client-diagnostic").then(function(storage){return self.on("start.school",function(){storage.setItem("school",getInputValue("school")).catch(function(error){logger.error(error)})}),storage.getItem("school").then(function(value){setInputValue("school",value), +toggleControl("start",!!getInputValue("school")),toggleControl("school",!0)})}).catch(function(error){logger.error(error),toggleControl("school",!0)}),self.on("start.school",function(){self.config.storeParams=_.assign(self.config.storeParams||{},{school:getInputValue("school")}),toggleControl("school",!1)}).on("end.school",function(){toggleControl("school",!0)})}var self=this;this.controls={$start:this.$component.find('[data-action="test-launcher"]'),$status:this.$component.find(".status h2"),$results:this.$component.find(".results")},this.controls.$start.on("click",function(){self.controls.$start.is(":enabled")&&self.run()}),this.config.requireSchoolName&&manageSchoolName(), +this.controls.$results.on("click",'button[data-action="show-details"]',function(){var $btn=$(this).closest("button"),$result=$btn.closest("[data-result]"),$details=$result.find(".details");$details.removeClass("hidden"),$btn.addClass("hidden"),$result.find('[data-action="hide-details"]').removeClass("hidden")}),this.controls.$results.on("click",'button[data-action="hide-details"]',function(){var $btn=$(this).closest("button"),$result=$btn.closest("[data-result]"),$details=$result.find(".details");$details.addClass("hidden"),$btn.addClass("hidden"),$result.find('[data-action="show-details"]').removeClass("hidden")})}).init(config)}var logger=loggerFactory("taoClientDiagnostic/diagnostic"),_defaults={ +title:__("Diagnostic Tool"),header:__("This tool will run a number of tests in order to establish how well your current environment is suitable to run the TAO platform."),info:__("Be aware that these tests will take up to several minutes."),button:__("Begin diagnostics"),actionStore:"storeData",controller:"DiagnosticChecker",extension:"taoClientDiagnostic",actionDropId:"deleteId",storeAllRuns:!1,configurableText:{}},_thresholds=[{threshold:0,message:__("Your system requires a compatibility update, please contact your system administrator."),type:"error"},{threshold:33,message:__("Your system is not optimal, please contact your system administrator."),type:"warning" +},{threshold:66,message:__("Your system is fully compliant."),type:"success"}],diagnostic={changeStatus:function(status){return this.is("rendered")&&this.controls.$status.html(status),this},store:function(type,details,done){var config=this.config;details=_.omit(details,"values"),details.type=type,$.post(urlUtil.route(config.actionStore,config.controller,config.extension,config.storeParams),details,done,"json")},getCustomMsg:function(key){return this.config.configurableText[key]},addCustomFeedbackMsg:function(status,msg){this.hasFailed(status)&&msg&&(_.isFunction(status.customMsgRenderer)&&(msg=status.customMsgRenderer(msg)),status.feedback=status.feedback||{}, +status.feedback.customMsg=msg)},hasFailed:function(result){return!(result&&result.feedback&&"success"===result.feedback.type)},addResult:function(result){var $main,$indicator,$result;return this.is("rendered")&&(result.quality&&result.quality.label&&result.quality.label.toString().length>2&&(result.quality.wide=!0),$main=$(resultTpl(result)),$result=$main.find(".result"),result.feedback&&$result.append($(feedbackTpl(result.feedback))),result.quality&&$result.append($(qualityBarTpl(result.quality))),result.details&&$main.find(".details").append($(detailsTpl(result.details))),$indicator=$main.find(".quality-indicator"),this.controls.$results.append($main),$main.fadeIn(function(){ +$indicator.length&&$indicator.animate({left:result.percentage*$main.outerWidth()/100-$indicator.outerWidth()/2})})),this},prepare:function(){return this.trigger("start"),this.changeStatus(__("Starting...")),this.setState("running",!0),this.setState("done",!1),this.controls.$results.empty(),this.controls.$start.addClass("hidden"),this},finish:function(){var config=this.config;return this.controls.$start.removeClass("hidden"),config.storeAllRuns&&this.deleteIdentifier(),this.trigger("end"),this.changeStatus(__("Done!")),this.setState("running",!1),this.setState("done",!0),this},deleteIdentifier:function(){var url=urlUtil.route(this.config.actionDropId,this.config.controller,this.config.extension); +return request(url,null,"POST")},run:function(){function doCheck(testerConfig,cb){var testerId=testerConfig.id;self.trigger("starttester",testerId),self.setState(testerId,!0),require([testerConfig.tester],function(testerFactory){var tester=testerFactory(getConfig(testerConfig,self.config),self);self.changeStatus(tester.labels.status),tester.start(function(status,details,results){var customMsg;testerConfig.customMsgKey&&(customMsg=self.getCustomMsg(testerConfig.customMsgKey),self.addCustomFeedbackMsg(status,customMsg)),_.forEach(details,function(info){information.push(info)}),scores[status.id]=status,self.trigger("endtester",testerId,status),self.setState(testerId,!1), +results=_.mapValues(results,function(value){switch(typeof value){case"boolean":return value?1:0;case"object":return JSON.stringify(value)}return value}),self.store(testerId,results,function(){self.addResult(status),cb()})})})}var self=this,information=[],scores={},testers=[];return this.is("rendered")&&(this.prepare(),_.forEach(this.config.testers,function(testerConfig,testerId){testerConfig.id=testerConfig.id||testerId,testerConfig.enabled&&testers.push(function(cb){doCheck(testerConfig,cb)})}),async.series(testers,function(){var total=_.min(scores,"percentage"),status=getStatus(total.percentage,_thresholds);status.title=__("Total"),status.id="total",self.addCustomFeedbackMsg(status,self.config.configurableText.diagTotalCheckResult), +status.details=information,self.addResult(status),self.finish()})),this}};return diagnosticFactory}),define("taoClientDiagnostic/controller/CompatibilityChecker/diagnostics",["jquery","layout/loading-bar","ui/feedback","taoClientDiagnostic/tools/message","taoClientDiagnostic/tools/diagnostic/diagnostic"],function($,loadingBar,feedback,showMessage,diagnosticFactory){"use strict";return{start:function(config){var $contentArea=$(".content");showMessage("#feedback-box"),diagnosticFactory(config).on("start",function(){loadingBar.start()}).on("end",function(){loadingBar.stop()}).render($contentArea)}}}),define("tpl!taoClientDiagnostic/templates/diagnostic/main",["handlebars"],function(hb){ +return hb.template(function(Handlebars,depth0,helpers,partials,data){function program1(depth0,data){var stack1,buffer="";return buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.diagInstructions,{hash:{},inverse:self.noop,fn:self.program(2,program2,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n "}function program2(depth0,data){var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.diagInstructions)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.diagInstructions,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "; +}function program4(depth0,data){var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.header)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.header,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}function program6(depth0,data){var stack1,helper,buffer="";return buffer+="

    ",(helper=helpers.info)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.info,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+"

    "}function program8(depth0,data){var helper,options,buffer="";return buffer+='\n

    \n \n \n

    \n '}this.compilerInfo=[4,">= 1.0.0"],helpers=this.merge(helpers,Handlebars.helpers),data=data||{};var stack1,helper,options,buffer="",functionType="function",escapeExpression=this.escapeExpression,self=this,helperMissing=helpers.helperMissing; +return buffer+='
    \n\n

    ',(helper=helpers.title)?stack1=helper.call(depth0,{hash:{},data:data}):(helper=depth0&&depth0.title,stack1=typeof helper===functionType?helper.call(depth0,{hash:{},data:data}):helper),buffer+=escapeExpression(stack1)+'

    \n\n
    \n ',stack1=helpers.with.call(depth0,depth0&&depth0.configurableText,{hash:{},inverse:self.noop,fn:self.program(1,program1,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.header,{hash:{},inverse:self.noop,fn:self.program(4,program4,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1), +buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.info,{hash:{},inverse:self.noop,fn:self.program(6,program6,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+="\n ",stack1=helpers.if.call(depth0,depth0&&depth0.requireSchoolName,{hash:{},inverse:self.noop,fn:self.program(8,program8,data),data:data}),(stack1||0===stack1)&&(buffer+=stack1),buffer+='\n

    \n \n \n

    \n
    \n\n
    \n \n
    \n\n \n\n
    \n

    \n
    \n\n
    \n'})}),define("taoClientDiagnostic/controller/Diagnostic/diagnostic",["module","jquery","i18n","helpers","layout/loading-bar","ui/actionbar","ui/feedback","taoClientDiagnostic/tools/diagnostic/diagnostic","tpl!taoClientDiagnostic/templates/diagnostic/main"],function(module,$,__,helpers,loadingBar,actionbar,feedback,diagnosticFactory,diagnosticTpl){ +"use strict";var cssScope=".diagnostic-runner",taoDiagnosticRunnerCtlr={start:function(){function installTester(workstation){diagnosticFactory(config).setTemplate(diagnosticTpl).on("render",function(){var self=this;this.controls.$workstation=this.getElement().find('[data-control="workstation"]').on("keypress",function(e){13===e.which&&(e.preventDefault(),self.run())}).val(workstation)}).on("start",function(){this.config.storeParams=this.config.storeParams||{},this.config.storeParams.workstation=this.controls.$workstation.val(),this.controls.$workstation.prop("disabled",!0),loadingBar.start()}).on("end",function(){this.controls.$workstation.removeProp("disabled"), +loadingBar.stop()}).on("render",function(){loadingBar.stop(),config.autoStart&&this.run()}).render($list)}var $container=$(cssScope),extension=$container.data("extension")||"taoClientDiagnostic",$list=$container.find(".list"),$panel=$(".panel"),config=$container.data("config"),indexUrl=helpers._url("index","Diagnostic",extension),workstationUrl=helpers._url("workstation","DiagnosticChecker",extension),buttons=[],moduleConfig=module.config()||{};config.configurableText=moduleConfig.configurableText||{},buttons.push({id:"back",icon:"step-backward",title:__("Return to the list"),label:__("List of readiness checks"),action:function(){window.location.href=indexUrl; +}}),window.self===window.top&&buttons.push({id:"exitButton",icon:"close",title:__("Exit"),label:__("Exit"),action:function(){window.self.close()}}),actionbar({renderTo:$panel,buttons:buttons}),$.get(workstationUrl,"json").done(function(data){installTester(data&&data.workstation)}).fail(function(){feedback().error(__("Unable to get the workstation name!")),installTester()})}};return loadingBar.start(),taoDiagnosticRunnerCtlr}),!function(e,t,i){"use strict";"function"==typeof define&&define.amd?define("taoClientDiagnostic/lib/fingerprint/fingerprint2",i):"undefined"!=typeof module&&module.exports?module.exports=i():t.exports?t.exports=i():t[e]=i()}("Fingerprint2",this,function(){ +"use strict";var e=function(t){if(!(this instanceof e))return new e(t);var i={swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",detectScreenOrientation:!0,sortPluginsFor:[/palemoon/i],userDefinedFonts:[]};this.options=this.extend(t,i),this.nativeForEach=Array.prototype.forEach,this.nativeMap=Array.prototype.map};return e.prototype={extend:function(e,t){if(null==e)return t;for(var i in e)null!=e[i]&&t[i]!==e[i]&&(t[i]=e[i]);return t},get:function(e){var t=this,i={data:[],push:function(e){var i=e.key,a=e.value;"function"==typeof t.options.preprocessor&&(a=t.options.preprocessor(i,a)),this.data.push({key:i,value:a})}};i=this.userAgentKey(i),i=this.languageKey(i), +i=this.colorDepthKey(i),i=this.pixelRatioKey(i),i=this.hardwareConcurrencyKey(i),i=this.screenResolutionKey(i),i=this.availableScreenResolutionKey(i),i=this.timezoneOffsetKey(i),i=this.sessionStorageKey(i),i=this.localStorageKey(i),i=this.indexedDbKey(i),i=this.addBehaviorKey(i),i=this.openDatabaseKey(i),i=this.cpuClassKey(i),i=this.platformKey(i),i=this.doNotTrackKey(i),i=this.pluginsKey(i),i=this.canvasKey(i),i=this.webglKey(i),i=this.adBlockKey(i),i=this.hasLiedLanguagesKey(i),i=this.hasLiedResolutionKey(i),i=this.hasLiedOsKey(i),i=this.hasLiedBrowserKey(i),i=this.touchSupportKey(i),i=this.customEntropyFunction(i),this.fontsKey(i,function(i){var a=[];t.each(i.data,function(e){ +var t=e.value;"undefined"!=typeof e.value.join&&(t=e.value.join(";")),a.push(t)});var r=t.x64hash128(a.join("~~~"),31);return e(r,i.data)})},customEntropyFunction:function(e){return"function"==typeof this.options.customFunction&&e.push({key:"custom",value:this.options.customFunction()}),e},userAgentKey:function(e){return this.options.excludeUserAgent||e.push({key:"user_agent",value:this.getUserAgent()}),e},getUserAgent:function(){return navigator.userAgent},languageKey:function(e){return this.options.excludeLanguage||e.push({key:"language",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||""}),e},colorDepthKey:function(e){ +return this.options.excludeColorDepth||e.push({key:"color_depth",value:screen.colorDepth||-1}),e},pixelRatioKey:function(e){return this.options.excludePixelRatio||e.push({key:"pixel_ratio",value:this.getPixelRatio()}),e},getPixelRatio:function(){return window.devicePixelRatio||""},screenResolutionKey:function(e){return this.options.excludeScreenResolution?e:this.getScreenResolution(e)},getScreenResolution:function(e){var t;return t=this.options.detectScreenOrientation&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],"undefined"!=typeof t&&e.push({key:"resolution",value:t}),e},availableScreenResolutionKey:function(e){return this.options.excludeAvailableScreenResolution?e:this.getAvailableScreenResolution(e); },getAvailableScreenResolution:function(e){var t;return screen.availWidth&&screen.availHeight&&(t=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]),"undefined"!=typeof t&&e.push({key:"available_resolution",value:t}),e},timezoneOffsetKey:function(e){return this.options.excludeTimezoneOffset||e.push({key:"timezone_offset",value:(new Date).getTimezoneOffset()}),e},sessionStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasSessionStorage()&&e.push({key:"session_storage",value:1}),e},localStorageKey:function(e){ return!this.options.excludeSessionStorage&&this.hasLocalStorage()&&e.push({key:"local_storage",value:1}),e},indexedDbKey:function(e){return!this.options.excludeIndexedDB&&this.hasIndexedDB()&&e.push({key:"indexed_db",value:1}),e},addBehaviorKey:function(e){return document.body&&!this.options.excludeAddBehavior&&document.body.addBehavior&&e.push({key:"add_behavior",value:1}),e},openDatabaseKey:function(e){return!this.options.excludeOpenDatabase&&window.openDatabase&&e.push({key:"open_database",value:1}),e},cpuClassKey:function(e){return this.options.excludeCpuClass||e.push({key:"cpu_class",value:this.getNavigatorCpuClass()}),e},platformKey:function(e){return this.options.excludePlatform||e.push({ key:"navigator_platform",value:this.getNavigatorPlatform()}),e},doNotTrackKey:function(e){return this.options.excludeDoNotTrack||e.push({key:"do_not_track",value:this.getDoNotTrack()}),e},canvasKey:function(e){return!this.options.excludeCanvas&&this.isCanvasSupported()&&e.push({key:"canvas",value:this.getCanvasFp()}),e},webglKey:function(e){return this.options.excludeWebGL?e:this.isWebGlSupported()?(e.push({key:"webgl",value:this.getWebglFp()}),e):e},adBlockKey:function(e){return this.options.excludeAdBlock||e.push({key:"adblock",value:this.getAdBlock()}),e},hasLiedLanguagesKey:function(e){return this.options.excludeHasLiedLanguages||e.push({key:"has_lied_languages", @@ -210,8 +214,8 @@ links:["Africa/Abidjan|Africa/Bamako","Africa/Abidjan|Africa/Banjul","Africa/Abi var nb="undefined"==typeof digits?2:Math.max(0,parseInt(digits,10)),factor=Math.pow(10,nb)||1;return Math.round(number*factor)/factor},formatBandwidth=function(value){var bandwidth=formatNumber(value);return value>100&&(bandwidth="> 100"),bandwidth},transformDateToLocal=function(date){var d,time;return _.isFinite(date)?(_.isNumber(date)||(date=_.parseInt(date,10)),d=new Date(1e3*date),time=moment.utc(d)):time=moment.tz(date,defaultDateTimeZone),time.tz(moment.tz.guess()).format(defaultDateFormat)},taoDiagnosticCtlr={start:function(){function request(url,selection,message){selection&&selection.length&&(loadingBar.start(),$.ajax({url:url,data:{id:selection},dataType:"json", type:"POST",error:function(){loadingBar.stop()}}).done(function(response){loadingBar.stop(),response&&response.success?(message&&feedback().success(message),$list.datatable("refresh")):feedback().error(__("Something went wrong ...")+"
    "+encode.html(response.error),{encodeHtml:!1})}))}function remove(selection){request(removeUrl,selection,__("The readiness check result have been removed"))}var $container=$(cssScope),extension=$container.data("extension")||"taoClientDiagnostic",$list=$container.find(".list"),dataset=$container.data("set"),config=$container.data("config")||{},installedExtension=$container.data("installedextension")||!1,diagnosticUrl=helpers._url("diagnostic","Diagnostic",extension),removeUrl=helpers._url("remove","Diagnostic",extension),serviceUrl=helpers._url("diagnosticData","Diagnostic",extension),performancesTester=performancesTesterFactory(config.testers.performance||{}),fingerprintTester=fingerprintTesterFactory(config.testers.fingerprint||{}),tools=[],actions=[],model=[]; tools.push({id:"refresh",icon:"reset",title:__("Refresh the page"),label:__("Refresh"),action:function(){$list.datatable("refresh")}}),tools.push({id:"launch",icon:"play",title:__("Launch another readiness check"),label:__("Launch readiness check"),action:function(){window.location.href=diagnosticUrl}}),installedExtension&&tools.push({id:"lti",icon:"play",title:__("Try a test delivery"),label:__("Try a test delivery"),action:function(){window.location.href=deliveryUrl}}),tools.push({id:"remove",icon:"remove",title:__("Remove the selected readiness check results"),label:__("Remove"),massAction:!0,action:function(selection){dialog({message:__("The selected readiness check results will be removed. Continue ?"), -autoRender:!0,autoDestroy:!0,onOkBtn:function(){remove(selection)}})}}),window.self===window.top&&tools.push({id:"exitButton",icon:"close",title:__("Exit"),label:__("Exit"),action:function(){window.self.close()}}),actions.push({id:"remove",icon:"remove",title:__("Remove the readiness check result?"),action:function(id){dialog({autoRender:!0,autoDestroy:!0,message:__("The readiness check result will be removed. Continue ?"),onOkBtn:function(){remove([id])}})}}),model.push({id:"workstation",label:__("Workstation")}),config.testers.fingerprint&&config.testers.fingerprint.enabled&&(model.push({id:"fingerprint-cell",label:__("Fingerprint"),transform:function(v,row){ -return fingerprintTpl(row.fingerprint)}}),$list.on("click.fingerprint",".fingerprint-cell span.details",function(e){var id=$(e.target).closest("tr").data("itemIdentifier"),row=_.find(dataset.data,{id:id});row&&dialog({content:detailsTpl(fingerprintTester.getSummary(row.fingerprint)),buttons:"ok",autoRender:!0,autoDestroy:!0})})),config.testers.browser&&config.testers.browser.enabled&&(model.push({id:"os",label:__("OS")}),model.push({id:"browser",label:__("Browser")})),config.testers.performance&&config.testers.performance.enabled&&model.push({id:"performance",label:__("Performances"),transform:function(value){var status=performancesTester.getFeedback(value);return status.feedback&&status.feedback.message; -}}),config.testers.bandwidth&&config.testers.bandwidth.enabled&&model.push({id:"bandwidth",label:__("Bandwidth"),transform:formatBandwidth}),config.testers.intensive_bandwidth&&config.testers.intensive_bandwidth.enabled&&model.push({id:"intensive_bandwidth",label:__("Intensive bandwidth"),transform:formatBandwidth}),config.testers.upload&&config.testers.upload.enabled&&model.push({id:"upload",label:__("Upload speed"),transform:formatBandwidth}),model.push({id:"date",label:__("Date"),transform:function(value){return transformDateToLocal(value)}}),$list.on("query.datatable",function(){loadingBar.start()}).on("load.datatable",function(e,data){dataset=data,loadingBar.stop(); -}).datatable({url:serviceUrl,status:{empty:__("No readiness checks have been done!"),available:__("Readiness checks already done"),loading:__("Loading")},tools:tools,actions:actions,selectable:!0,model:model},dataset)}};return loadingBar.start(),taoDiagnosticCtlr}),function(c){var d=document,a="appendChild",i="styleSheet",s=d.createElement("style");s.type="text/css",d.getElementsByTagName("head")[0][a](s),s[i]?s[i].cssText=c:s[a](d.createTextNode(c))}('.diagnostics-main-area{max-width:768px;margin:40px auto 0 auto;background:#f3f1ef;border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;padding:20px}.diagnostics-main-area h1,.diagnostics-main-area h2,.diagnostics-main-area h3{font-style:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif}.diagnostics-main-area h1{margin-bottom:20px;font-size:20px;font-size:2rem}.diagnostics-main-area h2{margin:0;font-size:14px;font-size:1.4rem}.diagnostics-main-area h3{margin-top:10px;margin-bottom:5px;font-size:12px;font-size:1.2rem}.diagnostics-main-area .status h2,.diagnostics-main-area .details h2{margin:1rem 0}.diagnostics-main-area .legend{font-style:italic;font-weight:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:11px;font-size:1.1rem}.diagnostics-main-area .customMsg{margin-top:10px}.diagnostics-main-area .quality-bar{height:15px;background:linear-gradient(to right, #CE1431 0%, #D57915 25%, #D5A215 50%, #D5CB15 75%, #36B111 100%);opacity:.8;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin:5px 0 10px;position:relative}.diagnostics-main-area .quality-indicator{position:absolute;border-width:10px 8px;border-style:solid;border-color:#333 transparent transparent;top:-1px;height:25px;width:0}.diagnostics-main-area .quality-indicator[title]:before{font-size:11px;font-size:1.1rem;content:attr(title);position:absolute;top:-36px;left:-12px;text-align:center;width:24px;height:24px;line-height:24px;display:inline-block;background-color:#0e5d91;color:rgba(255,255,255,0.9);-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px}.diagnostics-main-area .quality-indicator.wide[title]:before{left:-16px;width:32px}.diagnostics-main-area [data-result],.diagnostics-main-area .bandwidth-box{display:none}.diagnostics-main-area [data-action=bandwidth-launcher]{margin:5px 0 10px}.diagnostics-main-area li{padding-bottom:10px}.diagnostics-main-area .intro{margin-bottom:20px}table.datatable [class^="icon-"]{padding:0}table.datatable td{font-size:90%;font-weight:normal}table.datatable .progress .state:not(:first-child):before{content:\' - \'}table.datatable .progress .item-time:before{content:\' (\'}table.datatable .progress .item-time .total:before{content:\' / \'}table.datatable .progress .item-time:after{content:\')\'}.details table.matrix{border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;margin-top:5px}.details table.matrix td:first-child{min-width:30%}.diagnostic-scope h1{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.diagnostic-scope h2{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.diagnostic-scope form.daterange label{padding:0}.diagnostic-scope form.daterange input{margin:0 10px}.diagnostic-scope table.datatable [class^="icon-"]{padding:0}.diagnostic-scope table.datatable td{font-size:90%;font-weight:normal}.diagnostic-scope .content{margin:auto}.diagnostic-scope .diagnostic-index .content,.diagnostic-scope .diagnostic-runner .content{width:100%;padding:0 20px}.diagnostic-scope .diagnostic-index .message,.diagnostic-scope .diagnostic-runner .message{padding:8px;text-align:center}.diagnostic-scope .panel .action-bar{background:#266d9c;padding:3px;overflow:hidden;color:#e7eff4;margin:40px 0 10px 0}.diagnostic-scope .panel .action-bar .btn-info{overflow:hidden;background:transparent;border:1px rgba(255,255,255,0.3) solid}.diagnostic-scope .diagnostics-main-area{margin-top:0px;max-width:800px}.diagnostic-scope .detailed-value{display:flex;justify-content:space-between}.diagnostic-scope .detailed-value.errors{color:#d8ae5b}.diagnostic-scope .detailed-value .details{font-size:2rem;cursor:pointer;color:#3e7da7}.diagnostic-scope .detailed-value .details:hover{color:#03131d}.action-bar .tool-exitButton,.action-bar [data-control="exitButton"]{float:right}\n\n/*# sourceMappingURL=diagnostics.css.map */'); +autoRender:!0,autoDestroy:!0,onOkBtn:function(){remove(selection)}})}}),window.self===window.top&&tools.push({id:"exitButton",icon:"close",title:__("Exit"),label:__("Exit"),action:function(){window.self.close()}}),actions.push({id:"remove",icon:"remove",title:__("Remove the readiness check result?"),action:function(id){dialog({autoRender:!0,autoDestroy:!0,message:__("The readiness check result will be removed. Continue ?"),onOkBtn:function(){remove([id])}})}}),model.push({id:"workstation",label:__("Workstation")}),config.requireSchoolName&&model.push({id:"school",label:__("School")}),config.testers.fingerprint&&config.testers.fingerprint.enabled&&(model.push({ +id:"fingerprint-cell",label:__("Fingerprint"),transform:function(v,row){return fingerprintTpl(row.fingerprint)}}),$list.on("click.fingerprint",".fingerprint-cell span.details",function(e){var id=$(e.target).closest("tr").data("itemIdentifier"),row=_.find(dataset.data,{id:id});row&&dialog({content:detailsTpl(fingerprintTester.getSummary(row.fingerprint)),buttons:"ok",autoRender:!0,autoDestroy:!0})})),config.testers.browser&&config.testers.browser.enabled&&(model.push({id:"os",label:__("OS")}),model.push({id:"browser",label:__("Browser")})),config.testers.performance&&config.testers.performance.enabled&&model.push({id:"performance",label:__("Performances"),transform:function(value){ +var status=performancesTester.getFeedback(value);return status.feedback&&status.feedback.message}}),config.testers.bandwidth&&config.testers.bandwidth.enabled&&model.push({id:"bandwidth",label:__("Bandwidth"),transform:formatBandwidth}),config.testers.intensive_bandwidth&&config.testers.intensive_bandwidth.enabled&&model.push({id:"intensive_bandwidth",label:__("Intensive bandwidth"),transform:formatBandwidth}),config.testers.upload&&config.testers.upload.enabled&&model.push({id:"upload",label:__("Upload speed"),transform:formatBandwidth}),model.push({id:"date",label:__("Date"),transform:function(value){return transformDateToLocal(value)}}),$list.on("query.datatable",function(){ +loadingBar.start()}).on("load.datatable",function(e,data){dataset=data,loadingBar.stop()}).datatable({url:serviceUrl,status:{empty:__("No readiness checks have been done!"),available:__("Readiness checks already done"),loading:__("Loading")},tools:tools,actions:actions,selectable:!0,model:model},dataset)}};return loadingBar.start(),taoDiagnosticCtlr}),function(c){var d=document,a="appendChild",i="styleSheet",s=d.createElement("style");s.type="text/css",d.getElementsByTagName("head")[0][a](s),s[i]?s[i].cssText=c:s[a](d.createTextNode(c))}('.diagnostics-main-area{max-width:768px;margin:40px auto 0 auto;background:#f3f1ef;border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;padding:20px}.diagnostics-main-area h1,.diagnostics-main-area h2,.diagnostics-main-area h3{font-style:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif}.diagnostics-main-area h1{margin-bottom:20px;font-size:20px;font-size:2rem}.diagnostics-main-area h2{margin:0;font-size:14px;font-size:1.4rem}.diagnostics-main-area h3{margin-top:10px;margin-bottom:5px;font-size:12px;font-size:1.2rem}.diagnostics-main-area .status h2,.diagnostics-main-area .details h2{margin:1rem 0}.diagnostics-main-area .legend{font-style:italic;font-weight:normal;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:11px;font-size:1.1rem}.diagnostics-main-area .customMsg{margin-top:10px}.diagnostics-main-area .quality-bar{height:15px;background:linear-gradient(to right, #CE1431 0%, #D57915 25%, #D5A215 50%, #D5CB15 75%, #36B111 100%);opacity:.8;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin:5px 0 10px;position:relative}.diagnostics-main-area .quality-indicator{position:absolute;border-width:10px 8px;border-style:solid;border-color:#333 transparent transparent;top:-1px;height:25px;width:0}.diagnostics-main-area .quality-indicator[title]:before{font-size:11px;font-size:1.1rem;content:attr(title);position:absolute;top:-36px;left:-12px;text-align:center;width:24px;height:24px;line-height:24px;display:inline-block;background-color:#0e5d91;color:rgba(255,255,255,0.9);-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px}.diagnostics-main-area .quality-indicator.wide[title]:before{left:-16px;width:32px}.diagnostics-main-area [data-result],.diagnostics-main-area .bandwidth-box{display:none}.diagnostics-main-area [data-action=bandwidth-launcher]{margin:5px 0 10px}.diagnostics-main-area li{padding-bottom:10px}.diagnostics-main-area .intro{margin-bottom:20px}.diagnostics-main-area .intro label{display:inline-block;width:100px}table.datatable [class^="icon-"]{padding:0}table.datatable td{font-size:90%;font-weight:normal}table.datatable .progress .state:not(:first-child):before{content:\' - \'}table.datatable .progress .item-time:before{content:\' (\'}table.datatable .progress .item-time .total:before{content:\' / \'}table.datatable .progress .item-time:after{content:\')\'}.details table.matrix{border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;margin-top:5px}.details table.matrix td:first-child{min-width:30%}.diagnostic-scope h1{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.diagnostic-scope h2{font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.diagnostic-scope form.daterange label{padding:0}.diagnostic-scope form.daterange input{margin:0 10px}.diagnostic-scope table.datatable [class^="icon-"]{padding:0}.diagnostic-scope table.datatable td{font-size:90%;font-weight:normal}.diagnostic-scope .content{margin:auto}.diagnostic-scope .diagnostic-index .content,.diagnostic-scope .diagnostic-runner .content{width:100%;padding:0 20px}.diagnostic-scope .diagnostic-index .message,.diagnostic-scope .diagnostic-runner .message{padding:8px;text-align:center}.diagnostic-scope .panel .action-bar{background:#266d9c;padding:3px;overflow:hidden;color:#e7eff4;margin:40px 0 10px 0}.diagnostic-scope .panel .action-bar .btn-info{overflow:hidden;background:transparent;border:1px rgba(255,255,255,0.3) solid}.diagnostic-scope .diagnostics-main-area{margin-top:0px;max-width:800px}.diagnostic-scope .detailed-value{display:flex;justify-content:space-between}.diagnostic-scope .detailed-value.errors{color:#d8ae5b}.diagnostic-scope .detailed-value .details{font-size:2rem;cursor:pointer;color:#3e7da7}.diagnostic-scope .detailed-value .details:hover{color:#03131d}.action-bar .tool-exitButton,.action-bar [data-control="exitButton"]{float:right}\n\n/*# sourceMappingURL=diagnostics.css.map */'); //# sourceMappingURL=controllers.min.js.map \ No newline at end of file diff --git a/views/js/controllers.min.js.map b/views/js/controllers.min.js.map index d9d1af65..3542d368 100644 --- a/views/js/controllers.min.js.map +++ b/views/js/controllers.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["routes.js","../tools/message.js","Authenticator/login.js","../tools/fixedDecimals.js","../tools/stats.js","../../taoQtiItem/qtiItem/core/qtiClasses.js","../../taoQtiItem/qtiItem/helper/util.js","../../taoQtiItem/qtiItem/helper/rendererConfig.js","../../taoQtiItem/qtiItem/core/Element.js","../../taoQtiItem/qtiItem/helper/xmlNsHandler.js","../../taoQtiItem/qtiItem/core/Loader.js","../../taoQtiItem/qtiItem/helper/interactionHelper.js","../../taoQtiItem/qtiRunner/core/Renderer.js","../../taoItems/assets/manager.js","../../taoItems/assets/strategies.js","../../taoQtiItem/portableElementRegistry/factory/factory.js","../../taoQtiItem/qtiCreator/helper/qtiElements.js","../../taoQtiItem/portableElementRegistry/factory/ciRegistry.js","../../taoQtiItem/portableElementRegistry/ciRegistry.js","../../taoQtiItem/portableElementRegistry/factory/icRegistry.js","../../taoQtiItem/portableElementRegistry/icRegistry.js","../../taoQtiItem/portableElementRegistry/assetManager/portableAssetStrategy.js","../../taoQtiItem/qtiCommonRenderer/renderers/config.js","../../taoQtiItem/qtiCommonRenderer/renderers/Renderer.js","../tools/getConfig.js","../tools/getLabels.js","../tools/getStatus.js","../tools/performances/tester.js","../tools/bandwidth/tester.js","../tools/upload/tester.js","../tools/getPlatformInfo.js","../tools/browser/tester.js","../tools/diagnostic/tpl/main!tpl","../tools/diagnostic/tpl/result!tpl","../tools/diagnostic/tpl/details!tpl","../tools/diagnostic/tpl/feedback!tpl","tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar","../../taoClientDiagnosticCss/diagnostics!css","../tools/diagnostic/diagnostic.js","CompatibilityChecker/diagnostics.js","../templates/diagnostic/main!tpl","Diagnostic/diagnostic.js","../lib/fingerprint/fingerprint2.js","../tools/fingerprint/tester.js","../tools/diagnostic/tpl/fingerprint!tpl","../../lib/moment-timezone.min.js","Diagnostic/index.js","../../../../../../../../../../../onLayerEnd0.js"],"names":["define","Authenticator","actions","login","CompatibilityChecker","index","Diagnostic","diagnostic","$","feedback","showMessages","container","$feedbackBox","data","error","showMessage","start","fixedDecimals","value","decimals","shift","Math","pow","abs","round","Number","_","stats","list","fieldName","variance","avg","med","middle","getValue","results","sum","sum2","min","MAX_VALUE","max","count","values","isFunction","item","forEach","undefined","push","diff","sqrt","sort","floor","ceil","average","median","key","_container","assessmentItem","responseProcessing","_simpleFeedbackRule","stylesheet","math","img","object","outcomeDeclaration","responseDeclaration","rubricBlock","associableHotspot","gap","gapImg","gapText","hotspotChoice","hottext","inlineChoice","simpleAssociableChoice","simpleChoice","associateInteraction","choiceInteraction","endAttemptInteraction","extendedTextInteraction","gapMatchInteraction","graphicAssociateInteraction","graphicGapMatchInteraction","graphicOrderInteraction","hotspotInteraction","hottextInteraction","inlineChoiceInteraction","matchInteraction","mediaInteraction","orderInteraction","prompt","selectPointInteraction","sliderInteraction","textEntryInteraction","uploadInteraction","feedbackBlock","feedbackInline","modalFeedback","customInteraction","infoControl","include","table","printedVariable","_tooltip","util","buildSerial","prefix","id","chars","i","charAt","random","length","buildId","usedIds","suffix","exists","TypeError","getUsedIds","contains","buildIdentifier","useSuffix","getUsedIdentifiers","isUndefined","replace","findInCollection","element","collectionNames","searchedSerial","found","isString","isArray","Error","each","collectionName","collection","split","nameToken","elt","parent","find","addMarkupNamespace","markup","ns","$0","$1","$2","$3","$4","indexOf","removeMarkupNamespaces","getMarkupUsedNamespaces","namespaces","original","slash","node","uniq","rendererConfigHelper","getOptionsFromArguments","args","options","placeholder","subclass","renderer","arg","isRenderer","isPlainObject","console","log","Class","loggerFactory","rendererConfig","_instances","logger","Element","extend","qtiClass","serial","rootElement","init","attributes","this","metaData","match","setAttributes","initContainer","arguments","initObject","is","getSerial","elts","getComposingElements","attr","name","prop","document","trigger","removeData","removeAttr","removeAttributes","warn","getAttributes","clone","attrNames","append","getBody","getObject","v","isA","getUsedClasses","ret","composingElts","body","location","getRootElement","setRelatedItem","setRootElement","getRelatedItem","setRenderer","getRenderer","render","rendering","_renderer","tplData","defaultData","tag","resolveUrl","merge","getData","renderTpl","replaceWith","postRender","altClassName","postRenderers","compact","getContainer","$scope","toArray","arr","type","isEmpty","addClass","className","clazz","_containClass","hasClass","removeClass","regex","RegExp","trim","toggleClass","state","isset","issetElement","unset","unsetElement","allClassStr","test","qtiElement","getElementBySerial","composingElements","getPrefix","html5Ns","prefixed","stripNs","pattern","openRegEx","closeRegEx","restoreNs","xml","tagMatch","xmlRe","tagRe","xmlMatch","imsXsd","prefixAtt","qtiClasses","xmlNsHandler","loadPortableCustomElementData","portableElement","typeIdentifier","entryPoint","libraries","setNamespace","xmlns","loadPortableCustomElementProperties","properties","rawProperties","forOwn","JSON","parse","e","Loader","classesLocation","qti","setClassesLocation","getRequiredClasses","union","loadRequiredClasses","callback","reload","requiredClass","requiredClasses","required","_this","require","QtiClass","prototype","call","getLoadedClasses","keys","loadItemData","Qti","loadContainer","outcomes","outcome","buildOutcome","addOutcomeDeclaration","feedbacks","buildElement","addModalFeedback","stylesheets","addStylesheet","responses","response","buildResponse","addResponseDeclaration","feedbackRules","forIn","fbData","buildSimpleFeedbackRule","setResponseProcessing","buildResponseProcessing","setNamespaces","setSchemaLocations","schemaLocations","setApipAccessibility","apipAccessibility","loadAndBuildElement","loadElement","loadElementData","loadElements","allElements","elementData","template","howMatch","defaultValue","correctResponse","correctResponses","size","mapping","mapEntries","areaMapping","mappingAttributes","feedbackRule","setCondition","condition","comparedValue","feedbackOutcome","feedbackThen","modalFeedbacks","feedbackElse","comparedOutcome","rp","processingType","bodyObject","bodyData","elements","eltData","setElement","defaults","bdy","loadObjectData","loadInteractionData","loadChoiceData","loadMathData","loadPicData","loadTooltipData","interaction","buildInteractionChoices","loadPciData","choices","set","matchSet","choice","addChoice","gapImgs","addGapImg","val","text","_alt","setMathML","mathML","annotations","encoding","setAnnotation","tooltip","content","pci","pic","convertChoices","outputType","c","findChoices","inputType","getChoice","getChoiceByIdentifier","shuffleChoices","r","f","j","n","k","tmp","serialToIdentifier","choiceSerial","Handlebars","Promise","interactionHelper","themeLoader","getDocumentBaseUrl","window","protocol","host","pathname","_isValidRenderer","valid","classCorrect","_renderableClasses","pos","slice","subClass","_renderableSubclasses","_dependencies","_defaults","Renderer","registerRendererClass","success","_locations","_renderers","shuffledChoices","_getClassRenderer","setOption","setOptions","opts","getOption","getCustomMessage","elementName","messageKey","messages","compile","getAssetManager","assetManager","getThemeLoader","qtiSubclass","res","decorators","isObject","before","after","renderDirect","tpl","setResponse","qtiInteraction","$container","getResponse","resetResponse","getState","setState","destroy","getLoadedRenderers","register","renderersLocations","load","self","themes","base","available","theme","path","intersection","reqClass","deps","requiredSubClasses","unload","setShuffledChoices","identificationType","pluck","getShuffledChoices","reshuffle","returnedType","getChoices","getRenderers","getLocations","url","resolve","getAbsoluteUrl","relUrl","absUrl","runtimeLocations","runtimeLocation","baseUrl","setAreaBroker","areaBroker","_areaBroker","getAreaBroker","getItemCreator","build","defaultOptions","NewRenderer","apply","urlUtil","checkStrategy","strategy","handle","assetManagerFactory","strategies","cache","parseUrl","_strategies","addStrategy","prependStrategy","unshift","setStrategies","newStrategies","setData","resolved","inputUrl","hasOwnProperty","result","resolveBy","clearCache","prependToUrl","slashcat","directory","encodeURIComponent","file","isRelative","itemCssNoCache","bust","Date","now","external","isAbsolute","toString","base64","isBase64","taomedia","eventifier","_requirejs","_defaultLoadingOptions","enabledOnly","runtimeOnly","loadModuleConfig","manifest","reject","requireConfigAliases","reqConfigs","modules","runtime","config","pciConfig","paths","runtimeModules","model","reduce","acc","conf","map","methods","_loaded","__providers","_registry","get","version","last","registerProvider","moduleName","resetProviders","loadProviders","providerLoadingStack","provider","getAllVersions","all","versions","getRuntime","assign","label","message","getCreator","creator","getBaseUrl","loadRuntimes","loadPromise","then","loadStack","configLoadingStack","_pcis","moduleConfigs","catch","err","loadCreators","requiredCreatorHooks","requiredCreators","pciModel","hook","enabled","creators","creatorHook","getTypeIdentifier","findIndex","module","enable","disable","isEnabled","__","QtiElements","classes","itemBody","parents","abstract","atomicBlock","atomicInline","simpleBlock","simpleInline","flowStatic","blockStatic","inlineStatic","flow","tableCell","caption","xhtml","col","colgroup","div","dl","dt","dd","hr","li","ol","ul","param","tbody","tfoot","thead","td","th","tr","a","abbr","acronym","b","big","cite","code","dfn","em","kbd","q","samp","small","span","strong","sub","sup","tt","var","blockquote","address","h1","h2","h3","h4","h5","h6","p","pre","br","textRun","blockInteraction","inlineInteraction","templateElement","templateBlock","templateInline","drawingInteraction","graphicInteraction","containable","children","getAllowedContainersElements","getAllowedContainers","jqSelector","substring","filter","getParentClasses","aClass","intersect","getChildClasses","getAllowedContents","recursive","checked","contain","child","isAllowedClass","qtiContainerClass","qtiContentClass","allowedClasses","cacheType","isBlock","isInline","topClass","getAvailableAuthoringElements","description","icon","short","tags","portableElementRegistry","qtiElements","getAuthoringData","on","ciRegistry","registry","providers","icRegistry","getBaseUrlByIdentifier","source","relative","fullmatch","relPath","context","assetStrategies","portableAssetStrategy","itemThemes","moduleConfig","root_url","locations","simpleChoice.choiceInteraction","simpleChoice.orderInteraction","simpleAssociableChoice.matchInteraction","simpleAssociableChoice.associateInteraction","enableDragAndDrop","associate","associateDragAndDrop","gapMatch","gapMatchDragAndDrop","graphicGapMatch","graphicGapMatchDragAndDrop","order","orderDragAndDrop","omit","level","parseInt","percentage","thresholds","len","step","status","quality","threshold","async","helpers","getConfig","getLabels","getStatus","loadItem","done","qtiJsonFile","urlTokens","extension","fullpath","s","contexts","loader","itemData","duration","end","performance","appendTo","remove","_second","performancesTester","initConfig","labels","_messages","idx","_samples","samples","_defaultSamples","sample","_sampleBaseId","timeout","_defaultTimeout","nb","occurrences","_defaultOccurrencesCount","tests","cb","partial","iterations","series","measures","summary","getFeedback","getSummary","performancesMin","performancesMax","performancesAverage","optimal","range","_thresholds","title","download","timeoutId","request","bandwidth","base_www","XMLHttpRequest","open","setRequestHeader","onload","bytes","seconds","speed","clearTimeout","_mega","onerror","delay","send","bandwidthTester","_downloadData","bind","bandwidthMin","bandwidthMax","bandwidthAverage","bandwidthUnit","unit","ideal","maxTestTakers","legend","wide","_kilo","10KB","100KB","1MB","urlHelper","uploadAvg","uploadMax","generateStr","possible","upload","route","str","ajax","xhr","startTime","addEventListener","evt","passedTime","lengthComputable","time","loaded","uploadTester","avgSpeed","totalSpeed","maxSpeed","getTesterUrl","win","action","controller","navigator","screen","params","ua","userAgent","ActiveXObject","opera","chrome","createElement","Worker","applicationCache","history","pushState","documentElement","webkitRequestFullScreen","w","width","h","height","defaultConfig","browserVersionAction","browserVersionController","browserVersionExtension","testerUrl","fail","getPlatformInfo","browserTester","post","customMsgRenderer","customMsg","_placeHolders","CURRENT_BROWSER","browser","CURRENT_OS","os","currentBrowser","browserVersion","currentOs","osVersion","hb","depth0","partials","program1","stack1","helper","buffer","header","hash","functionType","escapeExpression","program3","info","compilerInfo","inverse","noop","fn","program","button","helperMissing","details","component","mainTpl","resultTpl","detailsTpl","feedbackTpl","qualityBarTpl","diagnosticFactory","setTemplate","controls","$start","$component","$status","$results","run","$btn","closest","$result","$details","actionStore","actionDropId","storeAllRuns","configurableText","changeStatus","html","store","storeParams","getCustomMsg","addCustomFeedbackMsg","msg","hasFailed","addResult","$main","$indicator","fadeIn","animate","left","outerWidth","prepare","empty","finish","deleteIdentifier","doCheck","testerConfig","testerId","tester","testerFactory","customMsgKey","information","scores","mapValues","stringify","testers","total","diagTotalCheckResult","loadingBar","$contentArea","stop","diagInstructions","program2","program4","program6","actionbar","diagnosticTpl","cssScope","taoDiagnosticRunnerCtlr","installTester","workstation","$workstation","getElement","which","preventDefault","removeProp","autoStart","$list","$panel","indexUrl","_url","workstationUrl","buttons","href","top","close","renderTo","t","amd","exports","swfContainerId","swfPath","detectScreenOrientation","sortPluginsFor","userDefinedFonts","nativeForEach","Array","nativeMap","preprocessor","userAgentKey","languageKey","colorDepthKey","pixelRatioKey","hardwareConcurrencyKey","screenResolutionKey","availableScreenResolutionKey","timezoneOffsetKey","sessionStorageKey","localStorageKey","indexedDbKey","addBehaviorKey","openDatabaseKey","cpuClassKey","platformKey","doNotTrackKey","pluginsKey","canvasKey","webglKey","adBlockKey","hasLiedLanguagesKey","hasLiedResolutionKey","hasLiedOsKey","hasLiedBrowserKey","touchSupportKey","customEntropyFunction","fontsKey","join","x64hash128","customFunction","excludeUserAgent","getUserAgent","excludeLanguage","language","userLanguage","browserLanguage","systemLanguage","excludeColorDepth","colorDepth","excludePixelRatio","getPixelRatio","devicePixelRatio","excludeScreenResolution","getScreenResolution","excludeAvailableScreenResolution","getAvailableScreenResolution","availWidth","availHeight","excludeTimezoneOffset","getTimezoneOffset","excludeSessionStorage","hasSessionStorage","hasLocalStorage","excludeIndexedDB","hasIndexedDB","excludeAddBehavior","addBehavior","excludeOpenDatabase","openDatabase","excludeCpuClass","getNavigatorCpuClass","excludePlatform","getNavigatorPlatform","excludeDoNotTrack","getDoNotTrack","excludeCanvas","isCanvasSupported","getCanvasFp","excludeWebGL","isWebGlSupported","getWebglFp","excludeAdBlock","getAdBlock","excludeHasLiedLanguages","getHasLiedLanguages","excludeHasLiedResolution","getHasLiedResolution","excludeHasLiedOs","getHasLiedOs","excludeHasLiedBrowser","getHasLiedBrowser","excludeJsFonts","flashFontsKey","jsFontsKey","excludeFlashFonts","hasSwfObjectLoaded","hasMinFlashInstalled","loadSwfAndDetectFonts","setTimeout","extendedJsFonts","concat","o","l","getElementsByTagName","u","d","g","style","position","fontSize","lineHeight","innerHTML","fontFamily","appendChild","m","T","offsetWidth","offsetHeight","S","x","E","M","A","y","removeChild","excludePlugins","isIE","excludeIEPlugins","getIEPlugins","getRegularPlugins","plugins","pluginsShouldBeSorted","suffixes","Object","getOwnPropertyDescriptor","excludeTouchSupport","getTouchSupport","excludeHardwareConcurrency","getHardwareConcurrency","sessionStorage","localStorage","indexedDB","hardwareConcurrency","cpuClass","platform","doNotTrack","msDoNotTrack","maxTouchPoints","msMaxTouchPoints","createEvent","display","getContext","rect","isPointInPath","textBaseline","fillStyle","fillRect","dontUseFakeFontInCanvas","font","fillText","globalCompositeOperation","beginPath","arc","PI","closePath","fill","toDataURL","clearColor","DEPTH_TEST","depthFunc","LEQUAL","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","getExtension","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getWebglCanvas","createBuffer","bindBuffer","ARRAY_BUFFER","Float32Array","bufferData","STATIC_DRAW","itemSize","numItems","createProgram","createShader","VERTEX_SHADER","shaderSource","compileShader","FRAGMENT_SHADER","attachShader","linkProgram","useProgram","vertexPosAttrib","getAttribLocation","offsetUniform","getUniformLocation","enableVertexAttribArray","vertexPosArray","vertexAttribPointer","FLOAT","uniform2f","drawArrays","TRIANGLE_STRIP","canvas","getSupportedExtensions","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","ALPHA_BITS","getContextAttributes","antialias","BLUE_BITS","DEPTH_BITS","GREEN_BITS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","RED_BITS","RENDERER","SHADING_LANGUAGE_VERSION","STENCIL_BITS","VENDOR","VERSION","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","getShaderPrecisionFormat","HIGH_FLOAT","precision","rangeMin","rangeMax","MEDIUM_FLOAT","LOW_FLOAT","HIGH_INT","MEDIUM_INT","LOW_INT","getElementsByClassName","languages","substr","toLowerCase","oscpu","productSub","eval","toSource","WebGLRenderingContext","appName","swfobject","hasFlashPlayerVersion","addFlashDivNode","setAttribute","onReady","allowScriptAccess","menu","embedSWF","x64Add","x64Multiply","x64Rotl","x64LeftShift","x64Xor","x64Fmix","charCodeAt","format","uuid","Fingerprint2","browserFingerprint","handleError","errors","getStorageKey","_storageKeys","browserStorage","browserId","lastFingerprint","freshBrowserId","newFingerprint","storage","getItem","fingerprint","toUpperCase","pendingPromises","resultFingerprint","changed","setItem","sources","pull","fingerprintValue","fingerprintDetails","fingerprintChanged","fingerprintErrors","fingerprintError","_thresholdValues","storageIssue","changedFingerprint","fingerprintUUID","moment","abbrs","offsets","untils","population","_set","toTimeString","at","offset","zone","offsetScore","abbrScore","getFullYear","I","H","Intl","DateTimeFormat","resolvedOptions","timeZone","z","scoreOffsetAt","D","F","G","zones","links","dataVersion","didShowError","_a","_tzm","utc","isMoment","add","tz","B","_z","C","J","K","L","_index","moveAmbiguousForward","moveInvalidForward","_zones","_links","_names","link","zoneExists","guess","names","Zone","unpack","unpackBase60","needsOffset","defaultZone","updateOffset","_isUTC","_d","utcOffset","zoneName","zoneAbbr","setDefault","N","momentProperties","encode","dialog","performancesTesterFactory","fingerprintTesterFactory","fingerprintTpl","defaultDateTimeZone","defaultDateFormat","formatNumber","number","digits","factor","formatBandwidth","transformDateToLocal","date","isFinite","isNumber","taoDiagnosticCtlr","selection","dataType","datatable","encodeHtml","removeUrl","dataset","installedExtension","diagnosticUrl","serviceUrl","fingerprintTester","tools","deliveryUrl","massAction","autoRender","autoDestroy","onOkBtn","transform","row","target","intensive_bandwidth","loading","selectable","cssText","createTextNode"],"mappings":"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","file":"routes.js","sourcesContent":["/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n * \n * Copyright (c) 2015 Open Assessment Technologies SA\n */\n\n\ndefine('taoClientDiagnostic/controller/routes',{\n 'Authenticator' : {\n 'actions' : {\n 'login' : 'controller/Authenticator/login'\n }\n },\n 'CompatibilityChecker' : {\n 'actions' : {\n 'index' : 'controller/CompatibilityChecker/diagnostics'\n }\n },\n 'Diagnostic' : {\n 'actions' : {\n 'index' : 'controller/Diagnostic/index',\n 'diagnostic' : 'controller/Diagnostic/diagnostic'\n }\n }\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author Camille Moyon \n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/message',[\n 'jquery',\n 'ui/feedback'\n], function ($, feedback) {\n 'use strict';\n\n /**\n * Displays the messages set into a markup\n * @param {String|jQuery|HTMLElement} container\n */\n function showMessages(container) {\n var $feedbackBox = $(container);\n\n if ($feedbackBox.data('error')) {\n feedback().error($feedbackBox.data('error'));\n }\n if ($feedbackBox.data('message')) {\n feedback().error($feedbackBox.data('message'));\n }\n }\n\n /**\n * @exports\n */\n return showMessages;\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author Camille Moyon \n */\ndefine('taoClientDiagnostic/controller/Authenticator/login',[\n 'jquery',\n 'taoClientDiagnostic/tools/message'\n], function ($, showMessage) {\n 'use strict';\n\n /**\n * @exports\n */\n return {\n start: function() {\n showMessage('#feedback-box');\n }\n };\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/fixedDecimals',[],function () {\n 'use strict';\n\n /**\n * Rounds a value to a fixed number of decimals\n * @param {Number} value The value to round\n * @param {Number} decimals The number of decimal\n * @returns {Number}\n */\n var fixedDecimals = function fixedDecimals(value, decimals) {\n var shift = Math.pow(10, Math.abs(decimals || 1));\n return Math.round(Number(value) * shift) / shift || 0;\n };\n\n return fixedDecimals;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/stats',[\n 'lodash',\n 'taoClientDiagnostic/tools/fixedDecimals'\n], function (_, fixedDecimals) {\n 'use strict';\n\n /**\n * Computes some stats on a list from a particular field\n * @param {Array|Object} list The list to compute stats on\n * @param {String|Function} fieldName The name of the field to process, or a callback method returning the value\n * @param {Number} [decimals] Optional number of fixed decimals for values\n * @returns {Object}\n */\n var stats = function stats(list, fieldName, decimals) {\n var sum = 0;\n var sum2 = 0;\n var min = Number.MAX_VALUE;\n var max = 0;\n var variance;\n var count = 0;\n var values = [];\n var avg;\n var med;\n var middle;\n var getValue;\n var results;\n\n if (_.isFunction(fieldName)) {\n getValue = fieldName;\n } else {\n getValue = function(item) {\n return item && item[fieldName] || 0;\n };\n }\n\n // process 1st pass stats: compute sum, min and max values\n _.forEach(list, function(item) {\n var value;\n if (undefined !== item) {\n value = getValue(item);\n values.push(value);\n min = Math.min(min, value);\n max = Math.max(max, value);\n sum += value;\n count++;\n }\n });\n\n // compute the average value\n avg = sum / (count || 1);\n\n // process 2nd pass stats: compute variance\n _.forEach(values, function(value) {\n var diff = value - avg;\n sum2 += diff * diff;\n });\n\n // compute de standard variance\n variance = count > 1 ? Math.sqrt(sum2 / (count - 1)) : 0;\n\n // compute the median value\n values.sort();\n middle = count / 2;\n med = (values[Math.floor(middle)] + values[Math.ceil(middle)]) / 2;\n\n results = {\n min : min,\n max : max,\n sum : sum,\n count : count,\n average : avg,\n median : med,\n variance : variance\n };\n\n if (decimals) {\n _.forEach(results, function(value, key) {\n results[key] = fixedDecimals(value, decimals);\n });\n }\n\n results.values = list;\n return results;\n };\n\n return stats;\n});\n\n","define('taoQtiItem/qtiItem/core/qtiClasses',[], function(){\n return {\n '_container' : 'taoQtiItem/qtiItem/core/Container',\n 'assessmentItem' : 'taoQtiItem/qtiItem/core/Item',\n 'responseProcessing' : 'taoQtiItem/qtiItem/core/ResponseProcessing',\n '_simpleFeedbackRule' : 'taoQtiItem/qtiItem/core/response/SimpleFeedbackRule',\n 'stylesheet' : 'taoQtiItem/qtiItem/core/Stylesheet',\n 'math' : 'taoQtiItem/qtiItem/core/Math',\n 'img' : 'taoQtiItem/qtiItem/core/Img',\n 'object' : 'taoQtiItem/qtiItem/core/Object',\n 'outcomeDeclaration' : 'taoQtiItem/qtiItem/core/variables/OutcomeDeclaration',\n 'responseDeclaration' : 'taoQtiItem/qtiItem/core/variables/ResponseDeclaration',\n 'rubricBlock' : 'taoQtiItem/qtiItem/core/RubricBlock',\n 'associableHotspot' : 'taoQtiItem/qtiItem/core/choices/AssociableHotspot',\n 'gap' : 'taoQtiItem/qtiItem/core/choices/Gap',\n 'gapImg' : 'taoQtiItem/qtiItem/core/choices/GapImg',\n 'gapText' : 'taoQtiItem/qtiItem/core/choices/GapText',\n 'hotspotChoice' : 'taoQtiItem/qtiItem/core/choices/HotspotChoice',\n 'hottext' : 'taoQtiItem/qtiItem/core/choices/Hottext',\n 'inlineChoice' : 'taoQtiItem/qtiItem/core/choices/InlineChoice',\n 'simpleAssociableChoice' : 'taoQtiItem/qtiItem/core/choices/SimpleAssociableChoice',\n 'simpleChoice' : 'taoQtiItem/qtiItem/core/choices/SimpleChoice',\n 'associateInteraction' : 'taoQtiItem/qtiItem/core/interactions/AssociateInteraction',\n 'choiceInteraction' : 'taoQtiItem/qtiItem/core/interactions/ChoiceInteraction',\n 'endAttemptInteraction' : 'taoQtiItem/qtiItem/core/interactions/EndAttemptInteraction',\n 'extendedTextInteraction' : 'taoQtiItem/qtiItem/core/interactions/ExtendedTextInteraction',\n 'gapMatchInteraction' : 'taoQtiItem/qtiItem/core/interactions/GapMatchInteraction',\n 'graphicAssociateInteraction' : 'taoQtiItem/qtiItem/core/interactions/GraphicAssociateInteraction',\n 'graphicGapMatchInteraction' : 'taoQtiItem/qtiItem/core/interactions/GraphicGapMatchInteraction',\n 'graphicOrderInteraction' : 'taoQtiItem/qtiItem/core/interactions/GraphicOrderInteraction',\n 'hotspotInteraction' : 'taoQtiItem/qtiItem/core/interactions/HotspotInteraction',\n 'hottextInteraction' : 'taoQtiItem/qtiItem/core/interactions/HottextInteraction',\n 'inlineChoiceInteraction' : 'taoQtiItem/qtiItem/core/interactions/InlineChoiceInteraction',\n 'matchInteraction' : 'taoQtiItem/qtiItem/core/interactions/MatchInteraction',\n 'mediaInteraction' : 'taoQtiItem/qtiItem/core/interactions/MediaInteraction',\n 'orderInteraction' : 'taoQtiItem/qtiItem/core/interactions/OrderInteraction',\n 'prompt' : 'taoQtiItem/qtiItem/core/interactions/Prompt',\n 'selectPointInteraction' : 'taoQtiItem/qtiItem/core/interactions/SelectPointInteraction',\n 'sliderInteraction' : 'taoQtiItem/qtiItem/core/interactions/SliderInteraction',\n 'textEntryInteraction' : 'taoQtiItem/qtiItem/core/interactions/TextEntryInteraction',\n 'uploadInteraction' : 'taoQtiItem/qtiItem/core/interactions/UploadInteraction',\n 'feedbackBlock' : 'taoQtiItem/qtiItem/core/feedbacks/FeedbackBlock',\n 'feedbackInline' : 'taoQtiItem/qtiItem/core/feedbacks/FeedbackInline',\n 'modalFeedback' : 'taoQtiItem/qtiItem/core/feedbacks/ModalFeedback',\n 'customInteraction' : 'taoQtiItem/qtiItem/core/interactions/CustomInteraction',\n 'infoControl' : 'taoQtiItem/qtiItem/core/PortableInfoControl',\n 'include' : 'taoQtiItem/qtiItem/core/Include',\n 'table' : 'taoQtiItem/qtiItem/core/Table',\n 'printedVariable' : 'taoQtiItem/qtiItem/core/PrintedVariable',\n '_tooltip' : 'taoQtiItem/qtiItem/core/Tooltip'\n };\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA\n *\n */\n\n/**\n * Common basic util functions\n */\ndefine('taoQtiItem/qtiItem/helper/util',['lodash'], function(_){\n 'use strict';\n\n var util = {\n\n buildSerial : function buildSerial(prefix){\n var id = prefix || '';\n var chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n for(var i = 0; i < 22; i++){\n id += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return id;\n },\n\n /**\n * Generates an id for a Qti element (the generation is different from identifier)\n * @param {Object} item - the element related item\n * @param {String} prefix - identifier prefix\n * @returns {String} the identifier\n * @throws {TypeError} if there is no item\n */\n buildId : function buildId(item, prefix){\n var id;\n var usedIds;\n var i = 1;\n var suffix = '';\n var exists = false;\n\n if(!item){\n throw new TypeError('A item is required to generate a unique identifier');\n }\n\n usedIds = item.getUsedIds();\n\n do{\n exists = false;\n id = prefix + suffix;\n if(_.contains(usedIds, id)){\n exists = true;\n suffix = '_' + i;\n i++;\n }\n } while(exists);\n\n return id;\n },\n\n /**\n * Generates an identifier for a Qti element\n * @param {Object} item - the element related item\n * @param {String} prefix - identifier prefix\n * @param {Boolean} [useSuffix = true] - add a \"_ + index\" to the identifier\n * @returns {String} the identifier\n * @throws {TypeError} if there is no item\n */\n buildIdentifier : function buildIdentifier(item, prefix, useSuffix){\n\n var id;\n var usedIds;\n var suffix = '';\n var i = 1;\n var exists = false;\n\n if(!item){\n throw new TypeError('A item is required to generate a unique identifier');\n }\n\n if(!prefix){\n throw new TypeError('Prefix is required to build an identifier');\n }\n\n usedIds = item.getUsedIdentifiers();\n useSuffix = _.isUndefined(useSuffix) ? true : useSuffix;\n\n if(prefix){\n prefix = prefix.replace(/_[0-9]+$/ig, '_') //detect incremental id of type choice_12, response_3, etc.\n .replace(/[^a-zA-Z0-9_]/ig, '_')\n .replace(/(_)+/ig, '_');\n if(useSuffix){\n suffix = '_' + i;\n }\n }\n\n do{\n exists = false;\n id = prefix + suffix;\n if(usedIds[id]){\n exists = true;\n suffix = '_' + i;\n i++;\n }\n } while(exists);\n\n return id;\n },\n\n findInCollection : function findInCollection(element, collectionNames, searchedSerial){\n\n var found = null;\n\n if(_.isString(collectionNames)){\n collectionNames = [collectionNames];\n }\n\n if(_.isArray(collectionNames)){\n\n _.each(collectionNames, function(collectionName){\n\n //get collection to search in (resolving case like interaction.choices.0\n var collection = element;\n _.each(collectionName.split('.'), function(nameToken){\n collection = collection[nameToken];\n });\n var elt = collection[searchedSerial];\n\n if(elt){\n found = {'parent' : element, 'element' : elt};\n return false;//break the each loop\n }\n\n //search inside each elements:\n _.each(collection, function(elt){\n\n if(_.isFunction(elt.find)){\n found = elt.find(searchedSerial);\n if(found){\n return false;//break the each loop\n }\n }\n\n });\n\n if(found){\n return false;//break the each loop\n }\n\n });\n\n }else{\n\n throw new Error('invalid argument : collectionNames must be an array or a string');\n }\n\n return found;\n },\n addMarkupNamespace : function addMarkupNamespace(markup, ns){\n if(ns) {\n markup = markup.replace(/<(\\/)?([a-z:]+)(\\s?)([^><]*)>/g, function($0, $1, $2, $3, $4){\n if($2.indexOf(':')>0){\n return $0;\n }\n $1 = $1 || '';\n $3 = $3 || '';\n return '<'+ $1 + ns + ':'+$2+$3+$4+'>';\n });\n return markup;\n }\n return markup;\n\n },\n removeMarkupNamespaces : function removeMarkupNamespace(markup){\n return markup.replace(/<(\\/)?(\\w*):([^>]*)>/g, '<$1$3>');\n },\n getMarkupUsedNamespaces : function getMarkupUsedNamespaces(markup){\n var namespaces = [];\n markup.replace(/<(\\/)?(\\w*):([^>]*)>/g, function(original, slash, ns, node){\n namespaces.push(ns);\n return '<'+slash+node+'>';\n });\n return _.uniq(namespaces);\n }\n };\n\n return util;\n});\n\n","define('taoQtiItem/qtiItem/helper/rendererConfig',['lodash', 'jquery'], function(_, $){\n\n var rendererConfigHelper = {};\n\n rendererConfigHelper.getOptionsFromArguments = function(args){\n\n var options = {\n data : {},\n placeholder : null,\n subclass : '',\n renderer : null\n };\n \n _.each(args, function(arg){\n if(arg){\n if(arg.isRenderer){\n options.renderer = arg;\n }else if(arg instanceof $ && arg.length){\n options.placeholder = arg;\n }else if(_.isString(arg)){\n options.subclass = arg;\n }else if(_.isPlainObject(arg)){\n options.data = arg;\n }else{\n console.log('invalid arg', arg, args);\n }\n }\n });\n \n return options;\n };\n \n return rendererConfigHelper;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA\n *\n */\ndefine('taoQtiItem/qtiItem/core/Element',[\n 'jquery',\n 'lodash',\n 'class',\n 'core/logger',\n 'taoQtiItem/qtiItem/helper/util',\n 'taoQtiItem/qtiItem/helper/rendererConfig'\n], function($, _, Class, loggerFactory, util, rendererConfig){\n 'use strict';\n\n var _instances = {};\n\n /**\n * Create a logger\n */\n var logger = loggerFactory('taoQtiItem/qtiItem/core/Element');\n\n var Element = Class.extend({\n qtiClass : '',\n serial : '',\n rootElement : null,\n init : function(serial, attributes){\n\n //init own attributes\n this.attributes = {};\n\n //system properties, for item creator internal use only\n this.metaData = {};\n\n //init call in the format init(attributes)\n if(typeof (serial) === 'object'){\n attributes = serial;\n serial = '';\n }\n\n if(!serial){\n serial = util.buildSerial(this.qtiClass + '_');\n }\n\n if(serial && (typeof serial !== 'string' || !serial.match(/^[a-z_0-9]*$/i))){\n throw 'invalid QTI serial : (' + (typeof serial) + ') ' + serial;\n }\n\n if(!_instances[serial]){\n _instances[serial] = this;\n this.serial = serial;\n this.setAttributes(attributes || {});\n }else{\n throw 'a QTI Element with the same serial already exists ' + serial;\n }\n\n if(typeof this.initContainer === 'function'){\n this.initContainer(arguments[2] || '');\n }\n if(typeof this.initObject === 'function'){\n this.initObject();\n }\n },\n is : function(qtiClass){\n return (qtiClass === this.qtiClass);\n },\n placeholder : function(){\n return '{{' + this.serial + '}}';\n },\n getSerial : function(){\n return this.serial;\n },\n getUsedIdentifiers : function(){\n var usedIds = {};\n var elts = this.getComposingElements();\n for(var i in elts){\n var elt = elts[i];\n var id = elt.attr('identifier');\n if(id){\n //warning: simplistic implementation, allow only one unique identifier in the item no matter the element class/type\n usedIds[id] = elt;\n }\n }\n return usedIds;\n },\n\n /**\n * Get the ids in use. (id is different from identifier)\n * @returns {Array} of the ids in use\n */\n getUsedIds : function getUsedIds(){\n var usedIds = [];\n _.forEach(this.getComposingElements(), function(elt){\n var id = elt.attr('id');\n if(id && !_.contains(usedIds, id)){\n usedIds.push(id);\n }\n });\n return usedIds;\n },\n\n attr : function(name, value){\n if(name){\n if(value !== undefined){\n this.attributes[name] = value;\n }else{\n if(typeof (name) === 'object'){\n for(var prop in name){\n this.attr(prop, name[prop]);\n }\n }else if(typeof (name) === 'string'){\n if(this.attributes[name] === undefined){\n return undefined;\n }else{\n return this.attributes[name];\n }\n }\n }\n }\n return this;\n },\n data : function(name, value){\n if(name){\n if(value !== undefined){\n this.metaData[name] = value;\n $(document).trigger('metaChange.qti-widget', {element : this, key : name, value : value});\n }else{\n if(typeof (name) === 'object'){\n for(var prop in name){\n this.data(prop, name[prop]);\n }\n }else if(typeof (name) === 'string'){\n if(this.metaData[name] === undefined){\n return undefined;\n }else{\n return this.metaData[name];\n }\n }\n }\n }\n return this;\n },\n removeData : function(name){\n delete this.metaData[name];\n return this;\n },\n removeAttr : function(name){\n return this.removeAttributes(name);\n },\n setAttributes : function(attributes){\n if (!_.isPlainObject(attributes)) {\n logger.warn('attributes should be a plain object');\n }\n this.attributes = attributes;\n return this;\n },\n getAttributes : function(){\n return _.clone(this.attributes);\n },\n removeAttributes : function(attrNames){\n if(typeof (attrNames) === 'string'){\n attrNames = [attrNames];\n }\n for(var i in attrNames){\n delete this.attributes[attrNames[i]];\n }\n return this;\n },\n getComposingElements : function(){\n var elts = {};\n function append(element){\n elts[element.getSerial()] = element;//pass individual object by ref, instead of the whole list(object)\n elts = _.extend(elts, element.getComposingElements());\n }\n if(typeof this.initContainer === 'function'){\n append(this.getBody());\n }\n if(typeof this.initObject === 'function'){\n append(this.getObject());\n }\n _.each(this.metaData, function(v){\n if(Element.isA(v, '_container')){\n append(v);\n }else if(_.isArray(v)){\n _.each(v, function(v){\n if(Element.isA(v, '_container')){\n append(v);\n }\n });\n }\n });\n return elts;\n },\n getUsedClasses : function(){\n\n var ret = [this.qtiClass],\n composingElts = this.getComposingElements();\n\n _.each(composingElts, function(elt){\n ret.push(elt.qtiClass);\n });\n\n return _.uniq(ret);\n },\n find : function(serial){\n\n var found = null;\n var object,\n body;\n\n if(typeof this.initObject === 'function'){\n object = this.getObject();\n if(object.serial === serial){\n found = {'parent' : this, 'element' : object, 'location' : 'object'};\n }\n }\n\n if(!found && typeof this.initContainer === 'function'){\n body = this.getBody();\n if (body.serial === serial) {\n found = {'parent' : this, 'element' : body, 'location' : 'body'};\n } else {\n found = this.getBody().find(serial, this);\n }\n }\n\n return found;\n },\n parent : function(){\n var item = this.getRootElement();\n if(item){\n var found = item.find(this.getSerial());\n if(found){\n return found.parent;\n }\n }\n return null;\n },\n /**\n * @deprecated - use setRootElement() instead\n */\n setRelatedItem : function(item) {\n logger.warn('Deprecated use of setRelatedItem()');\n this.setRootElement(item);\n },\n setRootElement : function(item){\n var composingElts,\n i;\n\n if(Element.isA(item, 'assessmentItem')){\n this.rootElement = item;\n composingElts = this.getComposingElements();\n for(i in composingElts){\n composingElts[i].setRootElement(item);\n }\n }\n\n },\n /**\n * @deprecated - use getRootElement() instead\n */\n getRelatedItem : function(){\n logger.warn('Deprecated use of getRelatedItem()');\n return this.getRootElement();\n },\n getRootElement : function(){\n var ret = null;\n if(Element.isA(this.rootElement, 'assessmentItem')){\n ret = this.rootElement;\n }\n return ret;\n },\n setRenderer : function(renderer){\n if(renderer && renderer.isRenderer){\n this.renderer = renderer;\n var elts = this.getComposingElements();\n for(var serial in elts){\n elts[serial].setRenderer(renderer);\n }\n }else{\n throw 'invalid qti rendering engine';\n }\n },\n getRenderer : function(){\n return this.renderer;\n },\n /**\n * Render the element. Arguments are all optional and can be given in any order.\n * Argument parsing is based on argument type and is done by taoQtiItem/qtiItem/core/helpers/rendererConfig\n * @param {Renderer} renderer - specify which renderer to use\n * @param {jQuery} placeholder - DOM element that will be replaced by the rendered element\n * @param {Object} data - template data for the rendering\n * @param {String} subclass - subclass enables different behaviour of the same qti class in different contexts (eg. we could have different rendering for simpleChoice according to where it is being used: simpleChoice.orderInteraction, simpleChoice.choiceInteraction...)\n * @returns {String} - the rendered element as an HTML string\n */\n render : function render(){\n var args = rendererConfig.getOptionsFromArguments(arguments);\n var _renderer = args.renderer || this.getRenderer();\n var rendering;\n\n var tplData = {},\n defaultData = {\n 'tag' : this.qtiClass,\n 'serial' : this.serial,\n 'attributes' : this.getAttributes()\n };\n\n if(!_renderer){\n throw new Error('render: no renderer found for the element ' + this.qtiClass + ':' + this.serial);\n }\n\n if(typeof this.initContainer === 'function'){\n //allow body to have a different renderer if it has its own renderer set\n defaultData.body = this.getBody().render(args.renderer);\n }\n if(typeof this.initObject === 'function'){\n defaultData.object = {\n attributes : this.object.getAttributes()\n };\n defaultData.object.attributes.data = _renderer.resolveUrl(this.object.attr('data'));\n }\n\n tplData = _.merge(defaultData, args.data || {});\n tplData = _renderer.getData(this, tplData, args.subclass);\n rendering = _renderer.renderTpl(this, tplData, args.subclass);\n if(args.placeholder){\n args.placeholder.replaceWith(rendering);\n }\n\n return rendering;\n },\n postRender : function(data, altClassName, renderer){\n\n var postRenderers = [];\n var _renderer = renderer || this.getRenderer();\n\n if(typeof this.initContainer === 'function'){\n //allow body to have a different renderer if it has its own renderer set\n postRenderers = this.getBody().postRender(data, '', renderer);\n }\n\n if(_renderer){\n postRenderers.push(_renderer.postRender(this, data, altClassName));\n }else{\n throw 'postRender: no renderer found for the element ' + this.qtiClass + ':' + this.serial;\n }\n\n return _.compact(postRenderers);\n },\n getContainer : function($scope, subclass){\n var renderer = this.getRenderer();\n if(renderer){\n return renderer.getContainer(this, $scope, subclass);\n }else{\n throw 'getContainer: no renderer found for the element ' + this.qtiClass + ':' + this.serial;\n }\n },\n toArray : function(){\n var arr = {\n serial : this.serial,\n type : this.qtiClass,\n attributes : this.getAttributes()\n };\n\n if(typeof this.initContainer === 'function'){\n arr.body = this.getBody().toArray();\n }\n if(typeof this.initObject === 'function'){\n arr.object = this.object.toArray();\n }\n\n return arr;\n },\n isEmpty : function(){\n //tells whether the element should be considered empty or not, from the rendering point of view\n return false;\n },\n addClass : function(className){\n var clazz = this.attr('class') || '';\n if(!_containClass(clazz, className)){\n this.attr('class', clazz + (clazz.length ? ' ' : '') + className);\n }\n },\n hasClass : function(className){\n return _containClass(this.attr('class'), className);\n },\n removeClass : function(className){\n\n var clazz = this.attr('class') || '';\n if(clazz){\n\n var regex = new RegExp('(?:^|\\\\s)' + className + '(?:\\\\s|$)');\n clazz = clazz.replace(regex, ' ').trim();\n\n if(clazz){\n this.attr('class', clazz);\n }else{\n this.removeAttr('class');\n }\n }\n },\n /**\n * Add or remove class. Setting the optional state will force addition/removal.\n * State is here to keep the jQuery syntax\n *\n * @param {String} className\n * @param {Boolean} [state]\n */\n toggleClass : function(className, state) {\n\n if(typeof state === 'boolean') {\n return state ? this.addClass(className) : this.removeClass(className);\n }\n\n if(this.hasClass(className)) {\n return this.removeClass(className);\n }\n return this.addClass(className);\n },\n isset : function(){\n return Element.issetElement(this.serial);\n },\n unset : function(){\n return Element.unsetElement(this.serial);\n }\n });\n\n var _containClass = function(allClassStr, className){\n var regex = new RegExp('(?:^|\\\\s)' + className + '(?:\\\\s|$)', '');\n return allClassStr && regex.test(allClassStr);\n };\n\n //helpers\n Element.isA = function(qtiElement, qtiClass){\n return (qtiElement instanceof Element && qtiElement.is(qtiClass));\n };\n\n Element.getElementBySerial = function(serial){\n return _instances[serial];\n };\n\n Element.issetElement = function(serial){\n return !!_instances[serial];\n };\n\n /**\n * Unset a registered element from it's serial\n * @param {String} serial - the element serial\n * @returns {Boolean} true if unset\n */\n Element.unsetElement = function(serial){\n\n var element = Element.getElementBySerial(serial);\n\n if(element){\n\n var composingElements = element.getComposingElements();\n _.each(composingElements, function(elt){\n delete _instances[elt.serial];\n });\n delete _instances[element.serial];\n\n return true;\n }\n return false;\n };\n\n return Element;\n});\n\n\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA\n */\n\n/**\n * XML namespace handling\n */\ndefine('taoQtiItem/qtiItem/helper/xmlNsHandler',[], function(){\n 'use strict';\n\n /**\n * Elements that need to be prefixed\n *\n * @see http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd\n * @type {string}\n */\n var prefixed = 'article|aside|bdi|figure|footer|header|nav|rb|rp|rt|rtc|ruby|section';\n\n\n /**\n * Find a possibly existing prefix\n *\n * @param namespaces\n * @param html5Ns\n * @returns {*}\n */\n function getPrefix(namespaces, html5Ns) {\n var key;\n for(key in namespaces) {\n if(namespaces[key] === html5Ns) {\n return key;\n }\n }\n return 'qh5';\n }\n\n return {\n\n /**\n * Remove prefix to make sure elements are properly displayed\n *\n * @param body\n */\n stripNs : function stripNs(body) {\n var pattern = '([\\\\w]+)\\\\:(' + prefixed + ')';\n var openRegEx = new RegExp('(<' + pattern + ')', 'gi');\n var closeRegEx = new RegExp('(<\\\\/' + pattern + '>)', 'gi');\n return body.replace(openRegEx, '<$3').replace(closeRegEx, '');\n },\n\n /**\n * Add a prefix to those elements that require one\n *\n * @param xml\n * @param namespaces\n * @returns {*}\n */\n restoreNs : function restoreNs(xml, namespaces) {\n var xmlRe = new RegExp('(<(' + prefixed + ')[^>]*>|<\\\\/(' + prefixed + ')>)', 'gi');\n var tagRe = new RegExp('((<)(' + prefixed + ')([^>]*)(>)|(<\\\\/)(' + prefixed + ')(>))', 'i');\n var xmlMatch = xml.match(xmlRe);\n var imsXsd = 'http://www.imsglobal.org/xsd';\n var html5Ns = imsXsd + '/imsqtiv2p2_html5_v1p0';\n var prefix = getPrefix(namespaces, html5Ns);\n var prefixAtt = 'xmlns:' + prefix + '=\"' + html5Ns + '\"';\n var i = xmlMatch ? xmlMatch.length : 0;\n var tagMatch;\n\n if(!xmlMatch) {\n return xml;\n }\n\n while(i--) {\n tagMatch = xmlMatch[i].match(tagRe);\n xml = xml.replace(xmlMatch[i],\n tagMatch[5]\n ? '<' + prefix + ':' + tagMatch[3] + tagMatch[4] + '>'\n : ''\n );\n }\n\n // we found matches but no namespace has been set\n if(xmlMatch.length && xml.indexOf(prefixAtt) === -1) {\n xml = xml.replace('\n * @author Bertrand Chevrier \n */\ndefine('taoQtiItem/qtiRunner/core/Renderer',[\n 'lodash',\n 'jquery',\n 'handlebars',\n 'core/promise',\n 'taoQtiItem/qtiItem/core/Element',\n 'taoQtiItem/qtiItem/helper/interactionHelper',\n 'ui/themeLoader'\n], function(_, $, Handlebars, Promise, Element, interactionHelper, themeLoader){\n 'use strict';\n\n var _isValidRenderer = function(renderer){\n\n var valid = true;\n\n if(typeof (renderer) !== 'object'){\n return false;\n }\n\n var classCorrect = false;\n if(renderer.qtiClass){\n if(_.indexOf(_renderableClasses, renderer.qtiClass) >= 0){\n classCorrect = true;\n }else{\n var pos = renderer.qtiClass.indexOf('.');\n if(pos > 0){\n var qtiClass = renderer.qtiClass.slice(0, pos);\n var subClass = renderer.qtiClass.slice(pos + 1);\n if(_renderableSubclasses[qtiClass] && _.indexOf(_renderableSubclasses[qtiClass], subClass) >= 0){\n classCorrect = true;\n }\n }\n }\n }\n if(!classCorrect){\n valid = false;\n throw new Error('invalid qti class name in renderer declaration : ' + renderer.qtiClass);\n }\n\n if(!renderer.template){\n valid = false;\n throw new Error('missing template in renderer declaration : ' + renderer.qtiClass);\n }\n\n return valid;\n };\n\n var _renderableClasses = [\n '_container',\n 'assessmentItem',\n 'stylesheet',\n 'responseDeclaration',\n 'outcomeDeclaration',\n 'responseProcessing',\n '_simpleFeedbackRule',\n '_tooltip',\n 'img',\n 'math',\n 'object',\n 'table',\n 'modalFeedback',\n 'rubricBlock',\n 'associateInteraction',\n 'choiceInteraction',\n 'extendedTextInteraction',\n 'gapMatchInteraction',\n 'graphicAssociateInteraction',\n 'graphicGapMatchInteraction',\n 'graphicOrderInteraction',\n 'hotspotInteraction',\n 'hottextInteraction',\n 'inlineChoiceInteraction',\n 'matchInteraction',\n 'mediaInteraction',\n 'orderInteraction',\n 'selectPointInteraction',\n 'sliderInteraction',\n 'textEntryInteraction',\n 'uploadInteraction',\n 'endAttemptInteraction',\n 'customInteraction',\n 'prompt',\n 'associableHotspot',\n 'gap',\n 'gapImg',\n 'gapText',\n 'hotspotChoice',\n 'hottext',\n 'inlineChoice',\n 'simpleAssociableChoice',\n 'simpleChoice',\n 'infoControl',\n 'include',\n 'printedVariable'\n ];\n\n /**\n * The list of qti element dependencies. It is used internally to load dependent qti classes\n */\n var _dependencies = {\n assessmentItem : ['stylesheet', '_container', 'prompt', 'modalFeedback'],\n rubricBlock : ['_container'],\n associateInteraction : ['simpleAssociableChoice'],\n choiceInteraction : ['simpleChoice'],\n gapMatchInteraction : ['gap', 'gapText'],\n graphicAssociateInteraction : ['associableHotspot'],\n graphicGapMatchInteraction : ['associableHotspot', 'gapImg'],\n graphicOrderInteraction : ['hotspotChoice'],\n hotspotInteraction : ['hotspotChoice'],\n hottextInteraction : ['hottext'],\n inlineChoiceInteraction : ['inlineChoice'],\n matchInteraction : ['simpleAssociableChoice'],\n orderInteraction : ['simpleChoice']\n };\n\n /**\n * The list of supported qti subclasses.\n */\n var _renderableSubclasses = {\n 'simpleAssociableChoice' : ['associateInteraction', 'matchInteraction'],\n 'simpleChoice' : ['choiceInteraction', 'orderInteraction']\n };\n\n /**\n * List of the default properties for the item\n */\n var _defaults = {\n shuffleChoices : true\n };\n\n /**\n * Get the location of the document, useful to define a baseUrl for the required context\n * @returns {String}\n */\n function getDocumentBaseUrl(){\n return window.location.protocol + '//' + window.location.host + window.location.pathname.replace(/([^\\/]*)$/, '');\n }\n\n /**\n * The built Renderer class\n * @constructor\n * @param {Object} [options] - the renderer options\n * @param {AssetManager} [options.assetManager] - The renderer needs an AssetManager to resolve URLs (see {@link taoItems/assets/manager})\n * @param {Boolean} [options.shuffleChoices = true] - Does the renderer take care of the shuffling\n * @param {Object} [options.decorators] - to set up rendering decorator\n * @param {preRenderDecorator} [options.decorators.before] - to set up a pre decorator\n * @param {postRenderDecorator} [options.decorators.after] - to set up a post decorator\n */\n var Renderer = function(options){\n\n /**\n * Store the registered renderer location\n */\n var _locations = {};\n\n /**\n * Store loaded renderers\n */\n var _renderers = {};\n\n options = _.defaults(options || {}, _defaults);\n\n this.isRenderer = true;\n\n this.name = '';\n\n //store shuffled choice here\n this.shuffledChoices = [];\n\n /**\n * Get the actual renderer of the give qti class or subclass:\n * e.g. simplceChoice, simpleChoice.choiceInteraction, simpleChoice.orderInteraction\n */\n var _getClassRenderer = function(qtiClass){\n var ret = null;\n if(_renderers[qtiClass]){\n ret = _renderers[qtiClass];\n }else{\n var pos = qtiClass.indexOf('.');\n if(pos > 0){\n qtiClass = qtiClass.slice(0, pos);\n if(_renderers[qtiClass]){\n ret = _renderers[qtiClass];\n }\n }\n }\n return ret;\n };\n\n /**\n * Registers a QTI renderer class\n * @param {String} qtiClass\n * @param {Array} list\n * @returns {Boolean} `true` if the class has been successfully registered\n */\n function registerRendererClass(qtiClass, list) {\n var success = false;\n if (_locations[qtiClass] === false) {\n //mark this class as not renderable\n _renderers[qtiClass] = false;\n success = true;\n } else if (_locations[qtiClass]) {\n list.push(_locations[qtiClass]);\n success = true;\n }\n return success;\n }\n\n /**\n * Set the renderer options\n * @param {String} key - the name of the option\n * @param {*} value - the option vallue\n * @returns {Renderer} for chaining\n */\n this.setOption = function(key, value){\n if(typeof (key) === 'string'){\n options[key] = value;\n }\n return this;\n };\n\n /**\n * Set the renderer options\n * @param {Object} opts - the options\n * @returns {Renderer} for chaining\n */\n this.setOptions = function(opts){\n options = _.extend(options, opts);\n return this;\n };\n\n /**\n * Get the renderer option\n * @param {String} key - the name of the option\n * @returns {*|null} the option vallue\n */\n this.getOption = function(key){\n if(typeof (key) === 'string' && options[key]){\n return options[key];\n }\n return null;\n };\n\n this.getCustomMessage = function getCustomMessage(elementName, messageKey){\n var messages = this.getOption('messages');\n if(messages &&\n elementName &&\n messages[elementName] &&\n _.isString(messages[elementName][messageKey])){\n //currently not translatable but potentially could be if the need raises\n return Handlebars.compile(messages[elementName][messageKey]);\n }else{\n return null;\n }\n };\n\n /**\n * Get the bound assetManager\n * @returns {AssetManager} the assetManager\n */\n this.getAssetManager = function getAssetManager(){\n return options.assetManager;\n };\n\n /**\n * Get the bound theme loader\n * @returns {Object} the themeLoader\n */\n this.getThemeLoader = function getThemeLoader(){\n return this.themeLoader;\n };\n\n\n /**\n * Renders the template\n * @param {Object} element - the QTI model element\n * @param {Object} data - the data to give to the template\n * @param {String} [qtiSubclass] - to get the render of the element subclass (when element's qtiClass is abstract)\n * @returns {String} the template results\n * @throws {Error} if the renderer is not set or has no template bound\n */\n this.renderTpl = function(element, data, qtiSubclass){\n\n var res;\n var ret = '';\n var tplFound = false;\n var qtiClass = qtiSubclass || element.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n var decorators = this.getOption('decorators');\n\n if(!renderer || !_.isFunction(renderer.template)){\n throw new Error('no renderer template loaded under the class name : ' + qtiClass);\n }\n\n //pre rendering decoration\n if(_.isObject(decorators) && _.isFunction(decorators.before)){\n\n /**\n * @callback preRenderDecoractor\n * @param {Object} element - the QTI model element\n * @param {String} [qtiSubclass] - to get the render of the element subclass (when element's qtiClass is abstract)\n * @returns {String} the decorator result\n */\n res = decorators.before(element, qtiSubclass);\n if(_.isString(res)){\n ret += res;\n }\n }\n\n //render the template\n ret += renderer.template(data);\n\n\n //post rendering decoration\n if(_.isObject(decorators) && _.isFunction(decorators.after)){\n\n /**\n * @callback postRenderDecoractor\n * @param {Object} element - the QTI model element\n * @param {String} [qtiSubclass] - to get the render of the element subclass (when element's qtiClass is abstract)\n * @returns {String} the decorator result\n */\n res = decorators.after(element, qtiSubclass);\n if(_.isString(res)){\n ret += res;\n }\n }\n return ret;\n };\n\n this.getData = function(element, data, qtiSubclass){\n\n var ret = data,\n qtiClass = qtiSubclass || element.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.getData) === 'function'){\n ret = renderer.getData.call(this, element, data);\n }\n }\n\n return ret;\n };\n\n this.renderDirect = function(tpl, data){\n return Handlebars.compile(tpl)(data);\n };\n\n this.getContainer = function(qtiElement, $scope, qtiSubclass){\n\n var ret = null,\n qtiClass = qtiSubclass || qtiElement.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n ret = renderer.getContainer(qtiElement, $scope);\n }else{\n throw 'no renderer found for the class : ' + qtiElement.qtiClass;\n }\n return ret;\n };\n\n this.postRender = function(qtiElement, data, qtiSubclass){\n\n var qtiClass = qtiSubclass || qtiElement.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n\n if(renderer && typeof (renderer.render) === 'function') {\n return renderer.render.call(this, qtiElement, data);\n }\n };\n\n this.setResponse = function(qtiInteraction, response, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.setResponse) === 'function'){\n ret = renderer.setResponse.call(this, qtiInteraction, response);\n var $container = renderer.getContainer.call(this, qtiInteraction);\n if($container instanceof $ && $container.length){\n $container.trigger('responseSet', [qtiInteraction, response]);\n }\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n this.getResponse = function(qtiInteraction, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.getResponse) === 'function'){\n ret = renderer.getResponse.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n this.resetResponse = function(qtiInteraction, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.resetResponse) === 'function'){\n ret = renderer.resetResponse.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n /**\n * Retrieve the state of the interaction.\n * If the renderer has no state management, it falls back to the response management.\n *\n * @param {Object} qtiInteraction - the interaction\n * @param {String} [qtiSubClass] - (not sure of the type and how it is used - Sam ? )\n * @returns {Object} the interaction's state\n *\n * @throws {Error} if no renderer is registered\n */\n this.getState = function(qtiInteraction, qtiSubclass){\n\n var ret = false;\n var qtiClass = qtiSubclass || qtiInteraction.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(_.isFunction(renderer.getState)){\n ret = renderer.getState.call(this, qtiInteraction);\n } else {\n ret = renderer.getResponse.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n /**\n * Retrieve the state of the interaction.\n * If the renderer has no state management, it falls back to the response management.\n *\n * @param {Object} qtiInteraction - the interaction\n * @param {Object} state - the interaction's state\n * @param {String} [qtiSubClass] - (not sure of the type and how it is used - Sam ? )\n *\n * @throws {Error} if no renderer is found\n */\n this.setState = function(qtiInteraction, state, qtiSubclass){\n\n var qtiClass = qtiSubclass || qtiInteraction.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(_.isFunction(renderer.setState)){\n renderer.setState.call(this, qtiInteraction, state);\n } else {\n renderer.resetResponse.call(this, qtiInteraction);\n renderer.setResponse.call(this, qtiInteraction, state);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n };\n\n /**\n * Calls the renderer destroy.\n * Ask the renderer to run destroy if exists.\n *\n * @throws {Error} if no renderer is found\n */\n this.destroy = function(qtiInteraction, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(_.isFunction(renderer.destroy)){\n ret = renderer.destroy.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n this.getLoadedRenderers = function(){\n return _renderers;\n };\n\n this.register = function(renderersLocations){\n _.extend(_locations, renderersLocations);\n };\n\n this.load = function(callback, requiredClasses){\n var self = this;\n var required = [];\n\n if(options.themes){\n\n //resolve themes paths\n options.themes.base = this.resolveUrl(options.themes.base);\n _.forEach(options.themes.available, function(theme, index){\n options.themes.available[index].path = self.resolveUrl(theme.path);\n });\n this.themeLoader = themeLoader(options.themes).load();\n }\n\n if(requiredClasses){\n if(_.isArray(requiredClasses)){\n\n //exclude abstract classes\n requiredClasses = _.intersection(requiredClasses, _renderableClasses);\n\n //add dependencies\n _.each(requiredClasses, function(reqClass){\n var deps = _dependencies[reqClass];\n if(deps){\n requiredClasses = _.union(requiredClasses, deps);\n }\n });\n\n _.forEach(requiredClasses, function(qtiClass){\n\n if(_renderableSubclasses[qtiClass]){\n var requiredSubClasses = _.intersection(requiredClasses, _renderableSubclasses[qtiClass]);\n _.each(requiredSubClasses, function(subclass){\n if (!registerRendererClass(qtiClass + '.' + subclass, required) && !registerRendererClass(qtiClass, required)) {\n throw new Error(self.name + ' : missing qti class location declaration: ' + qtiClass + ', subclass: ' + subclass);\n }\n });\n } else {\n if (!registerRendererClass(qtiClass, required)) {\n throw new Error(self.name + ' : missing qti class location declaration: ' + qtiClass);\n }\n }\n });\n } else {\n throw new Error('invalid argument type: expected array for arg \"requireClasses\"');\n }\n\n }else{\n required = _.values(_locations);\n }\n\n var _this = this;\n require(required, function(){\n\n _.each(arguments, function(clazz){\n if(_isValidRenderer(clazz)){\n _renderers[clazz.qtiClass] = clazz;\n }\n });\n\n if(typeof (callback) === 'function'){\n callback.call(_this, _renderers);\n }\n });\n\n return this;\n };\n\n /**\n * Unload the renderer\n */\n this.unload = function unload(){\n if(this.themeLoader){\n themeLoader(options.themes).unload();\n }\n return this;\n };\n\n /**\n * Define the shuffling manually\n *\n * @param {Object} interaction - the interaction\n * @param {Array} choices - the shuffled choices\n * @param {String} identificationType -\n */\n this.setShuffledChoices = function(interaction, choices, identificationType){\n if(Element.isA(interaction, 'interaction')){\n this.shuffledChoices[interaction.getSerial()] = _.pluck(interactionHelper.findChoices(interaction, choices, identificationType), 'serial');\n }\n };\n\n /**\n * Get the choices shuffled for this interaction.\n *\n * @param {Object} interaction - the interaction\n * @param {Boolean} reshuffle - by default choices are shuffled only once and store, but if true you can force shuffling again\n * @param {String} returnedType - the choice type\n * @returns {Array} the choices\n */\n this.getShuffledChoices = function(interaction, reshuffle, returnedType){\n var choices = [];\n var shuffled = [];\n var serial, i;\n\n if(Element.isA(interaction, 'interaction')){\n serial = interaction.getSerial();\n\n //1st time, we shuffle (or asked to force shuffling)\n if(!this.shuffledChoices[serial] || reshuffle){\n if(Element.isA(interaction, 'matchInteraction')){\n this.shuffledChoices[serial] = [];\n for(i = 0; i < 2; i++){\n choices[i] = interactionHelper.shuffleChoices(interaction.getChoices(i));\n this.shuffledChoices[serial][i] = _.pluck(choices[i], 'serial');\n }\n } else {\n choices = interactionHelper.shuffleChoices(interaction.getChoices());\n this.shuffledChoices[serial] = _.pluck(choices, 'serial');\n }\n\n //otherwise get the choices from the serials\n } else {\n if(Element.isA(interaction, 'matchInteraction')){\n _.forEach(choices, function(choice, index){\n if(index < 2){\n _.forEach(this.shuffledChoices[serial][i], function(choiceSerial){\n choice.push(interaction.getChoice(choiceSerial));\n });\n }\n });\n } else {\n _.forEach(this.shuffledChoices[serial], function(choiceSerial){\n choices.push(interaction.getChoice(choiceSerial));\n });\n }\n }\n\n //do some type convertion\n if(returnedType === 'serial' || returnedType === 'identifier'){\n return interactionHelper.convertChoices(choices, returnedType);\n }\n\n //pass value only, not ref\n return _.clone(choices);\n }\n\n return [];\n };\n\n this.getRenderers = function(){\n return _renderers;\n };\n\n this.getLocations = function(){\n return _locations;\n };\n\n /**\n * Resolve URLs using the defined assetManager's strategies\n * @param {String} url - the URL to resolve\n * @returns {String} the resolved URL\n */\n this.resolveUrl = function resolveUrl(url){\n if(!options.assetManager){\n return url;\n }\n if(typeof url === 'string' && url.length > 0){\n return options.assetManager.resolve(url);\n }\n };\n\n /**\n * @deprecated in favor of resolveUrl\n */\n this.getAbsoluteUrl = function(relUrl){\n\n //let until method is removed\n console.warn('DEPRECATED used getAbsoluteUrl with ', arguments);\n\n //allow relative url output only if explicitely said so\n if(this.getOption('userRelativeUrl')){\n return relUrl.replace(/^\\.?\\//, '');\n }\n\n if(/^http(s)?:\\/\\//i.test(relUrl) || /^data:[^\\/]+\\/[^;]+(;charset=[\\w]+)?;base64,/.test(relUrl)){\n //already absolute or base64 encoded\n return relUrl;\n }else{\n\n var absUrl = '';\n var runtimeLocations = this.getOption('runtimeLocations');\n\n if(runtimeLocations && _.size(runtimeLocations)){\n _.forIn(runtimeLocations, function(runtimeLocation, typeIdentifier){\n if(relUrl.indexOf(typeIdentifier) === 0){\n absUrl = relUrl.replace(typeIdentifier, runtimeLocation);\n return false;//break\n }\n });\n }\n\n if(absUrl){\n return absUrl;\n }else{\n var baseUrl = this.getOption('baseUrl') || getDocumentBaseUrl();\n return baseUrl + relUrl;\n }\n\n }\n };\n\n this.setAreaBroker = function setAreaBroker(areaBroker) {\n this._areaBroker = areaBroker;\n };\n\n this.getAreaBroker = function getAreaBroker() {\n if (this._areaBroker) {\n return this._areaBroker;\n }\n };\n\n this.getItemCreator = function getItemCreator() {\n return this.getOption('itemCreator');\n };\n };\n\n /**\n * Expose the renderer's factory\n * @exports taoQtiItem/qtiRunner/core/Renderer\n */\n return {\n\n /**\n * Creates a new Renderer by extending the Renderer's prototype\n * @param {Object} renderersLocations -\n * @param {String} [name] - the new renderer name\n * @param {Object} [defaultOptions] - the renderer options\n */\n build : function(renderersLocations, name, defaultOptions){\n var NewRenderer = function(){\n var options = _.isPlainObject(arguments[0]) ? arguments[0] : {};\n\n Renderer.apply(this);\n\n this.register(renderersLocations);\n this.name = name || '';\n this.setOptions(_.defaults(options, defaultOptions || {}));\n };\n NewRenderer.prototype = Renderer.prototype;\n return NewRenderer;\n }\n };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2017 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * The asset manager proposes you to resolve your asset URLs for you!\n * You need to add the resolution strategies, it will then evaluate each strategy until the right one is found\n *\n * @author Bertrand Chevrier \n */\ndefine('taoItems/assets/manager',[\n 'lodash',\n 'util/url'\n], function(_, urlUtil){\n 'use strict';\n\n /**\n * @typedef AssetStrategy Defines a way to resolve an asset path\n * @property {String} name - the strategy name\n * @property {assetStrategyHandle} handle - how to resolve the strategy.\n */\n\n /**\n * @callback assetStrategyHandle\n * @param {String|Object} url - the URL to resolved. If parseUrl, it's an object that contains host, port, search, queryString, etc.\n * @param {Object} data - the context data\n * @returns {String?} falsy if not resolved otherwise the resolved URL\n */\n\n /**\n * Check if the given object is a valid AssetStrategy\n * @param {AssetStrategy} strategy\n * @throws {TypeError}\n */\n var checkStrategy = function checkStrategy(strategy){\n if(!_.isPlainObject(strategy) || !_.isFunction(strategy.handle) || !_.isString(strategy.name)){\n throw new TypeError('An asset resolution strategy is an object with a handle method and a name');\n }\n };\n\n /**\n * The assetManagerFactory create a new assetManager with the given resolution strategies and a data context.\n *\n * @example\n * //define AssetStrategies with a name and a handle method\n * var strategies = [{\n * name : 'external',\n * handle : function(url, data){\n * if(/^http/.test(url)){\n * return path;\n * }\n * }\n * }, {\n * name : 'relative',\n * handle : function(url, data){\n * if(/^((\\.\\/)|(\\w\\/))/){\n * return data.baseUrl + '/' + url ;\n * }\n * }\n * }]);\n *\n * var assetManager = assetManagerFactory(strategies, { baseUrl : 'http://t.oa/public/assets/' });\n * assetManager.resolve('http://foo/bar.png'); //will resolved using external\n * assetManager.resolve('bar.png'); //will resolved using relative strategy\n *\n * @param {AssetStrategy[]} strategies - the strategies\n * @param {Object} data - the context data\n * @param {Object} [options] - the manager options\n * @param {Boolean} [options.parseUrl = true] - If the URL to give to the strategies should be parsed or given as it is.\n * @param {Boolean} [options.cache] - resolve the same URL only once and store the result in memory.\n *\n * @exports taoItems/assets/manager\n * @namespace assetManagerFactory\n */\n var assetManagerFactory = function assetManagerFactory(strategies, data, options) {\n\n var cache = {};\n\n strategies = _.isArray(strategies) ? strategies : [strategies];\n data = data || {};\n options = _.defaults(options || {}, {\n parseUrl : true\n });\n\n /**\n * A brand new asset manager is created by the factory\n */\n var assetManager = {\n\n /**\n * The stack of strategies that would be used to resolve the asset path\n * @type {AssetStrategy[]}\n */\n _strategies : [],\n\n /**\n * Add an asset resolution strategy at the end of the stack.\n * The strategies will be evaluated in the order they've been added.\n * @param {AssetStrategy} strategy - the strategy to add\n * @throws {TypeError} if the strategy isn't defined correctly\n */\n addStrategy : function addStrategy (strategy){\n\n checkStrategy(strategy);\n\n this._strategies.push(strategy);\n },\n\n /**\n * Add an asset resolution strategy at the beginning of the stack.\n * The strategies will be evaluated in the order they've been added.\n * @param {AssetStrategy} strategy - the strategy to add\n * @throws {TypeError} if the strategy isn't defined correctly\n */\n prependStrategy : function prependStrategy(strategy){\n\n checkStrategy(strategy);\n\n this._strategies.unshift(strategy);\n },\n\n /**\n * Change the strategies\n * @param {AssetStrategy[]} strategies - the strategies\n * @throws {TypeError} if the strategy isn't defined correctly\n */\n setStrategies : function setStrategies(newStrategies){\n var self = this;\n\n this._strategies = [];\n\n //assign the strategies to the assetManager\n _.forEach(newStrategies, function(strategy){\n\n //if it's an object we add it directly\n if(_.isPlainObject(strategy)){\n assetManager.addStrategy(strategy);\n\n //if it's a function, we create the strategy with a generated name\n } else if(_.isFunction(strategy)){\n self.addStrategy({\n name : 'strategy_' + (self._strategies.length + 1),\n handle : strategy\n });\n }\n });\n },\n\n /**\n * Set context data\n * @param {String|Object} [key] - the key of the data to set or the data values if it's an object\n * @param {*} [value] - the value to set if a key is given\n */\n setData : function setData(key, value){\n if(_.isString(key) && typeof value !== 'undefined'){\n data[key] = value;\n } else if(_.isPlainObject(key)){\n data = key;\n }\n },\n\n /**\n * Get context data\n * @param {String} [key] - if we want the value of a particular key\n * @returns {Object|*} all the data or the propriety value if key is given\n */\n getData : function getData(key){\n if(_.isString(key)){\n return data[key];\n }\n return data;\n },\n\n /**\n * Resolve the given URL against the strategies\n * @param {String} url - the URL to resolve\n * @returns {String?} the resolved URL or nothing\n */\n resolve : function resolve(url){\n var resolved;\n var inputUrl;\n\n //if caching try to load the value from the cache\n if(options.cache && cache.hasOwnProperty(url)){\n return cache[url];\n }\n\n //parse the URL ?\n inputUrl = options.parseUrl ? urlUtil.parse(url) : url;\n\n //call strategies handlers, in their order until once returns something\n _.forEach(this._strategies, function(strategy){\n var result = strategy.handle(inputUrl, data);\n if(result){\n resolved = result;\n return false;\n }\n });\n\n resolved = resolved || '';\n\n if(options.cache){\n cache[url] = resolved;\n }\n\n return resolved;\n },\n\n /**\n * Resolve the given URL against the strategy identified by the given name\n * @param {String} name - the strategy name\n * @param {String} url - the URL to resolve\n * @returns {String?} the resolved URL or nothing\n */\n resolveBy : function resolveBy(name, url){\n var inputUrl;\n var resolved = '';\n var strategy = _.find(this._strategies, {name : name});\n if(strategy){\n //parse the URL ?\n inputUrl = options.parseUrl ? urlUtil.parse(url) : url;\n resolved = strategy.handle(inputUrl, data);\n }\n return resolved;\n },\n\n /**\n * When the cache is used, it could be useful to clear the cache\n */\n clearCache : function clearCache(){\n if(options.cache){\n cache = {};\n }\n }\n };\n\n assetManager.setStrategies(strategies);\n\n return assetManager;\n };\n\n return assetManagerFactory;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * Provides common strategies to resolved assets\n * that may be used by any type of items.\n *\n * @author Bertrand Chevrier \n */\ndefine('taoItems/assets/strategies',[\n 'util/url'\n], function(urlUtil){\n 'use strict';\n\n /**\n * Prepend a base to an URL\n * @param {Object} url - a parsed URL\n * @param {String} base - the base to prepend\n * @param {Boolean} [slashcat = false] - remove dots, double slashes, etc.\n * @returns {String} the URL\n */\n var prependToUrl = function prependToUrl(url, base, slashcat){\n\n //is slashcat we manage slash concact\n if(slashcat === true){\n return base.replace(/\\/$/, '') + '/' + url.directory.replace(/^\\.\\//, '').replace(/^\\//, '')\n + encodeURIComponent(url.file.replace(/^\\.\\//, '').replace(/^\\//, ''));\n }\n\n return base + url.directory.replace(/^\\.?\\//, '') + encodeURIComponent(url.file.replace(/^\\.?\\//, ''));\n };\n\n /**\n * Unrelated strategies accessible by there name.\n * Remember to not use the whole object, but each one in an array since the order matters.\n *\n * @exports taoItems/assets/strategies\n */\n var strategies = {\n\n //the baseUrl concats the baseUrl in data if the url is relative\n baseUrl : {\n name : 'baseUrl',\n handle : function handleBaseUrl(url, data){\n if(typeof data.baseUrl === 'string' && (urlUtil.isRelative(url)) ){\n return prependToUrl(url, data.baseUrl, data.slashcat);\n }\n }\n },\n\n //bust the cache for item CSS\n itemCssNoCache : {\n name : 'itemCssNoCache',\n handle : function handleItemCss(url, data){\n if(typeof data.baseUrl === 'string' && (urlUtil.isRelative(url)) && /\\.css$/.test(url.file)) {\n return urlUtil.build(prependToUrl(url, data.baseUrl, data.slashcat), { bust : Date.now() });\n }\n }\n },\n\n //absolute URL are just left intact\n external : {\n name : 'external',\n handle : function handleExternal(url){\n if(urlUtil.isAbsolute(url)){\n return url.toString();\n }\n }\n },\n\n //the base64 encoded resources are also left intact\n base64 : {\n name : 'base64',\n handle : function handleB64(url){\n if(urlUtil.isBase64(url)){\n return url.toString();\n }\n }\n },\n\n //special tao media protocol\n taomedia : {\n name : 'taomedia',\n handle : function handleTaoMedia(url, data){\n //either a baseUrl is given or if empty, taomedia resources are managed as relative resources\n var baseUrl = data.baseUrl || './';\n if( (typeof url === 'object' && url.protocol === 'taomedia') ||\n (/^taomedia:\\/\\//.test(url.toString())) ){\n return baseUrl + url.toString();\n }\n }\n }\n };\n return strategies;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/factory/factory',['lodash', 'core/promise', 'core/eventifier'], function (_, Promise, eventifier){\n 'use strict';\n\n var _requirejs = window.require;\n var _defaultLoadingOptions = {\n reload: false,\n enabledOnly : false,\n runtimeOnly : []\n };\n\n var loadModuleConfig = function loadModuleConfig(manifest){\n return new Promise(function(resolve, reject){\n var requireConfigAliases = {};\n var baseUrl;\n var reqConfigs = [];\n var modules = {};\n\n if(!manifest || !manifest.runtime){\n return reject('invalid manifest');\n }\n\n baseUrl = manifest.baseUrl;\n\n if(_.isArray(manifest.runtime.config) && manifest.runtime.config.length){\n _.forEach(manifest.runtime.config, function(pciConfig){\n if(_.isString(pciConfig)){\n reqConfigs.push('json!' + baseUrl + '/' + pciConfig);\n }else{\n if(pciConfig.data){\n modules = _.defaults(modules, pciConfig.data.paths || {});\n }else if(pciConfig.file){\n reqConfigs.push('json!' + baseUrl + '/' + pciConfig.file);\n }\n }\n });\n }\n\n require(reqConfigs, function(){\n\n var runtimeModules = {};\n\n requireConfigAliases[manifest.typeIdentifier] = baseUrl;\n\n if(manifest.model === 'IMSPCI'){\n\n modules = _.reduce(arguments, function(acc, conf){\n return _.defaults(acc, conf.paths || {});\n }, modules);\n\n _.forEach(manifest.runtime.modules || {}, function(paths, id){\n if(paths && (_.isString(paths) || (_.isArray(paths) && paths.length))){\n runtimeModules[id] = paths;\n }\n });\n\n modules = _.merge(modules, runtimeModules);\n\n _.forEach(modules, function(paths, id){\n paths = _.isArray(paths) ? paths : [paths];\n requireConfigAliases[id] = _.map(paths, function(path){\n return baseUrl+'/'+path.replace(/\\.js$/, '');\n });\n });\n }\n\n resolve(requireConfigAliases);\n\n }, reject);\n\n\n });\n };\n\n return function portableElementRegistry(methods){\n\n var _loaded = false;\n var __providers = {};\n\n return eventifier(_.defaults(methods || {}, {\n _registry : {},\n get : function get(typeIdentifier, version){\n\n if(this._registry[typeIdentifier]){\n //check version\n if(version){\n return _.find(this._registry[typeIdentifier], version);\n }else{\n //latest\n return _.last(this._registry[typeIdentifier]);\n }\n }\n },\n registerProvider : function registerProvider(moduleName){\n __providers[moduleName] = null;\n return this;\n },\n resetProviders : function resetProviders(){\n __providers = {};\n return this;\n },\n loadProviders : function loadProviders(){\n var self = this;\n return new Promise(function(resolve, reject) {\n var providerLoadingStack = [];\n _.forIn(__providers, function(provider, id){\n if(provider === null){\n providerLoadingStack.push(id);\n }\n });\n _requirejs(providerLoadingStack, function(){\n _.each([].slice.call(arguments), function(provider){\n if(provider && _.isFunction(provider.load)){\n __providers[providerLoadingStack.shift()] = provider;\n }\n });\n resolve();\n self.trigger('providersloaded');\n }, reject);\n });\n },\n getAllVersions : function getAllVersions(){\n var all = {};\n _.forIn(this._registry, function (versions, id){\n all[id] = _.map(versions, 'version');\n });\n return all;\n },\n getRuntime : function getRuntime(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci){\n return _.assign(pci.runtime, {\n id : pci.typeIdentifier,\n label : pci.label,\n baseUrl : pci.baseUrl,\n model : pci.model\n });\n }else{\n this.trigger('error', {\n message : 'no portable element runtime found',\n typeIdentifier : typeIdentifier,\n version : version\n });\n }\n },\n getCreator : function getCreator(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci && pci.creator){\n return _.assign(pci.creator, {\n id : pci.typeIdentifier,\n label : pci.label,\n baseUrl : pci.baseUrl,\n response : pci.response,\n model : pci.model,\n xmlns : pci.xmlns\n });\n }else{\n this.trigger('error', {\n message : 'no portable element runtime found',\n typeIdentifier : typeIdentifier,\n version : version\n });\n }\n },\n getBaseUrl : function getBaseUrl(typeIdentifier, version){\n var runtime = this.get(typeIdentifier, version);\n if(runtime){\n return runtime.baseUrl;\n }\n return '';\n },\n loadRuntimes : function loadRuntimes(options){\n var self = this;\n var loadPromise;\n\n options = _.defaults(options||{}, _defaultLoadingOptions);\n\n if(_loaded && !options.reload){\n loadPromise = Promise.resolve();\n } else {\n loadPromise = self.loadProviders().then(function(){\n\n var loadStack = [];\n\n _.forEach(__providers, function (provider){\n if(provider){//check that the provider is loaded\n loadStack.push(provider.load());\n }\n });\n\n //performs the loadings in parallel\n return new Promise(function(resolve, reject){\n Promise.all(loadStack).then(function (results){\n\n var configLoadingStack = [];\n\n //update registry\n self._registry = _.reduce(results, function (acc, _pcis){\n return _.merge(acc, _pcis);\n }, {});\n\n //pre-configuring the baseUrl of the portable element's source\n _.forIn(self._registry, function (versions, typeIdentifier){\n //currently use latest runtime only\n configLoadingStack.push(loadModuleConfig(self.get(typeIdentifier)));\n });\n\n return Promise.all(configLoadingStack).then(function(moduleConfigs){\n var requireConfigAliases = _.reduce(moduleConfigs, function(acc, paths){\n return _.merge(acc, paths);\n }, {});\n\n //save the required libs name => path to global require alias\n //TODO in future planned user story : change this to a local require context to solve conflicts in third party module naming\n _requirejs.config({paths : requireConfigAliases});\n\n _loaded = true;\n\n resolve();\n }).catch(function(err){\n reject('error loading module config ' + err);\n });\n });\n });\n\n });\n }\n\n loadPromise\n .then(function() {\n self.trigger('runtimesloaded');\n })\n .catch(function(err) {\n self.trigger('error', err);\n });\n\n return loadPromise;\n },\n loadCreators : function loadCreators(options){\n var loadPromise;\n var self = this;\n\n options = _.defaults(options||{}, _defaultLoadingOptions);\n\n loadPromise = self.loadRuntimes(options).then(function(){\n var requiredCreatorHooks = [];\n var requiredCreators = _.isArray(options.runtimeOnly) ? options.runtimeOnly : [];\n\n _.forIn(self._registry, function (versions, typeIdentifier){\n var pciModel = self.get(typeIdentifier);//currently use the latest version only\n if(pciModel.creator && pciModel.creator.hook && (pciModel.enabled || requiredCreators.indexOf(typeIdentifier) !== -1)){\n requiredCreatorHooks.push(pciModel.creator.hook.replace(/\\.js$/, ''));\n }\n });\n\n if(requiredCreatorHooks.length){\n return new Promise(function(resolve, reject){\n //@todo support caching?\n _requirejs(requiredCreatorHooks, function (){\n var creators = {};\n _.each(arguments, function (creatorHook){\n var id = creatorHook.getTypeIdentifier();\n var pciModel = self.get(id);\n var i = _.findIndex(self._registry[id], {version : pciModel.version});\n if(i < 0){\n self.trigger('error', 'no creator found for id/version ' + id + '/' + pciModel.version);\n }else{\n self._registry[id][i].creator.module = creatorHook;\n creators[id] = creatorHook;\n }\n });\n resolve(creators);\n }, reject);\n });\n }else{\n return Promise.resolve({});\n }\n\n });\n\n loadPromise\n .then(function(creators) {\n self.trigger('creatorsloaded', creators);\n return creators;\n })\n .catch(function(err) {\n self.trigger('error', err);\n });\n\n return loadPromise;\n },\n enable: function enable(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci){\n pci.enabled = true;\n }\n },\n disable: function disable(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci){\n pci.enabled = false;\n }\n },\n isEnabled: function isEnabled(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n return (pci && pci.enabled === true);\n }\n }));\n };\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Sam \n * @requires jquery\n * @requires lodash\n */\ndefine('taoQtiItem/qtiCreator/helper/qtiElements',['jquery', 'lodash', 'i18n'], function($, _, __){\n \"use strict\";\n\n var QtiElements = {};\n\n QtiElements.classes = {\n //abstract classes:\n 'itemBody' : {'parents' : ['bodyElement'], 'contains' : ['block'], 'abstract' : true},\n 'atomicBlock' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['inline'], 'abstract' : true},\n 'atomicInline' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic'], 'contains' : ['inline'], 'abstract' : true},\n 'simpleBlock' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['block'], 'abstract' : true},\n 'simpleInline' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic'], 'contains' : ['inline'], 'abstract' : true},\n 'flowStatic' : {'parents' : ['flow'], 'abstract' : true},\n 'blockStatic' : {'parents' : ['block'], 'abstract' : true},\n 'inlineStatic' : {'parents' : ['inline'], 'abstract' : true},\n 'flow' : {'parents' : ['objectFlow'], 'abstract' : true},\n 'tableCell' : {'parents' : ['bodyElement'], 'contains' : ['flow'], 'abstract' : true},\n //html-derived qti elements:\n 'caption' : {'parents' : ['bodyElement'], 'contains' : ['inline'], 'xhtml' : true},\n 'col' : {'parents' : ['bodyElement'], 'xhtml' : true},\n 'colgroup' : {'parents' : ['bodyElement'], 'contains' : ['col'], 'xhtml' : true},\n 'div' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['flow'], 'xhtml' : true},\n 'dl' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['dlElement'], 'xhtml' : true},\n 'dt' : {'parents' : ['dlElement'], 'contains' : ['inline'], 'xhtml' : true},\n 'dd' : {'parents' : ['dlElement'], 'contains' : ['flow'], 'xhtml' : true},\n 'hr' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'xhtml' : true},\n 'math' : {'parents' : ['blockStatic', 'flowStatic', 'inlineStatic'], 'xhtml' : true},\n 'li' : {'parents' : ['bodyElement'], 'contains' : ['flow'], 'xhtml' : true},\n 'ol' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['li'], 'xhtml' : true},\n 'ul' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['li'], 'xhtml' : true},\n 'object' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic'], 'contains' : ['objectFlow'], 'xhtml' : true},\n 'param' : {'parents' : ['objectFlow'], 'xhtml' : true},\n 'table' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody'], 'xhtml' : true},\n 'tbody' : {'parents' : ['bodyElement'], 'contains' : ['tr'], 'xhtml' : true},\n 'tfoot' : {'parents' : ['bodyElement'], 'contains' : ['tr'], 'xhtml' : true},\n 'thead' : {'parents' : ['bodyElement'], 'contains' : ['tr'], 'xhtml' : true},\n 'td' : {'parents' : ['tableCell'], 'xhtml' : true},\n 'th' : {'parents' : ['tableCell'], 'xhtml' : true},\n 'tr' : {'parents' : ['bodyElement'], 'contains' : ['tableCell'], 'xhtml' : true},\n 'a' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'abbr' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'acronym' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'b' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'big' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'cite' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'code' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'dfn' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'em' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'i' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'kbd' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'q' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'samp' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'small' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'span' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'strong' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'sub' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'sup' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'tt' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'var' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'blockquote' : {'parents' : ['simpleBlock'], 'xhtml' : true},\n 'address' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h1' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h2' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h3' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h4' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h5' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h6' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'p' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'pre' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'img' : {'parents' : ['atomicInline'], 'xhtml' : true, attributes : ['src', 'alt', 'longdesc', 'height', 'width']},\n 'br' : {'parents' : ['atomicInline'], 'xhtml' : true},\n //qti elements:\n 'infoControl' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'qti' : true},\n 'textRun' : {'parents' : ['inlineStatic', 'flowstatic'], 'qti' : true},\n 'feedbackInline' : {'parents' : ['simpleInline', 'feedbackElement'], 'qti' : true},\n 'feedbackBlock' : {'parents' : ['simpleBlock'], 'qti' : true},\n 'rubricBlock' : {'parents' : ['simpleBlock'], 'qti' : true}, //strange qti 2.1 exception, marked as simpleBlock instead of\n 'blockInteraction' : {'parents' : ['block', 'flow', 'interaction'], 'qti' : true},\n 'inlineInteraction' : {'parents' : ['inline', 'flow', 'interaction'], 'qti' : true},\n 'gap' : {'parents' : ['inlineStatic'], 'qti' : true},\n 'hottext' : {'parents' : ['flowstatic', 'inlineStatic'], 'contains' : ['inlineStatic'], 'qti' : true},\n 'printedVariable' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic', 'textOrVariable'], 'qti' : true},\n 'prompt' : {'parents' : ['bodyElement'], 'contains' : ['inlineStatic'], 'qti' : true},\n 'templateElement' : {'parents' : ['bodyElement'], 'qti' : true},\n 'templateBlock' : {'parents' : ['blockStatic', 'flowStatic', 'templateElement'], 'contains' : ['blockStatic'], 'qti' : true},\n 'templateInline' : {'parents' : ['inlineStatic', 'flowStatic', 'templateElement'], 'contains' : ['inlineStatic'], 'qti' : true},\n 'choiceInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'associateInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'orderInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'matchInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'hottextInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'gapMatchInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'mediaInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'sliderInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'uploadInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'drawingInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'graphicInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'hotspotInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'graphicAssociateInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'graphicOrderInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'graphicGapMatchInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'selectPointInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'textEntryInteraction' : {'parents' : ['stringInteraction', 'inlineInteraction'], 'qti' : true},\n 'extendedTextInteraction' : {'parents' : ['stringInteraction', 'blockInteraction'], 'qti' : true},\n 'inlineChoiceInteraction' : {'parents' : ['inlineInteraction'], 'qti' : true},\n 'endAttemptInteraction' : {'parents' : ['inlineInteraction'], 'qti' : true},\n 'customInteraction' : {'parents' : ['block', 'flow', 'interaction'], 'qti' : true},\n '_container' : {'parents' : ['block'], 'qti' : true}//a pseudo class introduced in TAO\n };\n\n QtiElements.cache = {containable : {}, children : {}, parents : {}};\n\n QtiElements.getAllowedContainersElements = function(qtiClass, $container){\n var classes = QtiElements.getAllowedContainers(qtiClass);\n var jqSelector = '';\n for(var i in classes){\n if(!classes[i].qti){\n //html element:\n jqSelector += classes[i] + ', ';\n }\n }\n\n if(jqSelector){\n jqSelector = jqSelector.substring(0, jqSelector.length - 2);\n }\n\n return $(jqSelector, $container ? $container : $(document)).filter(':not([data-qti-type])');\n };\n\n QtiElements.getAllowedContainers = function(qtiClass){\n var ret;\n if(QtiElements.cache.containable[qtiClass]){\n ret = QtiElements.cache.containable[qtiClass];\n }else{\n ret = [];\n var parents = QtiElements.getParentClasses(qtiClass, true);\n for(var aClass in QtiElements.classes){\n var model = QtiElements.classes[aClass];\n if(model.contains){\n var intersect = _.intersection(model.contains, parents);\n if(intersect.length){\n if(!model.abstract){\n ret.push(aClass);\n }\n ret = _.union(ret, QtiElements.getChildClasses(aClass, true));\n }\n }\n }\n QtiElements.cache.containable[qtiClass] = ret;\n }\n\n return ret;\n };\n\n QtiElements.getAllowedContents = function(qtiClass, recursive, checked){\n\n var ret = [];\n checked = checked || {};\n\n var model = QtiElements.classes[qtiClass];\n if(model && model.contains){\n for(var i in model.contains){\n var contain = model.contains[i];\n if(!checked[contain]){\n checked[contain] = true;\n\n //qtiClass can contain everything defined as its contents\n ret.push(contain);\n\n //qtiClass can also contain subclass of its contents\n var children = QtiElements.getChildClasses(contain, true);\n for(var i in children){\n var child = children[i];\n if(!checked[child]){\n checked[child] = true;\n\n ret.push(child);\n\n //adding children allowed contents depends on the option \"recursive\"\n if(recursive){\n ret = _.union(ret, QtiElements.getAllowedContents(child, true, checked));\n }\n }\n }\n\n //adding allowed contents of qtiClass' allowed contents depends on the option \"recursive\"\n if(recursive){\n ret = _.union(ret, QtiElements.getAllowedContents(contain, true, checked));\n }\n\n }\n }\n }\n\n //qtiClass can contain all allowed contents of its parents:\n var parents = QtiElements.getParentClasses(qtiClass, true);\n for(var i in parents){\n ret = _.union(ret, QtiElements.getAllowedContents(parents[i], recursive, checked));\n }\n\n return _.uniq(ret, false);\n };\n\n QtiElements.isAllowedClass = function(qtiContainerClass, qtiContentClass){\n var allowedClasses = QtiElements.getAllowedContents(qtiContainerClass);\n return (_.indexOf(allowedClasses, qtiContentClass) >= 0);\n };\n\n QtiElements.getParentClasses = function(qtiClass, recursive){\n var ret;\n if(recursive && QtiElements.cache.parents[qtiClass]){\n ret = QtiElements.cache.parents[qtiClass];\n }else{\n ret = [];\n if(QtiElements.classes[qtiClass]){\n ret = QtiElements.classes[qtiClass].parents;\n if(recursive){\n for(var i in ret){\n ret = _.union(ret, QtiElements.getParentClasses(ret[i], recursive));\n }\n ret = _.uniq(ret, false);\n }\n }\n QtiElements.cache.parents[qtiClass] = ret;\n }\n\n return ret;\n };\n\n QtiElements.getChildClasses = function(qtiClass, recursive, type){\n var ret;\n var cacheType = type ? type : 'all';\n if(recursive && QtiElements.cache.children[qtiClass] && QtiElements.cache.children[qtiClass][cacheType]){\n ret = QtiElements.cache.children[qtiClass][cacheType];\n }else{\n ret = [];\n for(var aClass in QtiElements.classes){\n var model = QtiElements.classes[aClass];\n if(_.indexOf(model.parents, qtiClass) >= 0){\n if(type){\n if(model[type]){\n ret.push(aClass);\n }\n }else{\n ret.push(aClass);\n }\n if(recursive){\n ret = _.union(ret, QtiElements.getChildClasses(aClass, recursive, type));\n }\n }\n }\n if(!QtiElements.cache.children[qtiClass]){\n QtiElements.cache.children[qtiClass] = {};\n }\n QtiElements.cache.children[qtiClass][cacheType] = ret;\n }\n\n return ret;\n };\n\n QtiElements.isBlock = function(qtiClass){\n return QtiElements.is(qtiClass, 'block');\n };\n\n QtiElements.isInline = function(qtiClass){\n return QtiElements.is(qtiClass, 'inline');\n };\n\n QtiElements.is = function(qtiClass, topClass){\n if(qtiClass === topClass){\n return true;\n }else{\n var parents = QtiElements.getParentClasses(qtiClass, true);\n return (_.indexOf(parents, topClass) >= 0);\n }\n };\n\n QtiElements.getAvailableAuthoringElements = function(){\n\n return {\n choiceInteraction : {\n label : __('Choice Interaction'),\n description : __('Select a single (radio buttons) or multiple (check boxes) responses among a set of choices.'),\n icon : 'icon-choice',\n short : __('Choice'),\n qtiClass : 'choiceInteraction',\n tags:['Common Interactions', 'mcq']\n },\n orderInteraction : {\n label : __('Order Interaction'),\n icon : 'icon-order',\n description : __('Arrange a list of choices in the correct order.'),\n short : __('Order'),\n qtiClass : 'orderInteraction',\n tags:['Common Interactions', 'ordering']\n },\n associateInteraction : {\n label : __('Associate Interaction'),\n icon : 'icon-associate',\n description : __('Create pair(s) from a series of choices.'),\n short : __('Associate'),\n qtiClass : 'associateInteraction',\n tags:['Common Interactions', 'association']\n },\n matchInteraction : {\n label : __('Match Interaction'),\n icon : 'icon-match',\n description : __('Create association(s) between two sets of choices displayed in a table (row and column).'),\n short : __('Match'),\n qtiClass : 'matchInteraction',\n tags:['Common Interactions', 'association']\n },\n hottextInteraction : {\n label : __('Hottext Interaction'),\n icon : 'icon-hottext',\n description : __('Select one or more text parts (hottext) within a text.'),\n short : __('Hottext'),\n qtiClass : 'hottextInteraction',\n tags:['Common Interactions', 'text']\n },\n gapMatchInteraction : {\n label : __('Gap Match Interaction'),\n icon : 'icon-gap-match',\n description : __(' Fill in the gaps in a text from a set of choices.'),\n short : __('Gap Match'),\n qtiClass : 'gapMatchInteraction',\n tags:['Common Interactions', 'text', 'association']\n },\n sliderInteraction : {\n label : __('Slider Interaction'),\n icon : 'icon-slider',\n description :__('Select a value within a numerical range.'),\n short : __('Slider'),\n qtiClass : 'sliderInteraction',\n tags:['Common Interactions', 'special']\n },\n extendedTextInteraction : {\n label : __('Extended Text Interaction'),\n icon : 'icon-extended-text',\n description : __('Collect open-ended information in one or more text area(s) (strings or numeric values).'),\n short : __('Extended Text'),\n qtiClass : 'extendedTextInteraction',\n tags:['Common Interactions', 'text']\n },\n uploadInteraction : {\n label : __('File Upload Interaction'),\n icon : 'icon-upload',\n description : __('Upload a file (e.g. document, picture...) as a response.'),\n short : __('File Upload'),\n qtiClass : 'uploadInteraction',\n tags:['Common Interactions', 'special']\n },\n mediaInteraction : {\n label : __('Media Interaction'),\n icon : 'icon-media',\n description : __('Control the playing parameters (auto-start, loop) of a video or audio file and report the number of time it has been played.'),\n short : __('Media'),\n qtiClass : 'mediaInteraction',\n tags:['Common Interactions', 'media']\n },\n _container : {\n label : __('Text Block'),\n icon : 'icon-font',\n description : __('Block contains the content (stimulus) of the item such as text or image. It is also required for Inline Interactions.'),\n short : __('Block'),\n qtiClass : '_container',\n tags:['Inline Interactions', 'text']\n },\n inlineChoiceInteraction : {\n label : __('Inline Choice Interaction'),\n icon : 'icon-inline-choice',\n description : __('Select a choice from a drop-down list.'),\n short : __('Inline Choice'),\n qtiClass : 'inlineChoiceInteraction',\n tags:['Inline Interactions', 'inline-interactions', 'mcq']\n },\n textEntryInteraction : {\n label : __('Text Entry Interaction'),\n icon : 'icon-text-entry',\n description : __('Collect open-ended information in a short text input (strings or numeric values).'),\n short : __('Text Entry'),\n qtiClass : 'textEntryInteraction',\n tags:['Inline Interactions', 'inline-interactions', 'text']\n },\n endAttemptInteraction : {\n label : __('End Attempt Interaction'),\n icon : 'icon-end-attempt',\n description : __('Trigger the end of the item attempt.'),\n short : __('End Attempt'),\n qtiClass : 'endAttemptInteraction',\n tags:['Inline Interactions', 'inline-interactions', 'button', 'submit']\n },\n hotspotInteraction : {\n label : __('Hotspot Interaction'),\n icon : 'icon-hotspot',\n description : __('Select one or more areas (hotspots) displayed on an picture.'),\n short : __('Hotspot'),\n qtiClass : 'hotspotInteraction',\n tags:['Graphic Interactions', 'mcq']\n },\n graphicOrderInteraction : {\n label : __('Graphic Order Interaction'),\n icon : 'icon-graphic-order',\n description : __('Order the areas (hotspots) displayed on a picture.'),\n short : __('Order'),\n qtiClass : 'graphicOrderInteraction',\n tags:['Graphic Interactions', 'ordering']\n },\n graphicAssociateInteraction : {\n label : __('Graphic Associate Interaction'),\n icon : 'icon-graphic-associate',\n description : __('Create association(s) between areas (hotspots) displayed on a picture.'),\n short : __('Associate'),\n qtiClass : 'graphicAssociateInteraction',\n tags:['Graphic Interactions', 'association']\n },\n graphicGapMatchInteraction : {\n label : __('Graphic Gap Match Interaction'),\n icon : 'icon-graphic-gap',\n description : __('Fill in the gaps on a picture with a set of image choices.'),\n short : __('Gap Match'),\n qtiClass : 'graphicGapMatchInteraction',\n tags:['Graphic Interactions', 'association']\n },\n selectPointInteraction : {\n label : __('Select Point Interaction'),\n icon : 'icon-select-point',\n description : __('Position one or more points on a picture (response areas are not displayed).'),\n short : __('Select Point'),\n qtiClass : 'selectPointInteraction',\n tags:['Graphic Interactions']\n }\n };\n };\n\n return QtiElements;\n\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/factory/ciRegistry',[\n 'lodash',\n 'taoQtiItem/portableElementRegistry/factory/factory',\n 'taoQtiItem/qtiCreator/helper/qtiElements'\n], function (_, portableElementRegistry, qtiElements){\n 'use strict';\n\n /**\n * Create a ney interaction registry instance\n * interaction registry need to register newly loaded creator hooks in the list of available qti authoring elements\n *\n * @returns {Object} registry instance\n */\n return function customInteractionRegistry(){\n\n return portableElementRegistry({\n getAuthoringData : function getAuthoringData(typeIdentifier, options){\n var pciModel;\n options = _.defaults(options || {}, {version : 0, enabledOnly : false});\n pciModel = this.get(typeIdentifier, options.version);\n if(pciModel && pciModel.creator && pciModel.creator.hook && pciModel.creator.icon && (pciModel.enabled || !options.enabledOnly)){\n return {\n label : pciModel.label, //currently no translation available\n icon : pciModel.creator.icon.replace(new RegExp('^' + typeIdentifier + '\\/'), pciModel.baseUrl),\n short : pciModel.short,\n description : pciModel.description,\n qtiClass : 'customInteraction.' + pciModel.typeIdentifier, //custom interaction is block type\n tags : _.union(['Custom Interactions'], pciModel.tags)\n };\n }\n }\n }).on('creatorsloaded', function(creators){\n _.each(creators, function(creator){\n qtiElements.classes['customInteraction.' + creator.getTypeIdentifier()] = {parents : ['customInteraction'], qti : true};\n });\n });\n };\n\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/ciRegistry',['lodash', 'taoQtiItem/portableElementRegistry/factory/ciRegistry', 'module'], function (_, ciRegistry, module){\n 'use strict';\n\n //create a preregistered singleton of ciRegistry\n var registry = ciRegistry();\n var providers = [];\n var config = module.config();\n\n if(config && config.providers){\n providers = config.providers;\n }\n\n _.each(providers, function(provider){\n if(provider.name && provider.module){\n registry.registerProvider(provider.module);\n }\n });\n\n return registry;\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/factory/icRegistry',[\n 'lodash',\n 'taoQtiItem/portableElementRegistry/factory/factory'\n], function (_, portableElementRegistry){\n 'use strict';\n\n /**\n * Info control registry has currently no additonal fonctionalities than the basic portable element registry\n *\n * @returns {Object} registry instance\n */\n return function infoControlRegistry(){\n return portableElementRegistry();\n }\n\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/icRegistry',['lodash', 'taoQtiItem/portableElementRegistry/factory/icRegistry', 'module'], function (_, icRegistry, module){\n 'use strict';\n\n //create a preregistered singleton of icRegistry\n var registry = icRegistry();\n var providers = [];\n var config = module.config();\n\n if(config && config.providers){\n providers = config.providers;\n }\n\n _.each(providers, function(provider){\n if(provider.name && provider.module){\n registry.registerProvider(provider.module);\n }\n });\n\n return registry;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n */\n\ndefine('taoQtiItem/portableElementRegistry/assetManager/portableAssetStrategy',[\n 'taoQtiItem/portableElementRegistry/ciRegistry',\n 'taoQtiItem/portableElementRegistry/icRegistry'\n], function (ciRegistry, icRegistry) {\n 'use strict';\n\n function getBaseUrlByIdentifier(typeIdentifier) {\n if (ciRegistry.get(typeIdentifier)) {\n return ciRegistry.getBaseUrl(typeIdentifier);\n }\n if (icRegistry.get(typeIdentifier)) {\n return icRegistry.getBaseUrl(typeIdentifier);\n }\n return typeIdentifier;\n }\n\n //strategy to resolve portable info control and portable interactions paths.\n //It should never be reached in the stack the usual way and should be called only using resolveBy.\n return {\n name: 'portableElementLocation',\n handle: function handlePortableElementLocation(url) {\n\n if (url.file === url.path) {\n return getBaseUrlByIdentifier(url.file);\n } else if (url.source === url.relative) {\n return url.relative.replace(/^(\\.\\/)?([a-z_0-9]+)\\/(.*)/i, function (fullmatch, $1, typeIdentifier, relPath) {\n var runtimeLocation = getBaseUrlByIdentifier(typeIdentifier);\n if (runtimeLocation) {\n return runtimeLocation + '/' + relPath;\n }\n return fullmatch;\n });\n }\n }\n };\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA;\n */\n\ndefine('taoQtiItem/qtiCommonRenderer/renderers/config',[\n 'lodash',\n 'context',\n 'ui/themes',\n 'taoItems/assets/manager',\n 'taoItems/assets/strategies',\n 'module',\n 'taoQtiItem/portableElementRegistry/assetManager/portableAssetStrategy'\n], function(_, context, themes, assetManagerFactory, assetStrategies, module, portableAssetStrategy){\n 'use strict';\n\n var itemThemes = themes.get('items');\n var moduleConfig = module.config();\n\n //Create asset manager stack\n var assetManager = assetManagerFactory([\n {\n name : 'theme',\n handle : function handleTheme(url){\n if(itemThemes && url.path && (url.path === itemThemes.base || _.contains(_.pluck(itemThemes.available, 'path'), url.path))){\n return context.root_url + url.toString();\n }\n }\n },\n assetStrategies.taomedia,\n assetStrategies.external,\n assetStrategies.base64,\n assetStrategies.itemCssNoCache,\n assetStrategies.baseUrl,\n portableAssetStrategy\n ], {baseUrl : ''});//baseUrl is not predefined in the config, but should be set upon renderer instantiating\n\n //renderers locations\n var locations = {\n 'assessmentItem' : 'taoQtiItem/qtiCommonRenderer/renderers/Item',\n '_container' : 'taoQtiItem/qtiCommonRenderer/renderers/Container',\n '_simpleFeedbackRule' : false,\n '_tooltip' : 'taoQtiItem/qtiCommonRenderer/renderers/Tooltip',\n 'stylesheet' : 'taoQtiItem/qtiCommonRenderer/renderers/Stylesheet',\n 'outcomeDeclaration' : false,\n 'responseDeclaration' : false,\n 'responseProcessing' : false,\n 'img' : 'taoQtiItem/qtiCommonRenderer/renderers/Img',\n 'math' : 'taoQtiItem/qtiCommonRenderer/renderers/Math',\n 'object' : 'taoQtiItem/qtiCommonRenderer/renderers/Object',\n 'table' : 'taoQtiItem/qtiCommonRenderer/renderers/Table',\n 'printedVariable' : 'taoQtiItem/qtiCommonRenderer/renderers/PrintedVariable',\n 'rubricBlock' : 'taoQtiItem/qtiCommonRenderer/renderers/RubricBlock',\n 'modalFeedback' : 'taoQtiItem/qtiCommonRenderer/renderers/ModalFeedback',\n 'prompt' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/Prompt',\n 'choiceInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/ChoiceInteraction',\n 'extendedTextInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/ExtendedTextInteraction',\n 'orderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/OrderInteraction',\n 'associateInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/AssociateInteraction',\n 'matchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/MatchInteraction',\n 'textEntryInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/TextEntryInteraction',\n 'sliderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/SliderInteraction',\n 'inlineChoiceInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/InlineChoiceInteraction',\n 'simpleChoice.choiceInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleChoice.ChoiceInteraction',\n 'simpleChoice.orderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleChoice.OrderInteraction',\n 'hottext' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/Hottext',\n 'gap' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/Gap',\n 'gapText' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/GapText',\n 'simpleAssociableChoice.matchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleAssociableChoice.MatchInteraction',\n 'simpleAssociableChoice.associateInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleAssociableChoice.AssociateInteraction',\n 'inlineChoice' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/InlineChoice',\n 'hottextInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/HottextInteraction',\n 'hotspotInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/HotspotInteraction',\n 'hotspotChoice' : false,\n 'gapMatchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GapMatchInteraction',\n 'selectPointInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/SelectPointInteraction',\n 'graphicOrderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GraphicOrderInteraction',\n 'mediaInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/MediaInteraction',\n 'uploadInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/UploadInteraction',\n 'graphicGapMatchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GraphicGapMatchInteraction',\n 'gapImg' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/GapImg',\n 'graphicAssociateInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GraphicAssociateInteraction',\n 'associableHotspot' : false,\n 'customInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/PortableCustomInteraction',\n 'infoControl' : 'taoQtiItem/qtiCommonRenderer/renderers/PortableInfoControl',\n 'include' : 'taoQtiItem/qtiCommonRenderer/renderers/Include',\n 'endAttemptInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/EndAttemptInteraction'\n };\n\n return {\n name:'commonRenderer',\n locations: locations,\n options: {\n assetManager: assetManager,\n themes : itemThemes,\n enableDragAndDrop: {\n associate: !!moduleConfig.associateDragAndDrop,\n gapMatch: !!moduleConfig.gapMatchDragAndDrop,\n graphicGapMatch: !!moduleConfig.graphicGapMatchDragAndDrop,\n order: !!moduleConfig.orderDragAndDrop\n },\n messages : moduleConfig.messages\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA;\n */\n\n/**\n * Define the Qti Item Common Renderer\n */\ndefine('taoQtiItem/qtiCommonRenderer/renderers/Renderer',[\n 'taoQtiItem/qtiRunner/core/Renderer',\n 'taoQtiItem/qtiCommonRenderer/renderers/config'\n], function(Renderer, config){\n 'use strict';\n\n return Renderer.build(config.locations, config.name, config.options);\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/getConfig',['lodash'], function (_) {\n 'use strict';\n\n /**\n * Gets a config set\n * @param {Object} [config]\n * @param {Object} [defaults]\n * @returns {Object}\n */\n return function getConfig(config, defaults) {\n return _(config || {})\n .omit(function (value) {\n return value === null || typeof value === 'undefined';\n })\n .defaults(defaults || {})\n .value();\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/getLabels',['lodash'], function (_) {\n 'use strict';\n\n /**\n * Gets the list of messages related to a particular level.\n * The level is provided as a numeric value, starting from 1.\n * @param {Array|Object} messages - The list of messages for all levels.\n * If only one object is provided is will be wrapped into an array\n * @param {Number|String} level - The level for which filter the messages.\n * It should be comprised within the available indexes.\n * Higher levels will be reduced to the higher available,\n * lower levels will be increased to the lowest.\n * @returns {Object}\n */\n return function getLabels(messages, level) {\n messages = messages || {};\n\n if (!_.isArray(messages)) {\n messages = [messages];\n }\n\n // Compute the level value that targets which list of labels to use.\n // It should be comprised within the available indexes.\n // Higher levels will be reduced to the higher available, lower levels will be increased to the lowest.\n level = Math.min(Math.max(parseInt(level, 10) || 0, 1), messages.length || 1) - 1;\n\n return messages[level] || {};\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n * @author dieter \n */\ndefine('taoClientDiagnostic/tools/getStatus',['lodash'], function (_) {\n 'use strict';\n\n /**\n * Gets the correct status message for a given percentage from a list of thresholds.\n * @param {Number|String} percentage - The actual percentage. Must be comprised between 0 and 100.\n * Other values will be adjusted to fit the interval.\n * @param {Array|Object} [thresholds] - A list of descriptors for each thresholds.\n * A threshold field must be provided for each.\n * @returns {Object} Returns the corresponding threshold, or an empty object if none match.\n */\n return function getStatus(percentage, thresholds) {\n // need a structure compatible with the handlebars template\n var status = {\n // the percentage is between 0 and 100 and obviously must be a number\n percentage: Math.max(0, Math.min(100, Math.round(parseInt(percentage, 10) || 0))),\n quality: {}\n };\n var len, feedback, i, step;\n\n // grab a feedback related to the percentage in the thresholds list\n if (thresholds) {\n if (!_.isArray(thresholds)) {\n thresholds = [thresholds];\n }\n\n len = thresholds.length;\n for (i = 0; i < len; i++) {\n step = thresholds[i];\n if (step && (!step.threshold || status.percentage >= step.threshold)) {\n feedback = step;\n } else {\n break;\n }\n }\n\n if (feedback) {\n status.feedback = _.clone(feedback);\n }\n }\n\n return status;\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/performances/tester',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'async',\n 'context',\n 'helpers',\n 'taoClientDiagnostic/tools/stats',\n 'taoQtiItem/qtiItem/core/Loader',\n 'taoQtiItem/qtiCommonRenderer/renderers/Renderer',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getStatus'\n], function($, _, __, async, context, helpers, stats, Loader, Renderer, getConfig, getLabels, getStatus) {\n 'use strict';\n\n /**\n * Duration of one second (in milliseconds)\n * @type {Number}\n * @private\n */\n var _second = 1000;\n\n /**\n * Default timeout duration\n * @type {Number}\n * @private\n */\n var _defaultTimeout = 30 * _second;\n\n /**\n * Default number of renderings by samples\n * @type {Number}\n * @private\n */\n var _defaultOccurrencesCount = 10;\n\n /**\n * List of default samples\n * @type {Array}\n */\n var _defaultSamples = [\n 'taoClientDiagnostic/tools/performances/data/sample1/',\n 'taoClientDiagnostic/tools/performances/data/sample2/',\n 'taoClientDiagnostic/tools/performances/data/sample3/'\n ];\n\n /**\n * Default values for the performances tester\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'performances',\n\n // The threshold for optimal performances\n optimal: 0.025,\n\n // The threshold for minimal performances\n threshold: 0.25\n };\n\n /**\n * A list of thresholds for performances check\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Very slow performances'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Average performances'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Good performances'),\n type: 'success'\n }];\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Workstation performances'),\n status: __('Checking the performances...'),\n performancesMin: __('Minimum rendering time'),\n performancesMax: __('Maximum rendering time'),\n performancesAverage: __('Average rendering time')\n }\n ];\n\n /**\n * Base text used to build sample identifiers\n * @type {String}\n * @private\n */\n var _sampleBaseId = 'sample';\n\n /**\n * Loads a page inside a div and compute the time to load\n * @param {Object} data The descriptor of the page to load\n * @param {Function} done A callback function called to provide the result\n */\n function loadItem(data, done){\n\n //item location config\n var qtiJsonFile = data.url + 'qti.json';\n var urlTokens = data.url.split('/');\n var extension = urlTokens[0];\n var fullpath = require.s.contexts._.config.paths[extension];\n var baseUrl = data.url.replace(extension, fullpath);\n var loader = new Loader();\n var renderer = new Renderer({\n baseUrl : baseUrl // compatibility mode for legacy installations\n });\n\n // check needed by compatibility mode for legacy installations\n if (renderer.getAssetManager) {\n renderer.getAssetManager().setData('baseUrl', baseUrl);\n }\n\n require(['json!'+qtiJsonFile], function(itemData){\n\n loader.loadItemData(itemData, function(item){\n renderer.load(function(){\n\n var $container,\n duration,\n start,\n end,\n result;\n\n //start right before rendering\n start = window.performance.now();\n\n //set renderer\n item.setRenderer(this);\n\n //render markup\n $container = $('
    ').appendTo('body');\n $container.append(item.render());\n\n //execute javascript\n item.postRender();\n\n //remove item\n $container.remove();\n\n //done\n end = window.performance.now();\n\n duration = (end - start) / _second;\n\n result = {\n id : data.id,\n url : data.url,\n duration: duration\n };\n\n done(null, result);\n\n }, this.getLoadedClasses());\n });\n\n });\n\n }\n\n /**\n * Performs a browser performances test by running a heavy page\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {Number} [config.optimal] - The threshold for optimal performances\n * @param {Number} [config.threshold] - The threshold for minimal performances\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function performancesTester(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n var idx = 0;\n var _samples = _.map(!_.isEmpty(initConfig.samples) && initConfig.samples || _defaultSamples, function(sample) {\n idx ++;\n return {\n id : _sampleBaseId + idx,\n url : sample,\n timeout : initConfig.timeout * 1000 || _defaultTimeout,\n nb : initConfig.occurrences || _defaultOccurrencesCount\n };\n });\n\n // add one occurrence on the first sample to obfuscate the time needed to load the runner\n _samples[0].nb ++;\n\n return {\n /**\n * Performs a performances test, then call a function to provide the result\n * @param {Function} done\n */\n start: function start(done) {\n var tests = [];\n var self = this;\n\n _.forEach(_samples, function(data) {\n var cb = _.partial(loadItem, data);\n var iterations = data.nb || 1;\n while (iterations --) {\n tests.push(cb);\n }\n });\n\n async.series(tests, function(err, measures) {\n var decimals = 2;\n var results;\n var status;\n var summary;\n\n if(err && !measures.length){\n //something went wrong\n throw err;\n }\n\n // remove the first result to obfuscate the time needed to load the runner\n measures.shift();\n\n results = stats(measures, 'duration', decimals);\n status = self.getFeedback(results.average);\n summary = self.getSummary(results);\n\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n return {\n performancesMin: {message: labels.performancesMin, value: results.min + ' s'},\n performancesMax: {message: labels.performancesMax, value: results.max + ' s'},\n performancesAverage: {message: labels.performancesAverage, value: results.average + ' s'}\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result) {\n var optimal = initConfig.optimal;\n var range = Math.abs(optimal - (initConfig.threshold));\n var status = getStatus((range + optimal - result) / range * 100, _thresholds);\n\n status.title = labels.title;\n status.id = initConfig.id;\n return status;\n }\n };\n }\n\n return performancesTester;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2017 (original work) Open Assessment Technologies SA ;\n */\ndefine('taoClientDiagnostic/tools/bandwidth/tester',[\n 'lodash',\n 'i18n',\n 'async',\n 'context',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/stats',\n 'taoClientDiagnostic/tools/fixedDecimals',\n 'taoClientDiagnostic/tools/getStatus'\n], function(_, __, async, context, getConfig, getLabels, stats, fixedDecimals, getStatus) {\n 'use strict';\n\n /**\n * A binary kilo bytes (KiB)\n * @type {Number}\n * @private\n */\n var _kilo = 1024;\n\n /**\n * A binary mega bytes (MiB)\n * @type {Number}\n * @private\n */\n var _mega = _kilo * _kilo;\n\n /**\n * Duration of one second (in milliseconds)\n * @type {Number}\n * @private\n */\n var _second = 1000;\n\n\n /**\n * Default values for the bandwidth tester\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'bandwidth',\n\n // The typical bandwidth needed for a test taker (Mbps)\n unit: 0.16,\n\n // The thresholds for optimal bandwidth\n ideal: 45,\n\n // Maximum number of test takers to display\n max: 100\n };\n\n /**\n * A list of thresholds for bandwidth check\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Low bandwidth'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Average bandwidth'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Good bandwidth'),\n type: 'success'\n }];\n\n /**\n * List of descriptors defining the data sets to download.\n * - file : path of the file containing the test data\n * - size : the given size of the file\n * - timeout : the timeout for the download\n * - threshold : a bandwidth threshold above which the data set can be downloaded to evaluate a more accurate value\n * - nb : number of download iterations\n * @type {Object}\n */\n var _downloadData = {\n \"10KB\" : {\n id : '10KB',\n file : 'data/bin10KB.data',\n size : 10 * _kilo,\n timeout : _second,\n threshold : 0,\n nb : 10\n },\n \"100KB\" : {\n id : '100KB',\n file : 'data/bin100KB.data',\n size : 100 * _kilo,\n timeout : 2 * _second,\n threshold : 0,\n nb : 5\n },\n \"1MB\" : {\n id : '1MB',\n file : 'data/bin1MB.data',\n size : _mega,\n timeout : 20 * _second,\n threshold : 0,\n nb : 3\n }\n };\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Bandwidth'),\n status: __('Checking the bandwidth...'),\n legend: __('Number of simultaneous test takers the connection can handle'),\n bandwidthMin: __('Minimum bandwidth'),\n bandwidthMax: __('Maximum bandwidth'),\n bandwidthAverage: __('Average bandwidth')\n },\n // level 2\n {\n title: __('Media intensive bandwidth'),\n status: __('Checking the media intensive bandwidth...'),\n legend: __('Number of simultaneous test takers the connection can handle with media intensive'),\n bandwidthMin: __('Minimum intensive bandwidth'),\n bandwidthMax: __('Maximum intensive bandwidth'),\n bandwidthAverage: __('Average intensive bandwidth')\n }\n ];\n\n /**\n * Download a data set as described by the provided descriptor and compute the duration.\n * @param {Object} data The data set descriptor to use for download\n * @param {Function} cb A callback function called at the end of the download.\n * This callback is also called if a timeout breaks the download;\n */\n function download(data, cb) {\n var self = this;\n var start, end;\n var timeoutId;\n var url;\n var request;\n\n if (data.threshold && this.bandwidth < data.threshold) {\n return cb('threshold');\n }\n\n url = context.base_www + 'js/tools/bandwidth/' + data.file + '?' + Date.now();\n request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.setRequestHeader('Accept', 'application/octet-stream');\n\n request.onload = function onRequestLoad () {\n var duration;\n var bytes;\n var seconds;\n var speed;\n\n end = window.performance.now();\n clearTimeout(timeoutId);\n\n duration = end - start;\n bytes = data.size;\n seconds = duration / _second;\n\n // speed in Mbps\n speed = ((bytes * 8) / seconds) / _mega;\n\n self.bandwidth = Math.max(self.bandwidth, speed);\n\n return cb(null, {\n id : data.id,\n file : data.file,\n size : data.size,\n duration : duration,\n speed : speed\n });\n };\n request.onerror = function onRequestError (err) {\n clearTimeout(timeoutId);\n cb(err);\n };\n\n timeoutId = _.delay(cb, data.timeout, 'timeout');\n start = window.performance.now();\n request.send();\n }\n\n /**\n * Performs a bandwidth test by downloading a bunch of data sets with different sizes\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {Number} [config.unit] - The typical bandwidth needed for a test taker (Mbps)\n * @param {Number} [config.ideal] - The thresholds for optimal bandwidth\n * @param {Number} [config.max] - Maximum number of test takers to display\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function bandwidthTester (config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs a bandwidth test, then call a function to provide the result\n * @param {Function} done\n */\n start : function start(done) {\n var self = this;\n var tests = [];\n\n _.forEach(_downloadData, function(data) {\n var cb = _.bind(download, self, data);\n var iterations = data.nb || 1;\n while (iterations --) {\n tests.push(cb);\n }\n });\n\n this.bandwidth = 0;\n\n async.series(tests, function(err, measures) {\n var duration = 0;\n var size = 0;\n var decimals = 2;\n var results;\n var summary;\n var status;\n\n function getValue(value) {\n var speed = 0;\n\n if (value) {\n duration += value.duration;\n size += value.size;\n\n speed = value.speed;\n value.speed = fixedDecimals(speed, decimals);\n }\n\n return speed;\n }\n\n if (err && !measures.length) {\n //something went wrong\n throw err;\n }\n\n results = stats(measures, getValue, decimals);\n\n results.duration = fixedDecimals(duration / _second, decimals);\n results.size = size;\n\n summary = self.getSummary(results);\n status = self.getFeedback(results.max);\n\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n return {\n bandwidthMin: {message: labels.bandwidthMin, value: results.min + ' Mbps'},\n bandwidthMax: {message: labels.bandwidthMax, value: results.max + ' Mbps'},\n bandwidthAverage: {message: labels.bandwidthAverage, value: results.average + ' Mbps'}\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result) {\n var bandwidthUnit = initConfig.unit;\n var threshold = initConfig.ideal;\n var maxTestTakers = initConfig.max;\n var max = threshold * bandwidthUnit;\n var status = getStatus(result / max * 100, _thresholds);\n var nb = Math.floor(result / bandwidthUnit);\n\n if (nb > maxTestTakers) {\n nb = '>' + maxTestTakers;\n }\n\n status.id = initConfig.id;\n status.title = labels.title;\n status.feedback.legend = labels.legend;\n status.quality.label = nb;\n\n if (nb.toString().length > 2) {\n status.quality.wide = true;\n }\n\n return status;\n }\n };\n }\n\n return bandwidthTester;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\ndefine('taoClientDiagnostic/tools/upload/tester',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'async',\n 'util/url',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getStatus'\n], function($, _, __, async, urlHelper, getConfig, getLabels, getStatus) {\n 'use strict';\n\n /**\n * A binary kilo bytes (KiB)\n * @type {Number}\n * @private\n */\n var _kilo = 1024;\n\n /**\n * A binary mega bytes (MiB)\n * @type {Number}\n * @private\n */\n var _mega = _kilo * _kilo;\n\n /**\n * Result of diagnostic\n */\n var data = [];\n\n /**\n * Default values for the upload speed tester\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'upload',\n\n // Size of data to sent to server during speed test in bytes\n size: _mega,\n\n // Optimal speed in bytes per second\n optimal: _mega\n };\n\n /**\n * A list of thresholds for bandwidth check\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Low upload speed'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Average upload speed'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Good upload speed'),\n type: 'success'\n }];\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Upload speed'),\n status: __('Checking upload speed...'),\n uploadAvg: __('Average upload speed'),\n uploadMax: __('Max upload speed')\n }\n ];\n\n /**\n * Generate random string of given length\n * @param length\n */\n var generateStr = function generateStr(length) {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n var i;\n\n for (i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n };\n\n /**\n * Upload generated string to check upload speed.\n * @param {number} size of string to upload in bytes\n * @return {object} jqXHR\n */\n var upload = function upload(size) {\n\n var url = urlHelper.route('upload', 'CompatibilityChecker', 'taoClientDiagnostic', {cache : Date.now()});\n var str = generateStr(size);\n data = [];\n\n return $.ajax({\n url : url,\n type : 'POST',\n data : {\n upload : str\n },\n xhr: function() {\n var xhr = new window.XMLHttpRequest();\n var startTime = Date.now();\n // Upload progress\n xhr.upload.addEventListener(\"progress\", function(evt){\n var passedTime;\n if (evt.lengthComputable) {\n passedTime = Date.now() - startTime;\n data.push({\n time: passedTime,\n loaded: evt.loaded,\n speed: ((evt.loaded * 8) / _mega) / (passedTime / 1000)\n });\n }\n }, false);\n\n return xhr;\n }\n });\n };\n\n /**\n * Performs a upload speed test\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {Number} [config.size] - Size of data to sent to server during speed test in bytes\n * @param {Number} [config.optimal] - Optimal speed in bytes per second\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n var uploadTester = function uploadTester(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs upload speed test, then call a function to provide the result\n * @param {Function} done\n */\n start : function start(done) {\n var self = this;\n\n upload(parseInt(initConfig.size, 10)).then(function() {\n var totalSpeed = 0;\n var avgSpeed;\n var maxSpeed = 0;\n var status, summary, results;\n\n _.forEach(data, function (val) {\n totalSpeed += val.speed;\n if (maxSpeed < val.speed) {\n maxSpeed = Math.round(val.speed * 100) / 100;\n }\n });\n avgSpeed = Math.round(totalSpeed / data.length * 100) / 100;\n results = {\n max: maxSpeed,\n avg: avgSpeed,\n type: 'upload'\n };\n\n status = self.getFeedback(avgSpeed);\n summary = self.getSummary(results);\n\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n return {\n uploadAvg: {message: labels.uploadAvg, value: results.avg + ' Mbps'},\n uploadMax: {message: labels.uploadMax, value: results.max + ' Mbps'}\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result) {\n var optimal = initConfig.optimal / _mega;\n var status = getStatus((100 / optimal) * result, _thresholds);\n\n status.id = initConfig.id;\n status.title = labels.title;\n\n return status;\n }\n };\n };\n\n return uploadTester;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * This helper performs a server request to gather information about the user browser and os\n *\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/getPlatformInfo',[\n 'jquery',\n 'util/url',\n 'core/promise',\n 'taoClientDiagnostic/tools/getConfig'\n], function ($, url, Promise, getConfig) {\n 'use strict';\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var defaultConfig = {\n browserVersionAction: 'whichBrowser',\n browserVersionController: 'CompatibilityChecker',\n browserVersionExtension: 'taoClientDiagnostic'\n };\n\n /**\n * Gets the URL of the platform tester\n * @param {Window} win\n * @param {String} action\n * @param {String} controller\n * @param {String} extension\n * @returns {String}\n */\n function getTesterUrl(win, action, controller, extension) {\n var document = win.document;\n var navigator = win.navigator;\n var screen = win.screen;\n var params = {};\n var e = 0;\n var f = 0;\n\n // append the browser user agent\n params.ua = navigator.userAgent;\n\n // detect browser family\n e |= win.ActiveXObject ? 1 : 0;\n e |= win.opera ? 2 : 0;\n e |= win.chrome ? 4 : 0;\n e |= 'getBoxObjectFor' in document || 'mozInnerScreenX' in win ? 8 : 0;\n e |= ('WebKitCSSMatrix' in win || 'WebKitPoint' in win || 'webkitStorageInfo' in win || 'webkitURL' in win) ? 16 : 0;\n e |= (e & 16 && ({}.toString).toString().indexOf(\"\\n\") === -1) ? 32 : 0;\n params.e = e;\n\n // gather info about browser functionality\n f |= 'sandbox' in document.createElement('iframe') ? 1 : 0;\n f |= 'WebSocket' in win ? 2 : 0;\n f |= win.Worker ? 4 : 0;\n f |= win.applicationCache ? 8 : 0;\n f |= win.history && win.history.pushState ? 16 : 0;\n f |= document.documentElement.webkitRequestFullScreen ? 32 : 0;\n f |= 'FileReader' in win ? 64 : 0;\n params.f = f;\n\n // append a unique ID\n params.r = Math.random().toString(36).substring(7);\n\n // get the screen size\n params.w = screen.width;\n params.h = screen.height;\n\n return url.route(action, controller, extension, params);\n }\n\n /**\n * Check the user browser and os\n * @param {Window} window - Need an access to the window object\n * @param {Object} config\n * @param {String} config.browserVersionAction - The name of the action to call to get the browser checker\n * @param {String} config.browserVersionController - The name of the controller to call to get the browser checker\n * @param {String} config.browserVersionExtension - The name of the extension containing the controller to call to get the browser checker\n * @returns {Promise}\n */\n return function getPlatformInfo(win, config) {\n var testerUrl;\n\n config = getConfig(config, defaultConfig);\n\n testerUrl = getTesterUrl(\n win,\n config.browserVersionAction,\n config.browserVersionController,\n config.browserVersionExtension\n );\n\n return new Promise(function (resolve, reject) {\n $.ajax({url: testerUrl})\n .done(resolve)\n .fail(reject);\n });\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/browser/tester',[\n 'jquery',\n 'i18n',\n 'util/url',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getPlatformInfo',\n 'taoClientDiagnostic/tools/getStatus'\n], function ($, __, url, getConfig, getLabels, getPlatformInfo, getStatus) {\n 'use strict';\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'browser',\n browserVersionAction: 'whichBrowser',\n browserVersionController: 'CompatibilityChecker',\n browserVersionExtension: 'taoClientDiagnostic',\n action: 'check',\n controller: 'DiagnosticChecker'\n };\n\n /**\n * Placeholder variables for custom messages\n * @type {Object}\n * @private\n */\n var _placeHolders = {\n CURRENT_BROWSER: '%CURRENT_BROWSER%',\n CURRENT_OS: '%CURRENT_OS%'\n };\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Operating system and web browser'),\n status: __('Checking the browser...'),\n browser: __('Web browser'),\n os: __('Operating system')\n }\n ];\n\n /**\n * Performs a browser support test\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {String} [config.action] - The name of the action to call to get the browser checker\n * @param {String} [config.controller] - The name of the controller to call to get the browser checker\n * @param {String} [config.extension] - The name of the extension containing the controller to call to get the browser checker\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function browserTester(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs a browser support test, then call a function to provide the result\n * @param {Function} done\n */\n start: function start(done) {\n var self = this;\n\n getPlatformInfo(window, initConfig)\n .then(function(results) {\n // which browser\n $.post(\n url.route(initConfig.action, initConfig.controller, initConfig.extension),\n results,\n function (data) {\n var percentage = ('success' === data.type) ? 100 : (('warning' === data.type) ? 33 : 0);\n var status = self.getFeedback(percentage, data);\n var summary = self.getSummary(results);\n\n status.customMsgRenderer = function(customMsg) {\n return (customMsg || '')\n .replace(_placeHolders.CURRENT_BROWSER, summary.browser.value)\n .replace(_placeHolders.CURRENT_OS, summary.os.value);\n };\n\n done(status, summary, results);\n },\n 'json'\n );\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n var currentBrowser = results.browser + ' ' + results.browserVersion;\n var currentOs = results.os + ' ' + results.osVersion;\n return {\n browser: {\n message: labels.browser,\n value: currentBrowser\n },\n os: {\n message: labels.os,\n value: currentOs\n }\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @param {Object} data\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result, data) {\n var status = getStatus(result, data);\n\n status.id = initConfig.id;\n status.title = labels.title;\n\n return status;\n }\n };\n }\n\n return browserTester;\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/main', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

    \";\n if (helper = helpers.header) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.header); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

    \";\n return buffer;\n }\n\nfunction program3(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

    \";\n if (helper = helpers.info) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.info); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

    \";\n return buffer;\n }\n\n buffer += \"
    \\n\\n

    \";\n if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

    \\n\\n
    \\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.header), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.info), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n
    \\n\\n
    \\n \\n
    \\n\\n
      \\n\\n
      \\n

      \\n
      \\n\\n
      \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/result', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", helper, options;\n buffer += \"\\n
      \\n \\n \\n
      \\n
      \\n \";\n return buffer;\n }\n\n buffer += \"
    • \\n

      \";\n if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

      \\n
      \\n\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.details), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n
    • \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/details', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, options, functionType=\"function\", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\n \";\n if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\";\n if (helper = helpers.value) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.value); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\n \";\n return buffer;\n }\n\n buffer += \"
      \\n

      \"\n + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Details\", options) : helperMissing.call(depth0, \"__\", \"Details\", options)))\n + \"

      \\n
      \\n \\n \\n \";\n stack1 = helpers.each.call(depth0, depth0, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \\n
      \\n
      \\n
      \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"
      \";\n if (helper = helpers.legend) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.legend); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
      \";\n return buffer;\n }\n\nfunction program3(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"
      \";\n if (helper = helpers.customMsg) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.customMsg); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
      \";\n return buffer;\n }\n\n buffer += \"
      \\n \\n \";\n if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.legend), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.customMsg), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n
      \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n \n return \" wide\";\n }\n\nfunction program3(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \" title=\\\"\";\n if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\"\";\n return buffer;\n }\n\n buffer += \"
      \\n
      \\n
      \\n\";\n return buffer;\n });\n});\n\n","\ndefine('css!taoClientDiagnosticCss/diagnostics',[],function(){});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n * @author dieter \n */\ndefine('taoClientDiagnostic/tools/diagnostic/diagnostic',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'async',\n 'ui/feedback',\n 'ui/component',\n 'core/dataProvider/request',\n 'util/url',\n 'taoClientDiagnostic/tools/performances/tester',\n 'taoClientDiagnostic/tools/bandwidth/tester',\n 'taoClientDiagnostic/tools/upload/tester',\n 'taoClientDiagnostic/tools/browser/tester',\n 'taoClientDiagnostic/tools/getStatus',\n 'taoClientDiagnostic/tools/getConfig',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/main',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/result',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/details',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar',\n 'css!taoClientDiagnosticCss/diagnostics'\n], function ($,\n _,\n __,\n async,\n feedback,\n component,\n request,\n urlUtil,\n performancesTester,\n bandwidthTester,\n uploadTester,\n browserTester,\n getStatus,\n getConfig,\n mainTpl,\n resultTpl,\n detailsTpl,\n feedbackTpl,\n qualityBarTpl) {\n 'use strict';\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var _defaults = {\n title: __('Diagnostic Tool'),\n header: __('This tool will run a number of tests in order to establish how well your current environment is suitable to run the TAO platform.'),\n info: __('Be aware that these tests will take up to several minutes.'),\n button: __('Begin diagnostics'),\n actionStore: 'storeData',\n controller: 'DiagnosticChecker',\n extension: 'taoClientDiagnostic',\n actionDropId: 'deleteId',\n storeAllRuns: false,\n configurableText: {}\n };\n\n /**\n * A list of thresholds for summary\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Your system requires a compatibility update, please contact your system administrator.'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Your system is not optimal, please contact your system administrator.'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Your system is fully compliant.'),\n type: 'success'\n }];\n\n /**\n * Defines a diagnostic tool\n * @type {Object}\n */\n var diagnostic = {\n /**\n * Updates the displayed status\n * @param {String} status\n * @returns {diagnostic}\n * @private\n */\n changeStatus: function changeStatus(status) {\n if (this.is('rendered')) {\n this.controls.$status.html(status);\n }\n return this;\n },\n\n /**\n * Sends the detailed stats to the server\n * @param {String} type The type of stats\n * @param {Object} details The stats details\n * @param {Function} done A callback method called once server has responded\n */\n store: function store(type, details, done) {\n var config = this.config;\n\n details = _.omit(details, 'values');\n details.type = type;\n\n $.post(\n urlUtil.route(config.actionStore, config.controller, config.extension, config.storeParams),\n details,\n done,\n \"json\"\n );\n },\n\n /**\n * Retrieve a custom message from the config\n * @param key\n * @returns {*}\n */\n getCustomMsg: function getCustomMsg(key) {\n return this.config.configurableText[key];\n },\n\n /**\n * Enrich the feeback object with a custom message if the test has failed\n * @param {Object} status - the test result\n * @param {String} msg - the custom message\n */\n addCustomFeedbackMsg: function addCustomFeedbackMsg(status, msg) {\n if (this.hasFailed(status) && msg) {\n if (_.isFunction(status.customMsgRenderer)) {\n msg = status.customMsgRenderer(msg);\n }\n status.feedback = status.feedback || {};\n status.feedback.customMsg = msg;\n }\n },\n\n /**\n * Check if a result is considered as failed\n * @param {Object} result\n * @returns {boolean}\n */\n hasFailed: function hasFailed(result) {\n return !(\n result\n && result.feedback\n && result.feedback.type === \"success\"\n );\n },\n\n /**\n * Add a result row\n * @param {Object} result\n * @returns {diagnostic}\n */\n addResult: function addResult(result) {\n var $main, $indicator, $result;\n\n if (this.is('rendered')) {\n // adjust the width of the displayed label, if any, to the text length\n if (result.quality && result.quality.label && result.quality.label.toString().length > 2) {\n result.quality.wide = true;\n }\n\n // create and append the result to the displayed list\n $main = $(resultTpl(result));\n $result = $main.find('.result');\n if (result.feedback) {\n $result.append($(feedbackTpl(result.feedback)));\n }\n if (result.quality) {\n $result.append($(qualityBarTpl(result.quality)));\n }\n if (result.details) {\n $main.find('.details').append($(detailsTpl(result.details)));\n }\n\n $indicator = $main.find('.quality-indicator');\n this.controls.$results.append($main);\n\n // the result is hidden by default, show it with a little animation\n $main.fadeIn(function () {\n if ($indicator.length) {\n $indicator.animate({\n left: (result.percentage * $main.outerWidth() / 100) - ($indicator.outerWidth() / 2)\n });\n }\n });\n }\n\n return this;\n },\n\n /**\n * Does some preparations before starting the diagnostics\n * @returns {diagnostic}\n * @private\n */\n prepare: function prepare() {\n /**\n * Notifies the diagnostic start\n * @event diagnostic#start\n */\n this.trigger('start');\n this.changeStatus(__('Starting...'));\n this.setState('running', true);\n this.setState('done', false);\n\n // first we need a clean space to display the results, so remove the last results if any\n this.controls.$results.empty();\n\n // remove the start button during the diagnostic\n this.controls.$start.addClass('hidden');\n\n return this;\n },\n\n /**\n * Does some post process after ending the diagnostics\n * @returns {diagnostic}\n * @private\n */\n finish: function finish() {\n var config = this.config;\n\n // restore the start button to allow a new diagnostic run\n this.controls.$start.removeClass('hidden');\n\n if (config.storeAllRuns) {\n this.deleteIdentifier();\n }\n\n /**\n * Notifies the diagnostic end\n * @event diagnostic#end\n */\n this.trigger('end');\n this.changeStatus(__('Done!'));\n this.setState('running', false);\n this.setState('done', true);\n\n return this;\n },\n\n /**\n * delete unique id for this test session (next test will generate new one)\n */\n deleteIdentifier: function deleteIdentifier() {\n var url = urlUtil.route(this.config.actionDropId, this.config.controller, this.config.extension);\n return request(url, null, 'POST');\n },\n\n /**\n * Runs the diagnostics\n * @returns {diagnostic}\n */\n run: function run() {\n var self = this;\n var information = [];\n var scores = {};\n var testers = [];\n\n // common handling for testers\n function doCheck(testerConfig, cb) {\n var testerId = testerConfig.id;\n\n /**\n * Notifies the start of a tester operation\n * @event diagnostic#starttester\n * @param {String} name - The name of the tester\n */\n self.trigger('starttester', testerId);\n self.setState(testerId, true);\n\n require([testerConfig.tester], function (testerFactory){\n var tester = testerFactory(getConfig(testerConfig, self.config), self);\n self.changeStatus(tester.labels.status);\n tester.start(function (status, details, results) {\n var customMsg;\n if (testerConfig.customMsgKey) {\n customMsg = self.getCustomMsg(testerConfig.customMsgKey);\n self.addCustomFeedbackMsg(status, customMsg);\n }\n\n // the returned details must be ingested into the main details list\n _.forEach(details, function(info) {\n information.push(info);\n });\n scores[status.id] = status;\n\n /**\n * Notifies the end of a tester operation\n * @event diagnostic#endtester\n * @param {String} id - The identifier of the tester\n * @param {Array} results - The results of the test\n */\n self.trigger('endtester', testerId, status);\n self.setState(testerId, false);\n\n // results should be filtered in order to encode complex data\n results = _.mapValues(results, function(value) {\n switch(typeof(value)) {\n case 'boolean': return value ? 1 : 0;\n case 'object': return JSON.stringify(value);\n }\n return value;\n });\n\n // send the data to store\n self.store(testerId, results, function () {\n self.addResult(status);\n cb();\n });\n });\n });\n }\n\n if (this.is('rendered')) {\n // set up the component to a new run\n this.prepare();\n\n _.forEach(this.config.testers, function(testerConfig, testerId) {\n testerConfig.id = testerConfig.id || testerId;\n if (testerConfig.enabled) {\n testers.push(function (cb) {\n doCheck(testerConfig, cb);\n });\n }\n });\n\n // launch each testers in series, then display the results\n async.series(testers, function () {\n // pick the lowest percentage as the main score\n var total = _.min(scores, 'percentage');\n\n // get a status according to the main score\n var status = getStatus(total.percentage, _thresholds);\n\n // display the result\n status.title = __('Total');\n status.id = 'total';\n self.addCustomFeedbackMsg(status, self.config.configurableText.diagTotalCheckResult);\n\n status.details = information;\n self.addResult(status);\n\n // done !\n self.finish();\n });\n }\n\n return this;\n }\n };\n\n /**\n * Builds an instance of the diagnostic tool\n * @param {Object} config\n * @param {String} [config.title] - The displayed title\n * @param {String} [config.header] - A header text displayed to describe the component\n * @param {String} [config.info] - An information text displayed to warn about run duration\n * @param {String} [config.button] - The caption of the start button\n * @param {String} [config.actionStore] - The name of the action to call to store the results\n * @param {String} [config.actionCheck] - The name of the action to call to check the browser results\n * @param {String} [config.controller] - The name of the controller to call\n * @param {String} [config.extension] - The name of the extension containing the controller\n * @param {Object} [config.storeParams] - A list of additional parameters to send with diagnostic results\n *\n * @param {String} [config.browser.action] - The name of the action to call to get the browser checker\n * @param {String} [config.browser.controller] - The name of the controller to call to get the browser checker\n * @param {String} [config.browser.extension] - The name of the extension containing the controller to call to get the browser checker\n *\n * @param {Number} [config.bandwidth.unit] - The typical bandwidth needed for a test taker (Mbps)\n * @param {Array} [config.bandwidth.ideal] - The thresholds for optimal bandwidth, one by bar\n * @param {Number} [config.bandwidth.max] - Maximum number of test takers to display\n *\n * @param {Array} [config.performances.samples] - A list of samples to render in order to compute the rendering performances\n * @param {Number} [config.performances.occurrences] - The number of renderings by samples\n * @param {Number} [config.performances.timeout] - Max allowed duration for a sample rendering\n * @param {Number} [config.performances.optimal] - The threshold for optimal performances\n * @param {Number} [config.performances.threshold] - The threshold for minimal performances\n * @returns {diagnostic}\n */\n function diagnosticFactory(config) {\n // fix the translations for content loaded from config files\n if (config) {\n _.forEach(['title', 'header', 'footer', 'info', 'button'], function(name) {\n if (config[name]) {\n config[name] = __(config[name]);\n }\n });\n }\n\n return component(diagnostic, _defaults)\n .setTemplate(mainTpl)\n\n // uninstalls the component\n .on('destroy', function () {\n this.controls = null;\n })\n\n // renders the component\n .on('render', function () {\n var self = this;\n\n // get access to all needed placeholders\n this.controls = {\n $start: this.$component.find('[data-action=\"test-launcher\"]'),\n $status: this.$component.find('.status h2'),\n $results: this.$component.find('.results')\n };\n\n // start the diagnostic\n this.controls.$start.on('click', function () {\n self.run();\n });\n\n // show result details\n this.controls.$results.on('click', 'button[data-action=\"show-details\"]', function () {\n var $btn = $(this).closest('button');\n var $result = $btn.closest('[data-result]');\n var $details = $result.find('.details');\n $details.removeClass('hidden');\n $btn.addClass('hidden');\n $result.find('[data-action=\"hide-details\"]').removeClass('hidden');\n });\n\n // hide result details\n this.controls.$results.on('click', 'button[data-action=\"hide-details\"]', function () {\n var $btn = $(this).closest('button');\n var $result = $btn.closest('[data-result]');\n var $details = $result.find('.details');\n $details.addClass('hidden');\n $btn.addClass('hidden');\n $result.find('[data-action=\"show-details\"]').removeClass('hidden');\n });\n })\n .init(config);\n }\n\n return diagnosticFactory;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author dieter \n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/controller/CompatibilityChecker/diagnostics',[\n 'jquery',\n 'layout/loading-bar',\n 'ui/feedback',\n 'taoClientDiagnostic/tools/message',\n 'taoClientDiagnostic/tools/diagnostic/diagnostic'\n], function ($, loadingBar, feedback, showMessage, diagnosticFactory) {\n 'use strict';\n\n /**\n * @exports\n */\n return {\n start: function(config) {\n var $contentArea = $('.content');\n\n showMessage('#feedback-box');\n\n diagnosticFactory(config)\n .on('start', function() {\n loadingBar.start();\n })\n .on('end', function() {\n loadingBar.stop();\n })\n .render($contentArea);\n }\n };\n});\n\n","\ndefine('tpl!taoClientDiagnostic/templates/diagnostic/main', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, options, functionType=\"function\", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1;\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.diagInstructions), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n return buffer;\n }\nfunction program2(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

      \";\n if (helper = helpers.diagInstructions) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.diagInstructions); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

      \";\n return buffer;\n }\n\nfunction program4(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

      \";\n if (helper = helpers.header) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.header); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

      \";\n return buffer;\n }\n\nfunction program6(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

      \";\n if (helper = helpers.info) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.info); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

      \";\n return buffer;\n }\n\n buffer += \"
      \\n\\n

      \";\n if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

      \\n\\n
      \\n \";\n stack1 = helpers['with'].call(depth0, (depth0 && depth0.configurableText), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.header), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.info), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n

      \\n \\n \\n

      \\n
      \\n\\n
      \\n \\n
      \\n\\n
        \\n\\n
        \\n

        \\n
        \\n\\n
        \\n\";\n return buffer;\n });\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author dieter \n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/controller/Diagnostic/diagnostic',[\n 'module',\n 'jquery',\n 'i18n',\n 'helpers',\n 'layout/loading-bar',\n 'ui/actionbar',\n 'ui/feedback',\n 'taoClientDiagnostic/tools/diagnostic/diagnostic',\n 'tpl!taoClientDiagnostic/templates/diagnostic/main'\n], function (module, $, __, helpers, loadingBar, actionbar, feedback, diagnosticFactory, diagnosticTpl) {\n 'use strict';\n\n /**\n * The CSS scope\n * @type {String}\n */\n var cssScope = '.diagnostic-runner';\n\n /**\n * Controls the readiness check page\n *\n * @type {Object}\n */\n var taoDiagnosticRunnerCtlr = {\n /**\n * Entry point of the page\n */\n start : function start() {\n var $container = $(cssScope);\n var extension = $container.data('extension') || 'taoClientDiagnostic';\n var $list = $container.find('.list');\n var $panel = $('.panel');\n var config = $container.data('config');\n var indexUrl = helpers._url('index', 'Diagnostic', extension);\n var workstationUrl = helpers._url('workstation', 'DiagnosticChecker', extension);\n var buttons = [];\n var moduleConfig = module.config() || {};\n\n config.configurableText = moduleConfig.configurableText || {};\n\n /**\n * Installs the diagnostic tool GUI\n * @param {String} [workstation]\n */\n function installTester(workstation) {\n diagnosticFactory(config)\n .setTemplate(diagnosticTpl)\n .on('render', function() {\n var self = this;\n\n // get access to the input\n this.controls.$workstation = this.getElement().find('[data-control=\"workstation\"]')\n .on('keypress', function (e) {\n if (e.which === 13) {\n e.preventDefault();\n self.run();\n }\n })\n .val(workstation);\n })\n .on('start', function() {\n // append the workstation name to the queries\n this.config.storeParams = this.config.storeParams || {};\n this.config.storeParams.workstation = this.controls.$workstation.val();\n\n // disable the input when running the test\n this.controls.$workstation.prop('disabled', true);\n loadingBar.start();\n })\n .on('end', function() {\n // enable the input when the test is complete\n this.controls.$workstation.removeProp('disabled');\n loadingBar.stop();\n })\n .on('render', function() {\n loadingBar.stop();\n if (config.autoStart) {\n this.run();\n }\n })\n .render($list);\n }\n\n buttons.push({\n id: 'back',\n icon: 'step-backward',\n title: __('Return to the list'),\n label: __('List of readiness checks'),\n action: function() {\n window.location.href = indexUrl;\n }\n });\n\n // tool: close tab, this won't be present in an LTI iframe\n // button should always be right most\n if(window.self === window.top) {\n buttons.push({\n id: 'exitButton',\n icon: 'close',\n title: __('Exit'),\n label: __('Exit'),\n action: function() {\n window.self.close();\n }\n });\n }\n\n actionbar({\n renderTo: $panel,\n buttons: buttons\n });\n\n // need to known the workstation name to display it\n $.get(workstationUrl, 'json')\n .done(function(data) {\n installTester(data && data.workstation);\n })\n .fail(function() {\n feedback().error(__('Unable to get the workstation name!'));\n installTester();\n });\n }\n };\n\n // the page is always loading data when starting\n loadingBar.start();\n\n return taoDiagnosticRunnerCtlr;\n});\n\n","!function(e,t,i){\"use strict\";\"function\"==typeof define&&define.amd?define('taoClientDiagnostic/lib/fingerprint/fingerprint2',i):\"undefined\"!=typeof module&&module.exports?module.exports=i():t.exports?t.exports=i():t[e]=i()}(\"Fingerprint2\",this,function(){\"use strict\";var e=function(t){if(!(this instanceof e))return new e(t);var i={swfContainerId:\"fingerprintjs2\",swfPath:\"flash/compiled/FontList.swf\",detectScreenOrientation:!0,sortPluginsFor:[/palemoon/i],userDefinedFonts:[]};this.options=this.extend(t,i),this.nativeForEach=Array.prototype.forEach,this.nativeMap=Array.prototype.map};return e.prototype={extend:function(e,t){if(null==e)return t;for(var i in e)null!=e[i]&&t[i]!==e[i]&&(t[i]=e[i]);return t},get:function(e){var t=this,i={data:[],push:function(e){var i=e.key,a=e.value;\"function\"==typeof t.options.preprocessor&&(a=t.options.preprocessor(i,a)),this.data.push({key:i,value:a})}};i=this.userAgentKey(i),i=this.languageKey(i),i=this.colorDepthKey(i),i=this.pixelRatioKey(i),i=this.hardwareConcurrencyKey(i),i=this.screenResolutionKey(i),i=this.availableScreenResolutionKey(i),i=this.timezoneOffsetKey(i),i=this.sessionStorageKey(i),i=this.localStorageKey(i),i=this.indexedDbKey(i),i=this.addBehaviorKey(i),i=this.openDatabaseKey(i),i=this.cpuClassKey(i),i=this.platformKey(i),i=this.doNotTrackKey(i),i=this.pluginsKey(i),i=this.canvasKey(i),i=this.webglKey(i),i=this.adBlockKey(i),i=this.hasLiedLanguagesKey(i),i=this.hasLiedResolutionKey(i),i=this.hasLiedOsKey(i),i=this.hasLiedBrowserKey(i),i=this.touchSupportKey(i),i=this.customEntropyFunction(i),this.fontsKey(i,function(i){var a=[];t.each(i.data,function(e){var t=e.value;\"undefined\"!=typeof e.value.join&&(t=e.value.join(\";\")),a.push(t)});var r=t.x64hash128(a.join(\"~~~\"),31);return e(r,i.data)})},customEntropyFunction:function(e){return\"function\"==typeof this.options.customFunction&&e.push({key:\"custom\",value:this.options.customFunction()}),e},userAgentKey:function(e){return this.options.excludeUserAgent||e.push({key:\"user_agent\",value:this.getUserAgent()}),e},getUserAgent:function(){return navigator.userAgent},languageKey:function(e){return this.options.excludeLanguage||e.push({key:\"language\",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||\"\"}),e},colorDepthKey:function(e){return this.options.excludeColorDepth||e.push({key:\"color_depth\",value:screen.colorDepth||-1}),e},pixelRatioKey:function(e){return this.options.excludePixelRatio||e.push({key:\"pixel_ratio\",value:this.getPixelRatio()}),e},getPixelRatio:function(){return window.devicePixelRatio||\"\"},screenResolutionKey:function(e){return this.options.excludeScreenResolution?e:this.getScreenResolution(e)},getScreenResolution:function(e){var t;return t=this.options.detectScreenOrientation&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],\"undefined\"!=typeof t&&e.push({key:\"resolution\",value:t}),e},availableScreenResolutionKey:function(e){return this.options.excludeAvailableScreenResolution?e:this.getAvailableScreenResolution(e)},getAvailableScreenResolution:function(e){var t;return screen.availWidth&&screen.availHeight&&(t=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]),\"undefined\"!=typeof t&&e.push({key:\"available_resolution\",value:t}),e},timezoneOffsetKey:function(e){return this.options.excludeTimezoneOffset||e.push({key:\"timezone_offset\",value:(new Date).getTimezoneOffset()}),e},sessionStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasSessionStorage()&&e.push({key:\"session_storage\",value:1}),e},localStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasLocalStorage()&&e.push({key:\"local_storage\",value:1}),e},indexedDbKey:function(e){return!this.options.excludeIndexedDB&&this.hasIndexedDB()&&e.push({key:\"indexed_db\",value:1}),e},addBehaviorKey:function(e){return document.body&&!this.options.excludeAddBehavior&&document.body.addBehavior&&e.push({key:\"add_behavior\",value:1}),e},openDatabaseKey:function(e){return!this.options.excludeOpenDatabase&&window.openDatabase&&e.push({key:\"open_database\",value:1}),e},cpuClassKey:function(e){return this.options.excludeCpuClass||e.push({key:\"cpu_class\",value:this.getNavigatorCpuClass()}),e},platformKey:function(e){return this.options.excludePlatform||e.push({key:\"navigator_platform\",value:this.getNavigatorPlatform()}),e},doNotTrackKey:function(e){return this.options.excludeDoNotTrack||e.push({key:\"do_not_track\",value:this.getDoNotTrack()}),e},canvasKey:function(e){return!this.options.excludeCanvas&&this.isCanvasSupported()&&e.push({key:\"canvas\",value:this.getCanvasFp()}),e},webglKey:function(e){return this.options.excludeWebGL?e:this.isWebGlSupported()?(e.push({key:\"webgl\",value:this.getWebglFp()}),e):e},adBlockKey:function(e){return this.options.excludeAdBlock||e.push({key:\"adblock\",value:this.getAdBlock()}),e},hasLiedLanguagesKey:function(e){return this.options.excludeHasLiedLanguages||e.push({key:\"has_lied_languages\",value:this.getHasLiedLanguages()}),e},hasLiedResolutionKey:function(e){return this.options.excludeHasLiedResolution||e.push({key:\"has_lied_resolution\",value:this.getHasLiedResolution()}),e},hasLiedOsKey:function(e){return this.options.excludeHasLiedOs||e.push({key:\"has_lied_os\",value:this.getHasLiedOs()}),e},hasLiedBrowserKey:function(e){return this.options.excludeHasLiedBrowser||e.push({key:\"has_lied_browser\",value:this.getHasLiedBrowser()}),e},fontsKey:function(e,t){return this.options.excludeJsFonts?this.flashFontsKey(e,t):this.jsFontsKey(e,t)},flashFontsKey:function(e,t){return this.options.excludeFlashFonts?t(e):this.hasSwfObjectLoaded()&&this.hasMinFlashInstalled()?\"undefined\"==typeof this.options.swfPath?t(e):void this.loadSwfAndDetectFonts(function(i){e.push({key:\"swf_fonts\",value:i.join(\";\")}),t(e)}):t(e)},jsFontsKey:function(e,t){var i=this;return setTimeout(function(){var a=[\"monospace\",\"sans-serif\",\"serif\"],r=[\"Andale Mono\",\"Arial\",\"Arial Black\",\"Arial Hebrew\",\"Arial MT\",\"Arial Narrow\",\"Arial Rounded MT Bold\",\"Arial Unicode MS\",\"Bitstream Vera Sans Mono\",\"Book Antiqua\",\"Bookman Old Style\",\"Calibri\",\"Cambria\",\"Cambria Math\",\"Century\",\"Century Gothic\",\"Century Schoolbook\",\"Comic Sans\",\"Comic Sans MS\",\"Consolas\",\"Courier\",\"Courier New\",\"Garamond\",\"Geneva\",\"Georgia\",\"Helvetica\",\"Helvetica Neue\",\"Impact\",\"Lucida Bright\",\"Lucida Calligraphy\",\"Lucida Console\",\"Lucida Fax\",\"LUCIDA GRANDE\",\"Lucida Handwriting\",\"Lucida Sans\",\"Lucida Sans Typewriter\",\"Lucida Sans Unicode\",\"Microsoft Sans Serif\",\"Monaco\",\"Monotype Corsiva\",\"MS Gothic\",\"MS Outlook\",\"MS PGothic\",\"MS Reference Sans Serif\",\"MS Sans Serif\",\"MS Serif\",\"MYRIAD\",\"MYRIAD PRO\",\"Palatino\",\"Palatino Linotype\",\"Segoe Print\",\"Segoe Script\",\"Segoe UI\",\"Segoe UI Light\",\"Segoe UI Semibold\",\"Segoe UI Symbol\",\"Tahoma\",\"Times\",\"Times New Roman\",\"Times New Roman PS\",\"Trebuchet MS\",\"Verdana\",\"Wingdings\",\"Wingdings 2\",\"Wingdings 3\"],n=[\"Abadi MT Condensed Light\",\"Academy Engraved LET\",\"ADOBE CASLON PRO\",\"Adobe Garamond\",\"ADOBE GARAMOND PRO\",\"Agency FB\",\"Aharoni\",\"Albertus Extra Bold\",\"Albertus Medium\",\"Algerian\",\"Amazone BT\",\"American Typewriter\",\"American Typewriter Condensed\",\"AmerType Md BT\",\"Andalus\",\"Angsana New\",\"AngsanaUPC\",\"Antique Olive\",\"Aparajita\",\"Apple Chancery\",\"Apple Color Emoji\",\"Apple SD Gothic Neo\",\"Arabic Typesetting\",\"ARCHER\",\"ARNO PRO\",\"Arrus BT\",\"Aurora Cn BT\",\"AvantGarde Bk BT\",\"AvantGarde Md BT\",\"AVENIR\",\"Ayuthaya\",\"Bandy\",\"Bangla Sangam MN\",\"Bank Gothic\",\"BankGothic Md BT\",\"Baskerville\",\"Baskerville Old Face\",\"Batang\",\"BatangChe\",\"Bauer Bodoni\",\"Bauhaus 93\",\"Bazooka\",\"Bell MT\",\"Bembo\",\"Benguiat Bk BT\",\"Berlin Sans FB\",\"Berlin Sans FB Demi\",\"Bernard MT Condensed\",\"BernhardFashion BT\",\"BernhardMod BT\",\"Big Caslon\",\"BinnerD\",\"Blackadder ITC\",\"BlairMdITC TT\",\"Bodoni 72\",\"Bodoni 72 Oldstyle\",\"Bodoni 72 Smallcaps\",\"Bodoni MT\",\"Bodoni MT Black\",\"Bodoni MT Condensed\",\"Bodoni MT Poster Compressed\",\"Bookshelf Symbol 7\",\"Boulder\",\"Bradley Hand\",\"Bradley Hand ITC\",\"Bremen Bd BT\",\"Britannic Bold\",\"Broadway\",\"Browallia New\",\"BrowalliaUPC\",\"Brush Script MT\",\"Californian FB\",\"Calisto MT\",\"Calligrapher\",\"Candara\",\"CaslonOpnface BT\",\"Castellar\",\"Centaur\",\"Cezanne\",\"CG Omega\",\"CG Times\",\"Chalkboard\",\"Chalkboard SE\",\"Chalkduster\",\"Charlesworth\",\"Charter Bd BT\",\"Charter BT\",\"Chaucer\",\"ChelthmITC Bk BT\",\"Chiller\",\"Clarendon\",\"Clarendon Condensed\",\"CloisterBlack BT\",\"Cochin\",\"Colonna MT\",\"Constantia\",\"Cooper Black\",\"Copperplate\",\"Copperplate Gothic\",\"Copperplate Gothic Bold\",\"Copperplate Gothic Light\",\"CopperplGoth Bd BT\",\"Corbel\",\"Cordia New\",\"CordiaUPC\",\"Cornerstone\",\"Coronet\",\"Cuckoo\",\"Curlz MT\",\"DaunPenh\",\"Dauphin\",\"David\",\"DB LCD Temp\",\"DELICIOUS\",\"Denmark\",\"DFKai-SB\",\"Didot\",\"DilleniaUPC\",\"DIN\",\"DokChampa\",\"Dotum\",\"DotumChe\",\"Ebrima\",\"Edwardian Script ITC\",\"Elephant\",\"English 111 Vivace BT\",\"Engravers MT\",\"EngraversGothic BT\",\"Eras Bold ITC\",\"Eras Demi ITC\",\"Eras Light ITC\",\"Eras Medium ITC\",\"EucrosiaUPC\",\"Euphemia\",\"Euphemia UCAS\",\"EUROSTILE\",\"Exotc350 Bd BT\",\"FangSong\",\"Felix Titling\",\"Fixedsys\",\"FONTIN\",\"Footlight MT Light\",\"Forte\",\"FrankRuehl\",\"Fransiscan\",\"Freefrm721 Blk BT\",\"FreesiaUPC\",\"Freestyle Script\",\"French Script MT\",\"FrnkGothITC Bk BT\",\"Fruitger\",\"FRUTIGER\",\"Futura\",\"Futura Bk BT\",\"Futura Lt BT\",\"Futura Md BT\",\"Futura ZBlk BT\",\"FuturaBlack BT\",\"Gabriola\",\"Galliard BT\",\"Gautami\",\"Geeza Pro\",\"Geometr231 BT\",\"Geometr231 Hv BT\",\"Geometr231 Lt BT\",\"GeoSlab 703 Lt BT\",\"GeoSlab 703 XBd BT\",\"Gigi\",\"Gill Sans\",\"Gill Sans MT\",\"Gill Sans MT Condensed\",\"Gill Sans MT Ext Condensed Bold\",\"Gill Sans Ultra Bold\",\"Gill Sans Ultra Bold Condensed\",\"Gisha\",\"Gloucester MT Extra Condensed\",\"GOTHAM\",\"GOTHAM BOLD\",\"Goudy Old Style\",\"Goudy Stout\",\"GoudyHandtooled BT\",\"GoudyOLSt BT\",\"Gujarati Sangam MN\",\"Gulim\",\"GulimChe\",\"Gungsuh\",\"GungsuhChe\",\"Gurmukhi MN\",\"Haettenschweiler\",\"Harlow Solid Italic\",\"Harrington\",\"Heather\",\"Heiti SC\",\"Heiti TC\",\"HELV\",\"Herald\",\"High Tower Text\",\"Hiragino Kaku Gothic ProN\",\"Hiragino Mincho ProN\",\"Hoefler Text\",\"Humanst 521 Cn BT\",\"Humanst521 BT\",\"Humanst521 Lt BT\",\"Imprint MT Shadow\",\"Incised901 Bd BT\",\"Incised901 BT\",\"Incised901 Lt BT\",\"INCONSOLATA\",\"Informal Roman\",\"Informal011 BT\",\"INTERSTATE\",\"IrisUPC\",\"Iskoola Pota\",\"JasmineUPC\",\"Jazz LET\",\"Jenson\",\"Jester\",\"Jokerman\",\"Juice ITC\",\"Kabel Bk BT\",\"Kabel Ult BT\",\"Kailasa\",\"KaiTi\",\"Kalinga\",\"Kannada Sangam MN\",\"Kartika\",\"Kaufmann Bd BT\",\"Kaufmann BT\",\"Khmer UI\",\"KodchiangUPC\",\"Kokila\",\"Korinna BT\",\"Kristen ITC\",\"Krungthep\",\"Kunstler Script\",\"Lao UI\",\"Latha\",\"Leelawadee\",\"Letter Gothic\",\"Levenim MT\",\"LilyUPC\",\"Lithograph\",\"Lithograph Light\",\"Long Island\",\"Lydian BT\",\"Magneto\",\"Maiandra GD\",\"Malayalam Sangam MN\",\"Malgun Gothic\",\"Mangal\",\"Marigold\",\"Marion\",\"Marker Felt\",\"Market\",\"Marlett\",\"Matisse ITC\",\"Matura MT Script Capitals\",\"Meiryo\",\"Meiryo UI\",\"Microsoft Himalaya\",\"Microsoft JhengHei\",\"Microsoft New Tai Lue\",\"Microsoft PhagsPa\",\"Microsoft Tai Le\",\"Microsoft Uighur\",\"Microsoft YaHei\",\"Microsoft Yi Baiti\",\"MingLiU\",\"MingLiU_HKSCS\",\"MingLiU_HKSCS-ExtB\",\"MingLiU-ExtB\",\"Minion\",\"Minion Pro\",\"Miriam\",\"Miriam Fixed\",\"Mistral\",\"Modern\",\"Modern No. 20\",\"Mona Lisa Solid ITC TT\",\"Mongolian Baiti\",\"MONO\",\"MoolBoran\",\"Mrs Eaves\",\"MS LineDraw\",\"MS Mincho\",\"MS PMincho\",\"MS Reference Specialty\",\"MS UI Gothic\",\"MT Extra\",\"MUSEO\",\"MV Boli\",\"Nadeem\",\"Narkisim\",\"NEVIS\",\"News Gothic\",\"News GothicMT\",\"NewsGoth BT\",\"Niagara Engraved\",\"Niagara Solid\",\"Noteworthy\",\"NSimSun\",\"Nyala\",\"OCR A Extended\",\"Old Century\",\"Old English Text MT\",\"Onyx\",\"Onyx BT\",\"OPTIMA\",\"Oriya Sangam MN\",\"OSAKA\",\"OzHandicraft BT\",\"Palace Script MT\",\"Papyrus\",\"Parchment\",\"Party LET\",\"Pegasus\",\"Perpetua\",\"Perpetua Titling MT\",\"PetitaBold\",\"Pickwick\",\"Plantagenet Cherokee\",\"Playbill\",\"PMingLiU\",\"PMingLiU-ExtB\",\"Poor Richard\",\"Poster\",\"PosterBodoni BT\",\"PRINCETOWN LET\",\"Pristina\",\"PTBarnum BT\",\"Pythagoras\",\"Raavi\",\"Rage Italic\",\"Ravie\",\"Ribbon131 Bd BT\",\"Rockwell\",\"Rockwell Condensed\",\"Rockwell Extra Bold\",\"Rod\",\"Roman\",\"Sakkal Majalla\",\"Santa Fe LET\",\"Savoye LET\",\"Sceptre\",\"Script\",\"Script MT Bold\",\"SCRIPTINA\",\"Serifa\",\"Serifa BT\",\"Serifa Th BT\",\"ShelleyVolante BT\",\"Sherwood\",\"Shonar Bangla\",\"Showcard Gothic\",\"Shruti\",\"Signboard\",\"SILKSCREEN\",\"SimHei\",\"Simplified Arabic\",\"Simplified Arabic Fixed\",\"SimSun\",\"SimSun-ExtB\",\"Sinhala Sangam MN\",\"Sketch Rockwell\",\"Skia\",\"Small Fonts\",\"Snap ITC\",\"Snell Roundhand\",\"Socket\",\"Souvenir Lt BT\",\"Staccato222 BT\",\"Steamer\",\"Stencil\",\"Storybook\",\"Styllo\",\"Subway\",\"Swis721 BlkEx BT\",\"Swiss911 XCm BT\",\"Sylfaen\",\"Synchro LET\",\"System\",\"Tamil Sangam MN\",\"Technical\",\"Teletype\",\"Telugu Sangam MN\",\"Tempus Sans ITC\",\"Terminal\",\"Thonburi\",\"Traditional Arabic\",\"Trajan\",\"TRAJAN PRO\",\"Tristan\",\"Tubular\",\"Tunga\",\"Tw Cen MT\",\"Tw Cen MT Condensed\",\"Tw Cen MT Condensed Extra Bold\",\"TypoUpright BT\",\"Unicorn\",\"Univers\",\"Univers CE 55 Medium\",\"Univers Condensed\",\"Utsaah\",\"Vagabond\",\"Vani\",\"Vijaya\",\"Viner Hand ITC\",\"VisualUI\",\"Vivaldi\",\"Vladimir Script\",\"Vrinda\",\"Westminster\",\"WHITNEY\",\"Wide Latin\",\"ZapfEllipt BT\",\"ZapfHumnst BT\",\"ZapfHumnst Dm BT\",\"Zapfino\",\"Zurich BlkEx BT\",\"Zurich Ex BT\",\"ZWAdobeF\"];i.options.extendedJsFonts&&(r=r.concat(n)),r=r.concat(i.options.userDefinedFonts);var o=\"mmmmmmmmmmlli\",s=\"72px\",l=document.getElementsByTagName(\"body\")[0],h=document.createElement(\"div\"),u=document.createElement(\"div\"),c={},d={},g=function(){var e=document.createElement(\"span\");return e.style.position=\"absolute\",e.style.left=\"-9999px\",e.style.fontSize=s,e.style.lineHeight=\"normal\",e.innerHTML=o,e},p=function(e,t){var i=g();return i.style.fontFamily=\"'\"+e+\"',\"+t,i},f=function(){for(var e=[],t=0,i=a.length;tt.name?1:e.name=0?\"Windows Phone\":t.indexOf(\"win\")>=0?\"Windows\":t.indexOf(\"android\")>=0?\"Android\":t.indexOf(\"linux\")>=0?\"Linux\":t.indexOf(\"iphone\")>=0||t.indexOf(\"ipad\")>=0?\"iOS\":t.indexOf(\"mac\")>=0?\"Mac\":\"Other\";var r;if(r=\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,r&&\"Windows Phone\"!==e&&\"Android\"!==e&&\"iOS\"!==e&&\"Other\"!==e)return!0;if(\"undefined\"!=typeof i){if(i=i.toLowerCase(),i.indexOf(\"win\")>=0&&\"Windows\"!==e&&\"Windows Phone\"!==e)return!0;if(i.indexOf(\"linux\")>=0&&\"Linux\"!==e&&\"Android\"!==e)return!0;if(i.indexOf(\"mac\")>=0&&\"Mac\"!==e&&\"iOS\"!==e)return!0;if(0===i.indexOf(\"win\")&&0===i.indexOf(\"linux\")&&i.indexOf(\"mac\")>=0&&\"other\"!==e)return!0}return a.indexOf(\"win\")>=0&&\"Windows\"!==e&&\"Windows Phone\"!==e||((a.indexOf(\"linux\")>=0||a.indexOf(\"android\")>=0||a.indexOf(\"pike\")>=0)&&\"Linux\"!==e&&\"Android\"!==e||((a.indexOf(\"mac\")>=0||a.indexOf(\"ipad\")>=0||a.indexOf(\"ipod\")>=0||a.indexOf(\"iphone\")>=0)&&\"Mac\"!==e&&\"iOS\"!==e||(0===a.indexOf(\"win\")&&0===a.indexOf(\"linux\")&&a.indexOf(\"mac\")>=0&&\"other\"!==e||\"undefined\"==typeof navigator.plugins&&\"Windows\"!==e&&\"Windows Phone\"!==e)))},getHasLiedBrowser:function(){var e,t=navigator.userAgent.toLowerCase(),i=navigator.productSub;if(e=t.indexOf(\"firefox\")>=0?\"Firefox\":t.indexOf(\"opera\")>=0||t.indexOf(\"opr\")>=0?\"Opera\":t.indexOf(\"chrome\")>=0?\"Chrome\":t.indexOf(\"safari\")>=0?\"Safari\":t.indexOf(\"trident\")>=0?\"Internet Explorer\":\"Other\",(\"Chrome\"===e||\"Safari\"===e||\"Opera\"===e)&&\"20030107\"!==i)return!0;var a=eval.toString().length;if(37===a&&\"Safari\"!==e&&\"Firefox\"!==e&&\"Other\"!==e)return!0;if(39===a&&\"Internet Explorer\"!==e&&\"Other\"!==e)return!0;if(33===a&&\"Chrome\"!==e&&\"Opera\"!==e&&\"Other\"!==e)return!0;var r;try{throw\"a\"}catch(n){try{n.toSource(),r=!0}catch(o){r=!1}}return!(!r||\"Firefox\"===e||\"Other\"===e)},isCanvasSupported:function(){var e=document.createElement(\"canvas\");return!(!e.getContext||!e.getContext(\"2d\"))},isWebGlSupported:function(){if(!this.isCanvasSupported())return!1;var e,t=document.createElement(\"canvas\");try{e=t.getContext&&(t.getContext(\"webgl\")||t.getContext(\"experimental-webgl\"))}catch(i){e=!1}return!!window.WebGLRenderingContext&&!!e},isIE:function(){return\"Microsoft Internet Explorer\"===navigator.appName||!(\"Netscape\"!==navigator.appName||!/Trident/.test(navigator.userAgent))},hasSwfObjectLoaded:function(){return\"undefined\"!=typeof window.swfobject},hasMinFlashInstalled:function(){return swfobject.hasFlashPlayerVersion(\"9.0.0\")},addFlashDivNode:function(){var e=document.createElement(\"div\");e.setAttribute(\"id\",this.options.swfContainerId),document.body.appendChild(e)},loadSwfAndDetectFonts:function(e){var t=\"___fp_swf_loaded\";window[t]=function(t){e(t)};var i=this.options.swfContainerId;this.addFlashDivNode();var a={onReady:t},r={allowScriptAccess:\"always\",menu:\"false\"};swfobject.embedSWF(this.options.swfPath,i,\"1\",\"1\",\"9.0.0\",!1,a,r,{})},getWebglCanvas:function(){var e=document.createElement(\"canvas\"),t=null;try{t=e.getContext(\"webgl\")||e.getContext(\"experimental-webgl\")}catch(i){}return t||(t=null),t},each:function(e,t,i){if(null!==e)if(this.nativeForEach&&e.forEach===this.nativeForEach)e.forEach(t,i);else if(e.length===+e.length){for(var a=0,r=e.length;a>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]+t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]+t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]+t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]+t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Multiply:function(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]*t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]*t[3],i[1]+=i[2]>>>16,i[2]&=65535,i[2]+=e[3]*t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]*t[3],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[2]*t[2],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[3]*t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Rotl:function(e,t){return t%=64,32===t?[e[1],e[0]]:t<32?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])},x64LeftShift:function(e,t){return t%=64,0===t?e:t<32?[e[0]<>>32-t,e[1]<>>1]),e=this.x64Multiply(e,[4283543511,3981806797]),e=this.x64Xor(e,[0,e[0]>>>1]),e=this.x64Multiply(e,[3301882366,444984403]),e=this.x64Xor(e,[0,e[0]>>>1])},x64hash128:function(e,t){\ne=e||\"\",t=t||0;for(var i=e.length%16,a=e.length-i,r=[0,t],n=[0,t],o=[0,0],s=[0,0],l=[2277735313,289559509],h=[1291169091,658871167],u=0;u>>0).toString(16)).slice(-8)+(\"00000000\"+(r[1]>>>0).toString(16)).slice(-8)+(\"00000000\"+(n[0]>>>0).toString(16)).slice(-8)+(\"00000000\"+(n[1]>>>0).toString(16)).slice(-8)}},e.VERSION=\"1.5.1\",e});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/fingerprint/tester',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'util/url',\n 'core/logger',\n 'core/store',\n 'core/promise',\n 'core/format',\n 'lib/uuid',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getStatus',\n 'taoClientDiagnostic/lib/fingerprint/fingerprint2'\n], function ($, _, __, url, loggerFactory, store, Promise, format, uuid, getConfig, getLabels, getStatus, Fingerprint2) {\n 'use strict';\n\n /**\n * @type {logger}\n */\n var logger = loggerFactory('taoClientDiagnostic/fingerprint');\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'fingerprint'\n };\n\n /**\n * The names of the storage keys used to persist info on the browser\n * @type {Object}\n * @private\n */\n var _storageKeys = {\n store: 'client-diagnostic',\n uuid: 'uuid',\n fingerprint: 'value',\n details: 'details',\n errors: 'errors',\n changed: 'changed'\n };\n\n /**\n * List of threshold values, for each kind of context\n * @type {Object}\n * @private\n */\n var _thresholdValues = {\n error: 0,\n storageIssue: 50,\n changedFingerprint: 90,\n success: 100\n };\n\n /**\n * A list of thresholds\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: _thresholdValues.error,\n message: __('Cannot get your fingerprint'),\n type: 'error'\n }, {\n threshold: _thresholdValues.storageIssue,\n message: __('Your fingerprint is %s. However we encountered issue while retrieving the data. Maybe your available disk space is too small'),\n type: 'warning'\n }, {\n threshold: _thresholdValues.changedFingerprint,\n message: __('Your fingerprint is %s. However it seems it has changed since the last check. It could be related to changes in your system.'),\n type: 'success'\n }, {\n threshold: _thresholdValues.success,\n message: __('Your fingerprint is %s'),\n type: 'success'\n }];\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Fingerprint'),\n status: __('Computing the fingerprint...'),\n fingerprintValue: __('Fingerprint'),\n fingerprintUUID: __('Dynamic UID'),\n fingerprintDetails: __('Fingerprint sources'),\n fingerprintChanged: __('Change since last fingerprint'),\n fingerprintErrors: __('Fingerprint errors'),\n fingerprintError: __('Fingerprint error')\n }\n ];\n\n /**\n * Performs a browser fingerprint capture\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function browserFingerprint(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs a browser fingerprint capture, then call a function to provide the result\n * @param {Function} done\n */\n start: function start(done) {\n var browserStorage;\n var browserId = 'error';\n var lastFingerprint = 'error';\n var freshBrowserId = false;\n var newFingerprint = false;\n var self = this;\n var errors = [];\n\n /**\n * Simple error handler\n * @param error\n */\n function handleError(error) {\n errors.push({\n key: 'error',\n value: '' + error\n });\n logger.error(error);\n }\n\n function getStorageKey(key) {\n return initConfig.id + '-' + _storageKeys[key];\n }\n\n store(_storageKeys.store)\n .then(function (storage) {\n browserStorage = storage;\n return Promise.all([\n browserStorage.getItem(getStorageKey('uuid')).then(function (value) {\n browserId = value;\n }),\n browserStorage.getItem(getStorageKey('fingerprint')).then(function (value) {\n lastFingerprint = value;\n })\n ]);\n })\n .catch(handleError)\n .then(function () {\n return new Promise(function (resolve) {\n new Fingerprint2().get(function (result, details) {\n var results = {};\n results[_storageKeys.fingerprint] = ('' + result).toUpperCase();\n results[_storageKeys.details] = details;\n resolve(results);\n });\n });\n })\n .then(function (results) {\n var pendingPromises = [];\n var resultFingerprint = results[_storageKeys.fingerprint];\n\n if (!browserId) {\n browserId = uuid(32, 16);\n freshBrowserId = true;\n }\n\n newFingerprint = lastFingerprint !== resultFingerprint && lastFingerprint !== 'error';\n\n // update the results with storage state\n // also detect a change in the fingerprint\n // (if the browser already have a uuid in the storage but the fingerprint changes)\n results[_storageKeys.uuid] = browserId;\n results[_storageKeys.changed] = newFingerprint && !freshBrowserId;\n\n if (browserStorage) {\n if (freshBrowserId) {\n pendingPromises.push(browserStorage.setItem(getStorageKey('uuid'), browserId));\n }\n if (newFingerprint) {\n pendingPromises.push(browserStorage.setItem(getStorageKey('fingerprint'), resultFingerprint));\n }\n }\n\n return Promise.all(pendingPromises)\n .catch(handleError)\n .then(function () {\n return results;\n });\n })\n .catch(handleError)\n .then(function (results) {\n var summary, status;\n\n results = results || {};\n if (errors.length) {\n results[_storageKeys.errors] = errors.length;\n results[_storageKeys.details] = (results[_storageKeys.details] || []).concat(errors);\n }\n\n summary = self.getSummary(results);\n status = self.getFeedback(results);\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n var sources = _(results[_storageKeys.details]).map('key').pull('error').value();\n var summary = {\n fingerprintValue: {\n message: labels.fingerprintValue,\n value: results[_storageKeys.fingerprint]\n },\n fingerprintDetails: {\n message: labels.fingerprintDetails,\n value: __('%d sources (%s)', _.size(sources), sources.join(', '))\n },\n fingerprintChanged: {\n message: labels.fingerprintChanged,\n value: results[_storageKeys.changed] ? __('Yes') : __('No')\n }\n };\n\n if (results[_storageKeys.errors]) {\n summary.fingerprintErrors = {\n message: labels.fingerprintErrors,\n value: results[_storageKeys.errors]\n };\n\n _.forEach(results[_storageKeys.details], function(details, idx) {\n if (details.key === 'error') {\n summary['fingerprintError' + idx] = {\n message: labels.fingerprintError,\n value: details.value\n };\n }\n });\n }\n\n return summary;\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Object} results\n * @returns {Object}}\n */\n getFeedback: function getFeedback(results) {\n var status, percentage;\n\n if (!results ||\n !results[_storageKeys.fingerprint] ||\n results[_storageKeys.fingerprint] === 'error') {\n percentage = _thresholdValues.error;\n } else if (results[_storageKeys.uuid] === 'error') {\n percentage = _thresholdValues.storageIssue;\n } else if (results[_storageKeys.changed]) {\n percentage = _thresholdValues.changedFingerprint;\n } else {\n percentage = _thresholdValues.success;\n }\n\n status = getStatus(percentage, _thresholds);\n status.id = initConfig.id;\n status.title = labels.title;\n status.feedback.message = format(status.feedback.message, results && results[_storageKeys.fingerprint]);\n\n return status;\n }\n };\n }\n\n return browserFingerprint;\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/fingerprint', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this, functionType=\"function\";\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper, options;\n buffer += \"\\n\\n \";\n if (helper = helpers.value) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.value); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1);\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.errors), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \\n \\n\";\n return buffer;\n }\nfunction program2(depth0,data) {\n \n \n return \" errors\";\n }\n\nfunction program4(depth0,data) {\n \n var buffer = \"\", helper, options;\n buffer += \" title=\\\"\"\n + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Errors occurred! Please see details\", options) : helperMissing.call(depth0, \"__\", \"Errors occurred! Please see details\", options)))\n + \"\\\"\";\n return buffer;\n }\n\nfunction program6(depth0,data) {\n \n \n return \" \";\n }\n\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.value), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n\\n\";\n return buffer;\n });\n});\n\n","//! moment-timezone.js\n//! version : 0.5.10\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n!function(a,b){\"use strict\";\"function\"==typeof define&&define.amd?define('lib/moment-timezone.min',[\"moment\"],b):\"object\"==typeof module&&module.exports?module.exports=b(require(\"moment\")):b(a.moment)}(this,function(a){\"use strict\";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split(\".\"),f=e[0],g=e[1]||\"\",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d0?k[0].zone.name:void 0}function q(a){return D&&!a||(D=p()),D}function r(a){return(a||\"\").toLowerCase().replace(/\\//g,\"_\")}function s(a){var b,c,d,e;for(\"string\"==typeof a&&(a=[a]),b=0;b= 2.6.0. You are using Moment.js \"+a.version+\". See momentjs.com\"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var b,c=+a,d=this.untils;for(b=0;bd&&A.moveInvalidForward&&(b=d),f= 2.9.0. You are using Moment.js \"+a.version+\".\"),a.defaultZone=b?t(b):null,a};var N=a.momentProperties;return\"[object Array]\"===Object.prototype.toString.call(N)?(N.push(\"_z\"),N.push(\"_a\")):N&&(N._z=null),w({version:\"2016j\",zones:[\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\"Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\"Africa/Nairobi|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\"Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E|39e4\",\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\"Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5\",\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\"Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4\",\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|51e5\",\"Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m|11e5\",\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\"Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|32e4\",\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\"America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\"America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0\",\"America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\"America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0\",\"America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0\",\"America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\"America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0\",\"America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\"America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0\",\"America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0\",\"America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\"America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0\",\"America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0\",\"America/Curacao|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\"America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\"America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\"America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\"America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\"America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\"America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\"America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|77e4\",\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\"America/Caracas|CMT VET VET|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\"America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\"America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|54e4\",\"America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\"America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\"America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\"America/Guayaquil|QMT ECT|5e 50|01|-1yVSK|27e5\",\"America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf|80e4\",\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\"America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\"America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\"America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\"America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\"America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0|24e4\",\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Rio_Branco|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\"America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\"America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\"America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\"America/Santiago|SMT CLT CLT CLST CLST|4G.K 50 40 40 30|010203131313131212421242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5\",\"America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\"America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|20e6\",\"America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|0121212|-2q00 1DjS0 T90 40P0 KL0 blz0|10\",\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\"Antarctica/Macquarie|AEST AEDT -00 MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\"Antarctica/Palmer|-00 ARST ART ART ARST CLT CLST|0 30 40 30 20 40 30|0121212121234356565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|40\",\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\"Asia/Riyadh|LMT AST|-36.Q -30|01|-TvD6.Q|57e5\",\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\"Asia/Atyrau|LMT +04 +05 +06|-3r.I -40 -50 -60|01232323232323232323212323232323232321212121212|-1Pc3r.I eUnr.I 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\"Asia/Qatar|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\"Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4|15e6\",\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\"Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\"Asia/Kolkata|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0|15e6\",\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\"Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|38e3\",\"Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\"Asia/Dhaka|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00|16e6\",\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\"Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0|19e4\",\"Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c|39e5\",\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0\",\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|18e5\",\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|25e4\",\"Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\"Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\"Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|81e3\",\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\"Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu|26e4\",\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0|46e5\",\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\"Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\"Asia/Urumqi|LMT XJT|-5O.k -60|01|-1GgtO.k|32e5\",\"Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u|71e5\",\"Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10|13e4\",\"Asia/Macau|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0|57e4\",\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\"Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\"Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\"Asia/Oral|LMT +04 +05 +06|-3p.o -40 -50 -60|01232323232323232121212121212121212121212121212|-1Pc3p.o eUnp.o 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\"Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\"Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0|29e5\",\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4\",\"Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u|48e5\",\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\"Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\"Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0|56e5\",\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\"Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\"Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\"Asia/Thimphu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\"Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0|38e6\",\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\"Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\"Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\"Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0|50e4\",\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\"Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\"Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\"Atlantic/South_Georgia|GST|20|0||30\",\"Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\"Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\"Australia/Lord_Howe|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Easter|EMT EAST EASST EAST EASST|7h.s 70 60 60 50|0121212121212121212121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2\",\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"EST|EST|50|0|\",\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Etc/GMT+0|GMT|0|0|\",\"Etc/GMT+1|-01|10|0|\",\"Etc/GMT+10|-10|a0|0|\",\"Etc/GMT+11|-11|b0|0|\",\"Etc/GMT+12|-12|c0|0|\",\"Etc/GMT+2|-02|20|0|\",\"Etc/GMT+3|-03|30|0|\",\"Etc/GMT+4|-04|40|0|\",\"Etc/GMT+5|-05|50|0|\",\"Etc/GMT+6|-06|60|0|\",\"Etc/GMT+7|-07|70|0|\",\"Etc/GMT+8|-08|80|0|\",\"Etc/GMT+9|-09|90|0|\",\"Etc/GMT-1|+01|-10|0|\",\"Etc/GMT-10|+10|-a0|0|\",\"Etc/GMT-11|+11|-b0|0|\",\"Etc/GMT-12|+12|-c0|0|\",\"Etc/GMT-13|+13|-d0|0|\",\"Etc/GMT-14|+14|-e0|0|\",\"Etc/GMT-2|+02|-20|0|\",\"Etc/GMT-3|+03|-30|0|\",\"Etc/GMT-4|+04|-40|0|\",\"Etc/GMT-5|+05|-50|0|\",\"Etc/GMT-6|+06|-60|0|\",\"Etc/GMT-7|+07|-70|0|\",\"Etc/GMT-8|+08|-80|0|\",\"Etc/GMT-9|+09|-90|0|\",\"Etc/UCT|UCT|0|0|\",\"Etc/UTC|UTC|0|0|\",\"Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\"Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810\",\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\"HST|HST|a0|0|\",\"Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\"Indian/Christmas|CXT|-70|0||21e2\",\"Indian/Cocos|CCT|-6u|0||596\",\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\"Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M|79e3\",\"Indian/Maldives|MMT MVT|-4S -50|01|-olgS|35e4\",\"Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\"Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q|84e4\",\"Pacific/Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0|14e3\",\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"MST|MST|70|0|\",\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Chatham|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\"Pacific/Chuuk|CHUT|-a0|0||49e3\",\"Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\"Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0|1\",\"Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0|483\",\"Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|88e4\",\"Pacific/Funafuti|TVT|-c0|0||45e2\",\"Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A|25e3\",\"Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c|125\",\"Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M|11e4\",\"Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4\",\"Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4\",\"Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk|51e2\",\"Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0|66e2\",\"Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0|28e3\",\"Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG|86e2\",\"Pacific/Pago_Pago|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0|37e2\",\"Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3\",\"Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a|12e2\",\"Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4\",\"Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\"Pacific/Palau|PWT|-90|0||21e3\",\"Pacific/Pitcairn|PNT PST|8u 80|01|18Vku|56\",\"Pacific/Pohnpei|PONT|-b0|0||34e3\",\"Pacific/Port_Moresby|PGT|-a0|0||25e4\",\"Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\"Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I|18e4\",\"Pacific/Tarawa|GILT|-c0|0||29e3\",\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121212121212121212121212121212121212121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|75e3\",\"Pacific/Wake|WAKT|-c0|0||16e3\",\"Pacific/Wallis|WFT|-c0|0||94\",\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"],\nlinks:[\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Sao_Tome\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Cairo|Egypt\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Khartoum|Africa/Juba\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"Africa/Tripoli|Libya\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|US/Alaska\",\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\"America/Argentina/Catamarca|America/Catamarca\",\"America/Argentina/Cordoba|America/Cordoba\",\"America/Argentina/Cordoba|America/Rosario\",\"America/Argentina/Jujuy|America/Jujuy\",\"America/Argentina/Mendoza|America/Mendoza\",\"America/Atikokan|America/Coral_Harbour\",\"America/Chicago|US/Central\",\"America/Curacao|America/Aruba\",\"America/Curacao|America/Kralendijk\",\"America/Curacao|America/Lower_Princes\",\"America/Denver|America/Shiprock\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Detroit|US/Michigan\",\"America/Edmonton|Canada/Mountain\",\"America/Fort_Wayne|America/Indiana/Indianapolis\",\"America/Fort_Wayne|America/Indianapolis\",\"America/Fort_Wayne|US/East-Indiana\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Indiana/Knox|America/Knox_IN\",\"America/Indiana/Knox|US/Indiana-Starke\",\"America/Jamaica|Jamaica\",\"America/Kentucky/Louisville|America/Louisville\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Manaus|Brazil/West\",\"America/Mazatlan|Mexico/BajaSur\",\"America/Mexico_City|Mexico/General\",\"America/New_York|US/Eastern\",\"America/Noronha|Brazil/DeNoronha\",\"America/Panama|America/Cayman\",\"America/Phoenix|US/Arizona\",\"America/Port_of_Spain|America/Anguilla\",\"America/Port_of_Spain|America/Antigua\",\"America/Port_of_Spain|America/Dominica\",\"America/Port_of_Spain|America/Grenada\",\"America/Port_of_Spain|America/Guadeloupe\",\"America/Port_of_Spain|America/Marigot\",\"America/Port_of_Spain|America/Montserrat\",\"America/Port_of_Spain|America/St_Barthelemy\",\"America/Port_of_Spain|America/St_Kitts\",\"America/Port_of_Spain|America/St_Lucia\",\"America/Port_of_Spain|America/St_Thomas\",\"America/Port_of_Spain|America/St_Vincent\",\"America/Port_of_Spain|America/Tortola\",\"America/Port_of_Spain|America/Virgin\",\"America/Regina|Canada/East-Saskatchewan\",\"America/Regina|Canada/Saskatchewan\",\"America/Rio_Branco|America/Porto_Acre\",\"America/Rio_Branco|Brazil/Acre\",\"America/Santiago|Chile/Continental\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Tijuana|America/Ensenada\",\"America/Tijuana|America/Santa_Isabel\",\"America/Tijuana|Mexico/BajaNorte\",\"America/Toronto|America/Montreal\",\"America/Toronto|Canada/Eastern\",\"America/Vancouver|Canada/Pacific\",\"America/Whitehorse|Canada/Yukon\",\"America/Winnipeg|Canada/Central\",\"Asia/Ashgabat|Asia/Ashkhabad\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Ho_Chi_Minh|Asia/Saigon\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Macau|Asia/Macao\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Nicosia|Europe/Nicosia\",\"Asia/Qatar|Asia/Bahrain\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Riyadh|Asia/Aden\",\"Asia/Riyadh|Asia/Kuwait\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|PRC\",\"Asia/Singapore|Singapore\",\"Asia/Taipei|ROC\",\"Asia/Tehran|Iran\",\"Asia/Thimphu|Asia/Thimbu\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Urumqi|Asia/Kashgar\",\"Atlantic/Faroe|Atlantic/Faeroe\",\"Atlantic/Reykjavik|Iceland\",\"Australia/Adelaide|Australia/South\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Broken_Hill|Australia/Yancowinna\",\"Australia/Darwin|Australia/North\",\"Australia/Hobart|Australia/Tasmania\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Melbourne|Australia/Victoria\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/NSW\",\"Etc/GMT+0|Etc/GMT\",\"Etc/GMT+0|Etc/GMT-0\",\"Etc/GMT+0|Etc/GMT0\",\"Etc/GMT+0|Etc/Greenwich\",\"Etc/GMT+0|GMT\",\"Etc/GMT+0|GMT+0\",\"Etc/GMT+0|GMT-0\",\"Etc/GMT+0|GMT0\",\"Etc/GMT+0|Greenwich\",\"Etc/UCT|UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Belgrade|Europe/Ljubljana\",\"Europe/Belgrade|Europe/Podgorica\",\"Europe/Belgrade|Europe/Sarajevo\",\"Europe/Belgrade|Europe/Skopje\",\"Europe/Belgrade|Europe/Zagreb\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Helsinki|Europe/Mariehamn\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Portugal\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|W-SU\",\"Europe/Oslo|Arctic/Longyearbyen\",\"Europe/Oslo|Atlantic/Jan_Mayen\",\"Europe/Prague|Europe/Bratislava\",\"Europe/Rome|Europe/San_Marino\",\"Europe/Rome|Europe/Vatican\",\"Europe/Warsaw|Poland\",\"Europe/Zurich|Europe/Busingen\",\"Europe/Zurich|Europe/Vaduz\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Chuuk|Pacific/Truk\",\"Pacific/Chuuk|Pacific/Yap\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kwajalein|Kwajalein\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Pohnpei|Pacific/Ponape\"]}),a});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/controller/Diagnostic/index',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'helpers',\n 'moment',\n 'layout/loading-bar',\n 'util/encode',\n 'ui/feedback',\n 'ui/dialog',\n 'taoClientDiagnostic/tools/getStatus',\n 'taoClientDiagnostic/tools/performances/tester',\n 'taoClientDiagnostic/tools/fingerprint/tester',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/fingerprint',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/details',\n 'ui/datatable',\n 'lib/moment-timezone.min'\n], function ($, _, __, helpers, moment, loadingBar, encode, feedback, dialog, getStatus, performancesTesterFactory, fingerprintTesterFactory, fingerprintTpl, detailsTpl) {\n 'use strict';\n\n /**\n * The CSS scope\n * @type {String}\n */\n var cssScope = '.diagnostic-index';\n\n /**\n * Default Time Zone for date\n * @type {string}\n */\n var defaultDateTimeZone = 'UTC';\n\n /**\n * Default date format\n * @type {string}\n */\n var defaultDateFormat = 'Y/MM/DD HH:mm:ss';\n\n /**\n * Format a number with decimals\n * @param {Number} number - The number to format\n * @param {Number} [digits] - The number of decimals\n * @returns {Number}\n */\n var formatNumber = function formatNumber(number, digits) {\n var nb = 'undefined' === typeof digits ? 2 : Math.max(0, parseInt(digits, 10));\n var factor = Math.pow(10, nb) || 1;\n return Math.round(number * factor) / factor;\n };\n\n /**\n * Format a bandwidth value\n * @param {Number} value\n * @returns {Number}\n */\n var formatBandwidth = function formatBandwidth(value) {\n var bandwidth = formatNumber(value);\n\n if (value > 100) {\n bandwidth = '> 100';\n }\n\n return bandwidth;\n };\n\n /**\n * Transform date to local timezone\n * @param {String} date\n * @returns {String}\n */\n var transformDateToLocal = function transformDateToLocal(date) {\n var d, time;\n\n if (_.isFinite(date)) {\n if (!_.isNumber(date)) {\n date = _.parseInt(date, 10);\n }\n d = new Date(date * 1000);\n time = moment.utc(d);\n } else {\n time = moment.tz(date, defaultDateTimeZone);\n }\n\n return time.tz(moment.tz.guess()).format(defaultDateFormat);\n };\n\n /**\n * Controls the readiness check page\n *\n * @type {Object}\n */\n var taoDiagnosticCtlr = {\n /**\n * Entry point of the page\n */\n start : function start() {\n var $container = $(cssScope);\n var extension = $container.data('extension') || 'taoClientDiagnostic';\n var $list = $container.find('.list');\n var dataset = $container.data('set');\n var config = $container.data('config') || {};\n var installedExtension = $container.data('installedextension') || false;\n var diagnosticUrl = helpers._url('diagnostic', 'Diagnostic', extension);\n var removeUrl = helpers._url('remove', 'Diagnostic', extension);\n var serviceUrl = helpers._url('diagnosticData', 'Diagnostic', extension);\n var performancesTester = performancesTesterFactory(config.testers.performance || {});\n var fingerprintTester = fingerprintTesterFactory(config.testers.fingerprint || {});\n\n var tools = [];\n var actions = [];\n var model = [];\n\n // request the server with a selection of readiness check results\n function request(url, selection, message) {\n if (selection && selection.length) {\n loadingBar.start();\n\n $.ajax({\n url: url,\n data: {\n id: selection\n },\n dataType : 'json',\n type: 'POST',\n error: function() {\n loadingBar.stop();\n }\n }).done(function(response) {\n loadingBar.stop();\n\n if (response && response.success) {\n if (message) {\n feedback().success(message);\n }\n $list.datatable('refresh');\n } else {\n feedback().error(__('Something went wrong ...') + '
        ' + encode.html(response.error), {encodeHtml: false});\n }\n });\n }\n }\n\n // request the server to remove the selected diagnostic-index\n function remove(selection) {\n request(removeUrl, selection, __('The readiness check result have been removed'));\n }\n\n\n // tool: page refresh\n tools.push({\n id: 'refresh',\n icon: 'reset',\n title: __('Refresh the page'),\n label: __('Refresh'),\n action: function() {\n $list.datatable('refresh');\n }\n });\n\n // tool: readiness check\n tools.push({\n id: 'launch',\n icon: 'play',\n title: __('Launch another readiness check'),\n label: __('Launch readiness check'),\n action: function() {\n window.location.href = diagnosticUrl;\n }\n });\n\n if(installedExtension){\n // tool: compatibilty via lti\n tools.push({\n id: 'lti',\n icon: 'play',\n title: __('Try a test delivery'),\n label: __('Try a test delivery'),\n action: function() {\n window.location.href = deliveryUrl;\n }\n });\n }\n\n // tool: remove selected results\n tools.push({\n id: 'remove',\n icon: 'remove',\n title: __('Remove the selected readiness check results'),\n label: __('Remove'),\n massAction: true,\n action: function(selection) {\n dialog({\n message: __('The selected readiness check results will be removed. Continue ?'),\n autoRender: true,\n autoDestroy: true,\n onOkBtn: function() {\n remove(selection);\n }\n });\n }\n });\n\n\n // tool: close tab, this won't be present in an LTI iframe\n // button should always be right most\n if(window.self === window.top) {\n tools.push({\n id: 'exitButton',\n icon: 'close',\n title: __('Exit'),\n label: __('Exit'),\n action: function() {\n window.self.close();\n }\n });\n }\n\n // action: remove the result\n actions.push({\n id: 'remove',\n icon: 'remove',\n title: __('Remove the readiness check result?'),\n action: function(id) {\n dialog({\n autoRender: true,\n autoDestroy: true,\n message: __('The readiness check result will be removed. Continue ?'),\n onOkBtn: function() {\n remove([id]);\n }\n });\n }\n });\n\n // column: Workstation identifier\n model.push({\n id: 'workstation',\n label: __('Workstation')\n });\n\n // results of fingerprinting\n if (config.testers.fingerprint && config.testers.fingerprint.enabled) {\n // column: Fingerprint of the workstation\n model.push({\n id: 'fingerprint-cell',\n label: __('Fingerprint'),\n transform: function(v, row) {\n return fingerprintTpl(row.fingerprint);\n }\n });\n\n $list.on('click.fingerprint', '.fingerprint-cell span.details', function(e) {\n var id = $(e.target).closest('tr').data('itemIdentifier');\n var row = _.find(dataset.data, {id: id});\n if (row) {\n dialog({\n content: detailsTpl(fingerprintTester.getSummary(row.fingerprint)),\n buttons: 'ok',\n autoRender: true,\n autoDestroy: true\n });\n }\n });\n }\n\n // results of browser test\n if (config.testers.browser && config.testers.browser.enabled) {\n // column: Operating system information\n model.push({\n id: 'os',\n label: __('OS')\n });\n\n // column: Browser information\n model.push({\n id: 'browser',\n label: __('Browser')\n });\n }\n\n // results of performances test\n if (config.testers.performance && config.testers.performance.enabled) {\n // column: Performances of the workstation\n model.push({\n id: 'performance',\n label: __('Performances'),\n transform: function (value) {\n var status = performancesTester.getFeedback(value);\n return status.feedback && status.feedback.message;\n }\n });\n }\n\n // results of bandwidth test\n if (config.testers.bandwidth && config.testers.bandwidth.enabled) {\n // column: Available bandwidth\n model.push({\n id: 'bandwidth',\n label: __('Bandwidth'),\n transform: formatBandwidth\n });\n }\n\n // results of intensive bandwidth test\n if (config.testers.intensive_bandwidth && config.testers.intensive_bandwidth.enabled) {\n // column: Available bandwidth\n model.push({\n id: 'intensive_bandwidth',\n label: __('Intensive bandwidth'),\n transform: formatBandwidth\n });\n }\n\n // results of upload speed test\n if (config.testers.upload && config.testers.upload.enabled) {\n // column: Available upload speed\n model.push({\n id: 'upload',\n label: __('Upload speed'),\n transform: formatBandwidth\n });\n }\n\n // column: Date of diagnostic\n model.push({\n id: 'date',\n label: __('Date'),\n transform: function(value) {\n return transformDateToLocal(value);\n }\n });\n\n $list\n .on('query.datatable', function() {\n loadingBar.start();\n })\n .on('load.datatable', function(e, data) {\n dataset = data;\n loadingBar.stop();\n })\n .datatable({\n url: serviceUrl,\n status: {\n empty: __('No readiness checks have been done!'),\n available: __('Readiness checks already done'),\n loading: __('Loading')\n },\n tools: tools,\n actions: actions,\n selectable: true,\n model: model\n }, dataset);\n }\n };\n\n // the page is always loading data when starting\n loadingBar.start();\n\n return taoDiagnosticCtlr;\n});\n\n","\n(function(c){var d=document,a='appendChild',i='styleSheet',s=d.createElement('style');s.type='text/css';d.getElementsByTagName('head')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n('.diagnostics-main-area{max-width:768px;margin:40px auto 0 auto;background:#f3f1ef;border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;padding:20px}.diagnostics-main-area h1,.diagnostics-main-area h2,.diagnostics-main-area h3{font-style:normal;font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif}.diagnostics-main-area h1{margin-bottom:20px;font-size:20px;font-size:2rem}.diagnostics-main-area h2{margin:0;font-size:14px;font-size:1.4rem}.diagnostics-main-area h3{margin-top:10px;margin-bottom:5px;font-size:12px;font-size:1.2rem}.diagnostics-main-area .status h2,.diagnostics-main-area .details h2{margin:1rem 0}.diagnostics-main-area .legend{font-style:italic;font-weight:normal;font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif;font-size:11px;font-size:1.1rem}.diagnostics-main-area .customMsg{margin-top:10px}.diagnostics-main-area .quality-bar{height:15px;background:linear-gradient(to right, #CE1431 0%, #D57915 25%, #D5A215 50%, #D5CB15 75%, #36B111 100%);opacity:.8;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin:5px 0 10px;position:relative}.diagnostics-main-area .quality-indicator{position:absolute;border-width:10px 8px;border-style:solid;border-color:#333 transparent transparent;top:-1px;height:25px;width:0}.diagnostics-main-area .quality-indicator[title]:before{font-size:11px;font-size:1.1rem;content:attr(title);position:absolute;top:-36px;left:-12px;text-align:center;width:24px;height:24px;line-height:24px;display:inline-block;background-color:#0e5d91;color:rgba(255,255,255,0.9);-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px}.diagnostics-main-area .quality-indicator.wide[title]:before{left:-16px;width:32px}.diagnostics-main-area [data-result],.diagnostics-main-area .bandwidth-box{display:none}.diagnostics-main-area [data-action=bandwidth-launcher]{margin:5px 0 10px}.diagnostics-main-area li{padding-bottom:10px}.diagnostics-main-area .intro{margin-bottom:20px}table.datatable [class^=\\\"icon-\\\"]{padding:0}table.datatable td{font-size:90%;font-weight:normal}table.datatable .progress .state:not(:first-child):before{content:\\' - \\'}table.datatable .progress .item-time:before{content:\\' (\\'}table.datatable .progress .item-time .total:before{content:\\' / \\'}table.datatable .progress .item-time:after{content:\\')\\'}.details table.matrix{border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;margin-top:5px}.details table.matrix td:first-child{min-width:30%}.diagnostic-scope h1{font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.diagnostic-scope h2{font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.diagnostic-scope form.daterange label{padding:0}.diagnostic-scope form.daterange input{margin:0 10px}.diagnostic-scope table.datatable [class^=\\\"icon-\\\"]{padding:0}.diagnostic-scope table.datatable td{font-size:90%;font-weight:normal}.diagnostic-scope .content{margin:auto}.diagnostic-scope .diagnostic-index .content,.diagnostic-scope .diagnostic-runner .content{width:100%;padding:0 20px}.diagnostic-scope .diagnostic-index .message,.diagnostic-scope .diagnostic-runner .message{padding:8px;text-align:center}.diagnostic-scope .panel .action-bar{background:#266d9c;padding:3px;overflow:hidden;color:#e7eff4;margin:40px 0 10px 0}.diagnostic-scope .panel .action-bar .btn-info{overflow:hidden;background:transparent;border:1px rgba(255,255,255,0.3) solid}.diagnostic-scope .diagnostics-main-area{margin-top:0px;max-width:800px}.diagnostic-scope .detailed-value{display:flex;justify-content:space-between}.diagnostic-scope .detailed-value.errors{color:#d8ae5b}.diagnostic-scope .detailed-value .details{font-size:2rem;cursor:pointer;color:#3e7da7}.diagnostic-scope .detailed-value .details:hover{color:#03131d}.action-bar .tool-exitButton,.action-bar [data-control=\\\"exitButton\\\"]{float:right}\\n\\n/*# sourceMappingURL=diagnostics.css.map */');\n"]} \ No newline at end of file +{"version":3,"sources":["routes.js","../tools/message.js","Authenticator/login.js","../tools/fixedDecimals.js","../tools/stats.js","../../taoQtiItem/qtiItem/core/qtiClasses.js","../../taoQtiItem/qtiItem/helper/util.js","../../taoQtiItem/qtiItem/helper/rendererConfig.js","../../taoQtiItem/qtiItem/core/Element.js","../../taoQtiItem/qtiItem/helper/xmlNsHandler.js","../../taoQtiItem/qtiItem/core/Loader.js","../../taoQtiItem/qtiItem/helper/interactionHelper.js","../../taoQtiItem/qtiRunner/core/Renderer.js","../../taoItems/assets/manager.js","../../taoItems/assets/strategies.js","../../taoQtiItem/portableElementRegistry/factory/factory.js","../../taoQtiItem/qtiCreator/helper/qtiElements.js","../../taoQtiItem/portableElementRegistry/factory/ciRegistry.js","../../taoQtiItem/portableElementRegistry/ciRegistry.js","../../taoQtiItem/portableElementRegistry/factory/icRegistry.js","../../taoQtiItem/portableElementRegistry/icRegistry.js","../../taoQtiItem/portableElementRegistry/assetManager/portableAssetStrategy.js","../../taoQtiItem/qtiCommonRenderer/renderers/config.js","../../taoQtiItem/qtiCommonRenderer/renderers/Renderer.js","../tools/getConfig.js","../tools/getLabels.js","../tools/getStatus.js","../tools/performances/tester.js","../tools/bandwidth/tester.js","../tools/upload/tester.js","../tools/getPlatformInfo.js","../tools/browser/tester.js","../tools/diagnostic/tpl/main!tpl","../tools/diagnostic/tpl/result!tpl","../tools/diagnostic/tpl/details!tpl","../tools/diagnostic/tpl/feedback!tpl","tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar","../../taoClientDiagnosticCss/diagnostics!css","../tools/diagnostic/diagnostic.js","CompatibilityChecker/diagnostics.js","../templates/diagnostic/main!tpl","Diagnostic/diagnostic.js","../lib/fingerprint/fingerprint2.js","../tools/fingerprint/tester.js","../tools/diagnostic/tpl/fingerprint!tpl","../../lib/moment-timezone.min.js","Diagnostic/index.js","../../../../../../../../../../../onLayerEnd0.js"],"names":["define","Authenticator","actions","login","CompatibilityChecker","index","Diagnostic","diagnostic","$","feedback","showMessages","container","$feedbackBox","data","error","showMessage","start","fixedDecimals","value","decimals","shift","Math","pow","abs","round","Number","_","stats","list","fieldName","variance","avg","med","middle","getValue","results","sum","sum2","min","MAX_VALUE","max","count","values","isFunction","item","forEach","undefined","push","diff","sqrt","sort","floor","ceil","average","median","key","_container","assessmentItem","responseProcessing","_simpleFeedbackRule","stylesheet","math","img","object","outcomeDeclaration","responseDeclaration","rubricBlock","associableHotspot","gap","gapImg","gapText","hotspotChoice","hottext","inlineChoice","simpleAssociableChoice","simpleChoice","associateInteraction","choiceInteraction","endAttemptInteraction","extendedTextInteraction","gapMatchInteraction","graphicAssociateInteraction","graphicGapMatchInteraction","graphicOrderInteraction","hotspotInteraction","hottextInteraction","inlineChoiceInteraction","matchInteraction","mediaInteraction","orderInteraction","prompt","selectPointInteraction","sliderInteraction","textEntryInteraction","uploadInteraction","feedbackBlock","feedbackInline","modalFeedback","customInteraction","infoControl","include","table","printedVariable","_tooltip","util","buildSerial","prefix","id","chars","i","charAt","random","length","buildId","usedIds","suffix","exists","TypeError","getUsedIds","contains","buildIdentifier","useSuffix","getUsedIdentifiers","isUndefined","replace","findInCollection","element","collectionNames","searchedSerial","found","isString","isArray","Error","each","collectionName","collection","split","nameToken","elt","parent","find","addMarkupNamespace","markup","ns","$0","$1","$2","$3","$4","indexOf","removeMarkupNamespaces","getMarkupUsedNamespaces","namespaces","original","slash","node","uniq","rendererConfigHelper","getOptionsFromArguments","args","options","placeholder","subclass","renderer","arg","isRenderer","isPlainObject","console","log","Class","loggerFactory","rendererConfig","_instances","logger","Element","extend","qtiClass","serial","rootElement","init","attributes","this","metaData","match","setAttributes","initContainer","arguments","initObject","is","getSerial","elts","getComposingElements","attr","name","prop","document","trigger","removeData","removeAttr","removeAttributes","warn","getAttributes","clone","attrNames","append","getBody","getObject","v","isA","getUsedClasses","ret","composingElts","body","location","getRootElement","setRelatedItem","setRootElement","getRelatedItem","setRenderer","getRenderer","render","rendering","_renderer","tplData","defaultData","tag","resolveUrl","merge","getData","renderTpl","replaceWith","postRender","altClassName","postRenderers","compact","getContainer","$scope","toArray","arr","type","isEmpty","addClass","className","clazz","_containClass","hasClass","removeClass","regex","RegExp","trim","toggleClass","state","isset","issetElement","unset","unsetElement","allClassStr","test","qtiElement","getElementBySerial","composingElements","getPrefix","html5Ns","prefixed","stripNs","pattern","openRegEx","closeRegEx","restoreNs","xml","tagMatch","xmlRe","tagRe","xmlMatch","imsXsd","prefixAtt","qtiClasses","xmlNsHandler","loadPortableCustomElementData","portableElement","typeIdentifier","entryPoint","libraries","setNamespace","xmlns","loadPortableCustomElementProperties","properties","rawProperties","forOwn","JSON","parse","e","Loader","classesLocation","qti","setClassesLocation","getRequiredClasses","union","loadRequiredClasses","callback","reload","requiredClass","requiredClasses","required","_this","require","QtiClass","prototype","call","getLoadedClasses","keys","loadItemData","Qti","loadContainer","outcomes","outcome","buildOutcome","addOutcomeDeclaration","feedbacks","buildElement","addModalFeedback","stylesheets","addStylesheet","responses","response","buildResponse","addResponseDeclaration","feedbackRules","forIn","fbData","buildSimpleFeedbackRule","setResponseProcessing","buildResponseProcessing","setNamespaces","setSchemaLocations","schemaLocations","setApipAccessibility","apipAccessibility","loadAndBuildElement","loadElement","loadElementData","loadElements","allElements","elementData","template","howMatch","defaultValue","correctResponse","correctResponses","size","mapping","mapEntries","areaMapping","mappingAttributes","feedbackRule","setCondition","condition","comparedValue","feedbackOutcome","feedbackThen","modalFeedbacks","feedbackElse","comparedOutcome","rp","processingType","bodyObject","bodyData","elements","eltData","setElement","defaults","bdy","loadObjectData","loadInteractionData","loadChoiceData","loadMathData","loadPicData","loadTooltipData","interaction","buildInteractionChoices","loadPciData","choices","set","matchSet","choice","addChoice","gapImgs","addGapImg","val","text","_alt","setMathML","mathML","annotations","encoding","setAnnotation","tooltip","content","pci","pic","convertChoices","outputType","c","findChoices","inputType","getChoice","getChoiceByIdentifier","shuffleChoices","r","f","j","n","k","tmp","serialToIdentifier","choiceSerial","Handlebars","Promise","interactionHelper","themeLoader","getDocumentBaseUrl","window","protocol","host","pathname","_isValidRenderer","valid","classCorrect","_renderableClasses","pos","slice","subClass","_renderableSubclasses","_dependencies","_defaults","Renderer","registerRendererClass","success","_locations","_renderers","shuffledChoices","_getClassRenderer","setOption","setOptions","opts","getOption","getCustomMessage","elementName","messageKey","messages","compile","getAssetManager","assetManager","getThemeLoader","qtiSubclass","res","decorators","isObject","before","after","renderDirect","tpl","setResponse","qtiInteraction","$container","getResponse","resetResponse","getState","setState","destroy","getLoadedRenderers","register","renderersLocations","load","self","themes","base","available","theme","path","intersection","reqClass","deps","requiredSubClasses","unload","setShuffledChoices","identificationType","pluck","getShuffledChoices","reshuffle","returnedType","getChoices","getRenderers","getLocations","url","resolve","getAbsoluteUrl","relUrl","absUrl","runtimeLocations","runtimeLocation","baseUrl","setAreaBroker","areaBroker","_areaBroker","getAreaBroker","getItemCreator","build","defaultOptions","NewRenderer","apply","urlUtil","checkStrategy","strategy","handle","assetManagerFactory","strategies","cache","parseUrl","_strategies","addStrategy","prependStrategy","unshift","setStrategies","newStrategies","setData","resolved","inputUrl","hasOwnProperty","result","resolveBy","clearCache","prependToUrl","slashcat","directory","encodeURIComponent","file","isRelative","itemCssNoCache","bust","Date","now","external","isAbsolute","toString","base64","isBase64","taomedia","eventifier","_requirejs","_defaultLoadingOptions","enabledOnly","runtimeOnly","loadModuleConfig","manifest","reject","requireConfigAliases","reqConfigs","modules","runtime","config","pciConfig","paths","runtimeModules","model","reduce","acc","conf","map","methods","_loaded","__providers","_registry","get","version","last","registerProvider","moduleName","resetProviders","loadProviders","providerLoadingStack","provider","getAllVersions","all","versions","getRuntime","assign","label","message","getCreator","creator","getBaseUrl","loadRuntimes","loadPromise","then","loadStack","configLoadingStack","_pcis","moduleConfigs","catch","err","loadCreators","requiredCreatorHooks","requiredCreators","pciModel","hook","enabled","creators","creatorHook","getTypeIdentifier","findIndex","module","enable","disable","isEnabled","__","QtiElements","classes","itemBody","parents","abstract","atomicBlock","atomicInline","simpleBlock","simpleInline","flowStatic","blockStatic","inlineStatic","flow","tableCell","caption","xhtml","col","colgroup","div","dl","dt","dd","hr","li","ol","ul","param","tbody","tfoot","thead","td","th","tr","a","abbr","acronym","b","big","cite","code","dfn","em","kbd","q","samp","small","span","strong","sub","sup","tt","var","blockquote","address","h1","h2","h3","h4","h5","h6","p","pre","br","textRun","blockInteraction","inlineInteraction","templateElement","templateBlock","templateInline","drawingInteraction","graphicInteraction","containable","children","getAllowedContainersElements","getAllowedContainers","jqSelector","substring","filter","getParentClasses","aClass","intersect","getChildClasses","getAllowedContents","recursive","checked","contain","child","isAllowedClass","qtiContainerClass","qtiContentClass","allowedClasses","cacheType","isBlock","isInline","topClass","getAvailableAuthoringElements","description","icon","short","tags","portableElementRegistry","qtiElements","getAuthoringData","on","ciRegistry","registry","providers","icRegistry","getBaseUrlByIdentifier","source","relative","fullmatch","relPath","context","assetStrategies","portableAssetStrategy","itemThemes","moduleConfig","root_url","locations","simpleChoice.choiceInteraction","simpleChoice.orderInteraction","simpleAssociableChoice.matchInteraction","simpleAssociableChoice.associateInteraction","enableDragAndDrop","associate","associateDragAndDrop","gapMatch","gapMatchDragAndDrop","graphicGapMatch","graphicGapMatchDragAndDrop","order","orderDragAndDrop","omit","level","parseInt","percentage","thresholds","len","step","status","quality","threshold","async","helpers","getConfig","getLabels","getStatus","loadItem","done","qtiJsonFile","urlTokens","extension","fullpath","s","contexts","loader","itemData","duration","end","performance","appendTo","remove","_second","performancesTester","initConfig","labels","_messages","idx","_samples","samples","_defaultSamples","sample","_sampleBaseId","timeout","_defaultTimeout","nb","occurrences","_defaultOccurrencesCount","tests","cb","partial","iterations","series","measures","summary","getFeedback","getSummary","performancesMin","performancesMax","performancesAverage","optimal","range","_thresholds","title","download","timeoutId","request","bandwidth","base_www","XMLHttpRequest","open","setRequestHeader","onload","bytes","seconds","speed","clearTimeout","_mega","onerror","delay","send","bandwidthTester","_downloadData","bind","bandwidthMin","bandwidthMax","bandwidthAverage","bandwidthUnit","unit","ideal","maxTestTakers","legend","wide","_kilo","10KB","100KB","1MB","urlHelper","uploadAvg","uploadMax","generateStr","possible","upload","route","str","ajax","xhr","startTime","addEventListener","evt","passedTime","lengthComputable","time","loaded","uploadTester","avgSpeed","totalSpeed","maxSpeed","getTesterUrl","win","action","controller","navigator","screen","params","ua","userAgent","ActiveXObject","opera","chrome","createElement","Worker","applicationCache","history","pushState","documentElement","webkitRequestFullScreen","w","width","h","height","defaultConfig","browserVersionAction","browserVersionController","browserVersionExtension","testerUrl","fail","getPlatformInfo","browserTester","post","customMsgRenderer","customMsg","_placeHolders","CURRENT_BROWSER","browser","CURRENT_OS","os","currentBrowser","browserVersion","currentOs","osVersion","hb","depth0","partials","program1","stack1","helper","buffer","header","hash","functionType","escapeExpression","program3","info","program5","setup","program7","helperMissing","compilerInfo","inverse","noop","fn","program","requireSchoolName","button","details","component","store","mainTpl","resultTpl","detailsTpl","feedbackTpl","qualityBarTpl","diagnosticFactory","setTemplate","controls","getControl","getInputValue","$control","setInputValue","toggleControl","removeProp","manageSchoolName","$school","getElement","defer","which","preventDefault","$start","click","storage","setItem","getItem","storeParams","school","$component","$status","$results","run","$btn","closest","$result","$details","actionStore","actionDropId","storeAllRuns","configurableText","changeStatus","html","getCustomMsg","addCustomFeedbackMsg","msg","hasFailed","addResult","$main","$indicator","fadeIn","animate","left","outerWidth","prepare","empty","finish","deleteIdentifier","doCheck","testerConfig","testerId","tester","testerFactory","customMsgKey","information","scores","mapValues","stringify","testers","total","diagTotalCheckResult","loadingBar","$contentArea","stop","diagInstructions","program2","program4","program6","program8","actionbar","diagnosticTpl","cssScope","taoDiagnosticRunnerCtlr","installTester","workstation","$workstation","autoStart","$list","$panel","indexUrl","_url","workstationUrl","buttons","href","top","close","renderTo","t","amd","exports","swfContainerId","swfPath","detectScreenOrientation","sortPluginsFor","userDefinedFonts","nativeForEach","Array","nativeMap","preprocessor","userAgentKey","languageKey","colorDepthKey","pixelRatioKey","hardwareConcurrencyKey","screenResolutionKey","availableScreenResolutionKey","timezoneOffsetKey","sessionStorageKey","localStorageKey","indexedDbKey","addBehaviorKey","openDatabaseKey","cpuClassKey","platformKey","doNotTrackKey","pluginsKey","canvasKey","webglKey","adBlockKey","hasLiedLanguagesKey","hasLiedResolutionKey","hasLiedOsKey","hasLiedBrowserKey","touchSupportKey","customEntropyFunction","fontsKey","join","x64hash128","customFunction","excludeUserAgent","getUserAgent","excludeLanguage","language","userLanguage","browserLanguage","systemLanguage","excludeColorDepth","colorDepth","excludePixelRatio","getPixelRatio","devicePixelRatio","excludeScreenResolution","getScreenResolution","excludeAvailableScreenResolution","getAvailableScreenResolution","availWidth","availHeight","excludeTimezoneOffset","getTimezoneOffset","excludeSessionStorage","hasSessionStorage","hasLocalStorage","excludeIndexedDB","hasIndexedDB","excludeAddBehavior","addBehavior","excludeOpenDatabase","openDatabase","excludeCpuClass","getNavigatorCpuClass","excludePlatform","getNavigatorPlatform","excludeDoNotTrack","getDoNotTrack","excludeCanvas","isCanvasSupported","getCanvasFp","excludeWebGL","isWebGlSupported","getWebglFp","excludeAdBlock","getAdBlock","excludeHasLiedLanguages","getHasLiedLanguages","excludeHasLiedResolution","getHasLiedResolution","excludeHasLiedOs","getHasLiedOs","excludeHasLiedBrowser","getHasLiedBrowser","excludeJsFonts","flashFontsKey","jsFontsKey","excludeFlashFonts","hasSwfObjectLoaded","hasMinFlashInstalled","loadSwfAndDetectFonts","setTimeout","extendedJsFonts","concat","o","l","getElementsByTagName","u","d","g","style","position","fontSize","lineHeight","innerHTML","fontFamily","appendChild","m","T","offsetWidth","offsetHeight","S","x","E","M","A","y","removeChild","excludePlugins","isIE","excludeIEPlugins","getIEPlugins","getRegularPlugins","plugins","pluginsShouldBeSorted","suffixes","Object","getOwnPropertyDescriptor","excludeTouchSupport","getTouchSupport","excludeHardwareConcurrency","getHardwareConcurrency","sessionStorage","localStorage","indexedDB","hardwareConcurrency","cpuClass","platform","doNotTrack","msDoNotTrack","maxTouchPoints","msMaxTouchPoints","createEvent","display","getContext","rect","isPointInPath","textBaseline","fillStyle","fillRect","dontUseFakeFontInCanvas","font","fillText","globalCompositeOperation","beginPath","arc","PI","closePath","fill","toDataURL","clearColor","DEPTH_TEST","depthFunc","LEQUAL","clear","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","getExtension","getParameter","MAX_TEXTURE_MAX_ANISOTROPY_EXT","getWebglCanvas","createBuffer","bindBuffer","ARRAY_BUFFER","Float32Array","bufferData","STATIC_DRAW","itemSize","numItems","createProgram","createShader","VERTEX_SHADER","shaderSource","compileShader","FRAGMENT_SHADER","attachShader","linkProgram","useProgram","vertexPosAttrib","getAttribLocation","offsetUniform","getUniformLocation","enableVertexAttribArray","vertexPosArray","vertexAttribPointer","FLOAT","uniform2f","drawArrays","TRIANGLE_STRIP","canvas","getSupportedExtensions","ALIASED_LINE_WIDTH_RANGE","ALIASED_POINT_SIZE_RANGE","ALPHA_BITS","getContextAttributes","antialias","BLUE_BITS","DEPTH_BITS","GREEN_BITS","MAX_COMBINED_TEXTURE_IMAGE_UNITS","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","MAX_TEXTURE_SIZE","MAX_VARYING_VECTORS","MAX_VERTEX_ATTRIBS","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_VIEWPORT_DIMS","RED_BITS","RENDERER","SHADING_LANGUAGE_VERSION","STENCIL_BITS","VENDOR","VERSION","UNMASKED_VENDOR_WEBGL","UNMASKED_RENDERER_WEBGL","getShaderPrecisionFormat","HIGH_FLOAT","precision","rangeMin","rangeMax","MEDIUM_FLOAT","LOW_FLOAT","HIGH_INT","MEDIUM_INT","LOW_INT","getElementsByClassName","languages","substr","toLowerCase","oscpu","productSub","eval","toSource","WebGLRenderingContext","appName","swfobject","hasFlashPlayerVersion","addFlashDivNode","setAttribute","onReady","allowScriptAccess","menu","embedSWF","x64Add","x64Multiply","x64Rotl","x64LeftShift","x64Xor","x64Fmix","charCodeAt","format","uuid","Fingerprint2","browserFingerprint","handleError","errors","getStorageKey","_storageKeys","browserStorage","browserId","lastFingerprint","freshBrowserId","newFingerprint","fingerprint","toUpperCase","pendingPromises","resultFingerprint","changed","sources","pull","fingerprintValue","fingerprintDetails","fingerprintChanged","fingerprintErrors","fingerprintError","_thresholdValues","storageIssue","changedFingerprint","fingerprintUUID","moment","abbrs","offsets","untils","population","_set","toTimeString","at","offset","zone","offsetScore","abbrScore","getFullYear","I","H","Intl","DateTimeFormat","resolvedOptions","timeZone","z","scoreOffsetAt","D","F","G","zones","links","dataVersion","didShowError","_a","_tzm","utc","isMoment","add","tz","B","_z","C","J","K","L","_index","moveAmbiguousForward","moveInvalidForward","_zones","_links","_names","link","zoneExists","guess","names","Zone","unpack","unpackBase60","needsOffset","defaultZone","updateOffset","_isUTC","_d","utcOffset","zoneName","zoneAbbr","setDefault","N","momentProperties","encode","dialog","performancesTesterFactory","fingerprintTesterFactory","fingerprintTpl","defaultDateTimeZone","defaultDateFormat","formatNumber","number","digits","factor","formatBandwidth","transformDateToLocal","date","isFinite","isNumber","taoDiagnosticCtlr","selection","dataType","datatable","encodeHtml","removeUrl","dataset","installedExtension","diagnosticUrl","serviceUrl","fingerprintTester","tools","deliveryUrl","massAction","autoRender","autoDestroy","onOkBtn","transform","row","target","intensive_bandwidth","loading","selectable","cssText","createTextNode"],"mappings":"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","file":"routes.js","sourcesContent":["/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n * \n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n * \n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n * \n * Copyright (c) 2015 Open Assessment Technologies SA\n */\n\n\ndefine('taoClientDiagnostic/controller/routes',{\n 'Authenticator' : {\n 'actions' : {\n 'login' : 'controller/Authenticator/login'\n }\n },\n 'CompatibilityChecker' : {\n 'actions' : {\n 'index' : 'controller/CompatibilityChecker/diagnostics'\n }\n },\n 'Diagnostic' : {\n 'actions' : {\n 'index' : 'controller/Diagnostic/index',\n 'diagnostic' : 'controller/Diagnostic/diagnostic'\n }\n }\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author Camille Moyon \n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/message',[\n 'jquery',\n 'ui/feedback'\n], function ($, feedback) {\n 'use strict';\n\n /**\n * Displays the messages set into a markup\n * @param {String|jQuery|HTMLElement} container\n */\n function showMessages(container) {\n var $feedbackBox = $(container);\n\n if ($feedbackBox.data('error')) {\n feedback().error($feedbackBox.data('error'));\n }\n if ($feedbackBox.data('message')) {\n feedback().error($feedbackBox.data('message'));\n }\n }\n\n /**\n * @exports\n */\n return showMessages;\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author Camille Moyon \n */\ndefine('taoClientDiagnostic/controller/Authenticator/login',[\n 'jquery',\n 'taoClientDiagnostic/tools/message'\n], function ($, showMessage) {\n 'use strict';\n\n /**\n * @exports\n */\n return {\n start: function() {\n showMessage('#feedback-box');\n }\n };\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/fixedDecimals',[],function () {\n 'use strict';\n\n /**\n * Rounds a value to a fixed number of decimals\n * @param {Number} value The value to round\n * @param {Number} decimals The number of decimal\n * @returns {Number}\n */\n var fixedDecimals = function fixedDecimals(value, decimals) {\n var shift = Math.pow(10, Math.abs(decimals || 1));\n return Math.round(Number(value) * shift) / shift || 0;\n };\n\n return fixedDecimals;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/stats',[\n 'lodash',\n 'taoClientDiagnostic/tools/fixedDecimals'\n], function (_, fixedDecimals) {\n 'use strict';\n\n /**\n * Computes some stats on a list from a particular field\n * @param {Array|Object} list The list to compute stats on\n * @param {String|Function} fieldName The name of the field to process, or a callback method returning the value\n * @param {Number} [decimals] Optional number of fixed decimals for values\n * @returns {Object}\n */\n var stats = function stats(list, fieldName, decimals) {\n var sum = 0;\n var sum2 = 0;\n var min = Number.MAX_VALUE;\n var max = 0;\n var variance;\n var count = 0;\n var values = [];\n var avg;\n var med;\n var middle;\n var getValue;\n var results;\n\n if (_.isFunction(fieldName)) {\n getValue = fieldName;\n } else {\n getValue = function(item) {\n return item && item[fieldName] || 0;\n };\n }\n\n // process 1st pass stats: compute sum, min and max values\n _.forEach(list, function(item) {\n var value;\n if (undefined !== item) {\n value = getValue(item);\n values.push(value);\n min = Math.min(min, value);\n max = Math.max(max, value);\n sum += value;\n count++;\n }\n });\n\n // compute the average value\n avg = sum / (count || 1);\n\n // process 2nd pass stats: compute variance\n _.forEach(values, function(value) {\n var diff = value - avg;\n sum2 += diff * diff;\n });\n\n // compute de standard variance\n variance = count > 1 ? Math.sqrt(sum2 / (count - 1)) : 0;\n\n // compute the median value\n values.sort();\n middle = count / 2;\n med = (values[Math.floor(middle)] + values[Math.ceil(middle)]) / 2;\n\n results = {\n min : min,\n max : max,\n sum : sum,\n count : count,\n average : avg,\n median : med,\n variance : variance\n };\n\n if (decimals) {\n _.forEach(results, function(value, key) {\n results[key] = fixedDecimals(value, decimals);\n });\n }\n\n results.values = list;\n return results;\n };\n\n return stats;\n});\n\n","define('taoQtiItem/qtiItem/core/qtiClasses',[], function(){\n return {\n '_container' : 'taoQtiItem/qtiItem/core/Container',\n 'assessmentItem' : 'taoQtiItem/qtiItem/core/Item',\n 'responseProcessing' : 'taoQtiItem/qtiItem/core/ResponseProcessing',\n '_simpleFeedbackRule' : 'taoQtiItem/qtiItem/core/response/SimpleFeedbackRule',\n 'stylesheet' : 'taoQtiItem/qtiItem/core/Stylesheet',\n 'math' : 'taoQtiItem/qtiItem/core/Math',\n 'img' : 'taoQtiItem/qtiItem/core/Img',\n 'object' : 'taoQtiItem/qtiItem/core/Object',\n 'outcomeDeclaration' : 'taoQtiItem/qtiItem/core/variables/OutcomeDeclaration',\n 'responseDeclaration' : 'taoQtiItem/qtiItem/core/variables/ResponseDeclaration',\n 'rubricBlock' : 'taoQtiItem/qtiItem/core/RubricBlock',\n 'associableHotspot' : 'taoQtiItem/qtiItem/core/choices/AssociableHotspot',\n 'gap' : 'taoQtiItem/qtiItem/core/choices/Gap',\n 'gapImg' : 'taoQtiItem/qtiItem/core/choices/GapImg',\n 'gapText' : 'taoQtiItem/qtiItem/core/choices/GapText',\n 'hotspotChoice' : 'taoQtiItem/qtiItem/core/choices/HotspotChoice',\n 'hottext' : 'taoQtiItem/qtiItem/core/choices/Hottext',\n 'inlineChoice' : 'taoQtiItem/qtiItem/core/choices/InlineChoice',\n 'simpleAssociableChoice' : 'taoQtiItem/qtiItem/core/choices/SimpleAssociableChoice',\n 'simpleChoice' : 'taoQtiItem/qtiItem/core/choices/SimpleChoice',\n 'associateInteraction' : 'taoQtiItem/qtiItem/core/interactions/AssociateInteraction',\n 'choiceInteraction' : 'taoQtiItem/qtiItem/core/interactions/ChoiceInteraction',\n 'endAttemptInteraction' : 'taoQtiItem/qtiItem/core/interactions/EndAttemptInteraction',\n 'extendedTextInteraction' : 'taoQtiItem/qtiItem/core/interactions/ExtendedTextInteraction',\n 'gapMatchInteraction' : 'taoQtiItem/qtiItem/core/interactions/GapMatchInteraction',\n 'graphicAssociateInteraction' : 'taoQtiItem/qtiItem/core/interactions/GraphicAssociateInteraction',\n 'graphicGapMatchInteraction' : 'taoQtiItem/qtiItem/core/interactions/GraphicGapMatchInteraction',\n 'graphicOrderInteraction' : 'taoQtiItem/qtiItem/core/interactions/GraphicOrderInteraction',\n 'hotspotInteraction' : 'taoQtiItem/qtiItem/core/interactions/HotspotInteraction',\n 'hottextInteraction' : 'taoQtiItem/qtiItem/core/interactions/HottextInteraction',\n 'inlineChoiceInteraction' : 'taoQtiItem/qtiItem/core/interactions/InlineChoiceInteraction',\n 'matchInteraction' : 'taoQtiItem/qtiItem/core/interactions/MatchInteraction',\n 'mediaInteraction' : 'taoQtiItem/qtiItem/core/interactions/MediaInteraction',\n 'orderInteraction' : 'taoQtiItem/qtiItem/core/interactions/OrderInteraction',\n 'prompt' : 'taoQtiItem/qtiItem/core/interactions/Prompt',\n 'selectPointInteraction' : 'taoQtiItem/qtiItem/core/interactions/SelectPointInteraction',\n 'sliderInteraction' : 'taoQtiItem/qtiItem/core/interactions/SliderInteraction',\n 'textEntryInteraction' : 'taoQtiItem/qtiItem/core/interactions/TextEntryInteraction',\n 'uploadInteraction' : 'taoQtiItem/qtiItem/core/interactions/UploadInteraction',\n 'feedbackBlock' : 'taoQtiItem/qtiItem/core/feedbacks/FeedbackBlock',\n 'feedbackInline' : 'taoQtiItem/qtiItem/core/feedbacks/FeedbackInline',\n 'modalFeedback' : 'taoQtiItem/qtiItem/core/feedbacks/ModalFeedback',\n 'customInteraction' : 'taoQtiItem/qtiItem/core/interactions/CustomInteraction',\n 'infoControl' : 'taoQtiItem/qtiItem/core/PortableInfoControl',\n 'include' : 'taoQtiItem/qtiItem/core/Include',\n 'table' : 'taoQtiItem/qtiItem/core/Table',\n 'printedVariable' : 'taoQtiItem/qtiItem/core/PrintedVariable',\n '_tooltip' : 'taoQtiItem/qtiItem/core/Tooltip'\n };\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA\n *\n */\n\n/**\n * Common basic util functions\n */\ndefine('taoQtiItem/qtiItem/helper/util',['lodash'], function(_){\n 'use strict';\n\n var util = {\n\n buildSerial : function buildSerial(prefix){\n var id = prefix || '';\n var chars = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n for(var i = 0; i < 22; i++){\n id += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n return id;\n },\n\n /**\n * Generates an id for a Qti element (the generation is different from identifier)\n * @param {Object} item - the element related item\n * @param {String} prefix - identifier prefix\n * @returns {String} the identifier\n * @throws {TypeError} if there is no item\n */\n buildId : function buildId(item, prefix){\n var id;\n var usedIds;\n var i = 1;\n var suffix = '';\n var exists = false;\n\n if(!item){\n throw new TypeError('A item is required to generate a unique identifier');\n }\n\n usedIds = item.getUsedIds();\n\n do{\n exists = false;\n id = prefix + suffix;\n if(_.contains(usedIds, id)){\n exists = true;\n suffix = '_' + i;\n i++;\n }\n } while(exists);\n\n return id;\n },\n\n /**\n * Generates an identifier for a Qti element\n * @param {Object} item - the element related item\n * @param {String} prefix - identifier prefix\n * @param {Boolean} [useSuffix = true] - add a \"_ + index\" to the identifier\n * @returns {String} the identifier\n * @throws {TypeError} if there is no item\n */\n buildIdentifier : function buildIdentifier(item, prefix, useSuffix){\n\n var id;\n var usedIds;\n var suffix = '';\n var i = 1;\n var exists = false;\n\n if(!item){\n throw new TypeError('A item is required to generate a unique identifier');\n }\n\n if(!prefix){\n throw new TypeError('Prefix is required to build an identifier');\n }\n\n usedIds = item.getUsedIdentifiers();\n useSuffix = _.isUndefined(useSuffix) ? true : useSuffix;\n\n if(prefix){\n prefix = prefix.replace(/_[0-9]+$/ig, '_') //detect incremental id of type choice_12, response_3, etc.\n .replace(/[^a-zA-Z0-9_]/ig, '_')\n .replace(/(_)+/ig, '_');\n if(useSuffix){\n suffix = '_' + i;\n }\n }\n\n do{\n exists = false;\n id = prefix + suffix;\n if(usedIds[id]){\n exists = true;\n suffix = '_' + i;\n i++;\n }\n } while(exists);\n\n return id;\n },\n\n findInCollection : function findInCollection(element, collectionNames, searchedSerial){\n\n var found = null;\n\n if(_.isString(collectionNames)){\n collectionNames = [collectionNames];\n }\n\n if(_.isArray(collectionNames)){\n\n _.each(collectionNames, function(collectionName){\n\n //get collection to search in (resolving case like interaction.choices.0\n var collection = element;\n _.each(collectionName.split('.'), function(nameToken){\n collection = collection[nameToken];\n });\n var elt = collection[searchedSerial];\n\n if(elt){\n found = {'parent' : element, 'element' : elt};\n return false;//break the each loop\n }\n\n //search inside each elements:\n _.each(collection, function(elt){\n\n if(_.isFunction(elt.find)){\n found = elt.find(searchedSerial);\n if(found){\n return false;//break the each loop\n }\n }\n\n });\n\n if(found){\n return false;//break the each loop\n }\n\n });\n\n }else{\n\n throw new Error('invalid argument : collectionNames must be an array or a string');\n }\n\n return found;\n },\n addMarkupNamespace : function addMarkupNamespace(markup, ns){\n if(ns) {\n markup = markup.replace(/<(\\/)?([a-z:]+)(\\s?)([^><]*)>/g, function($0, $1, $2, $3, $4){\n if($2.indexOf(':')>0){\n return $0;\n }\n $1 = $1 || '';\n $3 = $3 || '';\n return '<'+ $1 + ns + ':'+$2+$3+$4+'>';\n });\n return markup;\n }\n return markup;\n\n },\n removeMarkupNamespaces : function removeMarkupNamespace(markup){\n return markup.replace(/<(\\/)?(\\w*):([^>]*)>/g, '<$1$3>');\n },\n getMarkupUsedNamespaces : function getMarkupUsedNamespaces(markup){\n var namespaces = [];\n markup.replace(/<(\\/)?(\\w*):([^>]*)>/g, function(original, slash, ns, node){\n namespaces.push(ns);\n return '<'+slash+node+'>';\n });\n return _.uniq(namespaces);\n }\n };\n\n return util;\n});\n\n","define('taoQtiItem/qtiItem/helper/rendererConfig',['lodash', 'jquery'], function(_, $){\n\n var rendererConfigHelper = {};\n\n rendererConfigHelper.getOptionsFromArguments = function(args){\n\n var options = {\n data : {},\n placeholder : null,\n subclass : '',\n renderer : null\n };\n \n _.each(args, function(arg){\n if(arg){\n if(arg.isRenderer){\n options.renderer = arg;\n }else if(arg instanceof $ && arg.length){\n options.placeholder = arg;\n }else if(_.isString(arg)){\n options.subclass = arg;\n }else if(_.isPlainObject(arg)){\n options.data = arg;\n }else{\n console.log('invalid arg', arg, args);\n }\n }\n });\n \n return options;\n };\n \n return rendererConfigHelper;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA\n *\n */\ndefine('taoQtiItem/qtiItem/core/Element',[\n 'jquery',\n 'lodash',\n 'class',\n 'core/logger',\n 'taoQtiItem/qtiItem/helper/util',\n 'taoQtiItem/qtiItem/helper/rendererConfig'\n], function($, _, Class, loggerFactory, util, rendererConfig){\n 'use strict';\n\n var _instances = {};\n\n /**\n * Create a logger\n */\n var logger = loggerFactory('taoQtiItem/qtiItem/core/Element');\n\n var Element = Class.extend({\n qtiClass : '',\n serial : '',\n rootElement : null,\n init : function(serial, attributes){\n\n //init own attributes\n this.attributes = {};\n\n //system properties, for item creator internal use only\n this.metaData = {};\n\n //init call in the format init(attributes)\n if(typeof (serial) === 'object'){\n attributes = serial;\n serial = '';\n }\n\n if(!serial){\n serial = util.buildSerial(this.qtiClass + '_');\n }\n\n if(serial && (typeof serial !== 'string' || !serial.match(/^[a-z_0-9]*$/i))){\n throw 'invalid QTI serial : (' + (typeof serial) + ') ' + serial;\n }\n\n if(!_instances[serial]){\n _instances[serial] = this;\n this.serial = serial;\n this.setAttributes(attributes || {});\n }else{\n throw 'a QTI Element with the same serial already exists ' + serial;\n }\n\n if(typeof this.initContainer === 'function'){\n this.initContainer(arguments[2] || '');\n }\n if(typeof this.initObject === 'function'){\n this.initObject();\n }\n },\n is : function(qtiClass){\n return (qtiClass === this.qtiClass);\n },\n placeholder : function(){\n return '{{' + this.serial + '}}';\n },\n getSerial : function(){\n return this.serial;\n },\n getUsedIdentifiers : function(){\n var usedIds = {};\n var elts = this.getComposingElements();\n for(var i in elts){\n var elt = elts[i];\n var id = elt.attr('identifier');\n if(id){\n //warning: simplistic implementation, allow only one unique identifier in the item no matter the element class/type\n usedIds[id] = elt;\n }\n }\n return usedIds;\n },\n\n /**\n * Get the ids in use. (id is different from identifier)\n * @returns {Array} of the ids in use\n */\n getUsedIds : function getUsedIds(){\n var usedIds = [];\n _.forEach(this.getComposingElements(), function(elt){\n var id = elt.attr('id');\n if(id && !_.contains(usedIds, id)){\n usedIds.push(id);\n }\n });\n return usedIds;\n },\n\n attr : function(name, value){\n if(name){\n if(value !== undefined){\n this.attributes[name] = value;\n }else{\n if(typeof (name) === 'object'){\n for(var prop in name){\n this.attr(prop, name[prop]);\n }\n }else if(typeof (name) === 'string'){\n if(this.attributes[name] === undefined){\n return undefined;\n }else{\n return this.attributes[name];\n }\n }\n }\n }\n return this;\n },\n data : function(name, value){\n if(name){\n if(value !== undefined){\n this.metaData[name] = value;\n $(document).trigger('metaChange.qti-widget', {element : this, key : name, value : value});\n }else{\n if(typeof (name) === 'object'){\n for(var prop in name){\n this.data(prop, name[prop]);\n }\n }else if(typeof (name) === 'string'){\n if(this.metaData[name] === undefined){\n return undefined;\n }else{\n return this.metaData[name];\n }\n }\n }\n }\n return this;\n },\n removeData : function(name){\n delete this.metaData[name];\n return this;\n },\n removeAttr : function(name){\n return this.removeAttributes(name);\n },\n setAttributes : function(attributes){\n if (!_.isPlainObject(attributes)) {\n logger.warn('attributes should be a plain object');\n }\n this.attributes = attributes;\n return this;\n },\n getAttributes : function(){\n return _.clone(this.attributes);\n },\n removeAttributes : function(attrNames){\n if(typeof (attrNames) === 'string'){\n attrNames = [attrNames];\n }\n for(var i in attrNames){\n delete this.attributes[attrNames[i]];\n }\n return this;\n },\n getComposingElements : function(){\n var elts = {};\n function append(element){\n elts[element.getSerial()] = element;//pass individual object by ref, instead of the whole list(object)\n elts = _.extend(elts, element.getComposingElements());\n }\n if(typeof this.initContainer === 'function'){\n append(this.getBody());\n }\n if(typeof this.initObject === 'function'){\n append(this.getObject());\n }\n _.each(this.metaData, function(v){\n if(Element.isA(v, '_container')){\n append(v);\n }else if(_.isArray(v)){\n _.each(v, function(v){\n if(Element.isA(v, '_container')){\n append(v);\n }\n });\n }\n });\n return elts;\n },\n getUsedClasses : function(){\n\n var ret = [this.qtiClass],\n composingElts = this.getComposingElements();\n\n _.each(composingElts, function(elt){\n ret.push(elt.qtiClass);\n });\n\n return _.uniq(ret);\n },\n find : function(serial){\n\n var found = null;\n var object,\n body;\n\n if(typeof this.initObject === 'function'){\n object = this.getObject();\n if(object.serial === serial){\n found = {'parent' : this, 'element' : object, 'location' : 'object'};\n }\n }\n\n if(!found && typeof this.initContainer === 'function'){\n body = this.getBody();\n if (body.serial === serial) {\n found = {'parent' : this, 'element' : body, 'location' : 'body'};\n } else {\n found = this.getBody().find(serial, this);\n }\n }\n\n return found;\n },\n parent : function(){\n var item = this.getRootElement();\n if(item){\n var found = item.find(this.getSerial());\n if(found){\n return found.parent;\n }\n }\n return null;\n },\n /**\n * @deprecated - use setRootElement() instead\n */\n setRelatedItem : function(item) {\n logger.warn('Deprecated use of setRelatedItem()');\n this.setRootElement(item);\n },\n setRootElement : function(item){\n var composingElts,\n i;\n\n if(Element.isA(item, 'assessmentItem')){\n this.rootElement = item;\n composingElts = this.getComposingElements();\n for(i in composingElts){\n composingElts[i].setRootElement(item);\n }\n }\n\n },\n /**\n * @deprecated - use getRootElement() instead\n */\n getRelatedItem : function(){\n logger.warn('Deprecated use of getRelatedItem()');\n return this.getRootElement();\n },\n getRootElement : function(){\n var ret = null;\n if(Element.isA(this.rootElement, 'assessmentItem')){\n ret = this.rootElement;\n }\n return ret;\n },\n setRenderer : function(renderer){\n if(renderer && renderer.isRenderer){\n this.renderer = renderer;\n var elts = this.getComposingElements();\n for(var serial in elts){\n elts[serial].setRenderer(renderer);\n }\n }else{\n throw 'invalid qti rendering engine';\n }\n },\n getRenderer : function(){\n return this.renderer;\n },\n /**\n * Render the element. Arguments are all optional and can be given in any order.\n * Argument parsing is based on argument type and is done by taoQtiItem/qtiItem/core/helpers/rendererConfig\n * @param {Renderer} renderer - specify which renderer to use\n * @param {jQuery} placeholder - DOM element that will be replaced by the rendered element\n * @param {Object} data - template data for the rendering\n * @param {String} subclass - subclass enables different behaviour of the same qti class in different contexts (eg. we could have different rendering for simpleChoice according to where it is being used: simpleChoice.orderInteraction, simpleChoice.choiceInteraction...)\n * @returns {String} - the rendered element as an HTML string\n */\n render : function render(){\n var args = rendererConfig.getOptionsFromArguments(arguments);\n var _renderer = args.renderer || this.getRenderer();\n var rendering;\n\n var tplData = {},\n defaultData = {\n 'tag' : this.qtiClass,\n 'serial' : this.serial,\n 'attributes' : this.getAttributes()\n };\n\n if(!_renderer){\n throw new Error('render: no renderer found for the element ' + this.qtiClass + ':' + this.serial);\n }\n\n if(typeof this.initContainer === 'function'){\n //allow body to have a different renderer if it has its own renderer set\n defaultData.body = this.getBody().render(args.renderer);\n }\n if(typeof this.initObject === 'function'){\n defaultData.object = {\n attributes : this.object.getAttributes()\n };\n defaultData.object.attributes.data = _renderer.resolveUrl(this.object.attr('data'));\n }\n\n tplData = _.merge(defaultData, args.data || {});\n tplData = _renderer.getData(this, tplData, args.subclass);\n rendering = _renderer.renderTpl(this, tplData, args.subclass);\n if(args.placeholder){\n args.placeholder.replaceWith(rendering);\n }\n\n return rendering;\n },\n postRender : function(data, altClassName, renderer){\n\n var postRenderers = [];\n var _renderer = renderer || this.getRenderer();\n\n if(typeof this.initContainer === 'function'){\n //allow body to have a different renderer if it has its own renderer set\n postRenderers = this.getBody().postRender(data, '', renderer);\n }\n\n if(_renderer){\n postRenderers.push(_renderer.postRender(this, data, altClassName));\n }else{\n throw 'postRender: no renderer found for the element ' + this.qtiClass + ':' + this.serial;\n }\n\n return _.compact(postRenderers);\n },\n getContainer : function($scope, subclass){\n var renderer = this.getRenderer();\n if(renderer){\n return renderer.getContainer(this, $scope, subclass);\n }else{\n throw 'getContainer: no renderer found for the element ' + this.qtiClass + ':' + this.serial;\n }\n },\n toArray : function(){\n var arr = {\n serial : this.serial,\n type : this.qtiClass,\n attributes : this.getAttributes()\n };\n\n if(typeof this.initContainer === 'function'){\n arr.body = this.getBody().toArray();\n }\n if(typeof this.initObject === 'function'){\n arr.object = this.object.toArray();\n }\n\n return arr;\n },\n isEmpty : function(){\n //tells whether the element should be considered empty or not, from the rendering point of view\n return false;\n },\n addClass : function(className){\n var clazz = this.attr('class') || '';\n if(!_containClass(clazz, className)){\n this.attr('class', clazz + (clazz.length ? ' ' : '') + className);\n }\n },\n hasClass : function(className){\n return _containClass(this.attr('class'), className);\n },\n removeClass : function(className){\n\n var clazz = this.attr('class') || '';\n if(clazz){\n\n var regex = new RegExp('(?:^|\\\\s)' + className + '(?:\\\\s|$)');\n clazz = clazz.replace(regex, ' ').trim();\n\n if(clazz){\n this.attr('class', clazz);\n }else{\n this.removeAttr('class');\n }\n }\n },\n /**\n * Add or remove class. Setting the optional state will force addition/removal.\n * State is here to keep the jQuery syntax\n *\n * @param {String} className\n * @param {Boolean} [state]\n */\n toggleClass : function(className, state) {\n\n if(typeof state === 'boolean') {\n return state ? this.addClass(className) : this.removeClass(className);\n }\n\n if(this.hasClass(className)) {\n return this.removeClass(className);\n }\n return this.addClass(className);\n },\n isset : function(){\n return Element.issetElement(this.serial);\n },\n unset : function(){\n return Element.unsetElement(this.serial);\n }\n });\n\n var _containClass = function(allClassStr, className){\n var regex = new RegExp('(?:^|\\\\s)' + className + '(?:\\\\s|$)', '');\n return allClassStr && regex.test(allClassStr);\n };\n\n //helpers\n Element.isA = function(qtiElement, qtiClass){\n return (qtiElement instanceof Element && qtiElement.is(qtiClass));\n };\n\n Element.getElementBySerial = function(serial){\n return _instances[serial];\n };\n\n Element.issetElement = function(serial){\n return !!_instances[serial];\n };\n\n /**\n * Unset a registered element from it's serial\n * @param {String} serial - the element serial\n * @returns {Boolean} true if unset\n */\n Element.unsetElement = function(serial){\n\n var element = Element.getElementBySerial(serial);\n\n if(element){\n\n var composingElements = element.getComposingElements();\n _.each(composingElements, function(elt){\n delete _instances[elt.serial];\n });\n delete _instances[element.serial];\n\n return true;\n }\n return false;\n };\n\n return Element;\n});\n\n\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA\n */\n\n/**\n * XML namespace handling\n */\ndefine('taoQtiItem/qtiItem/helper/xmlNsHandler',[], function(){\n 'use strict';\n\n /**\n * Elements that need to be prefixed\n *\n * @see http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd\n * @type {string}\n */\n var prefixed = 'article|aside|bdi|figure|footer|header|nav|rb|rp|rt|rtc|ruby|section';\n\n\n /**\n * Find a possibly existing prefix\n *\n * @param namespaces\n * @param html5Ns\n * @returns {*}\n */\n function getPrefix(namespaces, html5Ns) {\n var key;\n for(key in namespaces) {\n if(namespaces[key] === html5Ns) {\n return key;\n }\n }\n return 'qh5';\n }\n\n return {\n\n /**\n * Remove prefix to make sure elements are properly displayed\n *\n * @param body\n */\n stripNs : function stripNs(body) {\n var pattern = '([\\\\w]+)\\\\:(' + prefixed + ')';\n var openRegEx = new RegExp('(<' + pattern + ')', 'gi');\n var closeRegEx = new RegExp('(<\\\\/' + pattern + '>)', 'gi');\n return body.replace(openRegEx, '<$3').replace(closeRegEx, '');\n },\n\n /**\n * Add a prefix to those elements that require one\n *\n * @param xml\n * @param namespaces\n * @returns {*}\n */\n restoreNs : function restoreNs(xml, namespaces) {\n var xmlRe = new RegExp('(<(' + prefixed + ')[^>]*>|<\\\\/(' + prefixed + ')>)', 'gi');\n var tagRe = new RegExp('((<)(' + prefixed + ')([^>]*)(>)|(<\\\\/)(' + prefixed + ')(>))', 'i');\n var xmlMatch = xml.match(xmlRe);\n var imsXsd = 'http://www.imsglobal.org/xsd';\n var html5Ns = imsXsd + '/imsqtiv2p2_html5_v1p0';\n var prefix = getPrefix(namespaces, html5Ns);\n var prefixAtt = 'xmlns:' + prefix + '=\"' + html5Ns + '\"';\n var i = xmlMatch ? xmlMatch.length : 0;\n var tagMatch;\n\n if(!xmlMatch) {\n return xml;\n }\n\n while(i--) {\n tagMatch = xmlMatch[i].match(tagRe);\n xml = xml.replace(xmlMatch[i],\n tagMatch[5]\n ? '<' + prefix + ':' + tagMatch[3] + tagMatch[4] + '>'\n : ''\n );\n }\n\n // we found matches but no namespace has been set\n if(xmlMatch.length && xml.indexOf(prefixAtt) === -1) {\n xml = xml.replace('\n * @author Bertrand Chevrier \n */\ndefine('taoQtiItem/qtiRunner/core/Renderer',[\n 'lodash',\n 'jquery',\n 'handlebars',\n 'core/promise',\n 'taoQtiItem/qtiItem/core/Element',\n 'taoQtiItem/qtiItem/helper/interactionHelper',\n 'ui/themeLoader'\n], function(_, $, Handlebars, Promise, Element, interactionHelper, themeLoader){\n 'use strict';\n\n var _isValidRenderer = function(renderer){\n\n var valid = true;\n\n if(typeof (renderer) !== 'object'){\n return false;\n }\n\n var classCorrect = false;\n if(renderer.qtiClass){\n if(_.indexOf(_renderableClasses, renderer.qtiClass) >= 0){\n classCorrect = true;\n }else{\n var pos = renderer.qtiClass.indexOf('.');\n if(pos > 0){\n var qtiClass = renderer.qtiClass.slice(0, pos);\n var subClass = renderer.qtiClass.slice(pos + 1);\n if(_renderableSubclasses[qtiClass] && _.indexOf(_renderableSubclasses[qtiClass], subClass) >= 0){\n classCorrect = true;\n }\n }\n }\n }\n if(!classCorrect){\n valid = false;\n throw new Error('invalid qti class name in renderer declaration : ' + renderer.qtiClass);\n }\n\n if(!renderer.template){\n valid = false;\n throw new Error('missing template in renderer declaration : ' + renderer.qtiClass);\n }\n\n return valid;\n };\n\n var _renderableClasses = [\n '_container',\n 'assessmentItem',\n 'stylesheet',\n 'responseDeclaration',\n 'outcomeDeclaration',\n 'responseProcessing',\n '_simpleFeedbackRule',\n '_tooltip',\n 'img',\n 'math',\n 'object',\n 'table',\n 'modalFeedback',\n 'rubricBlock',\n 'associateInteraction',\n 'choiceInteraction',\n 'extendedTextInteraction',\n 'gapMatchInteraction',\n 'graphicAssociateInteraction',\n 'graphicGapMatchInteraction',\n 'graphicOrderInteraction',\n 'hotspotInteraction',\n 'hottextInteraction',\n 'inlineChoiceInteraction',\n 'matchInteraction',\n 'mediaInteraction',\n 'orderInteraction',\n 'selectPointInteraction',\n 'sliderInteraction',\n 'textEntryInteraction',\n 'uploadInteraction',\n 'endAttemptInteraction',\n 'customInteraction',\n 'prompt',\n 'associableHotspot',\n 'gap',\n 'gapImg',\n 'gapText',\n 'hotspotChoice',\n 'hottext',\n 'inlineChoice',\n 'simpleAssociableChoice',\n 'simpleChoice',\n 'infoControl',\n 'include',\n 'printedVariable'\n ];\n\n /**\n * The list of qti element dependencies. It is used internally to load dependent qti classes\n */\n var _dependencies = {\n assessmentItem : ['stylesheet', '_container', 'prompt', 'modalFeedback'],\n rubricBlock : ['_container'],\n associateInteraction : ['simpleAssociableChoice'],\n choiceInteraction : ['simpleChoice'],\n gapMatchInteraction : ['gap', 'gapText'],\n graphicAssociateInteraction : ['associableHotspot'],\n graphicGapMatchInteraction : ['associableHotspot', 'gapImg'],\n graphicOrderInteraction : ['hotspotChoice'],\n hotspotInteraction : ['hotspotChoice'],\n hottextInteraction : ['hottext'],\n inlineChoiceInteraction : ['inlineChoice'],\n matchInteraction : ['simpleAssociableChoice'],\n orderInteraction : ['simpleChoice']\n };\n\n /**\n * The list of supported qti subclasses.\n */\n var _renderableSubclasses = {\n 'simpleAssociableChoice' : ['associateInteraction', 'matchInteraction'],\n 'simpleChoice' : ['choiceInteraction', 'orderInteraction']\n };\n\n /**\n * List of the default properties for the item\n */\n var _defaults = {\n shuffleChoices : true\n };\n\n /**\n * Get the location of the document, useful to define a baseUrl for the required context\n * @returns {String}\n */\n function getDocumentBaseUrl(){\n return window.location.protocol + '//' + window.location.host + window.location.pathname.replace(/([^\\/]*)$/, '');\n }\n\n /**\n * The built Renderer class\n * @constructor\n * @param {Object} [options] - the renderer options\n * @param {AssetManager} [options.assetManager] - The renderer needs an AssetManager to resolve URLs (see {@link taoItems/assets/manager})\n * @param {Boolean} [options.shuffleChoices = true] - Does the renderer take care of the shuffling\n * @param {Object} [options.decorators] - to set up rendering decorator\n * @param {preRenderDecorator} [options.decorators.before] - to set up a pre decorator\n * @param {postRenderDecorator} [options.decorators.after] - to set up a post decorator\n */\n var Renderer = function(options){\n\n /**\n * Store the registered renderer location\n */\n var _locations = {};\n\n /**\n * Store loaded renderers\n */\n var _renderers = {};\n\n options = _.defaults(options || {}, _defaults);\n\n this.isRenderer = true;\n\n this.name = '';\n\n //store shuffled choice here\n this.shuffledChoices = [];\n\n /**\n * Get the actual renderer of the give qti class or subclass:\n * e.g. simplceChoice, simpleChoice.choiceInteraction, simpleChoice.orderInteraction\n */\n var _getClassRenderer = function(qtiClass){\n var ret = null;\n if(_renderers[qtiClass]){\n ret = _renderers[qtiClass];\n }else{\n var pos = qtiClass.indexOf('.');\n if(pos > 0){\n qtiClass = qtiClass.slice(0, pos);\n if(_renderers[qtiClass]){\n ret = _renderers[qtiClass];\n }\n }\n }\n return ret;\n };\n\n /**\n * Registers a QTI renderer class\n * @param {String} qtiClass\n * @param {Array} list\n * @returns {Boolean} `true` if the class has been successfully registered\n */\n function registerRendererClass(qtiClass, list) {\n var success = false;\n if (_locations[qtiClass] === false) {\n //mark this class as not renderable\n _renderers[qtiClass] = false;\n success = true;\n } else if (_locations[qtiClass]) {\n list.push(_locations[qtiClass]);\n success = true;\n }\n return success;\n }\n\n /**\n * Set the renderer options\n * @param {String} key - the name of the option\n * @param {*} value - the option vallue\n * @returns {Renderer} for chaining\n */\n this.setOption = function(key, value){\n if(typeof (key) === 'string'){\n options[key] = value;\n }\n return this;\n };\n\n /**\n * Set the renderer options\n * @param {Object} opts - the options\n * @returns {Renderer} for chaining\n */\n this.setOptions = function(opts){\n options = _.extend(options, opts);\n return this;\n };\n\n /**\n * Get the renderer option\n * @param {String} key - the name of the option\n * @returns {*|null} the option vallue\n */\n this.getOption = function(key){\n if(typeof (key) === 'string' && options[key]){\n return options[key];\n }\n return null;\n };\n\n this.getCustomMessage = function getCustomMessage(elementName, messageKey){\n var messages = this.getOption('messages');\n if(messages &&\n elementName &&\n messages[elementName] &&\n _.isString(messages[elementName][messageKey])){\n //currently not translatable but potentially could be if the need raises\n return Handlebars.compile(messages[elementName][messageKey]);\n }else{\n return null;\n }\n };\n\n /**\n * Get the bound assetManager\n * @returns {AssetManager} the assetManager\n */\n this.getAssetManager = function getAssetManager(){\n return options.assetManager;\n };\n\n /**\n * Get the bound theme loader\n * @returns {Object} the themeLoader\n */\n this.getThemeLoader = function getThemeLoader(){\n return this.themeLoader;\n };\n\n\n /**\n * Renders the template\n * @param {Object} element - the QTI model element\n * @param {Object} data - the data to give to the template\n * @param {String} [qtiSubclass] - to get the render of the element subclass (when element's qtiClass is abstract)\n * @returns {String} the template results\n * @throws {Error} if the renderer is not set or has no template bound\n */\n this.renderTpl = function(element, data, qtiSubclass){\n\n var res;\n var ret = '';\n var tplFound = false;\n var qtiClass = qtiSubclass || element.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n var decorators = this.getOption('decorators');\n\n if(!renderer || !_.isFunction(renderer.template)){\n throw new Error('no renderer template loaded under the class name : ' + qtiClass);\n }\n\n //pre rendering decoration\n if(_.isObject(decorators) && _.isFunction(decorators.before)){\n\n /**\n * @callback preRenderDecoractor\n * @param {Object} element - the QTI model element\n * @param {String} [qtiSubclass] - to get the render of the element subclass (when element's qtiClass is abstract)\n * @returns {String} the decorator result\n */\n res = decorators.before(element, qtiSubclass);\n if(_.isString(res)){\n ret += res;\n }\n }\n\n //render the template\n ret += renderer.template(data);\n\n\n //post rendering decoration\n if(_.isObject(decorators) && _.isFunction(decorators.after)){\n\n /**\n * @callback postRenderDecoractor\n * @param {Object} element - the QTI model element\n * @param {String} [qtiSubclass] - to get the render of the element subclass (when element's qtiClass is abstract)\n * @returns {String} the decorator result\n */\n res = decorators.after(element, qtiSubclass);\n if(_.isString(res)){\n ret += res;\n }\n }\n return ret;\n };\n\n this.getData = function(element, data, qtiSubclass){\n\n var ret = data,\n qtiClass = qtiSubclass || element.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.getData) === 'function'){\n ret = renderer.getData.call(this, element, data);\n }\n }\n\n return ret;\n };\n\n this.renderDirect = function(tpl, data){\n return Handlebars.compile(tpl)(data);\n };\n\n this.getContainer = function(qtiElement, $scope, qtiSubclass){\n\n var ret = null,\n qtiClass = qtiSubclass || qtiElement.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n ret = renderer.getContainer(qtiElement, $scope);\n }else{\n throw 'no renderer found for the class : ' + qtiElement.qtiClass;\n }\n return ret;\n };\n\n this.postRender = function(qtiElement, data, qtiSubclass){\n\n var qtiClass = qtiSubclass || qtiElement.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n\n if(renderer && typeof (renderer.render) === 'function') {\n return renderer.render.call(this, qtiElement, data);\n }\n };\n\n this.setResponse = function(qtiInteraction, response, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.setResponse) === 'function'){\n ret = renderer.setResponse.call(this, qtiInteraction, response);\n var $container = renderer.getContainer.call(this, qtiInteraction);\n if($container instanceof $ && $container.length){\n $container.trigger('responseSet', [qtiInteraction, response]);\n }\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n this.getResponse = function(qtiInteraction, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.getResponse) === 'function'){\n ret = renderer.getResponse.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n this.resetResponse = function(qtiInteraction, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(typeof (renderer.resetResponse) === 'function'){\n ret = renderer.resetResponse.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n /**\n * Retrieve the state of the interaction.\n * If the renderer has no state management, it falls back to the response management.\n *\n * @param {Object} qtiInteraction - the interaction\n * @param {String} [qtiSubClass] - (not sure of the type and how it is used - Sam ? )\n * @returns {Object} the interaction's state\n *\n * @throws {Error} if no renderer is registered\n */\n this.getState = function(qtiInteraction, qtiSubclass){\n\n var ret = false;\n var qtiClass = qtiSubclass || qtiInteraction.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(_.isFunction(renderer.getState)){\n ret = renderer.getState.call(this, qtiInteraction);\n } else {\n ret = renderer.getResponse.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n /**\n * Retrieve the state of the interaction.\n * If the renderer has no state management, it falls back to the response management.\n *\n * @param {Object} qtiInteraction - the interaction\n * @param {Object} state - the interaction's state\n * @param {String} [qtiSubClass] - (not sure of the type and how it is used - Sam ? )\n *\n * @throws {Error} if no renderer is found\n */\n this.setState = function(qtiInteraction, state, qtiSubclass){\n\n var qtiClass = qtiSubclass || qtiInteraction.qtiClass;\n var renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(_.isFunction(renderer.setState)){\n renderer.setState.call(this, qtiInteraction, state);\n } else {\n renderer.resetResponse.call(this, qtiInteraction);\n renderer.setResponse.call(this, qtiInteraction, state);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n };\n\n /**\n * Calls the renderer destroy.\n * Ask the renderer to run destroy if exists.\n *\n * @throws {Error} if no renderer is found\n */\n this.destroy = function(qtiInteraction, qtiSubclass){\n\n var ret = false,\n qtiClass = qtiSubclass || qtiInteraction.qtiClass,\n renderer = _getClassRenderer(qtiClass);\n\n if(renderer){\n if(_.isFunction(renderer.destroy)){\n ret = renderer.destroy.call(this, qtiInteraction);\n }\n }else{\n throw 'no renderer registered under the name : ' + qtiClass;\n }\n return ret;\n };\n\n this.getLoadedRenderers = function(){\n return _renderers;\n };\n\n this.register = function(renderersLocations){\n _.extend(_locations, renderersLocations);\n };\n\n this.load = function(callback, requiredClasses){\n var self = this;\n var required = [];\n\n if(options.themes){\n\n //resolve themes paths\n options.themes.base = this.resolveUrl(options.themes.base);\n _.forEach(options.themes.available, function(theme, index){\n options.themes.available[index].path = self.resolveUrl(theme.path);\n });\n this.themeLoader = themeLoader(options.themes).load();\n }\n\n if(requiredClasses){\n if(_.isArray(requiredClasses)){\n\n //exclude abstract classes\n requiredClasses = _.intersection(requiredClasses, _renderableClasses);\n\n //add dependencies\n _.each(requiredClasses, function(reqClass){\n var deps = _dependencies[reqClass];\n if(deps){\n requiredClasses = _.union(requiredClasses, deps);\n }\n });\n\n _.forEach(requiredClasses, function(qtiClass){\n\n if(_renderableSubclasses[qtiClass]){\n var requiredSubClasses = _.intersection(requiredClasses, _renderableSubclasses[qtiClass]);\n _.each(requiredSubClasses, function(subclass){\n if (!registerRendererClass(qtiClass + '.' + subclass, required) && !registerRendererClass(qtiClass, required)) {\n throw new Error(self.name + ' : missing qti class location declaration: ' + qtiClass + ', subclass: ' + subclass);\n }\n });\n } else {\n if (!registerRendererClass(qtiClass, required)) {\n throw new Error(self.name + ' : missing qti class location declaration: ' + qtiClass);\n }\n }\n });\n } else {\n throw new Error('invalid argument type: expected array for arg \"requireClasses\"');\n }\n\n }else{\n required = _.values(_locations);\n }\n\n var _this = this;\n require(required, function(){\n\n _.each(arguments, function(clazz){\n if(_isValidRenderer(clazz)){\n _renderers[clazz.qtiClass] = clazz;\n }\n });\n\n if(typeof (callback) === 'function'){\n callback.call(_this, _renderers);\n }\n });\n\n return this;\n };\n\n /**\n * Unload the renderer\n */\n this.unload = function unload(){\n if(this.themeLoader){\n themeLoader(options.themes).unload();\n }\n return this;\n };\n\n /**\n * Define the shuffling manually\n *\n * @param {Object} interaction - the interaction\n * @param {Array} choices - the shuffled choices\n * @param {String} identificationType -\n */\n this.setShuffledChoices = function(interaction, choices, identificationType){\n if(Element.isA(interaction, 'interaction')){\n this.shuffledChoices[interaction.getSerial()] = _.pluck(interactionHelper.findChoices(interaction, choices, identificationType), 'serial');\n }\n };\n\n /**\n * Get the choices shuffled for this interaction.\n *\n * @param {Object} interaction - the interaction\n * @param {Boolean} reshuffle - by default choices are shuffled only once and store, but if true you can force shuffling again\n * @param {String} returnedType - the choice type\n * @returns {Array} the choices\n */\n this.getShuffledChoices = function(interaction, reshuffle, returnedType){\n var choices = [];\n var shuffled = [];\n var serial, i;\n\n if(Element.isA(interaction, 'interaction')){\n serial = interaction.getSerial();\n\n //1st time, we shuffle (or asked to force shuffling)\n if(!this.shuffledChoices[serial] || reshuffle){\n if(Element.isA(interaction, 'matchInteraction')){\n this.shuffledChoices[serial] = [];\n for(i = 0; i < 2; i++){\n choices[i] = interactionHelper.shuffleChoices(interaction.getChoices(i));\n this.shuffledChoices[serial][i] = _.pluck(choices[i], 'serial');\n }\n } else {\n choices = interactionHelper.shuffleChoices(interaction.getChoices());\n this.shuffledChoices[serial] = _.pluck(choices, 'serial');\n }\n\n //otherwise get the choices from the serials\n } else {\n if(Element.isA(interaction, 'matchInteraction')){\n _.forEach(choices, function(choice, index){\n if(index < 2){\n _.forEach(this.shuffledChoices[serial][i], function(choiceSerial){\n choice.push(interaction.getChoice(choiceSerial));\n });\n }\n });\n } else {\n _.forEach(this.shuffledChoices[serial], function(choiceSerial){\n choices.push(interaction.getChoice(choiceSerial));\n });\n }\n }\n\n //do some type convertion\n if(returnedType === 'serial' || returnedType === 'identifier'){\n return interactionHelper.convertChoices(choices, returnedType);\n }\n\n //pass value only, not ref\n return _.clone(choices);\n }\n\n return [];\n };\n\n this.getRenderers = function(){\n return _renderers;\n };\n\n this.getLocations = function(){\n return _locations;\n };\n\n /**\n * Resolve URLs using the defined assetManager's strategies\n * @param {String} url - the URL to resolve\n * @returns {String} the resolved URL\n */\n this.resolveUrl = function resolveUrl(url){\n if(!options.assetManager){\n return url;\n }\n if(typeof url === 'string' && url.length > 0){\n return options.assetManager.resolve(url);\n }\n };\n\n /**\n * @deprecated in favor of resolveUrl\n */\n this.getAbsoluteUrl = function(relUrl){\n\n //let until method is removed\n console.warn('DEPRECATED used getAbsoluteUrl with ', arguments);\n\n //allow relative url output only if explicitely said so\n if(this.getOption('userRelativeUrl')){\n return relUrl.replace(/^\\.?\\//, '');\n }\n\n if(/^http(s)?:\\/\\//i.test(relUrl) || /^data:[^\\/]+\\/[^;]+(;charset=[\\w]+)?;base64,/.test(relUrl)){\n //already absolute or base64 encoded\n return relUrl;\n }else{\n\n var absUrl = '';\n var runtimeLocations = this.getOption('runtimeLocations');\n\n if(runtimeLocations && _.size(runtimeLocations)){\n _.forIn(runtimeLocations, function(runtimeLocation, typeIdentifier){\n if(relUrl.indexOf(typeIdentifier) === 0){\n absUrl = relUrl.replace(typeIdentifier, runtimeLocation);\n return false;//break\n }\n });\n }\n\n if(absUrl){\n return absUrl;\n }else{\n var baseUrl = this.getOption('baseUrl') || getDocumentBaseUrl();\n return baseUrl + relUrl;\n }\n\n }\n };\n\n this.setAreaBroker = function setAreaBroker(areaBroker) {\n this._areaBroker = areaBroker;\n };\n\n this.getAreaBroker = function getAreaBroker() {\n if (this._areaBroker) {\n return this._areaBroker;\n }\n };\n\n this.getItemCreator = function getItemCreator() {\n return this.getOption('itemCreator');\n };\n };\n\n /**\n * Expose the renderer's factory\n * @exports taoQtiItem/qtiRunner/core/Renderer\n */\n return {\n\n /**\n * Creates a new Renderer by extending the Renderer's prototype\n * @param {Object} renderersLocations -\n * @param {String} [name] - the new renderer name\n * @param {Object} [defaultOptions] - the renderer options\n */\n build : function(renderersLocations, name, defaultOptions){\n var NewRenderer = function(){\n var options = _.isPlainObject(arguments[0]) ? arguments[0] : {};\n\n Renderer.apply(this);\n\n this.register(renderersLocations);\n this.name = name || '';\n this.setOptions(_.defaults(options, defaultOptions || {}));\n };\n NewRenderer.prototype = Renderer.prototype;\n return NewRenderer;\n }\n };\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2017 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * The asset manager proposes you to resolve your asset URLs for you!\n * You need to add the resolution strategies, it will then evaluate each strategy until the right one is found\n *\n * @author Bertrand Chevrier \n */\ndefine('taoItems/assets/manager',[\n 'lodash',\n 'util/url'\n], function(_, urlUtil){\n 'use strict';\n\n /**\n * @typedef AssetStrategy Defines a way to resolve an asset path\n * @property {String} name - the strategy name\n * @property {assetStrategyHandle} handle - how to resolve the strategy.\n */\n\n /**\n * @callback assetStrategyHandle\n * @param {String|Object} url - the URL to resolved. If parseUrl, it's an object that contains host, port, search, queryString, etc.\n * @param {Object} data - the context data\n * @returns {String?} falsy if not resolved otherwise the resolved URL\n */\n\n /**\n * Check if the given object is a valid AssetStrategy\n * @param {AssetStrategy} strategy\n * @throws {TypeError}\n */\n var checkStrategy = function checkStrategy(strategy){\n if(!_.isPlainObject(strategy) || !_.isFunction(strategy.handle) || !_.isString(strategy.name)){\n throw new TypeError('An asset resolution strategy is an object with a handle method and a name');\n }\n };\n\n /**\n * The assetManagerFactory create a new assetManager with the given resolution strategies and a data context.\n *\n * @example\n * //define AssetStrategies with a name and a handle method\n * var strategies = [{\n * name : 'external',\n * handle : function(url, data){\n * if(/^http/.test(url)){\n * return path;\n * }\n * }\n * }, {\n * name : 'relative',\n * handle : function(url, data){\n * if(/^((\\.\\/)|(\\w\\/))/){\n * return data.baseUrl + '/' + url ;\n * }\n * }\n * }]);\n *\n * var assetManager = assetManagerFactory(strategies, { baseUrl : 'http://t.oa/public/assets/' });\n * assetManager.resolve('http://foo/bar.png'); //will resolved using external\n * assetManager.resolve('bar.png'); //will resolved using relative strategy\n *\n * @param {AssetStrategy[]} strategies - the strategies\n * @param {Object} data - the context data\n * @param {Object} [options] - the manager options\n * @param {Boolean} [options.parseUrl = true] - If the URL to give to the strategies should be parsed or given as it is.\n * @param {Boolean} [options.cache] - resolve the same URL only once and store the result in memory.\n *\n * @exports taoItems/assets/manager\n * @namespace assetManagerFactory\n */\n var assetManagerFactory = function assetManagerFactory(strategies, data, options) {\n\n var cache = {};\n\n strategies = _.isArray(strategies) ? strategies : [strategies];\n data = data || {};\n options = _.defaults(options || {}, {\n parseUrl : true\n });\n\n /**\n * A brand new asset manager is created by the factory\n */\n var assetManager = {\n\n /**\n * The stack of strategies that would be used to resolve the asset path\n * @type {AssetStrategy[]}\n */\n _strategies : [],\n\n /**\n * Add an asset resolution strategy at the end of the stack.\n * The strategies will be evaluated in the order they've been added.\n * @param {AssetStrategy} strategy - the strategy to add\n * @throws {TypeError} if the strategy isn't defined correctly\n */\n addStrategy : function addStrategy (strategy){\n\n checkStrategy(strategy);\n\n this._strategies.push(strategy);\n },\n\n /**\n * Add an asset resolution strategy at the beginning of the stack.\n * The strategies will be evaluated in the order they've been added.\n * @param {AssetStrategy} strategy - the strategy to add\n * @throws {TypeError} if the strategy isn't defined correctly\n */\n prependStrategy : function prependStrategy(strategy){\n\n checkStrategy(strategy);\n\n this._strategies.unshift(strategy);\n },\n\n /**\n * Change the strategies\n * @param {AssetStrategy[]} strategies - the strategies\n * @throws {TypeError} if the strategy isn't defined correctly\n */\n setStrategies : function setStrategies(newStrategies){\n var self = this;\n\n this._strategies = [];\n\n //assign the strategies to the assetManager\n _.forEach(newStrategies, function(strategy){\n\n //if it's an object we add it directly\n if(_.isPlainObject(strategy)){\n assetManager.addStrategy(strategy);\n\n //if it's a function, we create the strategy with a generated name\n } else if(_.isFunction(strategy)){\n self.addStrategy({\n name : 'strategy_' + (self._strategies.length + 1),\n handle : strategy\n });\n }\n });\n },\n\n /**\n * Set context data\n * @param {String|Object} [key] - the key of the data to set or the data values if it's an object\n * @param {*} [value] - the value to set if a key is given\n */\n setData : function setData(key, value){\n if(_.isString(key) && typeof value !== 'undefined'){\n data[key] = value;\n } else if(_.isPlainObject(key)){\n data = key;\n }\n },\n\n /**\n * Get context data\n * @param {String} [key] - if we want the value of a particular key\n * @returns {Object|*} all the data or the propriety value if key is given\n */\n getData : function getData(key){\n if(_.isString(key)){\n return data[key];\n }\n return data;\n },\n\n /**\n * Resolve the given URL against the strategies\n * @param {String} url - the URL to resolve\n * @returns {String?} the resolved URL or nothing\n */\n resolve : function resolve(url){\n var resolved;\n var inputUrl;\n\n //if caching try to load the value from the cache\n if(options.cache && cache.hasOwnProperty(url)){\n return cache[url];\n }\n\n //parse the URL ?\n inputUrl = options.parseUrl ? urlUtil.parse(url) : url;\n\n //call strategies handlers, in their order until once returns something\n _.forEach(this._strategies, function(strategy){\n var result = strategy.handle(inputUrl, data);\n if(result){\n resolved = result;\n return false;\n }\n });\n\n resolved = resolved || '';\n\n if(options.cache){\n cache[url] = resolved;\n }\n\n return resolved;\n },\n\n /**\n * Resolve the given URL against the strategy identified by the given name\n * @param {String} name - the strategy name\n * @param {String} url - the URL to resolve\n * @returns {String?} the resolved URL or nothing\n */\n resolveBy : function resolveBy(name, url){\n var inputUrl;\n var resolved = '';\n var strategy = _.find(this._strategies, {name : name});\n if(strategy){\n //parse the URL ?\n inputUrl = options.parseUrl ? urlUtil.parse(url) : url;\n resolved = strategy.handle(inputUrl, data);\n }\n return resolved;\n },\n\n /**\n * When the cache is used, it could be useful to clear the cache\n */\n clearCache : function clearCache(){\n if(options.cache){\n cache = {};\n }\n }\n };\n\n assetManager.setStrategies(strategies);\n\n return assetManager;\n };\n\n return assetManagerFactory;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n * Provides common strategies to resolved assets\n * that may be used by any type of items.\n *\n * @author Bertrand Chevrier \n */\ndefine('taoItems/assets/strategies',[\n 'util/url'\n], function(urlUtil){\n 'use strict';\n\n /**\n * Prepend a base to an URL\n * @param {Object} url - a parsed URL\n * @param {String} base - the base to prepend\n * @param {Boolean} [slashcat = false] - remove dots, double slashes, etc.\n * @returns {String} the URL\n */\n var prependToUrl = function prependToUrl(url, base, slashcat){\n\n //is slashcat we manage slash concact\n if(slashcat === true){\n return base.replace(/\\/$/, '') + '/' + url.directory.replace(/^\\.\\//, '').replace(/^\\//, '')\n + encodeURIComponent(url.file.replace(/^\\.\\//, '').replace(/^\\//, ''));\n }\n\n return base + url.directory.replace(/^\\.?\\//, '') + encodeURIComponent(url.file.replace(/^\\.?\\//, ''));\n };\n\n /**\n * Unrelated strategies accessible by there name.\n * Remember to not use the whole object, but each one in an array since the order matters.\n *\n * @exports taoItems/assets/strategies\n */\n var strategies = {\n\n //the baseUrl concats the baseUrl in data if the url is relative\n baseUrl : {\n name : 'baseUrl',\n handle : function handleBaseUrl(url, data){\n if(typeof data.baseUrl === 'string' && (urlUtil.isRelative(url)) ){\n return prependToUrl(url, data.baseUrl, data.slashcat);\n }\n }\n },\n\n //bust the cache for item CSS\n itemCssNoCache : {\n name : 'itemCssNoCache',\n handle : function handleItemCss(url, data){\n if(typeof data.baseUrl === 'string' && (urlUtil.isRelative(url)) && /\\.css$/.test(url.file)) {\n return urlUtil.build(prependToUrl(url, data.baseUrl, data.slashcat), { bust : Date.now() });\n }\n }\n },\n\n //absolute URL are just left intact\n external : {\n name : 'external',\n handle : function handleExternal(url){\n if(urlUtil.isAbsolute(url)){\n return url.toString();\n }\n }\n },\n\n //the base64 encoded resources are also left intact\n base64 : {\n name : 'base64',\n handle : function handleB64(url){\n if(urlUtil.isBase64(url)){\n return url.toString();\n }\n }\n },\n\n //special tao media protocol\n taomedia : {\n name : 'taomedia',\n handle : function handleTaoMedia(url, data){\n //either a baseUrl is given or if empty, taomedia resources are managed as relative resources\n var baseUrl = data.baseUrl || './';\n if( (typeof url === 'object' && url.protocol === 'taomedia') ||\n (/^taomedia:\\/\\//.test(url.toString())) ){\n return baseUrl + url.toString();\n }\n }\n }\n };\n return strategies;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/factory/factory',['lodash', 'core/promise', 'core/eventifier'], function (_, Promise, eventifier){\n 'use strict';\n\n var _requirejs = window.require;\n var _defaultLoadingOptions = {\n reload: false,\n enabledOnly : false,\n runtimeOnly : []\n };\n\n var loadModuleConfig = function loadModuleConfig(manifest){\n return new Promise(function(resolve, reject){\n var requireConfigAliases = {};\n var baseUrl;\n var reqConfigs = [];\n var modules = {};\n\n if(!manifest || !manifest.runtime){\n return reject('invalid manifest');\n }\n\n baseUrl = manifest.baseUrl;\n\n if(_.isArray(manifest.runtime.config) && manifest.runtime.config.length){\n _.forEach(manifest.runtime.config, function(pciConfig){\n if(_.isString(pciConfig)){\n reqConfigs.push('json!' + baseUrl + '/' + pciConfig);\n }else{\n if(pciConfig.data){\n modules = _.defaults(modules, pciConfig.data.paths || {});\n }else if(pciConfig.file){\n reqConfigs.push('json!' + baseUrl + '/' + pciConfig.file);\n }\n }\n });\n }\n\n require(reqConfigs, function(){\n\n var runtimeModules = {};\n\n requireConfigAliases[manifest.typeIdentifier] = baseUrl;\n\n if(manifest.model === 'IMSPCI'){\n\n modules = _.reduce(arguments, function(acc, conf){\n return _.defaults(acc, conf.paths || {});\n }, modules);\n\n _.forEach(manifest.runtime.modules || {}, function(paths, id){\n if(paths && (_.isString(paths) || (_.isArray(paths) && paths.length))){\n runtimeModules[id] = paths;\n }\n });\n\n modules = _.merge(modules, runtimeModules);\n\n _.forEach(modules, function(paths, id){\n paths = _.isArray(paths) ? paths : [paths];\n requireConfigAliases[id] = _.map(paths, function(path){\n return baseUrl+'/'+path.replace(/\\.js$/, '');\n });\n });\n }\n\n resolve(requireConfigAliases);\n\n }, reject);\n\n\n });\n };\n\n return function portableElementRegistry(methods){\n\n var _loaded = false;\n var __providers = {};\n\n return eventifier(_.defaults(methods || {}, {\n _registry : {},\n get : function get(typeIdentifier, version){\n\n if(this._registry[typeIdentifier]){\n //check version\n if(version){\n return _.find(this._registry[typeIdentifier], version);\n }else{\n //latest\n return _.last(this._registry[typeIdentifier]);\n }\n }\n },\n registerProvider : function registerProvider(moduleName){\n __providers[moduleName] = null;\n return this;\n },\n resetProviders : function resetProviders(){\n __providers = {};\n return this;\n },\n loadProviders : function loadProviders(){\n var self = this;\n return new Promise(function(resolve, reject) {\n var providerLoadingStack = [];\n _.forIn(__providers, function(provider, id){\n if(provider === null){\n providerLoadingStack.push(id);\n }\n });\n _requirejs(providerLoadingStack, function(){\n _.each([].slice.call(arguments), function(provider){\n if(provider && _.isFunction(provider.load)){\n __providers[providerLoadingStack.shift()] = provider;\n }\n });\n resolve();\n self.trigger('providersloaded');\n }, reject);\n });\n },\n getAllVersions : function getAllVersions(){\n var all = {};\n _.forIn(this._registry, function (versions, id){\n all[id] = _.map(versions, 'version');\n });\n return all;\n },\n getRuntime : function getRuntime(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci){\n return _.assign(pci.runtime, {\n id : pci.typeIdentifier,\n label : pci.label,\n baseUrl : pci.baseUrl,\n model : pci.model\n });\n }else{\n this.trigger('error', {\n message : 'no portable element runtime found',\n typeIdentifier : typeIdentifier,\n version : version\n });\n }\n },\n getCreator : function getCreator(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci && pci.creator){\n return _.assign(pci.creator, {\n id : pci.typeIdentifier,\n label : pci.label,\n baseUrl : pci.baseUrl,\n response : pci.response,\n model : pci.model,\n xmlns : pci.xmlns\n });\n }else{\n this.trigger('error', {\n message : 'no portable element runtime found',\n typeIdentifier : typeIdentifier,\n version : version\n });\n }\n },\n getBaseUrl : function getBaseUrl(typeIdentifier, version){\n var runtime = this.get(typeIdentifier, version);\n if(runtime){\n return runtime.baseUrl;\n }\n return '';\n },\n loadRuntimes : function loadRuntimes(options){\n var self = this;\n var loadPromise;\n\n options = _.defaults(options||{}, _defaultLoadingOptions);\n\n if(_loaded && !options.reload){\n loadPromise = Promise.resolve();\n } else {\n loadPromise = self.loadProviders().then(function(){\n\n var loadStack = [];\n\n _.forEach(__providers, function (provider){\n if(provider){//check that the provider is loaded\n loadStack.push(provider.load());\n }\n });\n\n //performs the loadings in parallel\n return new Promise(function(resolve, reject){\n Promise.all(loadStack).then(function (results){\n\n var configLoadingStack = [];\n\n //update registry\n self._registry = _.reduce(results, function (acc, _pcis){\n return _.merge(acc, _pcis);\n }, {});\n\n //pre-configuring the baseUrl of the portable element's source\n _.forIn(self._registry, function (versions, typeIdentifier){\n //currently use latest runtime only\n configLoadingStack.push(loadModuleConfig(self.get(typeIdentifier)));\n });\n\n return Promise.all(configLoadingStack).then(function(moduleConfigs){\n var requireConfigAliases = _.reduce(moduleConfigs, function(acc, paths){\n return _.merge(acc, paths);\n }, {});\n\n //save the required libs name => path to global require alias\n //TODO in future planned user story : change this to a local require context to solve conflicts in third party module naming\n _requirejs.config({paths : requireConfigAliases});\n\n _loaded = true;\n\n resolve();\n }).catch(function(err){\n reject('error loading module config ' + err);\n });\n });\n });\n\n });\n }\n\n loadPromise\n .then(function() {\n self.trigger('runtimesloaded');\n })\n .catch(function(err) {\n self.trigger('error', err);\n });\n\n return loadPromise;\n },\n loadCreators : function loadCreators(options){\n var loadPromise;\n var self = this;\n\n options = _.defaults(options||{}, _defaultLoadingOptions);\n\n loadPromise = self.loadRuntimes(options).then(function(){\n var requiredCreatorHooks = [];\n var requiredCreators = _.isArray(options.runtimeOnly) ? options.runtimeOnly : [];\n\n _.forIn(self._registry, function (versions, typeIdentifier){\n var pciModel = self.get(typeIdentifier);//currently use the latest version only\n if(pciModel.creator && pciModel.creator.hook && (pciModel.enabled || requiredCreators.indexOf(typeIdentifier) !== -1)){\n requiredCreatorHooks.push(pciModel.creator.hook.replace(/\\.js$/, ''));\n }\n });\n\n if(requiredCreatorHooks.length){\n return new Promise(function(resolve, reject){\n //@todo support caching?\n _requirejs(requiredCreatorHooks, function (){\n var creators = {};\n _.each(arguments, function (creatorHook){\n var id = creatorHook.getTypeIdentifier();\n var pciModel = self.get(id);\n var i = _.findIndex(self._registry[id], {version : pciModel.version});\n if(i < 0){\n self.trigger('error', 'no creator found for id/version ' + id + '/' + pciModel.version);\n }else{\n self._registry[id][i].creator.module = creatorHook;\n creators[id] = creatorHook;\n }\n });\n resolve(creators);\n }, reject);\n });\n }else{\n return Promise.resolve({});\n }\n\n });\n\n loadPromise\n .then(function(creators) {\n self.trigger('creatorsloaded', creators);\n return creators;\n })\n .catch(function(err) {\n self.trigger('error', err);\n });\n\n return loadPromise;\n },\n enable: function enable(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci){\n pci.enabled = true;\n }\n },\n disable: function disable(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n if(pci){\n pci.enabled = false;\n }\n },\n isEnabled: function isEnabled(typeIdentifier, version){\n var pci = this.get(typeIdentifier, version);\n return (pci && pci.enabled === true);\n }\n }));\n };\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Sam \n * @requires jquery\n * @requires lodash\n */\ndefine('taoQtiItem/qtiCreator/helper/qtiElements',['jquery', 'lodash', 'i18n'], function($, _, __){\n \"use strict\";\n\n var QtiElements = {};\n\n QtiElements.classes = {\n //abstract classes:\n 'itemBody' : {'parents' : ['bodyElement'], 'contains' : ['block'], 'abstract' : true},\n 'atomicBlock' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['inline'], 'abstract' : true},\n 'atomicInline' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic'], 'contains' : ['inline'], 'abstract' : true},\n 'simpleBlock' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['block'], 'abstract' : true},\n 'simpleInline' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic'], 'contains' : ['inline'], 'abstract' : true},\n 'flowStatic' : {'parents' : ['flow'], 'abstract' : true},\n 'blockStatic' : {'parents' : ['block'], 'abstract' : true},\n 'inlineStatic' : {'parents' : ['inline'], 'abstract' : true},\n 'flow' : {'parents' : ['objectFlow'], 'abstract' : true},\n 'tableCell' : {'parents' : ['bodyElement'], 'contains' : ['flow'], 'abstract' : true},\n //html-derived qti elements:\n 'caption' : {'parents' : ['bodyElement'], 'contains' : ['inline'], 'xhtml' : true},\n 'col' : {'parents' : ['bodyElement'], 'xhtml' : true},\n 'colgroup' : {'parents' : ['bodyElement'], 'contains' : ['col'], 'xhtml' : true},\n 'div' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['flow'], 'xhtml' : true},\n 'dl' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['dlElement'], 'xhtml' : true},\n 'dt' : {'parents' : ['dlElement'], 'contains' : ['inline'], 'xhtml' : true},\n 'dd' : {'parents' : ['dlElement'], 'contains' : ['flow'], 'xhtml' : true},\n 'hr' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'xhtml' : true},\n 'math' : {'parents' : ['blockStatic', 'flowStatic', 'inlineStatic'], 'xhtml' : true},\n 'li' : {'parents' : ['bodyElement'], 'contains' : ['flow'], 'xhtml' : true},\n 'ol' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['li'], 'xhtml' : true},\n 'ul' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['li'], 'xhtml' : true},\n 'object' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic'], 'contains' : ['objectFlow'], 'xhtml' : true},\n 'param' : {'parents' : ['objectFlow'], 'xhtml' : true},\n 'table' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'contains' : ['caption', 'col', 'colgroup', 'thead', 'tfoot', 'tbody'], 'xhtml' : true},\n 'tbody' : {'parents' : ['bodyElement'], 'contains' : ['tr'], 'xhtml' : true},\n 'tfoot' : {'parents' : ['bodyElement'], 'contains' : ['tr'], 'xhtml' : true},\n 'thead' : {'parents' : ['bodyElement'], 'contains' : ['tr'], 'xhtml' : true},\n 'td' : {'parents' : ['tableCell'], 'xhtml' : true},\n 'th' : {'parents' : ['tableCell'], 'xhtml' : true},\n 'tr' : {'parents' : ['bodyElement'], 'contains' : ['tableCell'], 'xhtml' : true},\n 'a' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'abbr' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'acronym' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'b' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'big' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'cite' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'code' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'dfn' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'em' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'i' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'kbd' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'q' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'samp' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'small' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'span' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'strong' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'sub' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'sup' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'tt' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'var' : {'parents' : ['simpleInline'], 'xhtml' : true},\n 'blockquote' : {'parents' : ['simpleBlock'], 'xhtml' : true},\n 'address' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h1' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h2' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h3' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h4' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h5' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'h6' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'p' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'pre' : {'parents' : ['atomicBlock'], 'xhtml' : true},\n 'img' : {'parents' : ['atomicInline'], 'xhtml' : true, attributes : ['src', 'alt', 'longdesc', 'height', 'width']},\n 'br' : {'parents' : ['atomicInline'], 'xhtml' : true},\n //qti elements:\n 'infoControl' : {'parents' : ['blockStatic', 'bodyElement', 'flowStatic'], 'qti' : true},\n 'textRun' : {'parents' : ['inlineStatic', 'flowstatic'], 'qti' : true},\n 'feedbackInline' : {'parents' : ['simpleInline', 'feedbackElement'], 'qti' : true},\n 'feedbackBlock' : {'parents' : ['simpleBlock'], 'qti' : true},\n 'rubricBlock' : {'parents' : ['simpleBlock'], 'qti' : true}, //strange qti 2.1 exception, marked as simpleBlock instead of\n 'blockInteraction' : {'parents' : ['block', 'flow', 'interaction'], 'qti' : true},\n 'inlineInteraction' : {'parents' : ['inline', 'flow', 'interaction'], 'qti' : true},\n 'gap' : {'parents' : ['inlineStatic'], 'qti' : true},\n 'hottext' : {'parents' : ['flowstatic', 'inlineStatic'], 'contains' : ['inlineStatic'], 'qti' : true},\n 'printedVariable' : {'parents' : ['bodyElement', 'flowStatic', 'inlineStatic', 'textOrVariable'], 'qti' : true},\n 'prompt' : {'parents' : ['bodyElement'], 'contains' : ['inlineStatic'], 'qti' : true},\n 'templateElement' : {'parents' : ['bodyElement'], 'qti' : true},\n 'templateBlock' : {'parents' : ['blockStatic', 'flowStatic', 'templateElement'], 'contains' : ['blockStatic'], 'qti' : true},\n 'templateInline' : {'parents' : ['inlineStatic', 'flowStatic', 'templateElement'], 'contains' : ['inlineStatic'], 'qti' : true},\n 'choiceInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'associateInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'orderInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'matchInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'hottextInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'gapMatchInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'mediaInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'sliderInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'uploadInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'drawingInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'graphicInteraction' : {'parents' : ['blockInteraction'], 'qti' : true},\n 'hotspotInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'graphicAssociateInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'graphicOrderInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'graphicGapMatchInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'selectPointInteraction' : {'parents' : ['graphicInteraction'], 'qti' : true},\n 'textEntryInteraction' : {'parents' : ['stringInteraction', 'inlineInteraction'], 'qti' : true},\n 'extendedTextInteraction' : {'parents' : ['stringInteraction', 'blockInteraction'], 'qti' : true},\n 'inlineChoiceInteraction' : {'parents' : ['inlineInteraction'], 'qti' : true},\n 'endAttemptInteraction' : {'parents' : ['inlineInteraction'], 'qti' : true},\n 'customInteraction' : {'parents' : ['block', 'flow', 'interaction'], 'qti' : true},\n '_container' : {'parents' : ['block'], 'qti' : true}//a pseudo class introduced in TAO\n };\n\n QtiElements.cache = {containable : {}, children : {}, parents : {}};\n\n QtiElements.getAllowedContainersElements = function(qtiClass, $container){\n var classes = QtiElements.getAllowedContainers(qtiClass);\n var jqSelector = '';\n for(var i in classes){\n if(!classes[i].qti){\n //html element:\n jqSelector += classes[i] + ', ';\n }\n }\n\n if(jqSelector){\n jqSelector = jqSelector.substring(0, jqSelector.length - 2);\n }\n\n return $(jqSelector, $container ? $container : $(document)).filter(':not([data-qti-type])');\n };\n\n QtiElements.getAllowedContainers = function(qtiClass){\n var ret;\n if(QtiElements.cache.containable[qtiClass]){\n ret = QtiElements.cache.containable[qtiClass];\n }else{\n ret = [];\n var parents = QtiElements.getParentClasses(qtiClass, true);\n for(var aClass in QtiElements.classes){\n var model = QtiElements.classes[aClass];\n if(model.contains){\n var intersect = _.intersection(model.contains, parents);\n if(intersect.length){\n if(!model.abstract){\n ret.push(aClass);\n }\n ret = _.union(ret, QtiElements.getChildClasses(aClass, true));\n }\n }\n }\n QtiElements.cache.containable[qtiClass] = ret;\n }\n\n return ret;\n };\n\n QtiElements.getAllowedContents = function(qtiClass, recursive, checked){\n\n var ret = [];\n checked = checked || {};\n\n var model = QtiElements.classes[qtiClass];\n if(model && model.contains){\n for(var i in model.contains){\n var contain = model.contains[i];\n if(!checked[contain]){\n checked[contain] = true;\n\n //qtiClass can contain everything defined as its contents\n ret.push(contain);\n\n //qtiClass can also contain subclass of its contents\n var children = QtiElements.getChildClasses(contain, true);\n for(var i in children){\n var child = children[i];\n if(!checked[child]){\n checked[child] = true;\n\n ret.push(child);\n\n //adding children allowed contents depends on the option \"recursive\"\n if(recursive){\n ret = _.union(ret, QtiElements.getAllowedContents(child, true, checked));\n }\n }\n }\n\n //adding allowed contents of qtiClass' allowed contents depends on the option \"recursive\"\n if(recursive){\n ret = _.union(ret, QtiElements.getAllowedContents(contain, true, checked));\n }\n\n }\n }\n }\n\n //qtiClass can contain all allowed contents of its parents:\n var parents = QtiElements.getParentClasses(qtiClass, true);\n for(var i in parents){\n ret = _.union(ret, QtiElements.getAllowedContents(parents[i], recursive, checked));\n }\n\n return _.uniq(ret, false);\n };\n\n QtiElements.isAllowedClass = function(qtiContainerClass, qtiContentClass){\n var allowedClasses = QtiElements.getAllowedContents(qtiContainerClass);\n return (_.indexOf(allowedClasses, qtiContentClass) >= 0);\n };\n\n QtiElements.getParentClasses = function(qtiClass, recursive){\n var ret;\n if(recursive && QtiElements.cache.parents[qtiClass]){\n ret = QtiElements.cache.parents[qtiClass];\n }else{\n ret = [];\n if(QtiElements.classes[qtiClass]){\n ret = QtiElements.classes[qtiClass].parents;\n if(recursive){\n for(var i in ret){\n ret = _.union(ret, QtiElements.getParentClasses(ret[i], recursive));\n }\n ret = _.uniq(ret, false);\n }\n }\n QtiElements.cache.parents[qtiClass] = ret;\n }\n\n return ret;\n };\n\n QtiElements.getChildClasses = function(qtiClass, recursive, type){\n var ret;\n var cacheType = type ? type : 'all';\n if(recursive && QtiElements.cache.children[qtiClass] && QtiElements.cache.children[qtiClass][cacheType]){\n ret = QtiElements.cache.children[qtiClass][cacheType];\n }else{\n ret = [];\n for(var aClass in QtiElements.classes){\n var model = QtiElements.classes[aClass];\n if(_.indexOf(model.parents, qtiClass) >= 0){\n if(type){\n if(model[type]){\n ret.push(aClass);\n }\n }else{\n ret.push(aClass);\n }\n if(recursive){\n ret = _.union(ret, QtiElements.getChildClasses(aClass, recursive, type));\n }\n }\n }\n if(!QtiElements.cache.children[qtiClass]){\n QtiElements.cache.children[qtiClass] = {};\n }\n QtiElements.cache.children[qtiClass][cacheType] = ret;\n }\n\n return ret;\n };\n\n QtiElements.isBlock = function(qtiClass){\n return QtiElements.is(qtiClass, 'block');\n };\n\n QtiElements.isInline = function(qtiClass){\n return QtiElements.is(qtiClass, 'inline');\n };\n\n QtiElements.is = function(qtiClass, topClass){\n if(qtiClass === topClass){\n return true;\n }else{\n var parents = QtiElements.getParentClasses(qtiClass, true);\n return (_.indexOf(parents, topClass) >= 0);\n }\n };\n\n QtiElements.getAvailableAuthoringElements = function(){\n\n return {\n choiceInteraction : {\n label : __('Choice Interaction'),\n description : __('Select a single (radio buttons) or multiple (check boxes) responses among a set of choices.'),\n icon : 'icon-choice',\n short : __('Choice'),\n qtiClass : 'choiceInteraction',\n tags:['Common Interactions', 'mcq']\n },\n orderInteraction : {\n label : __('Order Interaction'),\n icon : 'icon-order',\n description : __('Arrange a list of choices in the correct order.'),\n short : __('Order'),\n qtiClass : 'orderInteraction',\n tags:['Common Interactions', 'ordering']\n },\n associateInteraction : {\n label : __('Associate Interaction'),\n icon : 'icon-associate',\n description : __('Create pair(s) from a series of choices.'),\n short : __('Associate'),\n qtiClass : 'associateInteraction',\n tags:['Common Interactions', 'association']\n },\n matchInteraction : {\n label : __('Match Interaction'),\n icon : 'icon-match',\n description : __('Create association(s) between two sets of choices displayed in a table (row and column).'),\n short : __('Match'),\n qtiClass : 'matchInteraction',\n tags:['Common Interactions', 'association']\n },\n hottextInteraction : {\n label : __('Hottext Interaction'),\n icon : 'icon-hottext',\n description : __('Select one or more text parts (hottext) within a text.'),\n short : __('Hottext'),\n qtiClass : 'hottextInteraction',\n tags:['Common Interactions', 'text']\n },\n gapMatchInteraction : {\n label : __('Gap Match Interaction'),\n icon : 'icon-gap-match',\n description : __(' Fill in the gaps in a text from a set of choices.'),\n short : __('Gap Match'),\n qtiClass : 'gapMatchInteraction',\n tags:['Common Interactions', 'text', 'association']\n },\n sliderInteraction : {\n label : __('Slider Interaction'),\n icon : 'icon-slider',\n description :__('Select a value within a numerical range.'),\n short : __('Slider'),\n qtiClass : 'sliderInteraction',\n tags:['Common Interactions', 'special']\n },\n extendedTextInteraction : {\n label : __('Extended Text Interaction'),\n icon : 'icon-extended-text',\n description : __('Collect open-ended information in one or more text area(s) (strings or numeric values).'),\n short : __('Extended Text'),\n qtiClass : 'extendedTextInteraction',\n tags:['Common Interactions', 'text']\n },\n uploadInteraction : {\n label : __('File Upload Interaction'),\n icon : 'icon-upload',\n description : __('Upload a file (e.g. document, picture...) as a response.'),\n short : __('File Upload'),\n qtiClass : 'uploadInteraction',\n tags:['Common Interactions', 'special']\n },\n mediaInteraction : {\n label : __('Media Interaction'),\n icon : 'icon-media',\n description : __('Control the playing parameters (auto-start, loop) of a video or audio file and report the number of time it has been played.'),\n short : __('Media'),\n qtiClass : 'mediaInteraction',\n tags:['Common Interactions', 'media']\n },\n _container : {\n label : __('Text Block'),\n icon : 'icon-font',\n description : __('Block contains the content (stimulus) of the item such as text or image. It is also required for Inline Interactions.'),\n short : __('Block'),\n qtiClass : '_container',\n tags:['Inline Interactions', 'text']\n },\n inlineChoiceInteraction : {\n label : __('Inline Choice Interaction'),\n icon : 'icon-inline-choice',\n description : __('Select a choice from a drop-down list.'),\n short : __('Inline Choice'),\n qtiClass : 'inlineChoiceInteraction',\n tags:['Inline Interactions', 'inline-interactions', 'mcq']\n },\n textEntryInteraction : {\n label : __('Text Entry Interaction'),\n icon : 'icon-text-entry',\n description : __('Collect open-ended information in a short text input (strings or numeric values).'),\n short : __('Text Entry'),\n qtiClass : 'textEntryInteraction',\n tags:['Inline Interactions', 'inline-interactions', 'text']\n },\n endAttemptInteraction : {\n label : __('End Attempt Interaction'),\n icon : 'icon-end-attempt',\n description : __('Trigger the end of the item attempt.'),\n short : __('End Attempt'),\n qtiClass : 'endAttemptInteraction',\n tags:['Inline Interactions', 'inline-interactions', 'button', 'submit']\n },\n hotspotInteraction : {\n label : __('Hotspot Interaction'),\n icon : 'icon-hotspot',\n description : __('Select one or more areas (hotspots) displayed on an picture.'),\n short : __('Hotspot'),\n qtiClass : 'hotspotInteraction',\n tags:['Graphic Interactions', 'mcq']\n },\n graphicOrderInteraction : {\n label : __('Graphic Order Interaction'),\n icon : 'icon-graphic-order',\n description : __('Order the areas (hotspots) displayed on a picture.'),\n short : __('Order'),\n qtiClass : 'graphicOrderInteraction',\n tags:['Graphic Interactions', 'ordering']\n },\n graphicAssociateInteraction : {\n label : __('Graphic Associate Interaction'),\n icon : 'icon-graphic-associate',\n description : __('Create association(s) between areas (hotspots) displayed on a picture.'),\n short : __('Associate'),\n qtiClass : 'graphicAssociateInteraction',\n tags:['Graphic Interactions', 'association']\n },\n graphicGapMatchInteraction : {\n label : __('Graphic Gap Match Interaction'),\n icon : 'icon-graphic-gap',\n description : __('Fill in the gaps on a picture with a set of image choices.'),\n short : __('Gap Match'),\n qtiClass : 'graphicGapMatchInteraction',\n tags:['Graphic Interactions', 'association']\n },\n selectPointInteraction : {\n label : __('Select Point Interaction'),\n icon : 'icon-select-point',\n description : __('Position one or more points on a picture (response areas are not displayed).'),\n short : __('Select Point'),\n qtiClass : 'selectPointInteraction',\n tags:['Graphic Interactions']\n }\n };\n };\n\n return QtiElements;\n\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/factory/ciRegistry',[\n 'lodash',\n 'taoQtiItem/portableElementRegistry/factory/factory',\n 'taoQtiItem/qtiCreator/helper/qtiElements'\n], function (_, portableElementRegistry, qtiElements){\n 'use strict';\n\n /**\n * Create a ney interaction registry instance\n * interaction registry need to register newly loaded creator hooks in the list of available qti authoring elements\n *\n * @returns {Object} registry instance\n */\n return function customInteractionRegistry(){\n\n return portableElementRegistry({\n getAuthoringData : function getAuthoringData(typeIdentifier, options){\n var pciModel;\n options = _.defaults(options || {}, {version : 0, enabledOnly : false});\n pciModel = this.get(typeIdentifier, options.version);\n if(pciModel && pciModel.creator && pciModel.creator.hook && pciModel.creator.icon && (pciModel.enabled || !options.enabledOnly)){\n return {\n label : pciModel.label, //currently no translation available\n icon : pciModel.creator.icon.replace(new RegExp('^' + typeIdentifier + '\\/'), pciModel.baseUrl),\n short : pciModel.short,\n description : pciModel.description,\n qtiClass : 'customInteraction.' + pciModel.typeIdentifier, //custom interaction is block type\n tags : _.union(['Custom Interactions'], pciModel.tags)\n };\n }\n }\n }).on('creatorsloaded', function(creators){\n _.each(creators, function(creator){\n qtiElements.classes['customInteraction.' + creator.getTypeIdentifier()] = {parents : ['customInteraction'], qti : true};\n });\n });\n };\n\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/ciRegistry',['lodash', 'taoQtiItem/portableElementRegistry/factory/ciRegistry', 'module'], function (_, ciRegistry, module){\n 'use strict';\n\n //create a preregistered singleton of ciRegistry\n var registry = ciRegistry();\n var providers = [];\n var config = module.config();\n\n if(config && config.providers){\n providers = config.providers;\n }\n\n _.each(providers, function(provider){\n if(provider.name && provider.module){\n registry.registerProvider(provider.module);\n }\n });\n\n return registry;\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/factory/icRegistry',[\n 'lodash',\n 'taoQtiItem/portableElementRegistry/factory/factory'\n], function (_, portableElementRegistry){\n 'use strict';\n\n /**\n * Info control registry has currently no additonal fonctionalities than the basic portable element registry\n *\n * @returns {Object} registry instance\n */\n return function infoControlRegistry(){\n return portableElementRegistry();\n }\n\n});\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n *\n */\ndefine('taoQtiItem/portableElementRegistry/icRegistry',['lodash', 'taoQtiItem/portableElementRegistry/factory/icRegistry', 'module'], function (_, icRegistry, module){\n 'use strict';\n\n //create a preregistered singleton of icRegistry\n var registry = icRegistry();\n var providers = [];\n var config = module.config();\n\n if(config && config.providers){\n providers = config.providers;\n }\n\n _.each(providers, function(provider){\n if(provider.name && provider.module){\n registry.registerProvider(provider.module);\n }\n });\n\n return registry;\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA;\n */\n\ndefine('taoQtiItem/portableElementRegistry/assetManager/portableAssetStrategy',[\n 'taoQtiItem/portableElementRegistry/ciRegistry',\n 'taoQtiItem/portableElementRegistry/icRegistry'\n], function (ciRegistry, icRegistry) {\n 'use strict';\n\n function getBaseUrlByIdentifier(typeIdentifier) {\n if (ciRegistry.get(typeIdentifier)) {\n return ciRegistry.getBaseUrl(typeIdentifier);\n }\n if (icRegistry.get(typeIdentifier)) {\n return icRegistry.getBaseUrl(typeIdentifier);\n }\n return typeIdentifier;\n }\n\n //strategy to resolve portable info control and portable interactions paths.\n //It should never be reached in the stack the usual way and should be called only using resolveBy.\n return {\n name: 'portableElementLocation',\n handle: function handlePortableElementLocation(url) {\n\n if (url.file === url.path) {\n return getBaseUrlByIdentifier(url.file);\n } else if (url.source === url.relative) {\n return url.relative.replace(/^(\\.\\/)?([a-z_0-9]+)\\/(.*)/i, function (fullmatch, $1, typeIdentifier, relPath) {\n var runtimeLocation = getBaseUrlByIdentifier(typeIdentifier);\n if (runtimeLocation) {\n return runtimeLocation + '/' + relPath;\n }\n return fullmatch;\n });\n }\n }\n };\n});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA;\n */\n\ndefine('taoQtiItem/qtiCommonRenderer/renderers/config',[\n 'lodash',\n 'context',\n 'ui/themes',\n 'taoItems/assets/manager',\n 'taoItems/assets/strategies',\n 'module',\n 'taoQtiItem/portableElementRegistry/assetManager/portableAssetStrategy'\n], function(_, context, themes, assetManagerFactory, assetStrategies, module, portableAssetStrategy){\n 'use strict';\n\n var itemThemes = themes.get('items');\n var moduleConfig = module.config();\n\n //Create asset manager stack\n var assetManager = assetManagerFactory([\n {\n name : 'theme',\n handle : function handleTheme(url){\n if(itemThemes && url.path && (url.path === itemThemes.base || _.contains(_.pluck(itemThemes.available, 'path'), url.path))){\n return context.root_url + url.toString();\n }\n }\n },\n assetStrategies.taomedia,\n assetStrategies.external,\n assetStrategies.base64,\n assetStrategies.itemCssNoCache,\n assetStrategies.baseUrl,\n portableAssetStrategy\n ], {baseUrl : ''});//baseUrl is not predefined in the config, but should be set upon renderer instantiating\n\n //renderers locations\n var locations = {\n 'assessmentItem' : 'taoQtiItem/qtiCommonRenderer/renderers/Item',\n '_container' : 'taoQtiItem/qtiCommonRenderer/renderers/Container',\n '_simpleFeedbackRule' : false,\n '_tooltip' : 'taoQtiItem/qtiCommonRenderer/renderers/Tooltip',\n 'stylesheet' : 'taoQtiItem/qtiCommonRenderer/renderers/Stylesheet',\n 'outcomeDeclaration' : false,\n 'responseDeclaration' : false,\n 'responseProcessing' : false,\n 'img' : 'taoQtiItem/qtiCommonRenderer/renderers/Img',\n 'math' : 'taoQtiItem/qtiCommonRenderer/renderers/Math',\n 'object' : 'taoQtiItem/qtiCommonRenderer/renderers/Object',\n 'table' : 'taoQtiItem/qtiCommonRenderer/renderers/Table',\n 'printedVariable' : 'taoQtiItem/qtiCommonRenderer/renderers/PrintedVariable',\n 'rubricBlock' : 'taoQtiItem/qtiCommonRenderer/renderers/RubricBlock',\n 'modalFeedback' : 'taoQtiItem/qtiCommonRenderer/renderers/ModalFeedback',\n 'prompt' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/Prompt',\n 'choiceInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/ChoiceInteraction',\n 'extendedTextInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/ExtendedTextInteraction',\n 'orderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/OrderInteraction',\n 'associateInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/AssociateInteraction',\n 'matchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/MatchInteraction',\n 'textEntryInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/TextEntryInteraction',\n 'sliderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/SliderInteraction',\n 'inlineChoiceInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/InlineChoiceInteraction',\n 'simpleChoice.choiceInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleChoice.ChoiceInteraction',\n 'simpleChoice.orderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleChoice.OrderInteraction',\n 'hottext' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/Hottext',\n 'gap' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/Gap',\n 'gapText' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/GapText',\n 'simpleAssociableChoice.matchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleAssociableChoice.MatchInteraction',\n 'simpleAssociableChoice.associateInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/SimpleAssociableChoice.AssociateInteraction',\n 'inlineChoice' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/InlineChoice',\n 'hottextInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/HottextInteraction',\n 'hotspotInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/HotspotInteraction',\n 'hotspotChoice' : false,\n 'gapMatchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GapMatchInteraction',\n 'selectPointInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/SelectPointInteraction',\n 'graphicOrderInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GraphicOrderInteraction',\n 'mediaInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/MediaInteraction',\n 'uploadInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/UploadInteraction',\n 'graphicGapMatchInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GraphicGapMatchInteraction',\n 'gapImg' : 'taoQtiItem/qtiCommonRenderer/renderers/choices/GapImg',\n 'graphicAssociateInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/GraphicAssociateInteraction',\n 'associableHotspot' : false,\n 'customInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/PortableCustomInteraction',\n 'infoControl' : 'taoQtiItem/qtiCommonRenderer/renderers/PortableInfoControl',\n 'include' : 'taoQtiItem/qtiCommonRenderer/renderers/Include',\n 'endAttemptInteraction' : 'taoQtiItem/qtiCommonRenderer/renderers/interactions/EndAttemptInteraction'\n };\n\n return {\n name:'commonRenderer',\n locations: locations,\n options: {\n assetManager: assetManager,\n themes : itemThemes,\n enableDragAndDrop: {\n associate: !!moduleConfig.associateDragAndDrop,\n gapMatch: !!moduleConfig.gapMatchDragAndDrop,\n graphicGapMatch: !!moduleConfig.graphicGapMatchDragAndDrop,\n order: !!moduleConfig.orderDragAndDrop\n },\n messages : moduleConfig.messages\n }\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2014 (original work) Open Assessment Technologies SA;\n */\n\n/**\n * Define the Qti Item Common Renderer\n */\ndefine('taoQtiItem/qtiCommonRenderer/renderers/Renderer',[\n 'taoQtiItem/qtiRunner/core/Renderer',\n 'taoQtiItem/qtiCommonRenderer/renderers/config'\n], function(Renderer, config){\n 'use strict';\n\n return Renderer.build(config.locations, config.name, config.options);\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/getConfig',['lodash'], function (_) {\n 'use strict';\n\n /**\n * Gets a config set\n * @param {Object} [config]\n * @param {Object} [defaults]\n * @returns {Object}\n */\n return function getConfig(config, defaults) {\n return _(config || {})\n .omit(function (value) {\n return value === null || typeof value === 'undefined';\n })\n .defaults(defaults || {})\n .value();\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/getLabels',['lodash'], function (_) {\n 'use strict';\n\n /**\n * Gets the list of messages related to a particular level.\n * The level is provided as a numeric value, starting from 1.\n * @param {Array|Object} messages - The list of messages for all levels.\n * If only one object is provided is will be wrapped into an array\n * @param {Number|String} level - The level for which filter the messages.\n * It should be comprised within the available indexes.\n * Higher levels will be reduced to the higher available,\n * lower levels will be increased to the lowest.\n * @returns {Object}\n */\n return function getLabels(messages, level) {\n messages = messages || {};\n\n if (!_.isArray(messages)) {\n messages = [messages];\n }\n\n // Compute the level value that targets which list of labels to use.\n // It should be comprised within the available indexes.\n // Higher levels will be reduced to the higher available, lower levels will be increased to the lowest.\n level = Math.min(Math.max(parseInt(level, 10) || 0, 1), messages.length || 1) - 1;\n\n return messages[level] || {};\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n * @author dieter \n */\ndefine('taoClientDiagnostic/tools/getStatus',['lodash'], function (_) {\n 'use strict';\n\n /**\n * Gets the correct status message for a given percentage from a list of thresholds.\n * @param {Number|String} percentage - The actual percentage. Must be comprised between 0 and 100.\n * Other values will be adjusted to fit the interval.\n * @param {Array|Object} [thresholds] - A list of descriptors for each thresholds.\n * A threshold field must be provided for each.\n * @returns {Object} Returns the corresponding threshold, or an empty object if none match.\n */\n return function getStatus(percentage, thresholds) {\n // need a structure compatible with the handlebars template\n var status = {\n // the percentage is between 0 and 100 and obviously must be a number\n percentage: Math.max(0, Math.min(100, Math.round(parseInt(percentage, 10) || 0))),\n quality: {}\n };\n var len, feedback, i, step;\n\n // grab a feedback related to the percentage in the thresholds list\n if (thresholds) {\n if (!_.isArray(thresholds)) {\n thresholds = [thresholds];\n }\n\n len = thresholds.length;\n for (i = 0; i < len; i++) {\n step = thresholds[i];\n if (step && (!step.threshold || status.percentage >= step.threshold)) {\n feedback = step;\n } else {\n break;\n }\n }\n\n if (feedback) {\n status.feedback = _.clone(feedback);\n }\n }\n\n return status;\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/performances/tester',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'async',\n 'context',\n 'helpers',\n 'taoClientDiagnostic/tools/stats',\n 'taoQtiItem/qtiItem/core/Loader',\n 'taoQtiItem/qtiCommonRenderer/renderers/Renderer',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getStatus'\n], function($, _, __, async, context, helpers, stats, Loader, Renderer, getConfig, getLabels, getStatus) {\n 'use strict';\n\n /**\n * Duration of one second (in milliseconds)\n * @type {Number}\n * @private\n */\n var _second = 1000;\n\n /**\n * Default timeout duration\n * @type {Number}\n * @private\n */\n var _defaultTimeout = 30 * _second;\n\n /**\n * Default number of renderings by samples\n * @type {Number}\n * @private\n */\n var _defaultOccurrencesCount = 10;\n\n /**\n * List of default samples\n * @type {Array}\n */\n var _defaultSamples = [\n 'taoClientDiagnostic/tools/performances/data/sample1/',\n 'taoClientDiagnostic/tools/performances/data/sample2/',\n 'taoClientDiagnostic/tools/performances/data/sample3/'\n ];\n\n /**\n * Default values for the performances tester\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'performances',\n\n // The threshold for optimal performances\n optimal: 0.025,\n\n // The threshold for minimal performances\n threshold: 0.25\n };\n\n /**\n * A list of thresholds for performances check\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Very slow performances'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Average performances'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Good performances'),\n type: 'success'\n }];\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Workstation performances'),\n status: __('Checking the performances...'),\n performancesMin: __('Minimum rendering time'),\n performancesMax: __('Maximum rendering time'),\n performancesAverage: __('Average rendering time')\n }\n ];\n\n /**\n * Base text used to build sample identifiers\n * @type {String}\n * @private\n */\n var _sampleBaseId = 'sample';\n\n /**\n * Loads a page inside a div and compute the time to load\n * @param {Object} data The descriptor of the page to load\n * @param {Function} done A callback function called to provide the result\n */\n function loadItem(data, done){\n\n //item location config\n var qtiJsonFile = data.url + 'qti.json';\n var urlTokens = data.url.split('/');\n var extension = urlTokens[0];\n var fullpath = require.s.contexts._.config.paths[extension];\n var baseUrl = data.url.replace(extension, fullpath);\n var loader = new Loader();\n var renderer = new Renderer({\n baseUrl : baseUrl // compatibility mode for legacy installations\n });\n\n // check needed by compatibility mode for legacy installations\n if (renderer.getAssetManager) {\n renderer.getAssetManager().setData('baseUrl', baseUrl);\n }\n\n require(['json!'+qtiJsonFile], function(itemData){\n\n loader.loadItemData(itemData, function(item){\n renderer.load(function(){\n\n var $container,\n duration,\n start,\n end,\n result;\n\n //start right before rendering\n start = window.performance.now();\n\n //set renderer\n item.setRenderer(this);\n\n //render markup\n $container = $('
        ').appendTo('body');\n $container.append(item.render());\n\n //execute javascript\n item.postRender();\n\n //remove item\n $container.remove();\n\n //done\n end = window.performance.now();\n\n duration = (end - start) / _second;\n\n result = {\n id : data.id,\n url : data.url,\n duration: duration\n };\n\n done(null, result);\n\n }, this.getLoadedClasses());\n });\n\n });\n\n }\n\n /**\n * Performs a browser performances test by running a heavy page\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {Number} [config.optimal] - The threshold for optimal performances\n * @param {Number} [config.threshold] - The threshold for minimal performances\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function performancesTester(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n var idx = 0;\n var _samples = _.map(!_.isEmpty(initConfig.samples) && initConfig.samples || _defaultSamples, function(sample) {\n idx ++;\n return {\n id : _sampleBaseId + idx,\n url : sample,\n timeout : initConfig.timeout * 1000 || _defaultTimeout,\n nb : initConfig.occurrences || _defaultOccurrencesCount\n };\n });\n\n // add one occurrence on the first sample to obfuscate the time needed to load the runner\n _samples[0].nb ++;\n\n return {\n /**\n * Performs a performances test, then call a function to provide the result\n * @param {Function} done\n */\n start: function start(done) {\n var tests = [];\n var self = this;\n\n _.forEach(_samples, function(data) {\n var cb = _.partial(loadItem, data);\n var iterations = data.nb || 1;\n while (iterations --) {\n tests.push(cb);\n }\n });\n\n async.series(tests, function(err, measures) {\n var decimals = 2;\n var results;\n var status;\n var summary;\n\n if(err && !measures.length){\n //something went wrong\n throw err;\n }\n\n // remove the first result to obfuscate the time needed to load the runner\n measures.shift();\n\n results = stats(measures, 'duration', decimals);\n status = self.getFeedback(results.average);\n summary = self.getSummary(results);\n\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n return {\n performancesMin: {message: labels.performancesMin, value: results.min + ' s'},\n performancesMax: {message: labels.performancesMax, value: results.max + ' s'},\n performancesAverage: {message: labels.performancesAverage, value: results.average + ' s'}\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result) {\n var optimal = initConfig.optimal;\n var range = Math.abs(optimal - (initConfig.threshold));\n var status = getStatus((range + optimal - result) / range * 100, _thresholds);\n\n status.title = labels.title;\n status.id = initConfig.id;\n return status;\n }\n };\n }\n\n return performancesTester;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015-2017 (original work) Open Assessment Technologies SA ;\n */\ndefine('taoClientDiagnostic/tools/bandwidth/tester',[\n 'lodash',\n 'i18n',\n 'async',\n 'context',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/stats',\n 'taoClientDiagnostic/tools/fixedDecimals',\n 'taoClientDiagnostic/tools/getStatus'\n], function(_, __, async, context, getConfig, getLabels, stats, fixedDecimals, getStatus) {\n 'use strict';\n\n /**\n * A binary kilo bytes (KiB)\n * @type {Number}\n * @private\n */\n var _kilo = 1024;\n\n /**\n * A binary mega bytes (MiB)\n * @type {Number}\n * @private\n */\n var _mega = _kilo * _kilo;\n\n /**\n * Duration of one second (in milliseconds)\n * @type {Number}\n * @private\n */\n var _second = 1000;\n\n\n /**\n * Default values for the bandwidth tester\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'bandwidth',\n\n // The typical bandwidth needed for a test taker (Mbps)\n unit: 0.16,\n\n // The thresholds for optimal bandwidth\n ideal: 45,\n\n // Maximum number of test takers to display\n max: 100\n };\n\n /**\n * A list of thresholds for bandwidth check\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Low bandwidth'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Average bandwidth'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Good bandwidth'),\n type: 'success'\n }];\n\n /**\n * List of descriptors defining the data sets to download.\n * - file : path of the file containing the test data\n * - size : the given size of the file\n * - timeout : the timeout for the download\n * - threshold : a bandwidth threshold above which the data set can be downloaded to evaluate a more accurate value\n * - nb : number of download iterations\n * @type {Object}\n */\n var _downloadData = {\n \"10KB\" : {\n id : '10KB',\n file : 'data/bin10KB.data',\n size : 10 * _kilo,\n timeout : _second,\n threshold : 0,\n nb : 10\n },\n \"100KB\" : {\n id : '100KB',\n file : 'data/bin100KB.data',\n size : 100 * _kilo,\n timeout : 2 * _second,\n threshold : 0,\n nb : 5\n },\n \"1MB\" : {\n id : '1MB',\n file : 'data/bin1MB.data',\n size : _mega,\n timeout : 20 * _second,\n threshold : 0,\n nb : 3\n }\n };\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Bandwidth'),\n status: __('Checking the bandwidth...'),\n legend: __('Number of simultaneous test takers the connection can handle'),\n bandwidthMin: __('Minimum bandwidth'),\n bandwidthMax: __('Maximum bandwidth'),\n bandwidthAverage: __('Average bandwidth')\n },\n // level 2\n {\n title: __('Media intensive bandwidth'),\n status: __('Checking the media intensive bandwidth...'),\n legend: __('Number of simultaneous test takers the connection can handle with media intensive'),\n bandwidthMin: __('Minimum intensive bandwidth'),\n bandwidthMax: __('Maximum intensive bandwidth'),\n bandwidthAverage: __('Average intensive bandwidth')\n }\n ];\n\n /**\n * Download a data set as described by the provided descriptor and compute the duration.\n * @param {Object} data The data set descriptor to use for download\n * @param {Function} cb A callback function called at the end of the download.\n * This callback is also called if a timeout breaks the download;\n */\n function download(data, cb) {\n var self = this;\n var start, end;\n var timeoutId;\n var url;\n var request;\n\n if (data.threshold && this.bandwidth < data.threshold) {\n return cb('threshold');\n }\n\n url = context.base_www + 'js/tools/bandwidth/' + data.file + '?' + Date.now();\n request = new XMLHttpRequest();\n request.open('GET', url, true);\n request.setRequestHeader('Accept', 'application/octet-stream');\n\n request.onload = function onRequestLoad () {\n var duration;\n var bytes;\n var seconds;\n var speed;\n\n end = window.performance.now();\n clearTimeout(timeoutId);\n\n duration = end - start;\n bytes = data.size;\n seconds = duration / _second;\n\n // speed in Mbps\n speed = ((bytes * 8) / seconds) / _mega;\n\n self.bandwidth = Math.max(self.bandwidth, speed);\n\n return cb(null, {\n id : data.id,\n file : data.file,\n size : data.size,\n duration : duration,\n speed : speed\n });\n };\n request.onerror = function onRequestError (err) {\n clearTimeout(timeoutId);\n cb(err);\n };\n\n timeoutId = _.delay(cb, data.timeout, 'timeout');\n start = window.performance.now();\n request.send();\n }\n\n /**\n * Performs a bandwidth test by downloading a bunch of data sets with different sizes\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {Number} [config.unit] - The typical bandwidth needed for a test taker (Mbps)\n * @param {Number} [config.ideal] - The thresholds for optimal bandwidth\n * @param {Number} [config.max] - Maximum number of test takers to display\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function bandwidthTester (config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs a bandwidth test, then call a function to provide the result\n * @param {Function} done\n */\n start : function start(done) {\n var self = this;\n var tests = [];\n\n _.forEach(_downloadData, function(data) {\n var cb = _.bind(download, self, data);\n var iterations = data.nb || 1;\n while (iterations --) {\n tests.push(cb);\n }\n });\n\n this.bandwidth = 0;\n\n async.series(tests, function(err, measures) {\n var duration = 0;\n var size = 0;\n var decimals = 2;\n var results;\n var summary;\n var status;\n\n function getValue(value) {\n var speed = 0;\n\n if (value) {\n duration += value.duration;\n size += value.size;\n\n speed = value.speed;\n value.speed = fixedDecimals(speed, decimals);\n }\n\n return speed;\n }\n\n if (err && !measures.length) {\n //something went wrong\n throw err;\n }\n\n results = stats(measures, getValue, decimals);\n\n results.duration = fixedDecimals(duration / _second, decimals);\n results.size = size;\n\n summary = self.getSummary(results);\n status = self.getFeedback(results.max);\n\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n return {\n bandwidthMin: {message: labels.bandwidthMin, value: results.min + ' Mbps'},\n bandwidthMax: {message: labels.bandwidthMax, value: results.max + ' Mbps'},\n bandwidthAverage: {message: labels.bandwidthAverage, value: results.average + ' Mbps'}\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result) {\n var bandwidthUnit = initConfig.unit;\n var threshold = initConfig.ideal;\n var maxTestTakers = initConfig.max;\n var max = threshold * bandwidthUnit;\n var status = getStatus(result / max * 100, _thresholds);\n var nb = Math.floor(result / bandwidthUnit);\n\n if (nb > maxTestTakers) {\n nb = '>' + maxTestTakers;\n }\n\n status.id = initConfig.id;\n status.title = labels.title;\n status.feedback.legend = labels.legend;\n status.quality.label = nb;\n\n if (nb.toString().length > 2) {\n status.quality.wide = true;\n }\n\n return status;\n }\n };\n }\n\n return bandwidthTester;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\ndefine('taoClientDiagnostic/tools/upload/tester',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'async',\n 'util/url',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getStatus'\n], function($, _, __, async, urlHelper, getConfig, getLabels, getStatus) {\n 'use strict';\n\n /**\n * A binary kilo bytes (KiB)\n * @type {Number}\n * @private\n */\n var _kilo = 1024;\n\n /**\n * A binary mega bytes (MiB)\n * @type {Number}\n * @private\n */\n var _mega = _kilo * _kilo;\n\n /**\n * Result of diagnostic\n */\n var data = [];\n\n /**\n * Default values for the upload speed tester\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'upload',\n\n // Size of data to sent to server during speed test in bytes\n size: _mega,\n\n // Optimal speed in bytes per second\n optimal: _mega\n };\n\n /**\n * A list of thresholds for bandwidth check\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Low upload speed'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Average upload speed'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Good upload speed'),\n type: 'success'\n }];\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Upload speed'),\n status: __('Checking upload speed...'),\n uploadAvg: __('Average upload speed'),\n uploadMax: __('Max upload speed')\n }\n ];\n\n /**\n * Generate random string of given length\n * @param length\n */\n var generateStr = function generateStr(length) {\n var text = \"\";\n var possible = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n var i;\n\n for (i = 0; i < length; i++) {\n text += possible.charAt(Math.floor(Math.random() * possible.length));\n }\n\n return text;\n };\n\n /**\n * Upload generated string to check upload speed.\n * @param {number} size of string to upload in bytes\n * @return {object} jqXHR\n */\n var upload = function upload(size) {\n\n var url = urlHelper.route('upload', 'CompatibilityChecker', 'taoClientDiagnostic', {cache : Date.now()});\n var str = generateStr(size);\n data = [];\n\n return $.ajax({\n url : url,\n type : 'POST',\n data : {\n upload : str\n },\n xhr: function() {\n var xhr = new window.XMLHttpRequest();\n var startTime = Date.now();\n // Upload progress\n xhr.upload.addEventListener(\"progress\", function(evt){\n var passedTime;\n if (evt.lengthComputable) {\n passedTime = Date.now() - startTime;\n data.push({\n time: passedTime,\n loaded: evt.loaded,\n speed: ((evt.loaded * 8) / _mega) / (passedTime / 1000)\n });\n }\n }, false);\n\n return xhr;\n }\n });\n };\n\n /**\n * Performs a upload speed test\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {Number} [config.size] - Size of data to sent to server during speed test in bytes\n * @param {Number} [config.optimal] - Optimal speed in bytes per second\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n var uploadTester = function uploadTester(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs upload speed test, then call a function to provide the result\n * @param {Function} done\n */\n start : function start(done) {\n var self = this;\n\n upload(parseInt(initConfig.size, 10)).then(function() {\n var totalSpeed = 0;\n var avgSpeed;\n var maxSpeed = 0;\n var status, summary, results;\n\n _.forEach(data, function (val) {\n totalSpeed += val.speed;\n if (maxSpeed < val.speed) {\n maxSpeed = Math.round(val.speed * 100) / 100;\n }\n });\n avgSpeed = Math.round(totalSpeed / data.length * 100) / 100;\n results = {\n max: maxSpeed,\n avg: avgSpeed,\n type: 'upload'\n };\n\n status = self.getFeedback(avgSpeed);\n summary = self.getSummary(results);\n\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n return {\n uploadAvg: {message: labels.uploadAvg, value: results.avg + ' Mbps'},\n uploadMax: {message: labels.uploadMax, value: results.max + ' Mbps'}\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result) {\n var optimal = initConfig.optimal / _mega;\n var status = getStatus((100 / optimal) * result, _thresholds);\n\n status.id = initConfig.id;\n status.title = labels.title;\n\n return status;\n }\n };\n };\n\n return uploadTester;\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * This helper performs a server request to gather information about the user browser and os\n *\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/getPlatformInfo',[\n 'jquery',\n 'util/url',\n 'core/promise',\n 'taoClientDiagnostic/tools/getConfig'\n], function ($, url, Promise, getConfig) {\n 'use strict';\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var defaultConfig = {\n browserVersionAction: 'whichBrowser',\n browserVersionController: 'CompatibilityChecker',\n browserVersionExtension: 'taoClientDiagnostic'\n };\n\n /**\n * Gets the URL of the platform tester\n * @param {Window} win\n * @param {String} action\n * @param {String} controller\n * @param {String} extension\n * @returns {String}\n */\n function getTesterUrl(win, action, controller, extension) {\n var document = win.document;\n var navigator = win.navigator;\n var screen = win.screen;\n var params = {};\n var e = 0;\n var f = 0;\n\n // append the browser user agent\n params.ua = navigator.userAgent;\n\n // detect browser family\n e |= win.ActiveXObject ? 1 : 0;\n e |= win.opera ? 2 : 0;\n e |= win.chrome ? 4 : 0;\n e |= 'getBoxObjectFor' in document || 'mozInnerScreenX' in win ? 8 : 0;\n e |= ('WebKitCSSMatrix' in win || 'WebKitPoint' in win || 'webkitStorageInfo' in win || 'webkitURL' in win) ? 16 : 0;\n e |= (e & 16 && ({}.toString).toString().indexOf(\"\\n\") === -1) ? 32 : 0;\n params.e = e;\n\n // gather info about browser functionality\n f |= 'sandbox' in document.createElement('iframe') ? 1 : 0;\n f |= 'WebSocket' in win ? 2 : 0;\n f |= win.Worker ? 4 : 0;\n f |= win.applicationCache ? 8 : 0;\n f |= win.history && win.history.pushState ? 16 : 0;\n f |= document.documentElement.webkitRequestFullScreen ? 32 : 0;\n f |= 'FileReader' in win ? 64 : 0;\n params.f = f;\n\n // append a unique ID\n params.r = Math.random().toString(36).substring(7);\n\n // get the screen size\n params.w = screen.width;\n params.h = screen.height;\n\n return url.route(action, controller, extension, params);\n }\n\n /**\n * Check the user browser and os\n * @param {Window} window - Need an access to the window object\n * @param {Object} config\n * @param {String} config.browserVersionAction - The name of the action to call to get the browser checker\n * @param {String} config.browserVersionController - The name of the controller to call to get the browser checker\n * @param {String} config.browserVersionExtension - The name of the extension containing the controller to call to get the browser checker\n * @returns {Promise}\n */\n return function getPlatformInfo(win, config) {\n var testerUrl;\n\n config = getConfig(config, defaultConfig);\n\n testerUrl = getTesterUrl(\n win,\n config.browserVersionAction,\n config.browserVersionController,\n config.browserVersionExtension\n );\n\n return new Promise(function (resolve, reject) {\n $.ajax({url: testerUrl})\n .done(resolve)\n .fail(reject);\n });\n };\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/browser/tester',[\n 'jquery',\n 'i18n',\n 'util/url',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getPlatformInfo',\n 'taoClientDiagnostic/tools/getStatus'\n], function ($, __, url, getConfig, getLabels, getPlatformInfo, getStatus) {\n 'use strict';\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'browser',\n browserVersionAction: 'whichBrowser',\n browserVersionController: 'CompatibilityChecker',\n browserVersionExtension: 'taoClientDiagnostic',\n action: 'check',\n controller: 'DiagnosticChecker'\n };\n\n /**\n * Placeholder variables for custom messages\n * @type {Object}\n * @private\n */\n var _placeHolders = {\n CURRENT_BROWSER: '%CURRENT_BROWSER%',\n CURRENT_OS: '%CURRENT_OS%'\n };\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Operating system and web browser'),\n status: __('Checking the browser...'),\n browser: __('Web browser'),\n os: __('Operating system')\n }\n ];\n\n /**\n * Performs a browser support test\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {String} [config.action] - The name of the action to call to get the browser checker\n * @param {String} [config.controller] - The name of the controller to call to get the browser checker\n * @param {String} [config.extension] - The name of the extension containing the controller to call to get the browser checker\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function browserTester(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs a browser support test, then call a function to provide the result\n * @param {Function} done\n */\n start: function start(done) {\n var self = this;\n\n getPlatformInfo(window, initConfig)\n .then(function(results) {\n // which browser\n $.post(\n url.route(initConfig.action, initConfig.controller, initConfig.extension),\n results,\n function (data) {\n var percentage = ('success' === data.type) ? 100 : (('warning' === data.type) ? 33 : 0);\n var status = self.getFeedback(percentage, data);\n var summary = self.getSummary(results);\n\n status.customMsgRenderer = function(customMsg) {\n return (customMsg || '')\n .replace(_placeHolders.CURRENT_BROWSER, summary.browser.value)\n .replace(_placeHolders.CURRENT_OS, summary.os.value);\n };\n\n done(status, summary, results);\n },\n 'json'\n );\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n var currentBrowser = results.browser + ' ' + results.browserVersion;\n var currentOs = results.os + ' ' + results.osVersion;\n return {\n browser: {\n message: labels.browser,\n value: currentBrowser\n },\n os: {\n message: labels.os,\n value: currentOs\n }\n };\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Number} result\n * @param {Object} data\n * @returns {Object}}\n */\n getFeedback: function getFeedback(result, data) {\n var status = getStatus(result, data);\n\n status.id = initConfig.id;\n status.title = labels.title;\n\n return status;\n }\n };\n }\n\n return browserTester;\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/main', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

        \";\n if (helper = helpers.header) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.header); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

        \";\n return buffer;\n }\n\nfunction program3(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

        \";\n if (helper = helpers.info) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.info); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

        \";\n return buffer;\n }\n\nfunction program5(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

        \";\n if (helper = helpers.setup) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.setup); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

        \";\n return buffer;\n }\n\nfunction program7(depth0,data) {\n \n var buffer = \"\", helper, options;\n buffer += \"\\n

        \\n \\n \\n

        \\n \";\n return buffer;\n }\n\n buffer += \"
        \\n\\n

        \";\n if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

        \\n\\n
        \\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.header), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.info), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.setup), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.requireSchoolName), {hash:{},inverse:self.noop,fn:self.program(7, program7, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n
        \\n\\n
        \\n \\n
        \\n\\n
          \\n\\n
          \\n

          \\n
          \\n\\n
          \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/result', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, functionType=\"function\", self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", helper, options;\n buffer += \"\\n
          \\n \\n \\n
          \\n
          \\n \";\n return buffer;\n }\n\n buffer += \"
        • \\n

          \";\n if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

          \\n
          \\n\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.details), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n
        • \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/details', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, options, functionType=\"function\", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"\\n \";\n if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\";\n if (helper = helpers.value) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.value); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\n \";\n return buffer;\n }\n\n buffer += \"
          \\n

          \"\n + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Details\", options) : helperMissing.call(depth0, \"__\", \"Details\", options)))\n + \"

          \\n
          \\n \\n \\n \";\n stack1 = helpers.each.call(depth0, depth0, {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \\n
          \\n
          \\n
          \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"
          \";\n if (helper = helpers.legend) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.legend); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
          \";\n return buffer;\n }\n\nfunction program3(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"
          \";\n if (helper = helpers.customMsg) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.customMsg); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"
          \";\n return buffer;\n }\n\n buffer += \"
          \\n \\n \";\n if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.legend), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.customMsg), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n
          \\n\";\n return buffer;\n });\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, functionType=\"function\", escapeExpression=this.escapeExpression, self=this;\n\nfunction program1(depth0,data) {\n \n \n return \" wide\";\n }\n\nfunction program3(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \" title=\\\"\";\n if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"\\\"\";\n return buffer;\n }\n\n buffer += \"
          \\n
          \\n
          \\n\";\n return buffer;\n });\n});\n\n","\ndefine('css!taoClientDiagnosticCss/diagnostics',[],function(){});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2016-2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n * @author dieter \n */\ndefine('taoClientDiagnostic/tools/diagnostic/diagnostic',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'async',\n 'ui/feedback',\n 'ui/component',\n 'core/logger',\n 'core/store',\n 'core/dataProvider/request',\n 'util/url',\n 'taoClientDiagnostic/tools/performances/tester',\n 'taoClientDiagnostic/tools/bandwidth/tester',\n 'taoClientDiagnostic/tools/upload/tester',\n 'taoClientDiagnostic/tools/browser/tester',\n 'taoClientDiagnostic/tools/getStatus',\n 'taoClientDiagnostic/tools/getConfig',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/main',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/result',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/details',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/feedback',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/quality-bar',\n 'css!taoClientDiagnosticCss/diagnostics'\n], function ($,\n _,\n __,\n async,\n feedback,\n component,\n loggerFactory,\n store,\n request,\n urlUtil,\n performancesTester,\n bandwidthTester,\n uploadTester,\n browserTester,\n getStatus,\n getConfig,\n mainTpl,\n resultTpl,\n detailsTpl,\n feedbackTpl,\n qualityBarTpl) {\n 'use strict';\n\n /**\n * @type {logger}\n */\n var logger = loggerFactory('taoClientDiagnostic/diagnostic');\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var _defaults = {\n title: __('Diagnostic Tool'),\n header: __('This tool will run a number of tests in order to establish how well your current environment is suitable to run the TAO platform.'),\n info: __('Be aware that these tests will take up to several minutes.'),\n button: __('Begin diagnostics'),\n actionStore: 'storeData',\n controller: 'DiagnosticChecker',\n extension: 'taoClientDiagnostic',\n actionDropId: 'deleteId',\n storeAllRuns: false,\n configurableText: {}\n };\n\n /**\n * A list of thresholds for summary\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: 0,\n message: __('Your system requires a compatibility update, please contact your system administrator.'),\n type: 'error'\n }, {\n threshold: 33,\n message: __('Your system is not optimal, please contact your system administrator.'),\n type: 'warning'\n }, {\n threshold: 66,\n message: __('Your system is fully compliant.'),\n type: 'success'\n }];\n\n /**\n * Defines a diagnostic tool\n * @type {Object}\n */\n var diagnostic = {\n /**\n * Updates the displayed status\n * @param {String} status\n * @returns {diagnostic}\n * @private\n */\n changeStatus: function changeStatus(status) {\n if (this.is('rendered')) {\n this.controls.$status.html(status);\n }\n return this;\n },\n\n /**\n * Sends the detailed stats to the server\n * @param {String} type The type of stats\n * @param {Object} details The stats details\n * @param {Function} done A callback method called once server has responded\n */\n store: function store(type, details, done) {\n var config = this.config;\n\n details = _.omit(details, 'values');\n details.type = type;\n\n $.post(\n urlUtil.route(config.actionStore, config.controller, config.extension, config.storeParams),\n details,\n done,\n \"json\"\n );\n },\n\n /**\n * Retrieve a custom message from the config\n * @param key\n * @returns {*}\n */\n getCustomMsg: function getCustomMsg(key) {\n return this.config.configurableText[key];\n },\n\n /**\n * Enrich the feeback object with a custom message if the test has failed\n * @param {Object} status - the test result\n * @param {String} msg - the custom message\n */\n addCustomFeedbackMsg: function addCustomFeedbackMsg(status, msg) {\n if (this.hasFailed(status) && msg) {\n if (_.isFunction(status.customMsgRenderer)) {\n msg = status.customMsgRenderer(msg);\n }\n status.feedback = status.feedback || {};\n status.feedback.customMsg = msg;\n }\n },\n\n /**\n * Check if a result is considered as failed\n * @param {Object} result\n * @returns {boolean}\n */\n hasFailed: function hasFailed(result) {\n return !(\n result\n && result.feedback\n && result.feedback.type === \"success\"\n );\n },\n\n /**\n * Add a result row\n * @param {Object} result\n * @returns {diagnostic}\n */\n addResult: function addResult(result) {\n var $main, $indicator, $result;\n\n if (this.is('rendered')) {\n // adjust the width of the displayed label, if any, to the text length\n if (result.quality && result.quality.label && result.quality.label.toString().length > 2) {\n result.quality.wide = true;\n }\n\n // create and append the result to the displayed list\n $main = $(resultTpl(result));\n $result = $main.find('.result');\n if (result.feedback) {\n $result.append($(feedbackTpl(result.feedback)));\n }\n if (result.quality) {\n $result.append($(qualityBarTpl(result.quality)));\n }\n if (result.details) {\n $main.find('.details').append($(detailsTpl(result.details)));\n }\n\n $indicator = $main.find('.quality-indicator');\n this.controls.$results.append($main);\n\n // the result is hidden by default, show it with a little animation\n $main.fadeIn(function () {\n if ($indicator.length) {\n $indicator.animate({\n left: (result.percentage * $main.outerWidth() / 100) - ($indicator.outerWidth() / 2)\n });\n }\n });\n }\n\n return this;\n },\n\n /**\n * Does some preparations before starting the diagnostics\n * @returns {diagnostic}\n * @private\n */\n prepare: function prepare() {\n /**\n * Notifies the diagnostic start\n * @event diagnostic#start\n */\n this.trigger('start');\n this.changeStatus(__('Starting...'));\n this.setState('running', true);\n this.setState('done', false);\n\n // first we need a clean space to display the results, so remove the last results if any\n this.controls.$results.empty();\n\n // remove the start button during the diagnostic\n this.controls.$start.addClass('hidden');\n\n return this;\n },\n\n /**\n * Does some post process after ending the diagnostics\n * @returns {diagnostic}\n * @private\n */\n finish: function finish() {\n var config = this.config;\n\n // restore the start button to allow a new diagnostic run\n this.controls.$start.removeClass('hidden');\n\n if (config.storeAllRuns) {\n this.deleteIdentifier();\n }\n\n /**\n * Notifies the diagnostic end\n * @event diagnostic#end\n */\n this.trigger('end');\n this.changeStatus(__('Done!'));\n this.setState('running', false);\n this.setState('done', true);\n\n return this;\n },\n\n /**\n * delete unique id for this test session (next test will generate new one)\n */\n deleteIdentifier: function deleteIdentifier() {\n var url = urlUtil.route(this.config.actionDropId, this.config.controller, this.config.extension);\n return request(url, null, 'POST');\n },\n\n /**\n * Runs the diagnostics\n * @returns {diagnostic}\n */\n run: function run() {\n var self = this;\n var information = [];\n var scores = {};\n var testers = [];\n\n // common handling for testers\n function doCheck(testerConfig, cb) {\n var testerId = testerConfig.id;\n\n /**\n * Notifies the start of a tester operation\n * @event diagnostic#starttester\n * @param {String} name - The name of the tester\n */\n self.trigger('starttester', testerId);\n self.setState(testerId, true);\n\n require([testerConfig.tester], function (testerFactory){\n var tester = testerFactory(getConfig(testerConfig, self.config), self);\n self.changeStatus(tester.labels.status);\n tester.start(function (status, details, results) {\n var customMsg;\n if (testerConfig.customMsgKey) {\n customMsg = self.getCustomMsg(testerConfig.customMsgKey);\n self.addCustomFeedbackMsg(status, customMsg);\n }\n\n // the returned details must be ingested into the main details list\n _.forEach(details, function(info) {\n information.push(info);\n });\n scores[status.id] = status;\n\n /**\n * Notifies the end of a tester operation\n * @event diagnostic#endtester\n * @param {String} id - The identifier of the tester\n * @param {Array} results - The results of the test\n */\n self.trigger('endtester', testerId, status);\n self.setState(testerId, false);\n\n // results should be filtered in order to encode complex data\n results = _.mapValues(results, function(value) {\n switch(typeof(value)) {\n case 'boolean': return value ? 1 : 0;\n case 'object': return JSON.stringify(value);\n }\n return value;\n });\n\n // send the data to store\n self.store(testerId, results, function () {\n self.addResult(status);\n cb();\n });\n });\n });\n }\n\n if (this.is('rendered')) {\n // set up the component to a new run\n this.prepare();\n\n _.forEach(this.config.testers, function(testerConfig, testerId) {\n testerConfig.id = testerConfig.id || testerId;\n if (testerConfig.enabled) {\n testers.push(function (cb) {\n doCheck(testerConfig, cb);\n });\n }\n });\n\n // launch each testers in series, then display the results\n async.series(testers, function () {\n // pick the lowest percentage as the main score\n var total = _.min(scores, 'percentage');\n\n // get a status according to the main score\n var status = getStatus(total.percentage, _thresholds);\n\n // display the result\n status.title = __('Total');\n status.id = 'total';\n self.addCustomFeedbackMsg(status, self.config.configurableText.diagTotalCheckResult);\n\n status.details = information;\n self.addResult(status);\n\n // done !\n self.finish();\n });\n }\n\n return this;\n }\n };\n\n /**\n * Builds an instance of the diagnostic tool\n * @param {Object} config\n * @param {String} [config.title] - The displayed title\n * @param {String} [config.header] - A header text displayed to describe the component\n * @param {String} [config.info] - An information text displayed to warn about run duration\n * @param {String} [config.button] - The caption of the start button\n * @param {String} [config.actionStore] - The name of the action to call to store the results\n * @param {String} [config.actionCheck] - The name of the action to call to check the browser results\n * @param {String} [config.controller] - The name of the controller to call\n * @param {String} [config.extension] - The name of the extension containing the controller\n * @param {Object} [config.storeParams] - A list of additional parameters to send with diagnostic results\n * @param {Boolean} [config.requireSchoolName] - If `true` require a school name to allow the tests to start\n *\n * @param {String} [config.browser.action] - The name of the action to call to get the browser checker\n * @param {String} [config.browser.controller] - The name of the controller to call to get the browser checker\n * @param {String} [config.browser.extension] - The name of the extension containing the controller to call to get the browser checker\n *\n * @param {Number} [config.bandwidth.unit] - The typical bandwidth needed for a test taker (Mbps)\n * @param {Array} [config.bandwidth.ideal] - The thresholds for optimal bandwidth, one by bar\n * @param {Number} [config.bandwidth.max] - Maximum number of test takers to display\n *\n * @param {Array} [config.performances.samples] - A list of samples to render in order to compute the rendering performances\n * @param {Number} [config.performances.occurrences] - The number of renderings by samples\n * @param {Number} [config.performances.timeout] - Max allowed duration for a sample rendering\n * @param {Number} [config.performances.optimal] - The threshold for optimal performances\n * @param {Number} [config.performances.threshold] - The threshold for minimal performances\n * @returns {diagnostic}\n */\n function diagnosticFactory(config) {\n // fix the translations for content loaded from config files\n if (config) {\n _.forEach(['title', 'header', 'footer', 'info', 'button'], function(name) {\n if (config[name]) {\n config[name] = __(config[name]);\n }\n });\n }\n\n return component(diagnostic, _defaults)\n .setTemplate(mainTpl)\n\n // uninstalls the component\n .on('destroy', function () {\n this.controls = null;\n })\n\n // renders the component\n .on('render', function () {\n var self = this;\n\n /**\n * Gets a control by its registered name\n * @param {String} name - the name registered in the collection of controls\n */\n function getControl(name) {\n return self.controls['$' + name];\n }\n\n /**\n * Gets the value of an input field\n * @param {String} name - the name registered in the collection of controls\n * @returns {String}\n */\n function getInputValue(name) {\n var $control = getControl(name);\n return ($control && $control.val() || '').trim();\n }\n\n /**\n * Sets the value of an input field\n * @param {String} name - the name registered in the collection of controls\n * @param {String} value\n */\n function setInputValue(name, value) {\n var $control = getControl(name);\n $control && $control.val(value);\n }\n\n /**\n * Enable/Disable a control\n * @param {String} name - the name registered in the collection of controls\n * @param {Boolean} [state]\n */\n function toggleControl(name, state) {\n var $control = getControl(name);\n if ($control) {\n if (typeof state === 'undefined') {\n state = !$control.is(':enabled');\n }\n if (state) {\n $control.removeProp('disabled');\n } else {\n $control.prop('disabled', true);\n }\n }\n }\n\n /**\n * Install the school name manager.\n * @todo: improve this by moving it into a plugin, and obviously implement the plugin handling\n */\n function manageSchoolName() {\n // ensure the diagnostic cannot start without a school name\n self.controls.$school = self.getElement().find('[data-control=\"school\"]')\n .on('keypress', function (e) {\n _.defer(function() {\n toggleControl('start', !!getInputValue('school'));\n if (e.which === 13) {\n e.preventDefault();\n self.controls.$start.click();\n }\n });\n });\n toggleControl('start', !!getInputValue('school'));\n\n // will store the school name in the browser storage, that will allow to restore it next time\n toggleControl('school', false);\n store('client-diagnostic')\n .then(function (storage) {\n // store the school name on test start, to ensure consistency\n self.on('start.school', function() {\n storage.setItem('school', getInputValue('school'))\n .catch(function(error) {\n logger.error(error);\n });\n });\n\n // restore the school name on load\n return storage.getItem('school').then(function (value) {\n setInputValue('school', value);\n toggleControl('start', !!getInputValue('school'));\n toggleControl('school', true);\n });\n })\n .catch(function(error) {\n logger.error(error);\n toggleControl('school', true);\n });\n\n // ensure the school name is properly sent\n self\n .on('start.school', function() {\n // append the school name to the queries\n self.config.storeParams = _.assign(self.config.storeParams || {}, {\n school: getInputValue('school')\n });\n\n // disable the input when running the test\n toggleControl('school', false);\n })\n .on('end.school', function() {\n // enable the input when the test is complete\n toggleControl('school', true);\n })\n }\n\n // get access to all needed placeholders\n this.controls = {\n $start: this.$component.find('[data-action=\"test-launcher\"]'),\n $status: this.$component.find('.status h2'),\n $results: this.$component.find('.results')\n };\n\n // start the diagnostic\n this.controls.$start.on('click', function () {\n self.controls.$start.is(':enabled') && self.run();\n });\n\n if (this.config.requireSchoolName) {\n manageSchoolName();\n }\n\n // show result details\n this.controls.$results.on('click', 'button[data-action=\"show-details\"]', function () {\n var $btn = $(this).closest('button');\n var $result = $btn.closest('[data-result]');\n var $details = $result.find('.details');\n $details.removeClass('hidden');\n $btn.addClass('hidden');\n $result.find('[data-action=\"hide-details\"]').removeClass('hidden');\n });\n\n // hide result details\n this.controls.$results.on('click', 'button[data-action=\"hide-details\"]', function () {\n var $btn = $(this).closest('button');\n var $result = $btn.closest('[data-result]');\n var $details = $result.find('.details');\n $details.addClass('hidden');\n $btn.addClass('hidden');\n $result.find('[data-action=\"show-details\"]').removeClass('hidden');\n });\n })\n .init(config);\n }\n\n return diagnosticFactory;\n});\n\n","/*\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author dieter \n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/controller/CompatibilityChecker/diagnostics',[\n 'jquery',\n 'layout/loading-bar',\n 'ui/feedback',\n 'taoClientDiagnostic/tools/message',\n 'taoClientDiagnostic/tools/diagnostic/diagnostic'\n], function ($, loadingBar, feedback, showMessage, diagnosticFactory) {\n 'use strict';\n\n /**\n * @exports\n */\n return {\n start: function(config) {\n var $contentArea = $('.content');\n\n showMessage('#feedback-box');\n\n diagnosticFactory(config)\n .on('start', function() {\n loadingBar.start();\n })\n .on('end', function() {\n loadingBar.stop();\n })\n .render($contentArea);\n }\n };\n});\n\n","\ndefine('tpl!taoClientDiagnostic/templates/diagnostic/main', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helper, options, functionType=\"function\", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1;\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.diagInstructions), {hash:{},inverse:self.noop,fn:self.program(2, program2, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n return buffer;\n }\nfunction program2(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

          \";\n if (helper = helpers.diagInstructions) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.diagInstructions); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

          \";\n return buffer;\n }\n\nfunction program4(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

          \";\n if (helper = helpers.header) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.header); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

          \";\n return buffer;\n }\n\nfunction program6(depth0,data) {\n \n var buffer = \"\", stack1, helper;\n buffer += \"

          \";\n if (helper = helpers.info) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.info); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

          \";\n return buffer;\n }\n\nfunction program8(depth0,data) {\n \n var buffer = \"\", helper, options;\n buffer += \"\\n

          \\n \\n \\n

          \\n \";\n return buffer;\n }\n\n buffer += \"
          \\n\\n

          \";\n if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1)\n + \"

          \\n\\n
          \\n \";\n stack1 = helpers['with'].call(depth0, (depth0 && depth0.configurableText), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.header), {hash:{},inverse:self.noop,fn:self.program(4, program4, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.info), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \";\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.requireSchoolName), {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n

          \\n \\n \\n

          \\n
          \\n\\n
          \\n \\n
          \\n\\n
            \\n\\n
            \\n

            \\n
            \\n\\n
            \\n\";\n return buffer;\n });\n});\n\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA;\n *\n */\n\n/**\n *\n * @author dieter \n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/controller/Diagnostic/diagnostic',[\n 'module',\n 'jquery',\n 'i18n',\n 'helpers',\n 'layout/loading-bar',\n 'ui/actionbar',\n 'ui/feedback',\n 'taoClientDiagnostic/tools/diagnostic/diagnostic',\n 'tpl!taoClientDiagnostic/templates/diagnostic/main'\n], function (module, $, __, helpers, loadingBar, actionbar, feedback, diagnosticFactory, diagnosticTpl) {\n 'use strict';\n\n /**\n * The CSS scope\n * @type {String}\n */\n var cssScope = '.diagnostic-runner';\n\n /**\n * Controls the readiness check page\n *\n * @type {Object}\n */\n var taoDiagnosticRunnerCtlr = {\n /**\n * Entry point of the page\n */\n start : function start() {\n var $container = $(cssScope);\n var extension = $container.data('extension') || 'taoClientDiagnostic';\n var $list = $container.find('.list');\n var $panel = $('.panel');\n var config = $container.data('config');\n var indexUrl = helpers._url('index', 'Diagnostic', extension);\n var workstationUrl = helpers._url('workstation', 'DiagnosticChecker', extension);\n var buttons = [];\n var moduleConfig = module.config() || {};\n\n config.configurableText = moduleConfig.configurableText || {};\n\n /**\n * Installs the diagnostic tool GUI\n * @param {String} [workstation]\n */\n function installTester(workstation) {\n diagnosticFactory(config)\n .setTemplate(diagnosticTpl)\n .on('render', function() {\n var self = this;\n\n // get access to the input\n this.controls.$workstation = this.getElement().find('[data-control=\"workstation\"]')\n .on('keypress', function (e) {\n if (e.which === 13) {\n e.preventDefault();\n self.run();\n }\n })\n .val(workstation);\n })\n .on('start', function() {\n // append the workstation name to the queries\n this.config.storeParams = this.config.storeParams || {};\n this.config.storeParams.workstation = this.controls.$workstation.val();\n\n // disable the input when running the test\n this.controls.$workstation.prop('disabled', true);\n loadingBar.start();\n })\n .on('end', function() {\n // enable the input when the test is complete\n this.controls.$workstation.removeProp('disabled');\n loadingBar.stop();\n })\n .on('render', function() {\n loadingBar.stop();\n if (config.autoStart) {\n this.run();\n }\n })\n .render($list);\n }\n\n buttons.push({\n id: 'back',\n icon: 'step-backward',\n title: __('Return to the list'),\n label: __('List of readiness checks'),\n action: function() {\n window.location.href = indexUrl;\n }\n });\n\n // tool: close tab, this won't be present in an LTI iframe\n // button should always be right most\n if(window.self === window.top) {\n buttons.push({\n id: 'exitButton',\n icon: 'close',\n title: __('Exit'),\n label: __('Exit'),\n action: function() {\n window.self.close();\n }\n });\n }\n\n actionbar({\n renderTo: $panel,\n buttons: buttons\n });\n\n // need to known the workstation name to display it\n $.get(workstationUrl, 'json')\n .done(function(data) {\n installTester(data && data.workstation);\n })\n .fail(function() {\n feedback().error(__('Unable to get the workstation name!'));\n installTester();\n });\n }\n };\n\n // the page is always loading data when starting\n loadingBar.start();\n\n return taoDiagnosticRunnerCtlr;\n});\n\n","!function(e,t,i){\"use strict\";\"function\"==typeof define&&define.amd?define('taoClientDiagnostic/lib/fingerprint/fingerprint2',i):\"undefined\"!=typeof module&&module.exports?module.exports=i():t.exports?t.exports=i():t[e]=i()}(\"Fingerprint2\",this,function(){\"use strict\";var e=function(t){if(!(this instanceof e))return new e(t);var i={swfContainerId:\"fingerprintjs2\",swfPath:\"flash/compiled/FontList.swf\",detectScreenOrientation:!0,sortPluginsFor:[/palemoon/i],userDefinedFonts:[]};this.options=this.extend(t,i),this.nativeForEach=Array.prototype.forEach,this.nativeMap=Array.prototype.map};return e.prototype={extend:function(e,t){if(null==e)return t;for(var i in e)null!=e[i]&&t[i]!==e[i]&&(t[i]=e[i]);return t},get:function(e){var t=this,i={data:[],push:function(e){var i=e.key,a=e.value;\"function\"==typeof t.options.preprocessor&&(a=t.options.preprocessor(i,a)),this.data.push({key:i,value:a})}};i=this.userAgentKey(i),i=this.languageKey(i),i=this.colorDepthKey(i),i=this.pixelRatioKey(i),i=this.hardwareConcurrencyKey(i),i=this.screenResolutionKey(i),i=this.availableScreenResolutionKey(i),i=this.timezoneOffsetKey(i),i=this.sessionStorageKey(i),i=this.localStorageKey(i),i=this.indexedDbKey(i),i=this.addBehaviorKey(i),i=this.openDatabaseKey(i),i=this.cpuClassKey(i),i=this.platformKey(i),i=this.doNotTrackKey(i),i=this.pluginsKey(i),i=this.canvasKey(i),i=this.webglKey(i),i=this.adBlockKey(i),i=this.hasLiedLanguagesKey(i),i=this.hasLiedResolutionKey(i),i=this.hasLiedOsKey(i),i=this.hasLiedBrowserKey(i),i=this.touchSupportKey(i),i=this.customEntropyFunction(i),this.fontsKey(i,function(i){var a=[];t.each(i.data,function(e){var t=e.value;\"undefined\"!=typeof e.value.join&&(t=e.value.join(\";\")),a.push(t)});var r=t.x64hash128(a.join(\"~~~\"),31);return e(r,i.data)})},customEntropyFunction:function(e){return\"function\"==typeof this.options.customFunction&&e.push({key:\"custom\",value:this.options.customFunction()}),e},userAgentKey:function(e){return this.options.excludeUserAgent||e.push({key:\"user_agent\",value:this.getUserAgent()}),e},getUserAgent:function(){return navigator.userAgent},languageKey:function(e){return this.options.excludeLanguage||e.push({key:\"language\",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||\"\"}),e},colorDepthKey:function(e){return this.options.excludeColorDepth||e.push({key:\"color_depth\",value:screen.colorDepth||-1}),e},pixelRatioKey:function(e){return this.options.excludePixelRatio||e.push({key:\"pixel_ratio\",value:this.getPixelRatio()}),e},getPixelRatio:function(){return window.devicePixelRatio||\"\"},screenResolutionKey:function(e){return this.options.excludeScreenResolution?e:this.getScreenResolution(e)},getScreenResolution:function(e){var t;return t=this.options.detectScreenOrientation&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],\"undefined\"!=typeof t&&e.push({key:\"resolution\",value:t}),e},availableScreenResolutionKey:function(e){return this.options.excludeAvailableScreenResolution?e:this.getAvailableScreenResolution(e)},getAvailableScreenResolution:function(e){var t;return screen.availWidth&&screen.availHeight&&(t=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]),\"undefined\"!=typeof t&&e.push({key:\"available_resolution\",value:t}),e},timezoneOffsetKey:function(e){return this.options.excludeTimezoneOffset||e.push({key:\"timezone_offset\",value:(new Date).getTimezoneOffset()}),e},sessionStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasSessionStorage()&&e.push({key:\"session_storage\",value:1}),e},localStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasLocalStorage()&&e.push({key:\"local_storage\",value:1}),e},indexedDbKey:function(e){return!this.options.excludeIndexedDB&&this.hasIndexedDB()&&e.push({key:\"indexed_db\",value:1}),e},addBehaviorKey:function(e){return document.body&&!this.options.excludeAddBehavior&&document.body.addBehavior&&e.push({key:\"add_behavior\",value:1}),e},openDatabaseKey:function(e){return!this.options.excludeOpenDatabase&&window.openDatabase&&e.push({key:\"open_database\",value:1}),e},cpuClassKey:function(e){return this.options.excludeCpuClass||e.push({key:\"cpu_class\",value:this.getNavigatorCpuClass()}),e},platformKey:function(e){return this.options.excludePlatform||e.push({key:\"navigator_platform\",value:this.getNavigatorPlatform()}),e},doNotTrackKey:function(e){return this.options.excludeDoNotTrack||e.push({key:\"do_not_track\",value:this.getDoNotTrack()}),e},canvasKey:function(e){return!this.options.excludeCanvas&&this.isCanvasSupported()&&e.push({key:\"canvas\",value:this.getCanvasFp()}),e},webglKey:function(e){return this.options.excludeWebGL?e:this.isWebGlSupported()?(e.push({key:\"webgl\",value:this.getWebglFp()}),e):e},adBlockKey:function(e){return this.options.excludeAdBlock||e.push({key:\"adblock\",value:this.getAdBlock()}),e},hasLiedLanguagesKey:function(e){return this.options.excludeHasLiedLanguages||e.push({key:\"has_lied_languages\",value:this.getHasLiedLanguages()}),e},hasLiedResolutionKey:function(e){return this.options.excludeHasLiedResolution||e.push({key:\"has_lied_resolution\",value:this.getHasLiedResolution()}),e},hasLiedOsKey:function(e){return this.options.excludeHasLiedOs||e.push({key:\"has_lied_os\",value:this.getHasLiedOs()}),e},hasLiedBrowserKey:function(e){return this.options.excludeHasLiedBrowser||e.push({key:\"has_lied_browser\",value:this.getHasLiedBrowser()}),e},fontsKey:function(e,t){return this.options.excludeJsFonts?this.flashFontsKey(e,t):this.jsFontsKey(e,t)},flashFontsKey:function(e,t){return this.options.excludeFlashFonts?t(e):this.hasSwfObjectLoaded()&&this.hasMinFlashInstalled()?\"undefined\"==typeof this.options.swfPath?t(e):void this.loadSwfAndDetectFonts(function(i){e.push({key:\"swf_fonts\",value:i.join(\";\")}),t(e)}):t(e)},jsFontsKey:function(e,t){var i=this;return setTimeout(function(){var a=[\"monospace\",\"sans-serif\",\"serif\"],r=[\"Andale Mono\",\"Arial\",\"Arial Black\",\"Arial Hebrew\",\"Arial MT\",\"Arial Narrow\",\"Arial Rounded MT Bold\",\"Arial Unicode MS\",\"Bitstream Vera Sans Mono\",\"Book Antiqua\",\"Bookman Old Style\",\"Calibri\",\"Cambria\",\"Cambria Math\",\"Century\",\"Century Gothic\",\"Century Schoolbook\",\"Comic Sans\",\"Comic Sans MS\",\"Consolas\",\"Courier\",\"Courier New\",\"Garamond\",\"Geneva\",\"Georgia\",\"Helvetica\",\"Helvetica Neue\",\"Impact\",\"Lucida Bright\",\"Lucida Calligraphy\",\"Lucida Console\",\"Lucida Fax\",\"LUCIDA GRANDE\",\"Lucida Handwriting\",\"Lucida Sans\",\"Lucida Sans Typewriter\",\"Lucida Sans Unicode\",\"Microsoft Sans Serif\",\"Monaco\",\"Monotype Corsiva\",\"MS Gothic\",\"MS Outlook\",\"MS PGothic\",\"MS Reference Sans Serif\",\"MS Sans Serif\",\"MS Serif\",\"MYRIAD\",\"MYRIAD PRO\",\"Palatino\",\"Palatino Linotype\",\"Segoe Print\",\"Segoe Script\",\"Segoe UI\",\"Segoe UI Light\",\"Segoe UI Semibold\",\"Segoe UI Symbol\",\"Tahoma\",\"Times\",\"Times New Roman\",\"Times New Roman PS\",\"Trebuchet MS\",\"Verdana\",\"Wingdings\",\"Wingdings 2\",\"Wingdings 3\"],n=[\"Abadi MT Condensed Light\",\"Academy Engraved LET\",\"ADOBE CASLON PRO\",\"Adobe Garamond\",\"ADOBE GARAMOND PRO\",\"Agency FB\",\"Aharoni\",\"Albertus Extra Bold\",\"Albertus Medium\",\"Algerian\",\"Amazone BT\",\"American Typewriter\",\"American Typewriter Condensed\",\"AmerType Md BT\",\"Andalus\",\"Angsana New\",\"AngsanaUPC\",\"Antique Olive\",\"Aparajita\",\"Apple Chancery\",\"Apple Color Emoji\",\"Apple SD Gothic Neo\",\"Arabic Typesetting\",\"ARCHER\",\"ARNO PRO\",\"Arrus BT\",\"Aurora Cn BT\",\"AvantGarde Bk BT\",\"AvantGarde Md BT\",\"AVENIR\",\"Ayuthaya\",\"Bandy\",\"Bangla Sangam MN\",\"Bank Gothic\",\"BankGothic Md BT\",\"Baskerville\",\"Baskerville Old Face\",\"Batang\",\"BatangChe\",\"Bauer Bodoni\",\"Bauhaus 93\",\"Bazooka\",\"Bell MT\",\"Bembo\",\"Benguiat Bk BT\",\"Berlin Sans FB\",\"Berlin Sans FB Demi\",\"Bernard MT Condensed\",\"BernhardFashion BT\",\"BernhardMod BT\",\"Big Caslon\",\"BinnerD\",\"Blackadder ITC\",\"BlairMdITC TT\",\"Bodoni 72\",\"Bodoni 72 Oldstyle\",\"Bodoni 72 Smallcaps\",\"Bodoni MT\",\"Bodoni MT Black\",\"Bodoni MT Condensed\",\"Bodoni MT Poster Compressed\",\"Bookshelf Symbol 7\",\"Boulder\",\"Bradley Hand\",\"Bradley Hand ITC\",\"Bremen Bd BT\",\"Britannic Bold\",\"Broadway\",\"Browallia New\",\"BrowalliaUPC\",\"Brush Script MT\",\"Californian FB\",\"Calisto MT\",\"Calligrapher\",\"Candara\",\"CaslonOpnface BT\",\"Castellar\",\"Centaur\",\"Cezanne\",\"CG Omega\",\"CG Times\",\"Chalkboard\",\"Chalkboard SE\",\"Chalkduster\",\"Charlesworth\",\"Charter Bd BT\",\"Charter BT\",\"Chaucer\",\"ChelthmITC Bk BT\",\"Chiller\",\"Clarendon\",\"Clarendon Condensed\",\"CloisterBlack BT\",\"Cochin\",\"Colonna MT\",\"Constantia\",\"Cooper Black\",\"Copperplate\",\"Copperplate Gothic\",\"Copperplate Gothic Bold\",\"Copperplate Gothic Light\",\"CopperplGoth Bd BT\",\"Corbel\",\"Cordia New\",\"CordiaUPC\",\"Cornerstone\",\"Coronet\",\"Cuckoo\",\"Curlz MT\",\"DaunPenh\",\"Dauphin\",\"David\",\"DB LCD Temp\",\"DELICIOUS\",\"Denmark\",\"DFKai-SB\",\"Didot\",\"DilleniaUPC\",\"DIN\",\"DokChampa\",\"Dotum\",\"DotumChe\",\"Ebrima\",\"Edwardian Script ITC\",\"Elephant\",\"English 111 Vivace BT\",\"Engravers MT\",\"EngraversGothic BT\",\"Eras Bold ITC\",\"Eras Demi ITC\",\"Eras Light ITC\",\"Eras Medium ITC\",\"EucrosiaUPC\",\"Euphemia\",\"Euphemia UCAS\",\"EUROSTILE\",\"Exotc350 Bd BT\",\"FangSong\",\"Felix Titling\",\"Fixedsys\",\"FONTIN\",\"Footlight MT Light\",\"Forte\",\"FrankRuehl\",\"Fransiscan\",\"Freefrm721 Blk BT\",\"FreesiaUPC\",\"Freestyle Script\",\"French Script MT\",\"FrnkGothITC Bk BT\",\"Fruitger\",\"FRUTIGER\",\"Futura\",\"Futura Bk BT\",\"Futura Lt BT\",\"Futura Md BT\",\"Futura ZBlk BT\",\"FuturaBlack BT\",\"Gabriola\",\"Galliard BT\",\"Gautami\",\"Geeza Pro\",\"Geometr231 BT\",\"Geometr231 Hv BT\",\"Geometr231 Lt BT\",\"GeoSlab 703 Lt BT\",\"GeoSlab 703 XBd BT\",\"Gigi\",\"Gill Sans\",\"Gill Sans MT\",\"Gill Sans MT Condensed\",\"Gill Sans MT Ext Condensed Bold\",\"Gill Sans Ultra Bold\",\"Gill Sans Ultra Bold Condensed\",\"Gisha\",\"Gloucester MT Extra Condensed\",\"GOTHAM\",\"GOTHAM BOLD\",\"Goudy Old Style\",\"Goudy Stout\",\"GoudyHandtooled BT\",\"GoudyOLSt BT\",\"Gujarati Sangam MN\",\"Gulim\",\"GulimChe\",\"Gungsuh\",\"GungsuhChe\",\"Gurmukhi MN\",\"Haettenschweiler\",\"Harlow Solid Italic\",\"Harrington\",\"Heather\",\"Heiti SC\",\"Heiti TC\",\"HELV\",\"Herald\",\"High Tower Text\",\"Hiragino Kaku Gothic ProN\",\"Hiragino Mincho ProN\",\"Hoefler Text\",\"Humanst 521 Cn BT\",\"Humanst521 BT\",\"Humanst521 Lt BT\",\"Imprint MT Shadow\",\"Incised901 Bd BT\",\"Incised901 BT\",\"Incised901 Lt BT\",\"INCONSOLATA\",\"Informal Roman\",\"Informal011 BT\",\"INTERSTATE\",\"IrisUPC\",\"Iskoola Pota\",\"JasmineUPC\",\"Jazz LET\",\"Jenson\",\"Jester\",\"Jokerman\",\"Juice ITC\",\"Kabel Bk BT\",\"Kabel Ult BT\",\"Kailasa\",\"KaiTi\",\"Kalinga\",\"Kannada Sangam MN\",\"Kartika\",\"Kaufmann Bd BT\",\"Kaufmann BT\",\"Khmer UI\",\"KodchiangUPC\",\"Kokila\",\"Korinna BT\",\"Kristen ITC\",\"Krungthep\",\"Kunstler Script\",\"Lao UI\",\"Latha\",\"Leelawadee\",\"Letter Gothic\",\"Levenim MT\",\"LilyUPC\",\"Lithograph\",\"Lithograph Light\",\"Long Island\",\"Lydian BT\",\"Magneto\",\"Maiandra GD\",\"Malayalam Sangam MN\",\"Malgun Gothic\",\"Mangal\",\"Marigold\",\"Marion\",\"Marker Felt\",\"Market\",\"Marlett\",\"Matisse ITC\",\"Matura MT Script Capitals\",\"Meiryo\",\"Meiryo UI\",\"Microsoft Himalaya\",\"Microsoft JhengHei\",\"Microsoft New Tai Lue\",\"Microsoft PhagsPa\",\"Microsoft Tai Le\",\"Microsoft Uighur\",\"Microsoft YaHei\",\"Microsoft Yi Baiti\",\"MingLiU\",\"MingLiU_HKSCS\",\"MingLiU_HKSCS-ExtB\",\"MingLiU-ExtB\",\"Minion\",\"Minion Pro\",\"Miriam\",\"Miriam Fixed\",\"Mistral\",\"Modern\",\"Modern No. 20\",\"Mona Lisa Solid ITC TT\",\"Mongolian Baiti\",\"MONO\",\"MoolBoran\",\"Mrs Eaves\",\"MS LineDraw\",\"MS Mincho\",\"MS PMincho\",\"MS Reference Specialty\",\"MS UI Gothic\",\"MT Extra\",\"MUSEO\",\"MV Boli\",\"Nadeem\",\"Narkisim\",\"NEVIS\",\"News Gothic\",\"News GothicMT\",\"NewsGoth BT\",\"Niagara Engraved\",\"Niagara Solid\",\"Noteworthy\",\"NSimSun\",\"Nyala\",\"OCR A Extended\",\"Old Century\",\"Old English Text MT\",\"Onyx\",\"Onyx BT\",\"OPTIMA\",\"Oriya Sangam MN\",\"OSAKA\",\"OzHandicraft BT\",\"Palace Script MT\",\"Papyrus\",\"Parchment\",\"Party LET\",\"Pegasus\",\"Perpetua\",\"Perpetua Titling MT\",\"PetitaBold\",\"Pickwick\",\"Plantagenet Cherokee\",\"Playbill\",\"PMingLiU\",\"PMingLiU-ExtB\",\"Poor Richard\",\"Poster\",\"PosterBodoni BT\",\"PRINCETOWN LET\",\"Pristina\",\"PTBarnum BT\",\"Pythagoras\",\"Raavi\",\"Rage Italic\",\"Ravie\",\"Ribbon131 Bd BT\",\"Rockwell\",\"Rockwell Condensed\",\"Rockwell Extra Bold\",\"Rod\",\"Roman\",\"Sakkal Majalla\",\"Santa Fe LET\",\"Savoye LET\",\"Sceptre\",\"Script\",\"Script MT Bold\",\"SCRIPTINA\",\"Serifa\",\"Serifa BT\",\"Serifa Th BT\",\"ShelleyVolante BT\",\"Sherwood\",\"Shonar Bangla\",\"Showcard Gothic\",\"Shruti\",\"Signboard\",\"SILKSCREEN\",\"SimHei\",\"Simplified Arabic\",\"Simplified Arabic Fixed\",\"SimSun\",\"SimSun-ExtB\",\"Sinhala Sangam MN\",\"Sketch Rockwell\",\"Skia\",\"Small Fonts\",\"Snap ITC\",\"Snell Roundhand\",\"Socket\",\"Souvenir Lt BT\",\"Staccato222 BT\",\"Steamer\",\"Stencil\",\"Storybook\",\"Styllo\",\"Subway\",\"Swis721 BlkEx BT\",\"Swiss911 XCm BT\",\"Sylfaen\",\"Synchro LET\",\"System\",\"Tamil Sangam MN\",\"Technical\",\"Teletype\",\"Telugu Sangam MN\",\"Tempus Sans ITC\",\"Terminal\",\"Thonburi\",\"Traditional Arabic\",\"Trajan\",\"TRAJAN PRO\",\"Tristan\",\"Tubular\",\"Tunga\",\"Tw Cen MT\",\"Tw Cen MT Condensed\",\"Tw Cen MT Condensed Extra Bold\",\"TypoUpright BT\",\"Unicorn\",\"Univers\",\"Univers CE 55 Medium\",\"Univers Condensed\",\"Utsaah\",\"Vagabond\",\"Vani\",\"Vijaya\",\"Viner Hand ITC\",\"VisualUI\",\"Vivaldi\",\"Vladimir Script\",\"Vrinda\",\"Westminster\",\"WHITNEY\",\"Wide Latin\",\"ZapfEllipt BT\",\"ZapfHumnst BT\",\"ZapfHumnst Dm BT\",\"Zapfino\",\"Zurich BlkEx BT\",\"Zurich Ex BT\",\"ZWAdobeF\"];i.options.extendedJsFonts&&(r=r.concat(n)),r=r.concat(i.options.userDefinedFonts);var o=\"mmmmmmmmmmlli\",s=\"72px\",l=document.getElementsByTagName(\"body\")[0],h=document.createElement(\"div\"),u=document.createElement(\"div\"),c={},d={},g=function(){var e=document.createElement(\"span\");return e.style.position=\"absolute\",e.style.left=\"-9999px\",e.style.fontSize=s,e.style.lineHeight=\"normal\",e.innerHTML=o,e},p=function(e,t){var i=g();return i.style.fontFamily=\"'\"+e+\"',\"+t,i},f=function(){for(var e=[],t=0,i=a.length;tt.name?1:e.name=0?\"Windows Phone\":t.indexOf(\"win\")>=0?\"Windows\":t.indexOf(\"android\")>=0?\"Android\":t.indexOf(\"linux\")>=0?\"Linux\":t.indexOf(\"iphone\")>=0||t.indexOf(\"ipad\")>=0?\"iOS\":t.indexOf(\"mac\")>=0?\"Mac\":\"Other\";var r;if(r=\"ontouchstart\"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,r&&\"Windows Phone\"!==e&&\"Android\"!==e&&\"iOS\"!==e&&\"Other\"!==e)return!0;if(\"undefined\"!=typeof i){if(i=i.toLowerCase(),i.indexOf(\"win\")>=0&&\"Windows\"!==e&&\"Windows Phone\"!==e)return!0;if(i.indexOf(\"linux\")>=0&&\"Linux\"!==e&&\"Android\"!==e)return!0;if(i.indexOf(\"mac\")>=0&&\"Mac\"!==e&&\"iOS\"!==e)return!0;if(0===i.indexOf(\"win\")&&0===i.indexOf(\"linux\")&&i.indexOf(\"mac\")>=0&&\"other\"!==e)return!0}return a.indexOf(\"win\")>=0&&\"Windows\"!==e&&\"Windows Phone\"!==e||((a.indexOf(\"linux\")>=0||a.indexOf(\"android\")>=0||a.indexOf(\"pike\")>=0)&&\"Linux\"!==e&&\"Android\"!==e||((a.indexOf(\"mac\")>=0||a.indexOf(\"ipad\")>=0||a.indexOf(\"ipod\")>=0||a.indexOf(\"iphone\")>=0)&&\"Mac\"!==e&&\"iOS\"!==e||(0===a.indexOf(\"win\")&&0===a.indexOf(\"linux\")&&a.indexOf(\"mac\")>=0&&\"other\"!==e||\"undefined\"==typeof navigator.plugins&&\"Windows\"!==e&&\"Windows Phone\"!==e)))},getHasLiedBrowser:function(){var e,t=navigator.userAgent.toLowerCase(),i=navigator.productSub;if(e=t.indexOf(\"firefox\")>=0?\"Firefox\":t.indexOf(\"opera\")>=0||t.indexOf(\"opr\")>=0?\"Opera\":t.indexOf(\"chrome\")>=0?\"Chrome\":t.indexOf(\"safari\")>=0?\"Safari\":t.indexOf(\"trident\")>=0?\"Internet Explorer\":\"Other\",(\"Chrome\"===e||\"Safari\"===e||\"Opera\"===e)&&\"20030107\"!==i)return!0;var a=eval.toString().length;if(37===a&&\"Safari\"!==e&&\"Firefox\"!==e&&\"Other\"!==e)return!0;if(39===a&&\"Internet Explorer\"!==e&&\"Other\"!==e)return!0;if(33===a&&\"Chrome\"!==e&&\"Opera\"!==e&&\"Other\"!==e)return!0;var r;try{throw\"a\"}catch(n){try{n.toSource(),r=!0}catch(o){r=!1}}return!(!r||\"Firefox\"===e||\"Other\"===e)},isCanvasSupported:function(){var e=document.createElement(\"canvas\");return!(!e.getContext||!e.getContext(\"2d\"))},isWebGlSupported:function(){if(!this.isCanvasSupported())return!1;var e,t=document.createElement(\"canvas\");try{e=t.getContext&&(t.getContext(\"webgl\")||t.getContext(\"experimental-webgl\"))}catch(i){e=!1}return!!window.WebGLRenderingContext&&!!e},isIE:function(){return\"Microsoft Internet Explorer\"===navigator.appName||!(\"Netscape\"!==navigator.appName||!/Trident/.test(navigator.userAgent))},hasSwfObjectLoaded:function(){return\"undefined\"!=typeof window.swfobject},hasMinFlashInstalled:function(){return swfobject.hasFlashPlayerVersion(\"9.0.0\")},addFlashDivNode:function(){var e=document.createElement(\"div\");e.setAttribute(\"id\",this.options.swfContainerId),document.body.appendChild(e)},loadSwfAndDetectFonts:function(e){var t=\"___fp_swf_loaded\";window[t]=function(t){e(t)};var i=this.options.swfContainerId;this.addFlashDivNode();var a={onReady:t},r={allowScriptAccess:\"always\",menu:\"false\"};swfobject.embedSWF(this.options.swfPath,i,\"1\",\"1\",\"9.0.0\",!1,a,r,{})},getWebglCanvas:function(){var e=document.createElement(\"canvas\"),t=null;try{t=e.getContext(\"webgl\")||e.getContext(\"experimental-webgl\")}catch(i){}return t||(t=null),t},each:function(e,t,i){if(null!==e)if(this.nativeForEach&&e.forEach===this.nativeForEach)e.forEach(t,i);else if(e.length===+e.length){for(var a=0,r=e.length;a>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]+t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]+t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]+t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]+t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Multiply:function(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]*t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]*t[3],i[1]+=i[2]>>>16,i[2]&=65535,i[2]+=e[3]*t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]*t[3],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[2]*t[2],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[3]*t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Rotl:function(e,t){return t%=64,32===t?[e[1],e[0]]:t<32?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])},x64LeftShift:function(e,t){return t%=64,0===t?e:t<32?[e[0]<>>32-t,e[1]<>>1]),e=this.x64Multiply(e,[4283543511,3981806797]),e=this.x64Xor(e,[0,e[0]>>>1]),e=this.x64Multiply(e,[3301882366,444984403]),e=this.x64Xor(e,[0,e[0]>>>1])},x64hash128:function(e,t){\ne=e||\"\",t=t||0;for(var i=e.length%16,a=e.length-i,r=[0,t],n=[0,t],o=[0,0],s=[0,0],l=[2277735313,289559509],h=[1291169091,658871167],u=0;u>>0).toString(16)).slice(-8)+(\"00000000\"+(r[1]>>>0).toString(16)).slice(-8)+(\"00000000\"+(n[0]>>>0).toString(16)).slice(-8)+(\"00000000\"+(n[1]>>>0).toString(16)).slice(-8)}},e.VERSION=\"1.5.1\",e});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2017 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/tools/fingerprint/tester',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'util/url',\n 'core/logger',\n 'core/store',\n 'core/promise',\n 'core/format',\n 'lib/uuid',\n 'taoClientDiagnostic/tools/getConfig',\n 'taoClientDiagnostic/tools/getLabels',\n 'taoClientDiagnostic/tools/getStatus',\n 'taoClientDiagnostic/lib/fingerprint/fingerprint2'\n], function ($, _, __, url, loggerFactory, store, Promise, format, uuid, getConfig, getLabels, getStatus, Fingerprint2) {\n 'use strict';\n\n /**\n * @type {logger}\n */\n var logger = loggerFactory('taoClientDiagnostic/fingerprint');\n\n /**\n * Some default values\n * @type {Object}\n * @private\n */\n var _defaults = {\n id: 'fingerprint'\n };\n\n /**\n * The names of the storage keys used to persist info on the browser\n * @type {Object}\n * @private\n */\n var _storageKeys = {\n store: 'client-diagnostic',\n uuid: 'uuid',\n fingerprint: 'value',\n details: 'details',\n errors: 'errors',\n changed: 'changed'\n };\n\n /**\n * List of threshold values, for each kind of context\n * @type {Object}\n * @private\n */\n var _thresholdValues = {\n error: 0,\n storageIssue: 50,\n changedFingerprint: 90,\n success: 100\n };\n\n /**\n * A list of thresholds\n * @type {Array}\n * @private\n */\n var _thresholds = [{\n threshold: _thresholdValues.error,\n message: __('Cannot get your fingerprint'),\n type: 'error'\n }, {\n threshold: _thresholdValues.storageIssue,\n message: __('Your fingerprint is %s. However we encountered issue while retrieving the data. Maybe your available disk space is too small'),\n type: 'warning'\n }, {\n threshold: _thresholdValues.changedFingerprint,\n message: __('Your fingerprint is %s. However it seems it has changed since the last check. It could be related to changes in your system.'),\n type: 'success'\n }, {\n threshold: _thresholdValues.success,\n message: __('Your fingerprint is %s'),\n type: 'success'\n }];\n\n /**\n * List of translated texts per level.\n * The level is provided through the config as a numeric value, starting from 1.\n * @type {Object}\n * @private\n */\n var _messages = [\n // level 1\n {\n title: __('Fingerprint'),\n status: __('Computing the fingerprint...'),\n fingerprintValue: __('Fingerprint'),\n fingerprintUUID: __('Dynamic UID'),\n fingerprintDetails: __('Fingerprint sources'),\n fingerprintChanged: __('Change since last fingerprint'),\n fingerprintErrors: __('Fingerprint errors'),\n fingerprintError: __('Fingerprint error')\n }\n ];\n\n /**\n * Performs a browser fingerprint capture\n *\n * @param {Object} config - Some optional configs\n * @param {String} [config.id] - The identifier of the test\n * @param {String} [config.level] - The intensity level of the test. It will aim which messages list to use.\n * @returns {Object}\n */\n function browserFingerprint(config) {\n var initConfig = getConfig(config, _defaults);\n var labels = getLabels(_messages, initConfig.level);\n\n return {\n /**\n * Performs a browser fingerprint capture, then call a function to provide the result\n * @param {Function} done\n */\n start: function start(done) {\n var browserStorage;\n var browserId = 'error';\n var lastFingerprint = 'error';\n var freshBrowserId = false;\n var newFingerprint = false;\n var self = this;\n var errors = [];\n\n /**\n * Simple error handler\n * @param error\n */\n function handleError(error) {\n errors.push({\n key: 'error',\n value: '' + error\n });\n logger.error(error);\n }\n\n function getStorageKey(key) {\n return initConfig.id + '-' + _storageKeys[key];\n }\n\n store(_storageKeys.store)\n .then(function (storage) {\n browserStorage = storage;\n return Promise.all([\n browserStorage.getItem(getStorageKey('uuid')).then(function (value) {\n browserId = value;\n }),\n browserStorage.getItem(getStorageKey('fingerprint')).then(function (value) {\n lastFingerprint = value;\n })\n ]);\n })\n .catch(handleError)\n .then(function () {\n return new Promise(function (resolve) {\n new Fingerprint2().get(function (result, details) {\n var results = {};\n results[_storageKeys.fingerprint] = ('' + result).toUpperCase();\n results[_storageKeys.details] = details;\n resolve(results);\n });\n });\n })\n .then(function (results) {\n var pendingPromises = [];\n var resultFingerprint = results[_storageKeys.fingerprint];\n\n if (!browserId) {\n browserId = uuid(32, 16);\n freshBrowserId = true;\n }\n\n newFingerprint = lastFingerprint !== resultFingerprint && lastFingerprint !== 'error';\n\n // update the results with storage state\n // also detect a change in the fingerprint\n // (if the browser already have a uuid in the storage but the fingerprint changes)\n results[_storageKeys.uuid] = browserId;\n results[_storageKeys.changed] = newFingerprint && !freshBrowserId;\n\n if (browserStorage) {\n if (freshBrowserId) {\n pendingPromises.push(browserStorage.setItem(getStorageKey('uuid'), browserId));\n }\n if (newFingerprint) {\n pendingPromises.push(browserStorage.setItem(getStorageKey('fingerprint'), resultFingerprint));\n }\n }\n\n return Promise.all(pendingPromises)\n .catch(handleError)\n .then(function () {\n return results;\n });\n })\n .catch(handleError)\n .then(function (results) {\n var summary, status;\n\n results = results || {};\n if (errors.length) {\n results[_storageKeys.errors] = errors.length;\n results[_storageKeys.details] = (results[_storageKeys.details] || []).concat(errors);\n }\n\n summary = self.getSummary(results);\n status = self.getFeedback(results);\n done(status, summary, results);\n });\n },\n\n /**\n * Gets the labels loaded for the tester\n * @returns {Object}\n */\n get labels() {\n return labels;\n },\n\n /**\n * Builds the results summary\n * @param {Object} results\n * @returns {Object}}\n */\n getSummary: function getSummary(results) {\n var sources = _(results[_storageKeys.details]).map('key').pull('error').value();\n var summary = {\n fingerprintValue: {\n message: labels.fingerprintValue,\n value: results[_storageKeys.fingerprint]\n },\n fingerprintDetails: {\n message: labels.fingerprintDetails,\n value: __('%d sources (%s)', _.size(sources), sources.join(', '))\n },\n fingerprintChanged: {\n message: labels.fingerprintChanged,\n value: results[_storageKeys.changed] ? __('Yes') : __('No')\n }\n };\n\n if (results[_storageKeys.errors]) {\n summary.fingerprintErrors = {\n message: labels.fingerprintErrors,\n value: results[_storageKeys.errors]\n };\n\n _.forEach(results[_storageKeys.details], function(details, idx) {\n if (details.key === 'error') {\n summary['fingerprintError' + idx] = {\n message: labels.fingerprintError,\n value: details.value\n };\n }\n });\n }\n\n return summary;\n },\n\n /**\n * Gets the feedback status for the provided result value\n * @param {Object} results\n * @returns {Object}}\n */\n getFeedback: function getFeedback(results) {\n var status, percentage;\n\n if (!results ||\n !results[_storageKeys.fingerprint] ||\n results[_storageKeys.fingerprint] === 'error') {\n percentage = _thresholdValues.error;\n } else if (results[_storageKeys.uuid] === 'error') {\n percentage = _thresholdValues.storageIssue;\n } else if (results[_storageKeys.changed]) {\n percentage = _thresholdValues.changedFingerprint;\n } else {\n percentage = _thresholdValues.success;\n }\n\n status = getStatus(percentage, _thresholds);\n status.id = initConfig.id;\n status.title = labels.title;\n status.feedback.message = format(status.feedback.message, results && results[_storageKeys.fingerprint]);\n\n return status;\n }\n };\n }\n\n return browserFingerprint;\n});\n\n","\ndefine('tpl!taoClientDiagnostic/tools/diagnostic/tpl/fingerprint', ['handlebars'], function(hb){ \nreturn hb.template(function (Handlebars,depth0,helpers,partials,data) {\n this.compilerInfo = [4,'>= 1.0.0'];\nhelpers = this.merge(helpers, Handlebars.helpers); data = data || {};\n var buffer = \"\", stack1, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression, self=this, functionType=\"function\";\n\nfunction program1(depth0,data) {\n \n var buffer = \"\", stack1, helper, options;\n buffer += \"\\n\\n \";\n if (helper = helpers.value) { stack1 = helper.call(depth0, {hash:{},data:data}); }\n else { helper = (depth0 && depth0.value); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }\n buffer += escapeExpression(stack1);\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.errors), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n \\n \\n\";\n return buffer;\n }\nfunction program2(depth0,data) {\n \n \n return \" errors\";\n }\n\nfunction program4(depth0,data) {\n \n var buffer = \"\", helper, options;\n buffer += \" title=\\\"\"\n + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, \"Errors occurred! Please see details\", options) : helperMissing.call(depth0, \"__\", \"Errors occurred! Please see details\", options)))\n + \"\\\"\";\n return buffer;\n }\n\nfunction program6(depth0,data) {\n \n \n return \" \";\n }\n\n stack1 = helpers['if'].call(depth0, (depth0 && depth0.value), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});\n if(stack1 || stack1 === 0) { buffer += stack1; }\n buffer += \"\\n\\n\";\n return buffer;\n });\n});\n\n","//! moment-timezone.js\n//! version : 0.5.10\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n!function(a,b){\"use strict\";\"function\"==typeof define&&define.amd?define('lib/moment-timezone.min',[\"moment\"],b):\"object\"==typeof module&&module.exports?module.exports=b(require(\"moment\")):b(a.moment)}(this,function(a){\"use strict\";function b(a){return a>96?a-87:a>64?a-29:a-48}function c(a){var c,d=0,e=a.split(\".\"),f=e[0],g=e[1]||\"\",h=1,i=0,j=1;for(45===a.charCodeAt(0)&&(d=1,j=-1),d;d0?k[0].zone.name:void 0}function q(a){return D&&!a||(D=p()),D}function r(a){return(a||\"\").toLowerCase().replace(/\\//g,\"_\")}function s(a){var b,c,d,e;for(\"string\"==typeof a&&(a=[a]),b=0;b= 2.6.0. You are using Moment.js \"+a.version+\". See momentjs.com\"),h.prototype={_set:function(a){this.name=a.name,this.abbrs=a.abbrs,this.untils=a.untils,this.offsets=a.offsets,this.population=a.population},_index:function(a){var b,c=+a,d=this.untils;for(b=0;bd&&A.moveInvalidForward&&(b=d),f= 2.9.0. You are using Moment.js \"+a.version+\".\"),a.defaultZone=b?t(b):null,a};var N=a.momentProperties;return\"[object Array]\"===Object.prototype.toString.call(N)?(N.push(\"_z\"),N.push(\"_a\")):N&&(N._z=null),w({version:\"2016j\",zones:[\"Africa/Abidjan|LMT GMT|g.8 0|01|-2ldXH.Q|48e5\",\"Africa/Accra|LMT GMT GHST|.Q 0 -k|012121212121212121212121212121212121212121212121|-26BbX.8 6tzX.8 MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE 1BAk MnE 1C0k MnE 1BAk MnE 1BAk MnE|41e5\",\"Africa/Nairobi|LMT EAT BEAT BEAUT|-2r.g -30 -2u -2J|01231|-1F3Cr.g 3Dzr.g okMu MFXJ|47e5\",\"Africa/Algiers|PMT WET WEST CET CEST|-9.l 0 -10 -10 -20|0121212121212121343431312123431213|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 DA0 Imo0 rd0 De0 9Xz0 1fb0 1ap0 16K0 2yo0 mEp0 hwL0 jxA0 11A0 dDd0 17b0 11B0 1cN0 2Dy0 1cN0 1fB0 1cL0|26e5\",\"Africa/Lagos|LMT WAT|-d.A -10|01|-22y0d.A|17e6\",\"Africa/Bissau|LMT WAT GMT|12.k 10 0|012|-2ldWV.E 2xonV.E|39e4\",\"Africa/Maputo|LMT CAT|-2a.k -20|01|-2GJea.k|26e5\",\"Africa/Cairo|EET EEST|-20 -30|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1bIO0 vb0 1ip0 11z0 1iN0 1nz0 12p0 1pz0 10N0 1pz0 16p0 1jz0 s3d0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1WL0 rd0 1Rz0 wp0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1qL0 Xd0 1oL0 11d0 1oL0 11d0 1pb0 11d0 1oL0 11d0 1oL0 11d0 1ny0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 WL0 1qN0 Rb0 1wp0 On0 1zd0 Lz0 1EN0 Fb0 c10 8n0 8Nd0 gL0 e10 mn0|15e6\",\"Africa/Casablanca|LMT WET WEST CET|u.k 0 -10 -10|0121212121212121213121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2gMnt.E 130Lt.E rb0 Dd0 dVb0 b6p0 TX0 EoB0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4mn0 SyN0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|32e5\",\"Africa/Ceuta|WET WEST CET CEST|0 -10 -10 -20|010101010101010101010232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-25KN0 11z0 drd0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1y7p0 LL0 gnd0 rz0 43d0 AL0 1Nd0 XX0 1Cp0 pz0 dEp0 4VB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|85e3\",\"Africa/El_Aaiun|LMT WAT WET WEST|Q.M 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1rDz7.c 1GVA7.c 6L0 AL0 1Nd0 XX0 1Cp0 pz0 1cBB0 AL0 1Nd0 wn0 1FB0 Db0 1zd0 Lz0 1Nf0 wM0 co0 go0 1o00 s00 dA0 vc0 11A0 A00 e00 y00 11A0 uM0 e00 Dc0 11A0 s00 e00 IM0 WM0 mo0 gM0 LA0 WM0 jA0 e00 Rc0 11A0 e00 e00 U00 11A0 8o0 e00 11A0 11A0 5A0 e00 17c0 1fA0 1a00 1a00 1fA0 17c0 1io0 14o0 1lc0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1lc0 14o0 1fA0|20e4\",\"Africa/Johannesburg|SAST SAST SAST|-1u -20 -30|012121|-2GJdu 1Ajdu 1cL0 1cN0 1cL0|84e5\",\"Africa/Khartoum|LMT CAT CAST EAT|-2a.8 -20 -30 -30|01212121212121212121212121212121213|-1yW2a.8 1zK0a.8 16L0 1iN0 17b0 1jd0 17b0 1ip0 17z0 1i10 17X0 1hB0 18n0 1hd0 19b0 1gp0 19z0 1iN0 17b0 1ip0 17z0 1i10 18n0 1hd0 18L0 1gN0 19b0 1gp0 19z0 1iN0 17z0 1i10 17X0 yGd0|51e5\",\"Africa/Monrovia|MMT LRT GMT|H.8 I.u 0|012|-23Lzg.Q 29s01.m|11e5\",\"Africa/Ndjamena|LMT WAT WAST|-10.c -10 -20|0121|-2le10.c 2J3c0.c Wn0|13e5\",\"Africa/Tripoli|LMT CET CEST EET|-Q.I -10 -20 -20|012121213121212121212121213123123|-21JcQ.I 1hnBQ.I vx0 4iP0 xx0 4eN0 Bb0 7ip0 U0n0 A10 1db0 1cN0 1db0 1dd0 1db0 1eN0 1bb0 1e10 1cL0 1c10 1db0 1dd0 1db0 1cN0 1db0 1q10 fAn0 1ep0 1db0 AKq0 TA0 1o00|11e5\",\"Africa/Tunis|PMT CET CEST|-9.l -10 -20|0121212121212121212121212121212121|-2nco9.l 18pa9.l 1qM0 DA0 3Tc0 11B0 1ze0 WM0 7z0 3d0 14L0 1cN0 1f90 1ar0 16J0 1gXB0 WM0 1rA0 11c0 nwo0 Ko0 1cM0 1cM0 1rA0 10M0 zuM0 10N0 1aN0 1qM0 WM0 1qM0 11A0 1o00|20e5\",\"Africa/Windhoek|SWAT SAST SAST CAT WAT WAST|-1u -20 -30 -20 -10 -20|012134545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2GJdu 1Ajdu 1cL0 1SqL0 9NA0 11D0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 11B0 1nX0 11B0|32e4\",\"America/Adak|NST NWT NPT BST BDT AHST HST HDT|b0 a0 a0 b0 a0 a0 a0 90|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|326\",\"America/Anchorage|CAT CAWT CAPT AHST AHDT YST AKST AKDT|a0 90 90 a0 90 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T00 8wX0 iA0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cm0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|30e4\",\"America/Port_of_Spain|LMT AST|46.4 40|01|-2kNvR.U|43e3\",\"America/Araguaina|LMT BRT BRST|3c.M 30 20|0121212121212121212121212121212121212121212121212121|-2glwL.c HdKL.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 ny10 Lz0|14e4\",\"America/Argentina/Buenos_Aires|CMT ART ARST ART ARST|4g.M 40 30 30 20|0121212121212121212121212121212121212121213434343434343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0\",\"America/Argentina/Catamarca|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\"America/Argentina/Cordoba|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343454343234343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0 1qN0 WL0\",\"America/Argentina/Jujuy|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1ze0 TX0 1ld0 WK0 1wp0 TX0 g0p0 10M0 j3c0 uL0\",\"America/Argentina/La_Rioja|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\"America/Argentina/Mendoza|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|0121212121212121212121212121212121212121213434345656543235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1u20 SL0 1vd0 Tb0 1wp0 TW0 g0p0 10M0 agM0 Op0 7TX0 uL0\",\"America/Argentina/Rio_Gallegos|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ako0 7B0 8zb0 uL0\",\"America/Argentina/Salta|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434543432343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 j3c0 uL0\",\"America/Argentina/San_Juan|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|01212121212121212121212121212121212121212134343434534343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Qn0 qO0 16n0 Rb0 1wp0 TX0 g0p0 10M0 ak00 m10 8lb0 uL0\",\"America/Argentina/San_Luis|CMT ART ARST ART ARST WART WARST|4g.M 40 30 30 20 40 30|01212121212121212121212121212121212121212134343456536353465653|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 XX0 1q20 SL0 AN0 kin0 10M0 ak00 m10 8lb0 8L0 jd0 1qN0 WL0 1qN0\",\"America/Argentina/Tucuman|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|012121212121212121212121212121212121212121343434345434323534343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wq0 Ra0 1wp0 TX0 g0p0 10M0 ako0 4N0 8BX0 uL0 1qN0 WL0\",\"America/Argentina/Ushuaia|CMT ART ARST ART ARST WART|4g.M 40 30 30 20 40|0121212121212121212121212121212121212121213434343434343235343|-20UHH.c pKnH.c Mn0 1iN0 Tb0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 1C10 LX0 1C10 LX0 1C10 LX0 1C10 Mn0 MN0 2jz0 MN0 4lX0 u10 5Lb0 1pB0 Fnz0 u10 uL0 1vd0 SL0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 zvd0 Bz0 1tB0 TX0 1wp0 Rb0 1wp0 Rb0 1wp0 TX0 g0p0 10M0 ajA0 8p0 8zb0 uL0\",\"America/Curacao|LMT ANT AST|4z.L 4u 40|012|-2kV7o.d 28KLS.d|15e4\",\"America/Asuncion|AMT PYT PYT PYST|3O.E 40 30 30|012131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|-1x589.k 1DKM9.k 3CL0 3Dd0 10L0 1pB0 10n0 1pB0 10n0 1pB0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1dd0 1cL0 1dd0 1cL0 1dd0 1db0 1dd0 1cL0 1lB0 14n0 1dd0 1cL0 1fd0 WL0 1rd0 1aL0 1dB0 Xz0 1qp0 Xb0 1qN0 10L0 1rB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 WN0 1qL0 11B0 1nX0 1ip0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 TX0 1tB0 19X0 1a10 1fz0 1a10 1fz0 1cN0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0|28e5\",\"America/Atikokan|CST CDT CWT CPT EST|60 50 50 50 50|0101234|-25TQ0 1in0 Rnb0 3je0 8x30 iw0|28e2\",\"America/Bahia|LMT BRT BRST|2y.4 30 20|01212121212121212121212121212121212121212121212121212121212121|-2glxp.U HdLp.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 l5B0 Rb0|27e5\",\"America/Bahia_Banderas|LMT MST CST PST MDT CDT|71 70 60 80 60 50|0121212131414141414141414141414141414152525252525252525252525252525252525252525252525252525252|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nW0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|84e3\",\"America/Barbados|LMT BMT AST ADT|3W.t 3W.t 40 30|01232323232|-1Q0I1.v jsM0 1ODC1.v IL0 1ip0 17b0 1ip0 17b0 1ld0 13b0|28e4\",\"America/Belem|LMT BRT BRST|3d.U 30 20|012121212121212121212121212121|-2glwK.4 HdKK.4 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|20e5\",\"America/Belize|LMT CST CHDT CDT|5Q.M 60 5u 50|01212121212121212121212121212121212121212121212121213131|-2kBu7.c fPA7.c Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1wou Rbu 1zcu Onu 1zcu Onu 1zcu Rbu 1wou Rbu 1f0Mu qn0 lxB0 mn0|57e3\",\"America/Blanc-Sablon|AST ADT AWT APT|40 30 30 30|010230|-25TS0 1in0 UGp0 8x50 iu0|11e2\",\"America/Boa_Vista|LMT AMT AMST|42.E 40 30|0121212121212121212121212121212121|-2glvV.k HdKV.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 smp0 WL0 1tB0 2L0|62e2\",\"America/Bogota|BMT COT COST|4U.g 50 40|0121|-2eb73.I 38yo3.I 2en0|90e5\",\"America/Boise|PST PDT MST MWT MPT MDT|80 70 70 60 60 60|0101023425252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-261q0 1nX0 11B0 1nX0 8C10 JCL0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 Dd0 1Kn0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e4\",\"America/Cambridge_Bay|-00 MST MWT MPT MDDT MDT CST CDT EST|0 70 60 60 50 60 60 50 50|0123141515151515151515151515151515151515151515678651515151515151515151515151515151515151515151515151515151515151515151515151|-21Jc0 RO90 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11A0 1nX0 2K0 WQ0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e2\",\"America/Campo_Grande|LMT AMT AMST|3C.s 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwl.w HdLl.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|77e4\",\"America/Cancun|LMT CST EST EDT CDT|5L.4 60 50 40 50|0123232341414141414141414141414141414141412|-1UQG0 2q2o0 yLB0 1lb0 14p0 1lb0 14p0 Lz0 xB0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 Dd0|63e4\",\"America/Caracas|CMT VET VET|4r.E 4u 40|01212|-2kV7w.k 28KM2.k 1IwOu kqo0|29e5\",\"America/Cayenne|LMT GFT GFT|3t.k 40 30|012|-2mrwu.E 2gWou.E|58e3\",\"America/Panama|CMT EST|5j.A 50|01|-2uduE.o|15e5\",\"America/Chicago|CST CDT EST CWT CPT|60 50 50 50 50|01010101010101010101010101010101010102010101010103401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 1wp0 TX0 WN0 1qL0 1cN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 11B0 1Hz0 14p0 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|92e5\",\"America/Chihuahua|LMT MST CST CDT MDT|74.k 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|81e4\",\"America/Costa_Rica|SJMT CST CDT|5A.d 60 50|0121212121|-1Xd6n.L 2lu0n.L Db0 1Kp0 Db0 pRB0 15b0 1kp0 mL0|12e5\",\"America/Creston|MST PST|70 80|010|-29DR0 43B0|53e2\",\"America/Cuiaba|LMT AMT AMST|3I.k 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwf.E HdLf.E 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 4a10 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|54e4\",\"America/Danmarkshavn|LMT WGT WGST GMT|1e.E 30 20 0|01212121212121212121212121212121213|-2a5WJ.k 2z5fJ.k 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 DC0|8\",\"America/Dawson|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 jrA0 fNd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|13e2\",\"America/Dawson_Creek|PST PDT PWT PPT MST|80 70 70 70 70|0102301010101010101010101010101010101010101010101010101014|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 ML0|12e3\",\"America/Denver|MST MDT MWT MPT|70 60 60 60|01010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 11B0 1qL0 WN0 mn0 Ord0 8x20 ix0 LCN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e5\",\"America/Detroit|LMT CST EST EWT EPT EDT|5w.b 60 50 40 40 40|01234252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2Cgir.N peqr.N 156L0 8x40 iv0 6fd0 11z0 Jy10 SL0 dnB0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e5\",\"America/Edmonton|LMT MST MDT MWT MPT|7x.Q 70 60 60 60|01212121212121341212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2yd4q.8 shdq.8 1in0 17d0 hz0 2dB0 1fz0 1a10 11z0 1qN0 WL0 1qN0 11z0 IGN0 8x20 ix0 3NB0 11z0 LFB0 1cL0 3Cp0 1cL0 66N0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|10e5\",\"America/Eirunepe|LMT ACT ACST AMT|4D.s 50 40 40|0121212121212121212121212121212131|-2glvk.w HdLk.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0 yTd0 d5X0|31e3\",\"America/El_Salvador|LMT CST CDT|5U.M 60 50|012121|-1XiG3.c 2Fvc3.c WL0 1qN0 WL0|11e5\",\"America/Tijuana|LMT MST PST PDT PWT PPT|7M.4 70 80 70 70 70|012123245232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQE0 4PX0 8mM0 8lc0 SN0 1cL0 pHB0 83r0 zI0 5O10 1Rz0 cOO0 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 BUp0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|20e5\",\"America/Fort_Nelson|PST PDT PWT PPT MST|80 70 70 70 70|01023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010104|-25TO0 1in0 UGp0 8x10 iy0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0|39e2\",\"America/Fort_Wayne|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010101023010101010101010101040454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 QI10 Db0 RB0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 5Tz0 1o10 qLb0 1cL0 1cN0 1cL0 1qhd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Fortaleza|LMT BRT BRST|2y 30 20|0121212121212121212121212121212121212121|-2glxq HdLq 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 5z0 2mN0 On0|34e5\",\"America/Glace_Bay|LMT AST ADT AWT APT|3X.M 40 30 30 30|012134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsI0.c CwO0.c 1in0 UGp0 8x50 iu0 iq10 11z0 Jg10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"America/Godthab|LMT WGT WGST|3q.U 30 20|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5Ux.4 2z5dx.4 19U0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e3\",\"America/Goose_Bay|NST NDT NST NDT NWT NPT AST ADT ADDT|3u.Q 2u.Q 3u 2u 2u 2u 40 30 20|010232323232323245232323232323232323232323232323232323232326767676767676767676767676767676767676767676768676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-25TSt.8 1in0 DXb0 2HbX.8 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 S10 g0u 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|76e2\",\"America/Grand_Turk|KMT EST EDT AST|57.b 50 40 40|0121212121212121212121212121212121212121212121212121212121212121212121212123|-2l1uQ.N 2HHBQ.N 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|37e2\",\"America/Guatemala|LMT CST CDT|62.4 60 50|0121212121|-24KhV.U 2efXV.U An0 mtd0 Nz0 ifB0 17b0 zDB0 11z0|13e5\",\"America/Guayaquil|QMT ECT|5e 50|01|-1yVSK|27e5\",\"America/Guyana|LMT GBGT GYT GYT GYT|3Q.E 3J 3J 30 40|01234|-2dvU7.k 24JzQ.k mlc0 Bxbf|80e4\",\"America/Halifax|LMT AST ADT AWT APT|4e.o 40 30 30 30|0121212121212121212121212121212121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsHJ.A xzzJ.A 1db0 3I30 1in0 3HX0 IL0 1E10 ML0 1yN0 Pb0 1Bd0 Mn0 1Bd0 Rz0 1w10 Xb0 1w10 LX0 1w10 Xb0 1w10 Lz0 1C10 Jz0 1E10 OL0 1yN0 Un0 1qp0 Xb0 1qp0 11X0 1w10 Lz0 1HB0 LX0 1C10 FX0 1w10 Xb0 1qp0 Xb0 1BB0 LX0 1td0 Xb0 1qp0 Xb0 Rf0 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 3Qp0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 6i10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|39e4\",\"America/Havana|HMT CST CDT|5t.A 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Meuu.o 72zu.o ML0 sld0 An0 1Nd0 Db0 1Nd0 An0 6Ep0 An0 1Nd0 An0 JDd0 Mn0 1Ap0 On0 1fd0 11X0 1qN0 WL0 1wp0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 14n0 1ld0 14L0 1kN0 15b0 1kp0 1cL0 1cN0 1fz0 1a10 1fz0 1fB0 11z0 14p0 1nX0 11B0 1nX0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 1a10 1in0 1a10 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 17c0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 11A0 6i00 Rc0 1wo0 U00 1tA0 Rc0 1wo0 U00 1wo0 U00 1zc0 U00 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0|21e5\",\"America/Hermosillo|LMT MST CST PST MDT|7n.Q 70 60 80 60|0121212131414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0|64e4\",\"America/Indiana/Knox|CST CDT CWT CPT EST|60 50 50 50 50|0101023010101010101010101010101010101040101010101010101010101010101010101010101010101010141010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 3NB0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 3Cn0 8wp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 z8o0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Marengo|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010104545454545414545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 dyN0 11z0 6fd0 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1e6p0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Petersburg|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010104010101010101010101010141014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 njX0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 3Fb0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 19co0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Tell_City|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vevay|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|010102304545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 kPB0 Awn0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1lnd0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Vincennes|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010454541014545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 g0p0 11z0 1o10 11z0 1qL0 WN0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 caL0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Indiana/Winamac|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|01010230101010101010101010101010101010454541054545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 jrz0 1cL0 1cN0 1cL0 1qhd0 1o00 Rd0 1za0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Inuvik|-00 PST PDDT MST MDT|0 80 60 70 60|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-FnA0 tWU0 1fA0 wPe0 2pz0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|35e2\",\"America/Iqaluit|-00 EWT EPT EST EDDT EDT CST CDT|0 40 40 50 30 40 60 50|01234353535353535353535353535353535353535353567353535353535353535353535353535353535353535353535353535353535353535353535353|-16K00 7nX0 iv0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|67e2\",\"America/Jamaica|KMT EST EDT|57.b 50 40|0121212121212121212121|-2l1uQ.N 2uM1Q.N 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0|94e4\",\"America/Juneau|PST PWT PPT PDT YDT YST AKST AKDT|80 70 70 70 80 90 90 80|01203030303030303030303030403030356767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cM0 1cM0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|33e3\",\"America/Kentucky/Louisville|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101010102301010101010101010101010101454545454545414545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 3Fd0 Nb0 LPd0 11z0 RB0 8x30 iw0 Bb0 10N0 2bB0 8in0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 xz0 gso0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1VA0 LA0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Kentucky/Monticello|CST CDT CWT CPT EST EDT|60 50 50 50 50 40|0101023010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454545454|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 SWp0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/La_Paz|CMT BOST BOT|4w.A 3w.A 40|012|-1x37r.o 13b0|19e5\",\"America/Lima|LMT PET PEST|58.A 50 40|0121212121212121|-2tyGP.o 1bDzP.o zX0 1aN0 1cL0 1cN0 1cL0 1PrB0 zX0 1O10 zX0 6Gp0 zX0 98p0 zX0|11e6\",\"America/Los_Angeles|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 5Wp1 1VaX 3dA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|15e6\",\"America/Maceio|LMT BRT BRST|2m.Q 30 20|012121212121212121212121212121212121212121|-2glxB.8 HdLB.8 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 dMN0 Lz0 8Q10 WL0 1tB0 5z0 2mN0 On0|93e4\",\"America/Managua|MMT CST EST CDT|5J.c 60 50 50|0121313121213131|-1quie.M 1yAMe.M 4mn0 9Up0 Dz0 1K10 Dz0 s3F0 1KH0 DB0 9In0 k8p0 19X0 1o30 11y0|22e5\",\"America/Manaus|LMT AMT AMST|40.4 40 30|01212121212121212121212121212121|-2glvX.U HdKX.U 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 dPB0 On0|19e5\",\"America/Martinique|FFMT AST ADT|44.k 40 30|0121|-2mPTT.E 2LPbT.E 19X0|39e4\",\"America/Matamoros|LMT CST CDT|6E 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|45e4\",\"America/Mazatlan|LMT MST CST PST MDT|75.E 70 60 80 60|0121212131414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 otX0 gmN0 P2N0 13Vd0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|44e4\",\"America/Menominee|CST CDT CWT CPT EST|60 50 50 50 50|01010230101041010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 1o10 11z0 LCN0 1fz0 6410 9Jb0 1cM0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|85e2\",\"America/Merida|LMT CST EST CDT|5W.s 60 50 50|0121313131313131313131313131313131313131313131313131313131313131313131313131313131313131|-1UQG0 2q2o0 2hz0 wu30 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|11e5\",\"America/Metlakatla|PST PWT PPT PDT AKST AKDT|80 70 70 70 90 80|0120303030303030303030303030303030454545454545454545454545454545454545454545454|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1hU10 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Mexico_City|LMT MST CST CDT CWT|6A.A 70 60 50 50|012121232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 gEn0 TX0 3xd0 Jb0 6zB0 SL0 e5d0 17b0 1Pff0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|20e6\",\"America/Miquelon|LMT AST PMST PMDT|3I.E 40 30 20|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2mKkf.k 2LTAf.k gQ10 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|61e2\",\"America/Moncton|EST AST ADT AWT APT|50 40 30 30 30|012121212121212121212134121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2IsH0 CwN0 1in0 zAo0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1Nd0 An0 1K10 Lz0 1zB0 NX0 1u10 Wn0 S20 8x50 iu0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14n1 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 ReX 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|64e3\",\"America/Monterrey|LMT CST CDT|6F.g 60 50|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1UQG0 2FjC0 1nX0 i6p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0|41e5\",\"America/Montevideo|MMT UYT UYHST UYST UYT UYHST|3I.I 3u 30 20 30 2u|012121212121212121212121213434343434345454543453434343434343434343434343434343434343434|-20UIf.g 8jzJ.g 1cLu 1dcu 1cLu 1dcu 1cLu ircu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu WLu 1qMu WLu 1qMu 11zu 1o0u 11zu NAu 11bu 2iMu zWu Dq10 19X0 pd0 jz0 cm10 19X0 1fB0 1on0 11d0 1oL0 1nB0 1fzu 1aou 1fzu 1aou 1fzu 3nAu Jb0 3MN0 1SLu 4jzu 2PB0 Lb0 3Dd0 1pb0 ixd0 An0 1MN0 An0 1wp0 On0 1wp0 Rb0 1zd0 On0 1wp0 Rb0 s8p0 1fB0 1ip0 11z0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 14n0 1ld0 14n0 1ld0 14n0 1o10 11z0 1o10 11z0 1o10 11z0|17e5\",\"America/Toronto|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101012301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 11Wu 1nzu 1fD0 WJ0 1wr0 Nb0 1Ap0 On0 1zd0 On0 1wp0 TX0 1tB0 TX0 1tB0 TX0 1tB0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 4kM0 8x40 iv0 1o10 11z0 1nX0 11z0 1o10 11z0 1o10 1qL0 11D0 1nX0 11B0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e5\",\"America/Nassau|LMT EST EDT|59.u 50 40|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2kNuO.u 26XdO.u 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|24e4\",\"America/New_York|EST EDT EWT EPT|50 40 40 40|01010101010101010101010101010101010101010101010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 11B0 1qL0 1a10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 RB0 8x40 iv0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|21e6\",\"America/Nipigon|EST EDT EWT EPT|50 40 40 40|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TR0 1in0 Rnb0 3je0 8x40 iv0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|16e2\",\"America/Nome|NST NWT NPT BST BDT YST AKST AKDT|b0 a0 a0 b0 a0 90 90 80|012034343434343434343434343434343456767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676|-17SX0 8wW0 iB0 Qlb0 52O0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cl0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|38e2\",\"America/Noronha|LMT FNT FNST|29.E 20 10|0121212121212121212121212121212121212121|-2glxO.k HdKO.k 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|30e2\",\"America/North_Dakota/Beulah|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Oo0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/Center|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101014545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/North_Dakota/New_Salem|MST MDT MWT MPT CST CDT|70 60 60 60 60 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101454545454545454545454545454545454545454545454545454545454545454545454|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14o0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"America/Ojinaga|LMT MST CST CDT MDT|6V.E 70 60 50 60|0121212323241414141414141414141414141414141414141414141414141414141414141414141414141414141|-1UQF0 deL0 8lc0 17c0 10M0 1dd0 2zQN0 1lb0 14p0 1lb0 14q0 1lb0 14p0 1nX0 11B0 1nX0 1fB0 WL0 1fB0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 U10 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Pangnirtung|-00 AST AWT APT ADDT ADT EDT EST CST CDT|0 40 30 30 20 30 40 50 60 50|012314151515151515151515151515151515167676767689767676767676767676767676767676767676767676767676767676767676767676767676767|-1XiM0 PnG0 8x50 iu0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1o00 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11C0 1nX0 11A0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|14e2\",\"America/Paramaribo|LMT PMT PMT NEGT SRT SRT|3E.E 3E.Q 3E.A 3u 3u 30|012345|-2nDUj.k Wqo0.c qanX.I 1dmLN.o lzc0|24e4\",\"America/Phoenix|MST MDT MWT|70 60 60|01010202010|-261r0 1nX0 11B0 1nX0 SgN0 4Al1 Ap0 1db0 SWqX 1cL0|42e5\",\"America/Port-au-Prince|PPMT EST EDT|4N 50 40|01212121212121212121212121212121212121212121|-28RHb 2FnMb 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14q0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 i6n0 1nX0 11B0 1nX0 d430 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Rio_Branco|LMT ACT ACST AMT|4v.c 50 40 40|01212121212121212121212121212131|-2glvs.M HdLs.M 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0 d5X0|31e4\",\"America/Porto_Velho|LMT AMT AMST|4f.A 40 30|012121212121212121212121212121|-2glvI.o HdKI.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0|37e4\",\"America/Puerto_Rico|AST AWT APT|40 30 30|0120|-17lU0 7XT0 iu0|24e5\",\"America/Rainy_River|CST CDT CWT CPT|60 50 50 50|010123010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TQ0 1in0 Rnb0 3je0 8x30 iw0 19yN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|842\",\"America/Rankin_Inlet|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313131313131313131313131313131313131313131313131313131313131313131|-vDc0 keu0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|26e2\",\"America/Recife|LMT BRT BRST|2j.A 30 20|0121212121212121212121212121212121212121|-2glxE.o HdLE.o 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 nsp0 WL0 1tB0 2L0 2pB0 On0|33e5\",\"America/Regina|LMT MST MDT MWT MPT CST|6W.A 70 60 60 60 60|012121212121212121212121341212121212121212121212121215|-2AD51.o uHe1.o 1in0 s2L0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 66N0 1cL0 1cN0 19X0 1fB0 1cL0 1fB0 1cL0 1cN0 1cL0 M30 8x20 ix0 1ip0 1cL0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 3NB0 1cL0 1cN0|19e4\",\"America/Resolute|-00 CST CDDT CDT EST|0 60 40 50 50|012131313131313131313131313131313131313131313431313131313431313131313131313131313131313131313131313131313131313131313131|-SnA0 GWS0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|229\",\"America/Santarem|LMT AMT AMST BRT|3C.M 40 30 30|0121212121212121212121212121213|-2glwl.c HdLl.c 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 qe10 xb0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 NBd0|21e4\",\"America/Santiago|SMT CLT CLT CLST CLST|4G.K 50 40 40 30|010203131313131212421242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424|-2q2jh.e fJAh.e 5knG.K 1Vzh.e jRAG.K 1pbh.e 11d0 1oL0 11d0 1oL0 11d0 1oL0 11d0 1pb0 11d0 nHX0 op0 9Bz0 jb0 1oN0 ko0 Qeo0 WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|62e5\",\"America/Santo_Domingo|SDMT EST EDT EHDT AST|4E 50 40 4u 40|01213131313131414|-1ttjk 1lJMk Mn0 6sp0 Lbu 1Cou yLu 1RAu wLu 1QMu xzu 1Q0u xXu 1PAu 13jB0 e00|29e5\",\"America/Sao_Paulo|LMT BRT BRST|36.s 30 20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-2glwR.w HdKR.w 1cc0 1e10 1bX0 Ezd0 So0 1vA0 Mn0 1BB0 ML0 1BB0 zX0 pTd0 PX0 2ep0 nz0 1C10 zX0 1C10 LX0 1C10 Mn0 H210 Rb0 1tB0 IL0 1Fd0 FX0 1EN0 FX0 1HB0 Lz0 1EN0 Lz0 1C10 IL0 1HB0 Db0 1HB0 On0 1zd0 On0 1zd0 Lz0 1zd0 Rb0 1wN0 Wn0 1tB0 Rb0 1tB0 WL0 1tB0 Rb0 1zd0 On0 1HB0 FX0 1C10 Lz0 1Ip0 HX0 1zd0 On0 1HB0 IL0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1zd0 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0 On0 1zd0 On0 1zd0 On0 1C10 Lz0 1C10 Lz0 1C10 Lz0 1C10 On0 1zd0 Rb0 1wp0 On0 1C10 Lz0 1C10 On0 1zd0|20e6\",\"America/Scoresbysund|LMT CGT CGST EGST EGT|1r.Q 20 10 0 10|0121343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2a5Ww.8 2z5ew.8 1a00 1cK0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|452\",\"America/Sitka|PST PWT PPT PDT YST AKST AKDT|80 70 70 70 90 90 80|01203030303030303030303030303030345656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-17T20 8x10 iy0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 co0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|90e2\",\"America/St_Johns|NST NDT NST NDT NWT NPT NDDT|3u.Q 2u.Q 3u 2u 2u 2u 1u|01010101010101010101010101010101010102323232323232324523232323232323232323232323232323232323232323232323232323232323232323232323232323232326232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-28oit.8 14L0 1nB0 1in0 1gm0 Dz0 1JB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1fB0 1cL0 1fB0 19X0 1fB0 19X0 10O0 eKX.8 19X0 1iq0 WL0 1qN0 WL0 1qN0 WL0 1tB0 TX0 1tB0 WL0 1qN0 WL0 1qN0 7UHu itu 1tB0 WL0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1tB0 WL0 1ld0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14n1 1lb0 14p0 1nW0 11C0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zcX Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Swift_Current|LMT MST MDT MWT MPT CST|7b.k 70 60 60 60 60|012134121212121212121215|-2AD4M.E uHdM.E 1in0 UGp0 8x20 ix0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 isN0 1cL0 3Cp0 1cL0 1cN0 11z0 1qN0 WL0 pMp0|16e3\",\"America/Tegucigalpa|LMT CST CDT|5M.Q 60 50|01212121|-1WGGb.8 2ETcb.8 WL0 1qN0 WL0 GRd0 AL0|11e5\",\"America/Thule|LMT AST ADT|4z.8 40 30|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a5To.Q 31NBo.Q 1cL0 1cN0 1cL0 1fB0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|656\",\"America/Thunder_Bay|CST EST EWT EPT EDT|60 50 40 40 40|0123141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141|-2q5S0 1iaN0 8x40 iv0 XNB0 1cL0 1cN0 1fz0 1cN0 1cL0 3Cp0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|11e4\",\"America/Vancouver|PST PDT PWT PPT|80 70 70 70|0102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-25TO0 1in0 UGp0 8x10 iy0 1o10 17b0 1ip0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e5\",\"America/Whitehorse|YST YDT YWT YPT YDDT PST PDT|90 80 80 80 70 80 70|0101023040565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565|-25TN0 1in0 1o10 13V0 Ser0 8x00 iz0 LCL0 1fA0 3NA0 vrd0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|23e3\",\"America/Winnipeg|CST CDT CWT CPT|60 50 50 50|010101023010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aIi0 WL0 3ND0 1in0 Jap0 Rb0 aCN0 8x30 iw0 1tB0 11z0 1ip0 11z0 1o10 11z0 1o10 11z0 1rd0 10L0 1op0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 1cL0 1cN0 11z0 6i10 WL0 6i10 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1o00 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1o00 11A0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|66e4\",\"America/Yakutat|YST YWT YPT YDT AKST AKDT|90 80 80 80 90 80|01203030303030303030303030303030304545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-17T10 8x00 iz0 Vo10 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 cn0 10q0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|642\",\"America/Yellowknife|-00 MST MWT MPT MDDT MDT|0 70 60 60 50 60|012314151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151515151|-1pdA0 hix0 8x20 ix0 LCL0 1fA0 zgO0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|19e3\",\"Antarctica/Casey|-00 +08 +11|0 -80 -b0|0121212|-2q00 1DjS0 T90 40P0 KL0 blz0|10\",\"Antarctica/Davis|-00 +07 +05|0 -70 -50|01012121|-vyo0 iXt0 alj0 1D7v0 VB0 3Wn0 KN0|70\",\"Antarctica/DumontDUrville|-00 +10|0 -a0|0101|-U0o0 cfq0 bFm0|80\",\"Antarctica/Macquarie|AEST AEDT -00 MIST|-a0 -b0 0 -b0|0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101013|-29E80 19X0 4SL0 1ayy0 Lvs0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0|1\",\"Antarctica/Mawson|-00 +06 +05|0 -60 -50|012|-CEo0 2fyk0|60\",\"Pacific/Auckland|NZMT NZST NZST NZDT|-bu -cu -c0 -d0|01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323|-1GCVu Lz0 1tB0 11zu 1o0u 11zu 1o0u 11zu 1o0u 14nu 1lcu 14nu 1lcu 1lbu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1nXu 11Au 1qLu WMu 1qLu 11Au 1n1bu IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|14e5\",\"Antarctica/Palmer|-00 ARST ART ART ARST CLT CLST|0 30 40 30 20 40 30|0121212121234356565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656|-cao0 nD0 1vd0 SL0 1vd0 17z0 1cN0 1fz0 1cN0 1cL0 1cN0 asn0 Db0 jsN0 14N0 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|40\",\"Antarctica/Rothera|-00 -03|0 30|01|gOo0|130\",\"Antarctica/Syowa|-00 +03|0 -30|01|-vs00|20\",\"Antarctica/Troll|-00 +00 +02|0 0 -20|01212121212121212121212121212121212121212121212121212121212121212121|1puo0 hd0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|40\",\"Antarctica/Vostok|-00 +06|0 -60|01|-tjA0|25\",\"Europe/Oslo|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2awM0 Qm0 W6o0 5pf0 WM0 1fA0 1cM0 1cM0 1cM0 1cM0 wJc0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1qM0 WM0 zpc0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e4\",\"Asia/Riyadh|LMT AST|-36.Q -30|01|-TvD6.Q|57e5\",\"Asia/Almaty|LMT +05 +06 +07|-57.M -50 -60 -70|012323232323232323232321232323232323232323232323232|-1Pc57.M eUo7.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|15e5\",\"Asia/Amman|LMT EET EEST|-2n.I -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1yW2n.I 1HiMn.I KL0 1oN0 11b0 1oN0 11b0 1pd0 1dz0 1cp0 11b0 1op0 11b0 fO10 1db0 1e10 1cL0 1cN0 1cL0 1cN0 1fz0 1pd0 10n0 1ld0 14n0 1hB0 15b0 1ip0 19X0 1cN0 1cL0 1cN0 17b0 1ld0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1So0 y00 1fc0 1dc0 1co0 1dc0 1cM0 1cM0 1cM0 1o00 11A0 1lc0 17c0 1cM0 1cM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 4bX0 Dd0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e5\",\"Asia/Anadyr|LMT +12 +13 +14 +11|-bN.U -c0 -d0 -e0 -b0|01232121212121212121214121212121212121212121212121212121212141|-1PcbN.U eUnN.U 23CL0 1db0 2q10 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|13e3\",\"Asia/Aqtau|LMT +04 +05 +06|-3l.4 -40 -50 -60|012323232323232323232123232312121212121212121212|-1Pc3l.4 eUnl.4 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|15e4\",\"Asia/Aqtobe|LMT +04 +05 +06|-3M.E -40 -50 -60|0123232323232323232321232323232323232323232323232|-1Pc3M.E eUnM.E 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0|27e4\",\"Asia/Ashgabat|LMT +04 +05 +06|-3R.w -40 -50 -60|0123232323232323232323212|-1Pc3R.w eUnR.w 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0|41e4\",\"Asia/Atyrau|LMT +04 +05 +06|-3r.I -40 -50 -60|01232323232323232323212323232323232321212121212|-1Pc3r.I eUnr.I 24PX0 2pX0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 2sp0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0\",\"Asia/Baghdad|BMT AST ADT|-2V.A -30 -40|012121212121212121212121212121212121212121212121212121|-26BeV.A 2ACnV.A 11b0 1cp0 1dz0 1dd0 1db0 1cN0 1cp0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1de0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0 1dc0 1dc0 1cM0 1dc0 1cM0 1dc0 1cM0 1dc0|66e5\",\"Asia/Qatar|LMT GST AST|-3q.8 -40 -30|012|-21Jfq.8 27BXq.8|96e4\",\"Asia/Baku|LMT +03 +04 +05|-3j.o -30 -40 -50|01232323232323232323232123232323232323232323232323232323232323232|-1Pc3j.o 1jUoj.o WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 9Je0 1o00 11z0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00|27e5\",\"Asia/Bangkok|BMT ICT|-6G.4 -70|01|-218SG.4|15e6\",\"Asia/Barnaul|LMT +06 +07 +08|-5z -60 -70 -80|0123232323232323232323212323232321212121212121212121212121212121212|-21S5z pCnz 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 p90 LE0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Asia/Beirut|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-21aq0 1on0 1410 1db0 19B0 1in0 1ip0 WL0 1lQp0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 q6N0 En0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1op0 11b0 dA10 17b0 1iN0 17b0 1iN0 17b0 1iN0 17b0 1vB0 SL0 1mp0 13z0 1iN0 17b0 1iN0 17b0 1jd0 12n0 1a10 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0|22e5\",\"Asia/Bishkek|LMT +05 +06 +07|-4W.o -50 -60 -70|012323232323232323232321212121212121212121212121212|-1Pc4W.o eUnW.o 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2e00 1tX0 17b0 1ip0 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1cPu 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0|87e4\",\"Asia/Brunei|LMT BNT BNT|-7D.E -7u -80|012|-1KITD.E gDc9.E|42e4\",\"Asia/Kolkata|HMT BURT IST IST|-5R.k -6u -5u -6u|01232|-18LFR.k 1unn.k HB0 7zX0|15e6\",\"Asia/Chita|LMT +08 +09 +10|-7x.Q -80 -90 -a0|012323232323232323232321232323232323232323232323232323232323232312|-21Q7x.Q pAnx.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3re0|33e4\",\"Asia/Choibalsan|LMT ULAT ULAT CHOST CHOT CHOT CHOST|-7C -70 -80 -a0 -90 -80 -90|0123434343434343434343434343434343434343434343456565656565656565656565656565656565656565656565|-2APHC 2UkoC cKn0 1da0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 3Db0 h1f0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|38e3\",\"Asia/Shanghai|CST CDT|-80 -90|01010101010101010|-1c1I0 LX0 16p0 1jz0 1Myp0 Rb0 1o10 11z0 1o10 11z0 1qN0 11z0 1o10 11z0 1o10 11z0|23e6\",\"Asia/Colombo|MMT +0530 +06 +0630|-5j.w -5u -60 -6u|01231321|-2zOtj.w 1rFbN.w 1zzu 7Apu 23dz0 11zu n3cu|22e5\",\"Asia/Dhaka|HMT BURT IST DACT BDT BDST|-5R.k -6u -5u -60 -60 -70|01213454|-18LFR.k 1unn.k HB0 m6n0 LqMu 1x6n0 1i00|16e6\",\"Asia/Damascus|LMT EET EEST|-2p.c -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-21Jep.c Hep.c 17b0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1xRB0 11X0 1oN0 10L0 1pB0 11b0 1oN0 10L0 1mp0 13X0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 1pd0 11b0 1oN0 Nb0 1AN0 Nb0 bcp0 19X0 1gp0 19X0 3ld0 1xX0 Vd0 1Bz0 Sp0 1vX0 10p0 1dz0 1cN0 1cL0 1db0 1db0 1g10 1an0 1ap0 1db0 1fd0 1db0 1cN0 1db0 1dd0 1db0 1cp0 1dz0 1c10 1dX0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1db0 1cN0 1db0 1cN0 19z0 1fB0 1qL0 11B0 1on0 Wp0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|26e5\",\"Asia/Dili|LMT TLT JST TLT WITA|-8m.k -80 -90 -90 -80|012343|-2le8m.k 1dnXm.k 8HA0 1ew00 Xld0|19e4\",\"Asia/Dubai|LMT GST|-3F.c -40|01|-21JfF.c|39e5\",\"Asia/Dushanbe|LMT +05 +06 +07|-4z.c -50 -60 -70|012323232323232323232321|-1Pc4z.c eUnz.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2hB0|76e4\",\"Asia/Famagusta|LMT EET EEST +03|-2f.M -20 -30 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212123|-1Vc2f.M 2a3cf.M 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 15U0\",\"Asia/Gaza|EET EEST IST IDT|-20 -30 -20 -30|010101010101010101010101010101012323232323232323232323232320101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 11z0 1o10 14o0 1lA1 SKX 1xd1 MKX 1AN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|18e5\",\"Asia/Hebron|EET EEST IST IDT|-20 -30 -20 -30|01010101010101010101010101010101232323232323232323232323232010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-1c2q0 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 pBd0 Vz0 1oN0 11b0 1oO0 10N0 1pz0 10N0 1pb0 10N0 1pb0 10N0 1pb0 10N0 1pz0 10N0 1pb0 10N0 1pb0 11d0 1oL0 dW0 hfB0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 M10 C00 17c0 1io0 17c0 1io0 17c0 1o00 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 17c0 1io0 18N0 1bz0 19z0 1gp0 1610 1iL0 12L0 1mN0 14o0 1lc0 Tb0 1xd1 MKX bB0 cn0 1cN0 1a00 1fA0 1cL0 1cN0 1nX0 1210 1nz0 1220 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0|25e4\",\"Asia/Ho_Chi_Minh|LMT PLMT ICT IDT JST|-76.E -76.u -70 -80 -90|0123423232|-2yC76.E bK00.a 1h7b6.u 5lz0 18o0 3Oq0 k5b0 aW00 BAM0|90e5\",\"Asia/Hong_Kong|LMT HKT HKST JST|-7A.G -80 -90 -90|0121312121212121212121212121212121212121212121212121212121212121212121|-2CFHA.G 1sEP6.G 1cL0 ylu 93X0 1qQu 1tX0 Rd0 1In0 NB0 1cL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1kL0 14N0 1nX0 U10 1tz0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 Rd0 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 17d0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 s10 1Vz0 1cN0 1cL0 1cN0 1cL0 6fd0 14n0|73e5\",\"Asia/Hovd|LMT HOVT HOVT HOVST|-66.A -60 -70 -80|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APG6.A 2Uko6.A cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|81e3\",\"Asia/Irkutsk|IMT +07 +08 +09|-6V.5 -70 -80 -90|01232323232323232323232123232323232323232323232323232323232323232|-21zGV.5 pjXV.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Europe/Istanbul|IMT EET EEST +04 +03|-1U.U -20 -30 -40 -30|012121212121212121212121212121212121212121212121212121234343434342121212121212121212121212121212121212121212121212121212121212124|-2ogNU.U dzzU.U 11b0 8tB0 1on0 1410 1db0 19B0 1in0 3Rd0 Un0 1oN0 11b0 zSp0 CL0 mN0 1Vz0 1gN0 1pz0 5Rd0 1fz0 1yp0 ML0 1kp0 17b0 1ip0 17b0 1fB0 19X0 1jB0 18L0 1ip0 17z0 qdd0 xX0 3S10 Tz0 dA10 11z0 1o10 11z0 1qN0 11z0 1ze0 11B0 WM0 1qO0 WI0 1nX0 1rB0 10L0 11B0 1in0 17d0 1in0 2pX0 19E0 1fU0 16Q0 1iI0 16Q0 1iI0 1Vd0 pb0 3Kp0 14o0 1de0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1a00 1fA0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WO0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 Xc0 1qo0 WM0 1qM0 11A0 1o00 1200 1nA0 11A0 1tA0 U00 15w0|13e6\",\"Asia/Jakarta|BMT JAVT WIB JST WIB WIB|-77.c -7k -7u -90 -80 -70|01232425|-1Q0Tk luM0 mPzO 8vWu 6kpu 4PXu xhcu|31e6\",\"Asia/Jayapura|LMT WIT ACST|-9m.M -90 -9u|0121|-1uu9m.M sMMm.M L4nu|26e4\",\"Asia/Jerusalem|JMT IST IDT IDDT|-2k.E -20 -30 -40|01212121212132121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-26Bek.E SyMk.E 5Rb0 10r0 1px0 10N0 1pz0 16p0 1jB0 16p0 1jx0 3LB0 Em0 or0 1cn0 1dB0 16n0 10O0 1ja0 1tC0 14o0 1cM0 1a00 11A0 1Na0 An0 1MP0 AJ0 1Kp0 LC0 1oo0 Wl0 EQN0 Db0 1fB0 Rb0 npB0 11z0 1C10 IL0 1s10 10n0 1o10 WL0 1zd0 On0 1ld0 11z0 1o10 14n0 1o10 14n0 1nd0 12n0 1nd0 Xz0 1q10 12n0 1hB0 1dX0 1ep0 1aL0 1eN0 17X0 1nf0 11z0 1tB0 19W0 1e10 17b0 1ep0 1gL0 18N0 1fz0 1eN0 17b0 1gq0 1gn0 19d0 1dz0 1c10 17X0 1hB0 1gn0 19d0 1dz0 1c10 17X0 1kp0 1dz0 1c10 1aL0 1eN0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0|81e4\",\"Asia/Kabul|AFT AFT|-40 -4u|01|-10Qs0|46e5\",\"Asia/Kamchatka|LMT +11 +12 +13|-ay.A -b0 -c0 -d0|012323232323232323232321232323232323232323232323232323232323212|-1SLKy.A ivXy.A 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|18e4\",\"Asia/Karachi|LMT IST IST KART PKT PKST|-4s.c -5u -6u -50 -50 -60|012134545454|-2xoss.c 1qOKW.c 7zX0 eup0 LqMu 1fy00 1cL0 dK10 11b0 1610 1jX0|24e6\",\"Asia/Urumqi|LMT XJT|-5O.k -60|01|-1GgtO.k|32e5\",\"Asia/Kathmandu|LMT IST NPT|-5F.g -5u -5J|012|-21JhF.g 2EGMb.g|12e5\",\"Asia/Khandyga|LMT +08 +09 +10 +11|-92.d -80 -90 -a0 -b0|0123232323232323232323212323232323232323232323232343434343434343432|-21Q92.d pAp2.d 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 qK0 yN0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|66e2\",\"Asia/Krasnoyarsk|LMT +06 +07 +08|-6b.q -60 -70 -80|01232323232323232323232123232323232323232323232323232323232323232|-21Hib.q prAb.q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Asia/Kuala_Lumpur|SMT MALT MALST MALT MALT JST MYT|-6T.p -70 -7k -7k -7u -90 -80|01234546|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu 1so1u|71e5\",\"Asia/Kuching|LMT BORT BORT BORTST JST MYT|-7l.k -7u -80 -8k -90 -80|01232323232323232425|-1KITl.k gDbP.k 6ynu AnE 1O0k AnE 1NAk AnE 1NAk AnE 1NAk AnE 1O0k AnE 1NAk AnE pAk 8Fz0 1so10|13e4\",\"Asia/Macau|LMT MOT MOST CST|-7y.k -80 -90 -80|0121212121212121212121212121212121212121213|-2le7y.k 1XO34.k 1wn0 Rd0 1wn0 R9u 1wqu U10 1tz0 TVu 1tz0 17gu 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cOu 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cJu 1cL0 1cN0 1fz0 1cN0 1cL0 KEp0|57e4\",\"Asia/Magadan|LMT +10 +11 +12|-a3.c -a0 -b0 -c0|012323232323232323232321232323232323232323232323232323232323232312|-1Pca3.c eUo3.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Cq0|95e3\",\"Asia/Makassar|LMT MMT WITA JST|-7V.A -7V.A -80 -90|01232|-21JjV.A vfc0 myLV.A 8ML0|15e5\",\"Asia/Manila|PHT PHST JST|-80 -90 -90|010201010|-1kJI0 AL0 cK10 65X0 mXB0 vX0 VK10 1db0|24e6\",\"Asia/Nicosia|LMT EET EEST|-2d.s -20 -30|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1Vc2d.s 2a3cd.s 1cL0 1qp0 Xz0 19B0 19X0 1fB0 1db0 1cp0 1cL0 1fB0 19X0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1o30 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|32e4\",\"Asia/Novokuznetsk|LMT +06 +07 +08|-5M.M -60 -70 -80|012323232323232323232321232323232323232323232323232323232323212|-1PctM.M eULM.M 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|55e4\",\"Asia/Novosibirsk|LMT +06 +07 +08|-5v.E -60 -70 -80|0123232323232323232323212323212121212121212121212121212121212121212|-21Qnv.E pAFv.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 ml0 Os0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 4eN0|15e5\",\"Asia/Omsk|LMT +05 +06 +07|-4R.u -50 -60 -70|01232323232323232323232123232323232323232323232323232323232323232|-224sR.u pMLR.u 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|12e5\",\"Asia/Oral|LMT +04 +05 +06|-3p.o -40 -50 -60|01232323232323232121212121212121212121212121212|-1Pc3p.o eUnp.o 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 1cM0 IM0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|27e4\",\"Asia/Pontianak|LMT PMT WIB JST WIB WITA WIB|-7h.k -7h.k -7u -90 -80 -80 -70|012324256|-2ua7h.k XE00 munL.k 8Rau 6kpu 4PXu xhcu Wqnu|23e4\",\"Asia/Pyongyang|LMT KST JCST JST KST|-8n -8u -90 -90 -90|012341|-2um8n 97XR 12FXu jdA0 2Onc0|29e5\",\"Asia/Qyzylorda|LMT +04 +05 +06|-4l.Q -40 -50 -60|0123232323232323232323232323232323232323232323|-1Pc4l.Q eUol.Q 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 3ao0 1EM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0|73e4\",\"Asia/Rangoon|RMT BURT JST MMT|-6o.E -6u -90 -6u|0123|-21Jio.E SmnS.E 7j9u|48e5\",\"Asia/Sakhalin|LMT +09 +11 +12 +10|-9u.M -90 -b0 -c0 -a0|01232323232323232323232423232323232424242424242424242424242424242|-2AGVu.M 1BoMu.M 1qFa0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 2pB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0|58e4\",\"Asia/Samarkand|LMT +04 +05 +06|-4r.R -40 -50 -60|01232323232323232323232|-1Pc4r.R eUor.R 23CL0 3Db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0|36e4\",\"Asia/Seoul|LMT KST JCST JST KST KDT KDT|-8r.Q -8u -90 -90 -90 -9u -a0|01234151515151515146464|-2um8r.Q 97XV.Q 12FXu jjA0 kKo0 2I0u OL0 1FB0 Rb0 1qN0 TX0 1tB0 TX0 1tB0 TX0 1tB0 TX0 2ap0 12FBu 11A0 1o00 11A0|23e6\",\"Asia/Singapore|SMT MALT MALST MALT MALT JST SGT SGT|-6T.p -70 -7k -7k -7u -90 -7u -80|012345467|-2Bg6T.p 17anT.p 7hXE dM00 17bO 8Fyu Mspu DTA0|56e5\",\"Asia/Srednekolymsk|LMT +10 +11 +12|-ae.Q -a0 -b0 -c0|01232323232323232323232123232323232323232323232323232323232323232|-1Pcae.Q eUoe.Q 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|35e2\",\"Asia/Taipei|JWST JST CST CDT|-80 -90 -80 -90|01232323232323232323232323232323232323232|-1iw80 joM0 1yo0 Tz0 1ip0 1jX0 1cN0 11b0 1oN0 11b0 1oN0 11b0 1oN0 11b0 10N0 1BX0 10p0 1pz0 10p0 1pz0 10p0 1db0 1dd0 1db0 1cN0 1db0 1cN0 1db0 1cN0 1db0 1BB0 ML0 1Bd0 ML0 uq10 1db0 1cN0 1db0 97B0 AL0|74e5\",\"Asia/Tashkent|LMT +05 +06 +07|-4B.b -50 -60 -70|012323232323232323232321|-1Pc4B.b eUnB.b 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0|23e5\",\"Asia/Tbilisi|TBMT +03 +04 +05|-2X.b -30 -40 -50|0123232323232323232323212121232323232323232323212|-1Pc2X.b 1jUnX.b WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cK0 1cL0 1cN0 1cL0 1cN0 2pz0 1cL0 1fB0 3Nz0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 An0 Os0 WM0|11e5\",\"Asia/Tehran|LMT TMT IRST IRST IRDT IRDT|-3p.I -3p.I -3u -40 -50 -4u|01234325252525252525252525252525252525252525252525252525252525252525252525252525252525252525252525252|-2btDp.I 1d3c0 1huLT.I TXu 1pz0 sN0 vAu 1cL0 1dB0 1en0 pNB0 UL0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 64p0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0 1cp0 1dz0 1cp0 1dz0|14e6\",\"Asia/Thimphu|LMT IST BTT|-5W.A -5u -60|012|-Su5W.A 1BGMs.A|79e3\",\"Asia/Tokyo|JCST JST JDT|-90 -90 -a0|0121212121|-1iw90 pKq0 QL0 1lB0 13X0 1zB0 NX0 1zB0 NX0|38e6\",\"Asia/Tomsk|LMT +06 +07 +08|-5D.P -60 -70 -80|0123232323232323232323212323232323232323232323212121212121212121212|-21NhD.P pxzD.P 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 co0 1bB0 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3Qp0|10e5\",\"Asia/Ulaanbaatar|LMT ULAT ULAT ULAST|-77.w -70 -80 -90|012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-2APH7.w 2Uko7.w cKn0 1db0 1dd0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 6hD0 11z0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 kEp0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1fx0 1cP0 1cJ0 1cP0 1cJ0 1cP0 1cJ0|12e5\",\"Asia/Ust-Nera|LMT +08 +09 +12 +11 +10|-9w.S -80 -90 -c0 -b0 -a0|012343434343434343434345434343434343434343434343434343434343434345|-21Q9w.S pApw.S 23CL0 1d90 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 17V0 7zD0|65e2\",\"Asia/Vladivostok|LMT +09 +10 +11|-8L.v -90 -a0 -b0|01232323232323232323232123232323232323232323232323232323232323232|-1SJIL.v itXL.v 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|60e4\",\"Asia/Yakutsk|LMT +08 +09 +10|-8C.W -80 -90 -a0|01232323232323232323232123232323232323232323232323232323232323232|-21Q8C.W pAoC.W 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|28e4\",\"Asia/Yekaterinburg|LMT PMT +04 +05 +06|-42.x -3J.5 -40 -50 -60|012343434343434343434343234343434343434343434343434343434343434343|-2ag42.x 7mQh.s qBvJ.5 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|14e5\",\"Asia/Yerevan|LMT +03 +04 +05|-2W -30 -40 -50|0123232323232323232323212121212323232323232323232323232323232|-1Pc2W 1jUnW WCL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 2pB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 4RX0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|13e5\",\"Atlantic/Azores|HMT AZOT AZOST AZOMT AZOT AZOST WET|1S.w 20 10 0 10 0 0|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545456545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldW5.s aPX5.s Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cL0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|25e4\",\"Atlantic/Bermuda|LMT AST ADT|4j.i 40 30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1BnRE.G 1LTbE.G 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0|65e3\",\"Atlantic/Canary|LMT CANT WET WEST|11.A 10 0 -10|01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-1UtaW.o XPAW.o 1lAK0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Atlantic/Cape_Verde|LMT CVT CVST CVT|1y.4 20 10 10|01213|-2xomp.U 1qOMp.U 7zX0 1djf0|50e4\",\"Atlantic/Faroe|LMT WET WEST|r.4 0 -10|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2uSnw.U 2Wgow.U 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|49e3\",\"Atlantic/Madeira|FMT MADT MADST MADMT WET WEST|17.A 10 0 -10 0 -10|01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2ldWQ.o aPWQ.o Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 qIl0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e4\",\"Atlantic/Reykjavik|LMT IST ISST GMT|1s 10 0 0|012121212121212121212121212121212121212121212121212121212121212121213|-2uWmw mfaw 1Bd0 ML0 1LB0 Cn0 1LB0 3fX0 C10 HrX0 1cO0 LB0 1EL0 LA0 1C00 Oo0 1wo0 Rc0 1wo0 Rc0 1wo0 Rc0 1zc0 Oo0 1zc0 14o0 1lc0 14o0 1lc0 14o0 1o00 11A0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1lc0 14o0 1o00 14o0|12e4\",\"Atlantic/South_Georgia|GST|20|0||30\",\"Atlantic/Stanley|SMT FKT FKST FKT FKST|3P.o 40 30 30 20|0121212121212134343212121212121212121212121212121212121212121212121212|-2kJw8.A 12bA8.A 19X0 1fB0 19X0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 Cn0 1Cc10 WL0 1qL0 U10 1tz0 U10 1qM0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 U10 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1tz0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qL0 WN0 1qN0 U10 1wn0 Rd0 1wn0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1tz0 U10 1wn0 U10 1tz0 U10 1tz0 U10|21e2\",\"Australia/Sydney|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|40e5\",\"Australia/Adelaide|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 WM0 1qM0 Rc0 1zc0 U00 1tA0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|11e5\",\"Australia/Brisbane|AEST AEDT|-a0 -b0|01010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0|20e5\",\"Australia/Broken_Hill|ACST ACDT|-9u -au|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 14o0 1o00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1tA0 WM0 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|18e3\",\"Australia/Currie|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|746\",\"Australia/Darwin|ACST ACDT|-9u -au|010101010|-293lt xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0|12e4\",\"Australia/Eucla|ACWST ACWDT|-8J -9J|0101010101010101010|-293kI xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|368\",\"Australia/Hobart|AEST AEDT|-a0 -b0|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-29E80 19X0 10jd0 yL0 1cN0 1cL0 1fB0 19X0 VfB0 1cM0 1o00 Rc0 1wo0 Rc0 1wo0 U00 1wo0 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 11A0 1qM0 WM0 1qM0 Oo0 1zc0 Oo0 1zc0 Oo0 1wo0 WM0 1tA0 WM0 1tA0 U00 1tA0 U00 1tA0 11A0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 11A0 1o00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|21e4\",\"Australia/Lord_Howe|AEST LHST LHDT LHDT|-a0 -au -bu -b0|0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313|raC0 1zdu Rb0 1zd0 On0 1zd0 On0 1zd0 On0 1zd0 TXu 1qMu WLu 1tAu WLu 1tAu TXu 1tAu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu 11zu 1o0u 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 11Au 1nXu 1qMu 11zu 1o0u 11zu 1o0u 11zu 1qMu WLu 1qMu 11zu 1o0u WLu 1qMu 14nu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1fAu 1cLu 1cMu 1cLu 1cMu|347\",\"Australia/Lindeman|AEST AEDT|-a0 -b0|010101010101010101010|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 H1A0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0|10\",\"Australia/Melbourne|AEST AEDT|-a0 -b0|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101|-293lX xcX 10jd0 yL0 1cN0 1cL0 1fB0 19X0 17c10 LA0 1C00 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 U00 1qM0 WM0 1qM0 11A0 1tA0 U00 1tA0 U00 1tA0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 11A0 1o00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 14o0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0|39e5\",\"Australia/Perth|AWST AWDT|-80 -90|0101010101010101010|-293jX xcX 10jd0 yL0 1cN0 1cL0 1gSp0 Oo0 l5A0 Oo0 iJA0 G00 zU00 IM0 1qM0 11A0 1o00 11A0|18e5\",\"CET|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"CST6CDT|CST CDT CWT CPT|60 50 50 50|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261s0 1nX0 11B0 1nX0 SgN0 8x30 iw0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Easter|EMT EAST EASST EAST EASST|7h.s 70 60 60 50|0121212121212121212121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-1uSgG.w 1s4IG.w WL0 1zd0 On0 1ip0 11z0 1o10 11z0 1qN0 WL0 1ld0 14n0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 WL0 1qN0 1cL0 1cN0 11z0 1o10 11z0 1qN0 WL0 1fB0 19X0 1qN0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1ip0 1fz0 1fB0 11z0 1qN0 WL0 1qN0 WL0 1qN0 WL0 1qN0 11z0 1o10 11z0 1o10 11z0 1qN0 WL0 1qN0 17b0 1ip0 11z0 1o10 19X0 1fB0 1nX0 G10 1EL0 Op0 1zb0 Rd0 1wn0 Rd0 46n0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Dd0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0 1Nb0 Ap0|30e2\",\"EET|EET EEST|-20 -30|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"EST|EST|50|0|\",\"EST5EDT|EST EDT EWT EPT|50 40 40 40|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261t0 1nX0 11B0 1nX0 SgN0 8x40 iv0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Europe/Dublin|DMT IST GMT BST IST|p.l -y.D 0 -10 -10|01232323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242424242|-2ax9y.D Rc0 1fzy.D 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 g5X0 14p0 1wn0 17d0 1io0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Etc/GMT+0|GMT|0|0|\",\"Etc/GMT+1|-01|10|0|\",\"Etc/GMT+10|-10|a0|0|\",\"Etc/GMT+11|-11|b0|0|\",\"Etc/GMT+12|-12|c0|0|\",\"Etc/GMT+2|-02|20|0|\",\"Etc/GMT+3|-03|30|0|\",\"Etc/GMT+4|-04|40|0|\",\"Etc/GMT+5|-05|50|0|\",\"Etc/GMT+6|-06|60|0|\",\"Etc/GMT+7|-07|70|0|\",\"Etc/GMT+8|-08|80|0|\",\"Etc/GMT+9|-09|90|0|\",\"Etc/GMT-1|+01|-10|0|\",\"Etc/GMT-10|+10|-a0|0|\",\"Etc/GMT-11|+11|-b0|0|\",\"Etc/GMT-12|+12|-c0|0|\",\"Etc/GMT-13|+13|-d0|0|\",\"Etc/GMT-14|+14|-e0|0|\",\"Etc/GMT-2|+02|-20|0|\",\"Etc/GMT-3|+03|-30|0|\",\"Etc/GMT-4|+04|-40|0|\",\"Etc/GMT-5|+05|-50|0|\",\"Etc/GMT-6|+06|-60|0|\",\"Etc/GMT-7|+07|-70|0|\",\"Etc/GMT-8|+08|-80|0|\",\"Etc/GMT-9|+09|-90|0|\",\"Etc/UCT|UCT|0|0|\",\"Etc/UTC|UTC|0|0|\",\"Europe/Amsterdam|AMT NST NEST NET CEST CET|-j.w -1j.w -1k -k -20 -10|010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545|-2aFcj.w 11b0 1iP0 11A0 1io0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1co0 1io0 1yo0 Pc0 1a00 1fA0 1Bc0 Mo0 1tc0 Uo0 1tA0 U00 1uo0 W00 1s00 VA0 1so0 Vc0 1sM0 UM0 1wo0 Rc0 1u00 Wo0 1rA0 W00 1s00 VA0 1sM0 UM0 1w00 fV0 BCX.w 1tA0 U00 1u00 Wo0 1sm0 601k WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|16e5\",\"Europe/Andorra|WET CET CEST|0 -10 -20|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-UBA0 1xIN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|79e3\",\"Europe/Astrakhan|LMT +03 +04 +05|-3c.c -30 -40 -50|012323232323232323212121212121212121212121212121212121212121212|-1Pcrc.c eUMc.c 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Athens|AMT EET EEST CEST CET|-1y.Q -20 -30 -20 -10|012123434121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2a61x.Q CNbx.Q mn0 kU10 9b0 3Es0 Xa0 1fb0 1dd0 k3X0 Nz0 SCp0 1vc0 SO0 1cM0 1a00 1ao0 1fc0 1a10 1fG0 1cg0 1dX0 1bX0 1cQ0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|35e5\",\"Europe/London|GMT BST BDST|0 -10 -20|0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1a00 1qM0 WM0 1qM0 11A0 1o00 WM0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1tA0 IM0 90o0 U00 1tA0 U00 1tA0 U00 1tA0 U00 1tA0 WM0 1qM0 WM0 1qM0 WM0 1tA0 U00 1tA0 U00 1tA0 11z0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1o00 14o0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|10e6\",\"Europe/Belgrade|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19RC0 3IP0 WM0 1fA0 1cM0 1cM0 1rc0 Qo0 1vmo0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Berlin|CET CEST CEMT|-10 -20 -30|01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 kL0 Nc0 m10 WM0 1ao0 1cp0 dX0 jz0 Dd0 1io0 17c0 1fA0 1a00 1ehA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e5\",\"Europe/Prague|CET CEST|-10 -20|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 16M0 1lc0 1tA0 17A0 11c0 1io0 17c0 1io0 17c0 1fc0 1ao0 1bNc0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|13e5\",\"Europe/Brussels|WET CET CEST WEST|0 -10 -20 -10|0121212103030303030303030303030303030303030303030303212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ehc0 3zX0 11c0 1iO0 11A0 1o00 11A0 my0 Ic0 1qM0 Rc0 1EM0 UM0 1u00 10o0 1io0 1io0 17c0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a30 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 y00 5Wn0 WM0 1fA0 1cM0 16M0 1iM0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|21e5\",\"Europe/Bucharest|BMT EET EEST|-1I.o -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1xApI.o 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Axc0 On0 1fA0 1a10 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|19e5\",\"Europe/Budapest|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1ip0 17b0 1op0 1tb0 Q2m0 3Ne0 WM0 1fA0 1cM0 1cM0 1oJ0 1dc0 1030 1fA0 1cM0 1cM0 1cM0 1cM0 1fA0 1a00 1iM0 1fA0 8Ha0 Rb0 1wN0 Rb0 1BB0 Lz0 1C20 LB0 SNX0 1a10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zurich|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-19Lc0 11A0 1o00 11A0 1xG10 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e4\",\"Europe/Chisinau|CMT BMT EET EEST CEST CET MSK MSD|-1T -1I.o -20 -30 -20 -10 -30 -40|012323232323232323234545467676767676767676767323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232|-26jdT wGMa.A 20LI.o RA0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 27A0 2en0 39g0 WM0 1fA0 1cM0 V90 1t7z0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 gL0 WO0 1cM0 1cM0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11D0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|67e4\",\"Europe/Copenhagen|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 Tz0 VuO0 60q0 WM0 1fA0 1cM0 1cM0 1cM0 S00 1HA0 Nc0 1C00 Dc0 1Nc0 Ao0 1h5A0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Gibraltar|GMT BST BDST CET CEST|0 -10 -20 -10 -20|010101010101010101010101010101010101010101010101012121212121010121010101010101010101034343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-2axa0 Rc0 1fA0 14M0 1fc0 1g00 1co0 1dc0 1co0 1oo0 1400 1dc0 19A0 1io0 1io0 WM0 1o00 14o0 1o00 17c0 1io0 17c0 1fA0 1a00 1lc0 17c0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1cM0 1io0 17c0 1fA0 1a00 1io0 17c0 1io0 17c0 1fA0 1a00 1io0 1qM0 Dc0 2Rz0 Dc0 1zc0 Oo0 1zc0 Rc0 1wo0 17c0 1iM0 FA0 xB0 1fA0 1a00 14o0 bb0 LA0 xB0 Rc0 1wo0 11A0 1o00 17c0 1fA0 1a00 1fA0 1cM0 1fA0 1a00 17c0 1fA0 1a00 1io0 17c0 1lc0 17c0 1fA0 10Jz0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|30e3\",\"Europe/Helsinki|HMT EET EEST|-1D.N -20 -30|0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-1WuND.N OULD.N 1dA0 1xGq0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Kaliningrad|CET CEST CET CEST MSK MSD EEST EET +03|-10 -20 -20 -30 -30 -40 -30 -20 -30|0101010101010232454545454545454546767676767676767676767676767676767676767676787|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 Am0 Lb0 1en0 op0 1pNz0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|44e4\",\"Europe/Kiev|KMT EET MSK CEST CET MSD EEST|-22.4 -20 -30 -20 -10 -40 -30|0123434252525252525252525256161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc22.4 eUo2.4 rnz0 2Hg0 WM0 1fA0 da0 1v4m0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 Db0 3220 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|34e5\",\"Europe/Kirov|LMT +03 +04 +05|-3i.M -30 -40 -50|01232323232323232321212121212121212121212121212121212121212121|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|48e4\",\"Europe/Lisbon|LMT WET WEST WEMT CET CEST|A.J 0 -10 -20 -10 -20|012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121214121212121212121212121212121212124545454212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ldXn.f aPWn.f Sp0 LX0 1vc0 Tc0 1uM0 SM0 1vc0 Tc0 1vc0 SM0 1vc0 6600 1co0 3E00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 3I00 17c0 1cM0 1cM0 3Fc0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 1tA0 1cM0 1dc0 1400 gL0 IM0 s10 U00 dX0 Rc0 pd0 Rc0 gL0 Oo0 pd0 Rc0 gL0 Oo0 pd0 14o0 1cM0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 3Co0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 pvy0 1cM0 1cM0 1fA0 1cM0 1cM0 1cN0 1cL0 1cN0 1cM0 1cM0 1cM0 1cM0 1cN0 1cL0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|27e5\",\"Europe/Luxembourg|LMT CET CEST WET WEST WEST WET|-o.A -10 -20 0 -10 -20 -10|0121212134343434343434343434343434343434343434343434565651212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2DG0o.A t6mo.A TB0 1nX0 Up0 1o20 11A0 rW0 CM0 1qP0 R90 1EO0 UK0 1u20 10m0 1ip0 1in0 17e0 19W0 1fB0 1db0 1cp0 1in0 17d0 1fz0 1a10 1in0 1a10 1in0 17f0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Dc0 vA0 60L0 WM0 1fA0 1cM0 17c0 1io0 16M0 1C00 Uo0 1eeo0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Madrid|WET WEST WEMT CET CEST|0 -10 -20 -10 -20|01010101010101010101010121212121234343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343|-28dd0 11A0 1go0 19A0 1co0 1dA0 b1A0 18o0 3I00 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 iyo0 Rc0 18o0 1hc0 1io0 1a00 14o0 5aL0 MM0 1vc0 17A0 1i00 1bc0 1eo0 17d0 1in0 17A0 6hA0 10N0 XIL0 1a10 1in0 17d0 19X0 1cN0 1fz0 1a10 1fX0 1cp0 1cO0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|62e5\",\"Europe/Malta|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1co0 17c0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1co0 1cM0 1lA0 Xc0 1qq0 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1o10 11z0 1iN0 19z0 1fB0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Minsk|MMT EET MSK CEST CET MSD EEST +03|-1O -20 -30 -20 -10 -40 -30 -30|01234343252525252525252525261616161616161616161616161616161616161617|-1Pc1O eUnO qNX0 3gQ0 WM0 1fA0 1cM0 Al0 1tsn0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 3Fc0 1cN0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0|19e5\",\"Europe/Monaco|PMT WET WEST WEMT CET CEST|-9.l 0 -10 -20 -10 -20|01212121212121212121212121212121212121212121212121232323232345454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-2nco9.l cNb9.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 2RV0 11z0 11B0 1ze0 WM0 1fA0 1cM0 1fa0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|38e3\",\"Europe/Moscow|MMT MMT MST MDST MSD MSK +05 EET EEST MSK|-2u.h -2v.j -3v.j -4v.j -40 -30 -50 -20 -30 -40|012132345464575454545454545454545458754545454545454545454545454545454545454595|-2ag2u.h 2pyW.W 1bA0 11X0 GN0 1Hb0 c4v.j ik0 3DA0 dz0 15A0 c10 2q10 iM10 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|16e6\",\"Europe/Paris|PMT WET WEST CEST CET WEMT|-9.l 0 -10 -20 -10 -20|0121212121212121212121212121212121212121212121212123434352543434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434343434|-2nco8.l cNb8.l HA0 19A0 1iM0 11c0 1oo0 Wo0 1rc0 QM0 1EM0 UM0 1u00 10o0 1io0 1wo0 Rc0 1a00 1fA0 1cM0 1cM0 1io0 17c0 1fA0 1a00 1io0 1a00 1io0 17c0 1fA0 1a00 1io0 17c0 1cM0 1cM0 1a00 1io0 1cM0 1cM0 1a00 1fA0 1io0 17c0 1cM0 1cM0 1a00 1fA0 1io0 1qM0 Df0 Ik0 5M30 WM0 1fA0 1cM0 Vx0 hB0 1aq0 16M0 1ekn0 1cL0 1fC0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e6\",\"Europe/Riga|RMT LST EET MSK CEST CET MSD EEST|-1A.y -2A.y -20 -30 -20 -10 -40 -30|010102345454536363636363636363727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272|-25TzA.y 11A0 1iM0 ko0 gWm0 yDXA.y 2bX0 3fE0 WM0 1fA0 1cM0 1cM0 4m0 1sLy0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cN0 1o00 11A0 1o00 11A0 1qM0 3oo0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|64e4\",\"Europe/Rome|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2arB0 Lz0 1cN0 1db0 1410 1on0 Wp0 1qL0 17d0 1cL0 M3B0 5M20 WM0 1fA0 1cM0 16M0 1iM0 16m0 1de0 1lc0 14m0 1lc0 WO0 1qM0 GTW0 On0 1C10 LA0 1C00 LA0 1EM0 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1C00 LA0 1zc0 Oo0 1C00 LA0 1C00 LA0 1zc0 Oo0 1C00 Oo0 1zc0 Oo0 1fC0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|39e5\",\"Europe/Samara|LMT +03 +04 +05|-3k.k -30 -40 -50|0123232323232323232121232323232323232323232323232323232323212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2y10 14m0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 2sp0 WM0|12e5\",\"Europe/Saratov|LMT +03 +04 +05|-34.i -30 -40 -50|012323232323232321212121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 5810\",\"Europe/Simferopol|SMT EET MSK CEST CET MSD EEST MSK|-2g -20 -30 -20 -10 -40 -30 -40|012343432525252525252525252161616525252616161616161616161616161616161616172|-1Pc2g eUog rEn0 2qs0 WM0 1fA0 1cM0 3V0 1u0L0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 4eL0 1cL0 1cN0 1cL0 1cN0 dX0 WL0 1cN0 1cL0 1fB0 1o30 11B0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11z0 1nW0|33e4\",\"Europe/Sofia|EET CET CEST EEST|-20 -10 -20 -30|01212103030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030|-168L0 WM0 1fA0 1cM0 1cM0 1cN0 1mKH0 1dd0 1fb0 1ap0 1fb0 1a20 1fy0 1a30 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cK0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 1nX0 11E0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|12e5\",\"Europe/Stockholm|CET CEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2azC0 TB0 2yDe0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|15e5\",\"Europe/Tallinn|TMT CET CEST EET MSK MSD EEST|-1D -10 -20 -20 -30 -40 -30|012103421212454545454545454546363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363|-26oND teD 11A0 1Ta0 4rXl KSLD 2FX0 2Jg0 WM0 1fA0 1cM0 18J0 1sTX0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o10 11A0 1qM0 5QM0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|41e4\",\"Europe/Tirane|LMT CET CEST|-1j.k -10 -20|01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2glBj.k 14pcj.k 5LC0 WM0 4M0 1fCK0 10n0 1op0 11z0 1pd0 11z0 1qN0 WL0 1qp0 Xb0 1qp0 Xb0 1qp0 11z0 1lB0 11z0 1qN0 11z0 1iN0 16n0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|42e4\",\"Europe/Ulyanovsk|LMT +03 +04 +05 +02|-3d.A -30 -40 -50 -20|01232323232323232321214121212121212121212121212121212121212121212|-22WM0 qH90 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1fA0 2pB0 IM0 rX0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0 3rd0\",\"Europe/Uzhgorod|CET CEST MSK MSD EET EEST|-10 -20 -30 -40 -20 -30|010101023232323232323232320454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454|-1cqL0 6i00 WM0 1fA0 1cM0 1ml0 1Cp0 1r3W0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1Q00 1Nf0 2pw0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|11e4\",\"Europe/Vienna|CET CEST|-10 -20|0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 3KM0 14o0 LA00 6i00 WM0 1fA0 1cM0 1cM0 1cM0 400 2qM0 1a00 1cM0 1cM0 1io0 17c0 1gHa0 19X0 1cP0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|18e5\",\"Europe/Vilnius|WMT KMT CET EET MSK CEST MSD EEST|-1o -1z.A -10 -20 -30 -20 -40 -30|012324525254646464646464646473737373737373737352537373737373737373737373737373737373737373737373737373737373737373737373|-293do 6ILM.o 1Ooz.A zz0 Mfd0 29W0 3is0 WM0 1fA0 1cM0 LV0 1tgL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11B0 1o00 11A0 1qM0 8io0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|54e4\",\"Europe/Volgograd|LMT +03 +04 +05|-2V.E -30 -40 -50|01232323232323232121212121212121212121212121212121212121212121|-21IqV.E psLV.E 23CL0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 2pB0 1cM0 1cM0 1cM0 1fA0 1cM0 3Co0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 8Hz0|10e5\",\"Europe/Warsaw|WMT CET CEST EET EEST|-1o -10 -20 -20 -30|012121234312121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121|-2ctdo 1LXo 11d0 1iO0 11A0 1o00 11A0 1on0 11A0 6zy0 HWP0 5IM0 WM0 1fA0 1cM0 1dz0 1mL0 1en0 15B0 1aq0 1nA0 11A0 1io0 17c0 1fA0 1a00 iDX0 LA0 1cM0 1cM0 1C00 Oo0 1cM0 1cM0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1C00 LA0 uso0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cN0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|17e5\",\"Europe/Zaporozhye|CUT EET MSK CEST CET MSD EEST|-2k -20 -30 -20 -10 -40 -30|01234342525252525252525252526161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161|-1Pc2k eUok rdb0 2RE0 WM0 1fA0 8m0 1v9a0 1db0 1cN0 1db0 1cN0 1db0 1dd0 1cO0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cK0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cQ0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00|77e4\",\"HST|HST|a0|0|\",\"Indian/Chagos|LMT IOT IOT|-4N.E -50 -60|012|-2xosN.E 3AGLN.E|30e2\",\"Indian/Christmas|CXT|-70|0||21e2\",\"Indian/Cocos|CCT|-6u|0||596\",\"Indian/Kerguelen|-00 +05|0 -50|01|-MG00|130\",\"Indian/Mahe|LMT SCT|-3F.M -40|01|-2yO3F.M|79e3\",\"Indian/Maldives|MMT MVT|-4S -50|01|-olgS|35e4\",\"Indian/Mauritius|LMT MUT MUST|-3O -40 -50|012121|-2xorO 34unO 14L0 12kr0 11z0|15e4\",\"Indian/Reunion|LMT RET|-3F.Q -40|01|-2mDDF.Q|84e4\",\"Pacific/Kwajalein|MHT KWAT MHT|-b0 c0 -c0|012|-AX0 W9X0|14e3\",\"MET|MET MEST|-10 -20|01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-2aFe0 11d0 1iO0 11A0 1o00 11A0 Qrc0 6i00 WM0 1fA0 1cM0 1cM0 1cM0 16M0 1gMM0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\",\"MST|MST|70|0|\",\"MST7MDT|MST MDT MWT MPT|70 60 60 60|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261r0 1nX0 11B0 1nX0 SgN0 8x20 ix0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Chatham|CHAST CHAST CHADT|-cf -cJ -dJ|012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212|-WqAf 1adef IM0 1C00 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1qM0 14o0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1lc0 14o0 1lc0 14o0 1lc0 17c0 1io0 17c0 1io0 17c0 1io0 17c0 1io0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|600\",\"PST8PDT|PST PDT PWT PPT|80 70 70 70|010102301010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|-261q0 1nX0 11B0 1nX0 SgN0 8x10 iy0 QwN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1cN0 1cL0 1cN0 1cL0 s10 1Vz0 LB0 1BX0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0 11B0 1nX0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0\",\"Pacific/Apia|LMT WSST SST SDT WSDT WSST|bq.U bu b0 a0 -e0 -d0|01232345454545454545454545454545454545454545454545454545454|-2nDMx.4 1yW03.4 2rRbu 1ff0 1a00 CI0 AQ0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1cM0 1fA0 1a00 1fA0 1a00|37e3\",\"Pacific/Bougainville|PGT JST BST|-a0 -90 -b0|0102|-16Wy0 7CN0 2MQp0|18e4\",\"Pacific/Chuuk|CHUT|-a0|0||49e3\",\"Pacific/Efate|LMT VUT VUST|-bd.g -b0 -c0|0121212121212121212121|-2l9nd.g 2Szcd.g 1cL0 1oN0 10L0 1fB0 19X0 1fB0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1cN0 1cL0 1fB0 Lz0 1Nd0 An0|66e3\",\"Pacific/Enderbury|PHOT PHOT PHOT|c0 b0 -d0|012|nIc0 B8n0|1\",\"Pacific/Fakaofo|TKT TKT|b0 -d0|01|1Gfn0|483\",\"Pacific/Fiji|LMT FJT FJST|-bT.I -c0 -d0|0121212121212121212121212121212121212121212121212121212121212121|-2bUzT.I 3m8NT.I LA0 1EM0 IM0 nJc0 LA0 1o00 Rc0 1wo0 Ao0 1Nc0 Ao0 1Q00 xz0 1SN0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|88e4\",\"Pacific/Funafuti|TVT|-c0|0||45e2\",\"Pacific/Galapagos|LMT ECT GALT|5W.o 50 60|012|-1yVS1.A 2dTz1.A|25e3\",\"Pacific/Gambier|LMT GAMT|8X.M 90|01|-2jof0.c|125\",\"Pacific/Guadalcanal|LMT SBT|-aD.M -b0|01|-2joyD.M|11e4\",\"Pacific/Guam|GST ChST|-a0 -a0|01|1fpq0|17e4\",\"Pacific/Honolulu|HST HDT HST|au 9u a0|010102|-1thLu 8x0 lef0 8Pz0 46p0|37e4\",\"Pacific/Kiritimati|LINT LINT LINT|aE a0 -e0|012|nIaE B8nk|51e2\",\"Pacific/Kosrae|KOST KOST|-b0 -c0|010|-AX0 1bdz0|66e2\",\"Pacific/Majuro|MHT MHT|-b0 -c0|01|-AX0|28e3\",\"Pacific/Marquesas|LMT MART|9i 9u|01|-2joeG|86e2\",\"Pacific/Pago_Pago|LMT NST BST SST|bm.M b0 b0 b0|0123|-2nDMB.c 2gVzB.c EyM0|37e2\",\"Pacific/Nauru|LMT NRT JST NRT|-b7.E -bu -90 -c0|01213|-1Xdn7.E PvzB.E 5RCu 1ouJu|10e3\",\"Pacific/Niue|NUT NUT NUT|bk bu b0|012|-KfME 17y0a|12e2\",\"Pacific/Norfolk|NMT NFT NFST NFT|-bc -bu -cu -b0|01213|-Kgbc W01G On0 1COp0|25e4\",\"Pacific/Noumea|LMT NCT NCST|-b5.M -b0 -c0|01212121|-2l9n5.M 2EqM5.M xX0 1PB0 yn0 HeP0 Ao0|98e3\",\"Pacific/Palau|PWT|-90|0||21e3\",\"Pacific/Pitcairn|PNT PST|8u 80|01|18Vku|56\",\"Pacific/Pohnpei|PONT|-b0|0||34e3\",\"Pacific/Port_Moresby|PGT|-a0|0||25e4\",\"Pacific/Rarotonga|CKT CKHST CKT|au 9u a0|012121212121212121212121212|lyWu IL0 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Onu 1zcu Rbu 1zcu Onu 1zcu Onu 1zcu Onu|13e3\",\"Pacific/Tahiti|LMT TAHT|9W.g a0|01|-2joe1.I|18e4\",\"Pacific/Tarawa|GILT|-c0|0||29e3\",\"Pacific/Tongatapu|+1220 +13 +14|-ck -d0 -e0|0121212121212121212121212121212121212121212121212121|-1aB0k 2n5dk 15A0 1wo0 xz0 1Q10 xz0 zWN0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0 1VA0 s00 1VA0 s00 1VA0 uM0 1SM0 uM0 1SM0 uM0 1SM0 uM0|75e3\",\"Pacific/Wake|WAKT|-c0|0||16e3\",\"Pacific/Wallis|WFT|-c0|0||94\",\"WET|WET WEST|0 -10|010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010|hDB0 1a00 1fA0 1cM0 1cM0 1cM0 1fA0 1a00 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00\"],\nlinks:[\"Africa/Abidjan|Africa/Bamako\",\"Africa/Abidjan|Africa/Banjul\",\"Africa/Abidjan|Africa/Conakry\",\"Africa/Abidjan|Africa/Dakar\",\"Africa/Abidjan|Africa/Freetown\",\"Africa/Abidjan|Africa/Lome\",\"Africa/Abidjan|Africa/Nouakchott\",\"Africa/Abidjan|Africa/Ouagadougou\",\"Africa/Abidjan|Africa/Sao_Tome\",\"Africa/Abidjan|Africa/Timbuktu\",\"Africa/Abidjan|Atlantic/St_Helena\",\"Africa/Cairo|Egypt\",\"Africa/Johannesburg|Africa/Maseru\",\"Africa/Johannesburg|Africa/Mbabane\",\"Africa/Khartoum|Africa/Juba\",\"Africa/Lagos|Africa/Bangui\",\"Africa/Lagos|Africa/Brazzaville\",\"Africa/Lagos|Africa/Douala\",\"Africa/Lagos|Africa/Kinshasa\",\"Africa/Lagos|Africa/Libreville\",\"Africa/Lagos|Africa/Luanda\",\"Africa/Lagos|Africa/Malabo\",\"Africa/Lagos|Africa/Niamey\",\"Africa/Lagos|Africa/Porto-Novo\",\"Africa/Maputo|Africa/Blantyre\",\"Africa/Maputo|Africa/Bujumbura\",\"Africa/Maputo|Africa/Gaborone\",\"Africa/Maputo|Africa/Harare\",\"Africa/Maputo|Africa/Kigali\",\"Africa/Maputo|Africa/Lubumbashi\",\"Africa/Maputo|Africa/Lusaka\",\"Africa/Nairobi|Africa/Addis_Ababa\",\"Africa/Nairobi|Africa/Asmara\",\"Africa/Nairobi|Africa/Asmera\",\"Africa/Nairobi|Africa/Dar_es_Salaam\",\"Africa/Nairobi|Africa/Djibouti\",\"Africa/Nairobi|Africa/Kampala\",\"Africa/Nairobi|Africa/Mogadishu\",\"Africa/Nairobi|Indian/Antananarivo\",\"Africa/Nairobi|Indian/Comoro\",\"Africa/Nairobi|Indian/Mayotte\",\"Africa/Tripoli|Libya\",\"America/Adak|America/Atka\",\"America/Adak|US/Aleutian\",\"America/Anchorage|US/Alaska\",\"America/Argentina/Buenos_Aires|America/Buenos_Aires\",\"America/Argentina/Catamarca|America/Argentina/ComodRivadavia\",\"America/Argentina/Catamarca|America/Catamarca\",\"America/Argentina/Cordoba|America/Cordoba\",\"America/Argentina/Cordoba|America/Rosario\",\"America/Argentina/Jujuy|America/Jujuy\",\"America/Argentina/Mendoza|America/Mendoza\",\"America/Atikokan|America/Coral_Harbour\",\"America/Chicago|US/Central\",\"America/Curacao|America/Aruba\",\"America/Curacao|America/Kralendijk\",\"America/Curacao|America/Lower_Princes\",\"America/Denver|America/Shiprock\",\"America/Denver|Navajo\",\"America/Denver|US/Mountain\",\"America/Detroit|US/Michigan\",\"America/Edmonton|Canada/Mountain\",\"America/Fort_Wayne|America/Indiana/Indianapolis\",\"America/Fort_Wayne|America/Indianapolis\",\"America/Fort_Wayne|US/East-Indiana\",\"America/Halifax|Canada/Atlantic\",\"America/Havana|Cuba\",\"America/Indiana/Knox|America/Knox_IN\",\"America/Indiana/Knox|US/Indiana-Starke\",\"America/Jamaica|Jamaica\",\"America/Kentucky/Louisville|America/Louisville\",\"America/Los_Angeles|US/Pacific\",\"America/Los_Angeles|US/Pacific-New\",\"America/Manaus|Brazil/West\",\"America/Mazatlan|Mexico/BajaSur\",\"America/Mexico_City|Mexico/General\",\"America/New_York|US/Eastern\",\"America/Noronha|Brazil/DeNoronha\",\"America/Panama|America/Cayman\",\"America/Phoenix|US/Arizona\",\"America/Port_of_Spain|America/Anguilla\",\"America/Port_of_Spain|America/Antigua\",\"America/Port_of_Spain|America/Dominica\",\"America/Port_of_Spain|America/Grenada\",\"America/Port_of_Spain|America/Guadeloupe\",\"America/Port_of_Spain|America/Marigot\",\"America/Port_of_Spain|America/Montserrat\",\"America/Port_of_Spain|America/St_Barthelemy\",\"America/Port_of_Spain|America/St_Kitts\",\"America/Port_of_Spain|America/St_Lucia\",\"America/Port_of_Spain|America/St_Thomas\",\"America/Port_of_Spain|America/St_Vincent\",\"America/Port_of_Spain|America/Tortola\",\"America/Port_of_Spain|America/Virgin\",\"America/Regina|Canada/East-Saskatchewan\",\"America/Regina|Canada/Saskatchewan\",\"America/Rio_Branco|America/Porto_Acre\",\"America/Rio_Branco|Brazil/Acre\",\"America/Santiago|Chile/Continental\",\"America/Sao_Paulo|Brazil/East\",\"America/St_Johns|Canada/Newfoundland\",\"America/Tijuana|America/Ensenada\",\"America/Tijuana|America/Santa_Isabel\",\"America/Tijuana|Mexico/BajaNorte\",\"America/Toronto|America/Montreal\",\"America/Toronto|Canada/Eastern\",\"America/Vancouver|Canada/Pacific\",\"America/Whitehorse|Canada/Yukon\",\"America/Winnipeg|Canada/Central\",\"Asia/Ashgabat|Asia/Ashkhabad\",\"Asia/Bangkok|Asia/Phnom_Penh\",\"Asia/Bangkok|Asia/Vientiane\",\"Asia/Dhaka|Asia/Dacca\",\"Asia/Dubai|Asia/Muscat\",\"Asia/Ho_Chi_Minh|Asia/Saigon\",\"Asia/Hong_Kong|Hongkong\",\"Asia/Jerusalem|Asia/Tel_Aviv\",\"Asia/Jerusalem|Israel\",\"Asia/Kathmandu|Asia/Katmandu\",\"Asia/Kolkata|Asia/Calcutta\",\"Asia/Macau|Asia/Macao\",\"Asia/Makassar|Asia/Ujung_Pandang\",\"Asia/Nicosia|Europe/Nicosia\",\"Asia/Qatar|Asia/Bahrain\",\"Asia/Rangoon|Asia/Yangon\",\"Asia/Riyadh|Asia/Aden\",\"Asia/Riyadh|Asia/Kuwait\",\"Asia/Seoul|ROK\",\"Asia/Shanghai|Asia/Chongqing\",\"Asia/Shanghai|Asia/Chungking\",\"Asia/Shanghai|Asia/Harbin\",\"Asia/Shanghai|PRC\",\"Asia/Singapore|Singapore\",\"Asia/Taipei|ROC\",\"Asia/Tehran|Iran\",\"Asia/Thimphu|Asia/Thimbu\",\"Asia/Tokyo|Japan\",\"Asia/Ulaanbaatar|Asia/Ulan_Bator\",\"Asia/Urumqi|Asia/Kashgar\",\"Atlantic/Faroe|Atlantic/Faeroe\",\"Atlantic/Reykjavik|Iceland\",\"Australia/Adelaide|Australia/South\",\"Australia/Brisbane|Australia/Queensland\",\"Australia/Broken_Hill|Australia/Yancowinna\",\"Australia/Darwin|Australia/North\",\"Australia/Hobart|Australia/Tasmania\",\"Australia/Lord_Howe|Australia/LHI\",\"Australia/Melbourne|Australia/Victoria\",\"Australia/Perth|Australia/West\",\"Australia/Sydney|Australia/ACT\",\"Australia/Sydney|Australia/Canberra\",\"Australia/Sydney|Australia/NSW\",\"Etc/GMT+0|Etc/GMT\",\"Etc/GMT+0|Etc/GMT-0\",\"Etc/GMT+0|Etc/GMT0\",\"Etc/GMT+0|Etc/Greenwich\",\"Etc/GMT+0|GMT\",\"Etc/GMT+0|GMT+0\",\"Etc/GMT+0|GMT-0\",\"Etc/GMT+0|GMT0\",\"Etc/GMT+0|Greenwich\",\"Etc/UCT|UCT\",\"Etc/UTC|Etc/Universal\",\"Etc/UTC|Etc/Zulu\",\"Etc/UTC|UTC\",\"Etc/UTC|Universal\",\"Etc/UTC|Zulu\",\"Europe/Belgrade|Europe/Ljubljana\",\"Europe/Belgrade|Europe/Podgorica\",\"Europe/Belgrade|Europe/Sarajevo\",\"Europe/Belgrade|Europe/Skopje\",\"Europe/Belgrade|Europe/Zagreb\",\"Europe/Chisinau|Europe/Tiraspol\",\"Europe/Dublin|Eire\",\"Europe/Helsinki|Europe/Mariehamn\",\"Europe/Istanbul|Asia/Istanbul\",\"Europe/Istanbul|Turkey\",\"Europe/Lisbon|Portugal\",\"Europe/London|Europe/Belfast\",\"Europe/London|Europe/Guernsey\",\"Europe/London|Europe/Isle_of_Man\",\"Europe/London|Europe/Jersey\",\"Europe/London|GB\",\"Europe/London|GB-Eire\",\"Europe/Moscow|W-SU\",\"Europe/Oslo|Arctic/Longyearbyen\",\"Europe/Oslo|Atlantic/Jan_Mayen\",\"Europe/Prague|Europe/Bratislava\",\"Europe/Rome|Europe/San_Marino\",\"Europe/Rome|Europe/Vatican\",\"Europe/Warsaw|Poland\",\"Europe/Zurich|Europe/Busingen\",\"Europe/Zurich|Europe/Vaduz\",\"Pacific/Auckland|Antarctica/McMurdo\",\"Pacific/Auckland|Antarctica/South_Pole\",\"Pacific/Auckland|NZ\",\"Pacific/Chatham|NZ-CHAT\",\"Pacific/Chuuk|Pacific/Truk\",\"Pacific/Chuuk|Pacific/Yap\",\"Pacific/Easter|Chile/EasterIsland\",\"Pacific/Guam|Pacific/Saipan\",\"Pacific/Honolulu|Pacific/Johnston\",\"Pacific/Honolulu|US/Hawaii\",\"Pacific/Kwajalein|Kwajalein\",\"Pacific/Pago_Pago|Pacific/Midway\",\"Pacific/Pago_Pago|Pacific/Samoa\",\"Pacific/Pago_Pago|US/Samoa\",\"Pacific/Pohnpei|Pacific/Ponape\"]}),a});\n","/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2015 (original work) Open Assessment Technologies SA ;\n */\n/**\n * @author Jean-Sébastien Conan \n */\ndefine('taoClientDiagnostic/controller/Diagnostic/index',[\n 'jquery',\n 'lodash',\n 'i18n',\n 'helpers',\n 'moment',\n 'layout/loading-bar',\n 'util/encode',\n 'ui/feedback',\n 'ui/dialog',\n 'taoClientDiagnostic/tools/getStatus',\n 'taoClientDiagnostic/tools/performances/tester',\n 'taoClientDiagnostic/tools/fingerprint/tester',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/fingerprint',\n 'tpl!taoClientDiagnostic/tools/diagnostic/tpl/details',\n 'ui/datatable',\n 'lib/moment-timezone.min'\n], function ($, _, __, helpers, moment, loadingBar, encode, feedback, dialog, getStatus, performancesTesterFactory, fingerprintTesterFactory, fingerprintTpl, detailsTpl) {\n 'use strict';\n\n /**\n * The CSS scope\n * @type {String}\n */\n var cssScope = '.diagnostic-index';\n\n /**\n * Default Time Zone for date\n * @type {string}\n */\n var defaultDateTimeZone = 'UTC';\n\n /**\n * Default date format\n * @type {string}\n */\n var defaultDateFormat = 'Y/MM/DD HH:mm:ss';\n\n /**\n * Format a number with decimals\n * @param {Number} number - The number to format\n * @param {Number} [digits] - The number of decimals\n * @returns {Number}\n */\n var formatNumber = function formatNumber(number, digits) {\n var nb = 'undefined' === typeof digits ? 2 : Math.max(0, parseInt(digits, 10));\n var factor = Math.pow(10, nb) || 1;\n return Math.round(number * factor) / factor;\n };\n\n /**\n * Format a bandwidth value\n * @param {Number} value\n * @returns {Number}\n */\n var formatBandwidth = function formatBandwidth(value) {\n var bandwidth = formatNumber(value);\n\n if (value > 100) {\n bandwidth = '> 100';\n }\n\n return bandwidth;\n };\n\n /**\n * Transform date to local timezone\n * @param {String} date\n * @returns {String}\n */\n var transformDateToLocal = function transformDateToLocal(date) {\n var d, time;\n\n if (_.isFinite(date)) {\n if (!_.isNumber(date)) {\n date = _.parseInt(date, 10);\n }\n d = new Date(date * 1000);\n time = moment.utc(d);\n } else {\n time = moment.tz(date, defaultDateTimeZone);\n }\n\n return time.tz(moment.tz.guess()).format(defaultDateFormat);\n };\n\n /**\n * Controls the readiness check page\n *\n * @type {Object}\n */\n var taoDiagnosticCtlr = {\n /**\n * Entry point of the page\n */\n start : function start() {\n var $container = $(cssScope);\n var extension = $container.data('extension') || 'taoClientDiagnostic';\n var $list = $container.find('.list');\n var dataset = $container.data('set');\n var config = $container.data('config') || {};\n var installedExtension = $container.data('installedextension') || false;\n var diagnosticUrl = helpers._url('diagnostic', 'Diagnostic', extension);\n var removeUrl = helpers._url('remove', 'Diagnostic', extension);\n var serviceUrl = helpers._url('diagnosticData', 'Diagnostic', extension);\n var performancesTester = performancesTesterFactory(config.testers.performance || {});\n var fingerprintTester = fingerprintTesterFactory(config.testers.fingerprint || {});\n\n var tools = [];\n var actions = [];\n var model = [];\n\n // request the server with a selection of readiness check results\n function request(url, selection, message) {\n if (selection && selection.length) {\n loadingBar.start();\n\n $.ajax({\n url: url,\n data: {\n id: selection\n },\n dataType : 'json',\n type: 'POST',\n error: function() {\n loadingBar.stop();\n }\n }).done(function(response) {\n loadingBar.stop();\n\n if (response && response.success) {\n if (message) {\n feedback().success(message);\n }\n $list.datatable('refresh');\n } else {\n feedback().error(__('Something went wrong ...') + '
            ' + encode.html(response.error), {encodeHtml: false});\n }\n });\n }\n }\n\n // request the server to remove the selected diagnostic-index\n function remove(selection) {\n request(removeUrl, selection, __('The readiness check result have been removed'));\n }\n\n\n // tool: page refresh\n tools.push({\n id: 'refresh',\n icon: 'reset',\n title: __('Refresh the page'),\n label: __('Refresh'),\n action: function() {\n $list.datatable('refresh');\n }\n });\n\n // tool: readiness check\n tools.push({\n id: 'launch',\n icon: 'play',\n title: __('Launch another readiness check'),\n label: __('Launch readiness check'),\n action: function() {\n window.location.href = diagnosticUrl;\n }\n });\n\n if(installedExtension){\n // tool: compatibilty via lti\n tools.push({\n id: 'lti',\n icon: 'play',\n title: __('Try a test delivery'),\n label: __('Try a test delivery'),\n action: function() {\n window.location.href = deliveryUrl;\n }\n });\n }\n\n // tool: remove selected results\n tools.push({\n id: 'remove',\n icon: 'remove',\n title: __('Remove the selected readiness check results'),\n label: __('Remove'),\n massAction: true,\n action: function(selection) {\n dialog({\n message: __('The selected readiness check results will be removed. Continue ?'),\n autoRender: true,\n autoDestroy: true,\n onOkBtn: function() {\n remove(selection);\n }\n });\n }\n });\n\n\n // tool: close tab, this won't be present in an LTI iframe\n // button should always be right most\n if(window.self === window.top) {\n tools.push({\n id: 'exitButton',\n icon: 'close',\n title: __('Exit'),\n label: __('Exit'),\n action: function() {\n window.self.close();\n }\n });\n }\n\n // action: remove the result\n actions.push({\n id: 'remove',\n icon: 'remove',\n title: __('Remove the readiness check result?'),\n action: function(id) {\n dialog({\n autoRender: true,\n autoDestroy: true,\n message: __('The readiness check result will be removed. Continue ?'),\n onOkBtn: function() {\n remove([id]);\n }\n });\n }\n });\n\n // column: Workstation identifier\n model.push({\n id: 'workstation',\n label: __('Workstation')\n });\n\n // column: School name\n if (config.requireSchoolName) {\n model.push({\n id: 'school',\n label: __('School')\n });\n }\n\n // results of fingerprinting\n if (config.testers.fingerprint && config.testers.fingerprint.enabled) {\n // column: Fingerprint of the workstation\n model.push({\n id: 'fingerprint-cell',\n label: __('Fingerprint'),\n transform: function(v, row) {\n return fingerprintTpl(row.fingerprint);\n }\n });\n\n $list.on('click.fingerprint', '.fingerprint-cell span.details', function(e) {\n var id = $(e.target).closest('tr').data('itemIdentifier');\n var row = _.find(dataset.data, {id: id});\n if (row) {\n dialog({\n content: detailsTpl(fingerprintTester.getSummary(row.fingerprint)),\n buttons: 'ok',\n autoRender: true,\n autoDestroy: true\n });\n }\n });\n }\n\n // results of browser test\n if (config.testers.browser && config.testers.browser.enabled) {\n // column: Operating system information\n model.push({\n id: 'os',\n label: __('OS')\n });\n\n // column: Browser information\n model.push({\n id: 'browser',\n label: __('Browser')\n });\n }\n\n // results of performances test\n if (config.testers.performance && config.testers.performance.enabled) {\n // column: Performances of the workstation\n model.push({\n id: 'performance',\n label: __('Performances'),\n transform: function (value) {\n var status = performancesTester.getFeedback(value);\n return status.feedback && status.feedback.message;\n }\n });\n }\n\n // results of bandwidth test\n if (config.testers.bandwidth && config.testers.bandwidth.enabled) {\n // column: Available bandwidth\n model.push({\n id: 'bandwidth',\n label: __('Bandwidth'),\n transform: formatBandwidth\n });\n }\n\n // results of intensive bandwidth test\n if (config.testers.intensive_bandwidth && config.testers.intensive_bandwidth.enabled) {\n // column: Available bandwidth\n model.push({\n id: 'intensive_bandwidth',\n label: __('Intensive bandwidth'),\n transform: formatBandwidth\n });\n }\n\n // results of upload speed test\n if (config.testers.upload && config.testers.upload.enabled) {\n // column: Available upload speed\n model.push({\n id: 'upload',\n label: __('Upload speed'),\n transform: formatBandwidth\n });\n }\n\n // column: Date of diagnostic\n model.push({\n id: 'date',\n label: __('Date'),\n transform: function(value) {\n return transformDateToLocal(value);\n }\n });\n\n $list\n .on('query.datatable', function() {\n loadingBar.start();\n })\n .on('load.datatable', function(e, data) {\n dataset = data;\n loadingBar.stop();\n })\n .datatable({\n url: serviceUrl,\n status: {\n empty: __('No readiness checks have been done!'),\n available: __('Readiness checks already done'),\n loading: __('Loading')\n },\n tools: tools,\n actions: actions,\n selectable: true,\n model: model\n }, dataset);\n }\n };\n\n // the page is always loading data when starting\n loadingBar.start();\n\n return taoDiagnosticCtlr;\n});\n\n","\n(function(c){var d=document,a='appendChild',i='styleSheet',s=d.createElement('style');s.type='text/css';d.getElementsByTagName('head')[0][a](s);s[i]?s[i].cssText=c:s[a](d.createTextNode(c));})\n('.diagnostics-main-area{max-width:768px;margin:40px auto 0 auto;background:#f3f1ef;border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;padding:20px}.diagnostics-main-area h1,.diagnostics-main-area h2,.diagnostics-main-area h3{font-style:normal;font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif}.diagnostics-main-area h1{margin-bottom:20px;font-size:20px;font-size:2rem}.diagnostics-main-area h2{margin:0;font-size:14px;font-size:1.4rem}.diagnostics-main-area h3{margin-top:10px;margin-bottom:5px;font-size:12px;font-size:1.2rem}.diagnostics-main-area .status h2,.diagnostics-main-area .details h2{margin:1rem 0}.diagnostics-main-area .legend{font-style:italic;font-weight:normal;font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif;font-size:11px;font-size:1.1rem}.diagnostics-main-area .customMsg{margin-top:10px}.diagnostics-main-area .quality-bar{height:15px;background:linear-gradient(to right, #CE1431 0%, #D57915 25%, #D5A215 50%, #D5CB15 75%, #36B111 100%);opacity:.8;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;margin:5px 0 10px;position:relative}.diagnostics-main-area .quality-indicator{position:absolute;border-width:10px 8px;border-style:solid;border-color:#333 transparent transparent;top:-1px;height:25px;width:0}.diagnostics-main-area .quality-indicator[title]:before{font-size:11px;font-size:1.1rem;content:attr(title);position:absolute;top:-36px;left:-12px;text-align:center;width:24px;height:24px;line-height:24px;display:inline-block;background-color:#0e5d91;color:rgba(255,255,255,0.9);-moz-border-radius:12px;-webkit-border-radius:12px;border-radius:12px}.diagnostics-main-area .quality-indicator.wide[title]:before{left:-16px;width:32px}.diagnostics-main-area [data-result],.diagnostics-main-area .bandwidth-box{display:none}.diagnostics-main-area [data-action=bandwidth-launcher]{margin:5px 0 10px}.diagnostics-main-area li{padding-bottom:10px}.diagnostics-main-area .intro{margin-bottom:20px}.diagnostics-main-area .intro label{display:inline-block;width:100px}table.datatable [class^=\\\"icon-\\\"]{padding:0}table.datatable td{font-size:90%;font-weight:normal}table.datatable .progress .state:not(:first-child):before{content:\\' - \\'}table.datatable .progress .item-time:before{content:\\' (\\'}table.datatable .progress .item-time .total:before{content:\\' / \\'}table.datatable .progress .item-time:after{content:\\')\\'}.details table.matrix{border:1px solid #ddd;border-radius:2px;-webkit-border-radius:2px;margin-top:5px}.details table.matrix td:first-child{min-width:30%}.diagnostic-scope h1{font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif;font-size:22px;font-size:2.2rem;font-weight:normal}.diagnostic-scope h2{font-family:\\\"Century Gothic\\\",CenturyGothic,AppleGothic,sans-serif;font-size:18px;font-size:1.8rem;margin:30px 0 10px}.diagnostic-scope form.daterange label{padding:0}.diagnostic-scope form.daterange input{margin:0 10px}.diagnostic-scope table.datatable [class^=\\\"icon-\\\"]{padding:0}.diagnostic-scope table.datatable td{font-size:90%;font-weight:normal}.diagnostic-scope .content{margin:auto}.diagnostic-scope .diagnostic-index .content,.diagnostic-scope .diagnostic-runner .content{width:100%;padding:0 20px}.diagnostic-scope .diagnostic-index .message,.diagnostic-scope .diagnostic-runner .message{padding:8px;text-align:center}.diagnostic-scope .panel .action-bar{background:#266d9c;padding:3px;overflow:hidden;color:#e7eff4;margin:40px 0 10px 0}.diagnostic-scope .panel .action-bar .btn-info{overflow:hidden;background:transparent;border:1px rgba(255,255,255,0.3) solid}.diagnostic-scope .diagnostics-main-area{margin-top:0px;max-width:800px}.diagnostic-scope .detailed-value{display:flex;justify-content:space-between}.diagnostic-scope .detailed-value.errors{color:#d8ae5b}.diagnostic-scope .detailed-value .details{font-size:2rem;cursor:pointer;color:#3e7da7}.diagnostic-scope .detailed-value .details:hover{color:#03131d}.action-bar .tool-exitButton,.action-bar [data-control=\\\"exitButton\\\"]{float:right}\\n\\n/*# sourceMappingURL=diagnostics.css.map */');\n"]} \ No newline at end of file diff --git a/views/js/templates/diagnostic/main.tpl b/views/js/templates/diagnostic/main.tpl index be76d367..79ef9b5b 100644 --- a/views/js/templates/diagnostic/main.tpl +++ b/views/js/templates/diagnostic/main.tpl @@ -8,6 +8,12 @@ {{/with}} {{#if header}}

            {{header}}

            {{/if}} {{#if info}}

            {{info}}

            {{/if}} + {{#if requireSchoolName}} +

            + + +

            + {{/if}}

            diff --git a/views/js/tools/diagnostic/diagnostic.js b/views/js/tools/diagnostic/diagnostic.js index 41162e8b..3498d8eb 100644 --- a/views/js/tools/diagnostic/diagnostic.js +++ b/views/js/tools/diagnostic/diagnostic.js @@ -26,6 +26,8 @@ define([ 'async', 'ui/feedback', 'ui/component', + 'core/logger', + 'core/store', 'core/dataProvider/request', 'util/url', 'taoClientDiagnostic/tools/performances/tester', @@ -46,6 +48,8 @@ define([ async, feedback, component, + loggerFactory, + store, request, urlUtil, performancesTester, @@ -61,6 +65,11 @@ define([ qualityBarTpl) { 'use strict'; + /** + * @type {logger} + */ + var logger = loggerFactory('taoClientDiagnostic/diagnostic'); + /** * Some default values * @type {Object} @@ -390,6 +399,7 @@ define([ * @param {String} [config.controller] - The name of the controller to call * @param {String} [config.extension] - The name of the extension containing the controller * @param {Object} [config.storeParams] - A list of additional parameters to send with diagnostic results + * @param {Boolean} [config.requireSchoolName] - If `true` require a school name to allow the tests to start * * @param {String} [config.browser.action] - The name of the action to call to get the browser checker * @param {String} [config.browser.controller] - The name of the controller to call to get the browser checker @@ -428,6 +438,112 @@ define([ .on('render', function () { var self = this; + /** + * Gets a control by its registered name + * @param {String} name - the name registered in the collection of controls + */ + function getControl(name) { + return self.controls['$' + name]; + } + + /** + * Gets the value of an input field + * @param {String} name - the name registered in the collection of controls + * @returns {String} + */ + function getInputValue(name) { + var $control = getControl(name); + return ($control && $control.val() || '').trim(); + } + + /** + * Sets the value of an input field + * @param {String} name - the name registered in the collection of controls + * @param {String} value + */ + function setInputValue(name, value) { + var $control = getControl(name); + $control && $control.val(value); + } + + /** + * Enable/Disable a control + * @param {String} name - the name registered in the collection of controls + * @param {Boolean} [state] + */ + function toggleControl(name, state) { + var $control = getControl(name); + if ($control) { + if (typeof state === 'undefined') { + state = !$control.is(':enabled'); + } + if (state) { + $control.removeProp('disabled'); + } else { + $control.prop('disabled', true); + } + } + } + + /** + * Install the school name manager. + * @todo: improve this by moving it into a plugin, and obviously implement the plugin handling + */ + function manageSchoolName() { + // ensure the diagnostic cannot start without a school name + self.controls.$school = self.getElement().find('[data-control="school"]') + .on('keypress', function (e) { + _.defer(function() { + toggleControl('start', !!getInputValue('school')); + if (e.which === 13) { + e.preventDefault(); + self.controls.$start.click(); + } + }); + }); + toggleControl('start', !!getInputValue('school')); + + // will store the school name in the browser storage, that will allow to restore it next time + toggleControl('school', false); + store('client-diagnostic') + .then(function (storage) { + // store the school name on test start, to ensure consistency + self.on('start.school', function() { + storage.setItem('school', getInputValue('school')) + .catch(function(error) { + logger.error(error); + }); + }); + + // restore the school name on load + return storage.getItem('school').then(function (value) { + setInputValue('school', value); + toggleControl('start', !!getInputValue('school')); + toggleControl('school', true); + }); + }) + .catch(function(error) { + logger.error(error); + toggleControl('school', true); + }); + + // ensure the school name is properly sent + self + .on('start.school', function() { + // append the school name to the queries + self.config.storeParams = _.assign(self.config.storeParams || {}, { + school: getInputValue('school') + }); + + // disable the input when running the test + toggleControl('school', false); + }) + .on('end.school', function() { + // enable the input when the test is complete + toggleControl('school', true); + }) + } + // get access to all needed placeholders this.controls = { $start: this.$component.find('[data-action="test-launcher"]'), @@ -437,9 +553,13 @@ define([ // start the diagnostic this.controls.$start.on('click', function () { - self.run(); + self.controls.$start.is(':enabled') && self.run(); }); + if (this.config.requireSchoolName) { + manageSchoolName(); + } + // show result details this.controls.$results.on('click', 'button[data-action="show-details"]', function () { var $btn = $(this).closest('button'); diff --git a/views/js/tools/diagnostic/tpl/main.tpl b/views/js/tools/diagnostic/tpl/main.tpl index afc85339..94144d33 100644 --- a/views/js/tools/diagnostic/tpl/main.tpl +++ b/views/js/tools/diagnostic/tpl/main.tpl @@ -5,6 +5,13 @@

            {{#if header}}

            {{header}}

            {{/if}} {{#if info}}

            {{info}}

            {{/if}} + {{#if setup}}

            {{setup}}

            {{/if}} + {{#if requireSchoolName}} +

            + + +

            + {{/if}}
            diff --git a/views/scss/diagnostics.scss b/views/scss/diagnostics.scss index 4d5dac58..1bf193df 100644 --- a/views/scss/diagnostics.scss +++ b/views/scss/diagnostics.scss @@ -3,16 +3,16 @@ /// modify it under the terms of the GNU General Public License /// as published by the Free Software Foundation; under version 2 /// of the License (non-upgradable). -/// +/// /// This program is distributed in the hope that it will be useful, /// but WITHOUT ANY WARRANTY; without even the implied warranty of /// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the /// GNU General Public License for more details. -/// +/// /// You should have received a copy of the GNU General Public License /// along with this program; if not, write to the Free Software /// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -/// +/// /// Copyright (c) 2015 Open Assessment Technologies SA /// @@ -120,6 +120,11 @@ .intro { margin-bottom: 20px; + + label { + display: inline-block; + width: 100px; + } } }