1 line
127 KiB
JavaScript
1 line
127 KiB
JavaScript
!function(t){var d={};function e(a){if(d[a])return d[a].exports;var c=d[a]={i:a,l:!1,exports:{}};return t[a].call(c.exports,c,c.exports,e),c.l=!0,c.exports}e.m=t,e.c=d,e.d=function(t,d,a){e.o(t,d)||Object.defineProperty(t,d,{enumerable:!0,get:a})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,d){if(1&d&&(t=e(t)),8&d)return t;if(4&d&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(e.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&d&&"string"!=typeof t)for(var c in t)e.d(a,c,function(d){return t[d]}.bind(null,c));return a},e.n=function(t){var d=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(d,"a",d),d},e.o=function(t,d){return Object.prototype.hasOwnProperty.call(t,d)},e.p="",e(e.s=7)}({0:function(module,exports,__webpack_require__){eval('!function(t,e){ true&&module.exports?(module.exports=e(),module.exports.default=module.exports):t.timeago=e()}("undefined"!=typeof window?window:this,function(){function t(t){return t instanceof Date?t:isNaN(t)?/^\\d+$/.test(t)?new Date(e(t)):(t=(t||"").trim().replace(/\\.\\d+/,"").replace(/-/,"/").replace(/-/,"/").replace(/(\\d)T(\\d)/,"$1 $2").replace(/Z/," UTC").replace(/([\\+\\-]\\d\\d)\\:?(\\d\\d)/," $1$2"),new Date(t)):new Date(e(t))}function e(t){return parseInt(t)}function n(t,n,r){n=l[n]?n:l[r]?r:"en";for(var o=0,i=t<0?1:0,a=t=Math.abs(t);t>=p[o]&&o<h;o++)t/=p[o];return t=e(t),o*=2,t>(0===o?9:1)&&(o+=1),l[n](t,o,a)[i].replace("%s",t)}function r(e,n){return((n=n?t(n):new Date)-t(e))/1e3}function o(t){for(var e=1,n=0,r=Math.abs(t);t>=p[n]&&n<h;n++)t/=p[n],e*=p[n];return r%=e,r=r?e-r:e,Math.ceil(r)}function i(t){return a(t,"data-timeago")||a(t,"datetime")}function a(t,e){return t.getAttribute?t.getAttribute(e):t.attr?t.attr(e):void 0}function u(t,e){return t.setAttribute?t.setAttribute(m,e):t.attr?t.attr(m,e):void 0}function c(t,e){this.nowDate=t,this.defaultLocale=e||"en"}function d(t,e){return new c(t,e)}var f="second_minute_hour_day_week_month_year".split("_"),s="秒_分钟_小时_天_周_月_年".split("_"),l={en:function(t,e){if(0===e)return["just now","right now"];var n=f[parseInt(e/2)];return t>1&&(n+="s"),[t+" "+n+" ago","in "+t+" "+n]},zh_CN:function(t,e){if(0===e)return["刚刚","片刻后"];var n=s[parseInt(e/2)];return[t+n+"前",t+n+"后"]}},p=[60,60,24,7,365/7/12,12],h=6,m="data-tid",w={};return c.prototype.doRender=function(t,e,i){var a,c=r(e,this.nowDate),d=this;t.innerHTML=n(c,i,this.defaultLocale),w[a=setTimeout(function(){d.doRender(t,e,i),delete w[a]},Math.min(1e3*o(c),2147483647))]=0,u(t,a)},c.prototype.format=function(t,e){return n(r(t,this.nowDate),e,this.defaultLocale)},c.prototype.render=function(t,e){void 0===t.length&&(t=[t]);for(var n=0,r=t.length;n<r;n++)this.doRender(t[n],i(t[n]),e)},c.prototype.setLocale=function(t){this.defaultLocale=t},d.register=function(t,e){l[t]=e},d.cancel=function(t){var e;if(t)(e=a(t,m))&&(clearTimeout(e),delete w[e]);else{for(e in w)clearTimeout(e);w={}}},d});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMC5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90aW1lYWdvLmpzL2Rpc3QvdGltZWFnby5taW4uanM/YTc2MiJdLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz8obW9kdWxlLmV4cG9ydHM9ZSgpLG1vZHVsZS5leHBvcnRzLmRlZmF1bHQ9bW9kdWxlLmV4cG9ydHMpOnQudGltZWFnbz1lKCl9KFwidW5kZWZpbmVkXCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OnRoaXMsZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3JldHVybiB0IGluc3RhbmNlb2YgRGF0ZT90OmlzTmFOKHQpPy9eXFxkKyQvLnRlc3QodCk/bmV3IERhdGUoZSh0KSk6KHQ9KHR8fFwiXCIpLnRyaW0oKS5yZXBsYWNlKC9cXC5cXGQrLyxcIlwiKS5yZXBsYWNlKC8tLyxcIi9cIikucmVwbGFjZSgvLS8sXCIvXCIpLnJlcGxhY2UoLyhcXGQpVChcXGQpLyxcIiQxICQyXCIpLnJlcGxhY2UoL1ovLFwiIFVUQ1wiKS5yZXBsYWNlKC8oW1xcK1xcLV1cXGRcXGQpXFw6PyhcXGRcXGQpLyxcIiAkMSQyXCIpLG5ldyBEYXRlKHQpKTpuZXcgRGF0ZShlKHQpKX1mdW5jdGlvbiBlKHQpe3JldHVybiBwYXJzZUludCh0KX1mdW5jdGlvbiBuKHQsbixyKXtuPWxbbl0/bjpsW3JdP3I6XCJlblwiO2Zvcih2YXIgbz0wLGk9dDwwPzE6MCxhPXQ9TWF0aC5hYnModCk7dD49cFtvXSYmbzxoO28rKyl0Lz1wW29dO3JldHVybiB0PWUodCksbyo9Mix0PigwPT09bz85OjEpJiYobys9MSksbFtuXSh0LG8sYSlbaV0ucmVwbGFjZShcIiVzXCIsdCl9ZnVuY3Rpb24gcihlLG4pe3JldHVybigobj1uP3Qobik6bmV3IERhdGUpLXQoZSkpLzFlM31mdW5jdGlvbiBvKHQpe2Zvcih2YXIgZT0xLG49MCxyPU1hdGguYWJzKHQpO3Q+PXBbbl0mJm48aDtuKyspdC89cFtuXSxlKj1wW25dO3JldHVybiByJT1lLHI9cj9lLXI6ZSxNYXRoLmNlaWwocil9ZnVuY3Rpb24gaSh0KXtyZXR1cm4gYSh0LFwiZGF0YS10aW1lYWdvXCIpfHxhKHQsXCJkYXRldGltZVwiKX1mdW5jdGlvbiBhKHQsZSl7cmV0dXJuIHQuZ2V0QXR0cmlidXRlP3QuZ2V0QXR0cmlidXRlKGUpOnQuYXR0cj90LmF0dHIoZSk6dm9pZCAwfWZ1bmN0aW9uIHUodCxlKXtyZXR1cm4gdC5zZXRBdHRyaWJ1dGU/dC5zZXRBdHRyaWJ1dGUobSxlKTp0LmF0dHI/dC5hdHRyKG0sZSk6dm9pZCAwfWZ1bmN0aW9uIGModCxlKXt0aGlzLm5vd0RhdGU9dCx0aGlzLmRlZmF1bHRMb2NhbGU9ZXx8XCJlblwifWZ1bmN0aW9uIGQodCxlKXtyZXR1cm4gbmV3IGModCxlKX12YXIgZj1cInNlY29uZF9taW51dGVfaG91cl9kYXlfd2Vla19tb250aF95ZWFyXCIuc3BsaXQoXCJfXCIpLHM9XCLnp5Jf5YiG6ZKfX+Wwj+aXtl/lpKlf5ZGoX+aciF/lubRcIi5zcGxpdChcIl9cIiksbD17ZW46ZnVuY3Rpb24odCxlKXtpZigwPT09ZSlyZXR1cm5bXCJqdXN0IG5vd1wiLFwicmlnaHQgbm93XCJdO3ZhciBuPWZbcGFyc2VJbnQoZS8yKV07cmV0dXJuIHQ+MSYmKG4rPVwic1wiKSxbdCtcIiBcIituK1wiIGFnb1wiLFwiaW4gXCIrdCtcIiBcIituXX0semhfQ046ZnVuY3Rpb24odCxlKXtpZigwPT09ZSlyZXR1cm5bXCLliJrliJpcIixcIueJh+WIu+WQjlwiXTt2YXIgbj1zW3BhcnNlSW50KGUvMildO3JldHVyblt0K24rXCLliY1cIix0K24rXCLlkI5cIl19fSxwPVs2MCw2MCwyNCw3LDM2NS83LzEyLDEyXSxoPTYsbT1cImRhdGEtdGlkXCIsdz17fTtyZXR1cm4gYy5wcm90b3R5cGUuZG9SZW5kZXI9ZnVuY3Rpb24odCxlLGkpe3ZhciBhLGM9cihlLHRoaXMubm93RGF0ZSksZD10aGlzO3QuaW5uZXJIVE1MPW4oYyxpLHRoaXMuZGVmYXVsdExvY2FsZSksd1thPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmRvUmVuZGVyKHQsZSxpKSxkZWxldGUgd1thXX0sTWF0aC5taW4oMWUzKm8oYyksMjE0NzQ4MzY0NykpXT0wLHUodCxhKX0sYy5wcm90b3R5cGUuZm9ybWF0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIG4ocih0LHRoaXMubm93RGF0ZSksZSx0aGlzLmRlZmF1bHRMb2NhbGUpfSxjLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24odCxlKXt2b2lkIDA9PT10Lmxlbmd0aCYmKHQ9W3RdKTtmb3IodmFyIG49MCxyPXQubGVuZ3RoO248cjtuKyspdGhpcy5kb1JlbmRlcih0W25dLGkodFtuXSksZSl9LGMucHJvdG90eXBlLnNldExvY2FsZT1mdW5jdGlvbih0KXt0aGlzLmRlZmF1bHRMb2NhbGU9dH0sZC5yZWdpc3Rlcj1mdW5jdGlvbih0LGUpe2xbdF09ZX0sZC5jYW5jZWw9ZnVuY3Rpb24odCl7dmFyIGU7aWYodCkoZT1hKHQsbSkpJiYoY2xlYXJUaW1lb3V0KGUpLGRlbGV0ZSB3W2VdKTtlbHNle2ZvcihlIGluIHcpY2xlYXJUaW1lb3V0KGUpO3c9e319fSxkfSk7Il0sIm1hcHBpbmdzIjoiQUFBQSIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n')},7:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n// CONCATENATED MODULE: ./blocks/amp-mathml/index.js\n\n/**\n * Internal block libraries.\n */\nvar __ = wp.i18n.__;\nvar registerBlockType = wp.blocks.registerBlockType;\nvar PlainText = wp.editor.PlainText;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_mathml = (registerBlockType('amp/amp-mathml', {\n\ttitle: __('AMP MathML', 'amp'),\n\tcategory: 'common',\n\ticon: 'welcome-learn-more',\n\tkeywords: [__('Mathematical formula', 'amp'), __('Scientific content ', 'amp')],\n\n\tattributes: {\n\t\tdataFormula: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-mathml',\n\t\t\tattribute: 'data-formula'\n\t\t}\n\t},\n\n\tedit: function edit(_ref) {\n\t\tvar attributes = _ref.attributes,\n\t\t setAttributes = _ref.setAttributes;\n\t\tvar dataFormula = attributes.dataFormula;\n\n\n\t\treturn wp.element.createElement(PlainText, {\n\t\t\tkey: 'formula',\n\t\t\tvalue: dataFormula,\n\t\t\tplaceholder: __('Insert formula', 'amp'),\n\t\t\tonChange: function onChange(value) {\n\t\t\t\treturn setAttributes({ dataFormula: value });\n\t\t\t}\n\t\t});\n\t},\n\tsave: function save(_ref2) {\n\t\tvar attributes = _ref2.attributes;\n\n\t\tvar mathmlProps = {\n\t\t\t'data-formula': attributes.dataFormula,\n\t\t\tlayout: 'container'\n\t\t};\n\t\treturn wp.element.createElement('amp-mathml', mathmlProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/utils.js\nvar utils_ = wp.i18n.__;\nvar _wp$components = wp.components,\n TextControl = _wp$components.TextControl,\n SelectControl = _wp$components.SelectControl,\n Notice = _wp$components.Notice,\n Placeholder = _wp$components.Placeholder;\n\n/**\n * Display media placeholder.\n *\n * @param {string} name Block's name.\n * @param {string|boolean} url URL.\n * @return {XML} Placeholder.\n */\n\nfunction getMediaPlaceholder(name, url) {\n\treturn wp.element.createElement(\n\t\tPlaceholder,\n\t\t{ label: name },\n\t\twp.element.createElement(\n\t\t\t\"p\",\n\t\t\t{ className: \"components-placeholder__error\" },\n\t\t\turl\n\t\t),\n\t\twp.element.createElement(\n\t\t\t\"p\",\n\t\t\t{ className: \"components-placeholder__error\" },\n\t\t\tutils_('Previews for this are unavailable in the editor, sorry!', 'amp')\n\t\t)\n\t);\n}\n\n/**\n * Layout controls for AMP blocks' attributes: layout, width, height.\n *\n * @param {Object} props Props.\n * @param {Array} ampLayoutOptions Layout options.\n * @return {[XML,*,XML,*,XML]} Controls.\n */\nfunction getLayoutControls(props, ampLayoutOptions) {\n\t// @todo Move getting ampLayoutOptions to utils as well.\n\tvar attributes = props.attributes,\n\t setAttributes = props.setAttributes;\n\tvar ampLayout = attributes.ampLayout,\n\t height = attributes.height,\n\t width = attributes.width;\n\n\tvar showHeightNotice = !height && ('fixed' === ampLayout || 'fixed-height' === ampLayout);\n\tvar showWidthNotice = !width && 'fixed' === ampLayout;\n\n\treturn [wp.element.createElement(SelectControl, {\n\t\tkey: \"ampLayout\",\n\t\tlabel: utils_('Layout', 'amp'),\n\t\tvalue: ampLayout,\n\t\toptions: ampLayoutOptions,\n\t\tonChange: function onChange(value) {\n\t\t\treturn setAttributes({ ampLayout: value });\n\t\t}\n\t}), showWidthNotice && wp.element.createElement(\n\t\tNotice,\n\t\t{ key: \"showWidthNotice\", status: \"error\", isDismissible: false },\n\t\twp.i18n.sprintf(\n\t\t/* translators: %s is the layout name */\n\t\tutils_('Width is required for %s layout', 'amp'), ampLayout)\n\t), wp.element.createElement(TextControl, {\n\t\tkey: \"width\",\n\t\ttype: \"number\",\n\t\tlabel: utils_('Width (px)', 'amp'),\n\t\tvalue: width !== undefined ? width : '',\n\t\tonChange: function onChange(value) {\n\t\t\treturn setAttributes({ width: value });\n\t\t}\n\t}), showHeightNotice && wp.element.createElement(\n\t\tNotice,\n\t\t{ key: \"showHeightNotice\", status: \"error\", isDismissible: false },\n\t\twp.i18n.sprintf(\n\t\t/* translators: %s is the layout name */\n\t\tutils_('Height is required for %s layout', 'amp'), ampLayout)\n\t), wp.element.createElement(TextControl, {\n\t\tkey: \"height\",\n\t\ttype: \"number\",\n\t\tlabel: utils_('Height (px)', 'amp'),\n\t\tvalue: height,\n\t\tonChange: function onChange(value) {\n\t\t\treturn setAttributes({ height: value });\n\t\t}\n\t})];\n}\n// EXTERNAL MODULE: ./node_modules/timeago.js/dist/timeago.min.js\nvar timeago_min = __webpack_require__(0);\nvar timeago_min_default = /*#__PURE__*/__webpack_require__.n(timeago_min);\n\n// CONCATENATED MODULE: ./blocks/amp-timeago/index.js\n/* global moment */\n\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_timeago_ = wp.i18n.__;\nvar amp_timeago_registerBlockType = wp.blocks.registerBlockType;\nvar _wp$editor = wp.editor,\n InspectorControls = _wp$editor.InspectorControls,\n BlockAlignmentToolbar = _wp$editor.BlockAlignmentToolbar,\n BlockControls = _wp$editor.BlockControls;\nvar amp_timeago_wp$components = wp.components,\n DateTimePicker = amp_timeago_wp$components.DateTimePicker,\n PanelBody = amp_timeago_wp$components.PanelBody,\n amp_timeago_TextControl = amp_timeago_wp$components.TextControl;\nvar Fragment = wp.element.Fragment;\n\n\n\n/**\n * Register block.\n */\n/* harmony default export */ var amp_timeago = (amp_timeago_registerBlockType('amp/amp-timeago', {\n\ttitle: amp_timeago_('AMP Timeago'),\n\tcategory: 'common',\n\ticon: 'backup',\n\tkeywords: [amp_timeago_('Time difference'), amp_timeago_('Time ago'), amp_timeago_('Date')],\n\n\tattributes: {\n\t\talign: {\n\t\t\ttype: 'string'\n\t\t},\n\t\tcutoff: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-timeago',\n\t\t\tattribute: 'cutoff'\n\t\t},\n\t\tdateTime: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-timeago',\n\t\t\tattribute: 'datetime'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'fixed-height',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-timeago',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-timeago',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 20,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-timeago',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tgetEditWrapperProps: function getEditWrapperProps(attributes) {\n\t\tvar align = attributes.align;\n\n\t\tif ('left' === align || 'right' === align || 'center' === align) {\n\t\t\treturn { 'data-align': align };\n\t\t}\n\t},\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar align = attributes.align,\n\t\t cutoff = attributes.cutoff;\n\n\t\tvar timeAgo = void 0;\n\t\tif (attributes.dateTime) {\n\t\t\tif (attributes.cutoff && parseInt(attributes.cutoff) < Math.abs(moment(attributes.dateTime).diff(moment(), 'seconds'))) {\n\t\t\t\ttimeAgo = moment(attributes.dateTime).format('dddd D MMMM HH:mm');\n\t\t\t} else {\n\t\t\t\ttimeAgo = timeago_min_default()().format(attributes.dateTime);\n\t\t\t}\n\t\t} else {\n\t\t\ttimeAgo = timeago_min_default()().format(new Date());\n\t\t\tsetAttributes({ dateTime: moment(moment(), moment.ISO_8601, true).format() });\n\t\t}\n\n\t\tvar ampLayoutOptions = [{ value: '', label: amp_timeago_('Responsive', 'amp') }, { value: 'fixed', label: amp_timeago_('Fixed', 'amp') }, { value: 'fixed-height', label: amp_timeago_('Fixed height', 'amp') }];\n\n\t\treturn wp.element.createElement(\n\t\t\tFragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tInspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tPanelBody,\n\t\t\t\t\t{ title: amp_timeago_('AMP Timeago Settings') },\n\t\t\t\t\twp.element.createElement(DateTimePicker, {\n\t\t\t\t\t\tlocale: 'en',\n\t\t\t\t\t\tcurrentDate: attributes.dateTime || moment(),\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dateTime: moment(value, moment.ISO_8601, true).format() });\n\t\t\t\t\t\t} // eslint-disable-line\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions),\n\t\t\t\t\twp.element.createElement(amp_timeago_TextControl, {\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tclassName: 'blocks-amp-timeout__cutoff',\n\t\t\t\t\t\tlabel: amp_timeago_('Cutoff (seconds)'),\n\t\t\t\t\t\tvalue: cutoff !== undefined ? cutoff : '',\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ cutoff: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\tBlockControls,\n\t\t\t\t{ key: 'controls' },\n\t\t\t\twp.element.createElement(BlockAlignmentToolbar, {\n\t\t\t\t\tvalue: align,\n\t\t\t\t\tonChange: function onChange(nextAlign) {\n\t\t\t\t\t\tsetAttributes({ align: nextAlign });\n\t\t\t\t\t},\n\t\t\t\t\tcontrols: ['left', 'center', 'right']\n\t\t\t\t})\n\t\t\t),\n\t\t\twp.element.createElement(\n\t\t\t\t'time',\n\t\t\t\t{ key: 'timeago', dateTime: attributes.dateTime },\n\t\t\t\ttimeAgo\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\n\t\tvar timeagoProps = {\n\t\t\tlayout: 'responsive',\n\t\t\tclassName: 'align' + (attributes.align || 'none'),\n\t\t\tdatetime: attributes.dateTime,\n\t\t\tlocale: 'en'\n\t\t};\n\t\tif (attributes.cutoff) {\n\t\t\ttimeagoProps.cutoff = attributes.cutoff;\n\t\t}\n\t\tif (attributes.ampLayout) {\n\t\t\tswitch (attributes.ampLayout) {\n\t\t\t\tcase 'fixed-height':\n\t\t\t\t\tif (attributes.height) {\n\t\t\t\t\t\ttimeagoProps.height = attributes.height;\n\t\t\t\t\t\ttimeagoProps.layout = attributes.ampLayout;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'fixed':\n\t\t\t\t\tif (attributes.height && attributes.width) {\n\t\t\t\t\t\ttimeagoProps.height = attributes.height;\n\t\t\t\t\t\ttimeagoProps.width = attributes.width;\n\t\t\t\t\t\ttimeagoProps.layout = attributes.ampLayout;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\t'amp-timeago',\n\t\t\ttimeagoProps,\n\t\t\tmoment(attributes.dateTime).format('dddd D MMMM HH:mm')\n\t\t);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-o2-player/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_o2_player_ = wp.i18n.__;\nvar amp_o2_player_registerBlockType = wp.blocks.registerBlockType;\nvar amp_o2_player_InspectorControls = wp.editor.InspectorControls;\nvar amp_o2_player_Fragment = wp.element.Fragment;\nvar amp_o2_player_wp$components = wp.components,\n amp_o2_player_PanelBody = amp_o2_player_wp$components.PanelBody,\n amp_o2_player_TextControl = amp_o2_player_wp$components.TextControl,\n amp_o2_player_Placeholder = amp_o2_player_wp$components.Placeholder,\n ToggleControl = amp_o2_player_wp$components.ToggleControl;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_o2_player = (amp_o2_player_registerBlockType('amp/amp-o2-player', {\n\ttitle: amp_o2_player_('AMP O2 Player', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_o2_player_('Embed', 'amp'), amp_o2_player_('AOL O2Player', 'amp')],\n\n\t// @todo Add other useful macro toggles, e.g. showing relevant content.\n\tattributes: {\n\t\tdataPid: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'data-pid'\n\t\t},\n\t\tdataVid: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'data-vid'\n\t\t},\n\t\tdataBcid: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'data-bcid'\n\t\t},\n\t\tdataBid: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'data-bid'\n\t\t},\n\t\tautoPlay: {\n\t\t\tdefault: false\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'responsive',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tdefault: 600,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-o2-player',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar autoPlay = attributes.autoPlay,\n\t\t dataPid = attributes.dataPid,\n\t\t dataVid = attributes.dataVid,\n\t\t dataBcid = attributes.dataBcid,\n\t\t dataBid = attributes.dataBid;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_o2_player_('Responsive', 'amp') }, { value: 'fixed-height', label: amp_o2_player_('Fixed height', 'amp') }, { value: 'fixed', label: amp_o2_player_('Fixed', 'amp') }, { value: 'fill', label: amp_o2_player_('Fill', 'amp') }, { value: 'flex-item', label: amp_o2_player_('Flex-item', 'amp') }, { value: 'nodisplay', label: amp_o2_player_('No Display', 'amp') }];\n\t\tvar url = false;\n\t\tif (dataPid && (dataBcid || dataVid)) {\n\t\t\turl = 'https://delivery.vidible.tv/htmlembed/pid=' + dataPid + '/';\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_o2_player_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_o2_player_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_o2_player_PanelBody,\n\t\t\t\t\t{ title: amp_o2_player_('O2 Player Settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_o2_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_o2_player_('Player ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPid,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPid: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_o2_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_o2_player_('Buyer Company ID (either buyer or video ID is required)', 'amp'),\n\t\t\t\t\t\tvalue: dataBcid,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataBcid: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_o2_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_o2_player_('Video ID (either buyer or video ID is required)', 'amp'),\n\t\t\t\t\t\tvalue: dataVid,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataVid: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_o2_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_o2_player_('Playlist ID', 'amp'),\n\t\t\t\t\t\tvalue: dataBid,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataBid: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(ToggleControl, {\n\t\t\t\t\t\tlabel: amp_o2_player_('Autoplay', 'amp'),\n\t\t\t\t\t\tchecked: autoPlay,\n\t\t\t\t\t\tonChange: function onChange() {\n\t\t\t\t\t\t\treturn setAttributes({ autoPlay: !autoPlay });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\turl && getMediaPlaceholder(amp_o2_player_('O2 Player', 'amp'), url),\n\t\t\t!url && wp.element.createElement(\n\t\t\t\tamp_o2_player_Placeholder,\n\t\t\t\t{ label: amp_o2_player_('O2 Player', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_o2_player_('Add required data to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\n\t\tvar o2Props = {\n\t\t\tlayout: attributes.ampLayout,\n\t\t\theight: attributes.height,\n\t\t\t'data-pid': attributes.dataPid\n\t\t};\n\t\tif ('fixed-height' !== attributes.ampLayout && attributes.width) {\n\t\t\to2Props.width = attributes.width;\n\t\t}\n\t\tif (!attributes.autoPlay) {\n\t\t\to2Props['data-macros'] = 'm.playback=click';\n\t\t}\n\t\tif (attributes.dataVid) {\n\t\t\to2Props['data-vid'] = attributes.dataVid;\n\t\t} else if (attributes.dataBcid) {\n\t\t\to2Props['data-bcid'] = attributes.dataBcid;\n\t\t}\n\t\tif (attributes.dataBid) {\n\t\t\to2Props['data-bid'] = attributes.dataBid;\n\t\t}\n\t\treturn wp.element.createElement('amp-o2-player', o2Props);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-ooyala-player/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_ooyala_player_ = wp.i18n.__;\nvar amp_ooyala_player_registerBlockType = wp.blocks.registerBlockType;\nvar amp_ooyala_player_InspectorControls = wp.editor.InspectorControls;\nvar amp_ooyala_player_Fragment = wp.element.Fragment;\nvar amp_ooyala_player_wp$components = wp.components,\n amp_ooyala_player_PanelBody = amp_ooyala_player_wp$components.PanelBody,\n amp_ooyala_player_TextControl = amp_ooyala_player_wp$components.TextControl,\n amp_ooyala_player_SelectControl = amp_ooyala_player_wp$components.SelectControl,\n amp_ooyala_player_Placeholder = amp_ooyala_player_wp$components.Placeholder;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_ooyala_player = (amp_ooyala_player_registerBlockType('amp/amp-ooyala-player', {\n\ttitle: amp_ooyala_player_('AMP Ooyala Player', 'amp'),\n\tdescription: amp_ooyala_player_('Displays an Ooyala video.', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_ooyala_player_('Embed', 'amp'), amp_ooyala_player_('Ooyala video', 'amp')],\n\n\t// @todo Add data-config attribute?\n\tattributes: {\n\t\tdataEmbedCode: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'data-embedcode'\n\t\t},\n\t\tdataPlayerId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'data-playerid'\n\t\t},\n\t\tdataPcode: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'data-pcode'\n\t\t},\n\t\tdataPlayerVersion: {\n\t\t\tdefault: 'v3',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'data-playerversion'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'responsive',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tdefault: 600,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ooyala-player',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar dataEmbedCode = attributes.dataEmbedCode,\n\t\t dataPlayerId = attributes.dataPlayerId,\n\t\t dataPcode = attributes.dataPcode,\n\t\t dataPlayerVersion = attributes.dataPlayerVersion;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_ooyala_player_('Responsive', 'amp') }, { value: 'fixed', label: amp_ooyala_player_('Fixed', 'amp') }, { value: 'fill', label: amp_ooyala_player_('Fill', 'amp') }, { value: 'flex-item', label: amp_ooyala_player_('Flex-item', 'amp') }];\n\t\tvar url = false;\n\t\tif (dataEmbedCode && dataPlayerId && dataPcode) {\n\t\t\turl = 'http://cf.c.ooyala.com/' + dataEmbedCode;\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_ooyala_player_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_ooyala_player_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_ooyala_player_PanelBody,\n\t\t\t\t\t{ title: amp_ooyala_player_('Ooyala settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_ooyala_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_ooyala_player_('Video embed code (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataEmbedCode,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataEmbedCode: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_ooyala_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_ooyala_player_('Player ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPlayerId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlayerId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_ooyala_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_ooyala_player_('Provider code for the account (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPcode,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPcode: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_ooyala_player_SelectControl, {\n\t\t\t\t\t\tlabel: amp_ooyala_player_('Player version', 'amp'),\n\t\t\t\t\t\tvalue: dataPlayerVersion,\n\t\t\t\t\t\toptions: [{ value: 'v3', label: amp_ooyala_player_('V3', 'amp') }, { value: 'v4', label: amp_ooyala_player_('V4', 'amp') }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlayerVersion: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\turl && getMediaPlaceholder(amp_ooyala_player_('Ooyala Player', 'amp'), url),\n\t\t\t!url && wp.element.createElement(\n\t\t\t\tamp_ooyala_player_Placeholder,\n\t\t\t\t{ label: amp_ooyala_player_('Ooyala Player', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_ooyala_player_('Add required data to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\t\tvar dataEmbedCode = attributes.dataEmbedCode,\n\t\t dataPlayerId = attributes.dataPlayerId,\n\t\t dataPcode = attributes.dataPcode,\n\t\t dataPlayerVersion = attributes.dataPlayerVersion,\n\t\t ampLayout = attributes.ampLayout,\n\t\t height = attributes.height,\n\t\t width = attributes.width;\n\n\n\t\tvar ooyalaProps = {\n\t\t\tlayout: ampLayout,\n\t\t\theight: height,\n\t\t\t'data-embedcode': dataEmbedCode,\n\t\t\t'data-playerid': dataPlayerId,\n\t\t\t'data-pcode': dataPcode,\n\t\t\t'data-playerversion': dataPlayerVersion\n\t\t};\n\t\tif ('fixed-height' !== ampLayout && width) {\n\t\t\tooyalaProps.width = width;\n\t\t}\n\t\treturn wp.element.createElement('amp-ooyala-player', ooyalaProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-reach-player/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_reach_player_ = wp.i18n.__;\nvar amp_reach_player_registerBlockType = wp.blocks.registerBlockType;\nvar amp_reach_player_InspectorControls = wp.editor.InspectorControls;\nvar amp_reach_player_Fragment = wp.element.Fragment;\nvar amp_reach_player_wp$components = wp.components,\n amp_reach_player_PanelBody = amp_reach_player_wp$components.PanelBody,\n amp_reach_player_TextControl = amp_reach_player_wp$components.TextControl,\n amp_reach_player_Placeholder = amp_reach_player_wp$components.Placeholder;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_reach_player = (amp_reach_player_registerBlockType('amp/amp-reach-player', {\n\ttitle: amp_reach_player_('AMP Reach Player', 'amp'),\n\tdescription: amp_reach_player_('Displays the Reach Player configured in the Beachfront Reach platform.', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_reach_player_('Embed', 'amp'), amp_reach_player_('Beachfront Reach video', 'amp')],\n\n\tattributes: {\n\t\tdataEmbedId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-reach-player',\n\t\t\tattribute: 'data-embed-id'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'fixed-height',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-reach-player',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tdefault: 600,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-reach-player',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-reach-player',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar dataEmbedId = attributes.dataEmbedId;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_reach_player_('Responsive', 'amp') }, { value: 'fixed-height', label: amp_reach_player_('Fixed Height', 'amp') }, { value: 'fixed', label: amp_reach_player_('Fixed', 'amp') }, { value: 'fill', label: amp_reach_player_('Fill', 'amp') }, { value: 'flex-item', label: amp_reach_player_('Flex-item', 'amp') }];\n\t\tvar url = false;\n\t\tif (dataEmbedId) {\n\t\t\turl = 'https://media-cdn.beachfrontreach.com/acct_1/video/';\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_reach_player_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_reach_player_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_reach_player_PanelBody,\n\t\t\t\t\t{ title: amp_reach_player_('Reach settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_reach_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_reach_player_('The Reach player embed id (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataEmbedId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataEmbedId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\turl && getMediaPlaceholder(amp_reach_player_('Reach Player', 'amp'), url),\n\t\t\t!url && wp.element.createElement(\n\t\t\t\tamp_reach_player_Placeholder,\n\t\t\t\t{ label: amp_reach_player_('Reach Player', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_reach_player_('Add Reach player embed ID to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\t\tvar dataEmbedId = attributes.dataEmbedId,\n\t\t ampLayout = attributes.ampLayout,\n\t\t height = attributes.height,\n\t\t width = attributes.width;\n\n\n\t\tvar reachProps = {\n\t\t\tlayout: ampLayout,\n\t\t\theight: height,\n\t\t\t'data-embed-id': dataEmbedId\n\t\t};\n\t\tif ('fixed-height' !== ampLayout && width) {\n\t\t\treachProps.width = width;\n\t\t}\n\t\treturn wp.element.createElement('amp-reach-player', reachProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-springboard-player/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_springboard_player_ = wp.i18n.__;\nvar amp_springboard_player_registerBlockType = wp.blocks.registerBlockType;\nvar amp_springboard_player_InspectorControls = wp.editor.InspectorControls;\nvar amp_springboard_player_Fragment = wp.element.Fragment;\nvar amp_springboard_player_wp$components = wp.components,\n amp_springboard_player_PanelBody = amp_springboard_player_wp$components.PanelBody,\n amp_springboard_player_TextControl = amp_springboard_player_wp$components.TextControl,\n amp_springboard_player_SelectControl = amp_springboard_player_wp$components.SelectControl,\n amp_springboard_player_Placeholder = amp_springboard_player_wp$components.Placeholder;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_springboard_player = (amp_springboard_player_registerBlockType('amp/amp-springboard-player', {\n\ttitle: amp_springboard_player_('AMP Springboard Player', 'amp'),\n\tdescription: amp_springboard_player_('Displays the Springboard Player used in the Springboard Video Platform', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_springboard_player_('Embed', 'amp')],\n\n\tattributes: {\n\t\tdataSiteId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'data-site-id'\n\t\t},\n\t\tdataContentId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'data-content-id'\n\t\t},\n\t\tdataPlayerId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'data-player-id'\n\t\t},\n\t\tdataDomain: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'data-domain'\n\t\t},\n\t\tdataMode: {\n\t\t\tdefault: 'video',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'data-mode'\n\t\t},\n\t\tdataItems: {\n\t\t\tdefault: 1,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'data-items'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'responsive',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tdefault: 600,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-springboard-player',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar dataSiteId = attributes.dataSiteId,\n\t\t dataPlayerId = attributes.dataPlayerId,\n\t\t dataContentId = attributes.dataContentId,\n\t\t dataDomain = attributes.dataDomain,\n\t\t dataMode = attributes.dataMode,\n\t\t dataItems = attributes.dataItems;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_springboard_player_('Responsive', 'amp') }, { value: 'fixed', label: amp_springboard_player_('Fixed', 'amp') }, { value: 'fill', label: amp_springboard_player_('Fill', 'amp') }, { value: 'flex-item', label: amp_springboard_player_('Flex-item', 'amp') }];\n\t\tvar url = false;\n\t\tif (dataSiteId && dataContentId && dataDomain && dataMode && dataItems) {\n\t\t\turl = 'https://cms.springboardplatform.com/embed_iframe/';\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_springboard_player_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_springboard_player_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_springboard_player_PanelBody,\n\t\t\t\t\t{ title: amp_springboard_player_('Springboard Player Settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_springboard_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_springboard_player_('SprintBoard site ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataSiteId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataSiteId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_springboard_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_springboard_player_('Player content ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataContentId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataContentId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_springboard_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_springboard_player_('Player ID', 'amp'),\n\t\t\t\t\t\tvalue: dataPlayerId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlayerId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_springboard_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_springboard_player_('Springboard partner domain', 'amp'),\n\t\t\t\t\t\tvalue: dataDomain,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataDomain: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_springboard_player_SelectControl, {\n\t\t\t\t\t\tlabel: amp_springboard_player_('Mode (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataMode,\n\t\t\t\t\t\toptions: [{ value: 'video', label: amp_springboard_player_('Video', 'amp') }, { value: 'playlist', label: amp_springboard_player_('Playlist', 'amp') }],\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataMode: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_springboard_player_TextControl, {\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tlabel: amp_springboard_player_('Number of video is playlist (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataItems,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataItems: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\turl && getMediaPlaceholder(amp_springboard_player_('Springboard Player', 'amp'), url),\n\t\t\t!url && wp.element.createElement(\n\t\t\t\tamp_springboard_player_Placeholder,\n\t\t\t\t{ label: amp_springboard_player_('Springboard Player', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_springboard_player_('Add required data to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\t\tvar dataSiteId = attributes.dataSiteId,\n\t\t dataPlayerId = attributes.dataPlayerId,\n\t\t dataContentId = attributes.dataContentId,\n\t\t dataDomain = attributes.dataDomain,\n\t\t dataMode = attributes.dataMode,\n\t\t dataItems = attributes.dataItems,\n\t\t ampLayout = attributes.ampLayout,\n\t\t height = attributes.height,\n\t\t width = attributes.width;\n\n\t\tvar springboardProps = {\n\t\t\tlayout: ampLayout,\n\t\t\theight: height,\n\t\t\t'data-site-id': dataSiteId,\n\t\t\t'data-mode': dataMode,\n\t\t\t'data-content-id': dataContentId,\n\t\t\t'data-player-id': dataPlayerId,\n\t\t\t'data-domain': dataDomain,\n\t\t\t'data-items': dataItems\n\t\t};\n\t\tif ('fixed-height' !== ampLayout && width) {\n\t\t\tspringboardProps.width = attributes.width;\n\t\t}\n\t\treturn wp.element.createElement('amp-springboard-player', springboardProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-jwplayer/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_jwplayer_ = wp.i18n.__;\nvar amp_jwplayer_registerBlockType = wp.blocks.registerBlockType;\nvar amp_jwplayer_InspectorControls = wp.editor.InspectorControls;\nvar amp_jwplayer_Fragment = wp.element.Fragment;\nvar amp_jwplayer_wp$components = wp.components,\n amp_jwplayer_PanelBody = amp_jwplayer_wp$components.PanelBody,\n amp_jwplayer_TextControl = amp_jwplayer_wp$components.TextControl,\n amp_jwplayer_Placeholder = amp_jwplayer_wp$components.Placeholder;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_jwplayer = (amp_jwplayer_registerBlockType('amp/amp-jwplayer', {\n\ttitle: amp_jwplayer_('AMP JW Player', 'amp'),\n\tdescription: amp_jwplayer_('Displays a cloud-hosted JW Player.', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_jwplayer_('Embed', 'amp')],\n\n\tattributes: {\n\t\tdataPlayerId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-jwplayer',\n\t\t\tattribute: 'data-player-id'\n\t\t},\n\t\tdataMediaId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-jwplayer',\n\t\t\tattribute: 'data-media-id'\n\t\t},\n\t\tdataPlaylistId: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-jwplayer',\n\t\t\tattribute: 'data-playlist-id'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'responsive',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-jwplayer',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tdefault: 600,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-jwplayer',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-jwplayer',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar dataPlayerId = attributes.dataPlayerId,\n\t\t dataMediaId = attributes.dataMediaId,\n\t\t dataPlaylistId = attributes.dataPlaylistId;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_jwplayer_('Responsive', 'amp') }, { value: 'fixed-height', label: amp_jwplayer_('Fixed height', 'amp') }, { value: 'fixed', label: amp_jwplayer_('Fixed', 'amp') }, { value: 'fill', label: amp_jwplayer_('Fill', 'amp') }, { value: 'flex-item', label: amp_jwplayer_('Flex-item', 'amp') }, { value: 'nodisplay', label: amp_jwplayer_('No Display', 'amp') }];\n\t\tvar url = false;\n\t\tif (dataPlayerId && (dataMediaId || dataPlaylistId)) {\n\t\t\tif (dataPlaylistId) {\n\t\t\t\turl = 'https://content.jwplatform.com/players/' + dataPlaylistId + '-' + dataPlayerId;\n\t\t\t} else {\n\t\t\t\turl = 'https://content.jwplatform.com/players/' + dataMediaId + '-' + dataPlayerId;\n\t\t\t}\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_jwplayer_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_jwplayer_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_jwplayer_PanelBody,\n\t\t\t\t\t{ title: amp_jwplayer_('JW Player Settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_jwplayer_TextControl, {\n\t\t\t\t\t\tlabel: amp_jwplayer_('Player ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPlayerId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlayerId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_jwplayer_TextControl, {\n\t\t\t\t\t\tlabel: amp_jwplayer_('Media ID (required if playlist ID not set)', 'amp'),\n\t\t\t\t\t\tvalue: dataMediaId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataMediaId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_jwplayer_TextControl, {\n\t\t\t\t\t\tlabel: amp_jwplayer_('Playlist ID (required if media ID not set)', 'amp'),\n\t\t\t\t\t\tvalue: dataPlaylistId,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlaylistId: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\turl && getMediaPlaceholder(amp_jwplayer_('JW Player', 'amp'), url),\n\t\t\t!url && wp.element.createElement(\n\t\t\t\tamp_jwplayer_Placeholder,\n\t\t\t\t{ label: amp_jwplayer_('JW Player', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_jwplayer_('Add required data to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\n\t\tvar jwProps = {\n\t\t\tlayout: attributes.ampLayout,\n\t\t\theight: attributes.height,\n\t\t\t'data-player-id': attributes.dataPlayerId\n\t\t};\n\t\tif ('fixed-height' !== attributes.ampLayout && attributes.width) {\n\t\t\tjwProps.width = attributes.width;\n\t\t}\n\t\tif (attributes.dataPlaylistId) {\n\t\t\tjwProps['data-playlist-id'] = attributes.dataPlaylistId;\n\t\t}\n\t\tif (attributes.dataMediaId) {\n\t\t\tjwProps['data-media-id'] = attributes.dataMediaId;\n\t\t}\n\t\treturn wp.element.createElement('amp-jwplayer', jwProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-brid-player/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_brid_player_ = wp.i18n.__;\nvar amp_brid_player_registerBlockType = wp.blocks.registerBlockType;\nvar amp_brid_player_InspectorControls = wp.editor.InspectorControls;\nvar amp_brid_player_Fragment = wp.element.Fragment;\nvar amp_brid_player_wp$components = wp.components,\n amp_brid_player_PanelBody = amp_brid_player_wp$components.PanelBody,\n amp_brid_player_TextControl = amp_brid_player_wp$components.TextControl,\n amp_brid_player_Placeholder = amp_brid_player_wp$components.Placeholder,\n amp_brid_player_ToggleControl = amp_brid_player_wp$components.ToggleControl;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_brid_player = (amp_brid_player_registerBlockType('amp/amp-brid-player', {\n\ttitle: amp_brid_player_('AMP Brid Player', 'amp'),\n\tdescription: amp_brid_player_('Displays the Brid Player used in Brid.tv Video Platform.', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_brid_player_('Embed', 'amp')],\n\n\tattributes: {\n\t\tautoPlay: {\n\t\t\ttype: 'boolean'\n\t\t},\n\t\tdataPartner: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'data-partner'\n\t\t},\n\t\tdataPlayer: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'data-player'\n\t\t},\n\t\tdataVideo: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'data-video'\n\t\t},\n\t\tdataPlaylist: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'data-playlist'\n\t\t},\n\t\tdataOutstream: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'data-outstream'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'responsive',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\ttype: 'number',\n\t\t\tdefault: 600\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-brid-player',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar autoPlay = attributes.autoPlay,\n\t\t dataPartner = attributes.dataPartner,\n\t\t dataPlayer = attributes.dataPlayer,\n\t\t dataVideo = attributes.dataVideo,\n\t\t dataPlaylist = attributes.dataPlaylist,\n\t\t dataOutstream = attributes.dataOutstream;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_brid_player_('Responsive', 'amp') }, { value: 'fixed-height', label: amp_brid_player_('Fixed height', 'amp') }, { value: 'fixed', label: amp_brid_player_('Fixed', 'amp') }, { value: 'fill', label: amp_brid_player_('Fill', 'amp') }, { value: 'flex-item', label: amp_brid_player_('Flex-item', 'amp') }, { value: 'nodisplay', label: amp_brid_player_('No Display', 'amp') }];\n\t\tvar url = false;\n\t\tif (dataPartner && dataPlayer && (dataVideo || dataPlaylist || dataOutstream)) {\n\t\t\turl = 'http://cdn.brid.tv/live/partners/' + dataPartner;\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_brid_player_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_brid_player_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_brid_player_PanelBody,\n\t\t\t\t\t{ title: amp_brid_player_('Brid Player Settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_brid_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_brid_player_('Brid.tv partner ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPartner,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPartner: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_brid_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_brid_player_('Brid.tv player ID (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPlayer,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlayer: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_brid_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_brid_player_('Video ID (one of video / playlist / outstream ID is required)', 'amp'),\n\t\t\t\t\t\tvalue: dataVideo,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataVideo: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_brid_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_brid_player_('Outstream unit ID (one of video / playlist / outstream ID is required)', 'amp'),\n\t\t\t\t\t\tvalue: dataOutstream,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataOutstream: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_brid_player_TextControl, {\n\t\t\t\t\t\tlabel: amp_brid_player_('Playlist ID (one of video / playlist / outstream ID is required)', 'amp'),\n\t\t\t\t\t\tvalue: dataPlaylist,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPlaylist: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_brid_player_ToggleControl, {\n\t\t\t\t\t\tlabel: amp_brid_player_('Autoplay', 'amp'),\n\t\t\t\t\t\tchecked: autoPlay,\n\t\t\t\t\t\tonChange: function onChange() {\n\t\t\t\t\t\t\treturn setAttributes({ autoPlay: !autoPlay });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\turl && getMediaPlaceholder(amp_brid_player_('Brid Player', 'amp'), url),\n\t\t\t!url && wp.element.createElement(\n\t\t\t\tamp_brid_player_Placeholder,\n\t\t\t\t{ label: amp_brid_player_('Brid Player', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_brid_player_('Add required data to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\n\t\tvar bridProps = {\n\t\t\tlayout: attributes.ampLayout,\n\t\t\theight: attributes.height,\n\t\t\t'data-player': attributes.dataPlayer,\n\t\t\t'data-partner': attributes.dataPartner\n\t\t};\n\t\tif ('fixed-height' !== attributes.ampLayout && attributes.width) {\n\t\t\tbridProps.width = attributes.width;\n\t\t}\n\t\tif (attributes.dataPlaylist) {\n\t\t\tbridProps['data-playlist'] = attributes.dataPlaylist;\n\t\t}\n\t\tif (attributes.dataVideo) {\n\t\t\tbridProps['data-video'] = attributes.dataVideo;\n\t\t}\n\t\tif (attributes.dataOutstream) {\n\t\t\tbridProps['data-outstream'] = attributes.dataOutstream;\n\t\t}\n\t\tif (attributes.autoPlay) {\n\t\t\tbridProps.autoplay = attributes.autoPlay;\n\t\t}\n\t\treturn wp.element.createElement('amp-brid-player', bridProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/amp-ima-video/index.js\n/**\n * Helper methods for blocks.\n */\n\n\n/**\n * Internal block libraries.\n */\nvar amp_ima_video_ = wp.i18n.__;\nvar amp_ima_video_registerBlockType = wp.blocks.registerBlockType;\nvar amp_ima_video_InspectorControls = wp.editor.InspectorControls;\nvar amp_ima_video_Fragment = wp.element.Fragment;\nvar amp_ima_video_wp$components = wp.components,\n amp_ima_video_PanelBody = amp_ima_video_wp$components.PanelBody,\n amp_ima_video_TextControl = amp_ima_video_wp$components.TextControl,\n amp_ima_video_Placeholder = amp_ima_video_wp$components.Placeholder,\n amp_ima_video_ToggleControl = amp_ima_video_wp$components.ToggleControl;\n\n/**\n * Register block.\n */\n\n/* harmony default export */ var amp_ima_video = (amp_ima_video_registerBlockType('amp/amp-ima-video', {\n\ttitle: amp_ima_video_('AMP IMA Video', 'amp'),\n\tdescription: amp_ima_video_('Embeds a video player for instream video ads that are integrated with the IMA SDK', 'amp'),\n\tcategory: 'embed',\n\ticon: 'embed-generic',\n\tkeywords: [amp_ima_video_('Embed', 'amp')],\n\n\t// @todo Perhaps later add subtitles option and additional source options?\n\tattributes: {\n\t\tdataDelayAdRequest: {\n\t\t\tdefault: false,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'data-delay-ad-request'\n\t\t},\n\t\tdataTag: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'data-tag'\n\t\t},\n\t\tdataSrc: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'data-src'\n\t\t},\n\t\tdataPoster: {\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'data-poster'\n\t\t},\n\t\tampLayout: {\n\t\t\tdefault: 'responsive',\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'layout'\n\t\t},\n\t\twidth: {\n\t\t\tdefault: 600,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'width'\n\t\t},\n\t\theight: {\n\t\t\tdefault: 400,\n\t\t\tsource: 'attribute',\n\t\t\tselector: 'amp-ima-video',\n\t\t\tattribute: 'height'\n\t\t}\n\t},\n\n\tedit: function edit(props) {\n\t\tvar attributes = props.attributes,\n\t\t setAttributes = props.setAttributes;\n\t\tvar dataDelayAdRequest = attributes.dataDelayAdRequest,\n\t\t dataTag = attributes.dataTag,\n\t\t dataSrc = attributes.dataSrc,\n\t\t dataPoster = attributes.dataPoster;\n\n\t\tvar ampLayoutOptions = [{ value: 'responsive', label: amp_ima_video_('Responsive', 'amp') }, { value: 'fixed', label: amp_ima_video_('Fixed', 'amp') }];\n\t\tvar dataSet = false;\n\t\tif (dataTag && dataSrc) {\n\t\t\tdataSet = true;\n\t\t}\n\t\treturn wp.element.createElement(\n\t\t\tamp_ima_video_Fragment,\n\t\t\tnull,\n\t\t\twp.element.createElement(\n\t\t\t\tamp_ima_video_InspectorControls,\n\t\t\t\t{ key: 'inspector' },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\tamp_ima_video_PanelBody,\n\t\t\t\t\t{ title: amp_ima_video_('IMA Video Settings', 'amp') },\n\t\t\t\t\twp.element.createElement(amp_ima_video_TextControl, {\n\t\t\t\t\t\tlabel: amp_ima_video_('Https URL for your VAST ad document (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataTag,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataTag: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_ima_video_TextControl, {\n\t\t\t\t\t\tlabel: amp_ima_video_('Https URL of your video content (required)', 'amp'),\n\t\t\t\t\t\tvalue: dataSrc,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataSrc: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_ima_video_TextControl, {\n\t\t\t\t\t\tlabel: amp_ima_video_('Https URL to preview image', 'amp'),\n\t\t\t\t\t\tvalue: dataPoster,\n\t\t\t\t\t\tonChange: function onChange(value) {\n\t\t\t\t\t\t\treturn setAttributes({ dataPoster: value });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\twp.element.createElement(amp_ima_video_ToggleControl, {\n\t\t\t\t\t\tlabel: amp_ima_video_('Delay Ad Request', 'amp'),\n\t\t\t\t\t\tchecked: dataDelayAdRequest,\n\t\t\t\t\t\tonChange: function onChange() {\n\t\t\t\t\t\t\treturn setAttributes({ dataDelayAdRequest: !dataDelayAdRequest });\n\t\t\t\t\t\t}\n\t\t\t\t\t}),\n\t\t\t\t\tgetLayoutControls(props, ampLayoutOptions)\n\t\t\t\t)\n\t\t\t),\n\t\t\tdataSet && getMediaPlaceholder(amp_ima_video_('IMA Video', 'amp'), dataSrc),\n\t\t\t!dataSet && wp.element.createElement(\n\t\t\t\tamp_ima_video_Placeholder,\n\t\t\t\t{ label: amp_ima_video_('IMA Video', 'amp') },\n\t\t\t\twp.element.createElement(\n\t\t\t\t\t'p',\n\t\t\t\t\tnull,\n\t\t\t\t\tamp_ima_video_('Add required data to use the block.', 'amp')\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t},\n\tsave: function save(_ref) {\n\t\tvar attributes = _ref.attributes;\n\n\t\tvar imaProps = {\n\t\t\tlayout: attributes.ampLayout,\n\t\t\theight: attributes.height,\n\t\t\twidth: attributes.width,\n\t\t\t'data-tag': attributes.dataTag,\n\t\t\t'data-src': attributes.dataSrc\n\t\t};\n\t\tif (attributes.dataPoster) {\n\t\t\timaProps['data-poster'] = attributes.dataPoster;\n\t\t}\n\t\tif (attributes.dataDelayAdRequest) {\n\t\t\timaProps['data-delay-ad-request'] = attributes.dataDelayAdRequest;\n\t\t}\n\t\treturn wp.element.createElement('amp-ima-video', imaProps);\n\t}\n}));\n// CONCATENATED MODULE: ./blocks/index.js\n/**\n * Import blocks.\n */\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiNy5qcyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Jsb2Nrcy9hbXAtbWF0aG1sL2luZGV4LmpzPzU3MDIiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL3V0aWxzLmpzP2Q3YTEiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2FtcC10aW1lYWdvL2luZGV4LmpzP2M3ZGQiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2FtcC1vMi1wbGF5ZXIvaW5kZXguanM/NDk2OCIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvYW1wLW9veWFsYS1wbGF5ZXIvaW5kZXguanM/OGMyMyIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvYW1wLXJlYWNoLXBsYXllci9pbmRleC5qcz8yMzM3Iiwid2VicGFjazovLy8uL2Jsb2Nrcy9hbXAtc3ByaW5nYm9hcmQtcGxheWVyL2luZGV4LmpzP2RlMzEiLCJ3ZWJwYWNrOi8vLy4vYmxvY2tzL2FtcC1qd3BsYXllci9pbmRleC5qcz82ZjE2Iiwid2VicGFjazovLy8uL2Jsb2Nrcy9hbXAtYnJpZC1wbGF5ZXIvaW5kZXguanM/MmQ5YiIsIndlYnBhY2s6Ly8vLi9ibG9ja3MvYW1wLWltYS12aWRlby9pbmRleC5qcz9mNGZjIiwid2VicGFjazovLy8uL2Jsb2Nrcy9pbmRleC5qcz9kNzdmIl0sInNvdXJjZXNDb250ZW50IjpbIlxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXMuXG4gKi9cbnZhciBfXyA9IHdwLmkxOG4uX187XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgUGxhaW5UZXh0ID0gd3AuZWRpdG9yLlBsYWluVGV4dDtcblxuLyoqXG4gKiBSZWdpc3RlciBibG9jay5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCByZWdpc3RlckJsb2NrVHlwZSgnYW1wL2FtcC1tYXRobWwnLCB7XG5cdHRpdGxlOiBfXygnQU1QIE1hdGhNTCcsICdhbXAnKSxcblx0Y2F0ZWdvcnk6ICdjb21tb24nLFxuXHRpY29uOiAnd2VsY29tZS1sZWFybi1tb3JlJyxcblx0a2V5d29yZHM6IFtfXygnTWF0aGVtYXRpY2FsIGZvcm11bGEnLCAnYW1wJyksIF9fKCdTY2llbnRpZmljIGNvbnRlbnQgJywgJ2FtcCcpXSxcblxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0ZGF0YUZvcm11bGE6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1tYXRobWwnLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1mb3JtdWxhJ1xuXHRcdH1cblx0fSxcblxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KF9yZWYpIHtcblx0XHR2YXIgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IF9yZWYuc2V0QXR0cmlidXRlcztcblx0XHR2YXIgZGF0YUZvcm11bGEgPSBhdHRyaWJ1dGVzLmRhdGFGb3JtdWxhO1xuXG5cblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFBsYWluVGV4dCwge1xuXHRcdFx0a2V5OiAnZm9ybXVsYScsXG5cdFx0XHR2YWx1ZTogZGF0YUZvcm11bGEsXG5cdFx0XHRwbGFjZWhvbGRlcjogX18oJ0luc2VydCBmb3JtdWxhJywgJ2FtcCcpLFxuXHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YUZvcm11bGE6IHZhbHVlIH0pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9LFxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKF9yZWYyKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBfcmVmMi5hdHRyaWJ1dGVzO1xuXG5cdFx0dmFyIG1hdGhtbFByb3BzID0ge1xuXHRcdFx0J2RhdGEtZm9ybXVsYSc6IGF0dHJpYnV0ZXMuZGF0YUZvcm11bGEsXG5cdFx0XHRsYXlvdXQ6ICdjb250YWluZXInXG5cdFx0fTtcblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdhbXAtbWF0aG1sJywgbWF0aG1sUHJvcHMpO1xuXHR9XG59KTsiLCJ2YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIFNlbGVjdENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5TZWxlY3RDb250cm9sLFxuICAgIE5vdGljZSA9IF93cCRjb21wb25lbnRzLk5vdGljZSxcbiAgICBQbGFjZWhvbGRlciA9IF93cCRjb21wb25lbnRzLlBsYWNlaG9sZGVyO1xuXG4vKipcbiAqIERpc3BsYXkgbWVkaWEgcGxhY2Vob2xkZXIuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgQmxvY2sncyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd8Ym9vbGVhbn0gdXJsIFVSTC5cbiAqIEByZXR1cm4ge1hNTH0gUGxhY2Vob2xkZXIuXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lZGlhUGxhY2Vob2xkZXIobmFtZSwgdXJsKSB7XG5cdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0UGxhY2Vob2xkZXIsXG5cdFx0eyBsYWJlbDogbmFtZSB9LFxuXHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFwicFwiLFxuXHRcdFx0eyBjbGFzc05hbWU6IFwiY29tcG9uZW50cy1wbGFjZWhvbGRlcl9fZXJyb3JcIiB9LFxuXHRcdFx0dXJsXG5cdFx0KSxcblx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcInBcIixcblx0XHRcdHsgY2xhc3NOYW1lOiBcImNvbXBvbmVudHMtcGxhY2Vob2xkZXJfX2Vycm9yXCIgfSxcblx0XHRcdF9fKCdQcmV2aWV3cyBmb3IgdGhpcyBhcmUgdW5hdmFpbGFibGUgaW4gdGhlIGVkaXRvciwgc29ycnkhJywgJ2FtcCcpXG5cdFx0KVxuXHQpO1xufVxuXG4vKipcbiAqIExheW91dCBjb250cm9scyBmb3IgQU1QIGJsb2NrcycgYXR0cmlidXRlczogbGF5b3V0LCB3aWR0aCwgaGVpZ2h0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBwcm9wcyBQcm9wcy5cbiAqIEBwYXJhbSB7QXJyYXl9IGFtcExheW91dE9wdGlvbnMgTGF5b3V0IG9wdGlvbnMuXG4gKiBAcmV0dXJuIHtbWE1MLCosWE1MLCosWE1MXX0gQ29udHJvbHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRMYXlvdXRDb250cm9scyhwcm9wcywgYW1wTGF5b3V0T3B0aW9ucykge1xuXHQvLyBAdG9kbyBNb3ZlIGdldHRpbmcgYW1wTGF5b3V0T3B0aW9ucyB0byB1dGlscyBhcyB3ZWxsLlxuXHR2YXIgYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblx0dmFyIGFtcExheW91dCA9IGF0dHJpYnV0ZXMuYW1wTGF5b3V0LFxuXHQgICAgaGVpZ2h0ID0gYXR0cmlidXRlcy5oZWlnaHQsXG5cdCAgICB3aWR0aCA9IGF0dHJpYnV0ZXMud2lkdGg7XG5cblx0dmFyIHNob3dIZWlnaHROb3RpY2UgPSAhaGVpZ2h0ICYmICgnZml4ZWQnID09PSBhbXBMYXlvdXQgfHwgJ2ZpeGVkLWhlaWdodCcgPT09IGFtcExheW91dCk7XG5cdHZhciBzaG93V2lkdGhOb3RpY2UgPSAhd2lkdGggJiYgJ2ZpeGVkJyA9PT0gYW1wTGF5b3V0O1xuXG5cdHJldHVybiBbd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRrZXk6IFwiYW1wTGF5b3V0XCIsXG5cdFx0bGFiZWw6IF9fKCdMYXlvdXQnLCAnYW1wJyksXG5cdFx0dmFsdWU6IGFtcExheW91dCxcblx0XHRvcHRpb25zOiBhbXBMYXlvdXRPcHRpb25zLFxuXHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBhbXBMYXlvdXQ6IHZhbHVlIH0pO1xuXHRcdH1cblx0fSksIHNob3dXaWR0aE5vdGljZSAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0Tm90aWNlLFxuXHRcdHsga2V5OiBcInNob3dXaWR0aE5vdGljZVwiLCBzdGF0dXM6IFwiZXJyb3JcIiwgaXNEaXNtaXNzaWJsZTogZmFsc2UgfSxcblx0XHR3cC5pMThuLnNwcmludGYoXG5cdFx0LyogdHJhbnNsYXRvcnM6ICVzIGlzIHRoZSBsYXlvdXQgbmFtZSAqL1xuXHRcdF9fKCdXaWR0aCBpcyByZXF1aXJlZCBmb3IgJXMgbGF5b3V0JywgJ2FtcCcpLCBhbXBMYXlvdXQpXG5cdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdGtleTogXCJ3aWR0aFwiLFxuXHRcdHR5cGU6IFwibnVtYmVyXCIsXG5cdFx0bGFiZWw6IF9fKCdXaWR0aCAocHgpJywgJ2FtcCcpLFxuXHRcdHZhbHVlOiB3aWR0aCAhPT0gdW5kZWZpbmVkID8gd2lkdGggOiAnJyxcblx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgd2lkdGg6IHZhbHVlIH0pO1xuXHRcdH1cblx0fSksIHNob3dIZWlnaHROb3RpY2UgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdE5vdGljZSxcblx0XHR7IGtleTogXCJzaG93SGVpZ2h0Tm90aWNlXCIsIHN0YXR1czogXCJlcnJvclwiLCBpc0Rpc21pc3NpYmxlOiBmYWxzZSB9LFxuXHRcdHdwLmkxOG4uc3ByaW50Zihcblx0XHQvKiB0cmFuc2xhdG9yczogJXMgaXMgdGhlIGxheW91dCBuYW1lICovXG5cdFx0X18oJ0hlaWdodCBpcyByZXF1aXJlZCBmb3IgJXMgbGF5b3V0JywgJ2FtcCcpLCBhbXBMYXlvdXQpXG5cdCksIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdGtleTogXCJoZWlnaHRcIixcblx0XHR0eXBlOiBcIm51bWJlclwiLFxuXHRcdGxhYmVsOiBfXygnSGVpZ2h0IChweCknLCAnYW1wJyksXG5cdFx0dmFsdWU6IGhlaWdodCxcblx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgaGVpZ2h0OiB2YWx1ZSB9KTtcblx0XHR9XG5cdH0pXTtcbn0iLCIvKiBnbG9iYWwgbW9tZW50ICovXG5cbi8qKlxuICogSGVscGVyIG1ldGhvZHMgZm9yIGJsb2Nrcy5cbiAqL1xuaW1wb3J0IHsgZ2V0TGF5b3V0Q29udHJvbHMgfSBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzLlxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIF93cCRlZGl0b3IgPSB3cC5lZGl0b3IsXG4gICAgSW5zcGVjdG9yQ29udHJvbHMgPSBfd3AkZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzLFxuICAgIEJsb2NrQWxpZ25tZW50VG9vbGJhciA9IF93cCRlZGl0b3IuQmxvY2tBbGlnbm1lbnRUb29sYmFyLFxuICAgIEJsb2NrQ29udHJvbHMgPSBfd3AkZWRpdG9yLkJsb2NrQ29udHJvbHM7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIERhdGVUaW1lUGlja2VyID0gX3dwJGNvbXBvbmVudHMuRGF0ZVRpbWVQaWNrZXIsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2w7XG52YXIgRnJhZ21lbnQgPSB3cC5lbGVtZW50LkZyYWdtZW50O1xuXG5pbXBvcnQgdGltZWFnbyBmcm9tICd0aW1lYWdvLmpzJztcblxuLyoqXG4gKiBSZWdpc3RlciBibG9jay5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgcmVnaXN0ZXJCbG9ja1R5cGUoJ2FtcC9hbXAtdGltZWFnbycsIHtcblx0dGl0bGU6IF9fKCdBTVAgVGltZWFnbycpLFxuXHRjYXRlZ29yeTogJ2NvbW1vbicsXG5cdGljb246ICdiYWNrdXAnLFxuXHRrZXl3b3JkczogW19fKCdUaW1lIGRpZmZlcmVuY2UnKSwgX18oJ1RpbWUgYWdvJyksIF9fKCdEYXRlJyldLFxuXG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRhbGlnbjoge1xuXHRcdFx0dHlwZTogJ3N0cmluZydcblx0XHR9LFxuXHRcdGN1dG9mZjoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLXRpbWVhZ28nLFxuXHRcdFx0YXR0cmlidXRlOiAnY3V0b2ZmJ1xuXHRcdH0sXG5cdFx0ZGF0ZVRpbWU6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC10aW1lYWdvJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGV0aW1lJ1xuXHRcdH0sXG5cdFx0YW1wTGF5b3V0OiB7XG5cdFx0XHRkZWZhdWx0OiAnZml4ZWQtaGVpZ2h0Jyxcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC10aW1lYWdvJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2xheW91dCdcblx0XHR9LFxuXHRcdHdpZHRoOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtdGltZWFnbycsXG5cdFx0XHRhdHRyaWJ1dGU6ICd3aWR0aCdcblx0XHR9LFxuXHRcdGhlaWdodDoge1xuXHRcdFx0ZGVmYXVsdDogMjAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtdGltZWFnbycsXG5cdFx0XHRhdHRyaWJ1dGU6ICdoZWlnaHQnXG5cdFx0fVxuXHR9LFxuXG5cdGdldEVkaXRXcmFwcGVyUHJvcHM6IGZ1bmN0aW9uIGdldEVkaXRXcmFwcGVyUHJvcHMoYXR0cmlidXRlcykge1xuXHRcdHZhciBhbGlnbiA9IGF0dHJpYnV0ZXMuYWxpZ247XG5cblx0XHRpZiAoJ2xlZnQnID09PSBhbGlnbiB8fCAncmlnaHQnID09PSBhbGlnbiB8fCAnY2VudGVyJyA9PT0gYWxpZ24pIHtcblx0XHRcdHJldHVybiB7ICdkYXRhLWFsaWduJzogYWxpZ24gfTtcblx0XHR9XG5cdH0sXG5cdGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcblx0XHR2YXIgYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXHRcdHZhciBhbGlnbiA9IGF0dHJpYnV0ZXMuYWxpZ24sXG5cdFx0ICAgIGN1dG9mZiA9IGF0dHJpYnV0ZXMuY3V0b2ZmO1xuXG5cdFx0dmFyIHRpbWVBZ28gPSB2b2lkIDA7XG5cdFx0aWYgKGF0dHJpYnV0ZXMuZGF0ZVRpbWUpIHtcblx0XHRcdGlmIChhdHRyaWJ1dGVzLmN1dG9mZiAmJiBwYXJzZUludChhdHRyaWJ1dGVzLmN1dG9mZikgPCBNYXRoLmFicyhtb21lbnQoYXR0cmlidXRlcy5kYXRlVGltZSkuZGlmZihtb21lbnQoKSwgJ3NlY29uZHMnKSkpIHtcblx0XHRcdFx0dGltZUFnbyA9IG1vbWVudChhdHRyaWJ1dGVzLmRhdGVUaW1lKS5mb3JtYXQoJ2RkZGQgRCBNTU1NIEhIOm1tJyk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR0aW1lQWdvID0gdGltZWFnbygpLmZvcm1hdChhdHRyaWJ1dGVzLmRhdGVUaW1lKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0dGltZUFnbyA9IHRpbWVhZ28oKS5mb3JtYXQobmV3IERhdGUoKSk7XG5cdFx0XHRzZXRBdHRyaWJ1dGVzKHsgZGF0ZVRpbWU6IG1vbWVudChtb21lbnQoKSwgbW9tZW50LklTT184NjAxLCB0cnVlKS5mb3JtYXQoKSB9KTtcblx0XHR9XG5cblx0XHR2YXIgYW1wTGF5b3V0T3B0aW9ucyA9IFt7IHZhbHVlOiAnJywgbGFiZWw6IF9fKCdSZXNwb25zaXZlJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaXhlZCcsIGxhYmVsOiBfXygnRml4ZWQnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpeGVkLWhlaWdodCcsIGxhYmVsOiBfXygnRml4ZWQgaGVpZ2h0JywgJ2FtcCcpIH1dO1xuXG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEZyYWdtZW50LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRcdHsga2V5OiAnaW5zcGVjdG9yJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdHsgdGl0bGU6IF9fKCdBTVAgVGltZWFnbyBTZXR0aW5ncycpIH0sXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KERhdGVUaW1lUGlja2VyLCB7XG5cdFx0XHRcdFx0XHRsb2NhbGU6ICdlbicsXG5cdFx0XHRcdFx0XHRjdXJyZW50RGF0ZTogYXR0cmlidXRlcy5kYXRlVGltZSB8fCBtb21lbnQoKSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGVUaW1lOiBtb21lbnQodmFsdWUsIG1vbWVudC5JU09fODYwMSwgdHJ1ZSkuZm9ybWF0KCkgfSk7XG5cdFx0XHRcdFx0XHR9IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnZXRMYXlvdXRDb250cm9scyhwcm9wcywgYW1wTGF5b3V0T3B0aW9ucyksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdFx0XHRcdGNsYXNzTmFtZTogJ2Jsb2Nrcy1hbXAtdGltZW91dF9fY3V0b2ZmJyxcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnQ3V0b2ZmIChzZWNvbmRzKScpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGN1dG9mZiAhPT0gdW5kZWZpbmVkID8gY3V0b2ZmIDogJycsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBjdXRvZmY6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdClcblx0XHRcdCksXG5cdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdEJsb2NrQ29udHJvbHMsXG5cdFx0XHRcdHsga2V5OiAnY29udHJvbHMnIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChCbG9ja0FsaWdubWVudFRvb2xiYXIsIHtcblx0XHRcdFx0XHR2YWx1ZTogYWxpZ24sXG5cdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKG5leHRBbGlnbikge1xuXHRcdFx0XHRcdFx0c2V0QXR0cmlidXRlcyh7IGFsaWduOiBuZXh0QWxpZ24gfSk7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRjb250cm9sczogWydsZWZ0JywgJ2NlbnRlcicsICdyaWdodCddXG5cdFx0XHRcdH0pXG5cdFx0XHQpLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHQndGltZScsXG5cdFx0XHRcdHsga2V5OiAndGltZWFnbycsIGRhdGVUaW1lOiBhdHRyaWJ1dGVzLmRhdGVUaW1lIH0sXG5cdFx0XHRcdHRpbWVBZ29cblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKF9yZWYpIHtcblx0XHR2YXIgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcztcblxuXHRcdHZhciB0aW1lYWdvUHJvcHMgPSB7XG5cdFx0XHRsYXlvdXQ6ICdyZXNwb25zaXZlJyxcblx0XHRcdGNsYXNzTmFtZTogJ2FsaWduJyArIChhdHRyaWJ1dGVzLmFsaWduIHx8ICdub25lJyksXG5cdFx0XHRkYXRldGltZTogYXR0cmlidXRlcy5kYXRlVGltZSxcblx0XHRcdGxvY2FsZTogJ2VuJ1xuXHRcdH07XG5cdFx0aWYgKGF0dHJpYnV0ZXMuY3V0b2ZmKSB7XG5cdFx0XHR0aW1lYWdvUHJvcHMuY3V0b2ZmID0gYXR0cmlidXRlcy5jdXRvZmY7XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzLmFtcExheW91dCkge1xuXHRcdFx0c3dpdGNoIChhdHRyaWJ1dGVzLmFtcExheW91dCkge1xuXHRcdFx0XHRjYXNlICdmaXhlZC1oZWlnaHQnOlxuXHRcdFx0XHRcdGlmIChhdHRyaWJ1dGVzLmhlaWdodCkge1xuXHRcdFx0XHRcdFx0dGltZWFnb1Byb3BzLmhlaWdodCA9IGF0dHJpYnV0ZXMuaGVpZ2h0O1xuXHRcdFx0XHRcdFx0dGltZWFnb1Byb3BzLmxheW91dCA9IGF0dHJpYnV0ZXMuYW1wTGF5b3V0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdFx0Y2FzZSAnZml4ZWQnOlxuXHRcdFx0XHRcdGlmIChhdHRyaWJ1dGVzLmhlaWdodCAmJiBhdHRyaWJ1dGVzLndpZHRoKSB7XG5cdFx0XHRcdFx0XHR0aW1lYWdvUHJvcHMuaGVpZ2h0ID0gYXR0cmlidXRlcy5oZWlnaHQ7XG5cdFx0XHRcdFx0XHR0aW1lYWdvUHJvcHMud2lkdGggPSBhdHRyaWJ1dGVzLndpZHRoO1xuXHRcdFx0XHRcdFx0dGltZWFnb1Byb3BzLmxheW91dCA9IGF0dHJpYnV0ZXMuYW1wTGF5b3V0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdCdhbXAtdGltZWFnbycsXG5cdFx0XHR0aW1lYWdvUHJvcHMsXG5cdFx0XHRtb21lbnQoYXR0cmlidXRlcy5kYXRlVGltZSkuZm9ybWF0KCdkZGRkIEQgTU1NTSBISDptbScpXG5cdFx0KTtcblx0fVxufSk7IiwiLyoqXG4gKiBIZWxwZXIgbWV0aG9kcyBmb3IgYmxvY2tzLlxuICovXG5pbXBvcnQgeyBnZXRMYXlvdXRDb250cm9scywgZ2V0TWVkaWFQbGFjZWhvbGRlciB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXMuXG4gKi9cbnZhciBfXyA9IHdwLmkxOG4uX187XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgSW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgRnJhZ21lbnQgPSB3cC5lbGVtZW50LkZyYWdtZW50O1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBQbGFjZWhvbGRlciA9IF93cCRjb21wb25lbnRzLlBsYWNlaG9sZGVyLFxuICAgIFRvZ2dsZUNvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5Ub2dnbGVDb250cm9sO1xuXG4vKipcbiAqIFJlZ2lzdGVyIGJsb2NrLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdhbXAvYW1wLW8yLXBsYXllcicsIHtcblx0dGl0bGU6IF9fKCdBTVAgTzIgUGxheWVyJywgJ2FtcCcpLFxuXHRjYXRlZ29yeTogJ2VtYmVkJyxcblx0aWNvbjogJ2VtYmVkLWdlbmVyaWMnLFxuXHRrZXl3b3JkczogW19fKCdFbWJlZCcsICdhbXAnKSwgX18oJ0FPTCBPMlBsYXllcicsICdhbXAnKV0sXG5cblx0Ly8gQHRvZG8gQWRkIG90aGVyIHVzZWZ1bCBtYWNybyB0b2dnbGVzLCBlLmcuIHNob3dpbmcgcmVsZXZhbnQgY29udGVudC5cblx0YXR0cmlidXRlczoge1xuXHRcdGRhdGFQaWQ6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1vMi1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1waWQnXG5cdFx0fSxcblx0XHRkYXRhVmlkOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtbzItcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGEtdmlkJ1xuXHRcdH0sXG5cdFx0ZGF0YUJjaWQ6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1vMi1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1iY2lkJ1xuXHRcdH0sXG5cdFx0ZGF0YUJpZDoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLW8yLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLWJpZCdcblx0XHR9LFxuXHRcdGF1dG9QbGF5OiB7XG5cdFx0XHRkZWZhdWx0OiBmYWxzZVxuXHRcdH0sXG5cdFx0YW1wTGF5b3V0OiB7XG5cdFx0XHRkZWZhdWx0OiAncmVzcG9uc2l2ZScsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtbzItcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2xheW91dCdcblx0XHR9LFxuXHRcdHdpZHRoOiB7XG5cdFx0XHRkZWZhdWx0OiA2MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtbzItcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ3dpZHRoJ1xuXHRcdH0sXG5cdFx0aGVpZ2h0OiB7XG5cdFx0XHRkZWZhdWx0OiA0MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtbzItcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2hlaWdodCdcblx0XHR9XG5cdH0sXG5cblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cdFx0dmFyIGF1dG9QbGF5ID0gYXR0cmlidXRlcy5hdXRvUGxheSxcblx0XHQgICAgZGF0YVBpZCA9IGF0dHJpYnV0ZXMuZGF0YVBpZCxcblx0XHQgICAgZGF0YVZpZCA9IGF0dHJpYnV0ZXMuZGF0YVZpZCxcblx0XHQgICAgZGF0YUJjaWQgPSBhdHRyaWJ1dGVzLmRhdGFCY2lkLFxuXHRcdCAgICBkYXRhQmlkID0gYXR0cmlidXRlcy5kYXRhQmlkO1xuXG5cdFx0dmFyIGFtcExheW91dE9wdGlvbnMgPSBbeyB2YWx1ZTogJ3Jlc3BvbnNpdmUnLCBsYWJlbDogX18oJ1Jlc3BvbnNpdmUnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpeGVkLWhlaWdodCcsIGxhYmVsOiBfXygnRml4ZWQgaGVpZ2h0JywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaXhlZCcsIGxhYmVsOiBfXygnRml4ZWQnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpbGwnLCBsYWJlbDogX18oJ0ZpbGwnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZsZXgtaXRlbScsIGxhYmVsOiBfXygnRmxleC1pdGVtJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdub2Rpc3BsYXknLCBsYWJlbDogX18oJ05vIERpc3BsYXknLCAnYW1wJykgfV07XG5cdFx0dmFyIHVybCA9IGZhbHNlO1xuXHRcdGlmIChkYXRhUGlkICYmIChkYXRhQmNpZCB8fCBkYXRhVmlkKSkge1xuXHRcdFx0dXJsID0gJ2h0dHBzOi8vZGVsaXZlcnkudmlkaWJsZS50di9odG1sZW1iZWQvcGlkPScgKyBkYXRhUGlkICsgJy8nO1xuXHRcdH1cblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRudWxsLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdFx0eyBrZXk6ICdpbnNwZWN0b3InIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0eyB0aXRsZTogX18oJ08yIFBsYXllciBTZXR0aW5ncycsICdhbXAnKSB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQbGF5ZXIgSUQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGlkLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVBpZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0J1eWVyIENvbXBhbnkgSUQgKGVpdGhlciBidXllciBvciB2aWRlbyBJRCBpcyByZXF1aXJlZCknLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YUJjaWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhQmNpZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1ZpZGVvIElEIChlaXRoZXIgYnV5ZXIgb3IgdmlkZW8gSUQgaXMgcmVxdWlyZWQpJywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGRhdGFWaWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhVmlkOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnUGxheWxpc3QgSUQnLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YUJpZCxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFCaWQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUb2dnbGVDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0F1dG9wbGF5JywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogYXV0b1BsYXksXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UoKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgYXV0b1BsYXk6ICFhdXRvUGxheSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnZXRMYXlvdXRDb250cm9scyhwcm9wcywgYW1wTGF5b3V0T3B0aW9ucylcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdHVybCAmJiBnZXRNZWRpYVBsYWNlaG9sZGVyKF9fKCdPMiBQbGF5ZXInLCAnYW1wJyksIHVybCksXG5cdFx0XHQhdXJsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGxhY2Vob2xkZXIsXG5cdFx0XHRcdHsgbGFiZWw6IF9fKCdPMiBQbGF5ZXInLCAnYW1wJykgfSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdF9fKCdBZGQgcmVxdWlyZWQgZGF0YSB0byB1c2UgdGhlIGJsb2NrLicsICdhbXAnKVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShfcmVmKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXM7XG5cblx0XHR2YXIgbzJQcm9wcyA9IHtcblx0XHRcdGxheW91dDogYXR0cmlidXRlcy5hbXBMYXlvdXQsXG5cdFx0XHRoZWlnaHQ6IGF0dHJpYnV0ZXMuaGVpZ2h0LFxuXHRcdFx0J2RhdGEtcGlkJzogYXR0cmlidXRlcy5kYXRhUGlkXG5cdFx0fTtcblx0XHRpZiAoJ2ZpeGVkLWhlaWdodCcgIT09IGF0dHJpYnV0ZXMuYW1wTGF5b3V0ICYmIGF0dHJpYnV0ZXMud2lkdGgpIHtcblx0XHRcdG8yUHJvcHMud2lkdGggPSBhdHRyaWJ1dGVzLndpZHRoO1xuXHRcdH1cblx0XHRpZiAoIWF0dHJpYnV0ZXMuYXV0b1BsYXkpIHtcblx0XHRcdG8yUHJvcHNbJ2RhdGEtbWFjcm9zJ10gPSAnbS5wbGF5YmFjaz1jbGljayc7XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzLmRhdGFWaWQpIHtcblx0XHRcdG8yUHJvcHNbJ2RhdGEtdmlkJ10gPSBhdHRyaWJ1dGVzLmRhdGFWaWQ7XG5cdFx0fSBlbHNlIGlmIChhdHRyaWJ1dGVzLmRhdGFCY2lkKSB7XG5cdFx0XHRvMlByb3BzWydkYXRhLWJjaWQnXSA9IGF0dHJpYnV0ZXMuZGF0YUJjaWQ7XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzLmRhdGFCaWQpIHtcblx0XHRcdG8yUHJvcHNbJ2RhdGEtYmlkJ10gPSBhdHRyaWJ1dGVzLmRhdGFCaWQ7XG5cdFx0fVxuXHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2FtcC1vMi1wbGF5ZXInLCBvMlByb3BzKTtcblx0fVxufSk7IiwiLyoqXG4gKiBIZWxwZXIgbWV0aG9kcyBmb3IgYmxvY2tzLlxuICovXG5pbXBvcnQgeyBnZXRMYXlvdXRDb250cm9scywgZ2V0TWVkaWFQbGFjZWhvbGRlciB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXMuXG4gKi9cbnZhciBfXyA9IHdwLmkxOG4uX187XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgSW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgRnJhZ21lbnQgPSB3cC5lbGVtZW50LkZyYWdtZW50O1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBQbGFjZWhvbGRlciA9IF93cCRjb21wb25lbnRzLlBsYWNlaG9sZGVyO1xuXG4vKipcbiAqIFJlZ2lzdGVyIGJsb2NrLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdhbXAvYW1wLW9veWFsYS1wbGF5ZXInLCB7XG5cdHRpdGxlOiBfXygnQU1QIE9veWFsYSBQbGF5ZXInLCAnYW1wJyksXG5cdGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheXMgYW4gT295YWxhIHZpZGVvLicsICdhbXAnKSxcblx0Y2F0ZWdvcnk6ICdlbWJlZCcsXG5cdGljb246ICdlbWJlZC1nZW5lcmljJyxcblx0a2V5d29yZHM6IFtfXygnRW1iZWQnLCAnYW1wJyksIF9fKCdPb3lhbGEgdmlkZW8nLCAnYW1wJyldLFxuXG5cdC8vIEB0b2RvIEFkZCBkYXRhLWNvbmZpZyBhdHRyaWJ1dGU/XG5cdGF0dHJpYnV0ZXM6IHtcblx0XHRkYXRhRW1iZWRDb2RlOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtb295YWxhLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLWVtYmVkY29kZSdcblx0XHR9LFxuXHRcdGRhdGFQbGF5ZXJJZDoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLW9veWFsYS1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1wbGF5ZXJpZCdcblx0XHR9LFxuXHRcdGRhdGFQY29kZToge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLW9veWFsYS1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1wY29kZSdcblx0XHR9LFxuXHRcdGRhdGFQbGF5ZXJWZXJzaW9uOiB7XG5cdFx0XHRkZWZhdWx0OiAndjMnLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLW9veWFsYS1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1wbGF5ZXJ2ZXJzaW9uJ1xuXHRcdH0sXG5cdFx0YW1wTGF5b3V0OiB7XG5cdFx0XHRkZWZhdWx0OiAncmVzcG9uc2l2ZScsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtb295YWxhLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdsYXlvdXQnXG5cdFx0fSxcblx0XHR3aWR0aDoge1xuXHRcdFx0ZGVmYXVsdDogNjAwLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLW9veWFsYS1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnd2lkdGgnXG5cdFx0fSxcblx0XHRoZWlnaHQ6IHtcblx0XHRcdGRlZmF1bHQ6IDQwMCxcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1vb3lhbGEtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2hlaWdodCdcblx0XHR9XG5cdH0sXG5cblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cdFx0dmFyIGRhdGFFbWJlZENvZGUgPSBhdHRyaWJ1dGVzLmRhdGFFbWJlZENvZGUsXG5cdFx0ICAgIGRhdGFQbGF5ZXJJZCA9IGF0dHJpYnV0ZXMuZGF0YVBsYXllcklkLFxuXHRcdCAgICBkYXRhUGNvZGUgPSBhdHRyaWJ1dGVzLmRhdGFQY29kZSxcblx0XHQgICAgZGF0YVBsYXllclZlcnNpb24gPSBhdHRyaWJ1dGVzLmRhdGFQbGF5ZXJWZXJzaW9uO1xuXG5cdFx0dmFyIGFtcExheW91dE9wdGlvbnMgPSBbeyB2YWx1ZTogJ3Jlc3BvbnNpdmUnLCBsYWJlbDogX18oJ1Jlc3BvbnNpdmUnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpeGVkJywgbGFiZWw6IF9fKCdGaXhlZCcsICdhbXAnKSB9LCB7IHZhbHVlOiAnZmlsbCcsIGxhYmVsOiBfXygnRmlsbCcsICdhbXAnKSB9LCB7IHZhbHVlOiAnZmxleC1pdGVtJywgbGFiZWw6IF9fKCdGbGV4LWl0ZW0nLCAnYW1wJykgfV07XG5cdFx0dmFyIHVybCA9IGZhbHNlO1xuXHRcdGlmIChkYXRhRW1iZWRDb2RlICYmIGRhdGFQbGF5ZXJJZCAmJiBkYXRhUGNvZGUpIHtcblx0XHRcdHVybCA9ICdodHRwOi8vY2YuYy5vb3lhbGEuY29tLycgKyBkYXRhRW1iZWRDb2RlO1xuXHRcdH1cblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRudWxsLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdFx0eyBrZXk6ICdpbnNwZWN0b3InIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0eyB0aXRsZTogX18oJ09veWFsYSBzZXR0aW5ncycsICdhbXAnKSB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdWaWRlbyBlbWJlZCBjb2RlIChyZXF1aXJlZCknLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YUVtYmVkQ29kZSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFFbWJlZENvZGU6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQbGF5ZXIgSUQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGxheWVySWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhUGxheWVySWQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQcm92aWRlciBjb2RlIGZvciB0aGUgYWNjb3VudCAocmVxdWlyZWQpJywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGRhdGFQY29kZSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFQY29kZTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnUGxheWVyIHZlcnNpb24nLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YVBsYXllclZlcnNpb24sXG5cdFx0XHRcdFx0XHRvcHRpb25zOiBbeyB2YWx1ZTogJ3YzJywgbGFiZWw6IF9fKCdWMycsICdhbXAnKSB9LCB7IHZhbHVlOiAndjQnLCBsYWJlbDogX18oJ1Y0JywgJ2FtcCcpIH1dLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVBsYXllclZlcnNpb246IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGdldExheW91dENvbnRyb2xzKHByb3BzLCBhbXBMYXlvdXRPcHRpb25zKVxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0dXJsICYmIGdldE1lZGlhUGxhY2Vob2xkZXIoX18oJ09veWFsYSBQbGF5ZXInLCAnYW1wJyksIHVybCksXG5cdFx0XHQhdXJsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGxhY2Vob2xkZXIsXG5cdFx0XHRcdHsgbGFiZWw6IF9fKCdPb3lhbGEgUGxheWVyJywgJ2FtcCcpIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQncCcsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRfXygnQWRkIHJlcXVpcmVkIGRhdGEgdG8gdXNlIHRoZSBibG9jay4nLCAnYW1wJylcblx0XHRcdFx0KVxuXHRcdFx0KVxuXHRcdCk7XG5cdH0sXG5cdHNhdmU6IGZ1bmN0aW9uIHNhdmUoX3JlZikge1xuXHRcdHZhciBhdHRyaWJ1dGVzID0gX3JlZi5hdHRyaWJ1dGVzO1xuXHRcdHZhciBkYXRhRW1iZWRDb2RlID0gYXR0cmlidXRlcy5kYXRhRW1iZWRDb2RlLFxuXHRcdCAgICBkYXRhUGxheWVySWQgPSBhdHRyaWJ1dGVzLmRhdGFQbGF5ZXJJZCxcblx0XHQgICAgZGF0YVBjb2RlID0gYXR0cmlidXRlcy5kYXRhUGNvZGUsXG5cdFx0ICAgIGRhdGFQbGF5ZXJWZXJzaW9uID0gYXR0cmlidXRlcy5kYXRhUGxheWVyVmVyc2lvbixcblx0XHQgICAgYW1wTGF5b3V0ID0gYXR0cmlidXRlcy5hbXBMYXlvdXQsXG5cdFx0ICAgIGhlaWdodCA9IGF0dHJpYnV0ZXMuaGVpZ2h0LFxuXHRcdCAgICB3aWR0aCA9IGF0dHJpYnV0ZXMud2lkdGg7XG5cblxuXHRcdHZhciBvb3lhbGFQcm9wcyA9IHtcblx0XHRcdGxheW91dDogYW1wTGF5b3V0LFxuXHRcdFx0aGVpZ2h0OiBoZWlnaHQsXG5cdFx0XHQnZGF0YS1lbWJlZGNvZGUnOiBkYXRhRW1iZWRDb2RlLFxuXHRcdFx0J2RhdGEtcGxheWVyaWQnOiBkYXRhUGxheWVySWQsXG5cdFx0XHQnZGF0YS1wY29kZSc6IGRhdGFQY29kZSxcblx0XHRcdCdkYXRhLXBsYXllcnZlcnNpb24nOiBkYXRhUGxheWVyVmVyc2lvblxuXHRcdH07XG5cdFx0aWYgKCdmaXhlZC1oZWlnaHQnICE9PSBhbXBMYXlvdXQgJiYgd2lkdGgpIHtcblx0XHRcdG9veWFsYVByb3BzLndpZHRoID0gd2lkdGg7XG5cdFx0fVxuXHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2FtcC1vb3lhbGEtcGxheWVyJywgb295YWxhUHJvcHMpO1xuXHR9XG59KTsiLCIvKipcbiAqIEhlbHBlciBtZXRob2RzIGZvciBibG9ja3MuXG4gKi9cbmltcG9ydCB7IGdldExheW91dENvbnRyb2xzLCBnZXRNZWRpYVBsYWNlaG9sZGVyIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllcy5cbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBGcmFnbWVudCA9IHdwLmVsZW1lbnQuRnJhZ21lbnQ7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIFBsYWNlaG9sZGVyID0gX3dwJGNvbXBvbmVudHMuUGxhY2Vob2xkZXI7XG5cbi8qKlxuICogUmVnaXN0ZXIgYmxvY2suXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgcmVnaXN0ZXJCbG9ja1R5cGUoJ2FtcC9hbXAtcmVhY2gtcGxheWVyJywge1xuXHR0aXRsZTogX18oJ0FNUCBSZWFjaCBQbGF5ZXInLCAnYW1wJyksXG5cdGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheXMgdGhlIFJlYWNoIFBsYXllciBjb25maWd1cmVkIGluIHRoZSBCZWFjaGZyb250IFJlYWNoIHBsYXRmb3JtLicsICdhbXAnKSxcblx0Y2F0ZWdvcnk6ICdlbWJlZCcsXG5cdGljb246ICdlbWJlZC1nZW5lcmljJyxcblx0a2V5d29yZHM6IFtfXygnRW1iZWQnLCAnYW1wJyksIF9fKCdCZWFjaGZyb250IFJlYWNoIHZpZGVvJywgJ2FtcCcpXSxcblxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0ZGF0YUVtYmVkSWQ6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1yZWFjaC1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1lbWJlZC1pZCdcblx0XHR9LFxuXHRcdGFtcExheW91dDoge1xuXHRcdFx0ZGVmYXVsdDogJ2ZpeGVkLWhlaWdodCcsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtcmVhY2gtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2xheW91dCdcblx0XHR9LFxuXHRcdHdpZHRoOiB7XG5cdFx0XHRkZWZhdWx0OiA2MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtcmVhY2gtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ3dpZHRoJ1xuXHRcdH0sXG5cdFx0aGVpZ2h0OiB7XG5cdFx0XHRkZWZhdWx0OiA0MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtcmVhY2gtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2hlaWdodCdcblx0XHR9XG5cdH0sXG5cblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cdFx0dmFyIGRhdGFFbWJlZElkID0gYXR0cmlidXRlcy5kYXRhRW1iZWRJZDtcblxuXHRcdHZhciBhbXBMYXlvdXRPcHRpb25zID0gW3sgdmFsdWU6ICdyZXNwb25zaXZlJywgbGFiZWw6IF9fKCdSZXNwb25zaXZlJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaXhlZC1oZWlnaHQnLCBsYWJlbDogX18oJ0ZpeGVkIEhlaWdodCcsICdhbXAnKSB9LCB7IHZhbHVlOiAnZml4ZWQnLCBsYWJlbDogX18oJ0ZpeGVkJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaWxsJywgbGFiZWw6IF9fKCdGaWxsJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmbGV4LWl0ZW0nLCBsYWJlbDogX18oJ0ZsZXgtaXRlbScsICdhbXAnKSB9XTtcblx0XHR2YXIgdXJsID0gZmFsc2U7XG5cdFx0aWYgKGRhdGFFbWJlZElkKSB7XG5cdFx0XHR1cmwgPSAnaHR0cHM6Ly9tZWRpYS1jZG4uYmVhY2hmcm9udHJlYWNoLmNvbS9hY2N0XzEvdmlkZW8vJztcblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEZyYWdtZW50LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRcdHsga2V5OiAnaW5zcGVjdG9yJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdHsgdGl0bGU6IF9fKCdSZWFjaCBzZXR0aW5ncycsICdhbXAnKSB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdUaGUgUmVhY2ggcGxheWVyIGVtYmVkIGlkIChyZXF1aXJlZCknLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YUVtYmVkSWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhRW1iZWRJZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Z2V0TGF5b3V0Q29udHJvbHMocHJvcHMsIGFtcExheW91dE9wdGlvbnMpXG5cdFx0XHRcdClcblx0XHRcdCksXG5cdFx0XHR1cmwgJiYgZ2V0TWVkaWFQbGFjZWhvbGRlcihfXygnUmVhY2ggUGxheWVyJywgJ2FtcCcpLCB1cmwpLFxuXHRcdFx0IXVybCAmJiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFBsYWNlaG9sZGVyLFxuXHRcdFx0XHR7IGxhYmVsOiBfXygnUmVhY2ggUGxheWVyJywgJ2FtcCcpIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHQncCcsXG5cdFx0XHRcdFx0bnVsbCxcblx0XHRcdFx0XHRfXygnQWRkIFJlYWNoIHBsYXllciBlbWJlZCBJRCB0byB1c2UgdGhlIGJsb2NrLicsICdhbXAnKVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShfcmVmKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXM7XG5cdFx0dmFyIGRhdGFFbWJlZElkID0gYXR0cmlidXRlcy5kYXRhRW1iZWRJZCxcblx0XHQgICAgYW1wTGF5b3V0ID0gYXR0cmlidXRlcy5hbXBMYXlvdXQsXG5cdFx0ICAgIGhlaWdodCA9IGF0dHJpYnV0ZXMuaGVpZ2h0LFxuXHRcdCAgICB3aWR0aCA9IGF0dHJpYnV0ZXMud2lkdGg7XG5cblxuXHRcdHZhciByZWFjaFByb3BzID0ge1xuXHRcdFx0bGF5b3V0OiBhbXBMYXlvdXQsXG5cdFx0XHRoZWlnaHQ6IGhlaWdodCxcblx0XHRcdCdkYXRhLWVtYmVkLWlkJzogZGF0YUVtYmVkSWRcblx0XHR9O1xuXHRcdGlmICgnZml4ZWQtaGVpZ2h0JyAhPT0gYW1wTGF5b3V0ICYmIHdpZHRoKSB7XG5cdFx0XHRyZWFjaFByb3BzLndpZHRoID0gd2lkdGg7XG5cdFx0fVxuXHRcdHJldHVybiB3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoJ2FtcC1yZWFjaC1wbGF5ZXInLCByZWFjaFByb3BzKTtcblx0fVxufSk7IiwiLyoqXG4gKiBIZWxwZXIgbWV0aG9kcyBmb3IgYmxvY2tzLlxuICovXG5pbXBvcnQgeyBnZXRMYXlvdXRDb250cm9scywgZ2V0TWVkaWFQbGFjZWhvbGRlciB9IGZyb20gJy4uL3V0aWxzLmpzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBibG9jayBsaWJyYXJpZXMuXG4gKi9cbnZhciBfXyA9IHdwLmkxOG4uX187XG52YXIgcmVnaXN0ZXJCbG9ja1R5cGUgPSB3cC5ibG9ja3MucmVnaXN0ZXJCbG9ja1R5cGU7XG52YXIgSW5zcGVjdG9yQ29udHJvbHMgPSB3cC5lZGl0b3IuSW5zcGVjdG9yQ29udHJvbHM7XG52YXIgRnJhZ21lbnQgPSB3cC5lbGVtZW50LkZyYWdtZW50O1xudmFyIF93cCRjb21wb25lbnRzID0gd3AuY29tcG9uZW50cyxcbiAgICBQYW5lbEJvZHkgPSBfd3AkY29tcG9uZW50cy5QYW5lbEJvZHksXG4gICAgVGV4dENvbnRyb2wgPSBfd3AkY29tcG9uZW50cy5UZXh0Q29udHJvbCxcbiAgICBTZWxlY3RDb250cm9sID0gX3dwJGNvbXBvbmVudHMuU2VsZWN0Q29udHJvbCxcbiAgICBQbGFjZWhvbGRlciA9IF93cCRjb21wb25lbnRzLlBsYWNlaG9sZGVyO1xuXG4vKipcbiAqIFJlZ2lzdGVyIGJsb2NrLlxuICovXG5cbmV4cG9ydCBkZWZhdWx0IHJlZ2lzdGVyQmxvY2tUeXBlKCdhbXAvYW1wLXNwcmluZ2JvYXJkLXBsYXllcicsIHtcblx0dGl0bGU6IF9fKCdBTVAgU3ByaW5nYm9hcmQgUGxheWVyJywgJ2FtcCcpLFxuXHRkZXNjcmlwdGlvbjogX18oJ0Rpc3BsYXlzIHRoZSBTcHJpbmdib2FyZCBQbGF5ZXIgdXNlZCBpbiB0aGUgU3ByaW5nYm9hcmQgVmlkZW8gUGxhdGZvcm0nLCAnYW1wJyksXG5cdGNhdGVnb3J5OiAnZW1iZWQnLFxuXHRpY29uOiAnZW1iZWQtZ2VuZXJpYycsXG5cdGtleXdvcmRzOiBbX18oJ0VtYmVkJywgJ2FtcCcpXSxcblxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0ZGF0YVNpdGVJZDoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLXNwcmluZ2JvYXJkLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLXNpdGUtaWQnXG5cdFx0fSxcblx0XHRkYXRhQ29udGVudElkOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtc3ByaW5nYm9hcmQtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGEtY29udGVudC1pZCdcblx0XHR9LFxuXHRcdGRhdGFQbGF5ZXJJZDoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLXNwcmluZ2JvYXJkLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLXBsYXllci1pZCdcblx0XHR9LFxuXHRcdGRhdGFEb21haW46IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1zcHJpbmdib2FyZC1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1kb21haW4nXG5cdFx0fSxcblx0XHRkYXRhTW9kZToge1xuXHRcdFx0ZGVmYXVsdDogJ3ZpZGVvJyxcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1zcHJpbmdib2FyZC1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1tb2RlJ1xuXHRcdH0sXG5cdFx0ZGF0YUl0ZW1zOiB7XG5cdFx0XHRkZWZhdWx0OiAxLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLXNwcmluZ2JvYXJkLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLWl0ZW1zJ1xuXHRcdH0sXG5cdFx0YW1wTGF5b3V0OiB7XG5cdFx0XHRkZWZhdWx0OiAncmVzcG9uc2l2ZScsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtc3ByaW5nYm9hcmQtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2xheW91dCdcblx0XHR9LFxuXHRcdHdpZHRoOiB7XG5cdFx0XHRkZWZhdWx0OiA2MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtc3ByaW5nYm9hcmQtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ3dpZHRoJ1xuXHRcdH0sXG5cdFx0aGVpZ2h0OiB7XG5cdFx0XHRkZWZhdWx0OiA0MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtc3ByaW5nYm9hcmQtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2hlaWdodCdcblx0XHR9XG5cdH0sXG5cblx0ZWRpdDogZnVuY3Rpb24gZWRpdChwcm9wcykge1xuXHRcdHZhciBhdHRyaWJ1dGVzID0gcHJvcHMuYXR0cmlidXRlcyxcblx0XHQgICAgc2V0QXR0cmlidXRlcyA9IHByb3BzLnNldEF0dHJpYnV0ZXM7XG5cdFx0dmFyIGRhdGFTaXRlSWQgPSBhdHRyaWJ1dGVzLmRhdGFTaXRlSWQsXG5cdFx0ICAgIGRhdGFQbGF5ZXJJZCA9IGF0dHJpYnV0ZXMuZGF0YVBsYXllcklkLFxuXHRcdCAgICBkYXRhQ29udGVudElkID0gYXR0cmlidXRlcy5kYXRhQ29udGVudElkLFxuXHRcdCAgICBkYXRhRG9tYWluID0gYXR0cmlidXRlcy5kYXRhRG9tYWluLFxuXHRcdCAgICBkYXRhTW9kZSA9IGF0dHJpYnV0ZXMuZGF0YU1vZGUsXG5cdFx0ICAgIGRhdGFJdGVtcyA9IGF0dHJpYnV0ZXMuZGF0YUl0ZW1zO1xuXG5cdFx0dmFyIGFtcExheW91dE9wdGlvbnMgPSBbeyB2YWx1ZTogJ3Jlc3BvbnNpdmUnLCBsYWJlbDogX18oJ1Jlc3BvbnNpdmUnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpeGVkJywgbGFiZWw6IF9fKCdGaXhlZCcsICdhbXAnKSB9LCB7IHZhbHVlOiAnZmlsbCcsIGxhYmVsOiBfXygnRmlsbCcsICdhbXAnKSB9LCB7IHZhbHVlOiAnZmxleC1pdGVtJywgbGFiZWw6IF9fKCdGbGV4LWl0ZW0nLCAnYW1wJykgfV07XG5cdFx0dmFyIHVybCA9IGZhbHNlO1xuXHRcdGlmIChkYXRhU2l0ZUlkICYmIGRhdGFDb250ZW50SWQgJiYgZGF0YURvbWFpbiAmJiBkYXRhTW9kZSAmJiBkYXRhSXRlbXMpIHtcblx0XHRcdHVybCA9ICdodHRwczovL2Ntcy5zcHJpbmdib2FyZHBsYXRmb3JtLmNvbS9lbWJlZF9pZnJhbWUvJztcblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEZyYWdtZW50LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRcdHsga2V5OiAnaW5zcGVjdG9yJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdHsgdGl0bGU6IF9fKCdTcHJpbmdib2FyZCBQbGF5ZXIgU2V0dGluZ3MnLCAnYW1wJykgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnU3ByaW50Qm9hcmQgc2l0ZSBJRCAocmVxdWlyZWQpJywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGRhdGFTaXRlSWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhU2l0ZUlkOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnUGxheWVyIGNvbnRlbnQgSUQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhQ29udGVudElkLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YUNvbnRlbnRJZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1BsYXllciBJRCcsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGxheWVySWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhUGxheWVySWQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdTcHJpbmdib2FyZCBwYXJ0bmVyIGRvbWFpbicsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhRG9tYWluLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YURvbWFpbjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFNlbGVjdENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnTW9kZSAocmVxdWlyZWQpJywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGRhdGFNb2RlLFxuXHRcdFx0XHRcdFx0b3B0aW9uczogW3sgdmFsdWU6ICd2aWRlbycsIGxhYmVsOiBfXygnVmlkZW8nLCAnYW1wJykgfSwgeyB2YWx1ZTogJ3BsYXlsaXN0JywgbGFiZWw6IF9fKCdQbGF5bGlzdCcsICdhbXAnKSB9XSxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFNb2RlOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdHR5cGU6ICdudW1iZXInLFxuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdOdW1iZXIgb2YgdmlkZW8gaXMgcGxheWxpc3QgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhSXRlbXMsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhSXRlbXM6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdGdldExheW91dENvbnRyb2xzKHByb3BzLCBhbXBMYXlvdXRPcHRpb25zKVxuXHRcdFx0XHQpXG5cdFx0XHQpLFxuXHRcdFx0dXJsICYmIGdldE1lZGlhUGxhY2Vob2xkZXIoX18oJ1NwcmluZ2JvYXJkIFBsYXllcicsICdhbXAnKSwgdXJsKSxcblx0XHRcdCF1cmwgJiYgd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRQbGFjZWhvbGRlcixcblx0XHRcdFx0eyBsYWJlbDogX18oJ1NwcmluZ2JvYXJkIFBsYXllcicsICdhbXAnKSB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J3AnLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0X18oJ0FkZCByZXF1aXJlZCBkYXRhIHRvIHVzZSB0aGUgYmxvY2suJywgJ2FtcCcpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKF9yZWYpIHtcblx0XHR2YXIgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcztcblx0XHR2YXIgZGF0YVNpdGVJZCA9IGF0dHJpYnV0ZXMuZGF0YVNpdGVJZCxcblx0XHQgICAgZGF0YVBsYXllcklkID0gYXR0cmlidXRlcy5kYXRhUGxheWVySWQsXG5cdFx0ICAgIGRhdGFDb250ZW50SWQgPSBhdHRyaWJ1dGVzLmRhdGFDb250ZW50SWQsXG5cdFx0ICAgIGRhdGFEb21haW4gPSBhdHRyaWJ1dGVzLmRhdGFEb21haW4sXG5cdFx0ICAgIGRhdGFNb2RlID0gYXR0cmlidXRlcy5kYXRhTW9kZSxcblx0XHQgICAgZGF0YUl0ZW1zID0gYXR0cmlidXRlcy5kYXRhSXRlbXMsXG5cdFx0ICAgIGFtcExheW91dCA9IGF0dHJpYnV0ZXMuYW1wTGF5b3V0LFxuXHRcdCAgICBoZWlnaHQgPSBhdHRyaWJ1dGVzLmhlaWdodCxcblx0XHQgICAgd2lkdGggPSBhdHRyaWJ1dGVzLndpZHRoO1xuXG5cdFx0dmFyIHNwcmluZ2JvYXJkUHJvcHMgPSB7XG5cdFx0XHRsYXlvdXQ6IGFtcExheW91dCxcblx0XHRcdGhlaWdodDogaGVpZ2h0LFxuXHRcdFx0J2RhdGEtc2l0ZS1pZCc6IGRhdGFTaXRlSWQsXG5cdFx0XHQnZGF0YS1tb2RlJzogZGF0YU1vZGUsXG5cdFx0XHQnZGF0YS1jb250ZW50LWlkJzogZGF0YUNvbnRlbnRJZCxcblx0XHRcdCdkYXRhLXBsYXllci1pZCc6IGRhdGFQbGF5ZXJJZCxcblx0XHRcdCdkYXRhLWRvbWFpbic6IGRhdGFEb21haW4sXG5cdFx0XHQnZGF0YS1pdGVtcyc6IGRhdGFJdGVtc1xuXHRcdH07XG5cdFx0aWYgKCdmaXhlZC1oZWlnaHQnICE9PSBhbXBMYXlvdXQgJiYgd2lkdGgpIHtcblx0XHRcdHNwcmluZ2JvYXJkUHJvcHMud2lkdGggPSBhdHRyaWJ1dGVzLndpZHRoO1xuXHRcdH1cblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdhbXAtc3ByaW5nYm9hcmQtcGxheWVyJywgc3ByaW5nYm9hcmRQcm9wcyk7XG5cdH1cbn0pOyIsIi8qKlxuICogSGVscGVyIG1ldGhvZHMgZm9yIGJsb2Nrcy5cbiAqL1xuaW1wb3J0IHsgZ2V0TGF5b3V0Q29udHJvbHMsIGdldE1lZGlhUGxhY2Vob2xkZXIgfSBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzLlxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIEluc3BlY3RvckNvbnRyb2xzID0gd3AuZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIEZyYWdtZW50ID0gd3AuZWxlbWVudC5GcmFnbWVudDtcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgUGxhY2Vob2xkZXIgPSBfd3AkY29tcG9uZW50cy5QbGFjZWhvbGRlcjtcblxuLyoqXG4gKiBSZWdpc3RlciBibG9jay5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCByZWdpc3RlckJsb2NrVHlwZSgnYW1wL2FtcC1qd3BsYXllcicsIHtcblx0dGl0bGU6IF9fKCdBTVAgSlcgUGxheWVyJywgJ2FtcCcpLFxuXHRkZXNjcmlwdGlvbjogX18oJ0Rpc3BsYXlzIGEgY2xvdWQtaG9zdGVkIEpXIFBsYXllci4nLCAnYW1wJyksXG5cdGNhdGVnb3J5OiAnZW1iZWQnLFxuXHRpY29uOiAnZW1iZWQtZ2VuZXJpYycsXG5cdGtleXdvcmRzOiBbX18oJ0VtYmVkJywgJ2FtcCcpXSxcblxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0ZGF0YVBsYXllcklkOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtandwbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1wbGF5ZXItaWQnXG5cdFx0fSxcblx0XHRkYXRhTWVkaWFJZDoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWp3cGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGEtbWVkaWEtaWQnXG5cdFx0fSxcblx0XHRkYXRhUGxheWxpc3RJZDoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWp3cGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGEtcGxheWxpc3QtaWQnXG5cdFx0fSxcblx0XHRhbXBMYXlvdXQ6IHtcblx0XHRcdGRlZmF1bHQ6ICdyZXNwb25zaXZlJyxcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1qd3BsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdsYXlvdXQnXG5cdFx0fSxcblx0XHR3aWR0aDoge1xuXHRcdFx0ZGVmYXVsdDogNjAwLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWp3cGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ3dpZHRoJ1xuXHRcdH0sXG5cdFx0aGVpZ2h0OiB7XG5cdFx0XHRkZWZhdWx0OiA0MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtandwbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnaGVpZ2h0J1xuXHRcdH1cblx0fSxcblxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblx0XHR2YXIgZGF0YVBsYXllcklkID0gYXR0cmlidXRlcy5kYXRhUGxheWVySWQsXG5cdFx0ICAgIGRhdGFNZWRpYUlkID0gYXR0cmlidXRlcy5kYXRhTWVkaWFJZCxcblx0XHQgICAgZGF0YVBsYXlsaXN0SWQgPSBhdHRyaWJ1dGVzLmRhdGFQbGF5bGlzdElkO1xuXG5cdFx0dmFyIGFtcExheW91dE9wdGlvbnMgPSBbeyB2YWx1ZTogJ3Jlc3BvbnNpdmUnLCBsYWJlbDogX18oJ1Jlc3BvbnNpdmUnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpeGVkLWhlaWdodCcsIGxhYmVsOiBfXygnRml4ZWQgaGVpZ2h0JywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaXhlZCcsIGxhYmVsOiBfXygnRml4ZWQnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZpbGwnLCBsYWJlbDogX18oJ0ZpbGwnLCAnYW1wJykgfSwgeyB2YWx1ZTogJ2ZsZXgtaXRlbScsIGxhYmVsOiBfXygnRmxleC1pdGVtJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdub2Rpc3BsYXknLCBsYWJlbDogX18oJ05vIERpc3BsYXknLCAnYW1wJykgfV07XG5cdFx0dmFyIHVybCA9IGZhbHNlO1xuXHRcdGlmIChkYXRhUGxheWVySWQgJiYgKGRhdGFNZWRpYUlkIHx8IGRhdGFQbGF5bGlzdElkKSkge1xuXHRcdFx0aWYgKGRhdGFQbGF5bGlzdElkKSB7XG5cdFx0XHRcdHVybCA9ICdodHRwczovL2NvbnRlbnQuandwbGF0Zm9ybS5jb20vcGxheWVycy8nICsgZGF0YVBsYXlsaXN0SWQgKyAnLScgKyBkYXRhUGxheWVySWQ7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1cmwgPSAnaHR0cHM6Ly9jb250ZW50Lmp3cGxhdGZvcm0uY29tL3BsYXllcnMvJyArIGRhdGFNZWRpYUlkICsgJy0nICsgZGF0YVBsYXllcklkO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0RnJhZ21lbnQsXG5cdFx0XHRudWxsLFxuXHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRJbnNwZWN0b3JDb250cm9scyxcblx0XHRcdFx0eyBrZXk6ICdpbnNwZWN0b3InIH0sXG5cdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRQYW5lbEJvZHksXG5cdFx0XHRcdFx0eyB0aXRsZTogX18oJ0pXIFBsYXllciBTZXR0aW5ncycsICdhbXAnKSB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdQbGF5ZXIgSUQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGxheWVySWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhUGxheWVySWQ6IHZhbHVlIH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdNZWRpYSBJRCAocmVxdWlyZWQgaWYgcGxheWxpc3QgSUQgbm90IHNldCknLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YU1lZGlhSWQsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhTWVkaWFJZDogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1BsYXlsaXN0IElEIChyZXF1aXJlZCBpZiBtZWRpYSBJRCBub3Qgc2V0KScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGxheWxpc3RJZCxcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFQbGF5bGlzdElkOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnZXRMYXlvdXRDb250cm9scyhwcm9wcywgYW1wTGF5b3V0T3B0aW9ucylcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdHVybCAmJiBnZXRNZWRpYVBsYWNlaG9sZGVyKF9fKCdKVyBQbGF5ZXInLCAnYW1wJyksIHVybCksXG5cdFx0XHQhdXJsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGxhY2Vob2xkZXIsXG5cdFx0XHRcdHsgbGFiZWw6IF9fKCdKVyBQbGF5ZXInLCAnYW1wJykgfSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdF9fKCdBZGQgcmVxdWlyZWQgZGF0YSB0byB1c2UgdGhlIGJsb2NrLicsICdhbXAnKVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShfcmVmKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXM7XG5cblx0XHR2YXIgandQcm9wcyA9IHtcblx0XHRcdGxheW91dDogYXR0cmlidXRlcy5hbXBMYXlvdXQsXG5cdFx0XHRoZWlnaHQ6IGF0dHJpYnV0ZXMuaGVpZ2h0LFxuXHRcdFx0J2RhdGEtcGxheWVyLWlkJzogYXR0cmlidXRlcy5kYXRhUGxheWVySWRcblx0XHR9O1xuXHRcdGlmICgnZml4ZWQtaGVpZ2h0JyAhPT0gYXR0cmlidXRlcy5hbXBMYXlvdXQgJiYgYXR0cmlidXRlcy53aWR0aCkge1xuXHRcdFx0andQcm9wcy53aWR0aCA9IGF0dHJpYnV0ZXMud2lkdGg7XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzLmRhdGFQbGF5bGlzdElkKSB7XG5cdFx0XHRqd1Byb3BzWydkYXRhLXBsYXlsaXN0LWlkJ10gPSBhdHRyaWJ1dGVzLmRhdGFQbGF5bGlzdElkO1xuXHRcdH1cblx0XHRpZiAoYXR0cmlidXRlcy5kYXRhTWVkaWFJZCkge1xuXHRcdFx0andQcm9wc1snZGF0YS1tZWRpYS1pZCddID0gYXR0cmlidXRlcy5kYXRhTWVkaWFJZDtcblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnYW1wLWp3cGxheWVyJywgandQcm9wcyk7XG5cdH1cbn0pOyIsIi8qKlxuICogSGVscGVyIG1ldGhvZHMgZm9yIGJsb2Nrcy5cbiAqL1xuaW1wb3J0IHsgZ2V0TGF5b3V0Q29udHJvbHMsIGdldE1lZGlhUGxhY2Vob2xkZXIgfSBmcm9tICcuLi91dGlscy5qcyc7XG5cbi8qKlxuICogSW50ZXJuYWwgYmxvY2sgbGlicmFyaWVzLlxuICovXG52YXIgX18gPSB3cC5pMThuLl9fO1xudmFyIHJlZ2lzdGVyQmxvY2tUeXBlID0gd3AuYmxvY2tzLnJlZ2lzdGVyQmxvY2tUeXBlO1xudmFyIEluc3BlY3RvckNvbnRyb2xzID0gd3AuZWRpdG9yLkluc3BlY3RvckNvbnRyb2xzO1xudmFyIEZyYWdtZW50ID0gd3AuZWxlbWVudC5GcmFnbWVudDtcbnZhciBfd3AkY29tcG9uZW50cyA9IHdwLmNvbXBvbmVudHMsXG4gICAgUGFuZWxCb2R5ID0gX3dwJGNvbXBvbmVudHMuUGFuZWxCb2R5LFxuICAgIFRleHRDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVGV4dENvbnRyb2wsXG4gICAgUGxhY2Vob2xkZXIgPSBfd3AkY29tcG9uZW50cy5QbGFjZWhvbGRlcixcbiAgICBUb2dnbGVDb250cm9sID0gX3dwJGNvbXBvbmVudHMuVG9nZ2xlQ29udHJvbDtcblxuLyoqXG4gKiBSZWdpc3RlciBibG9jay5cbiAqL1xuXG5leHBvcnQgZGVmYXVsdCByZWdpc3RlckJsb2NrVHlwZSgnYW1wL2FtcC1icmlkLXBsYXllcicsIHtcblx0dGl0bGU6IF9fKCdBTVAgQnJpZCBQbGF5ZXInLCAnYW1wJyksXG5cdGRlc2NyaXB0aW9uOiBfXygnRGlzcGxheXMgdGhlIEJyaWQgUGxheWVyIHVzZWQgaW4gQnJpZC50diBWaWRlbyBQbGF0Zm9ybS4nLCAnYW1wJyksXG5cdGNhdGVnb3J5OiAnZW1iZWQnLFxuXHRpY29uOiAnZW1iZWQtZ2VuZXJpYycsXG5cdGtleXdvcmRzOiBbX18oJ0VtYmVkJywgJ2FtcCcpXSxcblxuXHRhdHRyaWJ1dGVzOiB7XG5cdFx0YXV0b1BsYXk6IHtcblx0XHRcdHR5cGU6ICdib29sZWFuJ1xuXHRcdH0sXG5cdFx0ZGF0YVBhcnRuZXI6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1icmlkLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLXBhcnRuZXInXG5cdFx0fSxcblx0XHRkYXRhUGxheWVyOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtYnJpZC1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1wbGF5ZXInXG5cdFx0fSxcblx0XHRkYXRhVmlkZW86IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1icmlkLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLXZpZGVvJ1xuXHRcdH0sXG5cdFx0ZGF0YVBsYXlsaXN0OiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtYnJpZC1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS1wbGF5bGlzdCdcblx0XHR9LFxuXHRcdGRhdGFPdXRzdHJlYW06IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1icmlkLXBsYXllcicsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLW91dHN0cmVhbSdcblx0XHR9LFxuXHRcdGFtcExheW91dDoge1xuXHRcdFx0ZGVmYXVsdDogJ3Jlc3BvbnNpdmUnLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWJyaWQtcGxheWVyJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2xheW91dCdcblx0XHR9LFxuXHRcdHdpZHRoOiB7XG5cdFx0XHR0eXBlOiAnbnVtYmVyJyxcblx0XHRcdGRlZmF1bHQ6IDYwMFxuXHRcdH0sXG5cdFx0aGVpZ2h0OiB7XG5cdFx0XHRkZWZhdWx0OiA0MDAsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtYnJpZC1wbGF5ZXInLFxuXHRcdFx0YXR0cmlidXRlOiAnaGVpZ2h0J1xuXHRcdH1cblx0fSxcblxuXHRlZGl0OiBmdW5jdGlvbiBlZGl0KHByb3BzKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBwcm9wcy5hdHRyaWJ1dGVzLFxuXHRcdCAgICBzZXRBdHRyaWJ1dGVzID0gcHJvcHMuc2V0QXR0cmlidXRlcztcblx0XHR2YXIgYXV0b1BsYXkgPSBhdHRyaWJ1dGVzLmF1dG9QbGF5LFxuXHRcdCAgICBkYXRhUGFydG5lciA9IGF0dHJpYnV0ZXMuZGF0YVBhcnRuZXIsXG5cdFx0ICAgIGRhdGFQbGF5ZXIgPSBhdHRyaWJ1dGVzLmRhdGFQbGF5ZXIsXG5cdFx0ICAgIGRhdGFWaWRlbyA9IGF0dHJpYnV0ZXMuZGF0YVZpZGVvLFxuXHRcdCAgICBkYXRhUGxheWxpc3QgPSBhdHRyaWJ1dGVzLmRhdGFQbGF5bGlzdCxcblx0XHQgICAgZGF0YU91dHN0cmVhbSA9IGF0dHJpYnV0ZXMuZGF0YU91dHN0cmVhbTtcblxuXHRcdHZhciBhbXBMYXlvdXRPcHRpb25zID0gW3sgdmFsdWU6ICdyZXNwb25zaXZlJywgbGFiZWw6IF9fKCdSZXNwb25zaXZlJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaXhlZC1oZWlnaHQnLCBsYWJlbDogX18oJ0ZpeGVkIGhlaWdodCcsICdhbXAnKSB9LCB7IHZhbHVlOiAnZml4ZWQnLCBsYWJlbDogX18oJ0ZpeGVkJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaWxsJywgbGFiZWw6IF9fKCdGaWxsJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmbGV4LWl0ZW0nLCBsYWJlbDogX18oJ0ZsZXgtaXRlbScsICdhbXAnKSB9LCB7IHZhbHVlOiAnbm9kaXNwbGF5JywgbGFiZWw6IF9fKCdObyBEaXNwbGF5JywgJ2FtcCcpIH1dO1xuXHRcdHZhciB1cmwgPSBmYWxzZTtcblx0XHRpZiAoZGF0YVBhcnRuZXIgJiYgZGF0YVBsYXllciAmJiAoZGF0YVZpZGVvIHx8IGRhdGFQbGF5bGlzdCB8fCBkYXRhT3V0c3RyZWFtKSkge1xuXHRcdFx0dXJsID0gJ2h0dHA6Ly9jZG4uYnJpZC50di9saXZlL3BhcnRuZXJzLycgKyBkYXRhUGFydG5lcjtcblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEZyYWdtZW50LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRcdHsga2V5OiAnaW5zcGVjdG9yJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdHsgdGl0bGU6IF9fKCdCcmlkIFBsYXllciBTZXR0aW5ncycsICdhbXAnKSB9LFxuXHRcdFx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChUZXh0Q29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdCcmlkLnR2IHBhcnRuZXIgSUQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGFydG5lcixcblx0XHRcdFx0XHRcdG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZSh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFQYXJ0bmVyOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnQnJpZC50diBwbGF5ZXIgSUQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhUGxheWVyLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVBsYXllcjogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1ZpZGVvIElEIChvbmUgb2YgdmlkZW8gLyBwbGF5bGlzdCAvIG91dHN0cmVhbSBJRCBpcyByZXF1aXJlZCknLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YVZpZGVvLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVZpZGVvOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnT3V0c3RyZWFtIHVuaXQgSUQgKG9uZSBvZiB2aWRlbyAvIHBsYXlsaXN0IC8gb3V0c3RyZWFtIElEIGlzIHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhT3V0c3RyZWFtLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YU91dHN0cmVhbTogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ1BsYXlsaXN0IElEIChvbmUgb2YgdmlkZW8gLyBwbGF5bGlzdCAvIG91dHN0cmVhbSBJRCBpcyByZXF1aXJlZCknLCAnYW1wJyksXG5cdFx0XHRcdFx0XHR2YWx1ZTogZGF0YVBsYXlsaXN0LFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVBsYXlsaXN0OiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdBdXRvcGxheScsICdhbXAnKSxcblx0XHRcdFx0XHRcdGNoZWNrZWQ6IGF1dG9QbGF5LFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGF1dG9QbGF5OiAhYXV0b1BsYXkgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0Z2V0TGF5b3V0Q29udHJvbHMocHJvcHMsIGFtcExheW91dE9wdGlvbnMpXG5cdFx0XHRcdClcblx0XHRcdCksXG5cdFx0XHR1cmwgJiYgZ2V0TWVkaWFQbGFjZWhvbGRlcihfXygnQnJpZCBQbGF5ZXInLCAnYW1wJyksIHVybCksXG5cdFx0XHQhdXJsICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGxhY2Vob2xkZXIsXG5cdFx0XHRcdHsgbGFiZWw6IF9fKCdCcmlkIFBsYXllcicsICdhbXAnKSB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0J3AnLFxuXHRcdFx0XHRcdG51bGwsXG5cdFx0XHRcdFx0X18oJ0FkZCByZXF1aXJlZCBkYXRhIHRvIHVzZSB0aGUgYmxvY2suJywgJ2FtcCcpXG5cdFx0XHRcdClcblx0XHRcdClcblx0XHQpO1xuXHR9LFxuXHRzYXZlOiBmdW5jdGlvbiBzYXZlKF9yZWYpIHtcblx0XHR2YXIgYXR0cmlidXRlcyA9IF9yZWYuYXR0cmlidXRlcztcblxuXHRcdHZhciBicmlkUHJvcHMgPSB7XG5cdFx0XHRsYXlvdXQ6IGF0dHJpYnV0ZXMuYW1wTGF5b3V0LFxuXHRcdFx0aGVpZ2h0OiBhdHRyaWJ1dGVzLmhlaWdodCxcblx0XHRcdCdkYXRhLXBsYXllcic6IGF0dHJpYnV0ZXMuZGF0YVBsYXllcixcblx0XHRcdCdkYXRhLXBhcnRuZXInOiBhdHRyaWJ1dGVzLmRhdGFQYXJ0bmVyXG5cdFx0fTtcblx0XHRpZiAoJ2ZpeGVkLWhlaWdodCcgIT09IGF0dHJpYnV0ZXMuYW1wTGF5b3V0ICYmIGF0dHJpYnV0ZXMud2lkdGgpIHtcblx0XHRcdGJyaWRQcm9wcy53aWR0aCA9IGF0dHJpYnV0ZXMud2lkdGg7XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzLmRhdGFQbGF5bGlzdCkge1xuXHRcdFx0YnJpZFByb3BzWydkYXRhLXBsYXlsaXN0J10gPSBhdHRyaWJ1dGVzLmRhdGFQbGF5bGlzdDtcblx0XHR9XG5cdFx0aWYgKGF0dHJpYnV0ZXMuZGF0YVZpZGVvKSB7XG5cdFx0XHRicmlkUHJvcHNbJ2RhdGEtdmlkZW8nXSA9IGF0dHJpYnV0ZXMuZGF0YVZpZGVvO1xuXHRcdH1cblx0XHRpZiAoYXR0cmlidXRlcy5kYXRhT3V0c3RyZWFtKSB7XG5cdFx0XHRicmlkUHJvcHNbJ2RhdGEtb3V0c3RyZWFtJ10gPSBhdHRyaWJ1dGVzLmRhdGFPdXRzdHJlYW07XG5cdFx0fVxuXHRcdGlmIChhdHRyaWJ1dGVzLmF1dG9QbGF5KSB7XG5cdFx0XHRicmlkUHJvcHMuYXV0b3BsYXkgPSBhdHRyaWJ1dGVzLmF1dG9QbGF5O1xuXHRcdH1cblx0XHRyZXR1cm4gd3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KCdhbXAtYnJpZC1wbGF5ZXInLCBicmlkUHJvcHMpO1xuXHR9XG59KTsiLCIvKipcbiAqIEhlbHBlciBtZXRob2RzIGZvciBibG9ja3MuXG4gKi9cbmltcG9ydCB7IGdldExheW91dENvbnRyb2xzLCBnZXRNZWRpYVBsYWNlaG9sZGVyIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuXG4vKipcbiAqIEludGVybmFsIGJsb2NrIGxpYnJhcmllcy5cbiAqL1xudmFyIF9fID0gd3AuaTE4bi5fXztcbnZhciByZWdpc3RlckJsb2NrVHlwZSA9IHdwLmJsb2Nrcy5yZWdpc3RlckJsb2NrVHlwZTtcbnZhciBJbnNwZWN0b3JDb250cm9scyA9IHdwLmVkaXRvci5JbnNwZWN0b3JDb250cm9scztcbnZhciBGcmFnbWVudCA9IHdwLmVsZW1lbnQuRnJhZ21lbnQ7XG52YXIgX3dwJGNvbXBvbmVudHMgPSB3cC5jb21wb25lbnRzLFxuICAgIFBhbmVsQm9keSA9IF93cCRjb21wb25lbnRzLlBhbmVsQm9keSxcbiAgICBUZXh0Q29udHJvbCA9IF93cCRjb21wb25lbnRzLlRleHRDb250cm9sLFxuICAgIFBsYWNlaG9sZGVyID0gX3dwJGNvbXBvbmVudHMuUGxhY2Vob2xkZXIsXG4gICAgVG9nZ2xlQ29udHJvbCA9IF93cCRjb21wb25lbnRzLlRvZ2dsZUNvbnRyb2w7XG5cbi8qKlxuICogUmVnaXN0ZXIgYmxvY2suXG4gKi9cblxuZXhwb3J0IGRlZmF1bHQgcmVnaXN0ZXJCbG9ja1R5cGUoJ2FtcC9hbXAtaW1hLXZpZGVvJywge1xuXHR0aXRsZTogX18oJ0FNUCBJTUEgVmlkZW8nLCAnYW1wJyksXG5cdGRlc2NyaXB0aW9uOiBfXygnRW1iZWRzIGEgdmlkZW8gcGxheWVyIGZvciBpbnN0cmVhbSB2aWRlbyBhZHMgdGhhdCBhcmUgaW50ZWdyYXRlZCB3aXRoIHRoZSBJTUEgU0RLJywgJ2FtcCcpLFxuXHRjYXRlZ29yeTogJ2VtYmVkJyxcblx0aWNvbjogJ2VtYmVkLWdlbmVyaWMnLFxuXHRrZXl3b3JkczogW19fKCdFbWJlZCcsICdhbXAnKV0sXG5cblx0Ly8gQHRvZG8gUGVyaGFwcyBsYXRlciBhZGQgc3VidGl0bGVzIG9wdGlvbiBhbmQgYWRkaXRpb25hbCBzb3VyY2Ugb3B0aW9ucz9cblx0YXR0cmlidXRlczoge1xuXHRcdGRhdGFEZWxheUFkUmVxdWVzdDoge1xuXHRcdFx0ZGVmYXVsdDogZmFsc2UsXG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtaW1hLXZpZGVvJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGEtZGVsYXktYWQtcmVxdWVzdCdcblx0XHR9LFxuXHRcdGRhdGFUYWc6IHtcblx0XHRcdHNvdXJjZTogJ2F0dHJpYnV0ZScsXG5cdFx0XHRzZWxlY3RvcjogJ2FtcC1pbWEtdmlkZW8nLFxuXHRcdFx0YXR0cmlidXRlOiAnZGF0YS10YWcnXG5cdFx0fSxcblx0XHRkYXRhU3JjOiB7XG5cdFx0XHRzb3VyY2U6ICdhdHRyaWJ1dGUnLFxuXHRcdFx0c2VsZWN0b3I6ICdhbXAtaW1hLXZpZGVvJyxcblx0XHRcdGF0dHJpYnV0ZTogJ2RhdGEtc3JjJ1xuXHRcdH0sXG5cdFx0ZGF0YVBvc3Rlcjoge1xuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWltYS12aWRlbycsXG5cdFx0XHRhdHRyaWJ1dGU6ICdkYXRhLXBvc3Rlcidcblx0XHR9LFxuXHRcdGFtcExheW91dDoge1xuXHRcdFx0ZGVmYXVsdDogJ3Jlc3BvbnNpdmUnLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWltYS12aWRlbycsXG5cdFx0XHRhdHRyaWJ1dGU6ICdsYXlvdXQnXG5cdFx0fSxcblx0XHR3aWR0aDoge1xuXHRcdFx0ZGVmYXVsdDogNjAwLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWltYS12aWRlbycsXG5cdFx0XHRhdHRyaWJ1dGU6ICd3aWR0aCdcblx0XHR9LFxuXHRcdGhlaWdodDoge1xuXHRcdFx0ZGVmYXVsdDogNDAwLFxuXHRcdFx0c291cmNlOiAnYXR0cmlidXRlJyxcblx0XHRcdHNlbGVjdG9yOiAnYW1wLWltYS12aWRlbycsXG5cdFx0XHRhdHRyaWJ1dGU6ICdoZWlnaHQnXG5cdFx0fVxuXHR9LFxuXG5cdGVkaXQ6IGZ1bmN0aW9uIGVkaXQocHJvcHMpIHtcblx0XHR2YXIgYXR0cmlidXRlcyA9IHByb3BzLmF0dHJpYnV0ZXMsXG5cdFx0ICAgIHNldEF0dHJpYnV0ZXMgPSBwcm9wcy5zZXRBdHRyaWJ1dGVzO1xuXHRcdHZhciBkYXRhRGVsYXlBZFJlcXVlc3QgPSBhdHRyaWJ1dGVzLmRhdGFEZWxheUFkUmVxdWVzdCxcblx0XHQgICAgZGF0YVRhZyA9IGF0dHJpYnV0ZXMuZGF0YVRhZyxcblx0XHQgICAgZGF0YVNyYyA9IGF0dHJpYnV0ZXMuZGF0YVNyYyxcblx0XHQgICAgZGF0YVBvc3RlciA9IGF0dHJpYnV0ZXMuZGF0YVBvc3RlcjtcblxuXHRcdHZhciBhbXBMYXlvdXRPcHRpb25zID0gW3sgdmFsdWU6ICdyZXNwb25zaXZlJywgbGFiZWw6IF9fKCdSZXNwb25zaXZlJywgJ2FtcCcpIH0sIHsgdmFsdWU6ICdmaXhlZCcsIGxhYmVsOiBfXygnRml4ZWQnLCAnYW1wJykgfV07XG5cdFx0dmFyIGRhdGFTZXQgPSBmYWxzZTtcblx0XHRpZiAoZGF0YVRhZyAmJiBkYXRhU3JjKSB7XG5cdFx0XHRkYXRhU2V0ID0gdHJ1ZTtcblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdEZyYWdtZW50LFxuXHRcdFx0bnVsbCxcblx0XHRcdHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0SW5zcGVjdG9yQ29udHJvbHMsXG5cdFx0XHRcdHsga2V5OiAnaW5zcGVjdG9yJyB9LFxuXHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoXG5cdFx0XHRcdFx0UGFuZWxCb2R5LFxuXHRcdFx0XHRcdHsgdGl0bGU6IF9fKCdJTUEgVmlkZW8gU2V0dGluZ3MnLCAnYW1wJykgfSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVGV4dENvbnRyb2wsIHtcblx0XHRcdFx0XHRcdGxhYmVsOiBfXygnSHR0cHMgVVJMIGZvciB5b3VyIFZBU1QgYWQgZG9jdW1lbnQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhVGFnLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVRhZzogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0h0dHBzIFVSTCBvZiB5b3VyIHZpZGVvIGNvbnRlbnQgKHJlcXVpcmVkKScsICdhbXAnKSxcblx0XHRcdFx0XHRcdHZhbHVlOiBkYXRhU3JjLFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzZXRBdHRyaWJ1dGVzKHsgZGF0YVNyYzogdmFsdWUgfSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSksXG5cdFx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFRleHRDb250cm9sLCB7XG5cdFx0XHRcdFx0XHRsYWJlbDogX18oJ0h0dHBzIFVSTCB0byBwcmV2aWV3IGltYWdlJywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0dmFsdWU6IGRhdGFQb3N0ZXIsXG5cdFx0XHRcdFx0XHRvbkNoYW5nZTogZnVuY3Rpb24gb25DaGFuZ2UodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNldEF0dHJpYnV0ZXMoeyBkYXRhUG9zdGVyOiB2YWx1ZSB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHR3cC5lbGVtZW50LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlQ29udHJvbCwge1xuXHRcdFx0XHRcdFx0bGFiZWw6IF9fKCdEZWxheSBBZCBSZXF1ZXN0JywgJ2FtcCcpLFxuXHRcdFx0XHRcdFx0Y2hlY2tlZDogZGF0YURlbGF5QWRSZXF1ZXN0LFxuXHRcdFx0XHRcdFx0b25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc2V0QXR0cmlidXRlcyh7IGRhdGFEZWxheUFkUmVxdWVzdDogIWRhdGFEZWxheUFkUmVxdWVzdCB9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KSxcblx0XHRcdFx0XHRnZXRMYXlvdXRDb250cm9scyhwcm9wcywgYW1wTGF5b3V0T3B0aW9ucylcblx0XHRcdFx0KVxuXHRcdFx0KSxcblx0XHRcdGRhdGFTZXQgJiYgZ2V0TWVkaWFQbGFjZWhvbGRlcihfXygnSU1BIFZpZGVvJywgJ2FtcCcpLCBkYXRhU3JjKSxcblx0XHRcdCFkYXRhU2V0ICYmIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UGxhY2Vob2xkZXIsXG5cdFx0XHRcdHsgbGFiZWw6IF9fKCdJTUEgVmlkZW8nLCAnYW1wJykgfSxcblx0XHRcdFx0d3AuZWxlbWVudC5jcmVhdGVFbGVtZW50KFxuXHRcdFx0XHRcdCdwJyxcblx0XHRcdFx0XHRudWxsLFxuXHRcdFx0XHRcdF9fKCdBZGQgcmVxdWlyZWQgZGF0YSB0byB1c2UgdGhlIGJsb2NrLicsICdhbXAnKVxuXHRcdFx0XHQpXG5cdFx0XHQpXG5cdFx0KTtcblx0fSxcblx0c2F2ZTogZnVuY3Rpb24gc2F2ZShfcmVmKSB7XG5cdFx0dmFyIGF0dHJpYnV0ZXMgPSBfcmVmLmF0dHJpYnV0ZXM7XG5cblx0XHR2YXIgaW1hUHJvcHMgPSB7XG5cdFx0XHRsYXlvdXQ6IGF0dHJpYnV0ZXMuYW1wTGF5b3V0LFxuXHRcdFx0aGVpZ2h0OiBhdHRyaWJ1dGVzLmhlaWdodCxcblx0XHRcdHdpZHRoOiBhdHRyaWJ1dGVzLndpZHRoLFxuXHRcdFx0J2RhdGEtdGFnJzogYXR0cmlidXRlcy5kYXRhVGFnLFxuXHRcdFx0J2RhdGEtc3JjJzogYXR0cmlidXRlcy5kYXRhU3JjXG5cdFx0fTtcblx0XHRpZiAoYXR0cmlidXRlcy5kYXRhUG9zdGVyKSB7XG5cdFx0XHRpbWFQcm9wc1snZGF0YS1wb3N0ZXInXSA9IGF0dHJpYnV0ZXMuZGF0YVBvc3Rlcjtcblx0XHR9XG5cdFx0aWYgKGF0dHJpYnV0ZXMuZGF0YURlbGF5QWRSZXF1ZXN0KSB7XG5cdFx0XHRpbWFQcm9wc1snZGF0YS1kZWxheS1hZC1yZXF1ZXN0J10gPSBhdHRyaWJ1dGVzLmRhdGFEZWxheUFkUmVxdWVzdDtcblx0XHR9XG5cdFx0cmV0dXJuIHdwLmVsZW1lbnQuY3JlYXRlRWxlbWVudCgnYW1wLWltYS12aWRlbycsIGltYVByb3BzKTtcblx0fVxufSk7IiwiLyoqXG4gKiBJbXBvcnQgYmxvY2tzLlxuICovXG5pbXBvcnQgJy4vYW1wLW1hdGhtbCc7XG5pbXBvcnQgJy4vYW1wLXRpbWVhZ28nO1xuaW1wb3J0ICcuL2FtcC1vMi1wbGF5ZXInO1xuaW1wb3J0ICcuL2FtcC1vb3lhbGEtcGxheWVyJztcbmltcG9ydCAnLi9hbXAtcmVhY2gtcGxheWVyJztcbmltcG9ydCAnLi9hbXAtc3ByaW5nYm9hcmQtcGxheWVyJztcbmltcG9ydCAnLi9hbXAtandwbGF5ZXInO1xuaW1wb3J0ICcuL2FtcC1icmlkLXBsYXllcic7XG5pbXBvcnQgJy4vYW1wLWltYS12aWRlbyc7Il0sIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbERBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QUN2RkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDOUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUMxS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDbEtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUNqSEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FDaE1BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQ2hKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUN2TEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQzNKQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOyIsInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///7\n")}}); |