From 2305a0a5c8f8d8c37e9fd97dafd99b547e54d6a9 Mon Sep 17 00:00:00 2001 From: pavlenex Date: Thu, 7 Nov 2019 19:43:25 +0100 Subject: [PATCH 01/49] Add CTA at the bottom + fix broken table tag --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index cea1c5ef9..6dfca4db7 100644 --- a/README.md +++ b/README.md @@ -160,3 +160,6 @@ The BTCPay Server Project is proudly supported by these entities through the [BT + + +If you'd like to support the project, please visit the [donation page](https://btcpayserver.org/donate/). \ No newline at end of file From 0f7458254e346111e60870cfd089b1e792e55eb1 Mon Sep 17 00:00:00 2001 From: Umar Bolatov Date: Wed, 11 Sep 2019 20:54:26 -0700 Subject: [PATCH 02/49] Retain store ids when filtering invoices --- .../Controllers/InvoiceController.UI.cs | 4 +++ .../Models/InvoicingModels/InvoicesModel.cs | 2 +- .../Views/Invoice/ListInvoices.cshtml | 26 ++++++++++++------- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/BTCPayServer/Controllers/InvoiceController.UI.cs b/BTCPayServer/Controllers/InvoiceController.UI.cs index a902ee263..e5ef213e8 100644 --- a/BTCPayServer/Controllers/InvoiceController.UI.cs +++ b/BTCPayServer/Controllers/InvoiceController.UI.cs @@ -398,11 +398,15 @@ namespace BTCPayServer.Controllers [BitpayAPIConstraint(false)] public async Task ListInvoices(string searchTerm = null, int skip = 0, int count = 50, int timezoneOffset = 0) { + var fs = new SearchString(searchTerm); + var storeIds = fs.GetFilterArray("storeid") != null ? fs.GetFilterArray("storeid") : new List().ToArray(); + var model = new InvoicesModel { SearchTerm = searchTerm, Skip = skip, Count = count, + StoreIds = storeIds, TimezoneOffset = timezoneOffset }; InvoiceQuery invoiceQuery = GetInvoiceQuery(searchTerm, timezoneOffset); diff --git a/BTCPayServer/Models/InvoicingModels/InvoicesModel.cs b/BTCPayServer/Models/InvoicingModels/InvoicesModel.cs index 26bcddfed..f516ec091 100644 --- a/BTCPayServer/Models/InvoicingModels/InvoicesModel.cs +++ b/BTCPayServer/Models/InvoicingModels/InvoicesModel.cs @@ -13,8 +13,8 @@ namespace BTCPayServer.Models.InvoicingModels public int Total { get; set; } public string SearchTerm { get; set; } public int? TimezoneOffset { get; set; } - public List Invoices { get; set; } = new List(); + public string[] StoreIds { get; set; } } public class InvoiceModel diff --git a/BTCPayServer/Views/Invoice/ListInvoices.cshtml b/BTCPayServer/Views/Invoice/ListInvoices.cshtml index daabddd24..5dd86093f 100644 --- a/BTCPayServer/Views/Invoice/ListInvoices.cshtml +++ b/BTCPayServer/Views/Invoice/ListInvoices.cshtml @@ -73,17 +73,25 @@ + + @{ + var storeIds = String.Join( + "", + Model.StoreIds.Select(storeId => string.Format(",storeid:{0}", storeId)) + ); + } + - diff --git a/BTCPayServer/wwwroot/js/trezor/trezor-add-derivation-scheme.js b/BTCPayServer/wwwroot/js/trezor/trezor-add-derivation-scheme.js deleted file mode 100644 index 79a4c45e5..000000000 --- a/BTCPayServer/wwwroot/js/trezor/trezor-add-derivation-scheme.js +++ /dev/null @@ -1,81 +0,0 @@ -$(document).ready(function() { - var trezorInit = false; - $(".check-for-trezor").on("click", - function() { - if (!trezorInit || !window.trezorDevice) { - trezorClient.init(); - trezorInit = true; - } - }); - - $("[data-trezorkeypath]").on("click", - function() { - - $("#trezor-error").hide(); - var keypath = $(this).data("trezorkeypath"); - var suffix = $(this).data("derivation-suffix"); - var keys = keypath.split("/"); - if (trezorDevice != null) { - var hardeningConstant = 0x80000000; - - trezorDevice.waitForSessionAndRun(function(session) { - - var path = []; - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - - if (keys[i].endsWith("'")) { - key = key.substring(0, key.length - 1); - path.push((parseInt(key) | hardeningConstant) >>> 0); - continue; - } - path.push(parseInt(key)); - } - return session.getHDNode(path, window.coinName); - }) - .then(function(hdNode) { - $("#RootFingerprint").val(hdNode.parentFingerprint); - $("#KeyPath").val(keys[keys.length - 1]); - $("#DerivationScheme").val(hdNode.toBase58()+ suffix); - $("#trezorsubmitbutton").show(); - }).catch(function(e){ - alert(e.message); - - $("#trezor-error").text("An error occurred when communicating with the trezor device. try with a different USB port?").show(); - - }) - } - }); - $("[data-hide]").on("click", function(){ - $($(this).data("hide")).hide(); - }); - $("[data-show]").on("click", function(){ - $($(this).data("show")).show(); - }); - - $(".trezor-account-dropdown select").on("input", function(){ - $(this).find(":selected").click(); - }); - - $("#trezor-address-type-select").on("input", function(){ - $(this).find(":selected").click(); - $("#RootFingerprint").val(""); - $("#KeyPath").val(""); - $("#DerivationScheme").val(""); - $("#trezorsubmitbutton").hide(); - - }); - -}); - -function onTrezorDeviceFound(device) { - $(".display-when-trezor-connected").show(); -} -function onTrezorDeviceLost(){ - $(".display-when-trezor-connected").hide(); - $("#RootFingerprint").val(""); - $(".trezor-account-dropdown").hide(); - $("#KeyPath").val(""); - $("#DerivationScheme").val(""); - $("#trezorsubmitbutton").hide(); -} diff --git a/BTCPayServer/wwwroot/js/trezor/trezor-client.js b/BTCPayServer/wwwroot/js/trezor/trezor-client.js deleted file mode 100644 index 35ce13d6f..000000000 --- a/BTCPayServer/wwwroot/js/trezor/trezor-client.js +++ /dev/null @@ -1,73 +0,0 @@ -window.deviceList = null; -window.trezorClient = { - init: function () { - document.getElementById("trezor-loading").style.display = "block"; - window.trezorDeviceList = new trezor.DeviceList({ - config: window.trezorConfig || null, - debug: true, - transport: new trezorLink.Lowlevel(new trezorLink.WebUsb(), function () { - return null; - }) - }); - - trezorDeviceList.on("connect", trezorClient.onDeviceConnected); - trezorDeviceList.on("connectUnacquired", function(e){ - e.steal.then(trezorClient.onDeviceConnected); - }); - - trezorDeviceList.on("transport", function(){ - if (trezorDeviceList.asArray().length < 1 || trezorDeviceList.requestNeeded) { - if (!navigator.usb) { - document.getElementById("trezor-loading").style.display = "none"; - document.getElementById("trezor-error").style.display = "block"; - document.getElementById("trezor-error").innerHTML = 'Your browser does not support WebUsb. Please switch to a supported browser or request Trezor to implement this feature.'; - return; - } - trezorClient.requestDevice(); - } - }); - - - }, - requestDevice: function () { - return trezorDeviceList.requestDevice().catch(function () { - - document.getElementById("trezor-loading").style.display = "none"; - document.getElementById("trezor-error").style.display = "block"; - document.getElementById("trezor-error").innerText = 'Device could not be acquired. Do you have another app using the device?'; - }) - }, - onDeviceConnected: function (device) { - window.trezorDevice = null; - document.getElementById("trezor-error").style.display = "none"; - document.getElementById("trezor-error").innerText = 'Device could not be used.'; - device.on('disconnect', function () { - window.trezorDevice = null; - document.getElementById("trezor-error").style.display = "block"; - document.getElementById("trezor-error").innerText = 'Device was disconnected'; - document.getElementById("trezor-loading").style.display = "block"; - document.getElementById("trezor-success").style.display = "none"; - if (window.onTrezorDeviceLost) { - window.onTrezorDeviceLost(); - } - }); - if (device.isBootloader()) { - document.getElementById("trezor-error").style.display = "block"; - document.getElementById("trezor-error").innerText = 'Device is in Bootloader, please reconnect it.'; - return; - } - if (!device.isInitialized()) { - document.getElementById("trezor-error").style.display = "block"; - document.getElementById("trezor-error").innerText = 'Device is not yet setup.'; - return; - } - document.getElementById("trezor-loading").style.display = "none"; - document.getElementById("trezor-success").style.display = "block"; - window.trezorDevice = device; - if (window.onTrezorDeviceFound) { - document.getElementById("trezor-devicename").innerText = device.features.label; - window.onTrezorDeviceFound(device); - } - } -}; - diff --git a/BTCPayServer/wwwroot/vendor/trezor/README.md b/BTCPayServer/wwwroot/vendor/trezor/README.md deleted file mode 100644 index a79b93ab3..000000000 --- a/BTCPayServer/wwwroot/vendor/trezor/README.md +++ /dev/null @@ -1 +0,0 @@ -The contents of this folder was generated by https://github.com/btcpayserver/trezor-webpack-wrapper diff --git a/BTCPayServer/wwwroot/vendor/trezor/trezor.js-umd.min.js b/BTCPayServer/wwwroot/vendor/trezor/trezor.js-umd.min.js deleted file mode 100644 index 01a70a316..000000000 --- a/BTCPayServer/wwwroot/vendor/trezor/trezor.js-umd.min.js +++ /dev/null @@ -1,64 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("trezor.js-umd",[],t):"object"==typeof exports?exports["trezor.js-umd"]=t():e["trezor.js-umd"]=t()}("undefined"!=typeof self?self:this,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=113)}([function(e,t,r){var n=r(1),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function s(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(o(n,t),t.Buffer=s),o(i,s),s.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},s.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},function(e,t,r){"use strict";(function(e){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -var n=r(116),i=r(117),o=r(57);function s(){return f.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(s()=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function d(e,t){if(f.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return F(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return H(e).length;default:if(n)return F(e).length;t=(""+t).toLowerCase(),n=!0}}function g(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=f.from(t,n)),f.isBuffer(t))return 0===t.length?-1:b(e,t,r,n,i);if("number"==typeof t)return t&=255,f.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):b(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function b(e,t,r,n,i){var o,s=1,a=e.length,f=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,a/=2,f/=2,r/=2}function u(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){var c=-1;for(o=r;oa&&(r=a-f),o=r;o>=0;o--){for(var h=!0,l=0;li&&(n=i):n=i;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function I(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function S(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i239?4:u>223?3:u>191?2:1;if(i+h<=r)switch(h){case 1:u<128&&(c=u);break;case 2:128==(192&(o=e[i+1]))&&(f=(31&u)<<6|63&o)>127&&(c=f);break;case 3:o=e[i+1],s=e[i+2],128==(192&o)&&128==(192&s)&&(f=(15&u)<<12|(63&o)<<6|63&s)>2047&&(f<55296||f>57343)&&(c=f);break;case 4:o=e[i+1],s=e[i+2],a=e[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(f=(15&u)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&f<1114112&&(c=f)}null===c?(c=65533,h=1):c>65535&&(c-=65536,n.push(c>>>10&1023|55296),c=56320|1023&c),n.push(c),i+=h}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var r="",n=0;for(;nthis.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return P(this,t,r);case"utf8":case"utf-8":return S(this,t,r);case"ascii":return C(this,t,r);case"latin1":case"binary":return O(this,t,r);case"base64":return I(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}.apply(this,arguments)},f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===f.compare(this,e)},f.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),""},f.prototype.compare=function(e,t,r,n,i){if(!f.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),a=Math.min(o,s),u=this.slice(n,i),c=e.slice(t,r),h=0;hi)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return m(this,e,t,r);case"ascii":return w(this,e,t,r);case"latin1":case"binary":return _(this,e,t,r);case"base64":return E(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},f.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function C(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;in)&&(r=n);for(var i="",o=t;or)throw new RangeError("Trying to access beyond buffer length")}function B(e,t,r,n,i,o){if(!f.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function D(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,o=Math.min(e.length-r,2);i>>8*(n?i:1-i)}function N(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,o=Math.min(e.length-r,4);i>>8*(n?i:3-i)&255}function U(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function L(e,t,r,n,o){return o||U(e,0,r,4),i.write(e,t,r,n,23,4),r+4}function R(e,t,r,n,o){return o||U(e,0,r,8),i.write(e,t,r,n,52,8),r+8}f.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t0&&(i*=256);)n+=this[e+--t]*i;return n},f.prototype.readUInt8=function(e,t){return t||x(e,1,this.length),this[e]},f.prototype.readUInt16LE=function(e,t){return t||x(e,2,this.length),this[e]|this[e+1]<<8},f.prototype.readUInt16BE=function(e,t){return t||x(e,2,this.length),this[e]<<8|this[e+1]},f.prototype.readUInt32LE=function(e,t){return t||x(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},f.prototype.readUInt32BE=function(e,t){return t||x(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},f.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var n=this[e],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*t)),n},f.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||x(e,t,this.length);for(var n=t,i=1,o=this[e+--n];n>0&&(i*=256);)o+=this[e+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*t)),o},f.prototype.readInt8=function(e,t){return t||x(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},f.prototype.readInt16LE=function(e,t){t||x(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt16BE=function(e,t){t||x(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},f.prototype.readInt32LE=function(e,t){return t||x(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},f.prototype.readInt32BE=function(e,t){return t||x(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},f.prototype.readFloatLE=function(e,t){return t||x(e,4,this.length),i.read(this,e,!0,23,4)},f.prototype.readFloatBE=function(e,t){return t||x(e,4,this.length),i.read(this,e,!1,23,4)},f.prototype.readDoubleLE=function(e,t){return t||x(e,8,this.length),i.read(this,e,!0,52,8)},f.prototype.readDoubleBE=function(e,t){return t||x(e,8,this.length),i.read(this,e,!1,52,8)},f.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||B(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+i]=e/o&255;return t+r},f.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,1,255,0),f.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},f.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},f.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,2,65535,0),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},f.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):N(this,e,t,!0),t+4},f.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,4,4294967295,0),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):N(this,e,t,!1),t+4},f.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);B(this,e,t,r,i-1,-i)}var o=0,s=1,a=0;for(this[t]=255&e;++o>0)-a&255;return t+r},f.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);B(this,e,t,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[t+o]=255&e;--o>=0&&(s*=256);)e<0&&0===a&&0!==this[t+o+1]&&(a=1),this[t+o]=(e/s>>0)-a&255;return t+r},f.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,1,127,-128),f.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},f.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):D(this,e,t,!0),t+2},f.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,2,32767,-32768),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):D(this,e,t,!1),t+2},f.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,4,2147483647,-2147483648),f.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):N(this,e,t,!0),t+4},f.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||B(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),f.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):N(this,e,t,!1),t+4},f.prototype.writeFloatLE=function(e,t,r){return L(this,e,t,!0,r)},f.prototype.writeFloatBE=function(e,t,r){return L(this,e,t,!1,r)},f.prototype.writeDoubleLE=function(e,t,r){return R(this,e,t,!0,r)},f.prototype.writeDoubleBE=function(e,t,r){return R(this,e,t,!1,r)},f.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else if(o<1e3||!f.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function H(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(M,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function Q(e,t,r,n){for(var i=0;i=t.length||i>=e.length);++i)t[i+r]=e[i];return i}}).call(this,r(5))},function(e,t,r){var n=r(60),i=r(35),o=n.tfJSON,s=n.TfTypeError,a=n.TfPropertyTypeError,f=n.tfSubError,u=n.getValueTypeName,c={arrayOf:function(e){function t(t,r){return!!i.Array(t)&&t.every(function(t,n){try{return l(e,t,r)}catch(e){throw f(e,n)}})}return e=h(e),t.toJSON=function(){return"["+o(e)+"]"},t},maybe:function e(t){function r(r,n){return i.Nil(r)||t(r,n,e)}return t=h(t),r.toJSON=function(){return"?"+o(t)},r},map:function(e,t){function r(r,n){if(!i.Object(r,n))return!1;if(i.Nil(r,n))return!1;for(var o in r){try{t&&l(t,o,n)}catch(e){throw f(e,o,"key")}try{var s=r[o];l(e,s,n)}catch(e){throw f(e,o)}}return!0}return e=h(e),t&&(t=h(t)),r.toJSON=t?function(){return"{"+o(t)+": "+o(e)+"}"}:function(){return"{"+o(e)+"}"},r},object:function(e){var t={};for(var r in e)t[r]=h(e[r]);function n(e,r){if(!i.Object(e))return!1;if(i.Nil(e))return!1;var n;try{for(n in t){l(t[n],e[n],r)}}catch(e){throw f(e,n)}if(r)for(n in e)if(!t[n])throw new a(void 0,n);return!0}return n.toJSON=function(){return o(t)},n},oneOf:function(){var e=[].slice.call(arguments).map(h);function t(t,r){return e.some(function(e){try{return l(e,t,r)}catch(e){return!1}})}return t.toJSON=function(){return e.map(o).join("|")},t},quacksLike:function(e){function t(t){return e===u(t)}return t.toJSON=function(){return e},t},tuple:function(){var e=[].slice.call(arguments).map(h);function t(t,r){return e.every(function(e,n){try{return l(e,t[n],r)}catch(e){throw f(e,n)}})&&(!r||t.length===arguments.length)}return t.toJSON=function(){return"("+e.map(o).join(", ")+")"},t},value:function(e){function t(t){return t===e}return t.toJSON=function(){return e},t}};function h(e){return i.String(e)?"?"===e[0]?c.maybe(h(e.slice(1))):i[e]||c.quacksLike(e):e&&i.Object(e)?i.Array(e)?c.arrayOf(h(e[0])):c.object(e):i.Function(e)?e:c.value(e)}function l(e,t,r,n){if(i.Function(e)){if(e(t,r))return!0;throw new s(n||e,t)}return l(h(e),t,r)}for(var p in i)l[p]=i[p];for(p in c)l[p]=c[p];var d=r(120);for(p in d)l[p]=d[p];l.async=function e(t,r,n,i){if("function"==typeof n)return e(t,r,!1,n);try{l(t,r,n)}catch(e){return i(e)}i()},l.compile=h,l.TfTypeError=s,l.TfPropertyTypeError=a,e.exports=l},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},function(e,t,r){var n=r(0).Buffer,i=r(58),o=r(59),s=r(2),a=r(6),f=r(61),u=r(7),c=r(121),h=u.OP_RESERVED;function l(e){return a.Buffer(e)||function(e){return a.Number(e)&&(e===u.OP_0||e>=u.OP_1&&e<=u.OP_16||e===u.OP_1NEGATE)}(e)}function p(e){return a.Array(e)&&e.every(l)}function d(e){return 0===e.length?u.OP_0:1===e.length?e[0]>=1&&e[0]<=16?h+e[0]:129===e[0]?u.OP_1NEGATE:void 0:void 0}function g(e){if(n.isBuffer(e))return e;s(a.Array,e);var t=e.reduce(function(e,t){return n.isBuffer(t)?1===t.length&&void 0!==d(t)?e+1:e+o.encodingLength(t.length)+t.length:e+1},0),r=n.allocUnsafe(t),i=0;if(e.forEach(function(e){if(n.isBuffer(e)){var t=d(e);if(void 0!==t)return r.writeUInt8(t,i),void(i+=1);i+=o.encode(r,e.length,i),e.copy(r,i),i+=e.length}else r.writeUInt8(e,i),i+=1}),i!==r.length)throw new Error("Could not decode chunks");return r}function y(e){if(a.Array(e))return e;s(a.Buffer,e);for(var t=[],r=0;ru.OP_0&&n<=u.OP_PUSHDATA4){var i=o.decode(e,r);if(null===i)return[];if((r+=i.size)+i.number>e.length)return[];var f=e.slice(r,r+i.number);r+=i.number;var c=d(f);void 0!==c?t.push(c):t.push(f)}else t.push(n),r+=1}return t}function b(e){var t=-129&e;return t>0&&t<4}e.exports={compile:g,decompile:y,fromASM:function(e){return s(a.String,e),g(e.split(" ").map(function(e){return void 0!==u[e]?u[e]:(s(a.Hex,e),n.from(e,"hex"))}))},toASM:function(e){return n.isBuffer(e)&&(e=y(e)),e.map(function(e){if(n.isBuffer(e)){var t=d(e);if(void 0===t)return e.toString("hex");e=t}return c[e]}).join(" ")},toStack:function(e){return e=y(e),s(p,e),e.map(function(e){return n.isBuffer(e)?e:e===u.OP_0?n.allocUnsafe(0):f.encode(e-h)})},number:r(61),isCanonicalPubKey:function(e){if(!n.isBuffer(e))return!1;if(e.length<33)return!1;switch(e[0]){case 2:case 3:return 33===e.length;case 4:return 65===e.length}return!1},isCanonicalSignature:function(e){return!!n.isBuffer(e)&&!!b(e[e.length-1])&&i.check(e.slice(0,-1))},isPushOnly:p,isDefinedHashType:b}},function(e,t){var r;r=function(){return this}();try{r=r||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){var n=r(2),i=Math.pow(2,31)-1;function o(e){return n.String(e)&&e.match(/^(m\/)?(\d+'?\/)*\d+'?$/)}o.toJSON=function(){return"BIP32 derivation path"};var s=21e14;var a=n.quacksLike("BigInteger"),f=n.quacksLike("Point"),u=n.compile({r:a,s:a}),c=n.compile({messagePrefix:n.oneOf(n.Buffer,n.String),bip32:{public:n.UInt32,private:n.UInt32},pubKeyHash:n.UInt16,scriptHash:n.UInt16,wif:n.UInt8}),h={BigInt:a,BIP32Path:o,Buffer256bit:n.BufferN(32),ECPoint:f,ECSignature:u,Hash160bit:n.BufferN(20),Hash256bit:n.BufferN(32),Network:c,Satoshi:function(e){return n.UInt53(e)&&e<=s},UInt31:function(e){return n.UInt32(e)&&e<=i}};for(var l in n)h[l]=n[l];e.exports=h},function(e){e.exports={OP_FALSE:0,OP_0:0,OP_PUSHDATA1:76,OP_PUSHDATA2:77,OP_PUSHDATA4:78,OP_1NEGATE:79,OP_RESERVED:80,OP_TRUE:81,OP_1:81,OP_2:82,OP_3:83,OP_4:84,OP_5:85,OP_6:86,OP_7:87,OP_8:88,OP_9:89,OP_10:90,OP_11:91,OP_12:92,OP_13:93,OP_14:94,OP_15:95,OP_16:96,OP_NOP:97,OP_VER:98,OP_IF:99,OP_NOTIF:100,OP_VERIF:101,OP_VERNOTIF:102,OP_ELSE:103,OP_ENDIF:104,OP_VERIFY:105,OP_RETURN:106,OP_TOALTSTACK:107,OP_FROMALTSTACK:108,OP_2DROP:109,OP_2DUP:110,OP_3DUP:111,OP_2OVER:112,OP_2ROT:113,OP_2SWAP:114,OP_IFDUP:115,OP_DEPTH:116,OP_DROP:117,OP_DUP:118,OP_NIP:119,OP_OVER:120,OP_PICK:121,OP_ROLL:122,OP_ROT:123,OP_SWAP:124,OP_TUCK:125,OP_CAT:126,OP_SUBSTR:127,OP_LEFT:128,OP_RIGHT:129,OP_SIZE:130,OP_INVERT:131,OP_AND:132,OP_OR:133,OP_XOR:134,OP_EQUAL:135,OP_EQUALVERIFY:136,OP_RESERVED1:137,OP_RESERVED2:138,OP_1ADD:139,OP_1SUB:140,OP_2MUL:141,OP_2DIV:142,OP_NEGATE:143,OP_ABS:144,OP_NOT:145,OP_0NOTEQUAL:146,OP_ADD:147,OP_SUB:148,OP_MUL:149,OP_DIV:150,OP_MOD:151,OP_LSHIFT:152,OP_RSHIFT:153,OP_BOOLAND:154,OP_BOOLOR:155,OP_NUMEQUAL:156,OP_NUMEQUALVERIFY:157,OP_NUMNOTEQUAL:158,OP_LESSTHAN:159,OP_GREATERTHAN:160,OP_LESSTHANOREQUAL:161,OP_GREATERTHANOREQUAL:162,OP_MIN:163,OP_MAX:164,OP_WITHIN:165,OP_RIPEMD160:166,OP_SHA1:167,OP_SHA256:168,OP_HASH160:169,OP_HASH256:170,OP_CODESEPARATOR:171,OP_CHECKSIG:172,OP_CHECKSIGVERIFY:173,OP_CHECKMULTISIG:174,OP_CHECKMULTISIGVERIFY:175,OP_NOP1:176,OP_NOP2:177,OP_CHECKLOCKTIMEVERIFY:177,OP_NOP3:178,OP_CHECKSEQUENCEVERIFY:178,OP_NOP4:179,OP_NOP5:180,OP_NOP6:181,OP_NOP7:182,OP_NOP8:183,OP_NOP9:184,OP_NOP10:185,OP_PUBKEYHASH:253,OP_PUBKEY:254,OP_INVALIDOPCODE:255}},function(e,t){var r,n,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function a(e){if(r===setTimeout)return setTimeout(e,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(e){r=o}try{n="function"==typeof clearTimeout?clearTimeout:s}catch(e){n=s}}();var f,u=[],c=!1,h=-1;function l(){c&&f&&(c=!1,f.length?u=f.concat(u):h=-1,u.length&&p())}function p(){if(!c){var e=a(l);c=!0;for(var t=u.length;t;){for(f=u,u=[];++h1)for(var r=1;r0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!n(t))throw TypeError("listener must be a function");var r=!1;function i(){this.removeListener(e,i),r||(r=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},r.prototype.removeListener=function(e,t){var r,o,s,a;if(!n(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(r=this._events[e]).length,o=-1,r===t||n(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(i(r)){for(a=s;a-- >0;)if(r[a]===t||r[a].listener&&r[a].listener===t){o=a;break}if(o<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(o,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n(r=this._events[e]))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?n(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(n(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},function(e,t,r){var n=r(66);function i(e){return n("rmd160").update(e).digest()}function o(e){return n("sha256").update(e).digest()}e.exports={hash160:function(e){return i(o(e))},hash256:function(e){return o(o(e))},ripemd160:i,sha1:function(e){return n("sha1").update(e).digest()},sha256:o}},function(e,t,r){var n=r(0).Buffer;function i(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}i.prototype.update=function(e,t){"string"==typeof e&&(t=t||"utf8",e=n.from(e,t));for(var r=this._block,i=this._blockSize,o=e.length,s=this._len,a=0;a=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,i=(r-n)/4294967296;this._block.writeUInt32BE(i,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var o=this._hash();return e?o.toString(e):o},i.prototype._update=function(){throw new Error("_update must be implemented by subclass")},e.exports=i},function(e,t,r){var n=r(78);e.exports={bitcoin:{messagePrefix:"Bitcoin Signed Message:\n",bech32:"bc",bip32:{public:76067358,private:76066276},pubKeyHash:0,scriptHash:5,wif:128,coin:n.BTC},testnet:{messagePrefix:"Bitcoin Signed Message:\n",bech32:"tb",bip32:{public:70617039,private:70615956},pubKeyHash:111,scriptHash:196,wif:239,coin:n.BTC},litecoin:{messagePrefix:"Litecoin Signed Message:\n",bip32:{public:27108450,private:27106558},pubKeyHash:48,scriptHash:50,wif:176,coin:n.LTC},dash:{messagePrefix:"DarkCoin Signed Message:\n",bip32:{public:76067358,private:76066276},pubKeyHash:76,scriptHash:16,wif:204,coin:n.DASH},dashTest:{messagePrefix:"DarkCoin Signed Message:\n",bip32:{public:70617039,private:70615956},pubKeyHash:140,scriptHash:19,wif:239,coin:n.DASH},zcash:{messagePrefix:"ZCash Signed Message:\n",bech32:"bc",bip32:{public:76067358,private:76066276},pubKeyHash:7352,scriptHash:7357,wif:128,consensusBranchId:{1:0,2:0,3:1537743641,4:1991772603},coin:n.ZEC},zcashTest:{messagePrefix:"ZCash Signed Message:\n",bech32:"tb",bip32:{public:70617039,private:70615956},pubKeyHash:7461,scriptHash:7354,wif:239,consensusBranchId:{1:0,2:0,3:1537743641,4:1991772603},coin:n.ZEC},capricoin:{messagePrefix:"Capricoin Signed Message:\n",bech32:null,bip32:{public:76067358,private:76066276},pubKeyHash:28,scriptHash:35,wif:239,coin:n.CAPRICOIN}}},function(e,t,r){"use strict";(function(t){var n,i=r(1),o=i.Buffer,s={};for(n in i)i.hasOwnProperty(n)&&"SlowBuffer"!==n&&"Buffer"!==n&&(s[n]=i[n]);var a=s.Buffer={};for(n in o)o.hasOwnProperty(n)&&"allocUnsafe"!==n&&"allocUnsafeSlow"!==n&&(a[n]=o[n]);if(s.Buffer.prototype=o.prototype,a.from&&a.from!==Uint8Array.from||(a.from=function(e,t,r){if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type '+typeof e);if(e&&void 0===e.length)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);return o(e,t,r)}),a.alloc||(a.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError('The "size" argument must be of type number. Received type '+typeof e);if(e<0||e>=2*(1<<30))throw new RangeError('The value "'+e+'" is invalid for option "size"');var n=o(e);return t&&0!==t.length?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n}),!s.kStringMaxLength)try{s.kStringMaxLength=t.binding("buffer").kStringMaxLength}catch(e){}s.constants||(s.constants={MAX_LENGTH:s.kMaxLength},s.kStringMaxLength&&(s.constants.MAX_STRING_LENGTH=s.kStringMaxLength)),e.exports=s}).call(this,r(8))},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=r(13).EventEmitter;t.EventEmitter=function(e){function t(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,n),t}()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(e,t){for(var r=0;r - * @license MIT - */ -function n(e,t){if(e===t)return 0;for(var r=e.length,n=t.length,i=0,o=Math.min(r,n);i=0;u--)if(c[u]!==h[u])return!1;for(u=c.length-1;u>=0;u--)if(f=c[u],!v(e[f],t[f],r,n))return!1;return!0}(e,t,r,s))}return r?e===t:e==t}function m(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function w(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function _(e,t,r,n){var i;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof r&&(n=r,r=null),i=function(e){var t;try{e()}catch(e){t=e}return t}(t),n=(r&&r.name?" ("+r.name+").":".")+(n?" "+n:"."),e&&!i&&y(i,r,"Missing expected exception"+n);var s="string"==typeof n,a=!e&&i&&!r;if((!e&&o.isError(i)&&s&&w(i,r)||a)&&y(i,r,"Got unwanted exception"+n),e&&i&&r&&!w(i,r)||!e&&i)throw i}h.AssertionError=function(e){var t;this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=d(g((t=this).actual),128)+" "+t.operator+" "+d(g(t.expected),128),this.generatedMessage=!0);var r=e.stackStartFunction||y;if(Error.captureStackTrace)Error.captureStackTrace(this,r);else{var n=new Error;if(n.stack){var i=n.stack,o=p(r),s=i.indexOf("\n"+o);if(s>=0){var a=i.indexOf("\n",s+1);i=i.substring(a+1)}this.stack=i}}},o.inherits(h.AssertionError,Error),h.fail=y,h.ok=b,h.equal=function(e,t,r){e!=t&&y(e,t,r,"==",h.equal)},h.notEqual=function(e,t,r){e==t&&y(e,t,r,"!=",h.notEqual)},h.deepEqual=function(e,t,r){v(e,t,!1)||y(e,t,r,"deepEqual",h.deepEqual)},h.deepStrictEqual=function(e,t,r){v(e,t,!0)||y(e,t,r,"deepStrictEqual",h.deepStrictEqual)},h.notDeepEqual=function(e,t,r){v(e,t,!1)&&y(e,t,r,"notDeepEqual",h.notDeepEqual)},h.notDeepStrictEqual=function e(t,r,n){v(t,r,!0)&&y(t,r,n,"notDeepStrictEqual",e)},h.strictEqual=function(e,t,r){e!==t&&y(e,t,r,"===",h.strictEqual)},h.notStrictEqual=function(e,t,r){e===t&&y(e,t,r,"!==",h.notStrictEqual)},h.throws=function(e,t,r){_(!0,e,t,r)},h.doesNotThrow=function(e,t,r){_(!1,e,t,r)},h.ifError=function(e){if(e)throw e};var E=Object.keys||function(e){var t=[];for(var r in e)s.call(e,r)&&t.push(r);return t}}).call(this,r(5))},function(e,t,r){},function(e,t,r){"use strict";var n=r(222),i=r(223);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=m,t.resolve=function(e,t){return m(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?m(e,!1,!0).resolveObject(t):t},t.format=function(e){i.isString(e)&&(e=m(e));return e instanceof o?e.format():o.prototype.format.call(e)},t.Url=o;var s=/^([a-z0-9.+-]+:)/i,a=/:[0-9]*$/,f=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,u=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(u),h=["%","/","?",";","#"].concat(c),l=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,g={javascript:!0,"javascript:":!0},y={javascript:!0,"javascript:":!0},b={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=r(224);function m(e,t,r){if(e&&i.isObject(e)&&e instanceof o)return e;var n=new o;return n.parse(e,t,r),n}o.prototype.parse=function(e,t,r){if(!i.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var o=e.indexOf("?"),a=-1!==o&&o127?D+="x":D+=B[N];if(!D.match(p)){var L=k.slice(0,C),R=k.slice(C+1),M=B.match(d);M&&(L.push(M[1]),R.unshift(M[2])),R.length&&(m="/"+R.join(".")+m),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),P||(this.hostname=n.toASCII(this.hostname));var j=this.port?":"+this.port:"",F=this.hostname||"";this.host=F+j,this.href+=this.host,P&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==m[0]&&(m="/"+m))}if(!g[E])for(C=0,x=c.length;C0)&&r.host.split("@"))&&(r.auth=P.shift(),r.host=r.hostname=P.shift());return r.search=e.search,r.query=e.query,i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!A.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var S=A.slice(-1)[0],T=(r.host||e.host||A.length>1)&&("."===S||".."===S)||""===S,C=0,O=A.length;O>=0;O--)"."===(S=A[O])?A.splice(O,1):".."===S?(A.splice(O,1),C++):C&&(A.splice(O,1),C--);if(!_&&!E)for(;C--;C)A.unshift("..");!_||""===A[0]||A[0]&&"/"===A[0].charAt(0)||A.unshift(""),T&&"/"!==A.join("/").substr(-1)&&A.push("");var P,k=""===A[0]||A[0]&&"/"===A[0].charAt(0);I&&(r.hostname=r.host=k?"":A.length?A.shift():"",(P=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@"))&&(r.auth=P.shift(),r.host=r.hostname=P.shift()));return(_=_||r.host&&A.length)&&!k&&A.unshift(""),A.length?r.pathname=A.join("/"):(r.pathname=null,r.path=null),i.isNull(r.pathname)&&i.isNull(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},o.prototype.parseHost=function(){var e=this.host,t=a.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,r){"use strict";(function(t){!t.version||0===t.version.indexOf("v0.")||0===t.version.indexOf("v1.")&&0!==t.version.indexOf("v1.8.")?e.exports={nextTick:function(e,r,n,i){if("function"!=typeof e)throw new TypeError('"callback" argument must be a function');var o,s,a=arguments.length;switch(a){case 0:case 1:return t.nextTick(e);case 2:return t.nextTick(function(){e.call(null,r)});case 3:return t.nextTick(function(){e.call(null,r,n)});case 4:return t.nextTick(function(){e.call(null,r,n,i)});default:for(o=new Array(a-1),s=0;s>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function a(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,"�";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,"�";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,"�"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function f(e,t){if((e.length-t)%2==0){var r=e.toString("utf16le",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString("utf16le",t,e.length-1)}function u(e){var t=e&&e.length?this.write(e):"";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString("utf16le",0,r)}return t}function c(e,t){var r=(e.length-t)%3;return 0===r?e.toString("base64",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString("base64",t,e.length-r))}function h(e){var t=e&&e.length?this.write(e):"";return this.lastNeed?t+this.lastChar.toString("base64",0,3-this.lastNeed):t}function l(e){return e.toString(this.encoding)}function p(e){return e&&e.length?this.write(e):""}t.StringDecoder=o,o.prototype.write=function(e){if(0===e.length)return"";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return"";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return i>0&&(e.lastNeed=i-1),i;if(--n=0)return i>0&&(e.lastNeed=i-2),i;if(--n=0)return i>0&&(2===i?i=0:e.lastNeed=i-3),i;return 0}(this,e,t);if(!this.lastNeed)return e.toString("utf8",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString("utf8",t,n)},o.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},function(e,t,r){"use strict";var n=r(66),i=r(158);e.exports=i(function(e){var t=n("sha256").update(e).digest();return n("sha256").update(t).digest()})},function(e,t,r){var n=r(81),i=r(82),o=r(167);e.exports={Curve:i,Point:n,getCurveByName:o}},function(e,t,r){"use strict";var n=r(32);e.exports=n.call(Function.call,Object.prototype.hasOwnProperty)},function(e,t,r){"use strict";var n=r(198);e.exports=Function.prototype.bind||n},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debugInOut=function(e,t,r){var n=r.value;return r.value=function(){var e,r=this.debug||"init"===t&&arguments[0],i=this.name,o=Array.prototype.slice.call(arguments);return r&&(e=console).log.apply(e,["[trezor-link] Calling "+i+"."+t+"("].concat(function(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t1e3?e.substring(0,1e3)+"...":e})),[")"])),n.apply(this,arguments).then(function(e){return r&&(null==e?console.log("[trezor-link] Done "+i+"."+t):console.log("[trezor-link] Done "+i+"."+t+", result ",e)),e},function(e){throw r&&console.error("[trezor-link] Error in "+i+"."+t,e),e})},r}},function(e,t,r){"use strict";var n="undefined"!=typeof Uint8Array&&"undefined"!=typeof Uint16Array&&"undefined"!=typeof Int32Array;function i(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if("object"!=typeof r)throw new TypeError(r+"must be non-object");for(var n in r)i(r,n)&&(e[n]=r[n])}}return e},t.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var o={arraySet:function(e,t,r,n,i){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),i);else for(var o=0;oi||e%1!=0)throw new RangeError("value out of range")}function s(e){return o(e),e<253?1:e<=65535?3:e<=4294967295?5:9}e.exports={encode:function e(t,r,i){if(o(t),r||(r=n.allocUnsafe(s(t))),!n.isBuffer(r))throw new TypeError("buffer must be a Buffer instance");return i||(i=0),t<253?(r.writeUInt8(t,i),e.bytes=1):t<=65535?(r.writeUInt8(253,i),r.writeUInt16LE(t,i+1),e.bytes=3):t<=4294967295?(r.writeUInt8(254,i),r.writeUInt32LE(t,i+1),e.bytes=5):(r.writeUInt8(255,i),r.writeUInt32LE(t>>>0,i+1),r.writeUInt32LE(t/4294967296|0,i+5),e.bytes=9),r},decode:function e(t,r){if(!n.isBuffer(t))throw new TypeError("buffer must be a Buffer instance");r||(r=0);var i=t.readUInt8(r);if(i<253)return e.bytes=1,i;if(253===i)return e.bytes=3,t.readUInt16LE(r+1);if(254===i)return e.bytes=5,t.readUInt32LE(r+1);e.bytes=9;var s=t.readUInt32LE(r+1),a=4294967296*t.readUInt32LE(r+5)+s;return o(a),a},encodingLength:s}},function(e,t,r){"use strict";(function(t,n,i){var o=r(27);function s(e){var t=this;this.next=null,this.entry=null,this.finish=function(){!function(e,t,r){var n=e.entry;e.entry=null;for(;n;){var i=n.callback;t.pendingcb--,i(r),n=n.next}t.corkedRequestsFree?t.corkedRequestsFree.next=e:t.corkedRequestsFree=e}(t,e)}}e.exports=v;var a,f=!t.browser&&["v0.10","v0.9."].indexOf(t.version.slice(0,5))>-1?n:o.nextTick;v.WritableState=b;var u=r(23);u.inherits=r(3);var c={deprecate:r(143)},h=r(70),l=r(0).Buffer,p=i.Uint8Array||function(){};var d,g=r(71);function y(){}function b(e,t){a=a||r(10),e=e||{};var n=t instanceof a;this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.writableObjectMode);var i=e.highWaterMark,u=e.writableHighWaterMark,c=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(u||0===u)?u:c,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var h=!1===e.decodeStrings;this.decodeStrings=!h,this.defaultEncoding=e.defaultEncoding||"utf8",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,i=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,i){--t.pendingcb,r?(o.nextTick(i,n),o.nextTick(I,e,t),e._writableState.errorEmitted=!0,e.emit("error",n)):(i(n),e._writableState.errorEmitted=!0,e.emit("error",n),I(e,t))}(e,r,n,t,i);else{var s=E(r);s||r.corked||r.bufferProcessing||!r.bufferedRequest||_(e,r),n?f(w,e,r,s,i):w(e,r,s,i)}}(t,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new s(this)}function v(e){if(a=a||r(10),!(d.call(v,this)||this instanceof a))return new v(e);this._writableState=new b(e,this),this.writable=!0,e&&("function"==typeof e.write&&(this._write=e.write),"function"==typeof e.writev&&(this._writev=e.writev),"function"==typeof e.destroy&&(this._destroy=e.destroy),"function"==typeof e.final&&(this._final=e.final)),h.call(this)}function m(e,t,r,n,i,o,s){t.writelen=n,t.writecb=s,t.writing=!0,t.sync=!0,r?e._writev(i,t.onwrite):e._write(i,o,t.onwrite),t.sync=!1}function w(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit("drain"))}(e,t),t.pendingcb--,n(),I(e,t)}function _(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,i=new Array(n),o=t.corkedRequestsFree;o.entry=r;for(var a=0,f=!0;r;)i[a]=r,r.isBuf||(f=!1),r=r.next,a+=1;i.allBuffers=f,m(e,t,!0,t.length,i,"",o.finish),t.pendingcb++,t.lastBufferedRequest=null,o.next?(t.corkedRequestsFree=o.next,o.next=null):t.corkedRequestsFree=new s(t),t.bufferedRequestCount=0}else{for(;r;){var u=r.chunk,c=r.encoding,h=r.callback;if(m(e,t,!1,t.objectMode?1:u.length,u,c,h),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function E(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function A(e,t){e._final(function(r){t.pendingcb--,r&&e.emit("error",r),t.prefinished=!0,e.emit("prefinish"),I(e,t)})}function I(e,t){var r=E(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||("function"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,o.nextTick(A,e,t)):(t.prefinished=!0,e.emit("prefinish")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit("finish"))),r}u.inherits(v,h),b.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(b.prototype,"buffer",{get:c.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.","DEP0003")})}catch(e){}}(),"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(d=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(e){return!!d.call(this,e)||this===v&&(e&&e._writableState instanceof b)}})):d=function(e){return e instanceof this},v.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},v.prototype.write=function(e,t,r){var n,i=this._writableState,s=!1,a=!i.objectMode&&(n=e,l.isBuffer(n)||n instanceof p);return a&&!l.isBuffer(e)&&(e=function(e){return l.from(e)}(e)),"function"==typeof t&&(r=t,t=null),a?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof r&&(r=y),i.ended?function(e,t){var r=new Error("write after end");e.emit("error",r),o.nextTick(t,r)}(this,r):(a||function(e,t,r,n){var i=!0,s=!1;return null===r?s=new TypeError("May not write null values to stream"):"string"==typeof r||void 0===r||t.objectMode||(s=new TypeError("Invalid non-string/buffer chunk")),s&&(e.emit("error",s),o.nextTick(n,s),i=!1),i}(this,i,e,r))&&(i.pendingcb++,s=function(e,t,r,n,i,o){if(!r){var s=function(e,t,r){e.objectMode||!1===e.decodeStrings||"string"!=typeof t||(t=l.from(t,r));return t}(t,n,i);n!==s&&(r=!0,i="buffer",n=s)}var a=t.objectMode?1:n.length;t.length+=a;var f=t.length-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(v.prototype,"writableHighWaterMark",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(e,t,r){r(new Error("_write() is not implemented"))},v.prototype._writev=null,v.prototype.end=function(e,t,r){var n=this._writableState;"function"==typeof e?(r=e,e=null,t=null):"function"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,I(e,t),r&&(t.finished?o.nextTick(r):e.once("finish",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(v.prototype,"destroyed",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),v.prototype.destroy=g.destroy,v.prototype._undestroy=g.undestroy,v.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,r(8),r(141).setImmediate,r(5))},function(e,t,r){var n=r(0).Buffer,i=r(21).Transform,o=r(28).StringDecoder;function s(e){i.call(this),this.hashMode="string"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}r(3)(s,i),s.prototype.update=function(e,t,r){"string"==typeof e&&(e=n.from(e,t));var i=this._update(e);return this.hashMode?this:(r&&(i=this._toString(i,r)),i)},s.prototype.setAutoPadding=function(){},s.prototype.getAuthTag=function(){throw new Error("trying to get auth tag in unsupported state")},s.prototype.setAuthTag=function(){throw new Error("trying to set auth tag in unsupported state")},s.prototype.setAAD=function(){throw new Error("trying to set aad in unsupported state")},s.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){n=e}finally{r(n)}},s.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},s.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},s.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new o(t),this._encoding=t),this._encoding!==t)throw new Error("can't switch encodings");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},e.exports=s},function(e,t,r){var n=r(0).Buffer,i=r(14),o=r(154),s=r(4),a=r(65),f=r(7),u=r(2),c=r(6),h=r(40),l=r(16),p=r(78);function d(e){var t=e.length;return h.encodingLength(t)+t}function g(e){this.version=3,this.locktime=0,this.timestamp=0,this.network=e||l.zcash,this.ins=[],this.outs=[],this.joinsplits=[],this.versionGroupId="0x03c48270",this.expiry=0,this.spendDescs=[],this.outputDescs=[],this.dashType=0,this.dashPayload=0,this.invalidTransaction=!1}g.DEFAULT_SEQUENCE=4294967295,g.SIGHASH_ALL=1,g.SIGHASH_NONE=2,g.SIGHASH_SINGLE=3,g.SIGHASH_ANYONECANPAY=128,g.ADVANCED_TRANSACTION_MARKER=0,g.ADVANCED_TRANSACTION_FLAG=1;var y=n.allocUnsafe(0),b=[],v=n.from("0000000000000000000000000000000000000000000000000000000000000000","hex"),m=n.from("0000000000000000000000000000000000000000000000000000000000000001","hex"),w=n.from("ffffffffffffffff","hex"),_={script:y,valueBuffer:w};g.ZCASH_OVERWINTER_VERSION=3,g.ZCASH_SAPLING_VERSION=4,g.ZCASH_JOINSPLITS_SUPPORT_VERSION=2,g.ZCASH_NUM_JS_INPUTS=2,g.ZCASH_NUM_JS_OUTPUTS=2,g.ZCASH_NOTECIPHERTEXT_SIZE=601,g.ZCASH_G1_PREFIX_MASK=2,g.ZCASH_G2_PREFIX_MASK=10,g.DASH_NORMAL=0,g.DASH_PROVIDER_REGISTER=1,g.DASH_PROVIDER_UPDATE_SERVICE=2,g.DASH_PROVIDER_UPDATE_REGISTRAR=3,g.DASH_PROVIDER_UPDATE_REVOKE=4,g.DASH_COINBASE=5,g.DASH_QUORUM_COMMITMENT=6,g.PREVOUTS_HASH_PERSON=new n("ZcashPrevoutHash"),g.SEQUENCE_HASH_PERSON=new n("ZcashSequencHash"),g.OUTPUTS_HASH_PERSON=new n("ZcashOutputsHash"),g.JOINSPLITS_HASH_PERSON=new n("ZcashJSplitsHash"),g.OVERWINTER_HASH_PERSON=n.concat([new n("ZcashSigHash"),n.from("191ba85b","hex")]);var E=580,A=80;g.fromBuffer=function(e,t,r){var n=0;function i(t){return n+=t,e.slice(n-t,n)}function o(){var t=e.readUInt8(n);return n+=1,t}function s(){var t=e.readUInt32LE(n);return n+=4,t}function f(){var t=a.readUInt64LE(e,n);return n+=8,t}function u(){var t=h.decode(e,n);return n+=h.decode.bytes,t}function c(){return i(u())}function d(){for(var e=u(),t=[],r=0;r>>31;if(m.version=2147483647&m.version,m.version>=3){if(!w)throw new Error("zcash tx v3+ not overwintered");m.versionGroupId=s()}}else if(p.isDash(m.network)&&(m.dashType=m.version>>16,m.version=65535&m.version,3===m.version&&(m.dashTypeg.DASH_QUORUM_COMMITMENT)))throw new Error("Unsupported Dash transaction type");var _=e.readUInt8(n),I=e.readUInt8(n+1),S=!1;p.isZcash(m.network)||_===g.ADVANCED_TRANSACTION_MARKER&&I===g.ADVANCED_TRANSACTION_FLAG&&(n+=2,S=!0),p.isCapricoin(m.network)&&(m.timestamp=s());for(var T=u(),C=0;C0&&(m.joinsplitPubkey=i(32),m.joinsplitSig=i(64)),m.isSaplingCompatible()&&m.spendDescs.length+m.outputDescs.length>0&&(m.bindingSig=i(64))}if(m.isDashSpecialTransaction()&&(m.dashPayload=c()),r)return m;if(n!==e.length)throw new Error("Transaction has unexpected data");return m},g.fromHex=function(e,t){return g.fromBuffer(new n(e,"hex"),t)},g.isCoinbaseHash=function(e){u(c.Hash256bit,e);for(var t=0;t<32;++t)if(0!==e[t])return!1;return!0},g.prototype.isCoinbase=function(){return 1===this.ins.length&&g.isCoinbaseHash(this.ins[0].hash)},g.prototype.addInput=function(e,t,r,n){return u(c.tuple(c.Hash256bit,c.UInt32,c.maybe(c.UInt32),c.maybe(c.Buffer)),arguments),c.Null(r)&&(r=g.DEFAULT_SEQUENCE),this.ins.push({hash:e,index:t,script:n||y,sequence:r,witness:b})-1},g.prototype.addOutput=function(e,t){return u(c.tuple(c.Buffer,c.Satoshi),arguments),this.outs.push({script:e,value:t})-1},g.prototype.hasWitnesses=function(){return this.ins.some(function(e){return 0!==e.witness.length})},g.prototype.weight=function(){return 3*this.__byteLength(!1)+this.__byteLength(!0)},g.prototype.virtualSize=function(){return Math.ceil(this.weight()/4)},g.prototype.byteLength=function(){return this.__byteLength(!0)},g.prototype.joinsplitByteLength=function(){var e=this.joinsplits.length,t=0;return t+=a.varIntSize(e),e>0&&(this.isSaplingCompatible()?t+=1698*e:t+=1802*e,t+=32,t+=64),t},g.prototype.spendDescsByteLength=function(){var e=0;return e+=h.encodingLength(this.spendDescs.length),e+=384*this.spendDescs.length},g.prototype.outputDescsByteLength=function(){var e=0;return e+=h.encodingLength(this.outputDescs.length),e+=948*this.outputDescs.length},g.prototype.zcashTransactionByteLength=function(){if(!p.isZcash(this.network))throw new Error("zcashTransactionByteLength can only be called when using Zcash network");var e=0;return e+=4,this.isOverwinterCompatible()&&(e+=4),e+=h.encodingLength(this.ins.length),e+=this.ins.reduce(function(e,t){return e+40+d(t.script)},0),e+=h.encodingLength(this.outs.length),e+=this.outs.reduce(function(e,t){return e+8+d(t.script)},0),e+=4,this.isOverwinterCompatible()&&(e+=4),this.isSaplingCompatible()&&(e+=8,e+=this.spendDescsByteLength(),e+=this.outputDescsByteLength()),this.supportsJoinSplits()&&(e+=this.joinsplitByteLength()),this.isSaplingCompatible()&&this.spendDescs.length+this.outputDescs.length>0&&(e+=64),e},g.prototype.__byteLength=function(e){if(p.isZcash(this.network))return this.zcashTransactionByteLength();var t=e&&this.hasWitnesses();return(t?10:8)+(this.timestamp?4:0)+h.encodingLength(this.ins.length)+h.encodingLength(this.outs.length)+this.ins.reduce(function(e,t){return e+40+d(t.script)},0)+this.outs.reduce(function(e,t){return e+8+d(t.script)},0)+(this.isDashSpecialTransaction()?d(this.dashPayload):0)+(t?this.ins.reduce(function(e,t){return e+(r=t.witness,n=r.length,h.encodingLength(n)+r.reduce(function(e,t){return e+d(t)},0));var r,n},0):0)},g.prototype.clone=function(){var e=new g;return e.version=this.version,e.locktime=this.locktime,e.timestamp=this.timestamp,e.network=this.network,e.dashType=this.dashType,e.dashPayload=this.dashPayload,e.invalidTransaction=this.invalidTransaction,p.isZcash(e.network)&&(e.versionGroupId=this.versionGroupId,e.expiry=this.expiry),e.ins=this.ins.map(function(e){return{hash:e.hash,index:e.index,script:e.script,sequence:e.sequence,witness:e.witness}}),e.outs=this.outs.map(function(e){return{script:e.script,value:e.value}}),e},g.prototype.hashForSignature=function(e,t,r){if(u(c.tuple(c.UInt32,c.Buffer,c.Number),arguments),e>=this.ins.length)return m;var o=s.compile(s.decompile(t).filter(function(e){return e!==f.OP_CODESEPARATOR})),a=this.clone();if((31&r)===g.SIGHASH_NONE)a.outs=[],a.ins.forEach(function(t,r){r!==e&&(t.sequence=0)});else if((31&r)===g.SIGHASH_SINGLE){if(e>=this.outs.length)return m;a.outs.length=e+1;for(var h=0;h0&&(o(this.joinsplitPubkey),o(this.joinsplitSig)),this.isSaplingCompatible()&&this.spendDescs.length+this.outputDescs.length>0&&o(this.bindingSig)}return this.isDashSpecialTransaction()&&d(this.dashPayload),void 0!==t?e.slice(t,i):e},g.prototype.toHex=function(){return this.toBuffer().toString("hex")},g.prototype.setInputScript=function(e,t){u(c.tuple(c.Number,c.Buffer),arguments),this.ins[e].script=t},g.prototype.setWitness=function(e,t){u(c.tuple(c.Number,[c.Buffer]),arguments),this.ins[e].witness=t},g.prototype.getExtraData=function(){if(this.supportsJoinSplits()){var e=this.toBuffer(),t=this.joinsplitByteLength();return e.slice(e.length-t)}if(this.isDashSpecialTransaction()){var r=h.encode(this.dashPayload.length);return n.concat([r,this.dashPayload])}return null},g.prototype.isZcashTransaction=function(){return p.isZcash(this.network)},g.prototype.isSaplingCompatible=function(){return p.isZcash(this.network)&&this.version>=g.ZCASH_SAPLING_VERSION},g.prototype.isOverwinterCompatible=function(){return p.isZcash(this.network)&&this.version>=g.ZCASH_OVERWINTER_VERSION},g.prototype.supportsJoinSplits=function(){return p.isZcash(this.network)&&this.version>=g.ZCASH_JOINSPLITS_SUPPORT_VERSION},g.prototype.isDashSpecialTransaction=function(){return p.isDash(this.network)&&3===this.version&&this.dashType!==g.DASH_NORMAL},e.exports=g},function(e,t,r){var n=r(45),i=r(14),o=r(161),s=r(83),a=r(2),f=r(6),u=r(169),c=r(16),h=r(11),l=r(30),p=o.__curve;function d(e,t,r){if(r&&a({compressed:f.maybe(f.Boolean),network:f.maybe(f.Network)},r),r=r||{},e){if(e.signum()<=0)throw new Error("Private key must be greater than 0");if(e.compareTo(p.n)>=0)throw new Error("Private key must be less than the curve order");if(t)throw new TypeError("Unexpected publicKey parameter");this.d=e}else a(f.ECPoint,t),this.__Q=t;this.compressed=void 0===r.compressed||r.compressed,this.network=r.network||c.bitcoin}Object.defineProperty(d.prototype,"Q",{get:function(){return!this.__Q&&this.d&&(this.__Q=p.G.multiply(this.d)),this.__Q}}),d.fromPublicKeyBuffer=function(e,t){var r=l.Point.decodeFrom(p,e);return new d(null,r,{compressed:r.compressed,network:t})},d.fromWIF=function(e,t){var r=u.decode(e),n=r.version;if(f.Array(t)){if(!(t=t.filter(function(e){return n===e.wif}).pop()))throw new Error("Unknown network version")}else if(t=t||c.bitcoin,n!==t.wif)throw new Error("Invalid network version");return new d(h.fromBuffer(r.privateKey),null,{compressed:r.compressed,network:t})},d.makeRandom=function(e){var t,r=(e=e||{}).rng||s;do{var n=r(32);a(f.Buffer256bit,n),t=h.fromBuffer(n)}while(t.signum()<=0||t.compareTo(p.n)>=0);return new d(t,null,e)},d.prototype.getAddress=function(){return n.toBase58Check(i.hash160(this.getPublicKeyBuffer()),this.getNetwork().pubKeyHash)},d.prototype.getNetwork=function(){return this.network},d.prototype.getPublicKeyBuffer=function(){return this.Q.getEncoded(this.compressed)},d.prototype.sign=function(e){if(!this.d)throw new Error("Missing private key");return o.sign(e,this.d)},d.prototype.toWIF=function(){if(!this.d)throw new Error("Missing private key");return u.encode(this.network.wif,this.d.toBuffer(32),this.compressed)},d.prototype.verify=function(e,t){return o.verify(e,t,this.Q)},e.exports=d},function(e,t,r){var n=r(0).Buffer,i=r(157),o=r(29),s=r(4),a=r(36),f=r(16),u=r(2),c=r(6);function h(e){var t=o.decode(e);if(t.length<21)throw new TypeError(e+" is too short");if(t.length>22)throw new TypeError(e+" is too long");var r=22===t.length,n=r?2:1;return{version:r?t.readUInt16BE(0):t.readUInt8(0),hash:t.slice(n)}}function l(e){var t=i.decode(e),r=i.fromWords(t.words.slice(1));return{version:t.words[0],prefix:t.prefix,data:n.from(r)}}function p(e,t){u(c.tuple(c.Hash160bit,c.UInt16),arguments);var r=t>255,i=r?22:21,s=r?2:1,a=n.allocUnsafe(i);return r?a.writeUInt16BE(t,0):a.writeUInt8(t,0),e.copy(a,s),o.encode(a)}function d(e,t,r){var n=i.toWords(e);return n.unshift(t),i.encode(r,n)}e.exports={fromBase58Check:h,fromBech32:l,fromOutputScript:function(e,t){if(t=t||f.bitcoin,a.pubKeyHash.output.check(e))return p(s.compile(e).slice(3,23),t.pubKeyHash);if(a.scriptHash.output.check(e))return p(s.compile(e).slice(2,22),t.scriptHash);if(a.witnessPubKeyHash.output.check(e))return d(s.compile(e).slice(2,22),0,t.bech32);if(a.witnessScriptHash.output.check(e))return d(s.compile(e).slice(2,34),0,t.bech32);throw new Error(s.toASM(e)+" has no matching Address")},toBase58Check:p,toBech32:d,toOutputScript:function(e,t){var r;t=t||f.bitcoin;try{r=h(e)}catch(e){}if(r){if(r.version===t.pubKeyHash)return a.pubKeyHash.output.encode(r.hash);if(r.version===t.scriptHash)return a.scriptHash.output.encode(r.hash)}else{try{r=l(e)}catch(e){}if(r){if(r.prefix!==t.bech32)throw new Error(e+" has an invalid prefix");if(0===r.version){if(20===r.data.length)return a.witnessPubKeyHash.output.encode(r.data);if(32===r.data.length)return a.witnessScriptHash.output.encode(r.data)}}}throw new Error(e+" has no matching Script")}}},function(e,t,r){(function(e,n){var i=/%[sdj%]/g;t.format=function(e){if(!b(e)){for(var t=[],r=0;r=o)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}}),f=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),d(r)?n.showHidden=r:r&&t._extend(n,r),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=f),c(n,e,n.depth)}function f(e,t){var r=a.styles[t];return r?"["+a.colors[r][0]+"m"+e+"["+a.colors[r][1]+"m":e}function u(e,t){return e}function c(e,r,n){if(e.customInspect&&r&&A(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var i=r.inspect(n,e);return b(i)||(i=c(e,i,n)),i}var o=function(e,t){if(v(t))return e.stylize("undefined","undefined");if(b(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(y(t))return e.stylize(""+t,"number");if(d(t))return e.stylize(""+t,"boolean");if(g(t))return e.stylize("null","null")}(e,r);if(o)return o;var s=Object.keys(r),a=function(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),E(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return h(r);if(0===s.length){if(A(r)){var f=r.name?": "+r.name:"";return e.stylize("[Function"+f+"]","special")}if(m(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(_(r))return e.stylize(Date.prototype.toString.call(r),"date");if(E(r))return h(r)}var u,w="",I=!1,S=["{","}"];(p(r)&&(I=!0,S=["[","]"]),A(r))&&(w=" [Function"+(r.name?": "+r.name:"")+"]");return m(r)&&(w=" "+RegExp.prototype.toString.call(r)),_(r)&&(w=" "+Date.prototype.toUTCString.call(r)),E(r)&&(w=" "+h(r)),0!==s.length||I&&0!=r.length?n<0?m(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),u=I?function(e,t,r,n,i){for(var o=[],s=0,a=t.length;s=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(u,w,S)):S[0]+w+S[1]}function h(e){return"["+Error.prototype.toString.call(e)+"]"}function l(e,t,r,n,i,o){var s,a,f;if((f=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=f.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):f.set&&(a=e.stylize("[Setter]","special")),C(n,i)||(s="["+i+"]"),a||(e.seen.indexOf(f.value)<0?(a=g(r)?c(e,f.value,null):c(e,f.value,r-1)).indexOf("\n")>-1&&(a=o?a.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+a.split("\n").map(function(e){return" "+e}).join("\n")):a=e.stylize("[Circular]","special")),v(s)){if(o&&i.match(/^\d+$/))return a;(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+a}function p(e){return Array.isArray(e)}function d(e){return"boolean"==typeof e}function g(e){return null===e}function y(e){return"number"==typeof e}function b(e){return"string"==typeof e}function v(e){return void 0===e}function m(e){return w(e)&&"[object RegExp]"===I(e)}function w(e){return"object"==typeof e&&null!==e}function _(e){return w(e)&&"[object Date]"===I(e)}function E(e){return w(e)&&("[object Error]"===I(e)||e instanceof Error)}function A(e){return"function"==typeof e}function I(e){return Object.prototype.toString.call(e)}function S(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(e){if(v(o)&&(o=n.env.NODE_DEBUG||""),e=e.toUpperCase(),!s[e])if(new RegExp("\\b"+e+"\\b","i").test(o)){var r=n.pid;s[e]=function(){var n=t.format.apply(t,arguments);console.error("%s %d: %s",e,r,n)}}else s[e]=function(){};return s[e]},t.inspect=a,a.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},a.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=p,t.isBoolean=d,t.isNull=g,t.isNullOrUndefined=function(e){return null==e},t.isNumber=y,t.isString=b,t.isSymbol=function(e){return"symbol"==typeof e},t.isUndefined=v,t.isRegExp=m,t.isObject=w,t.isDate=_,t.isError=E,t.isFunction=A,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e},t.isBuffer=r(166);var T=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function C(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){var e,r;console.log("%s - %s",(e=new Date,r=[S(e.getHours()),S(e.getMinutes()),S(e.getSeconds())].join(":"),[e.getDate(),T[e.getMonth()],r].join(" ")),t.format.apply(t,arguments))},t.inherits=r(3),t._extend=function(e,t){if(!t||!w(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,r(5),r(8))},function(e,t,r){(function(t){var n=r(58),i=r(2),o=r(6),s=r(11);function a(e,t){i(o.tuple(o.BigInt,o.BigInt),arguments),this.r=e,this.s=t}a.parseCompact=function(e){i(o.BufferN(65),e);var t=e.readUInt8(0)-27;if(t!==(7&t))throw new Error("Invalid signature parameter");return{compressed:!!(4&t),i:3&t,signature:a.fromRSBuffer(e.slice(1))}},a.fromRSBuffer=function(e){return i(o.BufferN(64),e),new a(s.fromBuffer(e.slice(0,32)),s.fromBuffer(e.slice(32,64)))},a.fromDER=function(e){var t=n.decode(e);return new a(s.fromDERInteger(t.r),s.fromDERInteger(t.s))},a.parseScriptSignature=function(e){var t=e.readUInt8(e.length-1),r=-129&t;if(r<=0||r>=4)throw new Error("Invalid hashType "+t);return{signature:a.fromDER(e.slice(0,-1)),hashType:t}},a.prototype.toCompact=function(e,r){r&&(e+=4),e+=27;var n=t.alloc(65);return n.writeUInt8(e,0),this.toRSBuffer(n,1),n},a.prototype.toDER=function(){var e=t.from(this.r.toDERInteger()),r=t.from(this.s.toDERInteger());return n.encode(e,r)},a.prototype.toRSBuffer=function(e,r){return e=e||t.alloc(64),this.r.toBuffer(32).copy(e,r),this.s.toBuffer(32).copy(e,r+32),e},a.prototype.toScriptSignature=function(e){var r=-129&e;if(r<=0||r>=4)throw new Error("Invalid hashType "+e);var n=t.alloc(1);return n.writeUInt8(e,0),t.concat([this.toDER(),n])},e.exports=a}).call(this,r(1).Buffer)},function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.BITCOIN_COIN_INFO=void 0,t.bjsNode2privNode=function(e){var t=e.keyPair.d;if(!t)throw new Error("Not a private node.");var r=e.depth,n=e.parentFingerprint,i=e.index,o=t.toString(16),s=e.chainCode.toString("hex");return{depth:r,fingerprint:n,child_num:i,chain_code:s,private_key:o}},t.pubNode2bjsNode=a,t.pubKey2bjsNode=f,t.derivePubKeyHash=function(e,t,r){return e[t].derive(r).getIdentifier()},t.getHDNode=function(e,t,r,i){var o=e.device,s=o&&(2===o.features.major_version&&o.atLeast("2.0.10")||1===o.features.major_version&&o.atLeast("1.7.2")),a="string"==typeof r.name?r:null;if(s&&a)return function(e,t,r,n){var i=t.concat([0]),o=function(e,t){if(!Array.isArray(e)||e.length<1)return;switch((2147483647&e[0])>>>0){case 44:return"SPENDADDRESS";case 48:return"SPENDMULTISIG";case 49:return t.segwitPubMagic?"SPENDP2SHWITNESS":void 0;case 84:return t.segwitNativePubMagic?"SPENDWITNESS":void 0;default:return}}(t,r),s=function(e,t){var r=JSON.parse(JSON.stringify(t));"SPENDP2SHWITNESS"===e&&t.segwitPubMagic&&(r.network.bip32.public=t.segwitPubMagic);"SPENDWITNESS"===e&&t.segwitNativePubMagic&&(r.network.bip32.public=t.segwitNativePubMagic);return r.network}(o,r);return e._getPublicKeyInternal(t,r.name,o).then(function(t){var a=f(t,s,!1),u=t.message.xpub;return e._getPublicKeyInternal(i,r.name,o).then(function(e){var t=e.message.xpub;return n(u,s,0).then(function(e){if(e!==t)throw new Error("Invalid public key transmission detected - invalid child cross-check. Computed derived: "+e+", Computed received: "+t);return a.keyPair.network=r.network,a})})})}(e,t,a,i);var u=a?a.network:r;return function(e,t,r,i){var o=t.concat([0]);return e._getPublicKeyInternal(t).then(function(t){var s=f(t,r),a=t.message.xpub;return e._getPublicKeyInternal(o).then(function(e){var t=e.message.xpub;return i(a,n.networks.bitcoin,0).then(function(e){if(e!==t)throw new Error("Invalid public key transmission detected - invalid child cross-check. Computed derived: "+e+", Computed received: "+t);return s})})})}(e,t,u,i)},t.harden=function(e){return(e|u)>>>0};var n=o(r(20)),i=o(r(30));o(r(25));function o(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}var s=i.getCurveByName("secp256k1");t.BITCOIN_COIN_INFO={name:"Bitcoin",network:n.networks.bitcoin,segwitPubMagic:77429938};function a(t,r){var o=new e(t.chain_code,"hex"),a=new e(t.public_key,"hex");if(null==s)throw new Error("secp256k1 is null");var f=i.Point.decodeFrom(s,a),u=new n.HDNode(new n.ECPair(null,f,{network:r}),o);return u.depth=+t.depth,u.index=+t.child_num,u.parentFingerprint=t.fingerprint,u}function f(e,t){var r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=a(e.message.node,t),o=i.toBase58(),s=r?function(e,t){if(76067358===t.bip32.public)return e;var r=n.HDNode.fromBase58(e);return r.keyPair.network=t,r.toBase58()}(e.message.xpub,t):n.HDNode.fromBase58(e.message.xpub,t).toBase58();if(o!==s)throw new Error("Invalid public key transmission detected - invalid xpub check. Key: "+o+", Received: "+s);return i}var u=2147483648}).call(this,r(1).Buffer)},function(e,t,r){"use strict"; -/** - * @license - * https://github.com/bitcoincashjs/cashaddr - * Copyright (c) 2017-2018 Emilio Almansi - * Distributed under the MIT software license, see the accompanying - * file LICENSE or http://www.opensource.org/licenses/mit-license.php. - */function n(e){var t=new Error;this.name=t.name="ValidationError",this.message=t.message=e,this.stack=t.stack}n.prototype=Object.create(Error.prototype),e.exports={ValidationError:n,validate:function(e,t){if(!e)throw new n(t)}}},function(e,t,r){"use strict";(function(n){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i=d(r(9)),o=Object.assign||function(e){for(var t=1;t=0}},{key:"_watch",value:function(){var e=this,t=function(t){t===e&&(e.changedSessionsEvent.emit(e.isUsed(),e.isUsedHere()),e.isStolen()&&null!=e.currentSessionObject&&e._stolenEvent.emit())};t(this),this.deviceList.changedSessionsEvent.on(t),this.deviceList.onDisconnect(this,function r(n){n===e&&(e.disconnectEvent.emit(),e.deviceList.disconnectEvent.removeListener(r),e.deviceList.changedSessionsEvent.removeListener(t),e.connected=!1,[e.changedSessionsEvent,e.sendEvent,e.receiveEvent,e.errorEvent,e.buttonEvent,e.pinEvent,e.wordEvent].forEach(function(e){return e.removeAllListeners()}))})}},{key:"isUsed",value:function(){return null!=this.deviceList.getSession(this.originalDescriptor.path,!1)}},{key:"isUsedHere",value:function(){var e=this.deviceList.getSession(this.originalDescriptor.path,!1),t=null!=this.currentSessionObject?this.currentSessionObject.getId():null;return null!=e&&t===e}},{key:"isUsedElsewhere",value:function(){return this.isUsed()&&!this.isUsedHere()}},{key:"isStolen",value:function(){var e=null!=this.currentSessionObject;return this.isUsed()?!e||this.isUsedElsewhere():!!e}},{key:"onbeforeunload",value:function(){var e=this.currentSessionObject;if(null!=e){if(this.clearSession){var t=this.features.model;null!=t&&"T"===t||e.clearSession()}e.release(!0)}}}],[{key:"_run",value:function(){var e=y(i.default.mark(function e(r,n,o,s,a,f,u,c){var h,l;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t._acquire(n,o,s,a,u,c);case 2:if(h=e.sent,e.prev=3,l=void 0,!c){e.next=11;break}if(null!=u){e.next=8;break}throw new Error("Debug link cannot load first");case 8:l=u.features,e.next=14;break;case 11:return e.next=13,h.initialize();case 13:l=e.sent.message;case 14:if(null!=l){e.next=16;break}throw new Error("Features unexpected null");case 16:return e.next=18,r(h,l);case 18:return e.abrupt("return",e.sent);case 19:return e.prev=19,e.next=22,t._release(o,h,s,f);case 22:return e.finish(19);case 23:case"end":return e.stop()}},e,this,[[3,,19,23]])}));return function(t,r,n,i,o,s,a,f){return e.apply(this,arguments)}}()},{key:"_release",value:function(e,t,r,n){var i=(0,h.lock)(function(){return A(t.release(!1),function(n,i){return null==i&&r.setHard(e.path,null,t.debugLink),Promise.resolve()})});return A(i,function(e,t){return null!=n?n(t):Promise.resolve()})}},{key:"_acquire",value:function(e,t,r,n,i,o){return(0,h.lock)(function(){return e.acquire({path:t.path,previous:t.session},o).then(function(e){return r.setHard(t.path,e,o),e})}).then(function(s){var a=new c.default(e,s,t,!!r.options.debugInfo,i,r.xpubDerive,o);return null!=n&&n(a),a})}},{key:"fromDescriptor",value:function(e,r,n){var i=o({},r,{session:null});return t._run(function(r,o){return new t(e,i,o,n,!!i.debug)},e,i,n,null,null,null,!1)}}]),t}();function v(e,t){e.on(function(e){0!==t.listenerCount()&&t.emit(e)})}function m(e,t){e.on(function(e){t.emit(e)})}function w(e,t){e.on(function(e,r){t.emit(e,r)})}function _(e,t){e.on(function(e){t.emit(e)})}function E(e,t){e.on(function(e,r){t.emit(e,r)})}function A(e,t){return e.then(function(e){return t(e,null).then(function(){return e})},function(e){return t(null,e).then(function(){throw e},function(){throw e})})}t.default=b,e.exports=t.default}).call(this,r(1).Buffer)},function(e,t,r){"use strict";var n=Function.prototype.toString,i=/^\s*class\b/,o=function(e){try{var t=n.call(e);return i.test(t)}catch(e){return!1}},s=Object.prototype.toString,a="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;e.exports=function(e){if(!e)return!1;if("function"!=typeof e&&"object"!=typeof e)return!1;if("function"==typeof e&&!e.prototype)return!0;if(a)return function(e){try{return!o(e)&&(n.call(e),!0)}catch(e){return!1}}(e);if(o(e))return!1;var t=s.call(e);return"[object Function]"===t||"[object GeneratorFunction]"===t}},function(e,t,r){(function(e){var n=r(227),i=r(107),o=r(229),s=r(230),a=r(26),f=t;f.request=function(t,r){t="string"==typeof t?a.parse(t):o(t);var i=-1===e.location.protocol.search(/^https?:$/)?"http:":"",s=t.protocol||i,f=t.hostname||t.host,u=t.port,c=t.path||"/";f&&-1!==f.indexOf(":")&&(f="["+f+"]"),t.url=(f?s+"//"+f:"")+(u?":"+u:"")+c,t.method=(t.method||"GET").toUpperCase(),t.headers=t.headers||{};var h=new n(t);return r&&h.on("response",r),h},f.get=function(e,t){var r=f.request(e,t);return r.end(),r},f.ClientRequest=n,f.IncomingMessage=i.IncomingMessage,f.Agent=function(){},f.Agent.defaultMaxSockets=4,f.globalAgent=new f.Agent,f.STATUS_CODES=s,f.METHODS=["CHECKOUT","CONNECT","COPY","DELETE","GET","HEAD","LOCK","M-SEARCH","MERGE","MKACTIVITY","MKCOL","MOVE","NOTIFY","OPTIONS","PATCH","POST","PROPFIND","PROPPATCH","PURGE","PUT","REPORT","SEARCH","SUBSCRIBE","TRACE","UNLOCK","UNSUBSCRIBE"]}).call(this,r(5))},function(e,t,r){(function(t,n){var i=r(242).convert,o=r(263),s=r(21).PassThrough,a=r(112);function f(e,t){t=t||{},this.body=e,this.bodyUsed=!1,this.size=t.size||0,this.timeout=t.timeout||0,this._raw=[],this._abort=!1}e.exports=f,f.prototype.json=function(){var e=this;return this._decode().then(function(t){try{return JSON.parse(t.toString())}catch(t){return f.Promise.reject(new a("invalid json response body at "+e.url+" reason: "+t.message,"invalid-json"))}})},f.prototype.text=function(){return this._decode().then(function(e){return e.toString()})},f.prototype.buffer=function(){return this._decode()},f.prototype._decode=function(){var e=this;return this.bodyUsed?f.Promise.reject(new Error("body used already for: "+this.url)):(this.bodyUsed=!0,this._bytes=0,this._abort=!1,this._raw=[],new f.Promise(function(r,n){var i;return"string"==typeof e.body?(e._bytes=e.body.length,e._raw=[new t(e.body)],r(e._convert())):e.body instanceof t?(e._bytes=e.body.length,e._raw=[e.body],r(e._convert())):(e.timeout&&(i=setTimeout(function(){e._abort=!0,n(new a("response timeout at "+e.url+" over limit: "+e.timeout,"body-timeout"))},e.timeout)),e.body.on("error",function(t){n(new a("invalid response body at: "+e.url+" reason: "+t.message,"system",t))}),e.body.on("data",function(t){if(!e._abort&&null!==t){if(e.size&&e._bytes+t.length>e.size)return e._abort=!0,void n(new a("content size at "+e.url+" over limit: "+e.size,"max-size"));e._bytes+=t.length,e._raw.push(t)}}),void e.body.on("end",function(){e._abort||(clearTimeout(i),r(e._convert()))}))}))},f.prototype._convert=function(e){e=e||"utf-8";var r,n,o=this.headers.get("content-type"),s="utf-8";if(o){if(!/text\/html|text\/plain|\+xml|\/xml/i.test(o))return t.concat(this._raw);r=/charset=([^;]*)/i.exec(o)}if(!r&&this._raw.length>0){for(var a=0;a1024);a++);n=n.substr(0,1024)}return!r&&n&&(r=/r.LABEL_MAX_LENGTH&&(e=e.slice(0,r.LABEL_MAX_LENGTH)),this.applySettings({label:e})}},{key:"togglePassphrase",value:function(e){return this.applySettings({use_passphrase:e})}},{key:"changeHomescreen",value:function(e){return this.applySettings({homescreen:e})}},{key:"_getHDNodeInternal",value:function(e,t){return d.getHDNode(this,e,I(t),this.xpubDerive)}},{key:"getHDNode",value:function(e,t){return this._getHDNodeInternal(e,t)}},{key:"setU2FCounter",value:function(e){return this.typedCall("SetU2FCounter","Success",{u2f_counter:e})}},{key:"backupDevice",value:function(){return this.typedCall("BackupDevice","Success",{})}},{key:"nemGetAddress",value:function(e,t,r){return this.typedCall("NEMGetAddress","NEMAddress",{address_n:e,network:t,show_display:!!r})}},{key:"nemSignTx",value:function(e){return this.typedCall("NEMSignTx","NEMSignedTx",e)}},{key:"nemDecryptMessage",value:function(e,t,r,n){return this.typedCall("NEMDecryptMessage","NEMDecryptedMessage",{address_n:e,network:t,public_key:r,payload:n})}}]),r}(),o.LABEL_MAX_LENGTH=16,_((i=s).prototype,"getAddress",[S],Object.getOwnPropertyDescriptor(i.prototype,"getAddress"),i.prototype),_(i.prototype,"ethereumGetAddress",[S],Object.getOwnPropertyDescriptor(i.prototype,"ethereumGetAddress"),i.prototype),_(i.prototype,"getPublicKey",[S],Object.getOwnPropertyDescriptor(i.prototype,"getPublicKey"),i.prototype),_(i.prototype,"signTx",[S],Object.getOwnPropertyDescriptor(i.prototype,"signTx"),i.prototype),_(i.prototype,"signBjsTx",[S],Object.getOwnPropertyDescriptor(i.prototype,"signBjsTx"),i.prototype),_(i.prototype,"signEthTx",[S],Object.getOwnPropertyDescriptor(i.prototype,"signEthTx"),i.prototype),_(i.prototype,"verifyAddress",[S],Object.getOwnPropertyDescriptor(i.prototype,"verifyAddress"),i.prototype),_(i.prototype,"getHDNode",[S],Object.getOwnPropertyDescriptor(i.prototype,"getHDNode"),i.prototype),_(i.prototype,"nemSignTx",[S],Object.getOwnPropertyDescriptor(i.prototype,"nemSignTx"),i.prototype),i);function A(e){return e.charAt(0).toUpperCase()+e.slice(1)}function I(e){if("string"!=typeof e)return e;var t=A(e).toLowerCase(),r=p.networks[t];if(null==r)throw new Error("No network with the name "+t+".");return r}function S(e,t,r){var n=r.value;return r.value=function(){var e=this,t=arguments,r=Promise.resolve();return null!=this.device&&(r=this.device.xpubIntegrityCheck(this)),r.then(function(){return n.apply(e,t)})},r}t.default=E}).call(this,r(1).Buffer)},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t,r){var n=r(0).Buffer;e.exports={check:function(e){if(e.length<8)return!1;if(e.length>72)return!1;if(48!==e[0])return!1;if(e[1]!==e.length-2)return!1;if(2!==e[2])return!1;var t=e[3];if(0===t)return!1;if(5+t>=e.length)return!1;if(2!==e[4+t])return!1;var r=e[5+t];return!(0===r||6+t+r!==e.length||128&e[4]||t>1&&0===e[4]&&!(128&e[5])||128&e[t+6]||r>1&&0===e[t+6]&&!(128&e[t+7]))},decode:function(e){if(e.length<8)throw new Error("DER sequence length is too short");if(e.length>72)throw new Error("DER sequence length is too long");if(48!==e[0])throw new Error("Expected DER sequence");if(e[1]!==e.length-2)throw new Error("DER sequence length is invalid");if(2!==e[2])throw new Error("Expected DER integer");var t=e[3];if(0===t)throw new Error("R length is zero");if(5+t>=e.length)throw new Error("R length is too long");if(2!==e[4+t])throw new Error("Expected DER integer (2)");var r=e[5+t];if(0===r)throw new Error("S length is zero");if(6+t+r!==e.length)throw new Error("S length is invalid");if(128&e[4])throw new Error("R value is negative");if(t>1&&0===e[4]&&!(128&e[5]))throw new Error("R value excessively padded");if(128&e[t+6])throw new Error("S value is negative");if(r>1&&0===e[t+6]&&!(128&e[t+7]))throw new Error("S value excessively padded");return{r:e.slice(4,4+t),s:e.slice(6+t)}},encode:function(e,t){var r=e.length,i=t.length;if(0===r)throw new Error("R length is zero");if(0===i)throw new Error("S length is zero");if(r>33)throw new Error("R length is too long");if(i>33)throw new Error("S length is too long");if(128&e[0])throw new Error("R value is negative");if(128&t[0])throw new Error("S value is negative");if(r>1&&0===e[0]&&!(128&e[1]))throw new Error("R value excessively padded");if(i>1&&0===t[0]&&!(128&t[1]))throw new Error("S value excessively padded");var o=n.allocUnsafe(6+r+i);return o[0]=48,o[1]=o.length-2,o[2]=2,o[3]=e.length,e.copy(o,4),o[4+r]=2,o[5+r]=t.length,t.copy(o,6+r),o}}},function(e,t,r){var n=r(7);function i(e){return ee.length)return null;r=e.readUInt8(t+1),i=2}else if(o===n.OP_PUSHDATA2){if(t+3>e.length)return null;r=e.readUInt16LE(t+1),i=3}else{if(t+5>e.length)return null;if(o!==n.OP_PUSHDATA4)throw new Error("Unexpected opcode");r=e.readUInt32LE(t+1),i=5}return{opcode:o,number:r,size:i}}}},function(e,t,r){var n=r(3),i=r(35);function o(e,t,r){var n;this.__error=Error.call(this),this.__type=e,this.__value=t,this.__valueTypeName=r,Object.defineProperty(this,"message",{enumerable:!0,get:function(){return n||(r=r||f(t),n=c(e,t,r))}})}function s(e,t,r,n,i,o){var s;this.__error=i||Error.call(this),this.__label=r,this.__property=t,this.__type=e,this.__value=n,this.__valueTypeName=o,Object.defineProperty(this,"message",{enumerable:!0,get:function(){return s||(e?(o=o||f(n),s=function(e,t,r,n,i){var o='" of type ';"key"===t&&(o='" with key type ');return c('property "'+u(r)+o+u(e),n,i)}(e,r,t,n,o)):s='Unexpected property "'+t+'"',s)}}),Object.defineProperty(this,"stack",{get:function(){return this.__error.stack}})}function a(e){return e.name||e.toString().match(/function (.*?)\s*\(/)[1]}function f(e){return i.Nil(e)?"":a(e.constructor)}function u(e){return i.Function(e)?e.toJSON?e.toJSON():a(e):i.Array(e)?"Array":e&&i.Object(e)?"Object":void 0!==e?e:""}function c(e,t,r){var n=function(e){return i.Function(e)?"":i.String(e)?JSON.stringify(e):e&&i.Object(e)?"":e}(t);return"Expected "+u(e)+", got"+(""!==r?" "+r:"")+(""!==n?" "+n:"")}[o,s].forEach(function(e){n(e,Error)}),e.exports={TfTypeError:o,TfPropertyTypeError:s,tfCustomError:function(e,t){return new o(e,{},t)},tfSubError:function(e,t,r){return e instanceof s?(t=t+"."+e.__property,r=e.__label,new s(e.__type,t,r,e.__value,e.__error,e.__valueTypeName)):e instanceof o?new s(e.__type,t,r,e.__value,e.__error,e.__valueTypeName):e},tfJSON:u,getValueTypeName:f}},function(e,t,r){var n=r(0).Buffer;e.exports={decode:function(e,t,r){t=t||4,r=void 0===r||r;var n=e.length;if(0===n)return 0;if(n>t)throw new TypeError("Script number overflow");if(r&&0==(127&e[n-1])&&(n<=1||0==(128&e[n-2])))throw new Error("Non-minimally encoded script number");if(5===n){var i=e.readUInt32LE(0),o=e.readUInt8(4);return 128&o?-(4294967296*(-129&o)+i):4294967296*o+i}for(var s=0,a=0;a2147483647?5:e>8388607?4:e>32767?3:e>127?2:e>0?1:0}(t),i=n.allocUnsafe(r),o=e<0,s=0;s>=8;return 128&i[r-1]?i.writeUInt8(o?128:0,r-1):o&&(i[r-1]|=128),i}}},function(e,t,r){var n=r(4),i=r(6),o=r(2),s=r(7),a=s.OP_RESERVED;function f(e,t){var r=n.decompile(e);if(r.length<4)return!1;if(r[r.length-1]!==s.OP_CHECKMULTISIG)return!1;if(!i.Number(r[0]))return!1;if(!i.Number(r[r.length-2]))return!1;var o=r[0]-a,f=r[r.length-2]-a;return!(o<=0)&&(!(f>16)&&(!(o>f)&&(f===r.length-3&&(!!t||r.slice(1,-2).every(n.isCanonicalPubKey)))))}f.toJSON=function(){return"multi-sig output"},e.exports={check:f,decode:function(e,t){var r=n.decompile(e);return o(f,r,t),{m:r[0]-a,pubKeys:r.slice(1,-2)}},encode:function(e,t){o({m:i.Number,pubKeys:[n.isCanonicalPubKey]},{m:e,pubKeys:t});var r=t.length;if(rt)throw new Error("RangeError: value out of range");if(Math.floor(e)!==e)throw new Error("value has a fractional component")}e.exports={pushDataSize:n.encodingLength,readPushDataInt:n.decode,readUInt64LE:function(e,t){var r=e.readUInt32LE(t),n=e.readUInt32LE(t+4);return o((n*=4294967296)+r,9007199254740991),n+r},readVarInt:function(e,t){return{number:i.decode(e,t),size:i.decode.bytes}},varIntBuffer:i.encode,varIntSize:i.encodingLength,writePushDataInt:n.encode,writeUInt64LE:function(e,t,r){return o(t,9007199254740991),e.writeInt32LE(-1&t,r),e.writeUInt32LE(Math.floor(t/4294967296),r+4),r+8},writeVarInt:function(e,t,r){return i.encode(t,e,r),i.encode.bytes}}},function(e,t,r){"use strict";var n=r(3),i=r(67),o=r(73),s=r(74),a=r(42);function f(e){a.call(this,"digest"),this._hash=e}n(f,a),f.prototype._update=function(e){this._hash.update(e)},f.prototype._final=function(){return this._hash.digest()},e.exports=function(e){return"md5"===(e=e.toLowerCase())?new i:"rmd160"===e||"ripemd160"===e?new o:new f(s(e))}},function(e,t,r){"use strict";var n=r(3),i=r(68),o=r(0).Buffer,s=new Array(16);function a(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}function f(e,t){return e<>>32-t}function u(e,t,r,n,i,o,s){return f(e+(t&r|~t&n)+i+o|0,s)+t|0}function c(e,t,r,n,i,o,s){return f(e+(t&n|r&~n)+i+o|0,s)+t|0}function h(e,t,r,n,i,o,s){return f(e+(t^r^n)+i+o|0,s)+t|0}function l(e,t,r,n,i,o,s){return f(e+(r^(t|~n))+i+o|0,s)+t|0}n(a,i),a.prototype._update=function(){for(var e=s,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,i=this._c,o=this._d;r=u(r,n,i,o,e[0],3614090360,7),o=u(o,r,n,i,e[1],3905402710,12),i=u(i,o,r,n,e[2],606105819,17),n=u(n,i,o,r,e[3],3250441966,22),r=u(r,n,i,o,e[4],4118548399,7),o=u(o,r,n,i,e[5],1200080426,12),i=u(i,o,r,n,e[6],2821735955,17),n=u(n,i,o,r,e[7],4249261313,22),r=u(r,n,i,o,e[8],1770035416,7),o=u(o,r,n,i,e[9],2336552879,12),i=u(i,o,r,n,e[10],4294925233,17),n=u(n,i,o,r,e[11],2304563134,22),r=u(r,n,i,o,e[12],1804603682,7),o=u(o,r,n,i,e[13],4254626195,12),i=u(i,o,r,n,e[14],2792965006,17),r=c(r,n=u(n,i,o,r,e[15],1236535329,22),i,o,e[1],4129170786,5),o=c(o,r,n,i,e[6],3225465664,9),i=c(i,o,r,n,e[11],643717713,14),n=c(n,i,o,r,e[0],3921069994,20),r=c(r,n,i,o,e[5],3593408605,5),o=c(o,r,n,i,e[10],38016083,9),i=c(i,o,r,n,e[15],3634488961,14),n=c(n,i,o,r,e[4],3889429448,20),r=c(r,n,i,o,e[9],568446438,5),o=c(o,r,n,i,e[14],3275163606,9),i=c(i,o,r,n,e[3],4107603335,14),n=c(n,i,o,r,e[8],1163531501,20),r=c(r,n,i,o,e[13],2850285829,5),o=c(o,r,n,i,e[2],4243563512,9),i=c(i,o,r,n,e[7],1735328473,14),r=h(r,n=c(n,i,o,r,e[12],2368359562,20),i,o,e[5],4294588738,4),o=h(o,r,n,i,e[8],2272392833,11),i=h(i,o,r,n,e[11],1839030562,16),n=h(n,i,o,r,e[14],4259657740,23),r=h(r,n,i,o,e[1],2763975236,4),o=h(o,r,n,i,e[4],1272893353,11),i=h(i,o,r,n,e[7],4139469664,16),n=h(n,i,o,r,e[10],3200236656,23),r=h(r,n,i,o,e[13],681279174,4),o=h(o,r,n,i,e[0],3936430074,11),i=h(i,o,r,n,e[3],3572445317,16),n=h(n,i,o,r,e[6],76029189,23),r=h(r,n,i,o,e[9],3654602809,4),o=h(o,r,n,i,e[12],3873151461,11),i=h(i,o,r,n,e[15],530742520,16),r=l(r,n=h(n,i,o,r,e[2],3299628645,23),i,o,e[0],4096336452,6),o=l(o,r,n,i,e[7],1126891415,10),i=l(i,o,r,n,e[14],2878612391,15),n=l(n,i,o,r,e[5],4237533241,21),r=l(r,n,i,o,e[12],1700485571,6),o=l(o,r,n,i,e[3],2399980690,10),i=l(i,o,r,n,e[10],4293915773,15),n=l(n,i,o,r,e[1],2240044497,21),r=l(r,n,i,o,e[8],1873313359,6),o=l(o,r,n,i,e[15],4264355552,10),i=l(i,o,r,n,e[6],2734768916,15),n=l(n,i,o,r,e[13],1309151649,21),r=l(r,n,i,o,e[4],4149444226,6),o=l(o,r,n,i,e[11],3174756917,10),i=l(i,o,r,n,e[2],718787259,15),n=l(n,i,o,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+i|0,this._d=this._d+o|0},a.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=o.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},e.exports=a},function(e,t,r){"use strict";var n=r(0).Buffer,i=r(21).Transform;function o(e){i.call(this),this._block=n.allocUnsafe(e),this._blockSize=e,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}r(3)(o,i),o.prototype._transform=function(e,t,r){var n=null;try{this.update(e,t)}catch(e){n=e}r(n)},o.prototype._flush=function(e){var t=null;try{this.push(this.digest())}catch(e){t=e}e(t)},o.prototype.update=function(e,t){if(function(e,t){if(!n.isBuffer(e)&&"string"!=typeof e)throw new TypeError(t+" must be a string or a buffer")}(e,"Data"),this._finalized)throw new Error("Digest already called");n.isBuffer(e)||(e=n.from(e,t));for(var r=this._block,i=0;this._blockOffset+e.length-i>=this._blockSize;){for(var o=this._blockOffset;o0;++s)this._length[s]+=a,(a=this._length[s]/4294967296|0)>0&&(this._length[s]-=4294967296*a);return this},o.prototype._update=function(){throw new Error("_update is not implemented")},o.prototype.digest=function(e){if(this._finalized)throw new Error("Digest already called");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},o.prototype._digest=function(){throw new Error("_digest is not implemented")},e.exports=o},function(e,t,r){"use strict";(function(t,n){var i=r(27);e.exports=m;var o,s=r(57);m.ReadableState=v;r(13).EventEmitter;var a=function(e,t){return e.listeners(t).length},f=r(70),u=r(0).Buffer,c=t.Uint8Array||function(){};var h=r(23);h.inherits=r(3);var l=r(138),p=void 0;p=l&&l.debuglog?l.debuglog("stream"):function(){};var d,g=r(139),y=r(71);h.inherits(m,f);var b=["error","close","destroy","pause","resume"];function v(e,t){e=e||{};var n=t instanceof(o=o||r(10));this.objectMode=!!e.objectMode,n&&(this.objectMode=this.objectMode||!!e.readableObjectMode);var i=e.highWaterMark,s=e.readableHighWaterMark,a=this.objectMode?16:16384;this.highWaterMark=i||0===i?i:n&&(s||0===s)?s:a,this.highWaterMark=Math.floor(this.highWaterMark),this.buffer=new g,this.length=0,this.pipes=null,this.pipesCount=0,this.flowing=null,this.ended=!1,this.endEmitted=!1,this.reading=!1,this.sync=!0,this.needReadable=!1,this.emittedReadable=!1,this.readableListening=!1,this.resumeScheduled=!1,this.destroyed=!1,this.defaultEncoding=e.defaultEncoding||"utf8",this.awaitDrain=0,this.readingMore=!1,this.decoder=null,this.encoding=null,e.encoding&&(d||(d=r(28).StringDecoder),this.decoder=new d(e.encoding),this.encoding=e.encoding)}function m(e){if(o=o||r(10),!(this instanceof m))return new m(e);this._readableState=new v(e,this),this.readable=!0,e&&("function"==typeof e.read&&(this._read=e.read),"function"==typeof e.destroy&&(this._destroy=e.destroy)),f.call(this)}function w(e,t,r,n,i){var o,s=e._readableState;null===t?(s.reading=!1,function(e,t){if(t.ended)return;if(t.decoder){var r=t.decoder.end();r&&r.length&&(t.buffer.push(r),t.length+=t.objectMode?1:r.length)}t.ended=!0,I(e)}(e,s)):(i||(o=function(e,t){var r;n=t,u.isBuffer(n)||n instanceof c||"string"==typeof t||void 0===t||e.objectMode||(r=new TypeError("Invalid non-string/buffer chunk"));var n;return r}(s,t)),o?e.emit("error",o):s.objectMode||t&&t.length>0?("string"==typeof t||s.objectMode||Object.getPrototypeOf(t)===u.prototype||(t=function(e){return u.from(e)}(t)),n?s.endEmitted?e.emit("error",new Error("stream.unshift() after end event")):_(e,s,t,!0):s.ended?e.emit("error",new Error("stream.push() after EOF")):(s.reading=!1,s.decoder&&!r?(t=s.decoder.write(t),s.objectMode||0!==t.length?_(e,s,t,!1):T(e,s)):_(e,s,t,!1))):n||(s.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=E?e=E:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function I(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(p("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?i.nextTick(S,e):S(e))}function S(e){p("emit readable"),e.emit("readable"),k(e)}function T(e,t){t.readingMore||(t.readingMore=!0,i.nextTick(C,e,t))}function C(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;eo.length?o.length:e;if(s===o.length?i+=o:i+=o.slice(0,e),0===(e-=s)){s===o.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=o.slice(s));break}++n}return t.length-=n,i}(e,t):function(e,t){var r=u.allocUnsafe(e),n=t.head,i=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var o=n.data,s=e>o.length?o.length:e;if(o.copy(r,r.length-e,0,s),0===(e-=s)){s===o.length?(++i,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=o.slice(s));break}++i}return t.length-=i,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function B(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,i.nextTick(D,t,e))}function D(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function N(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return p("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?B(this):I(this),null;if(0===(e=A(e,t))&&t.ended)return 0===t.length&&B(this),null;var n,i=t.needReadable;return p("need readable",i),(0===t.length||t.length-e0?x(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&B(this)),null!==n&&this.emit("data",n),n},m.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},m.prototype.pipe=function(e,t){var r=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,p("pipe count=%d opts=%j",o.pipesCount,t);var f=(!t||!1!==t.end)&&e!==n.stdout&&e!==n.stderr?c:m;function u(t,n){p("onunpipe"),t===r&&n&&!1===n.hasUnpiped&&(n.hasUnpiped=!0,p("cleanup"),e.removeListener("close",b),e.removeListener("finish",v),e.removeListener("drain",h),e.removeListener("error",y),e.removeListener("unpipe",u),r.removeListener("end",c),r.removeListener("end",m),r.removeListener("data",g),l=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||h())}function c(){p("onend"),e.end()}o.endEmitted?i.nextTick(f):r.once("end",f),e.on("unpipe",u);var h=function(e){return function(){var t=e._readableState;p("pipeOnDrain",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&a(e,"data")&&(t.flowing=!0,k(e))}}(r);e.on("drain",h);var l=!1;var d=!1;function g(t){p("ondata"),d=!1,!1!==e.write(t)||d||((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==N(o.pipes,e))&&!l&&(p("false write response, pause",r._readableState.awaitDrain),r._readableState.awaitDrain++,d=!0),r.pause())}function y(t){p("onerror",t),m(),e.removeListener("error",y),0===a(e,"error")&&e.emit("error",t)}function b(){e.removeListener("finish",v),m()}function v(){p("onfinish"),e.removeListener("close",b),m()}function m(){p("unpipe"),r.unpipe(e)}return r.on("data",g),function(e,t,r){if("function"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?s(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,"error",y),e.once("close",b),e.once("finish",v),e.emit("pipe",r),o.flowing||(p("pipe resume"),r.resume()),e},m.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this,r),this);if(!e){var n=t.pipes,i=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var o=0;o>>32-t}function g(e,t,r,n,i,o,s,a){return d(e+(t^r^n)+o+s|0,a)+i|0}function y(e,t,r,n,i,o,s,a){return d(e+(t&r|~t&n)+o+s|0,a)+i|0}function b(e,t,r,n,i,o,s,a){return d(e+((t|~r)^n)+o+s|0,a)+i|0}function v(e,t,r,n,i,o,s,a){return d(e+(t&n|r&~n)+o+s|0,a)+i|0}function m(e,t,r,n,i,o,s,a){return d(e+(t^(r|~n))+o+s|0,a)+i|0}i(p,o),p.prototype._update=function(){for(var e=s,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,i=0|this._c,o=0|this._d,p=0|this._e,w=0|this._a,_=0|this._b,E=0|this._c,A=0|this._d,I=0|this._e,S=0;S<80;S+=1){var T,C;S<16?(T=g(r,n,i,o,p,e[a[S]],h[0],u[S]),C=m(w,_,E,A,I,e[f[S]],l[0],c[S])):S<32?(T=y(r,n,i,o,p,e[a[S]],h[1],u[S]),C=v(w,_,E,A,I,e[f[S]],l[1],c[S])):S<48?(T=b(r,n,i,o,p,e[a[S]],h[2],u[S]),C=b(w,_,E,A,I,e[f[S]],l[2],c[S])):S<64?(T=v(r,n,i,o,p,e[a[S]],h[3],u[S]),C=y(w,_,E,A,I,e[f[S]],l[3],c[S])):(T=m(r,n,i,o,p,e[a[S]],h[4],u[S]),C=g(w,_,E,A,I,e[f[S]],l[4],c[S])),r=p,p=o,o=d(i,10),i=n,n=T,w=I,I=A,A=d(E,10),E=_,_=C}var O=this._b+i+A|0;this._b=this._c+o+I|0,this._c=this._d+p+w|0,this._d=this._e+r+_|0,this._e=this._a+n+E|0,this._a=O},p.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.alloc?n.alloc(20):new n(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},e.exports=p},function(e,t,r){(t=e.exports=function(e){e=e.toLowerCase();var r=t[e];if(!r)throw new Error(e+" is not supported (we accept pull requests)");return new r}).sha=r(149),t.sha1=r(150),t.sha224=r(151),t.sha256=r(75),t.sha384=r(152),t.sha512=r(76)},function(e,t,r){var n=r(3),i=r(15),o=r(0).Buffer,s=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],a=new Array(64);function f(){this.init(),this._w=a,i.call(this,64,56)}function u(e,t,r){return r^e&(t^r)}function c(e,t,r){return e&t|r&(e|t)}function h(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function l(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function p(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}n(f,i),f.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},f.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,d=0|this._f,g=0|this._g,y=0|this._h,b=0;b<16;++b)r[b]=e.readInt32BE(4*b);for(;b<64;++b)r[b]=0|(((t=r[b-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[b-7]+p(r[b-15])+r[b-16];for(var v=0;v<64;++v){var m=y+l(f)+u(f,d,g)+s[v]+r[v]|0,w=h(n)+c(n,i,o)|0;y=g,g=d,d=f,f=a+m|0,a=o,o=i,i=n,n=m+w|0}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0,this._f=d+this._f|0,this._g=g+this._g|0,this._h=y+this._h|0},f.prototype._hash=function(){var e=o.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},e.exports=f},function(e,t,r){var n=r(3),i=r(15),o=r(0).Buffer,s=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],a=new Array(160);function f(){this.init(),this._w=a,i.call(this,128,112)}function u(e,t,r){return r^e&(t^r)}function c(e,t,r){return e&t|r&(e|t)}function h(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function l(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function g(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function y(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function b(e,t){return e>>>0>>0?1:0}n(f,i),f.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},f.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,i=0|this._ch,o=0|this._dh,a=0|this._eh,f=0|this._fh,v=0|this._gh,m=0|this._hh,w=0|this._al,_=0|this._bl,E=0|this._cl,A=0|this._dl,I=0|this._el,S=0|this._fl,T=0|this._gl,C=0|this._hl,O=0;O<32;O+=2)t[O]=e.readInt32BE(4*O),t[O+1]=e.readInt32BE(4*O+4);for(;O<160;O+=2){var P=t[O-30],k=t[O-30+1],x=p(P,k),B=d(k,P),D=g(P=t[O-4],k=t[O-4+1]),N=y(k,P),U=t[O-14],L=t[O-14+1],R=t[O-32],M=t[O-32+1],j=B+L|0,F=x+U+b(j,B)|0;F=(F=F+D+b(j=j+N|0,N)|0)+R+b(j=j+M|0,M)|0,t[O]=F,t[O+1]=j}for(var H=0;H<160;H+=2){F=t[H],j=t[H+1];var Q=c(r,n,i),q=c(w,_,E),z=h(r,w),V=h(w,r),K=l(a,I),Y=l(I,a),G=s[H],Z=s[H+1],W=u(a,f,v),$=u(I,S,T),J=C+Y|0,X=m+K+b(J,C)|0;X=(X=(X=X+W+b(J=J+$|0,$)|0)+G+b(J=J+Z|0,Z)|0)+F+b(J=J+j|0,j)|0;var ee=V+q|0,te=z+Q+b(ee,V)|0;m=v,C=T,v=f,T=S,f=a,S=I,a=o+X+b(I=A+J|0,A)|0,o=i,A=E,i=n,E=_,n=r,_=w,r=X+te+b(w=J+ee|0,J)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+E|0,this._dl=this._dl+A|0,this._el=this._el+I|0,this._fl=this._fl+S|0,this._gl=this._gl+T|0,this._hl=this._hl+C|0,this._ah=this._ah+r+b(this._al,w)|0,this._bh=this._bh+n+b(this._bl,_)|0,this._ch=this._ch+i+b(this._cl,E)|0,this._dh=this._dh+o+b(this._dl,A)|0,this._eh=this._eh+a+b(this._el,I)|0,this._fh=this._fh+f+b(this._fl,S)|0,this._gh=this._gh+v+b(this._gl,T)|0,this._hh=this._hh+m+b(this._hl,C)|0},f.prototype._hash=function(){var e=o.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},e.exports=f},function(e,t){function r(e,t){if(!e)throw new Error(t||"AssertionError")}r.notEqual=function(e,t,n){r(e!=t,n)},r.notOk=function(e,t){r(!e,t)},r.equal=function(e,t,n){r(e==t,n)},r.ok=r,e.exports=r},function(e,t,r){const n=r(2),i={BCH:"bch",BSV:"bsv",BTC:"btc",BTG:"btg",LTC:"ltc",ZEC:"zec",DASH:"dash",DIGIBYTE:"dgb",DOGECOIN:"doge",NAMECOIN:"nmc",VERTCOIN:"vtc",CAPRICOIN:"cpc",isBitcoin:function(e){return n.value(i.BTC)(e.coin)},isBitcoinCash:function(e){return n.value(i.BCH)(e.coin)},isBitcoinSV:function(e){return n.value(i.BSV)(e.coin)},isBitcoinGold:function(e){return n.value(i.BTG)(e.coin)},isLitecoin:function(e){return n.value(i.LTC)(e.coin)},isZcash:function(e){return n.value(i.ZEC)(e.coin)},isDash:function(e){return n.value(i.DASH)(e.coin)},isCapricoin:function(e){return n.value(i.CAPRICOIN)(e.coin)}};i.isValidCoin=n.oneOf(i.isBitcoin,i.isBitcoinCash,i.isBitcoinSV,i.isBitcoinGold,i.isLitecoin,i.isZcash,i.isDash,i.isCapricoin),e.exports=i},function(e,t,r){"use strict";var n=r(3),i=r(162),o=r(42),s=r(0).Buffer,a=r(163),f=r(73),u=r(74),c=s.alloc(128);function h(e,t){o.call(this,"digest"),"string"==typeof t&&(t=s.from(t));var r="sha512"===e||"sha384"===e?128:64;(this._alg=e,this._key=t,t.length>r)?t=("rmd160"===e?new f:u(e)).update(t).digest():t.length=0;){var s=t*this[e++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},n.prototype.DB=26,n.prototype.DM=67108863;var o=n.prototype.DV=1<<26;n.prototype.FV=Math.pow(2,52),n.prototype.F1=26,n.prototype.F2=0;var s,a,f="0123456789abcdefghijklmnopqrstuvwxyz",u=new Array;for(s="0".charCodeAt(0),a=0;a<=9;++a)u[s++]=a;for(s="a".charCodeAt(0),a=10;a<36;++a)u[s++]=a;for(s="A".charCodeAt(0),a=10;a<36;++a)u[s++]=a;function c(e){return f.charAt(e)}function h(e,t){var r=u[e.charCodeAt(t)];return null==r?-1:r}function l(e){var t=new n;return t.fromInt(e),t}function p(e){var t,r=1;return 0!=(t=e>>>16)&&(e=t,r+=16),0!=(t=e>>8)&&(e=t,r+=8),0!=(t=e>>4)&&(e=t,r+=4),0!=(t=e>>2)&&(e=t,r+=2),0!=(t=e>>1)&&(e=t,r+=1),r}function d(e){this.m=e}function g(e){this.m=e,this.mp=e.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,t+=16),0==(255&e)&&(e>>=8,t+=8),0==(15&e)&&(e>>=4,t+=4),0==(3&e)&&(e>>=2,t+=2),0==(1&e)&&++t,t}function _(e){for(var t=0;0!=e;)e&=e-1,++t;return t}function E(){}function A(e){return e}function I(e){this.r2=new n,this.q3=new n,n.ONE.dlShiftTo(2*e.t,this.r2),this.mu=this.r2.divide(e),this.m=e}d.prototype.convert=function(e){return e.s<0||e.compareTo(this.m)>=0?e.mod(this.m):e},d.prototype.revert=function(e){return e},d.prototype.reduce=function(e){e.divRemTo(this.m,null,e)},d.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},d.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},g.prototype.convert=function(e){var t=new n;return e.abs().dlShiftTo(this.m.t,t),t.divRemTo(this.m,null,t),e.s<0&&t.compareTo(n.ZERO)>0&&this.m.subTo(t,t),t},g.prototype.revert=function(e){var t=new n;return e.copyTo(t),this.reduce(t),t},g.prototype.reduce=function(e){for(;e.t<=this.mt2;)e[e.t++]=0;for(var t=0;t>15)*this.mpl&this.um)<<15)&e.DM;for(e[r=t+this.m.t]+=this.m.am(0,n,e,t,0,this.m.t);e[r]>=e.DV;)e[r]-=e.DV,e[++r]++}e.clamp(),e.drShiftTo(this.m.t,e),e.compareTo(this.m)>=0&&e.subTo(this.m,e)},g.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},g.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)},i.copyTo=function(e){for(var t=this.t-1;t>=0;--t)e[t]=this[t];e.t=this.t,e.s=this.s},i.fromInt=function(e){this.t=1,this.s=e<0?-1:0,e>0?this[0]=e:e<-1?this[0]=e+o:this.t=0},i.fromString=function(e,t){var r;if(16==t)r=4;else if(8==t)r=3;else if(256==t)r=8;else if(2==t)r=1;else if(32==t)r=5;else{if(4!=t)return void this.fromRadix(e,t);r=2}this.t=0,this.s=0;for(var i=e.length,o=!1,s=0;--i>=0;){var a=8==r?255&e[i]:h(e,i);a<0?"-"==e.charAt(i)&&(o=!0):(o=!1,0==s?this[this.t++]=a:s+r>this.DB?(this[this.t-1]|=(a&(1<>this.DB-s):this[this.t-1]|=a<=this.DB&&(s-=this.DB))}8==r&&0!=(128&e[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==e;)--this.t},i.dlShiftTo=function(e,t){var r;for(r=this.t-1;r>=0;--r)t[r+e]=this[r];for(r=e-1;r>=0;--r)t[r]=0;t.t=this.t+e,t.s=this.s},i.drShiftTo=function(e,t){for(var r=e;r=0;--r)t[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)t[r]=0;t[s]=a,t.t=this.t+s+1,t.s=this.s,t.clamp()},i.rShiftTo=function(e,t){t.s=this.s;var r=Math.floor(e/this.DB);if(r>=this.t)t.t=0;else{var n=e%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(t[this.t-r-1]|=(this.s&o)<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=e.s}t.s=n<0?-1:0,n<-1?t[r++]=this.DV+n:n>0&&(t[r++]=n),t.t=r,t.clamp()},i.multiplyTo=function(e,t){var r=this.abs(),i=e.abs(),o=r.t;for(t.t=o+i.t;--o>=0;)t[o]=0;for(o=0;o=0;)e[r]=0;for(r=0;r=t.DV&&(e[r+t.t]-=t.DV,e[r+t.t+1]=1)}e.t>0&&(e[e.t-1]+=t.am(r,t[r],e,2*r,0,1)),e.s=0,e.clamp()},i.divRemTo=function(e,t,r){var i=e.abs();if(!(i.t<=0)){var o=this.abs();if(o.t0?(i.lShiftTo(u,s),o.lShiftTo(u,r)):(i.copyTo(s),o.copyTo(r));var c=s.t,h=s[c-1];if(0!=h){var l=h*(1<1?s[c-2]>>this.F2:0),d=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(m,r)),n.ONE.dlShiftTo(c,m),m.subTo(s,s);s.t=0;){var w=r[--b]==h?this.DM:Math.floor(r[b]*d+(r[b-1]+y)*g);if((r[b]+=s.am(0,w,r,v,0,c))0&&r.rShiftTo(u,r),a<0&&n.ZERO.subTo(r,r)}}},i.invDigit=function(){if(this.t<1)return 0;var e=this[0];if(0==(1&e))return 0;var t=3&e;return(t=(t=(t=(t=t*(2-(15&e)*t)&15)*(2-(255&e)*t)&255)*(2-((65535&e)*t&65535))&65535)*(2-e*t%this.DV)%this.DV)>0?this.DV-t:-t},i.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},i.exp=function(e,t){if(e>4294967295||e<1)return n.ONE;var r=new n,i=new n,o=t.convert(this),s=p(e)-1;for(o.copyTo(r);--s>=0;)if(t.sqrTo(r,i),(e&1<0)t.mulTo(i,o,r);else{var a=r;r=i,i=a}return t.revert(r)},i.toString=function(e){var t;if(this.s<0)return"-"+this.negate().toString(e);if(16==e)t=4;else if(8==e)t=3;else if(2==e)t=1;else if(32==e)t=5;else{if(4!=e)return this.toRadix(e);t=2}var r,n=(1<0)for(a>a)>0&&(i=!0,o=c(r));s>=0;)a>(a+=this.DB-t)):(r=this[s]>>(a-=t)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=c(r));return i?o:"0"},i.negate=function(){var e=new n;return n.ZERO.subTo(this,e),e},i.abs=function(){return this.s<0?this.negate():this},i.compareTo=function(e){var t=this.s-e.s;if(0!=t)return t;var r=this.t;if(0!=(t=r-e.t))return this.s<0?-t:t;for(;--r>=0;)if(0!=(t=this[r]-e[r]))return t;return 0},i.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+p(this[this.t-1]^this.s&this.DM)},i.byteLength=function(){return this.bitLength()>>3},i.mod=function(e){var t=new n;return this.abs().divRemTo(e,null,t),this.s<0&&t.compareTo(n.ZERO)>0&&e.subTo(t,t),t},i.modPowInt=function(e,t){var r;return r=e<256||t.isEven()?new d(t):new g(t),this.exp(e,r)},E.prototype.convert=A,E.prototype.revert=A,E.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r)},E.prototype.sqrTo=function(e,t){e.squareTo(t)},I.prototype.convert=function(e){if(e.s<0||e.t>2*this.m.t)return e.mod(this.m);if(e.compareTo(this.m)<0)return e;var t=new n;return e.copyTo(t),this.reduce(t),t},I.prototype.revert=function(e){return e},I.prototype.reduce=function(e){for(e.drShiftTo(this.m.t-1,this.r2),e.t>this.m.t+1&&(e.t=this.m.t+1,e.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);e.compareTo(this.r2)<0;)e.dAddOffset(1,this.m.t+1);for(e.subTo(this.r2,e);e.compareTo(this.m)>=0;)e.subTo(this.m,e)},I.prototype.mulTo=function(e,t,r){e.multiplyTo(t,r),this.reduce(r)},I.prototype.sqrTo=function(e,t){e.squareTo(t),this.reduce(t)};var S=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],T=(1<<26)/S[S.length-1];i.chunkSize=function(e){return Math.floor(Math.LN2*this.DB/Math.log(e))},i.toRadix=function(e){if(null==e&&(e=10),0==this.signum()||e<2||e>36)return"0";var t=this.chunkSize(e),r=Math.pow(e,t),i=l(r),o=new n,s=new n,a="";for(this.divRemTo(i,o,s);o.signum()>0;)a=(r+s.intValue()).toString(e).substr(1)+a,o.divRemTo(i,o,s);return s.intValue().toString(e)+a},i.fromRadix=function(e,t){this.fromInt(0),null==t&&(t=10);for(var r=this.chunkSize(t),i=Math.pow(t,r),o=!1,s=0,a=0,f=0;f=r&&(this.dMultiply(i),this.dAddOffset(a,0),s=0,a=0))}s>0&&(this.dMultiply(Math.pow(t,s)),this.dAddOffset(a,0)),o&&n.ZERO.subTo(this,this)},i.fromNumber=function(e,t,r){if("number"==typeof t)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(n.ONE.shiftLeft(e-1),b,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(t);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(n.ONE.shiftLeft(e-1),this);else{var i=new Array,o=7&e;i.length=1+(e>>3),t.nextBytes(i),o>0?i[0]&=(1<>=this.DB;if(e.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=e.s}t.s=n<0?-1:0,n>0?t[r++]=n:n<-1&&(t[r++]=this.DV+n),t.t=r,t.clamp()},i.dMultiply=function(e){this[this.t]=this.am(0,e-1,this,0,0,this.t),++this.t,this.clamp()},i.dAddOffset=function(e,t){if(0!=e){for(;this.t<=t;)this[this.t++]=0;for(this[t]+=e;this[t]>=this.DV;)this[t]-=this.DV,++t>=this.t&&(this[this.t++]=0),++this[t]}},i.multiplyLowerTo=function(e,t,r){var n,i=Math.min(this.t+e.t,t);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(t-this.t,0);n0)if(0==t)r=this[0]%e;else for(var n=this.t-1;n>=0;--n)r=(t*r+this[n])%e;return r},i.millerRabin=function(e){var t=this.subtract(n.ONE),r=t.getLowestSetBit();if(r<=0)return!1;var i=t.shiftRight(r);(e=e+1>>1)>S.length&&(e=S.length);for(var o=new n(null),s=[],a=0;a>24},i.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},i.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},i.toByteArray=function(){var e=this.t,t=new Array;t[0]=this.s;var r,n=this.DB-e*this.DB%8,i=0;if(e-- >0)for(n>n)!=(this.s&this.DM)>>n&&(t[i++]=r|this.s<=0;)n<8?(r=(this[e]&(1<>(n+=this.DB-8)):(r=this[e]>>(n-=8)&255,n<=0&&(n+=this.DB,--e)),0!=(128&r)&&(r|=-256),0===i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(t[i++]=r);return t},i.equals=function(e){return 0==this.compareTo(e)},i.min=function(e){return this.compareTo(e)<0?this:e},i.max=function(e){return this.compareTo(e)>0?this:e},i.and=function(e){var t=new n;return this.bitwiseTo(e,y,t),t},i.or=function(e){var t=new n;return this.bitwiseTo(e,b,t),t},i.xor=function(e){var t=new n;return this.bitwiseTo(e,v,t),t},i.andNot=function(e){var t=new n;return this.bitwiseTo(e,m,t),t},i.not=function(){for(var e=new n,t=0;t=this.t?0!=this.s:0!=(this[t]&1<1){var h=new n;for(i.sqrTo(a[1],h);f<=c;)a[f]=new n,i.mulTo(h,a[f-2],a[f]),f+=2}var y,b,v=e.t-1,m=!0,w=new n;for(o=p(e[v])-1;v>=0;){for(o>=u?y=e[v]>>o-u&c:(y=(e[v]&(1<0&&(y|=e[v-1]>>this.DB+o-u)),f=r;0==(1&y);)y>>=1,--f;if((o-=f)<0&&(o+=this.DB,--v),m)a[y].copyTo(s),m=!1;else{for(;f>1;)i.sqrTo(s,w),i.sqrTo(w,s),f-=2;f>0?i.sqrTo(s,w):(b=s,s=w,w=b),i.mulTo(w,a[y],s)}for(;v>=0&&0==(e[v]&1<=0?(r.subTo(i,r),t&&o.subTo(a,o),s.subTo(f,s)):(i.subTo(r,i),t&&a.subTo(o,a),f.subTo(s,f))}if(0!=i.compareTo(n.ONE))return n.ZERO;for(;f.compareTo(e)>=0;)f.subTo(e,f);for(;f.signum()<0;)f.addTo(e,f);return f},i.pow=function(e){return this.exp(e,new E)},i.gcd=function(e){var t=this.s<0?this.negate():this.clone(),r=e.s<0?e.negate():e.clone();if(t.compareTo(r)<0){var n=t;t=r,r=n}var i=t.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return t;for(i0&&(t.rShiftTo(o,t),r.rShiftTo(o,r));t.signum()>0;)(i=t.getLowestSetBit())>0&&t.rShiftTo(i,t),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),t.compareTo(r)>=0?(t.subTo(r,t),t.rShiftTo(1,t)):(r.subTo(t,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},i.isProbablePrime=function(e){var t,r=this.abs();if(1==r.t&&r[0]<=S[S.length-1]){for(t=0;t0;--o){var a=r.testBit(o),f=t.testBit(o);i=i.twice(),a!==f&&(i=i.add(a?this:n))}return i},a.prototype.multiplyTwo=function(e,t,r){for(var n=Math.max(e.bitLength(),r.bitLength())-1,i=this.curve.infinity,o=this.add(t);n>=0;){var s=e.testBit(n),a=r.testBit(n);i=i.twice(),s?i=a?i.add(o):i.add(this):a&&(i=i.add(t)),--n}return i},a.prototype.getEncoded=function(e){if(null==e&&(e=this.compressed),this.curve.isInfinity(this))return i.alloc(1,0);var t,r=this.affineX,n=this.affineY,o=this.curve.pLength;return e?(t=i.allocUnsafe(1+o)).writeUInt8(n.isEven()?2:3,0):((t=i.allocUnsafe(1+o+o)).writeUInt8(4,0),n.toBuffer(o).copy(t,1+o)),r.toBuffer(o).copy(t,1),t},a.decodeFrom=function(e,t){var r,i=t.readUInt8(0),s=4!==i,f=Math.floor((e.p.bitLength()+7)/8),u=o.fromBuffer(t.slice(1,1+f));if(s){n.equal(t.length,f+1,"Invalid sequence length"),n(2===i||3===i,"Invalid sequence tag");var c=3===i;r=e.pointFromX(c,u)}else{n.equal(t.length,1+f+f,"Invalid sequence length");var h=o.fromBuffer(t.slice(1+f));r=a.fromAffine(e,u,h)}return r.compressed=s,r},a.prototype.toString=function(){return this.curve.isInfinity(this)?"(INFINITY)":"("+this.affineX.toString()+","+this.affineY.toString()+")"},e.exports=a},function(e,t,r){var n=r(24),i=r(11),o=r(81);function s(e,t,r,n,s,a,f){this.p=e,this.a=t,this.b=r,this.G=o.fromAffine(this,n,s),this.n=a,this.h=f,this.infinity=new o(this,null,null,i.ZERO),this.pOverFour=e.add(i.ONE).shiftRight(2),this.pLength=Math.floor((this.p.bitLength()+7)/8)}s.prototype.pointFromX=function(e,t){var r=t.pow(3).add(this.a.multiply(t)).add(this.b).mod(this.p).modPow(this.pOverFour,this.p),n=r;return r.isEven()^!e&&(n=this.p.subtract(n)),o.fromAffine(this,t,n)},s.prototype.isInfinity=function(e){return e===this.infinity||0===e.z.signum()&&0!==e.y.signum()},s.prototype.isOnCurve=function(e){if(this.isInfinity(e))return!0;var t=e.affineX,r=e.affineY,n=this.a,i=this.b,o=this.p;if(t.signum()<0||t.compareTo(o)>=0)return!1;if(r.signum()<0||r.compareTo(o)>=0)return!1;var s=r.square().mod(o),a=t.pow(3).add(n.multiply(t)).add(i).mod(o);return s.equals(a)},s.prototype.validate=function(e){n(!this.isInfinity(e),"Point is at infinity"),n(this.isOnCurve(e),"Point is not on the curve");var t=e.multiply(this.n);return n(this.isInfinity(t),"Point is not a scalar multiple of G"),!0},e.exports=s},function(e,t,r){"use strict";(function(t,n){var i=r(0).Buffer,o=t.crypto||t.msCrypto;o&&o.getRandomValues?e.exports=function(e,r){if(e>65536)throw new Error("requested too many random bytes");var s=new t.Uint8Array(e);e>0&&o.getRandomValues(s);var a=i.from(s.buffer);if("function"==typeof r)return n.nextTick(function(){r(null,a)});return a}:e.exports=function(){throw new Error("Secure random number generation is not supported by this browser.\nUse Chrome, Firefox or Internet Explorer 11")}}).call(this,r(5),r(8))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=Object.assign||function(e){for(var t=1;ts)return 1;if(s>o)return-1;if(!isNaN(o)&&isNaN(s))return 1;if(isNaN(o)&&!isNaN(s))return-1}return 0}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.lock=function(e){var t=n.then(function(){return e()});return n=t.catch(function(){return!0}),t};var n=Promise.resolve()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=Object.assign||function(e){for(var t=1;t500?(e.failedToFetchTimestamp=r,e.listening&&e.listen()):e.errorEvent.emit(t)})}},{key:"stop",value:function(){this.listening=!1}},{key:"_diff",value:function(e,t){var r=e||[],n=t.filter(function(e){return void 0===r.find(function(t){return t.path===e.path})}),i=r.filter(function(e){return void 0===t.find(function(t){return t.path===e.path})}),o=t.filter(function(e){var t=r.find(function(t){return t.path===e.path});return void 0!==t&&t.session!==e.session}),s=o.filter(function(e){return null!=e.session}),a=o.filter(function(e){return null==e.session}),f=t.filter(function(e){var t=r.find(function(t){return t.path===e.path});return void 0!==t&&t.debugSession!==e.debugSession}),u=f.filter(function(e){return null!=e.debugSession}),c=f.filter(function(e){return null==e.debugSession});return{connected:n,disconnected:i,changedSessions:o,acquired:s,released:a,didUpdate:n.length+i.length+o.length+f.length>0,descriptors:t,debugChangedSessions:f,debugAcquired:u,debugReleased:c}}},{key:"_reportChanges",value:function(){var e=this;return(0,a.lock)(function(){var t=e._diff(e.previous,e.current);return e.previous=e.current,t.didUpdate&&e.listening&&(t.connected.forEach(function(t){e.connectEvent.emit(t)}),t.disconnected.forEach(function(t){e.disconnectEvent.emit(t)}),t.debugAcquired.forEach(function(t){e.debugAcquiredEvent.emit(t)}),t.debugReleased.forEach(function(t){e.debugReleasedEvent.emit(t)}),t.debugChangedSessions.forEach(function(t){e.debugChangedSessionsEvent.emit(t)}),t.acquired.forEach(function(t){e.acquiredEvent.emit(t)}),t.released.forEach(function(t){e.releasedEvent.emit(t)}),t.changedSessions.forEach(function(t){e.changedSessionsEvent.emit(t)}),e.updateEvent.emit(t)),Promise.resolve()})}}]),t}();t.default=f,e.exports=t.default},function(e,t){!function(e){"use strict";if(!e.fetch){s.prototype.append=function(e,t){e=i(e),t=o(t);var r=this.map[e];r||(r=[],this.map[e]=r),r.push(t)},s.prototype.delete=function(e){delete this.map[i(e)]},s.prototype.get=function(e){var t=this.map[i(e)];return t?t[0]:null},s.prototype.getAll=function(e){return this.map[i(e)]||[]},s.prototype.has=function(e){return this.map.hasOwnProperty(i(e))},s.prototype.set=function(e,t){this.map[i(e)]=[o(t)]},s.prototype.forEach=function(e,t){Object.getOwnPropertyNames(this.map).forEach(function(r){this.map[r].forEach(function(n){e.call(t,n,r,this)},this)},this)};var t={blob:"FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),formData:"FormData"in e,arrayBuffer:"ArrayBuffer"in e},r=["DELETE","GET","HEAD","OPTIONS","POST","PUT"];h.prototype.clone=function(){return new h(this)},c.call(h.prototype),c.call(p.prototype),p.prototype.clone=function(){return new p(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new s(this.headers),url:this.url})},p.error=function(){var e=new p(null,{status:0,statusText:""});return e.type="error",e};var n=[301,302,303,307,308];p.redirect=function(e,t){if(-1===n.indexOf(t))throw new RangeError("Invalid status code");return new p(null,{status:t,headers:{location:e}})},e.Headers=s,e.Request=h,e.Response=p,e.fetch=function(e,r){return new Promise(function(n,i){var o;o=h.prototype.isPrototypeOf(e)&&!r?e:new h(e,r);var a=new XMLHttpRequest;a.onload=function(){var e=1223===a.status?204:a.status;if(e<100||e>599)i(new TypeError("Network request failed"));else{var t={status:e,statusText:a.statusText,headers:function(e){var t=new s;return e.getAllResponseHeaders().trim().split("\n").forEach(function(e){var r=e.trim().split(":"),n=r.shift().trim(),i=r.join(":").trim();t.append(n,i)}),t}(a),url:"responseURL"in a?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):void 0},r="response"in a?a.response:a.responseText;n(new p(r,t))}},a.onerror=function(){i(new TypeError("Network request failed"))},a.open(o.method,o.url,!0),"include"===o.credentials&&(a.withCredentials=!0),"responseType"in a&&t.blob&&(a.responseType="blob"),o.headers.forEach(function(e,t){a.setRequestHeader(t,e)}),a.send(void 0===o._bodyInit?null:o._bodyInit)})},e.fetch.polyfill=!0}function i(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function o(e){return"string"!=typeof e&&(e=String(e)),e}function s(e){this.map={},e instanceof s?e.forEach(function(e,t){this.append(t,e)},this):e&&Object.getOwnPropertyNames(e).forEach(function(t){this.append(t,e[t])},this)}function a(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function f(e){return new Promise(function(t,r){e.onload=function(){t(e.result)},e.onerror=function(){r(e.error)}})}function u(e){var t=new FileReader;return t.readAsArrayBuffer(e),f(t)}function c(){return this.bodyUsed=!1,this._initBody=function(e){if(this._bodyInit=e,"string"==typeof e)this._bodyText=e;else if(t.blob&&Blob.prototype.isPrototypeOf(e))this._bodyBlob=e;else if(t.formData&&FormData.prototype.isPrototypeOf(e))this._bodyFormData=e;else if(e){if(!t.arrayBuffer||!ArrayBuffer.prototype.isPrototypeOf(e))throw new Error("unsupported BodyInit type")}else this._bodyText="";this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type&&this.headers.set("content-type",this._bodyBlob.type))},t.blob?(this.blob=function(){var e=a(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this.blob().then(u)},this.text=function(){var e,t,r=a(this);if(r)return r;if(this._bodyBlob)return e=this._bodyBlob,(t=new FileReader).readAsText(e),f(t);if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)}):this.text=function(){var e=a(this);return e||Promise.resolve(this._bodyText)},t.formData&&(this.formData=function(){return this.text().then(l)}),this.json=function(){return this.text().then(JSON.parse)},this}function h(e,t){var n,i,o=(t=t||{}).body;if(h.prototype.isPrototypeOf(e)){if(e.bodyUsed)throw new TypeError("Already read");this.url=e.url,this.credentials=e.credentials,t.headers||(this.headers=new s(e.headers)),this.method=e.method,this.mode=e.mode,o||(o=e._bodyInit,e.bodyUsed=!0)}else this.url=e;if(this.credentials=t.credentials||this.credentials||"omit",!t.headers&&this.headers||(this.headers=new s(t.headers)),this.method=(n=t.method||this.method||"GET",i=n.toUpperCase(),r.indexOf(i)>-1?i:n),this.mode=t.mode||this.mode||null,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&o)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(o)}function l(e){var t=new FormData;return e.trim().split("&").forEach(function(e){if(e){var r=e.split("="),n=r.shift().replace(/\+/g," "),i=r.join("=").replace(/\+/g," ");t.append(decodeURIComponent(n),decodeURIComponent(i))}}),t}function p(e,t){t||(t={}),this.type="default",this.status=t.status,this.ok=this.status>=200&&this.status<300,this.statusText=t.statusText,this.headers=t.headers instanceof s?t.headers:new s(t.headers),this.url=t.url||"",this._initBody(e)}}("undefined"!=typeof self?self:this)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=a(r(184)),i=a(r(212)),o=a(r(219)),s=a(r(220));function a(e){return e&&e.__esModule?e:{default:e}}if(r(89),"undefined"==typeof window){var f=r(221);n.default.setFetch(f,!0)}else n.default.setFetch(fetch,!1);t.default={BridgeV2:n.default,Fallback:o.default,Lowlevel:i.default,WebUsb:s.default},e.exports=t.default},function(e,t,r){"use strict";(function(e){Object.defineProperty(t,"__esModule",{value:!0}),t.buildAndSend=void 0;var n,i,o,s=r(9),a=(n=s)&&n.__esModule?n:{default:n},f=function(){function e(e,t){for(var r=0;r=u)throw new Error("Config too old; "+c+" >= "+u);var h=f.wire_protocol,l=(0,o.protocolToJSON)(h.toRaw()),p=n.newBuilder({}).import(l).build();return new i.Messages(p)};var n=a(r(12)),i=r(93),o=r(191),s=a(r(210));function a(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}}).call(this,r(1).Buffer)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Messages=void 0;!function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);t.default=e}(r(12));t.Messages=function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.messagesByName=t;var r={};Object.keys(t.MessageType).forEach(function(e){var n=t.MessageType[e],i=e.split("_")[1];r[n]={name:i,constructor:t[i]}}),this.messagesByType=r,this.messageTypes=t.MessageType}},function(e,t,r){"use strict";var n=r(193),i="function"==typeof Symbol&&"symbol"==typeof Symbol("foo"),o=Object.prototype.toString,s=Array.prototype.concat,a=Object.defineProperty,f=a&&function(){var e={};try{for(var t in a(e,"x",{enumerable:!1,value:e}),e)return!1;return e.x===e}catch(e){return!1}}(),u=function(e,t,r,n){var i;t in e&&("function"!=typeof(i=n)||"[object Function]"!==o.call(i)||!n())||(f?a(e,t,{configurable:!0,enumerable:!1,value:r,writable:!0}):e[t]=r)},c=function(e,t){var r=arguments.length>2?arguments[2]:{},o=n(t);i&&(o=s.call(o,Object.getOwnPropertySymbols(t)));for(var a=0;a1&&"boolean"!=typeof t)throw new TypeError('"allowMissing" argument must be a boolean');var r="$ "+e;if(!(r in f))throw new SyntaxError("intrinsic "+e+" does not exist!");if(void 0===f[r]&&!t)throw new TypeError("intrinsic "+e+" exists, but is not available. Please file an issue!");return f[r]}},function(e,t){e.exports=Number.isNaN||function(e){return e!=e}},function(e,t){var r=Number.isNaN||function(e){return e!=e};e.exports=Number.isFinite||function(e){return"number"==typeof e&&!r(e)&&e!==1/0&&e!==-1/0}},function(e,t,r){var n=r(32).call(Function.call,Object.prototype.hasOwnProperty),i=Object.assign;e.exports=function(e,t){if(i)return i(e,t);for(var r in t)n(t,r)&&(e[r]=t[r]);return e}},function(e,t){e.exports=function(e){return e>=0?1:-1}},function(e,t){e.exports=function(e,t){var r=e%t;return Math.floor(r>=0?r:r+t)}},function(e,t,r){"use strict";var n=r(95);e.exports=function(){return"function"==typeof Object.values?Object.values:n}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.receiveAndParse=void 0;var n,i,o,s,a=r(9),f=(n=a)&&n.__esModule?n:{default:n},u=function(){function e(e,t){for(var r=0;r=this.expectedLength}},{key:"append",value:function(e){this.buffer.append(e)}},{key:"arrayBuffer",value:function(){var e=this.buffer;return e.reset(),e.toArrayBuffer()}}]),e}();function b(e){var t=p.ByteBuffer.concat([e]),r=t.readByte(),n=t.readByte();if(r!==g||n!==g)throw new Error("Didn't receive expected header signature.");var i=t.readUint16(),o=t.readUint32(),s=new y(i,o);return s.append(t),s}},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.create=function(){var e=function(e){},t=function(e){},r=new Promise(function(r,n){e=r,t=n}),n=r.then(function(){throw new Error("Promise is always rejecting")});return n.catch(function(){}),{resolve:e,reject:t,promise:r,rejectingPromise:n}},t.resolveTimeoutPromise=function(e,t){return new Promise(function(r){setTimeout(function(){r(t)},e)})},t.rejectTimeoutPromise=function(e,t){return new Promise(function(r,n){setTimeout(function(){n(t)},e)})}},function(e,t,r){(function(e){t.fetch=a(e.fetch)&&a(e.ReadableStream),t.writableStream=a(e.WritableStream),t.abortController=a(e.AbortController),t.blobConstructor=!1;try{new Blob([new ArrayBuffer(1)]),t.blobConstructor=!0}catch(e){}var r;function n(){if(void 0!==r)return r;if(e.XMLHttpRequest){r=new e.XMLHttpRequest;try{r.open("GET",e.XDomainRequest?"/":"https://example.com")}catch(e){r=null}}else r=null;return r}function i(e){var t=n();if(!t)return!1;try{return t.responseType=e,t.responseType===e}catch(e){}return!1}var o=void 0!==e.ArrayBuffer,s=o&&a(e.ArrayBuffer.prototype.slice);function a(e){return"function"==typeof e}t.arraybuffer=t.fetch||o&&i("arraybuffer"),t.msstream=!t.fetch&&s&&i("ms-stream"),t.mozchunkedarraybuffer=!t.fetch&&o&&i("moz-chunked-arraybuffer"),t.overrideMimeType=t.fetch||!!n()&&a(n().overrideMimeType),t.vbArray=a(e.VBArray),r=null}).call(this,r(5))},function(e,t,r){(function(e,n,i){var o=r(106),s=r(3),a=r(22),f=t.readyStates={UNSENT:0,OPENED:1,HEADERS_RECEIVED:2,LOADING:3,DONE:4},u=t.IncomingMessage=function(t,r,s,f){var u=this;if(a.Readable.call(u),u._mode=s,u.headers={},u.rawHeaders=[],u.trailers={},u.rawTrailers=[],u.on("end",function(){e.nextTick(function(){u.emit("close")})}),"fetch"===s){if(u._fetchResponse=r,u.url=r.url,u.statusCode=r.status,u.statusMessage=r.statusText,r.headers.forEach(function(e,t){u.headers[t.toLowerCase()]=e,u.rawHeaders.push(t,e)}),o.writableStream){var c=new WritableStream({write:function(e){return new Promise(function(t,r){u._destroyed?r():u.push(new n(e))?t():u._resumeFetch=t})},close:function(){i.clearTimeout(f),u._destroyed||u.push(null)},abort:function(e){u._destroyed||u.emit("error",e)}});try{return void r.body.pipeTo(c).catch(function(e){i.clearTimeout(f),u._destroyed||u.emit("error",e)})}catch(e){}}var h=r.body.getReader();!function e(){h.read().then(function(t){if(!u._destroyed){if(t.done)return i.clearTimeout(f),void u.push(null);u.push(new n(t.value)),e()}}).catch(function(e){i.clearTimeout(f),u._destroyed||u.emit("error",e)})}()}else{if(u._xhr=t,u._pos=0,u.url=t.responseURL,u.statusCode=t.status,u.statusMessage=t.statusText,t.getAllResponseHeaders().split(/\r?\n/).forEach(function(e){var t=e.match(/^([^:]+):\s*(.*)/);if(t){var r=t[1].toLowerCase();"set-cookie"===r?(void 0===u.headers[r]&&(u.headers[r]=[]),u.headers[r].push(t[2])):void 0!==u.headers[r]?u.headers[r]+=", "+t[2]:u.headers[r]=t[2],u.rawHeaders.push(t[1],t[2])}}),u._charset="x-user-defined",!o.overrideMimeType){var l=u.rawHeaders["mime-type"];if(l){var p=l.match(/;\s*charset=([^;])(;|$)/);p&&(u._charset=p[1].toLowerCase())}u._charset||(u._charset="utf-8")}}};s(u,a.Readable),u.prototype._read=function(){var e=this._resumeFetch;e&&(this._resumeFetch=null,e())},u.prototype._onXHRProgress=function(){var e=this,t=e._xhr,r=null;switch(e._mode){case"text:vbarray":if(t.readyState!==f.DONE)break;try{r=new i.VBArray(t.responseBody).toArray()}catch(e){}if(null!==r){e.push(new n(r));break}case"text":try{r=t.responseText}catch(t){e._mode="text:vbarray";break}if(r.length>e._pos){var o=r.substr(e._pos);if("x-user-defined"===e._charset){for(var s=new n(o.length),a=0;ae._pos&&(e.push(new n(new Uint8Array(u.result.slice(e._pos)))),e._pos=u.result.byteLength)},u.onload=function(){e.push(null)},u.readAsArrayBuffer(r)}e._xhr.readyState===f.DONE&&"ms-stream"!==e._mode&&e.push(null)}}).call(this,r(8),r(1).Buffer,r(5))},function(e,t,r){"use strict";e.exports=function(e,t,r,n){for(var i=65535&e|0,o=e>>>16&65535|0,s=0;0!==r;){r-=s=r>2e3?2e3:r;do{o=o+(i=i+t[n++]|0)|0}while(--s);i%=65521,o%=65521}return i|o<<16|0}},function(e,t,r){"use strict";var n=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();e.exports=function(e,t,r,i){var o=n,s=i+r;e^=-1;for(var a=i;a>>8^o[255&(e^t[a])];return-1^e}},function(e){e.exports=[["a140","",62],["a180","",32],["a240","",62],["a280","",32],["a2ab","",5],["a2e3","€"],["a2ef",""],["a2fd",""],["a340","",62],["a380","",31," "],["a440","",62],["a480","",32],["a4f4","",10],["a540","",62],["a580","",32],["a5f7","",7],["a640","",62],["a680","",32],["a6b9","",7],["a6d9","",6],["a6ec",""],["a6f3",""],["a6f6","",8],["a740","",62],["a780","",32],["a7c2","",14],["a7f2","",12],["a896","",10],["a8bc",""],["a8bf","ǹ"],["a8c1",""],["a8ea","",20],["a958",""],["a95b",""],["a95d",""],["a989","〾⿰",11],["a997","",12],["a9f0","",14],["aaa1","",93],["aba1","",93],["aca1","",93],["ada1","",93],["aea1","",93],["afa1","",93],["d7fa","",4],["f8a1","",93],["f9a1","",93],["faa1","",93],["fba1","",93],["fca1","",93],["fda1","",93],["fe50","⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌"],["fe80","䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓",6,"䶮",93]]},function(e){e.exports=[["0","\0",127],["a140"," ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚"],["a1a1","﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢",4,"~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/"],["a240","\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁",7,"▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭"],["a2a1","╮╰╯═╞╪╡◢◣◥◤╱╲╳0",9,"Ⅰ",9,"〡",8,"十卄卅A",25,"a",21],["a340","wxyzΑ",16,"Σ",6,"α",16,"σ",6,"ㄅ",10],["a3a1","ㄐ",25,"˙ˉˊˇˋ"],["a3e1","€"],["a440","一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才"],["a4a1","丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙"],["a540","世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外"],["a5a1","央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全"],["a640","共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年"],["a6a1","式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣"],["a740","作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍"],["a7a1","均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠"],["a840","杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒"],["a8a1","芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵"],["a940","咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居"],["a9a1","屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊"],["aa40","昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠"],["aaa1","炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附"],["ab40","陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品"],["aba1","哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷"],["ac40","拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗"],["aca1","活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄"],["ad40","耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥"],["ada1","迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪"],["ae40","哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙"],["aea1","恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓"],["af40","浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷"],["afa1","砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃"],["b040","虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡"],["b0a1","陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀"],["b140","娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽"],["b1a1","情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺"],["b240","毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶"],["b2a1","瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼"],["b340","莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途"],["b3a1","部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠"],["b440","婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍"],["b4a1","插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋"],["b540","溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘"],["b5a1","窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁"],["b640","詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑"],["b6a1","間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼"],["b740","媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業"],["b7a1","楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督"],["b840","睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫"],["b8a1","腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊"],["b940","辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴"],["b9a1","飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇"],["ba40","愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢"],["baa1","滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬"],["bb40","罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤"],["bba1","說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜"],["bc40","劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂"],["bca1","慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃"],["bd40","瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯"],["bda1","翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞"],["be40","輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉"],["bea1","鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡"],["bf40","濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊"],["bfa1","縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚"],["c040","錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇"],["c0a1","嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬"],["c140","瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪"],["c1a1","薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁"],["c240","駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘"],["c2a1","癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦"],["c340","鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸"],["c3a1","獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類"],["c440","願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼"],["c4a1","纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴"],["c540","護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬"],["c5a1","禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒"],["c640","讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲"],["c940","乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕"],["c9a1","氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋"],["ca40","汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘"],["caa1","吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇"],["cb40","杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓"],["cba1","芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢"],["cc40","坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋"],["cca1","怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲"],["cd40","泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺"],["cda1","矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏"],["ce40","哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛"],["cea1","峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺"],["cf40","柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂"],["cfa1","洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀"],["d040","穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪"],["d0a1","苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱"],["d140","唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧"],["d1a1","恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤"],["d240","毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸"],["d2a1","牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐"],["d340","笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢"],["d3a1","荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐"],["d440","酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅"],["d4a1","唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏"],["d540","崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟"],["d5a1","捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉"],["d640","淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏"],["d6a1","痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟"],["d740","耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷"],["d7a1","蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪"],["d840","釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷"],["d8a1","堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔"],["d940","惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒"],["d9a1","晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞"],["da40","湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖"],["daa1","琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥"],["db40","罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳"],["dba1","菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺"],["dc40","軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈"],["dca1","隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆"],["dd40","媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤"],["dda1","搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼"],["de40","毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓"],["dea1","煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓"],["df40","稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯"],["dfa1","腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤"],["e040","觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿"],["e0a1","遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠"],["e140","凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠"],["e1a1","寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉"],["e240","榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊"],["e2a1","漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓"],["e340","禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞"],["e3a1","耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻"],["e440","裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍"],["e4a1","銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘"],["e540","噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉"],["e5a1","憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒"],["e640","澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙"],["e6a1","獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟"],["e740","膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢"],["e7a1","蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧"],["e840","踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓"],["e8a1","銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮"],["e940","噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺"],["e9a1","憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸"],["ea40","澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙"],["eaa1","瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘"],["eb40","蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠"],["eba1","諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌"],["ec40","錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕"],["eca1","魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎"],["ed40","檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶"],["eda1","瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞"],["ee40","蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞"],["eea1","謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜"],["ef40","鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰"],["efa1","鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶"],["f040","璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒"],["f0a1","臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧"],["f140","蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪"],["f1a1","鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰"],["f240","徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛"],["f2a1","礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕"],["f340","譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦"],["f3a1","鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲"],["f440","嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩"],["f4a1","禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿"],["f540","鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛"],["f5a1","鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥"],["f640","蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺"],["f6a1","騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚"],["f740","糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊"],["f7a1","驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾"],["f840","讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏"],["f8a1","齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚"],["f940","纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊"],["f9a1","龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓"]]},function(e,t,r){function n(e,t,r){this.name=this.constructor.name,this.message=e,this.type=t,r&&(this.code=this.errno=r.code),Error.captureStackTrace(this,this.constructor)}e.exports=n,r(46).inherits(n,Error)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,i=(n=r(114))&&n.__esModule?n:{default:n};var o=r(115),s=r(90);window.trezor=o,window.trezorLink=s,window.trezorConfig=i.default;var a={...o,trezorConfig:i.default};t.default=a,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default="379c09fbdc7aa22e0ab2e33f4c049e882b0c42efedf40134f75308a66396b7b39b13ae4db79b372090a66b76e5b976c26484ab5d87b1d5e121337a8299f9334c0a1f68747470733f3a2f2f6c6f63616c686f7374283a5c642b293f282f2e2a293f0a2e68747470733f3a2f2f6c6f63616c686f73745c2e6d797472657a6f725c2e636f6d283a5c642b293f282f2e2a293f0a1b68747470733a2f2f6d797472657a6f725c2e636f6d282f2e2a293f0a2568747470733a2f2f5b5c775c2e2d5d2b5c2e6d797472657a6f725c2e636f6d282f2e2a293f0a1868747470733a2f2f7472657a6f725c2e696f282f2e2a293f0a2268747470733a2f2f5b5c775c2e2d5d2b5c2e7472657a6f725c2e696f282f2e2a293f0a2068747470733a2f2f7472657a6f725c2e6769746875625c2e696f282f2e2a293f0a1e68747470733a2f2f677265656e616464726573735c2e6974282f2e2a293f0a2868747470733a2f2f5b5c775c2e2d5d2b5c2e677265656e616464726573735c2e6974282f2e2a293f0a1c68747470733a2f2f636f696e707269736d5c2e636f6d282f2e2a293f0a2668747470733a2f2f5b5c775c2e2d5d2b5c2e636f696e707269736d5c2e636f6d282f2e2a293f0a1768747470733a2f2f62697465785c2e6c61282f2e2a293f0a2168747470733a2f2f5b5c775c2e2d5d2b5c2e62697465785c2e6c61282f2e2a293f0a1768747470733a2f2f646173685c2e72756e282f2e2a293f0a2168747470733a2f2f5b5c775c2e2d5d2b5c2e646173685c2e72756e282f2e2a293f0a1c68747470733a2f2f307870726f6a6563745c2e636f6d282f2e2a293f0a2e68747470733a2f2f5b5c775c2e2d5d2b5c2e756e636861696e65642d6361706974616c5c2e636f6d282f2e2a293f0a396368726f6d652d657874656e73696f6e3a2f2f6a636a6a686a67696d696a646b6f616d656d616768616a6c6865676d6f636c6a282f2e2a293f1adc9a020ac23a0a20676f6f676c652f70726f746f6275662f64657363726970746f722e70726f746f120f676f6f676c652e70726f746f627566224d0a1146696c6544657363726970746f7253657412380a0466696c6518012003280b32242e676f6f676c652e70726f746f6275662e46696c6544657363726970746f7250726f746f520466696c6522e4040a1346696c6544657363726970746f7250726f746f12120a046e616d6518012001280952046e616d6512180a077061636b61676518022001280952077061636b616765121e0a0a646570656e64656e6379180320032809520a646570656e64656e6379122b0a117075626c69635f646570656e64656e6379180a2003280552107075626c6963446570656e64656e637912270a0f7765616b5f646570656e64656e6379180b20032805520e7765616b446570656e64656e637912430a0c6d6573736167655f7479706518042003280b32202e676f6f676c652e70726f746f6275662e44657363726970746f7250726f746f520b6d6573736167655479706512410a09656e756d5f7479706518052003280b32242e676f6f676c652e70726f746f6275662e456e756d44657363726970746f7250726f746f5208656e756d5479706512410a077365727669636518062003280b32272e676f6f676c652e70726f746f6275662e5365727669636544657363726970746f7250726f746f52077365727669636512430a09657874656e73696f6e18072003280b32252e676f6f676c652e70726f746f6275662e4669656c6444657363726970746f7250726f746f5209657874656e73696f6e12360a076f7074696f6e7318082001280b321c2e676f6f676c652e70726f746f6275662e46696c654f7074696f6e7352076f7074696f6e7312490a10736f757263655f636f64655f696e666f18092001280b321f2e676f6f676c652e70726f746f6275662e536f75726365436f6465496e666f520e736f75726365436f6465496e666f12160a0673796e746178180c20012809520673796e74617822b9060a0f44657363726970746f7250726f746f12120a046e616d6518012001280952046e616d65123b0a056669656c6418022003280b32252e676f6f676c652e70726f746f6275662e4669656c6444657363726970746f7250726f746f52056669656c6412430a09657874656e73696f6e18062003280b32252e676f6f676c652e70726f746f6275662e4669656c6444657363726970746f7250726f746f5209657874656e73696f6e12410a0b6e65737465645f7479706518032003280b32202e676f6f676c652e70726f746f6275662e44657363726970746f7250726f746f520a6e65737465645479706512410a09656e756d5f7479706518042003280b32242e676f6f676c652e70726f746f6275662e456e756d44657363726970746f7250726f746f5208656e756d5479706512580a0f657874656e73696f6e5f72616e676518052003280b322f2e676f6f676c652e70726f746f6275662e44657363726970746f7250726f746f2e457874656e73696f6e52616e6765520e657874656e73696f6e52616e676512440a0a6f6e656f665f6465636c18082003280b32252e676f6f676c652e70726f746f6275662e4f6e656f6644657363726970746f7250726f746f52096f6e656f664465636c12390a076f7074696f6e7318072001280b321f2e676f6f676c652e70726f746f6275662e4d6573736167654f7074696f6e7352076f7074696f6e7312550a0e72657365727665645f72616e676518092003280b322e2e676f6f676c652e70726f746f6275662e44657363726970746f7250726f746f2e526573657276656452616e6765520d726573657276656452616e676512230a0d72657365727665645f6e616d65180a20032809520c72657365727665644e616d651a7a0a0e457874656e73696f6e52616e676512140a0573746172741801200128055205737461727412100a03656e641802200128055203656e6412400a076f7074696f6e7318032001280b32262e676f6f676c652e70726f746f6275662e457874656e73696f6e52616e67654f7074696f6e7352076f7074696f6e731a370a0d526573657276656452616e676512140a0573746172741801200128055205737461727412100a03656e641802200128055203656e64227c0a15457874656e73696f6e52616e67654f7074696f6e7312580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e2a0908e8071080808080022298060a144669656c6444657363726970746f7250726f746f12120a046e616d6518012001280952046e616d6512160a066e756d62657218032001280552066e756d62657212410a056c6162656c18042001280e322b2e676f6f676c652e70726f746f6275662e4669656c6444657363726970746f7250726f746f2e4c6162656c52056c6162656c123e0a047479706518052001280e322a2e676f6f676c652e70726f746f6275662e4669656c6444657363726970746f7250726f746f2e54797065520474797065121b0a09747970655f6e616d651806200128095208747970654e616d65121a0a08657874656e6465651802200128095208657874656e64656512230a0d64656661756c745f76616c7565180720012809520c64656661756c7456616c7565121f0a0b6f6e656f665f696e646578180920012805520a6f6e656f66496e646578121b0a096a736f6e5f6e616d65180a2001280952086a736f6e4e616d6512370a076f7074696f6e7318082001280b321d2e676f6f676c652e70726f746f6275662e4669656c644f7074696f6e7352076f7074696f6e7322b6020a0454797065120f0a0b545950455f444f55424c451001120e0a0a545950455f464c4f41541002120e0a0a545950455f494e5436341003120f0a0b545950455f55494e5436341004120e0a0a545950455f494e543332100512100a0c545950455f46495845443634100612100a0c545950455f464958454433321007120d0a09545950455f424f4f4c1008120f0a0b545950455f535452494e471009120e0a0a545950455f47524f5550100a12100a0c545950455f4d455353414745100b120e0a0a545950455f4259544553100c120f0a0b545950455f55494e543332100d120d0a09545950455f454e554d100e12110a0d545950455f5346495845443332100f12110a0d545950455f53464958454436341010120f0a0b545950455f53494e5433321011120f0a0b545950455f53494e543634101222430a054c6162656c12120a0e4c4142454c5f4f5054494f4e414c100112120a0e4c4142454c5f5245515549524544100212120a0e4c4142454c5f5245504541544544100322630a144f6e656f6644657363726970746f7250726f746f12120a046e616d6518012001280952046e616d6512370a076f7074696f6e7318022001280b321d2e676f6f676c652e70726f746f6275662e4f6e656f664f7074696f6e7352076f7074696f6e7322e3020a13456e756d44657363726970746f7250726f746f12120a046e616d6518012001280952046e616d65123f0a0576616c756518022003280b32292e676f6f676c652e70726f746f6275662e456e756d56616c756544657363726970746f7250726f746f520576616c756512360a076f7074696f6e7318032001280b321c2e676f6f676c652e70726f746f6275662e456e756d4f7074696f6e7352076f7074696f6e73125d0a0e72657365727665645f72616e676518042003280b32362e676f6f676c652e70726f746f6275662e456e756d44657363726970746f7250726f746f2e456e756d526573657276656452616e6765520d726573657276656452616e676512230a0d72657365727665645f6e616d65180520032809520c72657365727665644e616d651a3b0a11456e756d526573657276656452616e676512140a0573746172741801200128055205737461727412100a03656e641802200128055203656e642283010a18456e756d56616c756544657363726970746f7250726f746f12120a046e616d6518012001280952046e616d6512160a066e756d62657218022001280552066e756d626572123b0a076f7074696f6e7318032001280b32212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7352076f7074696f6e7322a7010a165365727669636544657363726970746f7250726f746f12120a046e616d6518012001280952046e616d65123e0a066d6574686f6418022003280b32262e676f6f676c652e70726f746f6275662e4d6574686f6444657363726970746f7250726f746f52066d6574686f6412390a076f7074696f6e7318032001280b321f2e676f6f676c652e70726f746f6275662e536572766963654f7074696f6e7352076f7074696f6e732289020a154d6574686f6444657363726970746f7250726f746f12120a046e616d6518012001280952046e616d65121d0a0a696e7075745f747970651802200128095209696e70757454797065121f0a0b6f75747075745f74797065180320012809520a6f75747075745479706512380a076f7074696f6e7318042001280b321e2e676f6f676c652e70726f746f6275662e4d6574686f644f7074696f6e7352076f7074696f6e7312300a10636c69656e745f73747265616d696e671805200128083a0566616c7365520f636c69656e7453747265616d696e6712300a107365727665725f73747265616d696e671806200128083a0566616c7365520f73657276657253747265616d696e6722b9080a0b46696c654f7074696f6e7312210a0c6a6176615f7061636b616765180120012809520b6a6176615061636b61676512300a146a6176615f6f757465725f636c6173736e616d6518082001280952126a6176614f75746572436c6173736e616d6512350a136a6176615f6d756c7469706c655f66696c6573180a200128083a0566616c736552116a6176614d756c7469706c6546696c657312440a1d6a6176615f67656e65726174655f657175616c735f616e645f686173681814200128084202180152196a61766147656e6572617465457175616c73416e6448617368123a0a166a6176615f737472696e675f636865636b5f75746638181b200128083a0566616c736552136a617661537472696e67436865636b5574663812530a0c6f7074696d697a655f666f7218092001280e32292e676f6f676c652e70726f746f6275662e46696c654f7074696f6e732e4f7074696d697a654d6f64653a055350454544520b6f7074696d697a65466f72121d0a0a676f5f7061636b616765180b200128095209676f5061636b61676512350a1363635f67656e657269635f73657276696365731810200128083a0566616c73655211636347656e65726963536572766963657312390a156a6176615f67656e657269635f73657276696365731811200128083a0566616c736552136a61766147656e65726963536572766963657312350a1370795f67656e657269635f73657276696365731812200128083a0566616c73655211707947656e65726963536572766963657312370a147068705f67656e657269635f7365727669636573182a200128083a0566616c7365521270687047656e65726963536572766963657312250a0a646570726563617465641817200128083a0566616c7365520a64657072656361746564122f0a1063635f656e61626c655f6172656e6173181f200128083a0566616c7365520e6363456e61626c654172656e6173122a0a116f626a635f636c6173735f707265666978182420012809520f6f626a63436c61737350726566697812290a106373686172705f6e616d657370616365182520012809520f6373686172704e616d65737061636512210a0c73776966745f707265666978182720012809520b737769667450726566697812280a107068705f636c6173735f707265666978182820012809520e706870436c61737350726566697812230a0d7068705f6e616d657370616365182920012809520c7068704e616d65737061636512580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e223a0a0c4f7074696d697a654d6f646512090a0553504545441001120d0a09434f44455f53495a45100212100a0c4c4954455f52554e54494d4510032a0908e8071080808080024a040826102722d1020a0e4d6573736167654f7074696f6e73123c0a176d6573736167655f7365745f776972655f666f726d61741801200128083a0566616c736552146d65737361676553657457697265466f726d6174124c0a1f6e6f5f7374616e646172645f64657363726970746f725f6163636573736f721802200128083a0566616c7365521c6e6f5374616e6461726444657363726970746f724163636573736f7212250a0a646570726563617465641803200128083a0566616c7365520a64657072656361746564121b0a096d61705f656e74727918072001280852086d6170456e74727912580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e2a0908e8071080808080024a04080810094a040809100a22e2030a0c4669656c644f7074696f6e7312410a05637479706518012001280e32232e676f6f676c652e70726f746f6275662e4669656c644f7074696f6e732e43547970653a06535452494e475205637479706512160a067061636b656418022001280852067061636b656412470a066a737479706518062001280e32242e676f6f676c652e70726f746f6275662e4669656c644f7074696f6e732e4a53547970653a094a535f4e4f524d414c52066a737479706512190a046c617a791805200128083a0566616c736552046c617a7912250a0a646570726563617465641803200128083a0566616c7365520a6465707265636174656412190a047765616b180a200128083a0566616c736552047765616b12580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e222f0a054354797065120a0a06535452494e47100012080a04434f5244100112100a0c535452494e475f5049454345100222350a064a5354797065120d0a094a535f4e4f524d414c1000120d0a094a535f535452494e471001120d0a094a535f4e554d42455210022a0908e8071080808080024a040804100522730a0c4f6e656f664f7074696f6e7312580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e2a0908e80710808080800222c0010a0b456e756d4f7074696f6e73121f0a0b616c6c6f775f616c696173180220012808520a616c6c6f77416c69617312250a0a646570726563617465641803200128083a0566616c7365520a6465707265636174656412580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e2a0908e8071080808080024a0408051006229e010a10456e756d56616c75654f7074696f6e7312250a0a646570726563617465641801200128083a0566616c7365520a6465707265636174656412580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e2a0908e807108080808002229c010a0e536572766963654f7074696f6e7312250a0a646570726563617465641821200128083a0566616c7365520a6465707265636174656412580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e2a0908e80710808080800222e0020a0d4d6574686f644f7074696f6e7312250a0a646570726563617465641821200128083a0566616c7365520a6465707265636174656412710a116964656d706f74656e63795f6c6576656c18222001280e322f2e676f6f676c652e70726f746f6275662e4d6574686f644f7074696f6e732e4964656d706f74656e63794c6576656c3a134944454d504f54454e43595f554e4b4e4f574e52106964656d706f74656e63794c6576656c12580a14756e696e7465727072657465645f6f7074696f6e18e7072003280b32242e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e5213756e696e7465727072657465644f7074696f6e22500a104964656d706f74656e63794c6576656c12170a134944454d504f54454e43595f554e4b4e4f574e100012130a0f4e4f5f534944455f454646454354531001120e0a0a4944454d504f54454e5410022a0908e807108080808002229a030a13556e696e7465727072657465644f7074696f6e12410a046e616d6518022003280b322d2e676f6f676c652e70726f746f6275662e556e696e7465727072657465644f7074696f6e2e4e616d655061727452046e616d6512290a106964656e7469666965725f76616c7565180320012809520f6964656e74696669657256616c7565122c0a12706f7369746976655f696e745f76616c75651804200128045210706f736974697665496e7456616c7565122c0a126e656761746976655f696e745f76616c756518052001280352106e65676174697665496e7456616c756512210a0c646f75626c655f76616c7565180620012801520b646f75626c6556616c756512210a0c737472696e675f76616c756518072001280c520b737472696e6756616c756512270a0f6167677265676174655f76616c7565180820012809520e61676772656761746556616c75651a4a0a084e616d6550617274121b0a096e616d655f7061727418012002280952086e616d655061727412210a0c69735f657874656e73696f6e180220022808520b6973457874656e73696f6e22a7020a0e536f75726365436f6465496e666f12440a086c6f636174696f6e18012003280b32282e676f6f676c652e70726f746f6275662e536f75726365436f6465496e666f2e4c6f636174696f6e52086c6f636174696f6e1ace010a084c6f636174696f6e12160a04706174681801200328054202100152047061746812160a047370616e1802200328054202100152047370616e12290a106c656164696e675f636f6d6d656e7473180320012809520f6c656164696e67436f6d6d656e7473122b0a11747261696c696e675f636f6d6d656e74731804200128095210747261696c696e67436f6d6d656e7473123a0a196c656164696e675f64657461636865645f636f6d6d656e747318062003280952176c656164696e674465746163686564436f6d6d656e747322d1010a1147656e657261746564436f6465496e666f124d0a0a616e6e6f746174696f6e18012003280b322d2e676f6f676c652e70726f746f6275662e47656e657261746564436f6465496e666f2e416e6e6f746174696f6e520a616e6e6f746174696f6e1a6d0a0a416e6e6f746174696f6e12160a047061746818012003280542021001520470617468121f0a0b736f757263655f66696c65180220012809520a736f7572636546696c6512140a05626567696e1803200128055205626567696e12100a03656e641804200128055203656e64428f010a13636f6d2e676f6f676c652e70726f746f627566421044657363726970746f7250726f746f7348015a3e6769746875622e636f6d2f676f6c616e672f70726f746f6275662f70726f746f632d67656e2d676f2f64657363726970746f723b64657363726970746f72f80101a20203475042aa021a476f6f676c652e50726f746f6275662e5265666c656374696f6e0ad2420a0b74797065732e70726f746f1a20676f6f676c652f70726f746f6275662f64657363726970746f722e70726f746f22c0010a0a48444e6f64655479706512140a05646570746818012002280d5205646570746812200a0b66696e6765727072696e7418022002280d520b66696e6765727072696e74121b0a096368696c645f6e756d18032002280d52086368696c644e756d121d0a0a636861696e5f636f646518042002280c5209636861696e436f6465121f0a0b707269766174655f6b657918052001280c520a707269766174654b6579121d0a0a7075626c69635f6b657918062001280c52097075626c69634b6579224e0a0e48444e6f64655061746854797065121f0a046e6f646518012002280b320b2e48444e6f64655479706552046e6f6465121b0a09616464726573735f6e18022003280d5208616464726573734e22730a184d756c746973696752656465656d5363726970745479706512290a077075626b65797318012003280b320f2e48444e6f6465506174685479706552077075626b657973121e0a0a7369676e61747572657318022003280c520a7369676e617475726573120c0a016d18032001280d52016d2280040a0b5478496e70757454797065121b0a09616464726573735f6e18012003280d5208616464726573734e121b0a09707265765f6861736818022002280c52087072657648617368121d0a0a707265765f696e64657818032002280d520970726576496e646578121d0a0a7363726970745f73696718042001280c520973637269707453696712260a0873657175656e636518052001280d3a0a34323934393637323935520873657175656e6365123f0a0b7363726970745f7479706518062001280e32102e496e707574536372697074547970653a0c5350454e4441444452455353520a7363726970745479706512350a086d756c746973696718072001280b32192e4d756c746973696752656465656d5363726970745479706552086d756c746973696712160a06616d6f756e741808200128045206616d6f756e74121f0a0b6465637265645f7472656518092001280d520a6465637265645472656512320a156465637265645f7363726970745f76657273696f6e180a2001280d521364656372656453637269707456657273696f6e12330a16707265765f626c6f636b5f686173685f626970313135180b2001280c521370726576426c6f636b4861736842697031313512370a18707265765f626c6f636b5f6865696768745f626970313135180c2001280d521570726576426c6f636b48656967687442697031313522fe020a0c54784f75747075745479706512180a0761646472657373180120012809520761646472657373121b0a09616464726573735f6e18022003280d5208616464726573734e12160a06616d6f756e741803200228045206616d6f756e7412320a0b7363726970745f7479706518042002280e32112e4f757470757453637269707454797065520a7363726970745479706512350a086d756c746973696718052001280b32192e4d756c746973696752656465656d5363726970745479706552086d756c746973696712240a0e6f705f72657475726e5f6461746118062001280c520c6f7052657475726e4461746112320a156465637265645f7363726970745f76657273696f6e18072001280d521364656372656453637269707456657273696f6e122a0a11626c6f636b5f686173685f62697031313518082001280c520f626c6f636b48617368426970313135122e0a13626c6f636b5f6865696768745f62697031313518092001280d5211626c6f636b4865696768744269703131352282010a0f54784f757470757442696e5479706512160a06616d6f756e741801200228045206616d6f756e7412230a0d7363726970745f7075626b657918022002280c520c7363726970745075626b657912320a156465637265645f7363726970745f76657273696f6e18032001280d521364656372656453637269707456657273696f6e22b5030a0f5472616e73616374696f6e5479706512180a0776657273696f6e18012001280d520776657273696f6e12240a06696e7075747318022003280b320c2e5478496e707574547970655206696e7075747312310a0b62696e5f6f75747075747318032003280b32102e54784f757470757442696e54797065520a62696e4f75747075747312270a076f75747075747318052003280b320d2e54784f75747075745479706552076f757470757473121b0a096c6f636b5f74696d6518042001280d52086c6f636b54696d65121d0a0a696e707574735f636e7418062001280d5209696e70757473436e74121f0a0b6f7574707574735f636e7418072001280d520a6f757470757473436e74121d0a0a65787472615f6461746118082001280c520965787472614461746112240a0e65787472615f646174615f6c656e18092001280d520c6578747261446174614c656e12160a06657870697279180a2001280d520665787069727912220a0c6f76657277696e7465726564180b20012808520c6f76657277696e746572656412280a1076657273696f6e5f67726f75705f6964180c2001280d520e76657273696f6e47726f7570496422a6010a1454785265717565737444657461696c735479706512230a0d726571756573745f696e64657818012001280d520c72657175657374496e64657812170a0774785f6861736818022001280c520674784861736812240a0e65787472615f646174615f6c656e18032001280d520c6578747261446174614c656e122a0a1165787472615f646174615f6f666673657418042001280d520f6578747261446174614f66667365742285010a1754785265717565737453657269616c697a65645479706512270a0f7369676e61747572655f696e64657818012001280d520e7369676e6174757265496e646578121c0a097369676e617475726518022001280c52097369676e617475726512230a0d73657269616c697a65645f747818032001280c520c73657269616c697a65645478228d010a0c4964656e746974795479706512140a0570726f746f180120012809520570726f746f12120a047573657218022001280952047573657212120a04686f73741803200128095204686f737412120a04706f72741804200128095204706f727412120a047061746818052001280952047061746812170a05696e64657818062001280d3a01305205696e64657822b1010a144e454d5472616e73616374696f6e436f6d6d6f6e121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076e6574776f726b18022001280d52076e6574776f726b121c0a0974696d657374616d7018032001280d520974696d657374616d7012100a036665651804200128045203666565121a0a08646561646c696e6518052001280d5208646561646c696e6512160a067369676e657218062001280c52067369676e657222a2010a0b4e454d5472616e73666572121c0a09726563697069656e741801200128095209726563697069656e7412160a06616d6f756e741802200128045206616d6f756e7412180a077061796c6f616418032001280c52077061796c6f6164121d0a0a7075626c69635f6b657918042001280c52097075626c69634b657912240a076d6f736169637318052003280b320a2e4e454d4d6f7361696352076d6f7361696373225d0a094e454d4d6f73616963121c0a096e616d65737061636518012001280952096e616d65737061636512160a066d6f7361696318022001280952066d6f73616963121a0a087175616e7469747918032001280452087175616e7469747922730a154e454d50726f766973696f6e4e616d657370616365121c0a096e616d65737061636518012001280952096e616d65737061636512160a06706172656e741802200128095206706172656e7412120a0473696e6b180320012809520473696e6b12100a036665651804200128045203666565226f0a114e454d4d6f736169634372656174696f6e12340a0a646566696e6974696f6e18012001280b32142e4e454d4d6f73616963446566696e6974696f6e520a646566696e6974696f6e12120a0473696e6b180220012809520473696e6b12100a03666565180320012804520366656522dd030a134e454d4d6f73616963446566696e6974696f6e12120a046e616d6518012001280952046e616d6512160a067469636b657218022001280952067469636b6572121c0a096e616d65737061636518032001280952096e616d65737061636512160a066d6f7361696318042001280952066d6f7361696312220a0c64697669736962696c69747918052001280d520c64697669736962696c69747912220a046c65767918062001280e320e2e4e454d4d6f736169634c65767952046c65767912100a03666565180720012804520366656512210a0c6c6576795f61646472657373180820012809520b6c6576794164647265737312250a0e6c6576795f6e616d657370616365180920012809520d6c6576794e616d657370616365121f0a0b6c6576795f6d6f73616963180a20012809520a6c6576794d6f7361696312160a06737570706c79180b200128045206737570706c7912250a0e6d757461626c655f737570706c79180c20012808520d6d757461626c65537570706c7912220a0c7472616e7366657261626c65180d20012808520c7472616e7366657261626c6512200a0b6465736372697074696f6e180e20012809520b6465736372697074696f6e121a0a086e6574776f726b73180f2003280d52086e6574776f726b73228d010a154e454d4d6f73616963537570706c794368616e6765121c0a096e616d65737061636518012001280952096e616d65737061636512160a066d6f7361696318022001280952066d6f7361696312280a047479706518032001280e32142e4e454d537570706c794368616e67655479706552047479706512140a0564656c7461180420012804520564656c74612286010a184e454d4167677265676174654d6f64696669636174696f6e12410a0d6d6f64696669636174696f6e7318012003280b321b2e4e454d436f7369676e61746f72794d6f64696669636174696f6e520d6d6f64696669636174696f6e7312270a0f72656c61746976655f6368616e6765180220012811520e72656c61746976654368616e676522650a1a4e454d436f7369676e61746f72794d6f64696669636174696f6e12280a047479706518012001280e32142e4e454d4d6f64696669636174696f6e54797065520474797065121d0a0a7075626c69635f6b657918022001280c52097075626c69634b657922660a154e454d496d706f7274616e63655472616e73666572122e0a046d6f646518012001280e321a2e4e454d496d706f7274616e63655472616e736665724d6f646552046d6f6465121d0a0a7075626c69635f6b657918022001280c52097075626c69634b657922520a105374656c6c617241737365745479706512120a047479706518012001280d52047479706512120a04636f64651802200128095204636f646512160a06697373756572180320012809520669737375657222d8020a154c69736b5472616e73616374696f6e436f6d6d6f6e12280a047479706518012001280e32142e4c69736b5472616e73616374696f6e5479706552047479706512190a06616d6f756e741802200128043a01305206616d6f756e7412100a03666565180320012804520366656512210a0c726563697069656e745f6964180420012809520b726563697069656e744964122a0a1173656e6465725f7075626c69635f6b657918052001280c520f73656e6465725075626c69634b657912300a147265717565737465725f7075626c69635f6b657918062001280c52127265717565737465725075626c69634b6579121c0a097369676e617475726518072001280c52097369676e6174757265121c0a0974696d657374616d7018082001280d520974696d657374616d70122b0a05617373657418092001280b32152e4c69736b5472616e73616374696f6e41737365745205617373657422e2010a144c69736b5472616e73616374696f6e417373657412300a097369676e617475726518012001280b32122e4c69736b5369676e61747572655479706552097369676e6174757265122d0a0864656c656761746518022001280b32112e4c69736b44656c656761746554797065520864656c656761746512140a05766f7465731803200328095205766f746573123f0a0e6d756c74697369676e617475726518042001280b32172e4c69736b4d756c74697369676e617475726554797065520e6d756c74697369676e617475726512120a046461746118052001280952046461746122320a114c69736b5369676e617475726554797065121d0a0a7075626c69635f6b657918012001280c52097075626c69634b6579222e0a104c69736b44656c656761746554797065121a0a08757365726e616d651801200128095208757365726e616d6522660a164c69736b4d756c74697369676e61747572655479706512100a036d696e18012001280d52036d696e121b0a096c6966655f74696d6518022001280d52086c69666554696d65121d0a0a6b6579735f67726f757018032003280952096b65797347726f7570224b0a0f54657a6f73436f6e7472616374494412240a0374616718012001280e32122e54657a6f73436f6e747261637454797065520374616712120a046861736818022001280c52046861736822ed010a1454657a6f734f7065726174696f6e436f6d6d6f6e12160a066272616e636818012001280c52066272616e636812250a0374616718022001280e32132e54657a6f734f7065726174696f6e54797065520374616712280a06736f7572636518032001280b32102e54657a6f73436f6e747261637449445206736f7572636512100a03666565180420012804520366656512180a07636f756e7465721805200128045207636f756e746572121b0a096761735f6c696d697418062001280452086761734c696d697412230a0d73746f726167655f6c696d6974180720012804520c73746f726167654c696d69742282010a1454657a6f735472616e73616374696f6e5479706512160a06616d6f756e741801200128045206616d6f756e7412320a0b64657374696e6174696f6e18022001280b32102e54657a6f73436f6e74726163744944520b64657374696e6174696f6e121e0a0a706172616d657465727318032001280c520a706172616d657465727322cb010a1454657a6f734f726967696e6174696f6e5479706512250a0e6d616e616765725f7075626b657918012001280c520d6d616e616765725075626b657912180a0762616c616e6365180220012804520762616c616e6365121c0a097370656e6461626c6518032001280852097370656e6461626c6512200a0b64656c6567617461626c65180420012808520b64656c6567617461626c65121a0a0864656c656761746518052001280c520864656c656761746512160a0673637269707418062001280c520673637269707422310a1354657a6f7344656c65676174696f6e54797065121a0a0864656c656761746518012001280c520864656c65676174652281010a1243617264616e6f5478496e70757454797065121b0a09616464726573735f6e18012003280d5208616464726573734e121b0a09707265765f6861736818022001280c52087072657648617368121d0a0a707265765f696e64657818032001280d520970726576496e64657812120a047479706518042001280d52047479706522640a1343617264616e6f54784f75747075745479706512180a0761646472657373180120012809520761646472657373121b0a09616464726573735f6e18022003280d5208616464726573734e12160a06616d6f756e741803200128045206616d6f756e742aeb020a0b4661696c75726554797065121d0a194661696c7572655f556e65787065637465644d6573736167651001121a0a164661696c7572655f427574746f6e4578706563746564100212150a114661696c7572655f446174614572726f721003121b0a174661696c7572655f416374696f6e43616e63656c6c6564100412170a134661696c7572655f50696e4578706563746564100512180a144661696c7572655f50696e43616e63656c6c6564100612160a124661696c7572655f50696e496e76616c69641007121c0a184661696c7572655f496e76616c69645369676e6174757265100812180a144661696c7572655f50726f636573734572726f721009121a0a164661696c7572655f4e6f74456e6f75676846756e6473100a121a0a164661696c7572655f4e6f74496e697469616c697a6564100b12170a134661696c7572655f50696e4d69736d61746368100c12190a154661696c7572655f4669726d776172654572726f7210632a87010a104f75747075745363726970745479706512100a0c504159544f41444452455353100012130a0f504159544f53435249505448415348100112110a0d504159544f4d554c5449534947100212110a0d504159544f4f5052455455524e100312100a0c504159544f5749544e455353100412140a10504159544f503253485749544e45535310052a6c0a0f496e7075745363726970745479706512100a0c5350454e4441444452455353100012110a0d5350454e444d554c54495349471001120c0a0845585445524e414c100212100a0c5350454e445749544e455353100312140a105350454e44503253485749544e45535310042a550a0b5265717565737454797065120b0a075458494e5055541000120c0a0854584f55545055541001120a0a0654584d4554411002120e0a0a545846494e49534845441003120f0a0b545845585452414441544110042af0030a11427574746f6e526571756573745479706512170a13427574746f6e526571756573745f4f74686572100112220a1e427574746f6e526571756573745f4665654f7665725468726573686f6c641002121f0a1b427574746f6e526571756573745f436f6e6669726d4f75747075741003121d0a19427574746f6e526571756573745f52657365744465766963651004121d0a19427574746f6e526571756573745f436f6e6669726d576f72641005121c0a18427574746f6e526571756573745f576970654465766963651006121d0a19427574746f6e526571756573745f50726f7465637443616c6c100712180a14427574746f6e526571756573745f5369676e54781008121f0a1b427574746f6e526571756573745f4669726d77617265436865636b100912190a15427574746f6e526571756573745f41646472657373100a121b0a17427574746f6e526571756573745f5075626c69634b6579100b12230a1f427574746f6e526571756573745f4d6e656d6f6e6963576f7264436f756e74100c121f0a1b427574746f6e526571756573745f4d6e656d6f6e6963496e707574100d12200a1c427574746f6e526571756573745f5061737370687261736554797065100e12270a23427574746f6e526571756573745f556e6b6e6f776e44657269766174696f6e50617468100f2a7f0a1450696e4d6174726978526571756573745479706512200a1c50696e4d617472697852657175657374547970655f43757272656e74100112210a1d50696e4d617472697852657175657374547970655f4e65774669727374100212220a1e50696e4d617472697852657175657374547970655f4e65775365636f6e6410032a5a0a125265636f766572794465766963655479706512250a215265636f76657279446576696365547970655f536372616d626c6564576f7264731000121d0a195265636f76657279446576696365547970655f4d617472697810012a660a0f576f7264526571756573745479706512190a15576f726452657175657374547970655f506c61696e1000121b0a17576f726452657175657374547970655f4d6174726978391001121b0a17576f726452657175657374547970655f4d61747269783610022a350a1450617373706872617365536f757263655479706512070a0341534b1000120a0a06444556494345100112080a04484f535410022a430a0d4e454d4d6f736169634c65767912170a134d6f736169634c6576795f4162736f6c757465100112190a154d6f736169634c6576795f50657263656e74696c6510022a4b0a134e454d537570706c794368616e67655479706512190a15537570706c794368616e67655f496e637265617365100112190a15537570706c794368616e67655f446563726561736510022a5a0a134e454d4d6f64696669636174696f6e54797065121f0a1b436f7369676e61746f72794d6f64696669636174696f6e5f416464100112220a1e436f7369676e61746f72794d6f64696669636174696f6e5f44656c65746510022a5f0a194e454d496d706f7274616e63655472616e736665724d6f6465121f0a1b496d706f7274616e63655472616e736665725f4163746976617465100112210a1d496d706f7274616e63655472616e736665725f4465616374697661746510022ac6010a134c69736b5472616e73616374696f6e54797065120c0a085472616e736665721000121c0a1852656769737465725365636f6e6450617373706872617365100112140a10526567697374657244656c65676174651002120d0a0943617374566f746573100312210a1d52656769737465724d756c74697369676e61747572654163636f756e741004120e0a0a43726561746544617070100512140a105472616e73666572496e746f44617070100612150a115472616e736665724f75744f664461707010072a460a1254657a6f734f7065726174696f6e54797065120f0a0b5472616e73616374696f6e1008120f0a0b4f726967696e6174696f6e1009120e0a0a44656c65676174696f6e100a2a310a1154657a6f73436f6e747261637454797065120c0a08496d706c696369741000120e0a0a4f726967696e6174656410013a3c0a07776972655f696e12212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d2860320012808520677697265496e3a3e0a08776972655f6f757412212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d38603200128085207776972654f75743a470a0d776972655f64656275675f696e12212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d4860320012808520b776972654465627567496e3a490a0e776972655f64656275675f6f757412212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d5860320012808520c7769726544656275674f75743a400a09776972655f74696e7912212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d686032001280852087769726554696e793a4c0a0f776972655f626f6f746c6f6164657212212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d7860320012808520e77697265426f6f746c6f616465723a430a0b776972655f6e6f5f66736d12212e676f6f676c652e70726f746f6275662e456e756d56616c75654f7074696f6e7318d88603200128085209776972654e6f46736d0abe9d010a0e6d657373616765732e70726f746f1a0b74797065732e70726f746f224b0a0a496e697469616c697a6512140a05737461746518012001280c5205737461746512270a0f736b69705f70617373706872617365180220012808520e736b697050617373706872617365220d0a0b4765744665617475726573228c070a08466561747572657312160a0676656e646f72180120012809520676656e646f7212230a0d6d616a6f725f76657273696f6e18022001280d520c6d616a6f7256657273696f6e12230a0d6d696e6f725f76657273696f6e18032001280d520c6d696e6f7256657273696f6e12230a0d70617463685f76657273696f6e18042001280d520c706174636856657273696f6e12270a0f626f6f746c6f616465725f6d6f6465180520012808520e626f6f746c6f616465724d6f6465121b0a096465766963655f69641806200128095208646576696365496412250a0e70696e5f70726f74656374696f6e180720012808520d70696e50726f74656374696f6e12330a15706173737068726173655f70726f74656374696f6e18082001280852147061737370687261736550726f74656374696f6e121a0a086c616e677561676518092001280952086c616e677561676512140a056c6162656c180a2001280952056c6162656c12200a0b696e697469616c697a6564180c20012808520b696e697469616c697a6564121a0a087265766973696f6e180d2001280c52087265766973696f6e12270a0f626f6f746c6f616465725f68617368180e2001280c520e626f6f746c6f6164657248617368121a0a08696d706f72746564180f200128085208696d706f72746564121d0a0a70696e5f636163686564181020012808520970696e436163686564122b0a11706173737068726173655f63616368656418112001280852107061737370687261736543616368656412290a106669726d776172655f70726573656e74181220012808520f6669726d7761726550726573656e7412210a0c6e656564735f6261636b7570181320012808520b6e656564734261636b757012140a05666c61677318142001280d5205666c61677312140a056d6f64656c18152001280952056d6f64656c12190a0866775f6d616a6f7218162001280d520766774d616a6f7212190a0866775f6d696e6f7218172001280d520766774d696e6f7212190a0866775f706174636818182001280d520766775061746368121b0a0966775f76656e646f721819200128095208667756656e646f7212240a0e66775f76656e646f725f6b657973181a2001280c520c667756656e646f724b657973122b0a11756e66696e69736865645f6261636b7570181b200128085210756e66696e69736865644261636b7570121b0a096e6f5f6261636b7570181c2001280852086e6f4261636b7570220e0a0c436c65617253657373696f6e22f9010a0d4170706c7953657474696e6773121a0a086c616e677561676518012001280952086c616e677561676512140a056c6162656c18022001280952056c6162656c12250a0e7573655f70617373706872617365180320012808520d75736550617373706872617365121e0a0a686f6d6573637265656e18042001280c520a686f6d6573637265656e12420a11706173737068726173655f736f7572636518052001280e32152e50617373706872617365536f7572636554797065521070617373706872617365536f75726365122b0a126175746f5f6c6f636b5f64656c61795f6d7318062001280d520f6175746f4c6f636b44656c61794d7322220a0a4170706c79466c61677312140a05666c61677318012001280d5205666c61677322230a094368616e676550696e12160a0672656d6f7665180120012808520672656d6f766522a9010a0450696e6712180a076d65737361676518012001280952076d657373616765122b0a11627574746f6e5f70726f74656374696f6e1802200128085210627574746f6e50726f74656374696f6e12250a0e70696e5f70726f74656374696f6e180320012808520d70696e50726f74656374696f6e12330a15706173737068726173655f70726f74656374696f6e18042001280852147061737370687261736550726f74656374696f6e22230a075375636365737312180a076d65737361676518012001280952076d65737361676522450a074661696c75726512200a04636f646518012001280e320c2e4661696c757265547970655204636f646512180a076d65737361676518022001280952076d657373616765224b0a0d427574746f6e5265717565737412260a04636f646518012001280e32122e427574746f6e52657175657374547970655204636f646512120a0464617461180220012809520464617461220b0a09427574746f6e41636b223d0a1050696e4d61747269785265717565737412290a047479706518012001280e32152e50696e4d6174726978526571756573745479706552047479706522200a0c50696e4d617472697841636b12100a0370696e180120022809520370696e22080a0643616e63656c22300a115061737370687261736552657175657374121b0a096f6e5f64657669636518012001280852086f6e44657669636522450a0d5061737370687261736541636b121e0a0a70617373706872617365180120012809520a7061737370687261736512140a05737461746518022001280c52057374617465222e0a165061737370687261736553746174655265717565737412140a05737461746518012001280c5205737461746522140a1250617373706872617365537461746541636b22200a0a476574456e74726f707912120a0473697a6518012002280d520473697a6522230a07456e74726f707912180a07656e74726f707918012002280c5207656e74726f707922df010a0c4765745075626c69634b6579121b0a09616464726573735f6e18012003280d5208616464726573734e12280a1065636473615f63757276655f6e616d65180220012809520e656364736143757276654e616d6512210a0c73686f775f646973706c6179180320012808520b73686f77446973706c617912240a09636f696e5f6e616d651804200128093a07426974636f696e5208636f696e4e616d65123f0a0b7363726970745f7479706518052001280e32102e496e707574536372697074547970653a0c5350454e4441444452455353520a7363726970745479706522400a095075626c69634b6579121f0a046e6f646518012002280b320b2e48444e6f64655479706552046e6f646512120a047870756218022001280952047870756222ea010a0a47657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12240a09636f696e5f6e616d651802200128093a07426974636f696e5208636f696e4e616d6512210a0c73686f775f646973706c6179180320012808520b73686f77446973706c617912350a086d756c746973696718042001280b32192e4d756c746973696752656465656d5363726970745479706552086d756c7469736967123f0a0b7363726970745f7479706518052001280e32102e496e707574536372697074547970653a0c5350454e4441444452455353520a7363726970745479706522540a12457468657265756d47657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c617922230a074164647265737312180a0761646472657373180120022809520761646472657373222b0a0f457468657265756d4164647265737312180a076164647265737318012002280c520761646472657373220c0a0a576970654465766963652291020a0a4c6f6164446576696365121a0a086d6e656d6f6e696318012001280952086d6e656d6f6e6963121f0a046e6f646518022001280b320b2e48444e6f64655479706552046e6f646512100a0370696e180320012809520370696e12330a15706173737068726173655f70726f74656374696f6e18042001280852147061737370687261736550726f74656374696f6e12230a086c616e67756167651805200128093a07656e676c69736852086c616e677561676512140a056c6162656c18062001280952056c6162656c12230a0d736b69705f636865636b73756d180720012808520c736b6970436865636b73756d121f0a0b7532665f636f756e74657218082001280d520a753266436f756e74657222cb020a0b526573657444657669636512250a0e646973706c61795f72616e646f6d180120012808520d646973706c617952616e646f6d121f0a08737472656e67746818022001280d3a033235365208737472656e67746812330a15706173737068726173655f70726f74656374696f6e18032001280852147061737370687261736550726f74656374696f6e12250a0e70696e5f70726f74656374696f6e180420012808520d70696e50726f74656374696f6e12230a086c616e67756167651805200128093a07656e676c69736852086c616e677561676512140a056c6162656c18062001280952056c6162656c121f0a0b7532665f636f756e74657218072001280d520a753266436f756e746572121f0a0b736b69705f6261636b7570180820012808520a736b69704261636b7570121b0a096e6f5f6261636b757018092001280852086e6f4261636b7570220e0a0c4261636b757044657669636522100a0e456e74726f70795265717565737422260a0a456e74726f707941636b12180a07656e74726f707918012001280c5207656e74726f707922bf020a0e5265636f76657279446576696365121d0a0a776f72645f636f756e7418012001280d5209776f7264436f756e7412330a15706173737068726173655f70726f74656374696f6e18022001280852147061737370687261736550726f74656374696f6e12250a0e70696e5f70726f74656374696f6e180320012808520d70696e50726f74656374696f6e12230a086c616e67756167651804200128093a07656e676c69736852086c616e677561676512140a056c6162656c18052001280952056c6162656c12290a10656e666f7263655f776f72646c697374180620012808520f656e666f726365576f72646c69737412120a047479706518082001280d520474797065121f0a0b7532665f636f756e74657218092001280d520a753266436f756e74657212170a076472795f72756e180a20012808520664727952756e22330a0b576f72645265717565737412240a047479706518012001280e32102e576f72645265717565737454797065520474797065221d0a07576f726441636b12120a04776f72641801200228095204776f726422ab010a0b5369676e4d657373616765121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076d65737361676518022002280c52076d65737361676512240a09636f696e5f6e616d651803200128093a07426974636f696e5208636f696e4e616d65123f0a0b7363726970745f7479706518042001280e32102e496e707574536372697074547970653a0c5350454e4441444452455353520a736372697074547970652287010a0d5665726966794d65737361676512180a0761646472657373180120012809520761646472657373121c0a097369676e617475726518022001280c52097369676e617475726512180a076d65737361676518032001280c52076d65737361676512240a09636f696e5f6e616d651804200128093a07426974636f696e5208636f696e4e616d65224a0a104d6573736167655369676e617475726512180a0761646472657373180120012809520761646472657373121c0a097369676e617475726518022001280c52097369676e617475726522a8010a0e456e63727970744d65737361676512160a067075626b657918012001280c52067075626b657912180a076d65737361676518022001280c52076d65737361676512210a0c646973706c61795f6f6e6c79180320012808520b646973706c61794f6e6c79121b0a09616464726573735f6e18042003280d5208616464726573734e12240a09636f696e5f6e616d651805200128093a07426974636f696e5208636f696e4e616d6522560a10456e637279707465644d65737361676512140a056e6f6e636518012001280c52056e6f6e636512180a076d65737361676518022001280c52076d65737361676512120a04686d616318032001280c5204686d616322710a0e446563727970744d657373616765121b0a09616464726573735f6e18012003280d5208616464726573734e12140a056e6f6e636518022001280c52056e6f6e636512180a076d65737361676518032001280c52076d65737361676512120a04686d616318042001280c5204686d616322460a104465637279707465644d65737361676512180a076d65737361676518012001280c52076d65737361676512180a076164647265737318022001280952076164647265737322cb010a0e4369706865724b657956616c7565121b0a09616464726573735f6e18012003280d5208616464726573734e12100a036b657918022001280952036b657912140a0576616c756518032001280c520576616c756512180a07656e63727970741804200128085207656e637279707412240a0e61736b5f6f6e5f656e6372797074180520012808520c61736b4f6e456e637279707412240a0e61736b5f6f6e5f64656372797074180620012808520c61736b4f6e44656372797074120e0a02697618072001280c5202697622280a1043697068657265644b657956616c756512140a0576616c756518012001280c520576616c7565227e0a0e457374696d617465547853697a6512230a0d6f7574707574735f636f756e7418012002280d520c6f757470757473436f756e7412210a0c696e707574735f636f756e7418022002280d520b696e70757473436f756e7412240a09636f696e5f6e616d651803200128093a07426974636f696e5208636f696e4e616d6522210a06547853697a6512170a0774785f73697a6518012001280d5206747853697a652299020a065369676e547812230a0d6f7574707574735f636f756e7418012002280d520c6f757470757473436f756e7412210a0c696e707574735f636f756e7418022002280d520b696e70757473436f756e7412240a09636f696e5f6e616d651803200128093a07426974636f696e5208636f696e4e616d65121b0a0776657273696f6e18042001280d3a0131520776657273696f6e121e0a096c6f636b5f74696d6518052001280d3a013052086c6f636b54696d6512160a0665787069727918062001280d520665787069727912220a0c6f76657277696e7465726564180720012808520c6f76657277696e746572656412280a1076657273696f6e5f67726f75705f696418082001280d520e76657273696f6e47726f7570496422b2020a0c53696d706c655369676e547812240a06696e7075747318012003280b320c2e5478496e707574547970655206696e7075747312270a076f75747075747318022003280b320d2e54784f75747075745479706552076f75747075747312340a0c7472616e73616374696f6e7318032003280b32102e5472616e73616374696f6e54797065520c7472616e73616374696f6e7312240a09636f696e5f6e616d651804200128093a07426974636f696e5208636f696e4e616d65121b0a0776657273696f6e18052001280d3a0131520776657273696f6e121e0a096c6f636b5f74696d6518062001280d3a013052086c6f636b54696d6512160a0665787069727918072001280d520665787069727912220a0c6f76657277696e7465726564180820012808520c6f76657277696e746572656422a7010a09547852657175657374122f0a0c726571756573745f7479706518012001280e320c2e5265717565737454797065520b7265717565737454797065122f0a0764657461696c7318022001280b32152e54785265717565737444657461696c7354797065520764657461696c7312380a0a73657269616c697a656418032001280b32182e54785265717565737453657269616c697a656454797065520a73657269616c697a656422290a05547841636b12200a02747818012001280b32102e5472616e73616374696f6e547970655202747822a6020a0e457468657265756d5369676e5478121b0a09616464726573735f6e18012003280d5208616464726573734e12140a056e6f6e636518022001280c52056e6f6e6365121b0a096761735f707269636518032001280c52086761735072696365121b0a096761735f6c696d697418042001280c52086761734c696d6974120e0a02746f18052001280c5202746f12140a0576616c756518062001280c520576616c7565122c0a12646174615f696e697469616c5f6368756e6b18072001280c521064617461496e697469616c4368756e6b121f0a0b646174615f6c656e67746818082001280d520a646174614c656e67746812190a08636861696e5f696418092001280d5207636861696e496412170a0774785f74797065180a2001280d52067478547970652297010a11457468657265756d547852657175657374121f0a0b646174615f6c656e67746818012001280d520a646174614c656e677468121f0a0b7369676e61747572655f7618022001280d520a7369676e617475726556121f0a0b7369676e61747572655f7218032001280c520a7369676e617475726552121f0a0b7369676e61747572655f7318042001280c520a7369676e617475726553222e0a0d457468657265756d547841636b121d0a0a646174615f6368756e6b18012001280c5209646174614368756e6b224c0a13457468657265756d5369676e4d657373616765121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076d65737361676518022002280c52076d65737361676522690a15457468657265756d5665726966794d65737361676512180a076164647265737318012001280c520761646472657373121c0a097369676e617475726518022001280c52097369676e617475726512180a076d65737361676518032001280c52076d65737361676522520a18457468657265756d4d6573736167655369676e617475726512180a076164647265737318012001280c520761646472657373121c0a097369676e617475726518022001280c52097369676e617475726522b9010a0c5369676e4964656e7469747912290a086964656e7469747918012001280b320d2e4964656e746974795479706552086964656e7469747912290a106368616c6c656e67655f68696464656e18022001280c520f6368616c6c656e676548696464656e12290a106368616c6c656e67655f76697375616c180320012809520f6368616c6c656e676556697375616c12280a1065636473615f63757276655f6e616d65180420012809520e656364736143757276654e616d6522670a0e5369676e65644964656e7469747912180a0761646472657373180120012809520761646472657373121d0a0a7075626c69635f6b657918022001280c52097075626c69634b6579121c0a097369676e617475726518032001280c52097369676e61747572652290010a114765744543444853657373696f6e4b657912290a086964656e7469747918012001280b320d2e4964656e746974795479706552086964656e7469747912260a0f706565725f7075626c69635f6b657918022001280c520d706565725075626c69634b657912280a1065636473615f63757276655f6e616d65180320012809520e656364736143757276654e616d6522310a0e4543444853657373696f6e4b6579121f0a0b73657373696f6e5f6b657918012001280c520a73657373696f6e4b657922300a0d536574553246436f756e746572121f0a0b7532665f636f756e74657218012001280d520a753266436f756e74657222270a0d4669726d77617265457261736512160a066c656e67746818012001280d52066c656e67746822410a0f4669726d776172655265717565737412160a066f666673657418012001280d52066f666673657412160a066c656e67746818022001280d52066c656e677468223e0a0e4669726d7761726555706c6f616412180a077061796c6f616418012002280c52077061796c6f616412120a046861736818022001280c52046861736822240a0853656c665465737412180a077061796c6f616418012001280c52077061796c6f616422690a0d4e454d47657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076e6574776f726b18022001280d52076e6574776f726b12210a0c73686f775f646973706c6179180320012808520b73686f77446973706c617922260a0a4e454d4164647265737312180a0761646472657373180120022809520761646472657373229d040a094e454d5369676e547812370a0b7472616e73616374696f6e18012001280b32152e4e454d5472616e73616374696f6e436f6d6d6f6e520b7472616e73616374696f6e12310a086d756c746973696718022001280b32152e4e454d5472616e73616374696f6e436f6d6d6f6e52086d756c746973696712280a087472616e7366657218032001280b320c2e4e454d5472616e7366657252087472616e73666572121c0a09636f7369676e696e671804200128085209636f7369676e696e6712470a1370726f766973696f6e5f6e616d65737061636518052001280b32162e4e454d50726f766973696f6e4e616d657370616365521270726f766973696f6e4e616d657370616365123b0a0f6d6f736169635f6372656174696f6e18062001280b32122e4e454d4d6f736169634372656174696f6e520e6d6f736169634372656174696f6e123b0a0d737570706c795f6368616e676518072001280b32162e4e454d4d6f73616963537570706c794368616e6765520c737570706c794368616e676512500a166167677265676174655f6d6f64696669636174696f6e18082001280b32192e4e454d4167677265676174654d6f64696669636174696f6e52156167677265676174654d6f64696669636174696f6e12470a13696d706f7274616e63655f7472616e7366657218092001280b32162e4e454d496d706f7274616e63655472616e736665725212696d706f7274616e63655472616e73666572223f0a0b4e454d5369676e6564547812120a046461746118012001280c520464617461121c0a097369676e617475726518022001280c52097369676e61747572652283010a114e454d446563727970744d657373616765121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076e6574776f726b18022001280d52076e6574776f726b121d0a0a7075626c69635f6b657918032001280c52097075626c69634b657912180a077061796c6f616418042001280c52077061796c6f6164222f0a134e454d4465637279707465644d65737361676512180a077061796c6f616418012001280c52077061796c6f6164223d0a0a436f7369436f6d6d6974121b0a09616464726573735f6e18012003280d5208616464726573734e12120a046461746118022001280c52046461746122480a0e436f7369436f6d6d69746d656e74121e0a0a636f6d6d69746d656e7418012001280c520a636f6d6d69746d656e7412160a067075626b657918022001280c52067075626b6579228d010a08436f73695369676e121b0a09616464726573735f6e18012003280d5208616464726573734e12120a046461746118022001280c520464617461122b0a11676c6f62616c5f636f6d6d69746d656e7418032001280c5210676c6f62616c436f6d6d69746d656e7412230a0d676c6f62616c5f7075626b657918042001280c520c676c6f62616c5075626b6579222d0a0d436f73695369676e6174757265121c0a097369676e617475726518012001280c52097369676e617475726522550a135374656c6c61724765745075626c69634b6579121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c617922310a105374656c6c61725075626c69634b6579121d0a0a7075626c69635f6b657918012001280c52097075626c69634b657922530a115374656c6c617247657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c6179222a0a0e5374656c6c61724164647265737312180a076164647265737318012001280952076164647265737322d1030a0d5374656c6c61725369676e547812290a1070726f746f636f6c5f76657273696f6e18012001280d520f70726f746f636f6c56657273696f6e121b0a09616464726573735f6e18022003280d5208616464726573734e122d0a126e6574776f726b5f7061737370687261736518032001280952116e6574776f726b5061737370687261736512250a0e736f757263655f6163636f756e74180420012809520d736f757263654163636f756e7412100a0366656518052001280d520366656512270a0f73657175656e63655f6e756d626572180620012804520e73657175656e63654e756d62657212290a1074696d65626f756e64735f737461727418082001280d520f74696d65626f756e6473537461727412250a0e74696d65626f756e64735f656e6418092001280d520d74696d65626f756e6473456e64121b0a096d656d6f5f74797065180a2001280d52086d656d6f54797065121b0a096d656d6f5f74657874180b2001280952086d656d6f5465787412170a076d656d6f5f6964180c2001280452066d656d6f4964121b0a096d656d6f5f68617368180d2001280c52086d656d6f4861736812250a0e6e756d5f6f7065726174696f6e73180e2001280d520d6e756d4f7065726174696f6e7322140a125374656c6c617254784f705265717565737422ab010a105374656c6c61725061796d656e744f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e74122f0a1364657374696e6174696f6e5f6163636f756e74180220012809521264657374696e6174696f6e4163636f756e7412270a05617373657418032001280b32112e5374656c6c61724173736574547970655205617373657412160a06616d6f756e741804200128125206616d6f756e74228b010a165374656c6c61724372656174654163636f756e744f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e74121f0a0b6e65775f6163636f756e74180220012809520a6e65774163636f756e7412290a107374617274696e675f62616c616e6365180320012812520f7374617274696e6742616c616e636522d3020a145374656c6c6172506174685061796d656e744f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412300a0a73656e645f617373657418022001280b32112e5374656c6c6172417373657454797065520973656e64417373657412190a0873656e645f6d6178180320012812520773656e644d6178122f0a1364657374696e6174696f6e5f6163636f756e74180420012809521264657374696e6174696f6e4163636f756e74123e0a1164657374696e6174696f6e5f617373657418052001280b32112e5374656c6c6172417373657454797065521064657374696e6174696f6e4173736574122d0a1264657374696e6174696f6e5f616d6f756e74180620012812521164657374696e6174696f6e416d6f756e7412270a05706174687318072003280b32112e5374656c6c6172417373657454797065520570617468732290020a145374656c6c61724d616e6167654f666665724f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412360a0d73656c6c696e675f617373657418022001280b32112e5374656c6c6172417373657454797065520c73656c6c696e67417373657412340a0c627579696e675f617373657418032001280b32112e5374656c6c6172417373657454797065520b627579696e67417373657412160a06616d6f756e741804200128125206616d6f756e7412170a0770726963655f6e18052001280d520670726963654e12170a0770726963655f6418062001280d520670726963654412190a086f666665725f696418072001280452076f66666572496422fc010a1b5374656c6c6172437265617465506173736976654f666665724f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412360a0d73656c6c696e675f617373657418022001280b32112e5374656c6c6172417373657454797065520c73656c6c696e67417373657412340a0c627579696e675f617373657418032001280b32112e5374656c6c6172417373657454797065520b627579696e67417373657412160a06616d6f756e741804200128125206616d6f756e7412170a0770726963655f6e18052001280d520670726963654e12170a0770726963655f6418062001280d520670726963654422e0030a135374656c6c61725365744f7074696f6e734f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412420a1d696e666c6174696f6e5f64657374696e6174696f6e5f6163636f756e74180220012809521b696e666c6174696f6e44657374696e6174696f6e4163636f756e74121f0a0b636c6561725f666c61677318032001280d520a636c656172466c616773121b0a097365745f666c61677318042001280d5208736574466c61677312230a0d6d61737465725f77656967687418052001280d520c6d617374657257656967687412230a0d6c6f775f7468726573686f6c6418062001280d520c6c6f775468726573686f6c6412290a106d656469756d5f7468726573686f6c6418072001280d520f6d656469756d5468726573686f6c6412250a0e686967685f7468726573686f6c6418082001280d520d686967685468726573686f6c64121f0a0b686f6d655f646f6d61696e180920012809520a686f6d65446f6d61696e121f0a0b7369676e65725f74797065180a2001280d520a7369676e657254797065121d0a0a7369676e65725f6b6579180b2001280c52097369676e65724b657912230a0d7369676e65725f776569676874180c2001280d520c7369676e6572576569676874227c0a145374656c6c61724368616e676554727573744f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412270a05617373657418022001280b32112e5374656c6c61724173736574547970655205617373657412140a056c696d697418032001280452056c696d697422c8010a135374656c6c6172416c6c6f7754727573744f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412270a0f747275737465645f6163636f756e74180220012809520e747275737465644163636f756e74121d0a0a61737365745f7479706518032001280d5209617373657454797065121d0a0a61737365745f636f646518042001280952096173736574436f646512230a0d69735f617574686f72697a656418052001280d520c6973417574686f72697a6564226f0a155374656c6c61724163636f756e744d657267654f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e74122f0a1364657374696e6174696f6e5f6163636f756e74180220012809521264657374696e6174696f6e4163636f756e7422640a135374656c6c61724d616e616765446174614f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412100a036b657918022001280952036b657912140a0576616c756518032001280c520576616c756522570a155374656c6c617242756d7053657175656e63654f7012250a0e736f757263655f6163636f756e74180120012809520d736f757263654163636f756e7412170a0762756d705f746f180220012804520662756d70546f224e0a0f5374656c6c61725369676e65645478121d0a0a7075626c69635f6b657918012001280c52097075626c69634b6579121c0a097369676e617475726518022001280c52097369676e617475726522520a104c69736b4765745075626c69634b6579121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c6179222e0a0d4c69736b5075626c69634b6579121d0a0a7075626c69635f6b657918012001280c52097075626c69634b657922500a0e4c69736b47657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c617922270a0b4c69736b4164647265737312180a076164647265737318012001280952076164647265737322630a0a4c69736b5369676e5478121b0a09616464726573735f6e18012003280d5208616464726573734e12380a0b7472616e73616374696f6e18022001280b32162e4c69736b5472616e73616374696f6e436f6d6d6f6e520b7472616e73616374696f6e222c0a0c4c69736b5369676e65645478121c0a097369676e617475726518012001280c52097369676e617475726522480a0f4c69736b5369676e4d657373616765121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076d65737361676518022001280c52076d65737361676522530a144c69736b4d6573736167655369676e6174757265121d0a0a7075626c69635f6b657918012001280c52097075626c69634b6579121c0a097369676e617475726518022001280c52097369676e6174757265226a0a114c69736b5665726966794d657373616765121d0a0a7075626c69635f6b657918012001280c52097075626c69634b6579121c0a097369676e617475726518022001280c52097369676e617475726512180a076d65737361676518032001280c52076d65737361676522510a0f54657a6f7347657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c617922280a0c54657a6f734164647265737312180a07616464726573731801200128095207616464726573732287020a0b54657a6f735369676e5478121b0a09616464726573735f6e18012003280d5208616464726573734e12330a096f7065726174696f6e18022001280b32152e54657a6f734f7065726174696f6e436f6d6d6f6e52096f7065726174696f6e12370a0b7472616e73616374696f6e18032001280b32152e54657a6f735472616e73616374696f6e54797065520b7472616e73616374696f6e12370a0b6f726967696e6174696f6e18042001280b32152e54657a6f734f726967696e6174696f6e54797065520b6f726967696e6174696f6e12340a0a64656c65676174696f6e18052001280b32142e54657a6f7344656c65676174696f6e54797065520a64656c65676174696f6e227c0a0d54657a6f735369676e65645478121c0a097369676e617475726518012001280c52097369676e617475726512260a0f7369675f6f705f636f6e74656e747318022001280c520d7369674f70436f6e74656e747312250a0e6f7065726174696f6e5f68617368180320012809520d6f7065726174696f6e4861736822530a1154657a6f734765745075626c69634b6579121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c6179222f0a0e54657a6f735075626c69634b6579121d0a0a7075626c69635f6b657918012001280c52097075626c69634b657922590a1144656275674c696e6b4465636973696f6e12150a067965735f6e6f18012001280852057965734e6f12170a0775705f646f776e18022001280852067570446f776e12140a05696e7075741803200128095205696e70757422130a1144656275674c696e6b47657453746174652288030a0e44656275674c696e6b537461746512160a066c61796f757418012001280c52066c61796f757412100a0370696e180220012809520370696e12160a066d617472697818032001280952066d6174726978121a0a086d6e656d6f6e696318042001280952086d6e656d6f6e6963121f0a046e6f646518052001280b320b2e48444e6f64655479706552046e6f646512330a15706173737068726173655f70726f74656374696f6e18062001280852147061737370687261736550726f74656374696f6e121d0a0a72657365745f776f726418072001280952097265736574576f726412230a0d72657365745f656e74726f707918082001280c520c7265736574456e74726f7079122c0a127265636f766572795f66616b655f776f726418092001280952107265636f7665727946616b65576f7264122a0a117265636f766572795f776f72645f706f73180a2001280d520f7265636f76657279576f7264506f7312240a0e72657365745f776f72645f706f73180b2001280d520c7265736574576f7264506f73220f0a0d44656275674c696e6b53746f7022500a0c44656275674c696e6b4c6f6712140a056c6576656c18012001280d52056c6576656c12160a066275636b657418022001280952066275636b657412120a047465787418032001280952047465787422470a1344656275674c696e6b4d656d6f72795265616412180a076164647265737318012001280d52076164647265737312160a066c656e67746818022001280d52066c656e67746822290a0f44656275674c696e6b4d656d6f727912160a066d656d6f727918012001280c52066d656d6f7279225e0a1444656275674c696e6b4d656d6f7279577269746512180a076164647265737318012001280d52076164647265737312160a066d656d6f727918022001280c52066d656d6f727912140a05666c6173681803200128085205666c617368222d0a1344656275674c696e6b466c617368457261736512160a06736563746f7218012001280d5206736563746f7222530a1143617264616e6f47657441646472657373121b0a09616464726573735f6e18012003280d5208616464726573734e12210a0c73686f775f646973706c6179180220012808520b73686f77446973706c6179222a0a0e43617264616e6f4164647265737312180a0761646472657373180120012809520761646472657373224b0a1243617264616e6f5369676e4d657373616765121b0a09616464726573735f6e18012003280d5208616464726573734e12180a076d65737361676518022001280c52076d65737361676522320a1343617264616e6f4765745075626c69634b6579121b0a09616464726573735f6e18012003280d5208616464726573734e22750a1043617264616e6f5075626c69634b657912120a0478707562180120012809520478707562121f0a046e6f646518022001280b320b2e48444e6f64655479706552046e6f6465122c0a12726f6f745f68645f706173737068726173651803200128095210726f6f74486450617373706872617365226d0a1443617264616e6f5665726966794d657373616765121d0a0a7075626c69635f6b657918012001280c52097075626c69634b6579121c0a097369676e617475726518022001280c52097369676e617475726512180a076d65737361676518032001280c52076d65737361676522560a1743617264616e6f4d6573736167655369676e6174757265121d0a0a7075626c69635f6b657918012001280c52097075626c69634b6579121c0a097369676e617475726518022001280c52097369676e617475726522a4010a1643617264616e6f5369676e5472616e73616374696f6e122b0a06696e7075747318012003280b32132e43617264616e6f5478496e707574547970655206696e70757473122e0a076f75747075747318022003280b32142e43617264616e6f54784f75747075745479706552076f757470757473122d0a127472616e73616374696f6e735f636f756e7418032001280d52117472616e73616374696f6e73436f756e74225f0a1043617264616e6f54785265717565737412190a0874785f696e64657818012001280d52077478496e64657812170a0774785f6861736818022001280c520674784861736812170a0774785f626f647918032001280c52067478426f6479224c0a1843617264616e6f5369676e65645472616e73616374696f6e12170a0774785f6861736818012001280c520674784861736812170a0774785f626f647918022001280c52067478426f647922300a0c43617264616e6f547841636b12200a0b7472616e73616374696f6e18012001280c520b7472616e73616374696f6e2ac1270a0b4d6573736167655479706512240a164d657373616765547970655f496e697469616c697a6510001a0890b51801b0b51801121a0a104d657373616765547970655f50696e6710011a0490b51801121d0a134d657373616765547970655f5375636365737310021a0498b51801121d0a134d657373616765547970655f4661696c75726510031a0498b51801121f0a154d657373616765547970655f4368616e676550696e10041a0490b5180112200a164d657373616765547970655f5769706544657669636510051a0490b5180112270a194d657373616765547970655f4669726d77617265457261736510061a0890b51801b8b5180112280a1a4d657373616765547970655f4669726d7761726555706c6f616410071a0890b51801b8b5180112290a1b4d657373616765547970655f4669726d776172655265717565737410081a0898b51801b8b5180112200a164d657373616765547970655f476574456e74726f707910091a0490b51801121d0a134d657373616765547970655f456e74726f7079100a1a0498b5180112220a184d657373616765547970655f4765745075626c69634b6579100b1a0490b51801121f0a154d657373616765547970655f5075626c69634b6579100c1a0498b5180112200a164d657373616765547970655f4c6f6164446576696365100d1a0490b5180112210a174d657373616765547970655f5265736574446576696365100e1a0490b51801121c0a124d657373616765547970655f5369676e5478100f1a0490b5180112240a184d657373616765547970655f53696d706c655369676e547810101a06080190b51801121e0a144d657373616765547970655f466561747572657310111a0498b5180112260a1c4d657373616765547970655f50696e4d61747269785265717565737410121a0498b51801122a0a184d657373616765547970655f50696e4d617472697841636b10131a0c90b51801b0b51801c0b5180112200a124d657373616765547970655f43616e63656c10141a0890b51801b0b51801121f0a154d657373616765547970655f54785265717565737410151a0498b51801121b0a114d657373616765547970655f547841636b10161a0490b5180112240a1a4d657373616765547970655f4369706865724b657956616c756510171a0490b5180112220a184d657373616765547970655f436c65617253657373696f6e10181a0490b5180112230a194d657373616765547970655f4170706c7953657474696e677310191a0490b5180112230a194d657373616765547970655f427574746f6e52657175657374101a1a0498b5180112270a154d657373616765547970655f427574746f6e41636b101b1a0c90b51801b0b51801c0b5180112200a164d657373616765547970655f4170706c79466c616773101c1a0490b5180112200a164d657373616765547970655f47657441646472657373101d1a0490b51801121d0a134d657373616765547970655f41646472657373101e1a0498b5180112220a144d657373616765547970655f53656c665465737410201a0890b51801b8b5180112220a184d657373616765547970655f4261636b757044657669636510221a0490b5180112240a1a4d657373616765547970655f456e74726f70795265717565737410231a0498b5180112200a164d657373616765547970655f456e74726f707941636b10241a0490b5180112210a174d657373616765547970655f5369676e4d65737361676510261a0490b5180112230a194d657373616765547970655f5665726966794d65737361676510271a0490b5180112260a1c4d657373616765547970655f4d6573736167655369676e617475726510281a0498b5180112270a1d4d657373616765547970655f506173737068726173655265717565737410291a0498b51801122b0a194d657373616765547970655f5061737370687261736541636b102a1a0c90b51801b0b51801c0b51801122c0a224d657373616765547970655f50617373706872617365537461746552657175657374104d1a0498b5180112300a1e4d657373616765547970655f50617373706872617365537461746541636b104e1a0c90b51801b0b51801c0b5180112260a1a4d657373616765547970655f457374696d617465547853697a65102b1a06080190b51801121e0a124d657373616765547970655f547853697a65102c1a06080198b5180112240a1a4d657373616765547970655f5265636f76657279446576696365102d1a0490b5180112210a174d657373616765547970655f576f726452657175657374102e1a0498b51801121d0a134d657373616765547970655f576f726441636b102f1a0490b5180112260a1c4d657373616765547970655f43697068657265644b657956616c756510301a0498b5180112260a1a4d657373616765547970655f456e63727970744d65737361676510311a06080190b5180112280a1c4d657373616765547970655f456e637279707465644d65737361676510321a06080198b5180112260a1a4d657373616765547970655f446563727970744d65737361676510331a06080190b5180112280a1c4d657373616765547970655f4465637279707465644d65737361676510341a06080198b5180112220a184d657373616765547970655f5369676e4964656e7469747910351a0490b5180112240a1a4d657373616765547970655f5369676e65644964656e7469747910361a0498b5180112210a174d657373616765547970655f476574466561747572657310371a0490b5180112280a1e4d657373616765547970655f457468657265756d4765744164647265737310381a0490b5180112250a1b4d657373616765547970655f457468657265756d4164647265737310391a0498b5180112240a1a4d657373616765547970655f457468657265756d5369676e5478103a1a0490b5180112270a1d4d657373616765547970655f457468657265756d547852657175657374103b1a0498b5180112230a194d657373616765547970655f457468657265756d547841636b103c1a0490b5180112270a1d4d657373616765547970655f4765744543444853657373696f6e4b6579103d1a0490b5180112240a1a4d657373616765547970655f4543444853657373696f6e4b6579103e1a0498b5180112230a194d657373616765547970655f536574553246436f756e746572103f1a0490b5180112290a1f4d657373616765547970655f457468657265756d5369676e4d65737361676510401a0490b51801122b0a214d657373616765547970655f457468657265756d5665726966794d65737361676510411a0490b51801122e0a244d657373616765547970655f457468657265756d4d6573736167655369676e617475726510421a0498b5180112230a194d657373616765547970655f4e454d4765744164647265737310431a0490b5180112200a164d657373616765547970655f4e454d4164647265737310441a0498b51801121f0a154d657373616765547970655f4e454d5369676e547810451a0490b5180112210a174d657373616765547970655f4e454d5369676e6564547810461a0498b5180112200a164d657373616765547970655f436f7369436f6d6d697410471a0490b5180112240a1a4d657373616765547970655f436f7369436f6d6d69746d656e7410481a0498b51801121e0a144d657373616765547970655f436f73695369676e10491a0490b5180112230a194d657373616765547970655f436f73695369676e6174757265104a1a0498b5180112270a1d4d657373616765547970655f4e454d446563727970744d657373616765104b1a0490b5180112290a1f4d657373616765547970655f4e454d4465637279707465644d657373616765104c1a0498b51801122f0a1d4d657373616765547970655f44656275674c696e6b4465636973696f6e10641a0ca0b51801b0b51801c0b51801122b0a1d4d657373616765547970655f44656275674c696e6b476574537461746510651a08a0b51801b0b5180112240a1a4d657373616765547970655f44656275674c696e6b537461746510661a04a8b5180112230a194d657373616765547970655f44656275674c696e6b53746f7010671a04a0b5180112220a184d657373616765547970655f44656275674c696e6b4c6f6710681a04a8b5180112290a1f4d657373616765547970655f44656275674c696e6b4d656d6f727952656164106e1a04a0b5180112250a1b4d657373616765547970655f44656275674c696e6b4d656d6f7279106f1a04a8b51801122a0a204d657373616765547970655f44656275674c696e6b4d656d6f7279577269746510701a04a0b5180112290a1f4d657373616765547970655f44656275674c696e6b466c617368457261736510711a04a0b5180112290a1e4d657373616765547970655f43617264616e6f5369676e4d65737361676510ac021a0490b51801122e0a234d657373616765547970655f43617264616e6f4d6573736167655369676e617475726510ad021a0498b51801122b0a204d657373616765547970655f43617264616e6f5665726966794d65737361676510ae021a0490b51801122d0a224d657373616765547970655f43617264616e6f5369676e5472616e73616374696f6e10af021a0490b5180112270a1c4d657373616765547970655f43617264616e6f54785265717565737410b0021a0498b51801122a0a1f4d657373616765547970655f43617264616e6f4765745075626c69634b657910b1021a0490b5180112270a1c4d657373616765547970655f43617264616e6f5075626c69634b657910b2021a0498b5180112280a1d4d657373616765547970655f43617264616e6f4765744164647265737310b3021a0490b5180112250a1a4d657373616765547970655f43617264616e6f4164647265737310b4021a0498b5180112230a184d657373616765547970655f43617264616e6f547841636b10b5021a0490b51801122f0a244d657373616765547970655f43617264616e6f5369676e65645472616e73616374696f6e10b6021a0498b5180112240a1a4d657373616765547970655f4c69736b4765744164647265737310721a0490b5180112210a174d657373616765547970655f4c69736b4164647265737310731a0498b5180112200a164d657373616765547970655f4c69736b5369676e547810741a0490b5180112220a184d657373616765547970655f4c69736b5369676e6564547810751a0498b5180112250a1b4d657373616765547970655f4c69736b5369676e4d65737361676510761a0490b51801122a0a204d657373616765547970655f4c69736b4d6573736167655369676e617475726510771a0498b5180112270a1d4d657373616765547970655f4c69736b5665726966794d65737361676510781a0490b5180112260a1c4d657373616765547970655f4c69736b4765745075626c69634b657910791a0490b5180112230a194d657373616765547970655f4c69736b5075626c69634b6579107a1a0498b5180112260a1b4d657373616765547970655f54657a6f73476574416464726573731096011a0490b5180112230a184d657373616765547970655f54657a6f73416464726573731097011a0498b5180112220a174d657373616765547970655f54657a6f735369676e54781098011a0490b5180112240a194d657373616765547970655f54657a6f735369676e656454781099011a0498b5180112280a1d4d657373616765547970655f54657a6f734765745075626c69634b6579109a011a0490b5180112250a1a4d657373616765547970655f54657a6f735075626c69634b6579109b011a0498b51801122a0a1f4d657373616765547970655f5374656c6c61724765745075626c69634b657910c8011a0490b5180112270a1c4d657373616765547970655f5374656c6c61725075626c69634b657910c9011a0498b5180112240a194d657373616765547970655f5374656c6c61725369676e547810ca011a0490b5180112290a1e4d657373616765547970655f5374656c6c617254784f705265717565737410cb011a0498b5180112280a1d4d657373616765547970655f5374656c6c61724765744164647265737310cf011a0490b5180112250a1a4d657373616765547970655f5374656c6c61724164647265737310d0011a0498b51801122d0a224d657373616765547970655f5374656c6c61724372656174654163636f756e744f7010d2011a0490b5180112270a1c4d657373616765547970655f5374656c6c61725061796d656e744f7010d3011a0490b51801122b0a204d657373616765547970655f5374656c6c6172506174685061796d656e744f7010d4011a0490b51801122b0a204d657373616765547970655f5374656c6c61724d616e6167654f666665724f7010d5011a0490b5180112320a274d657373616765547970655f5374656c6c6172437265617465506173736976654f666665724f7010d6011a0490b51801122a0a1f4d657373616765547970655f5374656c6c61725365744f7074696f6e734f7010d7011a0490b51801122b0a204d657373616765547970655f5374656c6c61724368616e676554727573744f7010d8011a0490b51801122a0a1f4d657373616765547970655f5374656c6c6172416c6c6f7754727573744f7010d9011a0490b51801122c0a214d657373616765547970655f5374656c6c61724163636f756e744d657267654f7010da011a0490b51801122a0a1f4d657373616765547970655f5374656c6c61724d616e616765446174614f7010dc011a0490b51801122c0a214d657373616765547970655f5374656c6c617242756d7053657175656e63654f7010dd011a0490b5180112260a1b4d657373616765547970655f5374656c6c61725369676e6564547810e6011a0498b5180142340a23636f6d2e7361746f7368696c6162732e7472657a6f722e6c69622e70726f746f627566420d5472657a6f724d657373616765220608cca6011001220708892410c0a701220708892410c1a70128ffffffff07",e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.udevInstallers=t.latestVersion=t.installers=t.DeviceList=t.DescriptorStream=t.Device=t.UnacquiredDevice=t.Session=void 0;var n=r(56);Object.defineProperty(t,"Session",{enumerable:!0,get:function(){return h(n).default}});var i=r(85);Object.defineProperty(t,"UnacquiredDevice",{enumerable:!0,get:function(){return h(i).default}});var o=r(50);Object.defineProperty(t,"Device",{enumerable:!0,get:function(){return h(o).default}});var s=r(88);Object.defineProperty(t,"DescriptorStream",{enumerable:!0,get:function(){return h(s).default}});var a=r(181);Object.defineProperty(t,"DeviceList",{enumerable:!0,get:function(){return h(a).default}}),t.setSharedWorkerFactory=function(e){y=e};var f=r(182);Object.defineProperty(t,"installers",{enumerable:!0,get:function(){return f.installers}}),Object.defineProperty(t,"latestVersion",{enumerable:!0,get:function(){return f.latestVersion}}),Object.defineProperty(t,"udevInstallers",{enumerable:!0,get:function(){return f.udevInstallers}}),r(89),r(183);var u=h(r(90)),c=h(a);function h(e){return e&&e.__esModule?e:{default:e}}var l=u.default.BridgeV2,p=u.default.Lowlevel,d=u.default.WebUsb,g=u.default.Fallback,y=null;c.default._setNode(!1),c.default._setTransport(function(){return new g([new l,new p(new d,function(){return null==y?null:y()})])}),c.default._setFetch(window.fetch),(0,f.setFetch)(window.fetch)},function(e,t,r){"use strict";t.byteLength=function(e){var t=u(e),r=t[0],n=t[1];return 3*(r+n)/4-n},t.toByteArray=function(e){for(var t,r=u(e),n=r[0],s=r[1],a=new o(function(e,t,r){return 3*(t+r)/4-r}(0,n,s)),f=0,c=s>0?n-4:n,h=0;h>16&255,a[f++]=t>>8&255,a[f++]=255&t;2===s&&(t=i[e.charCodeAt(h)]<<2|i[e.charCodeAt(h+1)]>>4,a[f++]=255&t);1===s&&(t=i[e.charCodeAt(h)]<<10|i[e.charCodeAt(h+1)]<<4|i[e.charCodeAt(h+2)]>>2,a[f++]=t>>8&255,a[f++]=255&t);return a},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,o=[],s=0,a=r-i;sa?a:s+16383));1===i?(t=e[r-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,f=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function c(e,t,r){for(var i,o,s=[],a=t;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,n,i){var o,s,a=8*i-n-1,f=(1<>1,c=-7,h=r?i-1:0,l=r?-1:1,p=e[t+h];for(h+=l,o=p&(1<<-c)-1,p>>=-c,c+=a;c>0;o=256*o+e[t+h],h+=l,c-=8);for(s=o&(1<<-c)-1,o>>=-c,c+=n;c>0;s=256*s+e[t+h],h+=l,c-=8);if(0===o)o=1-u;else{if(o===f)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),o-=u}return(p?-1:1)*s*Math.pow(2,o-n)},t.write=function(e,t,r,n,i,o){var s,a,f,u=8*o-i-1,c=(1<>1,l=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:o-1,d=n?1:-1,g=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(f=Math.pow(2,-s))<1&&(s--,f*=2),(t+=s+h>=1?l/f:l*Math.pow(2,1-h))*f>=2&&(s++,f/=2),s+h>=c?(a=0,s=c):s+h>=1?(a=(t*f-1)*Math.pow(2,i),s+=h):(a=t*Math.pow(2,h-1)*Math.pow(2,i),s=0));i>=8;e[r+p]=255&a,p+=d,a/=256,i-=8);for(s=s<0;e[r+p]=255&s,p+=d,s/=256,u-=8);e[r+p-d]|=128*g}},function(e,t,r){var n=function(){return this}()||Function("return this")(),i=n.regeneratorRuntime&&Object.getOwnPropertyNames(n).indexOf("regeneratorRuntime")>=0,o=i&&n.regeneratorRuntime;if(n.regeneratorRuntime=void 0,e.exports=r(119),i)n.regeneratorRuntime=o;else try{delete n.regeneratorRuntime}catch(e){n.regeneratorRuntime=void 0}},function(e,t){!function(t){"use strict";var r,n=Object.prototype,i=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},s=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",f=o.toStringTag||"@@toStringTag",u="object"==typeof e,c=t.regeneratorRuntime;if(c)u&&(e.exports=c);else{(c=t.regeneratorRuntime=u?e.exports:{}).wrap=w;var h="suspendedStart",l="suspendedYield",p="executing",d="completed",g={},y={};y[s]=function(){return this};var b=Object.getPrototypeOf,v=b&&b(b(x([])));v&&v!==n&&i.call(v,s)&&(y=v);var m=I.prototype=E.prototype=Object.create(y);A.prototype=m.constructor=I,I.constructor=A,I[f]=A.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===A||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,I):(e.__proto__=I,f in e||(e[f]="GeneratorFunction")),e.prototype=Object.create(m),e},c.awrap=function(e){return{__await:e}},S(T.prototype),T.prototype[a]=function(){return this},c.AsyncIterator=T,c.async=function(e,t,r,n){var i=new T(w(e,t,r,n));return c.isGeneratorFunction(t)?i:i.next().then(function(e){return e.done?e.value:i.next()})},S(m),m[f]="Generator",m[s]=function(){return this},m.toString=function(){return"[object Generator]"},c.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},c.values=x,k.prototype={constructor:k,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=r,this.done=!1,this.delegate=null,this.method="next",this.arg=r,this.tryEntries.forEach(P),!e)for(var t in this)"t"===t.charAt(0)&&i.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=r)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,i){return a.type="throw",a.arg=e,t.next=n,i&&(t.method="next",t.arg=r),!!i}for(var o=this.tryEntries.length-1;o>=0;--o){var s=this.tryEntries[o],a=s.completion;if("root"===s.tryLoc)return n("end");if(s.tryLoc<=this.prev){var f=i.call(s,"catchLoc"),u=i.call(s,"finallyLoc");if(f&&u){if(this.prev=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&i.call(n,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;P(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:x(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=r),g}}}function w(e,t,r,n){var i=t&&t.prototype instanceof E?t:E,o=Object.create(i.prototype),s=new k(n||[]);return o._invoke=function(e,t,r){var n=h;return function(i,o){if(n===p)throw new Error("Generator is already running");if(n===d){if("throw"===i)throw o;return B()}for(r.method=i,r.arg=o;;){var s=r.delegate;if(s){var a=C(s,r);if(a){if(a===g)continue;return a}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===h)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var f=_(e,t,r);if("normal"===f.type){if(n=r.done?d:l,f.arg===g)continue;return{value:f.arg,done:r.done}}"throw"===f.type&&(n=d,r.method="throw",r.arg=f.arg)}}}(e,r,s),o}function _(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}function E(){}function A(){}function I(){}function S(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function T(e){var t;this._invoke=function(r,n){function o(){return new Promise(function(t,o){!function t(r,n,o,s){var a=_(e[r],e,n);if("throw"!==a.type){var f=a.arg,u=f.value;return u&&"object"==typeof u&&i.call(u,"__await")?Promise.resolve(u.__await).then(function(e){t("next",e,o,s)},function(e){t("throw",e,o,s)}):Promise.resolve(u).then(function(e){f.value=e,o(f)},s)}s(a.arg)}(r,n,t,o)})}return t=t?t.then(o,o):o()}}function C(e,t){var n=e.iterator[t.method];if(n===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=r,C(e,t),"throw"===t.method))return g;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return g}var i=_(n,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,g;var o=i.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=r),t.delegate=null,g):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function O(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function x(e){if(e){var t=e[s];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n>24===e},Int16:function(e){return e<<16>>16===e},Int32:function(e){return(0|e)===e},UInt8:function(e){return(255&e)===e},UInt16:function(e){return(65535&e)===e},UInt32:function(e){return e>>>0===e},UInt53:function(e){return"number"==typeof e&&e>=0&&e<=h&&Math.floor(e)===e}};for(var p in l)l[p].toJSON=function(e){return e}.bind(null,p);e.exports=l}).call(this,r(1).Buffer)},function(e,t,r){var n=r(7),i={};for(var o in n){i[n[o]]=o}e.exports=i},function(e,t,r){var n=r(0).Buffer,i=r(4),o=r(62),s=r(2),a=r(7);function f(e){return e===a.OP_0||i.isCanonicalSignature(e)}function u(e,t){var r=i.decompile(e);return!(r.length<2)&&(r[0]===a.OP_0&&(t?r.slice(1).every(f):r.slice(1).every(i.isCanonicalSignature)))}u.toJSON=function(){return"multisig input"};var c=n.allocUnsafe(0);function h(e,t){if(s([f],e),t){var r=o.decode(t);if(e.lengthr.pubKeys.length)throw new TypeError("Too many signatures provided")}return[].concat(c,e.map(function(e){return e===a.OP_0?c:e}))}function l(e,t){return s(s.Array,e),s(u,e,t),e.slice(1)}e.exports={check:u,decode:function(e,t){return l(i.decompile(e),t)},decodeStack:l,encode:function(e,t){return i.compile(h(e,t))},encodeStack:h}},function(e,t,r){var n=r(4),i=r(6),o=r(2),s=r(7);function a(e){return 2===e.length&&e[0]===s.OP_RETURN}a.toJSON=function(){return"null data output"},e.exports={output:{check:a,decode:function(e){var t=n.decompile(e);return o(a,t),t[1]},encode:function(e){return o(i.Buffer,e),n.compile([s.OP_RETURN,e])}}}},function(e,t,r){var n=r(4),i=r(2);function o(e){var t=n.decompile(e);return 1===t.length&&n.isCanonicalSignature(t[0])}function s(e){return i(n.isCanonicalSignature,e),[e]}function a(e){return i(i.Array,e),i(o,e),e[0]}o.toJSON=function(){return"pubKey input"},e.exports={check:o,decode:function(e){return a(n.decompile(e))},decodeStack:a,encode:function(e){return n.compile(s(e))},encodeStack:s}},function(e,t,r){var n=r(4),i=r(2),o=r(7);function s(e){var t=n.decompile(e);return 2===t.length&&n.isCanonicalPubKey(t[0])&&t[1]===o.OP_CHECKSIG}s.toJSON=function(){return"pubKey output"},e.exports={check:s,decode:function(e){var t=n.decompile(e);return i(s,t),t[0]},encode:function(e){return i(n.isCanonicalPubKey,e),n.compile([e,o.OP_CHECKSIG])}}},function(e,t,r){var n=r(4),i=r(2);function o(e){var t=n.decompile(e);return 2===t.length&&n.isCanonicalSignature(t[0])&&n.isCanonicalPubKey(t[1])}function s(e,t){return i({signature:n.isCanonicalSignature,pubKey:n.isCanonicalPubKey},{signature:e,pubKey:t}),[e,t]}function a(e){return i(i.Array,e),i(o,e),{signature:e[0],pubKey:e[1]}}o.toJSON=function(){return"pubKeyHash input"},e.exports={check:o,decode:function(e){return a(n.decompile(e))},decodeStack:a,encode:function(e,t){return n.compile(s(e,t))},encodeStack:s}},function(e,t,r){var n=r(4),i=r(6),o=r(2),s=r(7);function a(e){var t=n.compile(e);return 25===t.length&&t[0]===s.OP_DUP&&t[1]===s.OP_HASH160&&20===t[2]&&t[23]===s.OP_EQUALVERIFY&&t[24]===s.OP_CHECKSIG}a.toJSON=function(){return"pubKeyHash output"},e.exports={check:a,decode:function(e){return o(a,e),e.slice(3,23)},encode:function(e){return o(i.Hash160bit,e),n.compile([s.OP_DUP,s.OP_HASH160,e,s.OP_EQUALVERIFY,s.OP_CHECKSIG])}}},function(e,t,r){e.exports={input:r(129),output:r(130)}},function(e,t,r){var n=r(0).Buffer,i=r(4),o=r(2),s=r(37),a=r(38),f=r(39),u=r(63),c=r(64);function h(e,t){var r=i.decompile(e);if(r.length<1)return!1;var o=r[r.length-1];if(!n.isBuffer(o))return!1;var h=i.decompile(i.compile(r.slice(0,-1))),l=i.decompile(o);return 0!==l.length&&(!!i.isPushOnly(h)&&(1===r.length?c.check(l)||u.check(l):!(!f.input.check(h)||!f.output.check(l))||(!(!s.input.check(h,t)||!s.output.check(l))||!(!a.input.check(h)||!a.output.check(l)))))}function l(e,t){var r=i.compile(t);return[].concat(e,r)}function p(e){return o(o.Array,e),o(h,e),{redeemScriptStack:e.slice(0,-1),redeemScript:e[e.length-1]}}h.toJSON=function(){return"scriptHash input"},e.exports={check:h,decode:function(e){var t=p(i.decompile(e));return t.redeemScriptSig=i.compile(t.redeemScriptStack),delete t.redeemScriptStack,t},decodeStack:p,encode:function(e,t){var r=i.decompile(e);return i.compile(l(r,t))},encodeStack:l}},function(e,t,r){var n=r(4),i=r(6),o=r(2),s=r(7);function a(e){var t=n.compile(e);return 23===t.length&&t[0]===s.OP_HASH160&&20===t[1]&&t[22]===s.OP_EQUAL}a.toJSON=function(){return"scriptHash output"},e.exports={check:a,decode:function(e){return o(a,e),e.slice(2,22)},encode:function(e){return o(i.Hash160bit,e),n.compile([s.OP_HASH160,e,s.OP_EQUAL])}}},function(e,t,r){e.exports={input:r(132),output:r(63)}},function(e,t,r){var n=r(4),i=r(2);function o(e){return n.isCanonicalPubKey(e)&&33===e.length}function s(e){var t=n.decompile(e);return 2===t.length&&n.isCanonicalSignature(t[0])&&o(t[1])}s.toJSON=function(){return"witnessPubKeyHash input"},e.exports={check:s,decodeStack:function(e){return i(i.Array,e),i(s,e),{signature:e[0],pubKey:e[1]}},encodeStack:function(e,t){return i({signature:n.isCanonicalSignature,pubKey:o},{signature:e,pubKey:t}),[e,t]}}},function(e,t,r){e.exports={input:r(134),output:r(64)}},function(e,t,r){(function(t){var n=r(4),i=r(6),o=r(2),s=r(37),a=r(38),f=r(39);function u(e,r){if(o(i.Array,e),e.length<1)return!1;var u=e[e.length-1];if(!t.isBuffer(u))return!1;var c=n.decompile(u);if(0===c.length)return!1;var h=n.compile(e.slice(0,-1));return!(!f.input.check(h)||!f.output.check(c))||(!(!s.input.check(h,r)||!s.output.check(c))||!(!a.input.check(h)||!a.output.check(c)))}u.toJSON=function(){return"witnessScriptHash input"},e.exports={check:u,decodeStack:function(e){return o(o.Array,e),o(u,e),{witnessData:e.slice(0,-1),witnessScript:e[e.length-1]}},encodeStack:function(e,t){return o({witnessData:[i.Buffer],witnessScript:i.Buffer},{witnessData:e,witnessScript:t}),[].concat(e,t)}}}).call(this,r(1).Buffer)},function(e,t,r){e.exports={output:r(136)}},function(e,t,r){var n=r(0).Buffer,i=r(4),o=r(6),s=r(2),a=r(7),f=n.from("aa21a9ed","hex");function u(e){var t=i.compile(e);return t.length>37&&t[0]===a.OP_RETURN&&36===t[1]&&t.slice(2,6).equals(f)}u.toJSON=function(){return"Witness commitment output"},e.exports={check:u,decode:function(e){return s(u,e),i.decompile(e)[1].slice(4,36)},encode:function(e){s(o.Hash256bit,e);var t=n.allocUnsafe(36);return f.copy(t,0),e.copy(t,4),i.compile([a.OP_RETURN,t])}}},function(e,t,r){var n=r(0).Buffer,i=r(14),o=r(153),s=r(2),a=r(6),f=r(40),u=r(43);function c(){this.version=1,this.prevHash=null,this.merkleRoot=null,this.timestamp=0,this.bits=0,this.nonce=0}c.fromBuffer=function(e){if(e.length<80)throw new Error("Buffer too small (< 80 bytes)");var t=0;function r(r){return t+=r,e.slice(t-r,t)}function n(){var r=e.readUInt32LE(t);return t+=4,r}var i=new c;if(i.version=function(){var r=e.readInt32LE(t);return t+=4,r}(),i.prevHash=r(32),i.merkleRoot=r(32),i.timestamp=n(),i.bits=n(),i.nonce=n(),80===e.length)return i;function o(){var r=u.fromBuffer(e.slice(t),!1,!0);return t+=r.byteLength(),r}var s,a=(s=f.decode(e,t),t+=f.decode.bytes,s);i.transactions=[];for(var h=0;h>24)-3,r=8388607&e,i=n.alloc(32,0);return i.writeUInt32BE(r,28-t),i},c.calculateMerkleRoot=function(e){if(s([{getHash:a.Function}],e),0===e.length)throw TypeError("Cannot compute merkle root for zero transactions");var t=e.map(function(e){return e.getHash()});return o(t,i.hash256)},c.prototype.checkMerkleRoot=function(){if(!this.transactions)return!1;var e=c.calculateMerkleRoot(this.transactions);return 0===this.merkleRoot.compare(e)},c.prototype.checkProofOfWork=function(){var e=this.getHash().reverse(),t=c.calculateTarget(this.bits);return e.compare(t)<=0},e.exports=c},function(e,t){},function(e,t,r){"use strict";var n=r(0).Buffer,i=r(140);e.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,r=""+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,i,o=n.allocUnsafe(e>>>0),s=this.head,a=0;s;)t=s.data,r=o,i=a,t.copy(r,i),a+=s.data.length,s=s.next;return o},e}(),i&&i.inspect&&i.inspect.custom&&(e.exports.prototype[i.inspect.custom]=function(){var e=i.inspect({length:this.length});return this.constructor.name+" "+e})},function(e,t){},function(e,t,r){(function(e){var n=void 0!==e&&e||"undefined"!=typeof self&&self||window,i=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(i.call(setTimeout,n,arguments),clearTimeout)},t.setInterval=function(){return new o(i.call(setInterval,n,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(n,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},r(142),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,r(5))},function(e,t,r){(function(e,t){!function(e,r){"use strict";if(!e.setImmediate){var n,i,o,s,a,f=1,u={},c=!1,h=e.document,l=Object.getPrototypeOf&&Object.getPrototypeOf(e);l=l&&l.setTimeout?l:e,"[object process]"==={}.toString.call(e.process)?n=function(e){t.nextTick(function(){d(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,r=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=r,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){d(e.data)},n=function(e){o.port2.postMessage(e)}):h&&"onreadystatechange"in h.createElement("script")?(i=h.documentElement,n=function(e){var t=h.createElement("script");t.onreadystatechange=function(){d(e),t.onreadystatechange=null,i.removeChild(t),t=null},i.appendChild(t)}):n=function(e){setTimeout(d,0,e)}:(s="setImmediate$"+Math.random()+"$",a=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(s)&&d(+t.data.slice(s.length))},e.addEventListener?e.addEventListener("message",a,!1):e.attachEvent("onmessage",a),n=function(t){e.postMessage(s+t,"*")}),l.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),r=0;r>>2}function c(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(f,i),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},f.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=r[h-3]^r[h-8]^r[h-14]^r[h-16];for(var l=0;l<80;++l){var p=~~(l/20),d=0|((t=n)<<5|t>>>27)+c(p,i,o,a)+f+r[l]+s[p];f=a,a=o,o=u(i),i=n,n=d}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0},f.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=f},function(e,t,r){var n=r(3),i=r(15),o=r(0).Buffer,s=[1518500249,1859775393,-1894007588,-899497514],a=new Array(80);function f(){this.init(),this._w=a,i.call(this,64,56)}function u(e){return e<<5|e>>>27}function c(e){return e<<30|e>>>2}function h(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(f,i),f.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},f.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,i=0|this._b,o=0|this._c,a=0|this._d,f=0|this._e,l=0;l<16;++l)r[l]=e.readInt32BE(4*l);for(;l<80;++l)r[l]=(t=r[l-3]^r[l-8]^r[l-14]^r[l-16])<<1|t>>>31;for(var p=0;p<80;++p){var d=~~(p/20),g=u(n)+h(d,i,o,a)+f+r[p]+s[d]|0;f=a,a=o,o=c(i),i=n,n=g}this._a=n+this._a|0,this._b=i+this._b|0,this._c=o+this._c|0,this._d=a+this._d|0,this._e=f+this._e|0},f.prototype._hash=function(){var e=o.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},e.exports=f},function(e,t,r){var n=r(3),i=r(75),o=r(15),s=r(0).Buffer,a=new Array(64);function f(){this.init(),this._w=a,o.call(this,64,56)}n(f,i),f.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},f.prototype._hash=function(){var e=s.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},e.exports=f},function(e,t,r){var n=r(3),i=r(76),o=r(15),s=r(0).Buffer,a=new Array(160);function f(){this.init(),this._w=a,o.call(this,128,112)}n(f,i),f.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},f.prototype._hash=function(){var e=s.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},e.exports=f},function(e,t,r){(function(t){e.exports=function(e,r){if(!Array.isArray(e))throw TypeError("Expected values Array");if("function"!=typeof r)throw TypeError("Expected digest Function");for(var n=e.length,i=e.concat();n>1;){for(var o=0,s=0;s=4294967296&&i++,e[t]=n,e[t+1]=i}function s(e,t,r,n){var i=e[t]+r;r<0&&(i+=4294967296);var o=e[t+1]+n;i>=4294967296&&o++,e[t]=i,e[t+1]=o}function a(e,t){return e[t]^e[t+1]<<8^e[t+2]<<16^e[t+3]<<24}function f(e,t,r,n,i,a){var f=l[i],u=l[i+1],c=l[a],p=l[a+1];o(h,e,t),s(h,e,f,u);var d=h[n]^h[e],g=h[n+1]^h[e+1];h[n]=g,h[n+1]=d,o(h,r,n),d=h[t]^h[r],g=h[t+1]^h[r+1],h[t]=d>>>24^g<<8,h[t+1]=g>>>24^d<<8,o(h,e,t),s(h,e,c,p),d=h[n]^h[e],g=h[n+1]^h[e+1],h[n]=d>>>16^g<<16,h[n+1]=g>>>16^d<<16,o(h,r,n),d=h[t]^h[r],g=h[t+1]^h[r+1],h[t]=g>>>31^d<<1,h[t+1]=d>>>31^g<<1}var u=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),c=new Uint8Array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3].map(function(e){return 2*e})),h=new Uint32Array(32),l=new Uint32Array(32);function p(e,t){var r=0;for(r=0;r<16;r++)h[r]=e.h[r],h[r+16]=u[r];for(h[24]=h[24]^e.t,h[25]=h[25]^e.t/4294967296,t&&(h[28]=~h[28],h[29]=~h[29]),r=0;r<32;r++)l[r]=a(e.b,4*r);for(r=0;r<12;r++)f(0,8,16,24,c[16*r+0],c[16*r+1]),f(2,10,18,26,c[16*r+2],c[16*r+3]),f(4,12,20,28,c[16*r+4],c[16*r+5]),f(6,14,22,30,c[16*r+6],c[16*r+7]),f(0,10,20,30,c[16*r+8],c[16*r+9]),f(2,12,22,24,c[16*r+10],c[16*r+11]),f(4,14,16,26,c[16*r+12],c[16*r+13]),f(6,8,18,28,c[16*r+14],c[16*r+15]);for(r=0;r<16;r++)e.h[r]=e.h[r]^h[r]^h[r+16]}var d=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function g(e,t,r,n){d.fill(0),this.b=new Uint8Array(128),this.h=new Uint32Array(16),this.t=0,this.c=0,this.outlen=e,d[0]=e,t&&(d[1]=t.length),d[2]=1,d[3]=1,r&&d.set(r,32),n&&d.set(n,48);for(var i=0;i<16;i++)this.h[i]=u[i]^a(d,4*i);t&&(y(this,t),this.c=128)}function y(e,t){for(var r=0;r=this.outlen,"out must have at least outlen bytes of space"),function(e,t){e.t+=e.c;for(;e.c<128;)e.b[e.c++]=0;p(e,!0);for(var r=0;r>2]>>8*(3&r)}(this,t),"hex"===e?function(e){for(var t="",r=0;r=m,"outlen must be at least "+m+", was given "+e),n(e<=w,"outlen must be at most "+w+", was given "+e),null!=t&&n(t.length>=_,"key must be at least "+_+", was given "+t.length),null!=t&&n(t.length<=E,"key must be at most "+E+", was given "+t.length),null!=r&&n(r.length===A,"salt must be exactly "+A+", was given "+r.length),null!=i&&n(i.length===I,"personal must be exactly "+I+", was given "+i.length)),new v(e,t,r,i)},e.exports.ready=function(e){i.ready(function(){e()})},e.exports.WASM_SUPPORTED=i.SUPPORTED,e.exports.WASM_LOADED=!1;var m=e.exports.BYTES_MIN=16,w=e.exports.BYTES_MAX=64,_=(e.exports.BYTES=32,e.exports.KEYBYTES_MIN=16),E=e.exports.KEYBYTES_MAX=64,A=(e.exports.KEYBYTES=32,e.exports.SALTBYTES=16),I=e.exports.PERSONALBYTES=16;i.ready(function(t){t||(e.exports.WASM_LOADED=!0,v=i)})},function(e,t,r){var n=r(77),i=r(156)(),o=64,s=[];e.exports=p;var a=e.exports.BYTES_MIN=16,f=e.exports.BYTES_MAX=64,u=(e.exports.BYTES=32,e.exports.KEYBYTES_MIN=16),c=e.exports.KEYBYTES_MAX=64,h=(e.exports.KEYBYTES=32,e.exports.SALTBYTES=16),l=e.exports.PERSONALBYTES=16;function p(e,t,r,d,g){if(!(this instanceof p))return new p(e,t,r,d,g);if(!i||!i.exports)throw new Error("WASM not loaded. Wait for Blake2b.ready(cb)");e||(e=32),!0!==g&&(n(e>=a,"digestLength must be at least "+a+", was given "+e),n(e<=f,"digestLength must be at most "+f+", was given "+e),null!=t&&n(t.length>=u,"key must be at least "+u+", was given "+t.length),null!=t&&n(t.length<=c,"key must be at least "+c+", was given "+t.length),null!=r&&n(r.length===h,"salt must be exactly "+h+", was given "+r.length),null!=d&&n(d.length===l,"personal must be exactly "+l+", was given "+d.length)),s.length||(s.push(o),o+=216),this.digestLength=e,this.finalized=!1,this.pointer=s.pop(),i.memory.fill(0,0,64),i.memory[0]=this.digestLength,i.memory[1]=t?t.length:0,i.memory[2]=1,i.memory[3]=1,r&&i.memory.set(r,32),d&&i.memory.set(d,48),this.pointer+216>i.memory.length&&i.realloc(this.pointer+216),i.exports.blake2b_init(this.pointer,this.digestLength),t&&(this.update(t),i.memory.fill(0,o,o+t.length),i.memory[this.pointer+200]=128)}function d(){}function g(e){return e<16?"0"+e.toString(16):e.toString(16)}p.prototype.update=function(e){return n(!1===this.finalized,"Hash instance finalized"),n(e,"input must be TypedArray or Buffer"),o+e.length>i.memory.length&&i.realloc(o+e.length),i.memory.set(e,o),i.exports.blake2b_update(this.pointer,o,o+e.length),this},p.prototype.digest=function(e){if(n(!1===this.finalized,"Hash instance finalized"),this.finalized=!0,s.push(this.pointer),i.exports.blake2b_final(this.pointer),!e||"binary"===e)return i.memory.slice(this.pointer+128,this.pointer+128+this.digestLength);if("hex"===e)return function(e,t,r){for(var n="",i=0;i=this.digestLength,"input must be TypedArray or Buffer");for(var t=0;t>25;return(33554431&e)<<5^996825010&-(t>>0&1)^642813549&-(t>>1&1)^513874426&-(t>>2&1)^1027748829&-(t>>3&1)^705979059&-(t>>4&1)}function f(e){for(var t=1,r=0;r126)throw new Error("Invalid prefix ("+e+")");t=a(t)^n>>5}for(t=a(t),r=0;r=r;)o-=r,a.push(i>>o&s);if(n)o>0&&a.push(i<=t)throw new Error("Excess padding");if(i<t)throw new TypeError("Exceeds length limit");var r=e.toLowerCase(),n=e.toUpperCase();if(e!==r&&e!==n)throw new Error("Mixed-case string "+e);var o=(e=r).lastIndexOf("1");if(-1===o)throw new Error("No separator character for "+e);if(0===o)throw new Error("Missing prefix for "+e);var s=e.slice(0,o),u=e.slice(o+1);if(u.length<6)throw new Error("Data too short");for(var c=f(s),h=[],l=0;l=u.length||h.push(d)}if(1!==c)throw new Error("Invalid checksum for "+e);return{prefix:s,words:h}},encode:function(e,t,r){if(r=r||90,e.length+7+t.length>r)throw new TypeError("Exceeds length limit");for(var i=f(e=e.toLowerCase()),o=e+"1",s=0;s>5!=0)throw new Error("Non 5-bit word");i=a(i)^u,o+=n.charAt(u)}for(s=0;s<6;++s)i=a(i);for(i^=1,s=0;s<6;++s){var c=i>>5*(5-s)&31;o+=n.charAt(c)}return o},toWords:function(e){return u(e,8,5,!0)},fromWords:function(e){return u(e,5,8,!1)}}},function(e,t,r){"use strict";var n=r(159),i=r(0).Buffer;e.exports=function(e){function t(t){var r=t.slice(0,-4),n=t.slice(-4),i=e(r);if(!(n[0]^i[0]|n[1]^i[1]|n[2]^i[2]|n[3]^i[3]))return r}return{encode:function(t){var r=e(t);return n.encode(i.concat([t,r],t.length+4))},decode:function(e){var r=t(n.decode(e));if(!r)throw new Error("Invalid checksum");return r},decodeUnsafe:function(e){var r=n.decodeUnsafe(e);if(r)return t(r)}}}},function(e,t,r){var n=r(160);e.exports=n("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},function(e,t,r){const n=r(0).Buffer;e.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");const t=new Uint8Array(256);t.fill(255);for(let r=0;r>>0,c=new Uint8Array(u);for(;e[s];){let n=t[e.charCodeAt(s)];if(255===n)return;let i=0;for(let e=u-1;(0!==n||i>>0,c[e]=n%256>>>0,n=n/256>>>0;if(0!==n)throw new Error("Non-zero carry");f=i,s++}if(" "===e[s])return;let h=u-f;for(;h!==u&&0===c[h];)h++;const l=n.allocUnsafe(a+(u-h));l.fill(0,0,a);let p=a;for(;h!==u;)l[p++]=c[h++];return l}return{encode:function(t){if(!n.isBuffer(t))throw new TypeError("Expected Buffer");if(0===t.length)return"";let o=0,a=0,f=0;const u=t.length;for(;f!==u&&0===t[f];)f++,o++;const c=(u-f)*s+1>>>0,h=new Uint8Array(c);for(;f!==u;){let e=t[f],n=0;for(let t=c-1;(0!==e||n>>0,h[t]=e%r>>>0,e=e/r>>>0;if(0!==e)throw new Error("Non-zero carry");a=n,f++}let l=c-a;for(;l!==c&&0===h[l];)l++;let p=i.repeat(o);for(;l=0||!r(p);)f=i("sha256",f).update(l).update(u).digest(),l=i("sha256",f).update(l).digest(),l=i("sha256",f).update(l).digest(),p=a.fromBuffer(l);return p}var p=h.n.shiftRight(1);e.exports={deterministicGenerateK:l,sign:function(e,t){o(s.tuple(s.Hash256bit,s.BigInt),arguments);var r,n,i=t.toBuffer(32),u=a.fromBuffer(e),c=h.n,d=h.G;return l(e,i,function(e){var i=d.multiply(e);return!h.isInfinity(i)&&0!==(r=i.affineX.mod(c)).signum()&&0!==(n=e.modInverse(c).multiply(u.add(t.multiply(r))).mod(c)).signum()}),n.compareTo(p)>0&&(n=c.subtract(n)),new f(r,n)},verify:function(e,t,r){o(s.tuple(s.Hash256bit,s.ECSignature,s.ECPoint),arguments);var n=h.n,i=h.G,f=t.r,u=t.s;if(f.signum()<=0||f.compareTo(n)>=0)return!1;if(u.signum()<=0||u.compareTo(n)>=0)return!1;var c=a.fromBuffer(e),l=u.modInverse(n),p=c.multiply(l).mod(n),d=f.multiply(l).mod(n),g=i.multiplyTwo(p,r,d);return!h.isInfinity(g)&&g.affineX.mod(n).equals(f)},__curve:h}},function(e,t,r){"use strict";var n=r(3),i=r(0).Buffer,o=r(42),s=i.alloc(128),a=64;function f(e,t){o.call(this,"digest"),"string"==typeof t&&(t=i.from(t)),this._alg=e,this._key=t,t.length>a?t=e(t):t.length64)throw new TypeError("Seed should be at most 512 bits");var r=s("sha512",d.MASTER_SECRET).update(e).digest(),n=r.slice(0,32),i=r.slice(32),o=c.fromBuffer(n);return new d(new h(o,null,{network:t}),i)},d.fromSeedHex=function(e,t){return d.fromSeedBuffer(n.from(e,"hex"),t)},d.fromBase58=function(e,t,r){var n=i.decode(e);if(78!==n.length)throw new Error("Invalid buffer length");var o,s=n.readUInt32BE(0);if(Array.isArray(t)){if(!(o=t.filter(function(e){return s===e.bip32.private||s===e.bip32.public}).pop()))throw new Error("Unknown network version")}else o=t||u.bitcoin;if(s!==o.bip32.private&&s!==o.bip32.public)throw new Error("Invalid network version");var a=n[4],f=n.readUInt32BE(5);if(0===a&&0!==f)throw new Error("Invalid parent fingerprint");var g=n.readUInt32BE(9);if(0===a&&0!==g)throw new Error("Invalid index");var y,b=n.slice(13,45);if(s===o.bip32.private){if(0!==n.readUInt8(45))throw new Error("Invalid private key");var v=c.fromBuffer(n.slice(46,78));y=new h(v,null,{network:o})}else{var m=l.Point.decodeFrom(p,n.slice(45,78));r||p.validate(m),y=new h(null,m,{network:o})}var w=new d(y,b);return w.depth=a,w.index=g,w.parentFingerprint=f,w},d.prototype.getAddress=function(){return this.keyPair.getAddress()},d.prototype.getIdentifier=function(){return o.hash160(this.keyPair.getPublicKeyBuffer())},d.prototype.getFingerprint=function(){return this.getIdentifier().slice(0,4)},d.prototype.getNetwork=function(){return this.keyPair.getNetwork()},d.prototype.getPublicKeyBuffer=function(){return this.keyPair.getPublicKeyBuffer()},d.prototype.neutered=function(){var e=new d(new h(null,this.keyPair.Q,{network:this.keyPair.network}),this.chainCode);return e.depth=this.depth,e.index=this.index,e.parentFingerprint=this.parentFingerprint,e},d.prototype.sign=function(e){return this.keyPair.sign(e)},d.prototype.verify=function(e,t){return this.keyPair.verify(e,t)},d.prototype.toBase58=function(e){if(void 0!==e)throw new TypeError("Unsupported argument in 2.0.0");var t=this.keyPair.network,r=this.isNeutered()?t.bip32.public:t.bip32.private,o=n.allocUnsafe(78);return o.writeUInt32BE(r,0),o.writeUInt8(this.depth,4),o.writeUInt32BE(this.parentFingerprint,5),o.writeUInt32BE(this.index,9),this.chainCode.copy(o,13),this.isNeutered()?this.keyPair.getPublicKeyBuffer().copy(o,45):(o.writeUInt8(0,45),this.keyPair.d.toBuffer(32).copy(o,46)),i.encode(o)},d.prototype.derive=function(e){a(f.UInt32,e);var t=e>=d.HIGHEST_BIT,r=n.allocUnsafe(37);if(t){if(this.isNeutered())throw new TypeError("Could not derive hardened child key");r[0]=0,this.keyPair.d.toBuffer(32).copy(r,1),r.writeUInt32BE(e,33)}else this.keyPair.getPublicKeyBuffer().copy(r,0),r.writeUInt32BE(e,33);var i,o=s("sha512",this.chainCode).update(r).digest(),u=o.slice(0,32),l=o.slice(32),g=c.fromBuffer(u);if(g.compareTo(p.n)>=0)return this.derive(e+1);if(this.isNeutered()){var y=p.G.multiply(g).add(this.keyPair.Q);if(p.isInfinity(y))return this.derive(e+1);i=new h(null,y,{network:this.keyPair.network})}else{var b=g.add(this.keyPair.d).mod(p.n);if(0===b.signum())return this.derive(e+1);i=new h(b,null,{network:this.keyPair.network})}var v=new d(i,l);return v.depth=this.depth+1,v.index=e,v.parentFingerprint=this.getFingerprint().readUInt32BE(0),v},d.prototype.deriveHardened=function(e){return a(f.UInt31,e),this.derive(e+d.HIGHEST_BIT)},d.prototype.isNeutered=function(){return!this.keyPair.d},d.prototype.derivePath=function(e){a(f.BIP32Path,e);var t=e.split("/");if("m"===t[0]){if(this.parentFingerprint)throw new Error("Not a master node");t=t.slice(1)}return t.reduce(function(e,t){var r;return"'"===t.slice(-1)?(r=parseInt(t.slice(0,-1),10),e.deriveHardened(r)):(r=parseInt(t,10),e.derive(r))},this)},e.exports=d},function(e,t,r){var n=r(0).Buffer,i=r(45),o=r(14),s=r(4),a=r(36),f=r(16),u=r(7),c=r(2),h=r(6),l=a.types,p=[a.types.P2PKH,a.types.P2PK,a.types.MULTISIG],d=p.concat([a.types.P2WPKH,a.types.P2WSH]),g=r(44),y=r(47),b=r(43);function v(e){return-1!==p.indexOf(e)}function m(e){return-1!==d.indexOf(e)}function w(e,t){if(0===e.length&&0===t.length)return{};var r,n,i,f,u,c,h,p,d,g,y=!1,b=!1,w=!1,_=s.decompile(e);a.classifyInput(_,!0)===l.P2SH&&(w=!0,u=_[_.length-1],p=a.classifyOutput(u),r=a.scriptHash.output.encode(o.hash160(u)),n=l.P2SH,f=u);var E=a.classifyWitness(t,!0);if(E===l.P2WSH){if(c=t[t.length-1],h=a.classifyOutput(c),b=!0,y=!0,0===e.length){if(r=a.witnessScriptHash.output.encode(o.sha256(c)),n=l.P2WSH,void 0!==u)throw new Error("Redeem script given when unnecessary")}else{if(!u)throw new Error("No redeemScript provided for P2WSH, but scriptSig non-empty");if(d=a.witnessScriptHash.output.encode(o.sha256(c)),!u.equals(d))throw new Error("Redeem script didn't match witnessScript")}if(!v(a.classifyOutput(c)))throw new Error("unsupported witness script");f=c,i=h,g=t.slice(0,-1)}else if(E===l.P2WPKH){y=!0;var A=t[t.length-1],I=o.hash160(A);if(0===e.length){if(r=a.witnessPubKeyHash.output.encode(I),n=l.P2WPKH,void 0!==u)throw new Error("Redeem script given when unnecessary")}else{if(!u)throw new Error("No redeemScript provided for P2WPKH, but scriptSig wasn't empty");if(d=a.witnessPubKeyHash.output.encode(I),!u.equals(d))throw new Error("Redeem script did not have the right witness program")}i=l.P2PKH,g=t}else if(u){if(!m(p))throw new Error("Bad redeemscript!");f=u,i=p,g=_.slice(0,-1)}else n=i=a.classifyInput(e),g=_;var S=function(e,t,r){var n=[],i=[];switch(e){case l.P2PKH:n=t.slice(1),i=t.slice(0,1);break;case l.P2PK:n[0]=r?a.pubKey.output.decode(r):void 0,i=t.slice(0,1);break;case l.MULTISIG:r&&(n=a.multisig.output.decode(r).pubKeys),i=t.slice(1).map(function(e){return 0===e.length?void 0:e})}return{pubKeys:n,signatures:i}}(i,g,f),T={pubKeys:S.pubKeys,signatures:S.signatures,prevOutScript:r,prevOutType:n,signType:i,signScript:f,witness:Boolean(y)};return w&&(T.redeemScript=u,T.redeemScriptType=p),b&&(T.witnessScript=c,T.witnessScriptType=h),T}function _(e,t,r){c(h.Buffer,e);var n=s.decompile(e);t||(t=a.classifyOutput(e));var i=[];switch(t){case l.P2PKH:if(!r)break;var f=n[2],u=o.hash160(r);f.equals(u)&&(i=[r]);break;case l.P2WPKH:if(!r)break;var p=n[1],d=o.hash160(r);p.equals(d)&&(i=[r]);break;case l.P2PK:i=n.slice(0,1);break;case l.MULTISIG:i=n.slice(1,-2);break;default:return{scriptType:t}}return{pubKeys:i,scriptType:t,signatures:i.map(function(){})}}function E(e,t){if(e.prevOutType){if(e.prevOutType!==l.P2SH)throw new Error("PrevOutScript must be P2SH");if(!s.decompile(e.prevOutScript)[1].equals(t))throw new Error("Inconsistent hash160(RedeemScript)")}}function A(e,t,r,n,i){var f,u,c,h,p,d,g,y,b,v=!1,m=!1,w=!1;if(r&&i){if(p=o.hash160(r),g=o.sha256(i),E(e,p),!r.equals(a.witnessScriptHash.output.encode(g)))throw new Error("Witness script inconsistent with redeem script");if(!(f=_(i,void 0,t)).pubKeys)throw new Error('WitnessScript not supported "'+s.toASM(r)+'"');u=a.types.P2SH,c=a.scriptHash.output.encode(p),v=m=w=!0,h=a.types.P2WSH,y=d=f.scriptType,b=i}else if(r){if(E(e,p=o.hash160(r)),!(f=_(r,void 0,t)).pubKeys)throw new Error('RedeemScript not supported "'+s.toASM(r)+'"');u=a.types.P2SH,c=a.scriptHash.output.encode(p),v=!0,b=r,m=(y=h=f.scriptType)===a.types.P2WPKH}else if(i){if(function(e,t){if(e.prevOutType){if(e.prevOutType!==l.P2WSH)throw new Error("PrevOutScript must be P2WSH");if(!s.decompile(e.prevOutScript)[1].equals(t))throw new Error("Inconsistent sha25(WitnessScript)")}}(e,g=o.sha256(i)),!(f=_(i,void 0,t)).pubKeys)throw new Error('WitnessScript not supported "'+s.toASM(r)+'"');u=a.types.P2WSH,c=a.witnessScriptHash.output.encode(g),m=w=!0,y=d=f.scriptType,b=i}else if(e.prevOutType){if(e.prevOutType===l.P2SH||e.prevOutType===l.P2WSH)throw new Error("PrevOutScript is "+e.prevOutType+", requires redeemScript");if(u=e.prevOutType,c=e.prevOutScript,!(f=_(e.prevOutScript,e.prevOutType,t)).pubKeys)return;m=e.prevOutType===l.P2WPKH,y=u,b=c}else f=_(c=a.pubKeyHash.output.encode(o.hash160(t)),l.P2PKH,t),m=!1,y=u=l.P2PKH,b=c;y===l.P2WPKH&&(b=a.pubKeyHash.output.encode(a.witnessPubKeyHash.output.decode(b))),v&&(e.redeemScript=r,e.redeemScriptType=h),w&&(e.witnessScript=i,e.witnessScriptType=d),e.pubKeys=f.pubKeys,e.signatures=f.signatures,e.signScript=b,e.signType=y,e.prevOutScript=c,e.prevOutType=u,e.witness=m}function I(e,t,r,i){if(e===l.P2PKH){if(1===t.length&&n.isBuffer(t[0])&&1===r.length)return a.pubKeyHash.input.encodeStack(t[0],r[0])}else if(e===l.P2PK){if(1===t.length&&n.isBuffer(t[0]))return a.pubKey.input.encodeStack(t[0])}else{if(e!==l.MULTISIG)throw new Error("Not yet supported");if(t.length>0)return t=t.map(function(e){return e||u.OP_0}),i||(t=t.filter(function(e){return e!==u.OP_0})),a.multisig.input.encodeStack(t)}if(!i)throw new Error("Not enough signatures provided");return[]}function S(e,t){this.prevTxMap={},this.network=e||f.bitcoin,this.maximumFeeRate=t||2500,this.inputs=[],this.tx=new b,void 0!==this.network.txversion&&this.setVersion(this.network.txversion),void 0!==this.network.versionGroupId&&this.setVersionGroupId(this.network.versionGroupId)}function T(e){return void 0!==e.prevOutScript&&void 0!==e.signScript&&void 0!==e.pubKeys&&void 0!==e.signatures&&e.signatures.length===e.pubKeys.length&&e.pubKeys.length>0&&(!1===e.witness||!0===e.witness&&void 0!==e.value)}function C(e){return e.readUInt8(e.length-1)}S.prototype.setExpiry=function(e){c(h.UInt32,e),this.tx.expiry=e},S.prototype.setVersionGroupId=function(e){c(h.UInt32,e),this.tx.versiongroupid=e},S.prototype.setLockTime=function(e){if(c(h.UInt32,e),this.inputs.some(function(e){return!!e.signatures&&e.signatures.some(function(e){return e})}))throw new Error("No, this would invalidate signatures");this.tx.locktime=e},S.prototype.setVersion=function(e){c(h.UInt32,e),this.tx.version=e},S.fromTransaction=function(e,t){var r=new S(t),n=2147483647&e.version;return r.setVersion(e.version),r.setLockTime(e.locktime),n>=3&&(r.setVersionGroupId(e.versiongroupid),r.setExpiry(e.expiry)),e.outs.forEach(function(e){r.addOutput(e.script,e.value)}),e.ins.forEach(function(e){r.__addInputUnsafe(e.hash,e.index,{sequence:e.sequence,script:e.script,witness:e.witness})}),r.inputs.forEach(function(t,r){!function(e,t,r){if(e.redeemScriptType===l.MULTISIG&&e.redeemScript&&e.pubKeys.length!==e.signatures.length){var n=e.signatures.concat();e.signatures=e.pubKeys.map(function(i){var o,s=g.fromPublicKeyBuffer(i);return n.some(function(i,a){if(!i)return!1;var f=y.parseScriptSignature(i),u=t.hashForSignature(r,e.redeemScript,f.hashType);return!!s.verify(u,f.signature)&&(n[a]=void 0,o=i,!0)}),o})}}(t,e,r)}),r},S.prototype.addInput=function(e,t,r,i){if(!this.__canModifyInputs())throw new Error("No, this would invalidate signatures");var o;if("string"==typeof e)e=n.from(e,"hex").reverse();else if(e instanceof b){var s=e.outs[t];i=s.script,o=s.value,e=e.getHash()}return this.__addInputUnsafe(e,t,{sequence:r,prevOutScript:i,value:o})},S.prototype.__addInputUnsafe=function(e,t,r){if(b.isCoinbaseHash(e))throw new Error("coinbase inputs not supported");var n=e.toString("hex")+":"+t;if(void 0!==this.prevTxMap[n])throw new Error("Duplicate TxOut: "+n);var i={};if(void 0!==r.script&&(i=w(r.script,r.witness||[])),void 0!==r.value&&(i.value=r.value),!i.prevOutScript&&r.prevOutScript){var o;if(!i.pubKeys&&!i.signatures){var s=_(r.prevOutScript);s.pubKeys&&(i.pubKeys=s.pubKeys,i.signatures=s.signatures),o=s.scriptType}i.prevOutScript=r.prevOutScript,i.prevOutType=o||a.classifyOutput(r.prevOutScript)}var f=this.tx.addInput(e,t,r.sequence,r.scriptSig);return this.inputs[f]=i,this.prevTxMap[n]=f,f},S.prototype.addOutput=function(e,t){if(!this.__canModifyOutputs())throw new Error("No, this would invalidate signatures");return"string"==typeof e&&(e=i.toOutputScript(e,this.network)),this.tx.addOutput(e,t)},S.prototype.build=function(){return this.__build(!1)},S.prototype.buildIncomplete=function(){return this.__build(!0)},S.prototype.__build=function(e){if(!e){if(!this.tx.ins.length)throw new Error("Transaction has no inputs");if(!this.tx.outs.length)throw new Error("Transaction has no outputs")}var t=this.tx.clone();if(this.inputs.forEach(function(r,n){if(!(r.witnessScriptType||r.redeemScriptType||r.prevOutType)&&!e)throw new Error("Transaction is not complete");var i=function(e,t){var r=e.prevOutType,n=[],i=[];v(r)&&(n=I(r,e.signatures,e.pubKeys,t));var o=!1;if(r===a.types.P2SH){if(!t&&!m(e.redeemScriptType))throw new Error("Impossible to sign this type");v(e.redeemScriptType)&&(n=I(e.redeemScriptType,e.signatures,e.pubKeys,t)),e.redeemScriptType&&(o=!0,r=e.redeemScriptType)}switch(r){case a.types.P2WPKH:i=I(a.types.P2PKH,e.signatures,e.pubKeys,t);break;case a.types.P2WSH:if(!t&&!v(e.witnessScriptType))throw new Error("Impossible to sign this type");v(e.witnessScriptType)&&((i=I(e.witnessScriptType,e.signatures,e.pubKeys,t)).push(e.witnessScript),r=e.witnessScriptType)}return o&&n.push(e.redeemScript),{type:r,script:s.compile(n),witness:i}}(r,e);if(!e&&!v(i.type)&&i.type!==a.types.P2WPKH)throw new Error(i.type+" not supported");t.setInputScript(n,i.script),t.setWitness(n,i.witness)}),!e&&this.__overMaximumFees(t.virtualSize()))throw new Error("Transaction has absurd fees");return t},S.prototype.sign=function(e,t,r,i,o,s,a){if(t.network&&t.network!==this.network)throw new TypeError("Inconsistent network");if(!this.inputs[e])throw new Error("No input at index: "+e);i=i||b.SIGHASH_ALL;var f=this.inputs[e];if(void 0!==f.redeemScript&&r&&!f.redeemScript.equals(r))throw new Error("Inconsistent redeemScript");var u,p=t.publicKey||t.getPublicKeyBuffer();if(!T(f)){if(void 0!==o){if(void 0!==f.value&&f.value!==o)throw new Error("Input didn't match witnessValue");c(h.Satoshi,o),f.value=o}if(T(f)||A(f,p,r,0,s),!T(f))throw Error(f.prevOutType+" not supported")}if(u=f.witness?this.tx.hashForWitnessV0(e,f.signScript,f.value,i):a?this.tx.hashForZIP143(e,f.signScript,o,i):this.tx.hashForSignature(e,f.signScript,i),!f.pubKeys.some(function(e,r){if(!p.equals(e))return!1;if(f.signatures[r])throw new Error("Signature already exists");if(33!==p.length&&f.signType===l.P2WPKH)throw new Error("BIP143 rejects uncompressed public keys in P2WPKH or P2WSH");var o=t.sign(u);return n.isBuffer(o)&&(o=y.fromRSBuffer(o)),f.signatures[r]=o.toScriptSignature(i),!0}))throw new Error("Key pair cannot sign for this input")},S.prototype.__canModifyInputs=function(){return this.inputs.every(function(e){return void 0===e.signatures||e.signatures.every(function(e){return!e||C(e)&b.SIGHASH_ANYONECANPAY})})},S.prototype.__canModifyOutputs=function(){var e=this.tx.ins.length,t=this.tx.outs.length;return this.inputs.every(function(r){return void 0===r.signatures||r.signatures.every(function(r){if(!r)return!0;var n=31&C(r);return n===b.SIGHASH_NONE||(n===b.SIGHASH_SINGLE?e<=t:void 0)})})},S.prototype.__overMaximumFees=function(e){return(this.inputs.reduce(function(e,t){return e+(t.value>>>0)},0)-this.tx.outs.reduce(function(e,t){return e+t.value},0))/e>this.maximumFeeRate},e.exports=S},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t0?Math.floor(e):Math.ceil(e)}function v(e,r){var n,i,o=e.length,s=r.length,a=new Array(o),f=0,u=t;for(i=0;i=u?1:0,a[i]=n-f*u;for(;i0&&a.push(f),a}function m(e,t){return e.length>=t.length?v(e,t):v(t,e)}function w(e,r){var n,i,o=e.length,s=new Array(o),a=t;for(i=0;i0;)s[i++]=r%a,r=Math.floor(r/a);return s}function _(e,r){var n,i,o=e.length,s=r.length,a=new Array(o),f=0,u=t;for(n=0;n0;)s[i++]=f%a,f=Math.floor(f/a);return s}function S(e,t){for(var r=[];t-- >0;)r.push(0);return r.concat(e)}function T(e,r,n){return new u(e=0;--n)o=(s=o*u+e[n])-(i=b(s/r))*r,f[n]=0|i;return[f,0|o]}function P(e,r){var n,i=Z(r);if(a)return[new h(e.value/i.value),new h(e.value%i.value)];var o,s=e.value,l=i.value;if(0===l)throw new Error("Cannot divide by zero");if(e.isSmall)return i.isSmall?[new c(b(s/l)),new c(s%l)]:[f[0],e];if(i.isSmall){if(1===l)return[e,f[0]];if(-1==l)return[e.negate(),f[0]];var v=Math.abs(l);if(v=0;i--){for(n=l-1,v[i+h]!==g&&(n=Math.floor((v[i+h]*l+v[i+h-1])/g)),o=0,s=0,f=m.length,a=0;au&&(o=(o+1)*l),n=Math.ceil(o/s);do{if(k(a=I(r,n),h)<=0)break;n--}while(n);c.push(n),h=_(h,a)}return c.reverse(),[d(c),d(h)]}(s,l))[0];var E=e.sign!==i.sign,A=n[1],S=e.sign;return"number"==typeof o?(E&&(o=-o),o=new c(o)):o=new u(o,E),"number"==typeof A?(S&&(A=-A),A=new c(A)):A=new u(A,S),[o,A]}function k(e,t){if(e.length!==t.length)return e.length>t.length?1:-1;for(var r=e.length-1;r>=0;r--)if(e[r]!==t[r])return e[r]>t[r]?1:-1;return 0}function x(e){var t=e.abs();return!t.isUnit()&&(!!(t.equals(2)||t.equals(3)||t.equals(5))||!(t.isEven()||t.isDivisibleBy(3)||t.isDivisibleBy(5))&&(!!t.lesser(49)||void 0))}function B(e,t){for(var r,i,o,s=e.prev(),a=s,f=0;a.isEven();)a=a.divide(2),f++;e:for(i=0;i=0?n=_(e,t):(n=_(t,e),r=!r),"number"==typeof(n=d(n))?(r&&(n=-n),new c(n)):new u(n,r)}(r,n,this.sign)},u.prototype.minus=u.prototype.subtract,c.prototype.subtract=function(e){var t=Z(e),r=this.value;if(r<0!==t.sign)return this.add(t.negate());var n=t.value;return t.isSmall?new c(r-n):E(n,Math.abs(r),r>=0)},c.prototype.minus=c.prototype.subtract,h.prototype.subtract=function(e){return new h(this.value-Z(e).value)},h.prototype.minus=h.prototype.subtract,u.prototype.negate=function(){return new u(this.value,!this.sign)},c.prototype.negate=function(){var e=this.sign,t=new c(-this.value);return t.sign=!e,t},h.prototype.negate=function(){return new h(-this.value)},u.prototype.abs=function(){return new u(this.value,!1)},c.prototype.abs=function(){return new c(Math.abs(this.value))},h.prototype.abs=function(){return new h(this.value>=0?this.value:-this.value)},u.prototype.multiply=function(e){var r,n,i,o=Z(e),s=this.value,a=o.value,c=this.sign!==o.sign;if(o.isSmall){if(0===a)return f[0];if(1===a)return this;if(-1===a)return this.negate();if((r=Math.abs(a))0?function e(t,r){var n=Math.max(t.length,r.length);if(n<=30)return A(t,r);n=Math.ceil(n/2);var i=t.slice(n),o=t.slice(0,n),s=r.slice(n),a=r.slice(0,n),f=e(o,a),u=e(i,s),c=e(m(o,i),m(a,s)),h=m(m(f,S(_(_(c,f),u),n)),S(u,2*n));return g(h),h}(s,a):A(s,a),c)},u.prototype.times=u.prototype.multiply,c.prototype._multiplyBySmall=function(e){return l(e.value*this.value)?new c(e.value*this.value):T(Math.abs(e.value),p(Math.abs(this.value)),this.sign!==e.sign)},u.prototype._multiplyBySmall=function(e){return 0===e.value?f[0]:1===e.value?this:-1===e.value?this.negate():T(Math.abs(e.value),this.value,this.sign!==e.sign)},c.prototype.multiply=function(e){return Z(e)._multiplyBySmall(this)},c.prototype.times=c.prototype.multiply,h.prototype.multiply=function(e){return new h(this.value*Z(e).value)},h.prototype.times=h.prototype.multiply,u.prototype.square=function(){return new u(C(this.value),!1)},c.prototype.square=function(){var e=this.value*this.value;return l(e)?new c(e):new u(C(p(Math.abs(this.value))),!1)},h.prototype.square=function(e){return new h(this.value*this.value)},u.prototype.divmod=function(e){var t=P(this,e);return{quotient:t[0],remainder:t[1]}},h.prototype.divmod=c.prototype.divmod=u.prototype.divmod,u.prototype.divide=function(e){return P(this,e)[0]},h.prototype.over=h.prototype.divide=function(e){return new h(this.value/Z(e).value)},c.prototype.over=c.prototype.divide=u.prototype.over=u.prototype.divide,u.prototype.mod=function(e){return P(this,e)[1]},h.prototype.mod=h.prototype.remainder=function(e){return new h(this.value%Z(e).value)},c.prototype.remainder=c.prototype.mod=u.prototype.remainder=u.prototype.mod,u.prototype.pow=function(e){var t,r,n,i=Z(e),o=this.value,s=i.value;if(0===s)return f[1];if(0===o)return f[0];if(1===o)return f[1];if(-1===o)return i.isEven()?f[1]:f[-1];if(i.sign)return f[0];if(!i.isSmall)throw new Error("The exponent "+i.toString()+" is too large.");if(this.isSmall&&l(t=Math.pow(o,s)))return new c(b(t));for(r=this,n=f[1];!0&s&&(n=n.times(r),--s),0!==s;)s/=2,r=r.square();return n},c.prototype.pow=u.prototype.pow,h.prototype.pow=function(e){var t=Z(e),r=this.value,n=t.value,i=BigInt(0),o=BigInt(1),s=BigInt(2);if(n===i)return f[1];if(r===i)return f[0];if(r===o)return f[1];if(r===BigInt(-1))return t.isEven()?f[1]:f[-1];if(t.isNegative())return new h(i);for(var a=this,u=f[1];(n&o)===o&&(u=u.times(a),--n),n!==i;)n/=s,a=a.square();return u},u.prototype.modPow=function(e,t){if(e=Z(e),(t=Z(t)).isZero())throw new Error("Cannot take modPow with modulus 0");for(var r=f[1],n=this.mod(t);e.isPositive();){if(n.isZero())return f[0];e.isOdd()&&(r=r.multiply(n).mod(t)),e=e.divide(2),n=n.square().mod(t)}return r},h.prototype.modPow=c.prototype.modPow=u.prototype.modPow,u.prototype.compareAbs=function(e){var t=Z(e),r=this.value,n=t.value;return t.isSmall?1:k(r,n)},c.prototype.compareAbs=function(e){var t=Z(e),r=Math.abs(this.value),n=t.value;return t.isSmall?r===(n=Math.abs(n))?0:r>n?1:-1:-1},h.prototype.compareAbs=function(e){var t=this.value,r=Z(e).value;return(t=t>=0?t:-t)===(r=r>=0?r:-r)?0:t>r?1:-1},u.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=Z(e),r=this.value,n=t.value;return this.sign!==t.sign?t.sign?1:-1:t.isSmall?this.sign?-1:1:k(r,n)*(this.sign?-1:1)},u.prototype.compareTo=u.prototype.compare,c.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=Z(e),r=this.value,n=t.value;return t.isSmall?r==n?0:r>n?1:-1:r<0!==t.sign?r<0?-1:1:r<0?1:-1},c.prototype.compareTo=c.prototype.compare,h.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=this.value,r=Z(e).value;return t===r?0:t>r?1:-1},h.prototype.compareTo=h.prototype.compare,u.prototype.equals=function(e){return 0===this.compare(e)},h.prototype.eq=h.prototype.equals=c.prototype.eq=c.prototype.equals=u.prototype.eq=u.prototype.equals,u.prototype.notEquals=function(e){return 0!==this.compare(e)},h.prototype.neq=h.prototype.notEquals=c.prototype.neq=c.prototype.notEquals=u.prototype.neq=u.prototype.notEquals,u.prototype.greater=function(e){return this.compare(e)>0},h.prototype.gt=h.prototype.greater=c.prototype.gt=c.prototype.greater=u.prototype.gt=u.prototype.greater,u.prototype.lesser=function(e){return this.compare(e)<0},h.prototype.lt=h.prototype.lesser=c.prototype.lt=c.prototype.lesser=u.prototype.lt=u.prototype.lesser,u.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},h.prototype.geq=h.prototype.greaterOrEquals=c.prototype.geq=c.prototype.greaterOrEquals=u.prototype.geq=u.prototype.greaterOrEquals,u.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},h.prototype.leq=h.prototype.lesserOrEquals=c.prototype.leq=c.prototype.lesserOrEquals=u.prototype.leq=u.prototype.lesserOrEquals,u.prototype.isEven=function(){return 0==(1&this.value[0])},c.prototype.isEven=function(){return 0==(1&this.value)},h.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},u.prototype.isOdd=function(){return 1==(1&this.value[0])},c.prototype.isOdd=function(){return 1==(1&this.value)},h.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},u.prototype.isPositive=function(){return!this.sign},c.prototype.isPositive=function(){return this.value>0},h.prototype.isPositive=c.prototype.isPositive,u.prototype.isNegative=function(){return this.sign},c.prototype.isNegative=function(){return this.value<0},h.prototype.isNegative=c.prototype.isNegative,u.prototype.isUnit=function(){return!1},c.prototype.isUnit=function(){return 1===Math.abs(this.value)},h.prototype.isUnit=function(){return this.abs().value===BigInt(1)},u.prototype.isZero=function(){return!1},c.prototype.isZero=function(){return 0===this.value},h.prototype.isZero=function(){return this.value===BigInt(0)},u.prototype.isDivisibleBy=function(e){var t=Z(e);return!t.isZero()&&(!!t.isUnit()||(0===t.compareAbs(2)?this.isEven():this.mod(t).isZero()))},h.prototype.isDivisibleBy=c.prototype.isDivisibleBy=u.prototype.isDivisibleBy,u.prototype.isPrime=function(e){var t=x(this);if(void 0!==t)return t;var r=this.abs(),i=r.bitLength();if(i<=64)return B(r,[2,3,5,7,11,13,17,19,23,29,31,37]);for(var o=Math.log(2)*i.toJSNumber(),s=Math.ceil(!0===e?2*Math.pow(o,2):o),a=[],f=0;f-i?new c(e-1):new u(o,!0)},h.prototype.prev=function(){return new h(this.value-BigInt(1))};for(var D=[1];2*D[D.length-1]<=t;)D.push(2*D[D.length-1]);var N=D.length,U=D[N-1];function L(e){return Math.abs(e)<=t}function R(e,t,r){t=Z(t);for(var i=e.isNegative(),o=t.isNegative(),s=i?e.not():e,a=o?t.not():t,f=0,u=0,c=null,h=null,l=[];!s.isZero()||!a.isZero();)f=(c=P(s,U))[1].toJSNumber(),i&&(f=U-1-f),u=(h=P(a,U))[1].toJSNumber(),o&&(u=U-1-u),s=c[0],a=h[0],l.push(r(f,u));for(var p=0!==r(i?1:0,o?1:0)?n(-1):n(0),d=l.length-1;d>=0;d-=1)p=p.multiply(U).add(n(l[d]));return p}u.prototype.shiftLeft=function(e){var t=Z(e).toJSNumber();if(!L(t))throw new Error(String(t)+" is too large for shifting.");if(t<0)return this.shiftRight(-t);var r=this;if(r.isZero())return r;for(;t>=N;)r=r.multiply(U),t-=N-1;return r.multiply(D[t])},h.prototype.shiftLeft=c.prototype.shiftLeft=u.prototype.shiftLeft,u.prototype.shiftRight=function(e){var t,r=Z(e).toJSNumber();if(!L(r))throw new Error(String(r)+" is too large for shifting.");if(r<0)return this.shiftLeft(-r);for(var n=this;r>=N;){if(n.isZero()||n.isNegative()&&n.isUnit())return n;n=(t=P(n,U))[1].isNegative()?t[0].prev():t[0],r-=N-1}return(t=P(n,D[r]))[1].isNegative()?t[0].prev():t[0]},h.prototype.shiftRight=c.prototype.shiftRight=u.prototype.shiftRight,u.prototype.not=function(){return this.negate().prev()},h.prototype.not=c.prototype.not=u.prototype.not,u.prototype.and=function(e){return R(this,e,function(e,t){return e&t})},h.prototype.and=c.prototype.and=u.prototype.and,u.prototype.or=function(e){return R(this,e,function(e,t){return e|t})},h.prototype.or=c.prototype.or=u.prototype.or,u.prototype.xor=function(e){return R(this,e,function(e,t){return e^t})},h.prototype.xor=c.prototype.xor=u.prototype.xor;var M=1<<30,j=(t&-t)*(t&-t)|M;function F(e){var r=e.value,n="number"==typeof r?r|M:"bigint"==typeof r?r|BigInt(M):r[0]+r[1]*t|j;return n&-n}function H(e,t){return e=Z(e),t=Z(t),e.greater(t)?e:t}function Q(e,t){return e=Z(e),t=Z(t),e.lesser(t)?e:t}function q(e,t){if(e=Z(e).abs(),t=Z(t).abs(),e.equals(t))return e;if(e.isZero())return t;if(t.isZero())return e;for(var r,n,i=f[1];e.isEven()&&t.isEven();)r=Q(F(e),F(t)),e=e.divide(r),t=t.divide(r),i=i.multiply(r);for(;e.isEven();)e=e.divide(F(e));do{for(;t.isEven();)t=t.divide(F(t));e.greater(t)&&(n=t,t=e,e=n),t=t.subtract(e)}while(!t.isZero());return i.isUnit()?e:e.multiply(i)}u.prototype.bitLength=function(){var e=this;return e.compareTo(n(0))<0&&(e=e.negate().subtract(n(1))),0===e.compareTo(n(0))?n(0):n(function e(t,r){if(r.compareTo(t)<=0){var i=e(t,r.square(r)),o=i.p,s=i.e,a=o.multiply(r);return a.compareTo(t)<=0?{p:a,e:2*s+1}:{p:o,e:2*s}}return{p:n(1),e:0}}(e,n(2)).e).add(n(1))},h.prototype.bitLength=c.prototype.bitLength=u.prototype.bitLength;var z=function(e,t,r,n){r=r||s,e=String(e),n||(e=e.toLowerCase(),r=r.toLowerCase());var i,o=e.length,a=Math.abs(t),f={};for(i=0;i=a)){if("1"===h&&1===a)continue;throw new Error(h+" is not a valid digit in base "+t+".")}}t=Z(t);var u=[],c="-"===e[0];for(i=c?1:0;i"!==e[i]&&i=0;n--)i=i.add(e[n].times(o)),o=o.times(t);return r?i.negate():i}function K(e,t){if((t=n(t)).isZero()){if(e.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(t.equals(-1)){if(e.isZero())return{value:[0],isNegative:!1};if(e.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-e.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var r=Array.apply(null,Array(e.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return r.unshift([1]),{value:[].concat.apply([],r),isNegative:!1}}var i=!1;if(e.isNegative()&&t.isPositive()&&(i=!0,e=e.abs()),t.isUnit())return e.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(e.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:i};for(var o,s=[],a=e;a.isNegative()||a.compareAbs(t)>=0;){o=a.divmod(t),a=o.quotient;var f=o.remainder;f.isNegative()&&(f=t.minus(f).abs(),a=a.next()),s.push(f.toJSNumber())}return s.push(a.toJSNumber()),{value:s.reverse(),isNegative:i}}function Y(e,t,r){var n=K(e,t);return(n.isNegative?"-":"")+n.value.map(function(e){return function(e,t){return e<(t=t||s).length?t[e]:"<"+e+">"}(e,r)}).join("")}function G(e){if(l(+e)){var t=+e;if(t===b(t))return a?new h(BigInt(t)):new c(t);throw new Error("Invalid integer: "+e)}var n="-"===e[0];n&&(e=e.slice(1));var i=e.split(/e/i);if(i.length>2)throw new Error("Invalid integer: "+i.join("e"));if(2===i.length){var o=i[1];if("+"===o[0]&&(o=o.slice(1)),(o=+o)!==b(o)||!l(o))throw new Error("Invalid integer: "+o+" is not a valid exponent.");var s=i[0],f=s.indexOf(".");if(f>=0&&(o-=s.length-f-1,s=s.slice(0,f)+s.slice(f+1)),o<0)throw new Error("Cannot include negative exponent part for integers");e=s+=new Array(o+1).join("0")}if(!/^([0-9][0-9]*)$/.test(e))throw new Error("Invalid integer: "+e);if(a)return new h(BigInt(n?"-"+e:e));for(var p=[],d=e.length,y=r,v=d-y;d>0;)p.push(+e.slice(v,d)),(v-=y)<0&&(v=0),d-=y;return g(p),new u(p,n)}function Z(e){return"number"==typeof e?function(e){if(a)return new h(BigInt(e));if(l(e)){if(e!==b(e))throw new Error(e+" is not an integer.");return new c(e)}return G(e.toString())}(e):"string"==typeof e?G(e):"bigint"==typeof e?new h(e):e}u.prototype.toArray=function(e){return K(this,e)},c.prototype.toArray=function(e){return K(this,e)},h.prototype.toArray=function(e){return K(this,e)},u.prototype.toString=function(e,t){if(void 0===e&&(e=10),10!==e)return Y(this,e,t);for(var r,n=this.value,i=n.length,o=String(n[--i]);--i>=0;)r=String(n[i]),o+="0000000".slice(r.length)+r;return(this.sign?"-":"")+o},c.prototype.toString=function(e,t){return void 0===e&&(e=10),10!=e?Y(this,e,t):String(this.value)},h.prototype.toString=c.prototype.toString,h.prototype.toJSON=u.prototype.toJSON=c.prototype.toJSON=function(){return this.toString()},u.prototype.valueOf=function(){return parseInt(this.toString(),10)},u.prototype.toJSNumber=u.prototype.valueOf,c.prototype.valueOf=function(){return this.value},c.prototype.toJSNumber=c.prototype.valueOf,h.prototype.valueOf=h.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};for(var W=0;W<1e3;W++)f[W]=Z(W),W>0&&(f[-W]=Z(-W));return f.one=f[1],f.zero=f[0],f.minusOne=f[-1],f.max=H,f.min=Q,f.gcd=q,f.lcm=function(e,t){return e=Z(e).abs(),t=Z(t).abs(),e.divide(q(e,t)).multiply(t)},f.isInstance=function(e){return e instanceof u||e instanceof c||e instanceof h},f.randBetween=function(e,r){var n=Q(e=Z(e),r=Z(r)),i=H(e,r).subtract(n).add(1);if(i.isSmall)return n.add(Math.floor(Math.random()*i));for(var o=K(i,t).value,s=[],a=!0,u=0;u>t==0,"Invalid value: "+l+"."),u=u<=r;)c-=r,a[f]=u>>c&s,++f}return i?n(c0&&(a[f]=u<0}},{key:"transportType",value:function(){if(null==this.transport)return"";if(this.transport.activeName){var e=this.transport.activeName;return"BridgeTransport"===e?"bridge":"ExtensionTransport"===e?"extension":e}return this.transport.name}},{key:"transportVersion",value:function(){return null==this.transport?"":this.transport.version}},{key:"transportOutdated",value:function(){return null!=this.transport&&!!this.transport.isOutdated}},{key:"_configTransport",value:function(e){if(null!=this.options.config)return e.configure(this.options.config);var r=null==this.options.configUrl?"https://wallet.trezor.io/data/config_signed.bin?"+Date.now():this.options.configUrl;return(0,t._fetch)(r).then(function(e){if(!e.ok)throw new Error("Wrong config response.");return e.text()}).then(function(t){return e.configure(t)})}},{key:"_initTransport",value:function(){var e=this,r=this.options.transport?this.options.transport:t.defaultTransport();null!=this.options.bridgeVersionUrl&&r.setBridgeLatestUrl(this.options.bridgeVersionUrl),this.options.debugInfo&&console.log("[trezor.js] [device list] Initializing transports"),r.init(this.options.debug).then(function(){e.options.debugInfo&&console.log("[trezor.js] [device list] Configuring transports"),e._configTransport(r).then(function(){e.options.debugInfo&&console.log("[trezor.js] [device list] Configuring transports done"),e.transportEvent.emit(r)})},function(t){e.options.debugInfo&&console.error("[trezor.js] [device list] Error in transport",t),e.errorEvent.emit(t)})}},{key:"_createAndSaveDevice",value:function(e,t,r,n){var i=this;this.options.debugInfo&&console.log("[trezor.js] [device list] Creating Device",t,n);var o=t.path.toString();this.creatingDevices[o]=!0,this._createDevice(e,t,r,n).then(function(e){e instanceof c.default?(i.devices[o]=e,delete i.creatingDevices[o],i.connectEvent.emit(e,n)):(delete i.creatingDevices[o],i.unacquiredDevices[o]=e,i.connectUnacquiredEvent.emit(e))}).catch(function(e){console.debug("[trezor.js] [device list] Cannot create device",e)})}},{key:"_createDevice",value:function(e,t,r,n){var i=this;return c.default.fromDescriptor(e,t,this).then(function(e){return e}).catch(function(o){if("wrong previous session"===o.message||"NetworkError: Unable to claim interface."===o.toString())return null==n?i._createUnacquiredDevice(e,t,r):(i.unacquiredDevices[n.originalDescriptor.path.toString()]=n,n);throw i.errorEvent.emit(o),o})}},{key:"_createUnacquiredDevice",value:function(e,t,r){var n=this;return this.options.debugInfo&&console.log("[trezor.js] [device list] Creating Unacquired Device",t),h.default.fromDescriptor(e,t,this).then(function(e){return e}).catch(function(e){n.errorEvent.emit(e)})}},{key:"getSession",value:function(e,t){return t?this.debugSessions[e]:this.sessions[e]}},{key:"setHard",value:function(e,t,r){null!=this.stream&&this.stream.setHard(e,t,r),r?this.debugSessions[e]=t:this.sessions[e]=t}},{key:"_initStream",value:function(e){var t=this,r=new u.default(e);r.updateEvent.on(function(n){t.sessions={},t.debugSessions={},n.descriptors.forEach(function(e){t.sessions[e.path.toString()]=e.session,t.debugSessions[e.path.toString()]=e.debugSession}),n.connected.forEach(function(n){var i=n.path;null==n.session?t._createAndSaveDevice(e,n,r):(t.creatingDevices[i.toString()]=!0,t._createUnacquiredDevice(e,n,r).then(function(e){t.unacquiredDevices[i.toString()]=e,delete t.creatingDevices[i.toString()],t.connectUnacquiredEvent.emit(e)}))}),[{d:n.changedSessions,e:t.changedSessionsEvent},{d:n.acquired,e:t.acquiredEvent},{d:n.released,e:t.releasedEvent},{d:n.debugChangedSessions,e:t.debugChangedSessionsEvent},{d:n.debugAcquired,e:t.debugAcquiredEvent},{d:n.debugReleased,e:t.debugReleasedEvent}].forEach(function(e){var r=e.d,n=e.e;r.forEach(function(e){var r=e.path.toString(),i=t.devices[r];null!=i&&n.emit(i)})}),n.disconnected.forEach(function(e){var r=e.path.toString(),n=t.devices[r];null!=n&&(delete t.devices[r],t.disconnectEvent.emit(n));var i=t.unacquiredDevices[r];null!=i&&(delete t.unacquiredDevices[r],t.disconnectUnacquiredEvent.emit(i))}),n.released.forEach(function(n){var i=n.path;if(null!=t.unacquiredDevices[i.toString()]){var o=t.unacquiredDevices[i.toString()];delete t.unacquiredDevices[i.toString()],t._createAndSaveDevice(e,n,r,o)}}),t.updateEvent.emit(n)}),r.errorEvent.on(function(e){t.errorEvent.emit(e),r.stop()}),r.listen(),this.streamEvent.emit(r)}},{key:"onUnacquiredConnect",value:function(e,t){var r=e.originalDescriptor.path.toString();null==this.unacquiredDevices[r]?null!=this.creatingDevices[r]?this.connectEvent.on(t):null!=this.devices[r]&&t(this.devices[r],e):this.connectEvent.on(t)}},{key:"onUnacquiredDisconnect",value:function(e,t){var r=e.originalDescriptor.path.toString();null==this.unacquiredDevices[r]?null!=this.creatingDevices[r]?this.disconnectUnacquiredEvent.on(t):null==this.devices[r]&&t(e):this.disconnectUnacquiredEvent.on(t)}},{key:"onDisconnect",value:function(e,t){var r=e.originalDescriptor.path.toString();null==this.devices[r]&&null==this.creatingDevices[r]?t(e):this.disconnectEvent.on(t)}},{key:"stealFirstDevice",value:function(e){var t=this,r=this.asArray();if(r.length>0)return Promise.resolve(r[0]);var n=this.unacquiredAsArray();return n.length>0?n[0].steal():e?Promise.reject(new Error("No device connected")):new Promise(function(e,r){t.connectEvent.once(function(){t.stealFirstDevice().then(function(t){return e(t)},function(e){return r(e)})})})}},{key:"acquireFirstDevice",value:function(e){var t=this;return new Promise(function(r,n){t.stealFirstDevice(e).then(function(e){e.run(function(t){return r({device:e,session:t}),new Promise(function(e,t){})})},function(e){n(e)})}).catch(function(r){if("wrong previous session"===r.message)return(n=1e3,new Promise(function(e){setTimeout(function(){return e()},n)})).then(function(){return t.acquireFirstDevice(e)});var n;throw r})}},{key:"_setUnreadableHidDeviceChange",value:function(){var e=this;if(!t.node)try{var r=this.transport;if(null==r)return;var n=r.activeTransport;if(null==n||"ParallelTransport"!==n.name)return;var i=n.workingTransports.webusb;if(null==i)return;if(null!=n.workingTransports.hid)return;return i.plugin.unreadableHidDeviceChange.on("change",function(){return e.unreadableHidDeviceChange.emit("change")})}catch(e){return}}},{key:"unreadableHidDevice",value:function(){if(t.node)return!1;try{var e=this.transport;if(null==e)return!1;var r=e.activeTransport;if(null==r||"ParallelTransport"!==r.name)return!1;var n=r.workingTransports.webusb;return null!=n&&(null==r.workingTransports.hid&&n.plugin.unreadableHidDevice)}catch(e){return!1}}},{key:"onbeforeunload",value:function(e){this.asArray().forEach(function(t){return t.onbeforeunload(e)}),null!=this.stream&&this.stream.stop(),null!=this.transport&&this.transport.stop()}}]),t}(),n._fetch=function(){return Promise.reject(new Error("No fetch defined"))},i);function d(e){return Object.keys(e).map(function(t){return e[t]})}t.default=p,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setFetch=function(e){n=e},t.udevInstallers=function(e){var t=e||{},r=t.platform||h(),n=t.domain||o;return f.map(function(e){return i(e,n)}).map(function(e){return{url:e.url,label:e.label,platform:e.platform,preferred:c(e.platform,r)}})},t.latestVersion=u,t.installers=function(e){var t=e||{};return Promise.resolve(t.version||u(e)).then(function(e){var r=t.platform||h(),n=t.domain||o;return a.map(function(e){return i(e,n)}).map(function(t){return{version:e,url:t.url.replace(/%version%/g,e),label:t.label,platform:t.platform,preferred:c(t.platform,r)}})})};var n="undefined"==typeof window?function(){return Promise.reject()}:window.fetch;function i(e,t){return{url:t+e.shortUrl,label:e.label,platform:e.platform}}var o="https://mytrezor.s3.amazonaws.com",s=o+"/bridge/latest.txt",a=[{shortUrl:"/bridge/%version%/trezor-bridge-%version%-win32-install.exe",label:"Windows",platform:["win32","win64"]},{shortUrl:"/bridge/%version%/trezor-bridge-%version%.pkg",label:"Mac OS X",platform:"mac"},{shortUrl:"/bridge/%version%/trezor-bridge_%version%_amd64.deb",label:"Linux 64-bit (deb)",platform:"deb64"},{shortUrl:"/bridge/%version%/trezor-bridge-%version%-1.x86_64.rpm",label:"Linux 64-bit (rpm)",platform:"rpm64"},{shortUrl:"/bridge/%version%/trezor-bridge_%version%_i386.deb",label:"Linux 32-bit (deb)",platform:"deb32"},{shortUrl:"/bridge/%version%/trezor-bridge-%version%-1.i386.rpm",label:"Linux 32-bit (rpm)",platform:"rpm32"}],f=[{shortUrl:"/udev/trezor-udev-2-1.noarch.rpm",label:"RPM package",platform:["rpm32","rpm64"]},{shortUrl:"/udev/trezor-udev_2_all.deb",label:"DEB package",platform:["deb32","deb64"]}];function u(e){var t=(e||{}).bridgeUrl||s;return n(t,{credentials:"same-origin"}).then(function(e){return e.ok?e.text():e.text().then(function(e){return Promise.reject(e)})}).then(function(e){if("string"!=typeof e)throw new Error("Wrong version load result.");return e.trim()})}function c(e,t){if("string"==typeof e)return e===t;for(var r=0;r>8&255]>n&&(d[t]=i),i},function(e,t,r){return r?e(t,r):new p(t,null)},function(e,t,r){var n;if(t=55296&&e<=56319},p.isLowSurrogate=function(e){return e>=56320&&e<=57343},p.prototype.prepFeature=function(){this.feature||(this.feature=p.fromCharCode(this.codepoint,!0).feature)},p.prototype.toString=function(){if(this.codepoint<65536)return String.fromCharCode(this.codepoint);var e=this.codepoint-65536;return String.fromCharCode(Math.floor(e/1024)+55296,e%1024+56320)},p.prototype.getDecomp=function(){return this.prepFeature(),this.feature[0]||null},p.prototype.isCompatibility=function(){return this.prepFeature(),!!this.feature[1]&&256&this.feature[1]},p.prototype.isExclude=function(){return this.prepFeature(),!!this.feature[1]&&512&this.feature[1]},p.prototype.getCanonicalClass=function(){return this.prepFeature(),this.feature[1]?255&this.feature[1]:0},p.prototype.getComposite=function(e){if(this.prepFeature(),!this.feature[2])return null;var t=this.feature[2][e.codepoint];return t?p.fromCharCode(t):null};var v=function(e){this.str=e,this.cursor=0};v.prototype.next=function(){if(this.str&&this.cursor0;--r){if(this.resBuf[r-1].getCanonicalClass()<=e)break}this.resBuf.splice(r,0,t)}while(0!==e);return this.resBuf.shift()};var _=function(e){this.it=e,this.procBuf=[],this.resBuf=[],this.lastClass=null};_.prototype.next=function(){for(;0===this.resBuf.length;){var e=this.it.next();if(!e){this.resBuf=this.procBuf,this.procBuf=[];break}if(0===this.procBuf.length)this.lastClass=e.getCanonicalClass(),this.procBuf.push(e);else{var t=this.procBuf[0].getComposite(e),r=e.getCanonicalClass();t&&(this.lastClass - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/ProtoBuf.js for details - */ -!function(t){"use strict";var n,i;e.exports=(n=r(189),(i={VERSION:"3.8.2",WIRE_TYPES:{}}).WIRE_TYPES.VARINT=0,i.WIRE_TYPES.BITS64=1,i.WIRE_TYPES.LDELIM=2,i.WIRE_TYPES.STARTGROUP=3,i.WIRE_TYPES.ENDGROUP=4,i.WIRE_TYPES.BITS32=5,i.PACKABLE_WIRE_TYPES=[i.WIRE_TYPES.VARINT,i.WIRE_TYPES.BITS64,i.WIRE_TYPES.BITS32],i.TYPES={int32:{name:"int32",wireType:i.WIRE_TYPES.VARINT},uint32:{name:"uint32",wireType:i.WIRE_TYPES.VARINT},sint32:{name:"sint32",wireType:i.WIRE_TYPES.VARINT},int64:{name:"int64",wireType:i.WIRE_TYPES.VARINT},uint64:{name:"uint64",wireType:i.WIRE_TYPES.VARINT},sint64:{name:"sint64",wireType:i.WIRE_TYPES.VARINT},bool:{name:"bool",wireType:i.WIRE_TYPES.VARINT},double:{name:"double",wireType:i.WIRE_TYPES.BITS64},string:{name:"string",wireType:i.WIRE_TYPES.LDELIM},bytes:{name:"bytes",wireType:i.WIRE_TYPES.LDELIM},fixed32:{name:"fixed32",wireType:i.WIRE_TYPES.BITS32},sfixed32:{name:"sfixed32",wireType:i.WIRE_TYPES.BITS32},fixed64:{name:"fixed64",wireType:i.WIRE_TYPES.BITS64},sfixed64:{name:"sfixed64",wireType:i.WIRE_TYPES.BITS64},float:{name:"float",wireType:i.WIRE_TYPES.BITS32},enum:{name:"enum",wireType:i.WIRE_TYPES.VARINT},message:{name:"message",wireType:i.WIRE_TYPES.LDELIM},group:{name:"group",wireType:i.WIRE_TYPES.STARTGROUP}},i.ID_MIN=1,i.ID_MAX=536870911,i.ByteBuffer=n,i.Long=n.Long||null,i.convertFieldsToCamelCase=!1,i.populateAccessors=!0,i.Util=function(){Object.create||(Object.create=function(e){if(arguments.length>1)throw Error("Object.create polyfill only accepts the first parameter.");function t(){}return t.prototype=e,new t});var e={IS_NODE:!1,XHR:function(){for(var e=[function(){return new XMLHttpRequest},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Msxml3.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")}],t=null,r=0;r0)return this.stack.shift();if(this.index>=this.source.length)return null;if(this.readingString)return this.readingString=!1,this._readString();var e,r;do{for(e=!1;t.WHITESPACE.test(r=this.source.charAt(this.index));)if(this.index++,"\n"===r&&this.line++,this.index===this.source.length)return null;if("/"===this.source.charAt(this.index))if("/"===this.source.charAt(++this.index)){for(;"\n"!==this.source.charAt(this.index);)if(this.index++,this.index==this.source.length)return null;this.index++,this.line++,e=!0}else{if("*"!==this.source.charAt(this.index))throw Error("Unterminated comment at line "+this.line+": /"+this.source.charAt(this.index));for(r="";r+(r=this.source.charAt(this.index))!=="*/";)if(this.index++,"\n"===r&&this.line++,this.index===this.source.length)return null;this.index++,e=!0}}while(e);if(this.index===this.source.length)return null;var n=this.index;if(t.DELIM.lastIndex=0,t.DELIM.test(this.source.charAt(n)))++n;else for(++n;n>3;switch(i){case e.WIRE_TYPES.VARINT:do{n=r.readUint8()}while(128==(128&n));break;case e.WIRE_TYPES.BITS64:r.offset+=8;break;case e.WIRE_TYPES.LDELIM:n=r.readVarint32(),r.offset+=n;break;case e.WIRE_TYPES.STARTGROUP:u(o,r);break;case e.WIRE_TYPES.ENDGROUP:if(o===t)return!1;throw Error("Illegal GROUPEND after unknown group: "+o+" ("+t+" expected)");case e.WIRE_TYPES.BITS32:r.offset+=4;break;default:throw Error("Illegal wire type in unknown group "+t+": "+i)}return!0}f.build=function(t){if(this.clazz&&!t)return this.clazz;var r=function(e,t){var r=t.getChildren(e.Reflect.Message.Field),i=t.getChildren(e.Reflect.Message.OneOf),o=function(t,o){e.Builder.Message.call(this);for(var s=0,a=i.length;s0)if(1!==arguments.length||"object"!=typeof t||"function"==typeof t.encode||e.Util.isArray(t)||t instanceof n||t instanceof ArrayBuffer||e.Long&&t instanceof e.Long)for(s=0,a=arguments.length;s0;){if(s=(i=t.readVarint32())>>3,(o=7&i)===e.WIRE_TYPES.ENDGROUP){if(s!==n)throw Error("Illegal group end indicator for "+this.toString(!0)+": "+s+" ("+(n?n+" expected":"not a group")+")");break}if(a=this._fieldsById[s])a.repeated&&!a.options.packed?c[a.name].push(a.decode(o,t)):(c[a.name]=a.decode(o,t),a.oneof&&(null!==this[a.oneof.name]&&(this[this[a.oneof.name]]=null),c[a.oneof.name]=a.name));else switch(o){case e.WIRE_TYPES.VARINT:t.readVarint32();break;case e.WIRE_TYPES.BITS32:t.offset+=4;break;case e.WIRE_TYPES.BITS64:t.offset+=8;break;case e.WIRE_TYPES.LDELIM:var h=t.readVarint32();t.offset+=h;break;case e.WIRE_TYPES.STARTGROUP:for(;u(s,t););break;default:throw Error("Illegal wire type for unknown field "+s+" in "+this.toString(!0)+"#decode: "+o)}}for(var l=0,p=this._fields.length;l4294967295?0|t:t;case e.TYPES.uint32:case e.TYPES.fixed32:return("number"!=typeof t||t==t&&t%1!=0)&&i(typeof t,"not an integer"),t<0?t>>>0:t;case e.TYPES.int64:case e.TYPES.sint64:case e.TYPES.sfixed64:if(e.Long)try{return l(t,!1)}catch(e){i(typeof t,e.message)}else i(typeof t,"requires Long.js");case e.TYPES.uint64:case e.TYPES.fixed64:if(e.Long)try{return l(t,!0)}catch(e){i(typeof t,e.message)}else i(typeof t,"requires Long.js");case e.TYPES.bool:return"boolean"!=typeof t&&i(typeof t,"not a boolean"),t;case e.TYPES.float:case e.TYPES.double:return"number"!=typeof t&&i(typeof t,"not a number"),t;case e.TYPES.string:return"string"==typeof t||t&&t instanceof String||i(typeof t,"not a string"),""+t;case e.TYPES.bytes:return n.isByteBuffer(t)?t:n.wrap(t,"base64");case e.TYPES.enum:var s=this.resolvedType.getChildren(d.Value);for(f=0;f=0){r.writeVarint32(this.id<<3|e.WIRE_TYPES.LDELIM),r.ensureCapacity(r.offset+=1);var o=r.offset;for(i=0;i1){var f=r.slice(o,r.offset);o+=a-1,r.offset=o,r.append(f)}r.writeVarint32(s,o-a)}else for(i=0;i=0){for(r+=n.calculateVarint32(this.id<<3|e.WIRE_TYPES.LDELIM),o=0,i=0;i=0&&!n){o=r.readVarint32(),o=r.offset+o;for(var s=[];r.offset>>0;case e.TYPES.sint32:return 0|r.readVarint32ZigZag();case e.TYPES.fixed32:return r.readUint32()>>>0;case e.TYPES.sfixed32:return 0|r.readInt32();case e.TYPES.int64:return r.readVarint64();case e.TYPES.uint64:return r.readVarint64().toUnsigned();case e.TYPES.sint64:return r.readVarint64ZigZag();case e.TYPES.fixed64:return r.readUint64();case e.TYPES.sfixed64:return r.readInt64();case e.TYPES.bool:return!!r.readVarint32();case e.TYPES.enum:return r.readVarint32();case e.TYPES.float:return r.readFloat();case e.TYPES.double:return r.readDouble();case e.TYPES.string:return r.readVString();case e.TYPES.bytes:if(o=r.readVarint32(),r.remaining()=0)return!1;s.push(o)}s=null}if(void 0!==r.enums){if(!e.Util.isArray(r.enums))return!1;for(n=0;n0;){if(t=r.pop(),!e.Util.isArray(t))throw Error("Not a valid namespace: "+JSON.stringify(t));for(;t.length>0;){var o=t.shift();if(i.isValidMessage(o)){var s=new n.Message(this,this.ptr,o.name,o.options,o.isGroup),a={};if(o.oneofs)for(var f=Object.keys(o.oneofs),u=0,c=f.length;u0)for(u=0,c=o.fields.length;u0)for(u=0;u0)for(u=0;ue.ID_MAX&&(s.extensions[1]=e.ID_MAX)),this.ptr.addChild(s),y.length>0){r.push(t),t=y,y=null,this.ptr=s,s=null;continue}y=null,s=null}else if(i.isValidEnum(o)){for(s=new n.Enum(this,this.ptr,o.name,o.options),u=0;us.extensions[1])throw Error("Illegal extended field id in message "+s.name+": "+o.fields[u].id+" ("+s.extensions.join(" to ")+" expected)");var b=o.fields[u].name;this.options.convertFieldsToCamelCase&&(b=n.Message.Field._toCamelCase(o.fields[u].name)),h=new n.Message.ExtensionField(this,s,o.fields[u].rule,o.fields[u].type,this.ptr.fqn()+"."+b,o.fields[u].id,o.fields[u].options);var v=new n.Extension(this,this.ptr,o.fields[u].name,h);h.extension=v,this.ptr.addChild(v),s.addChild(h)}else if(!/\.?google\.protobuf\./.test(o.ref))throw Error("Extended message "+o.ref+" is not defined")}o=null}t=null,this.ptr=this.ptr.parent}return this.resolved=!1,this.result=null,this},o.import=function(t,n){if("string"==typeof n){if(e.Util.IS_NODE&&(n=r(188).resolve(n)),!0===this.files[n])return this.reset(),this;this.files[n]=!0}if(t.imports&&t.imports.length>0){var i,o="/",s=!1;"object"==typeof n?(this.importRoot=n.root,s=!0,i=this.importRoot,n=n.file,(i.indexOf("\\")>=0||n.indexOf("\\")>=0)&&(o="\\")):"string"==typeof n?this.importRoot?i=this.importRoot:n.indexOf("/")>=0?""===(i=n.replace(/\/[^\/]*$/,""))&&(i="/"):n.indexOf("\\")>=0?(i=n.replace(/\\[^\\]*$/,""),o="\\"):i=".":i=null;for(var a=0;a=0)return!1;s.push(o)}s=null}return!0},o.resolveAll=function(){var r;if(null!=this.ptr&&"object"!=typeof this.ptr.type){if(this.ptr instanceof n.Namespace)for(var i=this.ptr.children,o=0,s=i.length;o=0;n--){var i=e[n];"."===i?e.splice(n,1):".."===i?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}var n=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,i=function(e){return n.exec(e).slice(1)};function o(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n=-1&&!n;i--){var s=i>=0?arguments[i]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(t=s+"/"+t,n="/"===s.charAt(0))}return(n?"/":"")+(t=r(o(t.split("/"),function(e){return!!e}),!n).join("/"))||"."},t.normalize=function(e){var n=t.isAbsolute(e),i="/"===s(e,-1);return(e=r(o(e.split("/"),function(e){return!!e}),!n).join("/"))||n||(e="."),e&&i&&(e+="/"),(n?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(o(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},t.relative=function(e,r){function n(e){for(var t=0;t=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var i=n(e.split("/")),o=n(r.split("/")),s=Math.min(i.length,o.length),a=s,f=0;f - * This version of ByteBuffer.js uses an ArrayBuffer as its backing buffer which is accessed through a DataView and is - * compatible with modern browsers. - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/ByteBuffer.js for details - */ -!function(t){"use strict";e.exports=function(){var e;try{e=r(190)}catch(e){}return function(e){var t=function(e,r,i){if(void 0===e&&(e=t.DEFAULT_CAPACITY),void 0===r&&(r=t.DEFAULT_ENDIAN),void 0===i&&(i=t.DEFAULT_NOASSERT),!i){if((e|=0)<0)throw RangeError("Illegal capacity");r=!!r,i=!!i}this.buffer=0===e?n:new ArrayBuffer(e),this.view=0===e?null:new DataView(this.buffer),this.offset=0,this.markedOffset=-1,this.limit=e,this.littleEndian=void 0!==r&&!!r,this.noAssert=!!i};t.VERSION="3.5.5",t.LITTLE_ENDIAN=!0,t.BIG_ENDIAN=!1,t.DEFAULT_CAPACITY=16,t.DEFAULT_ENDIAN=t.BIG_ENDIAN,t.DEFAULT_NOASSERT=!1,t.Long=e||null;var r=t.prototype,n=new ArrayBuffer(0),o=String.fromCharCode;function s(e){var t=0;return function(){return t1024&&(t.push(o.apply(String,e)),e.length=0),Array.prototype.push.apply(e,arguments)}}t.allocate=function(e,r,n){return new t(e,r,n)},t.concat=function(e,r,n,i){"boolean"!=typeof r&&"string"==typeof r||(i=n,n=r,r=void 0);for(var o,s=0,a=0,f=e.length;a0&&(s+=o);if(0===s)return new t(0,n,i);var u,c=new t(s,n,i),h=new Uint8Array(c.buffer);for(a=0;a0&&(a.buffer=e.buffer,a.offset=e.byteOffset,a.limit=e.byteOffset+e.length,a.view=e.length>0?new DataView(e.buffer):null);else if(e instanceof ArrayBuffer)a=new t(0,o,s),e.byteLength>0&&(a.buffer=e,a.offset=0,a.limit=e.byteLength,a.view=e.byteLength>0?new DataView(e):null);else{if("[object Array]"!==Object.prototype.toString.call(e))throw TypeError("Illegal buffer");for((a=new t(e.length,o,s)).limit=e.length,i=0;i>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=1,this.view.setInt8(t,e),r&&(this.offset+=1),this},r.writeByte=r.writeInt8,r.readInt8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view.getInt8(e);return t&&(this.offset+=1),r},r.readByte=r.readInt8,r.writeUint8=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=1;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=1,this.view.setUint8(t,e),r&&(this.offset+=1),this},r.readUint8=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r=this.view.getUint8(e);return t&&(this.offset+=1),r},r.writeInt16=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=2,this.view.setInt16(t,e,this.littleEndian),r&&(this.offset+=2),this},r.writeShort=r.writeInt16,r.readInt16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=this.view.getInt16(e,this.littleEndian);return t&&(this.offset+=2),r},r.readShort=r.readInt16,r.writeUint16=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=2;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=2,this.view.setUint16(t,e,this.littleEndian),r&&(this.offset+=2),this},r.readUint16=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+2>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+2) <= "+this.buffer.byteLength)}var r=this.view.getUint16(e,this.littleEndian);return t&&(this.offset+=2),r},r.writeInt32=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=4,this.view.setInt32(t,e,this.littleEndian),r&&(this.offset+=4),this},r.writeInt=r.writeInt32,r.readInt32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=this.view.getInt32(e,this.littleEndian);return t&&(this.offset+=4),r},r.readInt=r.readInt32,r.writeUint32=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=4,this.view.setUint32(t,e,this.littleEndian),r&&(this.offset+=4),this},r.readUint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=this.view.getUint32(e,this.littleEndian);return t&&(this.offset+=4),r},e&&(r.writeInt64=function(t,r){var n=void 0===r;if(n&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var i=this.buffer.byteLength;return r>i&&this.resize((i*=2)>r?i:r),r-=8,this.littleEndian?(this.view.setInt32(r,t.low,!0),this.view.setInt32(r+4,t.high,!0)):(this.view.setInt32(r,t.high,!1),this.view.setInt32(r+4,t.low,!1)),n&&(this.offset+=8),this},r.writeLong=r.writeInt64,r.readInt64=function(t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var n=this.littleEndian?new e(this.view.getInt32(t,!0),this.view.getInt32(t+4,!0),!1):new e(this.view.getInt32(t+4,!1),this.view.getInt32(t,!1),!1);return r&&(this.offset+=8),n},r.readLong=r.readInt64,r.writeUint64=function(t,r){var n=void 0===r;if(n&&(r=this.offset),!this.noAssert){if("number"==typeof t)t=e.fromNumber(t);else if("string"==typeof t)t=e.fromString(t);else if(!(t&&t instanceof e))throw TypeError("Illegal value: "+t+" (not an integer or Long)");if("number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t)),r+=8;var i=this.buffer.byteLength;return r>i&&this.resize((i*=2)>r?i:r),r-=8,this.littleEndian?(this.view.setInt32(r,t.low,!0),this.view.setInt32(r+4,t.high,!0)):(this.view.setInt32(r,t.high,!1),this.view.setInt32(r+4,t.low,!1)),n&&(this.offset+=8),this},r.readUint64=function(t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+8) <= "+this.buffer.byteLength)}var n=this.littleEndian?new e(this.view.getInt32(t,!0),this.view.getInt32(t+4,!0),!0):new e(this.view.getInt32(t+4,!1),this.view.getInt32(t,!1),!0);return r&&(this.offset+=8),n}),r.writeFloat32=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=4;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=4,this.view.setFloat32(t,e,this.littleEndian),r&&(this.offset+=4),this},r.writeFloat=r.writeFloat32,r.readFloat32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r=this.view.getFloat32(e,this.littleEndian);return t&&(this.offset+=4),r},r.readFloat=r.readFloat32,r.writeFloat64=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof e)throw TypeError("Illegal value: "+e+" (not a number)");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}t+=8;var n=this.buffer.byteLength;return t>n&&this.resize((n*=2)>t?n:t),t-=8,this.view.setFloat64(t,e,this.littleEndian),r&&(this.offset+=8),this},r.writeDouble=r.writeFloat64,r.readFloat64=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+8>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+8) <= "+this.buffer.byteLength)}var r=this.view.getFloat64(e,this.littleEndian);return t&&(this.offset+=8),r},r.readDouble=r.readFloat64,t.MAX_VARINT32_BYTES=5,t.calculateVarint32=function(e){return(e>>>=0)<128?1:e<16384?2:e<1<<21?3:e<1<<28?4:5},t.zigZagEncode32=function(e){return((e|=0)<<1^e>>31)>>>0},t.zigZagDecode32=function(e){return e>>>1^-(1&e)|0},r.writeVarint32=function(e,r){var n=void 0===r;if(n&&(r=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal offset: "+r+" (not an integer)");if((r>>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var i,o=t.calculateVarint32(e);r+=o;var s=this.buffer.byteLength;return r>s&&this.resize((s*=2)>r?s:r),r-=o,this.view.setUint8(r,i=128|e),(e>>>=0)>=128?(i=e>>7|128,this.view.setUint8(r+1,i),e>=16384?(i=e>>14|128,this.view.setUint8(r+2,i),e>=1<<21?(i=e>>21|128,this.view.setUint8(r+3,i),e>=1<<28?(this.view.setUint8(r+4,e>>28&15),o=5):(this.view.setUint8(r+3,127&i),o=4)):(this.view.setUint8(r+2,127&i),o=3)):(this.view.setUint8(r+1,127&i),o=2)):(this.view.setUint8(r,127&i),o=1),n?(this.offset+=o,this):o},r.writeVarint32ZigZag=function(e,r){return this.writeVarint32(t.zigZagEncode32(e),r)},r.readVarint32=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,n,i=0,o=0;do{if(n=e+i,!this.noAssert&&n>this.limit){var s=Error("Truncated");throw s.truncated=!0,s}r=this.view.getUint8(n),i<5&&(o|=(127&r)<<7*i>>>0),++i}while(128==(128&r));return o|=0,t?(this.offset+=i,o):{value:o,length:i}},r.readVarint32ZigZag=function(e){var r=this.readVarint32(e);return"object"==typeof r?r.value=t.zigZagDecode32(r.value):r=t.zigZagDecode32(r),r},e&&(t.MAX_VARINT64_BYTES=10,t.calculateVarint64=function(t){"number"==typeof t?t=e.fromNumber(t):"string"==typeof t&&(t=e.fromString(t));var r=t.toInt()>>>0,n=t.shiftRightUnsigned(28).toInt()>>>0,i=t.shiftRightUnsigned(56).toInt()>>>0;return 0==i?0==n?r<16384?r<128?1:2:r<1<<21?3:4:n<16384?n<128?5:6:n<1<<21?7:8:i<128?9:10},t.zigZagEncode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftLeft(1).xor(t.shiftRight(63)).toUnsigned()},t.zigZagDecode64=function(t){return"number"==typeof t?t=e.fromNumber(t,!1):"string"==typeof t?t=e.fromString(t,!1):!1!==t.unsigned&&(t=t.toSigned()),t.shiftRightUnsigned(1).xor(t.and(e.ONE).toSigned().negate()).toSigned()},r.writeVarint64=function(r,n){var i=void 0===n;if(i&&(n=this.offset),!this.noAssert){if("number"==typeof r)r=e.fromNumber(r);else if("string"==typeof r)r=e.fromString(r);else if(!(r&&r instanceof e))throw TypeError("Illegal value: "+r+" (not an integer or Long)");if("number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}"number"==typeof r?r=e.fromNumber(r,!1):"string"==typeof r?r=e.fromString(r,!1):!1!==r.unsigned&&(r=r.toSigned());var o=t.calculateVarint64(r),s=r.toInt()>>>0,a=r.shiftRightUnsigned(28).toInt()>>>0,f=r.shiftRightUnsigned(56).toInt()>>>0;n+=o;var u=this.buffer.byteLength;switch(n>u&&this.resize((u*=2)>n?u:n),n-=o,o){case 10:this.view.setUint8(n+9,f>>>7&1);case 9:this.view.setUint8(n+8,9!==o?128|f:127&f);case 8:this.view.setUint8(n+7,8!==o?a>>>21|128:a>>>21&127);case 7:this.view.setUint8(n+6,7!==o?a>>>14|128:a>>>14&127);case 6:this.view.setUint8(n+5,6!==o?a>>>7|128:a>>>7&127);case 5:this.view.setUint8(n+4,5!==o?128|a:127&a);case 4:this.view.setUint8(n+3,4!==o?s>>>21|128:s>>>21&127);case 3:this.view.setUint8(n+2,3!==o?s>>>14|128:s>>>14&127);case 2:this.view.setUint8(n+1,2!==o?s>>>7|128:s>>>7&127);case 1:this.view.setUint8(n,1!==o?128|s:127&s)}return i?(this.offset+=o,this):o},r.writeVarint64ZigZag=function(e,r){return this.writeVarint64(t.zigZagEncode64(e),r)},r.readVarint64=function(t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+1) <= "+this.buffer.byteLength)}var n=t,i=0,o=0,s=0,a=0;if(i=127&(a=this.view.getUint8(t++)),128&a&&(i|=(127&(a=this.view.getUint8(t++)))<<7,128&a&&(i|=(127&(a=this.view.getUint8(t++)))<<14,128&a&&(i|=(127&(a=this.view.getUint8(t++)))<<21,128&a&&(o=127&(a=this.view.getUint8(t++)),128&a&&(o|=(127&(a=this.view.getUint8(t++)))<<7,128&a&&(o|=(127&(a=this.view.getUint8(t++)))<<14,128&a&&(o|=(127&(a=this.view.getUint8(t++)))<<21,128&a&&(s=127&(a=this.view.getUint8(t++)),128&a&&(s|=(127&(a=this.view.getUint8(t++)))<<7,128&a))))))))))throw Error("Buffer overrun");var f=e.fromBits(i|o<<28,o>>>4|s<<24,!1);return r?(this.offset=t,f):{value:f,length:t-n}},r.readVarint64ZigZag=function(r){var n=this.readVarint64(r);return n&&n.value instanceof e?n.value=t.zigZagDecode64(n.value):n=t.zigZagDecode64(n),n}),r.writeCString=function(e,t){var r=void 0===t;r&&(t=this.offset);var n,i=e.length;if(!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");for(n=0;n>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}i=u.calculateUTF16asUTF8(s(e))[1],t+=i+1;var o=this.buffer.byteLength;return t>o&&this.resize((o*=2)>t?o:t),t-=i+1,u.encodeUTF16toUTF8(s(e),function(e){this.view.setUint8(t++,e)}.bind(this)),this.view.setUint8(t++,0),r?(this.offset=t,this):i},r.readCString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,n=e,i=-1;return u.decodeUTF8toUTF16(function(){if(0===i)return null;if(e>=this.limit)throw RangeError("Illegal range: Truncated data, "+e+" < "+this.limit);return 0===(i=this.view.getUint8(e++))?null:i}.bind(this),r=a(),!0),t?(this.offset=e,r()):{string:r(),length:e-n}},r.writeIString=function(e,t){var r=void 0===t;if(r&&(t=this.offset),!this.noAssert){if("string"!=typeof e)throw TypeError("Illegal str: Not a string");if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: "+t+" (not an integer)");if((t>>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var n,i=t;n=u.calculateUTF16asUTF8(s(e),this.noAssert)[1],t+=4+n;var o=this.buffer.byteLength;if(t>o&&this.resize((o*=2)>t?o:t),t-=4+n,this.view.setUint32(t,n,this.littleEndian),t+=4,u.encodeUTF16toUTF8(s(e),function(e){this.view.setUint8(t++,e)}.bind(this)),t!==i+4+n)throw RangeError("Illegal range: Truncated data, "+t+" == "+(t+4+n));return r?(this.offset=t,this):t-i},r.readIString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+4>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+4) <= "+this.buffer.byteLength)}var r,n,i=e;r=this.view.getUint32(e,this.littleEndian);var o,s=(e+=4)+r;return u.decodeUTF8toUTF16(function(){return e>>=0)<0||t+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+t+" (+0) <= "+this.buffer.byteLength)}var i=t;r=u.calculateUTF16asUTF8(s(e))[1],t+=r;var o=this.buffer.byteLength;return t>o&&this.resize((o*=2)>t?o:t),t-=r,u.encodeUTF16toUTF8(s(e),function(e){this.view.setUint8(t++,e)}.bind(this)),n?(this.offset=t,this):t-i},r.writeString=r.writeUTF8String,t.calculateUTF8Chars=function(e){return u.calculateUTF16asUTF8(s(e))[0]},t.calculateUTF8Bytes=function(e){return u.calculateUTF16asUTF8(s(e))[1]},r.readUTF8String=function(e,r,n){"number"==typeof r&&(n=r,r=void 0);var i=void 0===n;if(i&&(n=this.offset),void 0===r&&(r=t.METRICS_CHARS),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");if(e|=0,"number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}var o,s=0,f=n;if(r===t.METRICS_CHARS){if(o=a(),u.decodeUTF8(function(){return s>>=0)<0||n+e>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+"+e+") <= "+this.buffer.byteLength)}var c=n+e;if(u.decodeUTF8toUTF16(function(){return n>>=0)<0||r+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+r+" (+0) <= "+this.buffer.byteLength)}var i,o,a=r;i=u.calculateUTF16asUTF8(s(e),this.noAssert)[1],o=t.calculateVarint32(i),r+=o+i;var f=this.buffer.byteLength;if(r>f&&this.resize((f*=2)>r?f:r),r-=o+i,r+=this.writeVarint32(i,r),u.encodeUTF16toUTF8(s(e),function(e){this.view.setUint8(r++,e)}.bind(this)),r!==a+i+o)throw RangeError("Illegal range: Truncated data, "+r+" == "+(r+i+o));return n?(this.offset=r,this):r-a},r.readVString=function(e){var t=void 0===e;if(t&&(e=this.offset),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal offset: "+e+" (not an integer)");if((e>>>=0)<0||e+1>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+1) <= "+this.buffer.byteLength)}var r,n=this.readVarint32(e),i=e;e+=n.length,n=n.value;var o=e+n,s=a();return u.decodeUTF8toUTF16(function(){return e>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}e instanceof t||(e=t.wrap(e,r));var o=e.limit-e.offset;if(o<=0)return this;n+=o;var s=this.buffer.byteLength;return n>s&&this.resize((s*=2)>n?s:n),n-=o,new Uint8Array(this.buffer,n).set(new Uint8Array(e.buffer).subarray(e.offset,e.limit)),e.offset+=o,i&&(this.offset+=o),this},r.appendTo=function(e,t){return e.append(this,t),this},r.assert=function(e){return this.noAssert=!e,this},r.capacity=function(){return this.buffer.byteLength},r.clear=function(){return this.offset=0,this.limit=this.buffer.byteLength,this.markedOffset=-1,this},r.clone=function(e){var r=new t(0,this.littleEndian,this.noAssert);if(e){var n=new ArrayBuffer(this.buffer.byteLength);new Uint8Array(n).set(this.buffer),r.buffer=n,r.view=new DataView(n)}else r.buffer=this.buffer,r.view=this.view;return r.offset=this.offset,r.markedOffset=this.markedOffset,r.limit=this.limit,r},r.compact=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(0===e&&t===this.buffer.byteLength)return this;var r=t-e;if(0===r)return this.buffer=n,this.view=null,this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=0,this;var i=new ArrayBuffer(r);return new Uint8Array(i).set(new Uint8Array(this.buffer).subarray(e,t)),this.buffer=i,this.view=new DataView(i),this.markedOffset>=0&&(this.markedOffset-=e),this.offset=0,this.limit=r,this},r.copy=function(e,r){if(void 0===e&&(e=this.offset),void 0===r&&(r=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,e<0||e>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+r+" <= "+this.buffer.byteLength)}if(e===r)return new t(0,this.littleEndian,this.noAssert);var n=r-e,i=new t(n,this.littleEndian,this.noAssert);return i.offset=0,i.limit=n,i.markedOffset>=0&&(i.markedOffset-=e),this.copyTo(i,0,e,r),i},r.copyTo=function(e,r,n,i){var o,s;if(!this.noAssert&&!t.isByteBuffer(e))throw TypeError("Illegal target: Not a ByteBuffer");if(r=(s=void 0===r)?e.offset:0|r,n=(o=void 0===n)?this.offset:0|n,i=void 0===i?this.limit:0|i,r<0||r>e.buffer.byteLength)throw RangeError("Illegal target range: 0 <= "+r+" <= "+e.buffer.byteLength);if(n<0||i>this.buffer.byteLength)throw RangeError("Illegal source range: 0 <= "+n+" <= "+this.buffer.byteLength);var a=i-n;return 0===a?e:(e.ensureCapacity(r+a),new Uint8Array(e.buffer).set(new Uint8Array(this.buffer).subarray(n,i),r),o&&(this.offset+=a),s&&(e.offset+=a),this)},r.ensureCapacity=function(e){var t=this.buffer.byteLength;return te?t:e):this},r.fill=function(e,t,r){var n=void 0===t;if(n&&(t=this.offset),"string"==typeof e&&e.length>0&&(e=e.charCodeAt(0)),void 0===t&&(t=this.offset),void 0===r&&(r=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal value: "+e+" (not an integer)");if(e|=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal begin: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal end: Not an integer");if(r>>>=0,t<0||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(t>=r)return this;for(;t>>=0)<0||e+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+e+" (+0) <= "+this.buffer.byteLength)}return this.markedOffset=e,this},r.order=function(e){if(!this.noAssert&&"boolean"!=typeof e)throw TypeError("Illegal littleEndian: Not a boolean");return this.littleEndian=!!e,this},r.LE=function(e){return this.littleEndian=void 0===e||!!e,this},r.BE=function(e){return this.littleEndian=void 0!==e&&!e,this},r.prepend=function(e,r,n){"number"!=typeof r&&"string"==typeof r||(n=r,r=void 0);var i=void 0===n;if(i&&(n=this.offset),!this.noAssert){if("number"!=typeof n||n%1!=0)throw TypeError("Illegal offset: "+n+" (not an integer)");if((n>>>=0)<0||n+0>this.buffer.byteLength)throw RangeError("Illegal offset: 0 <= "+n+" (+0) <= "+this.buffer.byteLength)}e instanceof t||(e=t.wrap(e,r));var o=e.limit-e.offset;if(o<=0)return this;var s,a=o-n;if(a>0){var f=new ArrayBuffer(this.buffer.byteLength+a);(s=new Uint8Array(f)).set(new Uint8Array(this.buffer).subarray(n,this.buffer.byteLength),o),this.buffer=f,this.view=new DataView(f),this.offset+=a,this.markedOffset>=0&&(this.markedOffset+=a),this.limit+=a,n+=a}else s=new Uint8Array(this.buffer);return s.set(new Uint8Array(e.buffer).subarray(e.offset,e.limit),n-o),e.offset=e.limit,i&&(this.offset-=o),this},r.prependTo=function(e,t){return e.prepend(this,t),this},r.printDebug=function(e){"function"!=typeof e&&(e=console.log.bind(console)),e(this.toString()+"\n-------------------------------------------------------------------\n"+this.toDebug(!0))},r.remaining=function(){return this.limit-this.offset},r.reset=function(){return this.markedOffset>=0?(this.offset=this.markedOffset,this.markedOffset=-1):this.offset=0,this},r.resize=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal capacity: "+e+" (not an integer)");if((e|=0)<0)throw RangeError("Illegal capacity: 0 <= "+e)}if(this.buffer.byteLength>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}return e===t?this:(Array.prototype.reverse.call(new Uint8Array(this.buffer).subarray(e,t)),this.view=new DataView(this.buffer),this)},r.skip=function(e){if(!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal length: "+e+" (not an integer)");e|=0}var t=this.offset+e;if(!this.noAssert&&(t<0||t>this.buffer.byteLength))throw RangeError("Illegal length: 0 <= "+this.offset+" + "+e+" <= "+this.buffer.byteLength);return this.offset=t,this},r.slice=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r=this.clone();return r.offset=e,r.limit=t,r},r.toBuffer=function(e){var t=this.offset,r=this.limit;if(t>r){var i=t;t=r,r=i}if(!this.noAssert){if("number"!=typeof t||t%1!=0)throw TypeError("Illegal offset: Not an integer");if(t>>>=0,"number"!=typeof r||r%1!=0)throw TypeError("Illegal limit: Not an integer");if(r>>>=0,t<0||t>r||r>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+t+" <= "+r+" <= "+this.buffer.byteLength)}if(!e&&0===t&&r===this.buffer.byteLength)return this.buffer;if(t===r)return n;var o=new ArrayBuffer(r-t);return new Uint8Array(o).set(new Uint8Array(this.buffer).subarray(t,r),0),o},r.toArrayBuffer=r.toBuffer,r.toString=function(e,t,r){if(void 0===e)return"ByteBufferAB(offset="+this.offset+",markedOffset="+this.markedOffset+",limit="+this.limit+",capacity="+this.capacity()+")";switch("number"==typeof e&&(r=t=e="utf8"),e){case"utf8":return this.toUTF8(t,r);case"base64":return this.toBase64(t,r);case"hex":return this.toHex(t,r);case"binary":return this.toBinary(t,r);case"debug":return this.toDebug();case"columns":return this.toColumns();default:throw Error("Unsupported encoding: "+e)}};var f=function(){for(var e={},t=[65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56,57,43,47],r=[],n=0,i=t.length;n>2&63]),i=(3&n)<<4,null!==(n=e())?(r(t[63&((i|=n>>4&15)|n>>4&15)]),i=(15&n)<<2,null!==(n=e())?(r(t[63&(i|n>>6&3)]),r(t[63&n])):(r(t[63&i]),r(61))):(r(t[63&i]),r(61),r(61))},e.decode=function(e,t){var n,i,o;function s(e){throw Error("Illegal character code: "+e)}for(;null!==(n=e());)if(void 0===(i=r[n])&&s(n),null!==(n=e())&&(void 0===(o=r[n])&&s(n),t(i<<2>>>0|(48&o)>>4),null!==(n=e()))){if(void 0===(i=r[n])){if(61===n)break;s(n)}if(t((15&o)<<4>>>0|(60&i)>>2),null!==(n=e())){if(void 0===(o=r[n])){if(61===n)break;s(n)}t((3&i)<<6>>>0|o)}}},e.test=function(e){return/^(?:[A-Za-z0-9+\/]{4})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(e)},e}();r.toBase64=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r;return f.encode(function(){return e>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}if(e===t)return"";for(var r=[],n=[];e=1024&&(n.push(String.fromCharCode.apply(String,r)),r=[]);return n.join("")+String.fromCharCode.apply(String,r)},t.fromBinary=function(e,r,n){if(!n&&"string"!=typeof e)throw TypeError("Illegal str: Not a string");for(var i,o=0,s=e.length,a=new t(s,r,n);o255)throw RangeError("Illegal charCode at "+o+": 0 <= "+i+" <= 255");a.view.setUint8(o++,i)}return a.limit=s,a},r.toDebug=function(e){for(var t,r=-1,n=this.buffer.byteLength,i="",o="",s="";r32&&t<127?String.fromCharCode(t):".")),++r,e&&r>0&&r%16==0&&r!==n){for(;i.length<51;)i+=" ";s+=i+o+"\n",i=o=""}r===this.offset&&r===this.limit?i+=r===this.markedOffset?"!":"|":r===this.offset?i+=r===this.markedOffset?"[":"<":r===this.limit?i+=r===this.markedOffset?"]":">":i+=r===this.markedOffset?"'":e||0!==r&&r!==n?" ":""}if(e&&" "!==i){for(;i.length<51;)i+=" ";s+=i+o+"\n"}return e?s:i},t.fromDebug=function(e,r,n){for(var i,o,s=e.length,a=new t((s+1)/3|0,r,n),f=0,u=0,c=!1,h=!1,l=!1,p=!1,d=!1;f":if(!n){if(p){d=!0;break}p=!0}a.limit=u,c=!1;break;case"'":if(!n){if(l){d=!0;break}l=!0}a.markedOffset=u,c=!1;break;case" ":c=!1;break;default:if(!n&&c){d=!0;break}if(o=parseInt(i+e.charAt(f++),16),!n&&(isNaN(o)||o<0||o>255))throw TypeError("Illegal str: Not a debug encoded string");a.view.setUint8(u++,o),c=!0}if(d)throw TypeError("Illegal str: Invalid symbol at "+f)}if(!n){if(!h||!p)throw TypeError("Illegal str: Missing offset or limit");if(u>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}for(var r,n=new Array(t-e);e255))throw TypeError("Illegal str: Contains non-hex characters");s.view.setUint8(f++,i)}return s.limit=f,s};var u=function(){var e={MAX_CODEPOINT:1114111,encodeUTF8:function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)r<128?t(127&r):r<2048?(t(r>>6&31|192),t(63&r|128)):r<65536?(t(r>>12&15|224),t(r>>6&63|128),t(63&r|128)):(t(r>>18&7|240),t(r>>12&63|128),t(r>>6&63|128),t(63&r|128)),r=null},decodeUTF8:function(e,t){for(var r,n,i,o,s=function(e){e=e.slice(0,e.indexOf(null));var t=Error(e.toString());throw t.name="TruncatedError",t.bytes=e,t};null!==(r=e());)if(0==(128&r))t(r);else if(192==(224&r))null===(n=e())&&s([r,n]),t((31&r)<<6|63&n);else if(224==(240&r))(null===(n=e())||null===(i=e()))&&s([r,n,i]),t((15&r)<<12|(63&n)<<6|63&i);else{if(240!=(248&r))throw RangeError("Illegal starting byte: "+r);(null===(n=e())||null===(i=e())||null===(o=e()))&&s([r,n,i,o]),t((7&r)<<18|(63&n)<<12|(63&i)<<6|63&o)}},UTF16toUTF8:function(e,t){for(var r,n=null;null!==(r=null!==n?n:e());)r>=55296&&r<=57343&&null!==(n=e())&&n>=56320&&n<=57343?(t(1024*(r-55296)+n-56320+65536),n=null):t(r);null!==n&&t(n)},UTF8toUTF16:function(e,t){var r=null;for("number"==typeof e&&(r=e,e=function(){return null});null!==r||null!==(r=e());)r<=65535?t(r):(t(55296+((r-=65536)>>10)),t(r%1024+56320)),r=null},encodeUTF16toUTF8:function(t,r){e.UTF16toUTF8(t,function(t){e.encodeUTF8(t,r)})},decodeUTF8toUTF16:function(t,r){e.decodeUTF8(t,function(t){e.UTF8toUTF16(t,r)})},calculateCodePoint:function(e){return e<128?1:e<2048?2:e<65536?3:4},calculateUTF8:function(t){for(var r,n=0;null!==(r=t());)n+=e.calculateCodePoint(r);return n},calculateUTF16asUTF8:function(t){var r=0,n=0;return e.UTF16toUTF8(t,function(t){++r,n+=e.calculateCodePoint(t)}),[r,n]}};return e}();return r.toUTF8=function(e,t){if(void 0===e&&(e=this.offset),void 0===t&&(t=this.limit),!this.noAssert){if("number"!=typeof e||e%1!=0)throw TypeError("Illegal begin: Not an integer");if(e>>>=0,"number"!=typeof t||t%1!=0)throw TypeError("Illegal end: Not an integer");if(t>>>=0,e<0||e>t||t>this.buffer.byteLength)throw RangeError("Illegal range: 0 <= "+e+" <= "+t+" <= "+this.buffer.byteLength)}var r;try{u.decodeUTF8toUTF16(function(){return e - * Released under the Apache License, Version 2.0 - * see: https://github.com/dcodeIO/Long.js for details - */i=[],void 0===(o="function"==typeof(n=function(){"use strict";function e(e,t,r){this.low=0|e,this.high=0|t,this.unsigned=!!r}e.__isLong__,Object.defineProperty(e.prototype,"__isLong__",{value:!0,enumerable:!1,configurable:!1}),e.isLong=function(e){return!0===(e&&e.__isLong__)};var t={},r={};e.fromInt=function(n,i){var o,s;return i?0<=(n>>>=0)&&n<256&&(s=r[n])?s:(o=new e(n,(0|n)<0?-1:0,!0),0<=n&&n<256&&(r[n]=o),o):-128<=(n|=0)&&n<128&&(s=t[n])?s:(o=new e(n,n<0?-1:0,!1),-128<=n&&n<128&&(t[n]=o),o)},e.fromNumber=function(t,r){return r=!!r,isNaN(t)||!isFinite(t)?e.ZERO:!r&&t<=-o?e.MIN_VALUE:!r&&t+1>=o?e.MAX_VALUE:r&&t>=i?e.MAX_UNSIGNED_VALUE:t<0?e.fromNumber(-t,r).negate():new e(t%n|0,t/n|0,r)},e.fromBits=function(t,r,n){return new e(t,r,n)},e.fromString=function(t,r,n){if(0===t.length)throw Error("number format error: empty string");if("NaN"===t||"Infinity"===t||"+Infinity"===t||"-Infinity"===t)return e.ZERO;if("number"==typeof r&&(n=r,r=!1),(n=n||10)<2||360)throw Error('number format error: interior "-" character: '+t);if(0===i)return e.fromString(t.substring(1),r,n).negate();for(var o=e.fromNumber(Math.pow(n,8)),s=e.ZERO,a=0;a>>0:this.low},e.prototype.toNumber=function(){return this.unsigned?(this.high>>>0)*n+(this.low>>>0):this.high*n+(this.low>>>0)},e.prototype.toString=function(t){if((t=t||10)<2||36>>0).toString(t);if((r=a).isZero())return f+s;for(;f.length<6;)f="0"+f;s=""+f+s}},e.prototype.getHighBits=function(){return this.high},e.prototype.getHighBitsUnsigned=function(){return this.high>>>0},e.prototype.getLowBits=function(){return this.low},e.prototype.getLowBitsUnsigned=function(){return this.low>>>0},e.prototype.getNumBitsAbs=function(){if(this.isNegative())return this.equals(e.MIN_VALUE)?64:this.negate().getNumBitsAbs();for(var t=0!=this.high?this.high:this.low,r=31;r>0&&0==(t&1<=0},e.prototype.isOdd=function(){return 1==(1&this.low)},e.prototype.isEven=function(){return 0==(1&this.low)},e.prototype.equals=function(t){return e.isLong(t)||(t=e.fromValue(t)),(this.unsigned===t.unsigned||this.high>>>31!=1||t.high>>>31!=1)&&this.high===t.high&&this.low===t.low},e.eq=e.prototype.equals,e.prototype.notEquals=function(e){return!this.equals(e)},e.neq=e.prototype.notEquals,e.prototype.lessThan=function(e){return this.compare(e)<0},e.prototype.lt=e.prototype.lessThan,e.prototype.lessThanOrEqual=function(e){return this.compare(e)<=0},e.prototype.lte=e.prototype.lessThanOrEqual,e.prototype.greaterThan=function(e){return this.compare(e)>0},e.prototype.gt=e.prototype.greaterThan,e.prototype.greaterThanOrEqual=function(e){return this.compare(e)>=0},e.prototype.gte=e.prototype.greaterThanOrEqual,e.prototype.compare=function(t){if(e.isLong(t)||(t=e.fromValue(t)),this.equals(t))return 0;var r=this.isNegative(),n=t.isNegative();return r&&!n?-1:!r&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.subtract(t).isNegative()?-1:1},e.prototype.negate=function(){return!this.unsigned&&this.equals(e.MIN_VALUE)?e.MIN_VALUE:this.not().add(e.ONE)},e.prototype.neg=e.prototype.negate,e.prototype.add=function(t){e.isLong(t)||(t=e.fromValue(t));var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,s=t.high>>>16,a=65535&t.high,f=t.low>>>16,u=0,c=0,h=0,l=0;return h+=(l+=o+(65535&t.low))>>>16,l&=65535,c+=(h+=i+f)>>>16,h&=65535,u+=(c+=n+a)>>>16,c&=65535,u+=r+s,u&=65535,e.fromBits(h<<16|l,u<<16|c,this.unsigned)},e.prototype.subtract=function(t){return e.isLong(t)||(t=e.fromValue(t)),this.add(t.negate())},e.prototype.sub=e.prototype.subtract,e.prototype.multiply=function(t){if(this.isZero())return e.ZERO;if(e.isLong(t)||(t=e.fromValue(t)),t.isZero())return e.ZERO;if(this.equals(e.MIN_VALUE))return t.isOdd()?e.MIN_VALUE:e.ZERO;if(t.equals(e.MIN_VALUE))return this.isOdd()?e.MIN_VALUE:e.ZERO;if(this.isNegative())return t.isNegative()?this.negate().multiply(t.negate()):this.negate().multiply(t).negate();if(t.isNegative())return this.multiply(t.negate()).negate();if(this.lessThan(s)&&t.lessThan(s))return e.fromNumber(this.toNumber()*t.toNumber(),this.unsigned);var r=this.high>>>16,n=65535&this.high,i=this.low>>>16,o=65535&this.low,a=t.high>>>16,f=65535&t.high,u=t.low>>>16,c=65535&t.low,h=0,l=0,p=0,d=0;return p+=(d+=o*c)>>>16,d&=65535,l+=(p+=i*c)>>>16,p&=65535,l+=(p+=o*u)>>>16,p&=65535,h+=(l+=n*c)>>>16,l&=65535,h+=(l+=i*u)>>>16,l&=65535,h+=(l+=o*f)>>>16,l&=65535,h+=r*c+n*u+i*f+o*a,h&=65535,e.fromBits(p<<16|d,h<<16|l,this.unsigned)},e.prototype.mul=e.prototype.multiply,e.prototype.divide=function(t){if(e.isLong(t)||(t=e.fromValue(t)),t.isZero())throw new Error("division by zero");if(this.isZero())return this.unsigned?e.UZERO:e.ZERO;var r,n,i;if(this.equals(e.MIN_VALUE))return t.equals(e.ONE)||t.equals(e.NEG_ONE)?e.MIN_VALUE:t.equals(e.MIN_VALUE)?e.ONE:(r=this.shiftRight(1).divide(t).shiftLeft(1)).equals(e.ZERO)?t.isNegative()?e.ONE:e.NEG_ONE:(n=this.subtract(t.multiply(r)),i=r.add(n.divide(t)));if(t.equals(e.MIN_VALUE))return this.unsigned?e.UZERO:e.ZERO;if(this.isNegative())return t.isNegative()?this.negate().divide(t.negate()):this.negate().divide(t).negate();if(t.isNegative())return this.divide(t.negate()).negate();for(i=e.ZERO,n=this;n.greaterThanOrEqual(t);){r=Math.max(1,Math.floor(n.toNumber()/t.toNumber()));for(var o=Math.ceil(Math.log(r)/Math.LN2),s=o<=48?1:Math.pow(2,o-48),a=e.fromNumber(r),f=a.multiply(t);f.isNegative()||f.greaterThan(n);)r-=s,f=(a=e.fromNumber(r,this.unsigned)).multiply(t);a.isZero()&&(a=e.ONE),i=i.add(a),n=n.subtract(f)}return i},e.prototype.div=e.prototype.divide,e.prototype.modulo=function(t){return e.isLong(t)||(t=e.fromValue(t)),this.subtract(this.divide(t).multiply(t))},e.prototype.mod=e.prototype.modulo,e.prototype.not=function(){return e.fromBits(~this.low,~this.high,this.unsigned)},e.prototype.and=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low&t.low,this.high&t.high,this.unsigned)},e.prototype.or=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low|t.low,this.high|t.high,this.unsigned)},e.prototype.xor=function(t){return e.isLong(t)||(t=e.fromValue(t)),e.fromBits(this.low^t.low,this.high^t.high,this.unsigned)},e.prototype.shiftLeft=function(t){return e.isLong(t)&&(t=t.toInt()),0==(t&=63)?this:t<32?e.fromBits(this.low<>>32-t,this.unsigned):e.fromBits(0,this.low<>>t|this.high<<32-t,this.high>>t,this.unsigned):e.fromBits(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},e.prototype.shr=e.prototype.shiftRight,e.prototype.shiftRightUnsigned=function(t){if(e.isLong(t)&&(t=t.toInt()),0==(t&=63))return this;var r=this.high;if(t<32){var n=this.low;return e.fromBits(n>>>t|r<<32-t,r>>>t,this.unsigned)}return 32===t?e.fromBits(r,0,this.unsigned):e.fromBits(r>>>t-32,0,this.unsigned)},e.prototype.shru=e.prototype.shiftRightUnsigned,e.prototype.toSigned=function(){return this.unsigned?new e(this.low,this.high,!1):this},e.prototype.toUnsigned=function(){return this.unsigned?this:new e(this.low,this.high,!0)},e})?n.apply(t,i):n)||(e.exports=o)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.protocolToJSON=function(e){var t=i(e.file[2]);return t.imports=[i(e.file[1])],t};var n=r(192);function i(e){var t={};t.package=e.package,t.options=e.options,t.services=[];var r=Object.values(e.message_type).map(a),n=function(e){var t={};return Object.values(e).forEach(function(e){var r=e.extendee.slice(1);null==t[r]&&(t[r]={},t[r].ref=r,t[r].fields=[]),t[r].fields.push(u(e))}),Object.values(t)}(e.extension);return t.messages=n.concat(r),t.enums=Object.values(e.enum_type).map(o),t}function o(e){var t={};return t.name=e.name,t.values=Object.values(e.value).map(s),t.options={},t}function s(e){var t={};return t.name=e.name,t.id=e.number,t}function a(e){var t={enums:[]};return t.name=e.name,t.options=e.options||{},t.messages=[],t.fields=Object.values(e.field).map(u),t.oneofs={},t}Object.values||(0,n.shim)();var f={1:"double",2:"float",3:"int64",4:"uint64",5:"int32",6:"fixed64",7:"fixed32",8:"bool",9:"string",10:"group",11:"message",12:"bytes",13:"uint32",14:"enum",15:"sfixed32",16:"sfixed64",17:"sint32",18:"sint64"};function u(e){var t={};return 1===e.label&&(t.rule="optional"),2===e.label&&(t.rule="required"),3===e.label&&(t.rule="repeated"),t.type=f[e.type],e.type_name&&(t.type=e.type_name.slice(1)),t.name=e.name,t.options=e.options||{},t.id=e.number,t}},function(e,t,r){"use strict";var n=r(94),i=r(95),o=r(103),s=r(209),a=o();n(a,{getPolyfill:o,implementation:i,shim:s}),e.exports=a},function(e,t,r){"use strict";var n=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Array.prototype.slice,s=r(194),a=Object.prototype.propertyIsEnumerable,f=!a.call({toString:null},"toString"),u=a.call(function(){},"prototype"),c=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],h=function(e){var t=e.constructor;return t&&t.prototype===e},l={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},p=function(){if("undefined"==typeof window)return!1;for(var e in window)try{if(!l["$"+e]&&n.call(window,e)&&null!==window[e]&&"object"==typeof window[e])try{h(window[e])}catch(e){return!0}}catch(e){return!0}return!1}(),d=function(e){var t=null!==e&&"object"==typeof e,r="[object Function]"===i.call(e),o=s(e),a=t&&"[object String]"===i.call(e),l=[];if(!t&&!r&&!o)throw new TypeError("Object.keys called on a non-object");var d=u&&r;if(a&&e.length>0&&!n.call(e,0))for(var g=0;g0)for(var y=0;y=0&&"[object Function]"===n.call(e.callee)),r}},function(e,t,r){"use strict";e.exports=r(196)},function(e,t,r){"use strict";var n=r(197),i=r(100),o=i(i({},n),{SameValueNonNumber:function(e,t){if("number"==typeof e||typeof e!=typeof t)throw new TypeError("SameValueNonNumber requires two non-number values of the same type.");return this.SameValue(e,t)}});e.exports=o},function(e,t,r){"use strict";var n=r(31),i=r(199),o=r(97),s=o("%TypeError%"),a=o("%SyntaxError%"),f=o("%Array%"),u=o("%String%"),c=o("%Object%"),h=o("%Number%"),l=o("%Symbol%",!0),p=o("%RegExp%"),d=!!l,g=r(98),y=r(99),b=h.MAX_SAFE_INTEGER||Math.pow(2,53)-1,v=r(100),m=r(101),w=r(102),_=r(205),E=parseInt,A=r(32),I=A.call(Function.call,f.prototype.slice),S=A.call(Function.call,u.prototype.slice),T=A.call(Function.call,p.prototype.test,/^0b[01]+$/i),C=A.call(Function.call,p.prototype.test,/^0o[0-7]+$/i),O=A.call(Function.call,p.prototype.exec),P=new p("["+["…","​","￾"].join("")+"]","g"),k=A.call(Function.call,p.prototype.test,P),x=A.call(Function.call,p.prototype.test,/^[-+]0x[0-9a-f]+$/i),B=A.call(Function.call,u.prototype.charCodeAt),D=A.call(Function.call,Object.prototype.toString),N=Math.floor,U=Math.abs,L=Object.create,R=c.getOwnPropertyDescriptor,M=c.isExtensible,j=["\t\n\v\f\r   ᠎    ","          \u2028","\u2029\ufeff"].join(""),F=new RegExp("(^["+j+"]+)|(["+j+"]+$)","g"),H=A.call(Function.call,u.prototype.replace),Q=r(206),q=r(208),z=v(v({},Q),{Call:function(e,t){var r=arguments.length>2?arguments[2]:[];if(!this.IsCallable(e))throw new s(e+" is not a function");return e.apply(t,r)},ToPrimitive:i,ToNumber:function(e){var t=_(e)?e:i(e,h);if("symbol"==typeof t)throw new s("Cannot convert a Symbol value to a number");if("string"==typeof t){if(T(t))return this.ToNumber(E(S(t,2),2));if(C(t))return this.ToNumber(E(S(t,2),8));if(k(t)||x(t))return NaN;var r=function(e){return H(e,F,"")}(t);if(r!==t)return this.ToNumber(r)}return h(t)},ToInt16:function(e){var t=this.ToUint16(e);return t>=32768?t-65536:t},ToInt8:function(e){var t=this.ToUint8(e);return t>=128?t-256:t},ToUint8:function(e){var t=this.ToNumber(e);if(g(t)||0===t||!y(t))return 0;var r=m(t)*N(U(t));return w(r,256)},ToUint8Clamp:function(e){var t=this.ToNumber(e);if(g(t)||t<=0)return 0;if(t>=255)return 255;var r=N(e);return r+.5b?b:t},CanonicalNumericIndexString:function(e){if("[object String]"!==D(e))throw new s("must be a string");if("-0"===e)return-0;var t=this.ToNumber(e);return this.SameValue(this.ToString(t),e)?t:void 0},RequireObjectCoercible:Q.CheckObjectCoercible,IsArray:f.isArray||function(e){return"[object Array]"===D(e)},IsConstructor:function(e){return"function"==typeof e&&!!e.prototype},IsExtensible:Object.preventExtensions?function(e){return!_(e)&&M(e)}:function(e){return!0},IsInteger:function(e){if("number"!=typeof e||g(e)||!y(e))return!1;var t=U(e);return N(t)===t},IsPropertyKey:function(e){return"string"==typeof e||"symbol"==typeof e},IsRegExp:function(e){if(!e||"object"!=typeof e)return!1;if(d){var t=e[l.match];if(void 0!==t)return Q.ToBoolean(t)}return q(e)},SameValueZero:function(e,t){return e===t||g(e)&&g(t)},GetV:function(e,t){if(!this.IsPropertyKey(t))throw new s("Assertion failed: IsPropertyKey(P) is not true");return this.ToObject(e)[t]},GetMethod:function(e,t){if(!this.IsPropertyKey(t))throw new s("Assertion failed: IsPropertyKey(P) is not true");var r=this.GetV(e,t);if(null!=r){if(!this.IsCallable(r))throw new s(t+"is not a function");return r}},Get:function(e,t){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(O) is not Object");if(!this.IsPropertyKey(t))throw new s("Assertion failed: IsPropertyKey(P) is not true");return e[t]},Type:function(e){return"symbol"==typeof e?"Symbol":Q.Type(e)},SpeciesConstructor:function(e,t){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(O) is not Object");var r=e.constructor;if(void 0===r)return t;if("Object"!==this.Type(r))throw new s("O.constructor is not an Object");var n=d&&l.species?r[l.species]:void 0;if(null==n)return t;if(this.IsConstructor(n))return n;throw new s("no constructor found")},CompletePropertyDescriptor:function(e){if(!this.IsPropertyDescriptor(e))throw new s("Desc must be a Property Descriptor");return this.IsGenericDescriptor(e)||this.IsDataDescriptor(e)?(n(e,"[[Value]]")||(e["[[Value]]"]=void 0),n(e,"[[Writable]]")||(e["[[Writable]]"]=!1)):(n(e,"[[Get]]")||(e["[[Get]]"]=void 0),n(e,"[[Set]]")||(e["[[Set]]"]=void 0)),n(e,"[[Enumerable]]")||(e["[[Enumerable]]"]=!1),n(e,"[[Configurable]]")||(e["[[Configurable]]"]=!1),e},Set:function(e,t,r,n){if("Object"!==this.Type(e))throw new s("O must be an Object");if(!this.IsPropertyKey(t))throw new s("P must be a Property Key");if("Boolean"!==this.Type(n))throw new s("Throw must be a Boolean");if(n)return e[t]=r,!0;try{e[t]=r}catch(e){return!1}},HasOwnProperty:function(e,t){if("Object"!==this.Type(e))throw new s("O must be an Object");if(!this.IsPropertyKey(t))throw new s("P must be a Property Key");return n(e,t)},HasProperty:function(e,t){if("Object"!==this.Type(e))throw new s("O must be an Object");if(!this.IsPropertyKey(t))throw new s("P must be a Property Key");return t in e},IsConcatSpreadable:function(e){if("Object"!==this.Type(e))return!1;if(d&&"symbol"==typeof l.isConcatSpreadable){var t=this.Get(e,Symbol.isConcatSpreadable);if(void 0!==t)return this.ToBoolean(t)}return this.IsArray(e)},Invoke:function(e,t){if(!this.IsPropertyKey(t))throw new s("P must be a Property Key");var r=I(arguments,2),n=this.GetV(e,t);return this.Call(n,e,r)},GetIterator:function(e,t){if(!d)throw new SyntaxError("ES.GetIterator depends on native iterator support.");var r=t;arguments.length<2&&(r=this.GetMethod(e,l.iterator));var n=this.Call(r,e);if("Object"!==this.Type(n))throw new s("iterator must return an object");return n},IteratorNext:function(e,t){var r=this.Invoke(e,"next",arguments.length<2?[]:[t]);if("Object"!==this.Type(r))throw new s("iterator next must return an object");return r},IteratorComplete:function(e){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(iterResult) is not Object");return this.ToBoolean(this.Get(e,"done"))},IteratorValue:function(e){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(iterResult) is not Object");return this.Get(e,"value")},IteratorStep:function(e){var t=this.IteratorNext(e);return!0!==this.IteratorComplete(t)&&t},IteratorClose:function(e,t){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(iterator) is not Object");if(!this.IsCallable(t))throw new s("Assertion failed: completion is not a thunk for a Completion Record");var r,n=t,i=this.GetMethod(e,"return");if(void 0===i)return n();try{var o=this.Call(i,e,[])}catch(e){throw r=n(),n=null,e}if(r=n(),n=null,"Object"!==this.Type(o))throw new s("iterator .return must return an object");return r},CreateIterResultObject:function(e,t){if("Boolean"!==this.Type(t))throw new s("Assertion failed: Type(done) is not Boolean");return{value:e,done:t}},RegExpExec:function(e,t){if("Object"!==this.Type(e))throw new s("R must be an Object");if("String"!==this.Type(t))throw new s("S must be a String");var r=this.Get(e,"exec");if(this.IsCallable(r)){var n=this.Call(r,e,[t]);if(null===n||"Object"===this.Type(n))return n;throw new s('"exec" method must return `null` or an Object')}return O(e,t)},ArraySpeciesCreate:function(e,t){if(!this.IsInteger(t)||t<0)throw new s("Assertion failed: length must be an integer >= 0");var r,n=0===t?0:t;if(this.IsArray(e)&&(r=this.Get(e,"constructor"),"Object"===this.Type(r)&&d&&l.species&&null===(r=this.Get(r,l.species))&&(r=void 0)),void 0===r)return f(n);if(!this.IsConstructor(r))throw new s("C must be a constructor");return new r(n)},CreateDataProperty:function(e,t,r){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(O) is not Object");if(!this.IsPropertyKey(t))throw new s("Assertion failed: IsPropertyKey(P) is not true");var n=R(e,t),i=n||"function"!=typeof M||M(e);if(n&&(!n.writable||!n.configurable)||!i)return!1;var o={configurable:!0,enumerable:!0,value:r,writable:!0};return Object.defineProperty(e,t,o),!0},CreateDataPropertyOrThrow:function(e,t,r){if("Object"!==this.Type(e))throw new s("Assertion failed: Type(O) is not Object");if(!this.IsPropertyKey(t))throw new s("Assertion failed: IsPropertyKey(P) is not true");var n=this.CreateDataProperty(e,t,r);if(!n)throw new s("unable to create data property");return n},ObjectCreate:function(e,t){if(null!==e&&"Object"!==this.Type(e))throw new s("Assertion failed: proto must be null or an object");if((arguments.length<2?[]:t).length>0)throw new a("es-abstract does not yet support internal slots");if(null===e&&!L)throw new a("native Object.create support is required to create null objects");return L(e)},AdvanceStringIndex:function(e,t,r){if("String"!==this.Type(e))throw new s("S must be a String");if(!this.IsInteger(t)||t<0||t>b)throw new s("Assertion failed: length must be an integer >= 0 and <= 2**53");if("Boolean"!==this.Type(r))throw new s("Assertion failed: unicode must be a Boolean");if(!r)return t+1;if(t+1>=e.length)return t+1;var n=B(e,t);if(n<55296||n>56319)return t+1;var i=B(e,t+1);return i<56320||i>57343?t+1:t+2}});delete z.CheckObjectCoercible,e.exports=z},function(e,t,r){"use strict";var n=Array.prototype.slice,i=Object.prototype.toString;e.exports=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==i.call(t))throw new TypeError("Function.prototype.bind called on incompatible "+t);for(var r,o=n.call(arguments,1),s=Math.max(0,t.length-o.length),a=[],f=0;f1&&(arguments[1]===String?r="string":arguments[1]===Number&&(r="number")),n&&(Symbol.toPrimitive?t=function(e,t){var r=e[t];if(null!=r){if(!o(r))throw new TypeError(r+" returned for property "+t+" of object "+e+" is not a function");return r}}(e,Symbol.toPrimitive):a(e)&&(t=Symbol.prototype.valueOf)),void 0!==t){var f=t.call(e,r);if(i(f))return f;throw new TypeError("unable to convert exotic object to primitive")}return"default"===r&&(s(e)||a(e))&&(r="string"),function(e,t){if(null==e)throw new TypeError("Cannot call method on "+e);if("string"!=typeof t||"number"!==t&&"string"!==t)throw new TypeError('hint must be "string" or "number"');var r,n,s,a="string"===t?["toString","valueOf"]:["valueOf","toString"];for(s=0;s>0},ToUint32:function(e){return this.ToNumber(e)>>>0},ToUint16:function(e){var t=this.ToNumber(e);if(a(t)||0===t||!f(t))return 0;var r=u(t)*Math.floor(Math.abs(t));return c(r,65536)},ToString:function(e){return s(e)},ToObject:function(e){return this.CheckObjectCoercible(e),i(e)},CheckObjectCoercible:function(e,t){if(null==e)throw new o(t||"Cannot call method on "+e);return e},IsCallable:h,SameValue:function(e,t){return e===t?0!==e||1/e==1/t:a(e)&&a(t)},Type:function(e){return null===e?"Null":void 0===e?"Undefined":"function"==typeof e||"object"==typeof e?"Object":"number"==typeof e?"Number":"boolean"==typeof e?"Boolean":"string"==typeof e?"String":void 0},IsPropertyDescriptor:function(e){if("Object"!==this.Type(e))return!1;var t={"[[Configurable]]":!0,"[[Enumerable]]":!0,"[[Get]]":!0,"[[Set]]":!0,"[[Value]]":!0,"[[Writable]]":!0};for(var r in e)if(p(e,r)&&!t[r])return!1;var n=p(e,"[[Value]]"),i=p(e,"[[Get]]")||p(e,"[[Set]]");if(n&&i)throw new o("Property Descriptors may not be both accessor and data descriptors");return!0},IsAccessorDescriptor:function(e){if(void 0===e)return!1;if(!this.IsPropertyDescriptor(e))throw new o("Desc must be a Property Descriptor");return!(!p(e,"[[Get]]")&&!p(e,"[[Set]]"))},IsDataDescriptor:function(e){if(void 0===e)return!1;if(!this.IsPropertyDescriptor(e))throw new o("Desc must be a Property Descriptor");return!(!p(e,"[[Value]]")&&!p(e,"[[Writable]]"))},IsGenericDescriptor:function(e){if(void 0===e)return!1;if(!this.IsPropertyDescriptor(e))throw new o("Desc must be a Property Descriptor");return!this.IsAccessorDescriptor(e)&&!this.IsDataDescriptor(e)},FromPropertyDescriptor:function(e){if(void 0===e)return e;if(!this.IsPropertyDescriptor(e))throw new o("Desc must be a Property Descriptor");if(this.IsDataDescriptor(e))return{value:e["[[Value]]"],writable:!!e["[[Writable]]"],enumerable:!!e["[[Enumerable]]"],configurable:!!e["[[Configurable]]"]};if(this.IsAccessorDescriptor(e))return{get:e["[[Get]]"],set:e["[[Set]]"],enumerable:!!e["[[Enumerable]]"],configurable:!!e["[[Configurable]]"]};throw new o("FromPropertyDescriptor must be called with a fully populated Property Descriptor")},ToPropertyDescriptor:function(e){if("Object"!==this.Type(e))throw new o("ToPropertyDescriptor requires an object");var t={};if(p(e,"enumerable")&&(t["[[Enumerable]]"]=this.ToBoolean(e.enumerable)),p(e,"configurable")&&(t["[[Configurable]]"]=this.ToBoolean(e.configurable)),p(e,"value")&&(t["[[Value]]"]=e.value),p(e,"writable")&&(t["[[Writable]]"]=this.ToBoolean(e.writable)),p(e,"get")){var r=e.get;if(void 0!==r&&!this.IsCallable(r))throw new TypeError("getter must be a function");t["[[Get]]"]=r}if(p(e,"set")){var n=e.set;if(void 0!==n&&!this.IsCallable(n))throw new o("setter must be a function");t["[[Set]]"]=n}if((p(t,"[[Get]]")||p(t,"[[Set]]"))&&(p(t,"[[Value]]")||p(t,"[[Writable]]")))throw new o("Invalid property descriptor. Cannot both specify accessors and a value or writable attribute");return t}};e.exports=d},function(e,t,r){"use strict";var n=Object.prototype.toString,i=r(96),o=r(51),s=function(e){var t;if((t=arguments.length>1?arguments[1]:"[object Date]"===n.call(e)?String:Number)===String||t===Number){var r,s,a=t===String?["toString","valueOf"]:["valueOf","toString"];for(s=0;s1?s(e,arguments[1]):s(e)}},function(e,t,r){"use strict";var n=r(31),i=RegExp.prototype.exec,o=Object.getOwnPropertyDescriptor,s=Object.prototype.toString,a="function"==typeof Symbol&&"symbol"==typeof Symbol.toStringTag;e.exports=function(e){if(!e||"object"!=typeof e)return!1;if(!a)return"[object RegExp]"===s.call(e);var t=o(e,"lastIndex");return!(!t||!n(t,"value"))&&function(e){try{var t=e.lastIndex;return e.lastIndex=0,i.call(e),!0}catch(e){return!1}finally{e.lastIndex=t}}(e)}},function(e,t,r){"use strict";var n=r(103),i=r(94);e.exports=function(){var e=n();return i(Object,{values:e},{values:function(){return Object.values!==e}}),e}},function(e,t,r){"use strict";e.exports=r(12).newBuilder({}).import({package:null,messages:[{name:"DeviceDescriptor",fields:[{rule:"optional",options:{},type:"uint32",name:"vendor_id",id:1},{rule:"optional",options:{},type:"uint32",name:"product_id",id:2},{rule:"optional",options:{},type:"string",name:"serial_number",id:3},{rule:"optional",options:{},type:"string",name:"path",id:4}],enums:[],messages:[],options:{},oneofs:{}},{name:"Configuration",fields:[{rule:"repeated",options:{},type:"string",name:"whitelist_urls",id:1},{rule:"repeated",options:{},type:"string",name:"blacklist_urls",id:2},{rule:"required",options:{},type:"google.protobuf.FileDescriptorSet",name:"wire_protocol",id:3},{rule:"repeated",options:{},type:"DeviceDescriptor",name:"known_devices",id:4},{rule:"optional",options:{},type:"uint32",name:"valid_until",id:5}],enums:[],messages:[],options:{},oneofs:{}}],enums:[],imports:[{package:"google.protobuf",messages:[{name:"FileDescriptorSet",fields:[{rule:"repeated",options:{},type:"FileDescriptorProto",name:"file",id:1}],enums:[],messages:[],options:{},oneofs:{}},{name:"FileDescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"optional",options:{},type:"string",name:"package",id:2},{rule:"repeated",options:{},type:"string",name:"dependency",id:3},{rule:"repeated",options:{},type:"int32",name:"public_dependency",id:10},{rule:"repeated",options:{},type:"int32",name:"weak_dependency",id:11},{rule:"repeated",options:{},type:"DescriptorProto",name:"message_type",id:4},{rule:"repeated",options:{},type:"EnumDescriptorProto",name:"enum_type",id:5},{rule:"repeated",options:{},type:"ServiceDescriptorProto",name:"service",id:6},{rule:"repeated",options:{},type:"FieldDescriptorProto",name:"extension",id:7},{rule:"optional",options:{},type:"FileOptions",name:"options",id:8},{rule:"optional",options:{},type:"SourceCodeInfo",name:"source_code_info",id:9}],enums:[],messages:[],options:{},oneofs:{}},{name:"DescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"repeated",options:{},type:"FieldDescriptorProto",name:"field",id:2},{rule:"repeated",options:{},type:"FieldDescriptorProto",name:"extension",id:6},{rule:"repeated",options:{},type:"DescriptorProto",name:"nested_type",id:3},{rule:"repeated",options:{},type:"EnumDescriptorProto",name:"enum_type",id:4},{rule:"repeated",options:{},type:"ExtensionRange",name:"extension_range",id:5},{rule:"optional",options:{},type:"MessageOptions",name:"options",id:7}],enums:[],messages:[{name:"ExtensionRange",fields:[{rule:"optional",options:{},type:"int32",name:"start",id:1},{rule:"optional",options:{},type:"int32",name:"end",id:2}],enums:[],messages:[],options:{},oneofs:{}}],options:{},oneofs:{}},{name:"FieldDescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"optional",options:{},type:"int32",name:"number",id:3},{rule:"optional",options:{},type:"Label",name:"label",id:4},{rule:"optional",options:{},type:"Type",name:"type",id:5},{rule:"optional",options:{},type:"string",name:"type_name",id:6},{rule:"optional",options:{},type:"string",name:"extendee",id:2},{rule:"optional",options:{},type:"string",name:"default_value",id:7},{rule:"optional",options:{},type:"FieldOptions",name:"options",id:8}],enums:[{name:"Type",values:[{name:"TYPE_DOUBLE",id:1},{name:"TYPE_FLOAT",id:2},{name:"TYPE_INT64",id:3},{name:"TYPE_UINT64",id:4},{name:"TYPE_INT32",id:5},{name:"TYPE_FIXED64",id:6},{name:"TYPE_FIXED32",id:7},{name:"TYPE_BOOL",id:8},{name:"TYPE_STRING",id:9},{name:"TYPE_GROUP",id:10},{name:"TYPE_MESSAGE",id:11},{name:"TYPE_BYTES",id:12},{name:"TYPE_UINT32",id:13},{name:"TYPE_ENUM",id:14},{name:"TYPE_SFIXED32",id:15},{name:"TYPE_SFIXED64",id:16},{name:"TYPE_SINT32",id:17},{name:"TYPE_SINT64",id:18}],options:{}},{name:"Label",values:[{name:"LABEL_OPTIONAL",id:1},{name:"LABEL_REQUIRED",id:2},{name:"LABEL_REPEATED",id:3}],options:{}}],messages:[],options:{},oneofs:{}},{name:"EnumDescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"repeated",options:{},type:"EnumValueDescriptorProto",name:"value",id:2},{rule:"optional",options:{},type:"EnumOptions",name:"options",id:3}],enums:[],messages:[],options:{},oneofs:{}},{name:"EnumValueDescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"optional",options:{},type:"int32",name:"number",id:2},{rule:"optional",options:{},type:"EnumValueOptions",name:"options",id:3}],enums:[],messages:[],options:{},oneofs:{}},{name:"ServiceDescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"repeated",options:{},type:"MethodDescriptorProto",name:"method",id:2},{rule:"optional",options:{},type:"ServiceOptions",name:"options",id:3}],enums:[],messages:[],options:{},oneofs:{}},{name:"MethodDescriptorProto",fields:[{rule:"optional",options:{},type:"string",name:"name",id:1},{rule:"optional",options:{},type:"string",name:"input_type",id:2},{rule:"optional",options:{},type:"string",name:"output_type",id:3},{rule:"optional",options:{},type:"MethodOptions",name:"options",id:4}],enums:[],messages:[],options:{},oneofs:{}},{name:"FileOptions",fields:[{rule:"optional",options:{},type:"string",name:"java_package",id:1},{rule:"optional",options:{},type:"string",name:"java_outer_classname",id:8},{rule:"optional",options:{default:!1},type:"bool",name:"java_multiple_files",id:10},{rule:"optional",options:{default:!1},type:"bool",name:"java_generate_equals_and_hash",id:20},{rule:"optional",options:{default:"SPEED"},type:"OptimizeMode",name:"optimize_for",id:9},{rule:"optional",options:{},type:"string",name:"go_package",id:11},{rule:"optional",options:{default:!1},type:"bool",name:"cc_generic_services",id:16},{rule:"optional",options:{default:!1},type:"bool",name:"java_generic_services",id:17},{rule:"optional",options:{default:!1},type:"bool",name:"py_generic_services",id:18},{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[{name:"OptimizeMode",values:[{name:"SPEED",id:1},{name:"CODE_SIZE",id:2},{name:"LITE_RUNTIME",id:3}],options:{}}],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"MessageOptions",fields:[{rule:"optional",options:{default:!1},type:"bool",name:"message_set_wire_format",id:1},{rule:"optional",options:{default:!1},type:"bool",name:"no_standard_descriptor_accessor",id:2},{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"FieldOptions",fields:[{rule:"optional",options:{default:"STRING"},type:"CType",name:"ctype",id:1},{rule:"optional",options:{},type:"bool",name:"packed",id:2},{rule:"optional",options:{default:!1},type:"bool",name:"lazy",id:5},{rule:"optional",options:{default:!1},type:"bool",name:"deprecated",id:3},{rule:"optional",options:{},type:"string",name:"experimental_map_key",id:9},{rule:"optional",options:{default:!1},type:"bool",name:"weak",id:10},{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[{name:"CType",values:[{name:"STRING",id:0},{name:"CORD",id:1},{name:"STRING_PIECE",id:2}],options:{}}],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"EnumOptions",fields:[{rule:"optional",options:{default:!0},type:"bool",name:"allow_alias",id:2},{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"EnumValueOptions",fields:[{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"ServiceOptions",fields:[{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"MethodOptions",fields:[{rule:"repeated",options:{},type:"UninterpretedOption",name:"uninterpreted_option",id:999}],enums:[],messages:[],options:{},oneofs:{},extensions:[1e3,536870911]},{name:"UninterpretedOption",fields:[{rule:"repeated",options:{},type:"NamePart",name:"name",id:2},{rule:"optional",options:{},type:"string",name:"identifier_value",id:3},{rule:"optional",options:{},type:"uint64",name:"positive_int_value",id:4},{rule:"optional",options:{},type:"int64",name:"negative_int_value",id:5},{rule:"optional",options:{},type:"double",name:"double_value",id:6},{rule:"optional",options:{},type:"bytes",name:"string_value",id:7},{rule:"optional",options:{},type:"string",name:"aggregate_value",id:8}],enums:[],messages:[{name:"NamePart",fields:[{rule:"required",options:{},type:"string",name:"name_part",id:1},{rule:"required",options:{},type:"bool",name:"is_extension",id:2}],enums:[],messages:[],options:{},oneofs:{}}],options:{},oneofs:{}},{name:"SourceCodeInfo",fields:[{rule:"repeated",options:{},type:"Location",name:"location",id:1}],enums:[],messages:[{name:"Location",fields:[{rule:"repeated",options:{packed:!0},type:"int32",name:"path",id:1},{rule:"repeated",options:{packed:!0},type:"int32",name:"span",id:2},{rule:"optional",options:{},type:"string",name:"leading_comments",id:3},{rule:"optional",options:{},type:"string",name:"trailing_comments",id:4}],enums:[],messages:[],options:{},oneofs:{}}],options:{},oneofs:{}}],enums:[],imports:[],options:{java_package:"com.google.protobuf",java_outer_classname:"DescriptorProtos",optimize_for:"SPEED"},services:[]}],options:{},services:[]}).build()},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MessageDecoder=void 0;var n=function(){function e(e,t){for(var r=0;rt.path?1:0:parseInt(e.path)-parseInt(t.path)}var w=(y((i=function(){function e(t,r){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.name="LowlevelTransportWithSharedConnections",this.debug=!1,this.deferedDebugOnRelease={},this.deferedNormalOnRelease={},this.configured=!1,this.stopped=!1,this._lastStringified="",this.requestNeeded=!1,this.latestId=0,this.defereds={},this.isOutdated=!1,this.plugin=t,this.version=t.version,this._sharedWorkerFactory=r,!this.plugin.allowsWriteAndEnumerate)throw new Error("Plugin with shared connections cannot disallow write and enumerate")}return a(e,[{key:"enumerate",value:function(){return this._silentEnumerate()}},{key:"_silentEnumerate",value:function(){var e=g(s.default.mark(function e(){var t,r,n,i,o;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendToWorker({type:"enumerate-intent"});case 2:return t=[],e.prev=3,e.next=6,this.plugin.enumerate();case 6:t=e.sent;case 7:return e.prev=7,e.next=10,this.sendToWorker({type:"enumerate-done"});case 10:return e.finish(7);case 11:return e.next=13,this.sendToWorker({type:"get-sessions-and-disconnect",devices:t});case 13:if("sessions"===(r=e.sent).type){e.next=16;break}throw new Error("Wrong reply");case 16:return n=r.debugSessions,i=r.normalSessions,o=t.map(function(e){var t=i[e.path],r=n[e.path];return{path:e.path,session:t,debug:e.debug,debugSession:r}}),this._releaseDisconnected(o),e.abrupt("return",o.sort(m));case 21:case"end":return e.stop()}},e,this,[[3,,7,11]])}));return function(){return e.apply(this,arguments)}}()},{key:"_releaseDisconnected",value:function(e){var t=this,r={};e.forEach(function(e){null!=e.session&&(r[e.session]=!0)}),Object.keys(this.deferedDebugOnRelease).forEach(function(e){null==r[e]&&t._releaseCleanup(e,!0)}),Object.keys(this.deferedNormalOnRelease).forEach(function(e){null==r[e]&&t._releaseCleanup(e,!1)})}},{key:"listen",value:function(){var e=g(s.default.mark(function e(t){var r,n;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return r=v(t),n=null==t?this._lastStringified:r,e.abrupt("return",this._runIter(0,n));case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"_runIter",value:function(){var e=g(s.default.mark(function e(t,r){var n,i;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._silentEnumerate();case 2:if(n=e.sent,(i=v(n))===r&&60!==t){e.next=7;break}return this._lastStringified=i,e.abrupt("return",n);case 7:return e.next=9,(0,u.resolveTimeoutPromise)(500,null);case 9:return e.abrupt("return",this._runIter(t+1,i));case 10:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()},{key:"acquire",value:function(){var e=g(s.default.mark(function e(t,r){var n,i,o,a;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendToWorker({type:"acquire-intent",path:t.path,previous:t.previous,debug:r});case 2:if("wrong-previous-session"!==(n=e.sent).type){e.next=5;break}throw new Error("wrong previous session");case 5:if("other-session"===n.type){e.next=7;break}throw new Error("Strange reply");case 7:return i=null==n.otherSession,e.prev=8,e.next=11,this.plugin.connect(t.path,r,i);case 11:e.next=18;break;case 13:return e.prev=13,e.t0=e.catch(8),e.next=17,this.sendToWorker({type:"acquire-failed"});case 17:throw e.t0;case 18:return e.next=20,this.sendToWorker({type:"acquire-done"});case 20:if("session-number"===(o=e.sent).type){e.next=23;break}throw new Error("Strange reply.");case 23:return a=o.number,r?this.deferedDebugOnRelease[a]=(0,u.create)():this.deferedNormalOnRelease[a]=(0,u.create)(),e.abrupt("return",a);case 26:case"end":return e.stop()}},e,this,[[8,13]])}));return function(t,r){return e.apply(this,arguments)}}()},{key:"release",value:function(){var e=g(s.default.mark(function e(t,r,n){var i,o,a,f;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!r||n){e.next=3;break}return this.sendToWorker({type:"release-onclose",session:t}),e.abrupt("return");case 3:return e.next=5,this.sendToWorker({type:"release-intent",session:t,debug:n});case 5:if("double-release"!==(i=e.sent).type){e.next=8;break}throw new Error("Trying to double release.");case 8:if("path"===i.type){e.next=10;break}throw new Error("Strange reply.");case 10:return o=i.path,a=i.otherSession,f=null==a,this._releaseCleanup(t,n),e.prev=14,e.next=17,this.plugin.disconnect(o,n,f);case 17:e.next=21;break;case 19:e.prev=19,e.t0=e.catch(14);case 21:return e.next=23,this.sendToWorker({type:"release-done"});case 23:case"end":return e.stop()}},e,this,[[14,19]])}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"_releaseCleanup",value:function(e,t){var r=t?this.deferedDebugOnRelease:this.deferedNormalOnRelease;null!=r[e]&&(r[e].reject(new Error("Device released or disconnected")),delete r[e])}},{key:"configure",value:function(){var e=g(s.default.mark(function e(t){var r;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:r=(0,c.parseConfigure)(t),this._messages=r,this.configured=!0;case 3:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"_sendLowlevel",value:function(e,t){var r=this;return function(n){return r.plugin.send(e,n,t)}}},{key:"_receiveLowlevel",value:function(e,t){var r=this;return function(){return r.plugin.receive(e,t)}}},{key:"messages",value:function(){if(null==this._messages)throw new Error("Transport not configured.");return this._messages}},{key:"doWithSession",value:function(){var e=g(s.default.mark(function e(t,r,n){var i,o,a,f,u,c;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.sendToWorker({type:"get-sessions"});case 2:if("sessions"===(i=e.sent).type){e.next=5;break}throw new Error("Wrong reply");case 5:if(o=r?i.debugSessions:i.normalSessions,a=null,Object.keys(o).forEach(function(e){o[e]===t&&(a=e)}),null!=a){e.next=10;break}throw new Error("Session not available.");case 10:return f=a,e.next=13,n(f);case 13:return u=e.sent,c=r?this.deferedDebugOnRelease[t]:this.deferedNormalOnRelease[t],e.abrupt("return",Promise.race([c.rejectingPromise,u]));case 16:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"call",value:function(){var e=g(s.default.mark(function e(t,r,n,i){var o,a=this;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=function(){var e=g(s.default.mark(function e(t){var o,f;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=a.messages(),e.next=3,(0,h.buildAndSend)(o,a._sendLowlevel(t,i),r,n);case 3:return e.next=5,(0,l.receiveAndParse)(o,a._receiveLowlevel(t,i));case 5:return f=e.sent,e.abrupt("return",f);case 7:case"end":return e.stop()}},e,a)}));return function(t){return e.apply(this,arguments)}}(),e.abrupt("return",this.doWithSession(t,i,o));case 2:case"end":return e.stop()}},e,this)}));return function(t,r,n,i){return e.apply(this,arguments)}}()},{key:"post",value:function(){var e=g(s.default.mark(function e(t,r,n,i){var o,a=this;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=function(){var e=g(s.default.mark(function e(t){var o;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return o=a.messages(),e.next=3,(0,h.buildAndSend)(o,a._sendLowlevel(t,i),r,n);case 3:case"end":return e.stop()}},e,a)}));return function(t){return e.apply(this,arguments)}}(),e.abrupt("return",this.doWithSession(t,i,o));case 2:case"end":return e.stop()}},e,this)}));return function(t,r,n,i){return e.apply(this,arguments)}}()},{key:"read",value:function(){var e=g(s.default.mark(function e(t,r){var n,i=this;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=function(){var e=g(s.default.mark(function e(t){var n,o;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.messages(),e.next=3,(0,l.receiveAndParse)(n,i._receiveLowlevel(t,r));case 3:return o=e.sent,e.abrupt("return",o);case 5:case"end":return e.stop()}},e,i)}));return function(t){return e.apply(this,arguments)}}(),e.abrupt("return",this.doWithSession(t,r,n));case 2:case"end":return e.stop()}},e,this)}));return function(t,r){return e.apply(this,arguments)}}()},{key:"init",value:function(){var e=g(s.default.mark(function e(t){var r=this;return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return this.debug=!!t,this.requestNeeded=this.plugin.requestNeeded,e.next=4,this.plugin.init(t);case 4:null!=this._sharedWorkerFactory&&(this.sharedWorker=this._sharedWorkerFactory(),null!=this.sharedWorker&&(this.sharedWorker.port.onmessage=function(e){r.receiveFromWorker(e.data)}));case 5:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"requestDevice",value:function(){var e=g(s.default.mark(function e(){return s.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",this.plugin.requestDevice());case 1:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"sendToWorker",value:function(e){var t=this;if(this.stopped)return Promise.reject("Transport stopped.");this.latestId++;var r=this.latestId;return this.defereds[r]=(0,u.create)(),null!=this.sharedWorker?this.sharedWorker.port.postMessage({id:r,message:e}):(0,d.postModuleMessage)({id:r,message:e},function(e){return t.receiveFromWorker(e)}),this.defereds[r].promise}},{key:"receiveFromWorker",value:function(e){this.defereds[e.id].resolve(e.message),delete this.defereds[e.id]}},{key:"setBridgeLatestUrl",value:function(e){}},{key:"stop",value:function(){this.stopped=!0,this.sharedWorker=null}}]),e}()).prototype,"enumerate",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"enumerate"),i.prototype),y(i.prototype,"listen",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"listen"),i.prototype),y(i.prototype,"acquire",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"acquire"),i.prototype),y(i.prototype,"release",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"release"),i.prototype),y(i.prototype,"configure",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"configure"),i.prototype),y(i.prototype,"call",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"call"),i.prototype),y(i.prototype,"post",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"post"),i.prototype),y(i.prototype,"read",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"read"),i.prototype),y(i.prototype,"init",[p.debugInOut],Object.getOwnPropertyDescriptor(i.prototype,"init"),i.prototype),i);t.default=w,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.patch=function(){o||(n.Reflect.Message.Field.prototype.verifyValueOriginal=n.Reflect.Message.Field.prototype.verifyValue,n.Reflect.Message.Field.prototype.verifyValue=function(e,t){var r=e;return this.type===n.TYPES.bytes&&null!=e&&"string"==typeof e&&(r=i.wrap(e,"hex")),this.verifyValueOriginal(r,t)});o=!0};var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(12));var i=n.ByteBuffer,o=!1},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.postModuleMessage=function(e,t){var r=e.id,n=e.message;l({id:r,message:n},{postMessage:t})};var n=r(105);"undefined"!=typeof onconnect&&(onconnect=function(e){var t=e.ports[0];t.onmessage=function(e){l(e.data,t)}});var i={},o={},s=null,a=Promise.resolve();function f(){var e=(0,n.create)();s=e,setTimeout(function(){return e.reject(new Error("Timed out"))},1e4)}function u(e){null!=s&&s.resolve(e)}function c(){return null==s?Promise.reject(new Error("???")):s.promise}function h(e){var t=a.then(function(){return e()});a=t.catch(function(){})}function l(e,t){var r=e.id,n=e.message;if("acquire-intent"===n.type){var s=n.path,a=n.previous,l=n.debug;h(function(){return function(e,t,r,n,s){var a=!1,u=r?o:i,h=r?i:o,l=u[e];a=null==l?null!=t:t!==l;return a?(y({type:"wrong-previous-session"},n,s),Promise.resolve()):(f(),y({type:"other-session",otherSession:h[e]},n,s),c().then(function(t){if(t.good){var n=(++g).toString();r&&(n="debug"+n),u[e]=n,y({type:"session-number",number:n},t.id,s)}else y({type:"ok"},t.id,s)}))}(s,a,l,r,t)})}if("acquire-done"===n.type&&function(e){u({good:!0,id:e})}(r),"acquire-failed"===n.type&&function(e){u({good:!1,id:e})}(r),"get-sessions"===n.type&&h(function(){return d(r,t)}),"get-sessions-and-disconnect"===n.type){var b=n.devices;h(function(){return d(r,t,b)})}if("release-onclose"===n.type){var v=n.session;h(function(){return function(e){var t=null;if(Object.keys(i).forEach(function(r){i[r]===e&&(t=r)}),null==t)return Promise.resolve();var r=t;return delete i[r],delete o[r],Promise.resolve()}(v)})}if("release-intent"===n.type){var m=n.session,w=n.debug;h(function(){return function(e,t,r,n){var s=null,a=t?o:i,u=t?i:o;if(Object.keys(a).forEach(function(t){a[t]===e&&(s=t)}),null==s)return y({type:"double-release"},r,n),Promise.resolve();var h=s,l=u[h];return f(),y({type:"path",path:h,otherSession:l},r,n),c().then(function(e){delete a[h],y({type:"ok"},e.id,n)})}(m,w,r,t)})}"release-done"===n.type&&p(r),"enumerate-intent"===n.type&&h(function(){return function(e,t){return f(),y({type:"ok"},e,t),c().then(function(e){y({type:"ok"},e.id,t)})}(r,t)}),"enumerate-done"===n.type&&p(r)}function p(e){u({id:e})}function d(e,t,r){if(null!=r){var n={};r.forEach(function(e){n[e.path]=!0}),Object.keys(i).forEach(function(e){i[e]||delete i[e]}),Object.keys(o).forEach(function(e){o[e]||delete o[e]})}return y({type:"sessions",debugSessions:o,normalSessions:i},e,t),Promise.resolve()}var g=0;function y(e,t,r){r.postMessage({id:t,message:e})}},function(e,t,r){var n="undefined"!=typeof JSON?JSON:r(216);e.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var r=t.space||"";"number"==typeof r&&(r=Array(r+1).join(" "));var s,a="boolean"==typeof t.cycles&&t.cycles,f=t.replacer||function(e,t){return t},u=t.cmp&&(s=t.cmp,function(e){return function(t,r){var n={key:t,value:e[t]},i={key:r,value:e[r]};return s(n,i)}}),c=[];return function e(t,s,h,l){var p=r?"\n"+new Array(l+1).join(r):"",d=r?": ":":";if(h&&h.toJSON&&"function"==typeof h.toJSON&&(h=h.toJSON()),void 0!==(h=f.call(t,s,h))){if("object"!=typeof h||null===h)return n.stringify(h);if(i(h)){for(var g=[],y=0;y="0"&&n<="9";)t+=n,f();if("."===n)for(t+=".";f()&&n>="0"&&n<="9";)t+=n;if("e"===n||"E"===n)for(t+=n,f(),"-"!==n&&"+"!==n||(t+=n,f());n>="0"&&n<="9";)t+=n,f();if(e=+t,isFinite(e))return e;a("Bad number")},c=function(){var e,t,r,i="";if('"'===n)for(;f();){if('"'===n)return f(),i;if("\\"===n)if(f(),"u"===n){for(r=0,t=0;t<4&&(e=parseInt(f(),16),isFinite(e));t+=1)r=16*r+e;i+=String.fromCharCode(r)}else{if("string"!=typeof s[n])break;i+=s[n]}else i+=n}a("Bad string")},h=function(){for(;n&&n<=" ";)f()};o=function(){switch(h(),n){case"{":return function(){var e,t={};if("{"===n){if(f("{"),h(),"}"===n)return f("}"),t;for(;n;){if(e=c(),h(),f(":"),Object.hasOwnProperty.call(t,e)&&a('Duplicate key "'+e+'"'),t[e]=o(),h(),"}"===n)return f("}"),t;f(","),h()}}a("Bad object")}();case"[":return function(){var e=[];if("["===n){if(f("["),h(),"]"===n)return f("]"),e;for(;n;){if(e.push(o()),h(),"]"===n)return f("]"),e;f(","),h()}}a("Bad array")}();case'"':return c();case"-":return u();default:return n>="0"&&n<="9"?u():function(){switch(n){case"t":return f("t"),f("r"),f("u"),f("e"),!0;case"f":return f("f"),f("a"),f("l"),f("s"),f("e"),!1;case"n":return f("n"),f("u"),f("l"),f("l"),null}a("Unexpected '"+n+"'")}()}},e.exports=function(e,t){var s;return i=e,r=0,n=" ",s=o(),h(),n&&a("Syntax error"),"function"==typeof t?function e(r,n){var i,o,s=r[n];if(s&&"object"==typeof s)for(i in s)Object.prototype.hasOwnProperty.call(s,i)&&(void 0!==(o=e(s,i))?s[i]=o:delete s[i]);return t.call(r,n,s)}({"":s},""):s}},function(e,t){var r,n,i,o=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,s={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"};function a(e){return o.lastIndex=0,o.test(e)?'"'+e.replace(o,function(e){var t=s[e];return"string"==typeof t?t:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}e.exports=function(e,t,o){var s;if(r="",n="","number"==typeof o)for(s=0;s0,a!==this.unreadableHidDevice&&this.unreadableHidDeviceChange.emit("change"),e.abrupt("return",this._lastDevices);case 12:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"enumerate",value:function(){var e=c(i.default.mark(function e(){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._listDevices();case 2:return e.t0=function(e){return{path:e.path,debug:e.debug}},e.abrupt("return",e.sent.map(e.t0));case 4:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()},{key:"_findDevice",value:function(){var e=c(i.default.mark(function e(t){var r;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=(r=this._lastDevices.find(function(e){return e.path===t}))){e.next=3;break}throw new Error("Action was interrupted.");case 3:return e.abrupt("return",r.device);case 4:case"end":return e.stop()}},e,this)}));return function(t){return e.apply(this,arguments)}}()},{key:"send",value:function(){var e=c(i.default.mark(function e(t,r,n){var o,s,a;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._findDevice(t);case 2:if(o=e.sent,(s=new Uint8Array(64))[0]=63,s.set(new Uint8Array(r),1),o.opened){e.next=9;break}return e.next=9,this.connect(t,n,!1);case 9:return a=n?this.debugEndpointId:this.normalEndpointId,e.abrupt("return",o.transferOut(a,s).then(function(){}));case 11:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"receive",value:function(){var e=c(i.default.mark(function e(t,r){var n,o,s;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._findDevice(t);case 2:if(n=e.sent,o=r?this.debugEndpointId:this.normalEndpointId,e.prev=4,n.opened){e.next=8;break}return e.next=8,this.connect(t,r,!1);case 8:return e.next=10,n.transferIn(o,64);case 10:if(0!==(s=e.sent).data.byteLength){e.next=13;break}return e.abrupt("return",this.receive(t,r));case 13:return e.abrupt("return",s.data.buffer.slice(1));case 16:if(e.prev=16,e.t0=e.catch(4),"Device unavailable."!==e.t0.message){e.next=22;break}throw new Error("Action was interrupted.");case 22:throw e.t0;case 23:case"end":return e.stop()}},e,this,[[4,16]])}));return function(t,r){return e.apply(this,arguments)}}()},{key:"connect",value:function(){var e=c(i.default.mark(function e(t,r,n){var s,a,f,u=this;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:s=i.default.mark(function e(o){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(!(o>0)){e.next=3;break}return e.next=3,new Promise(function(e){return setTimeout(function(){return e()},200*o)});case 3:return e.prev=3,e.next=6,u._connectIn(t,r,n);case 6:return e.t0=e.sent,e.abrupt("return",{v:e.t0});case 10:if(e.prev=10,e.t1=e.catch(3),4!==o){e.next=14;break}throw e.t1;case 14:case"end":return e.stop()}},e,u,[[3,10]])}),a=0;case 2:if(!(a<5)){e.next=10;break}return e.delegateYield(s(a),"t0",4);case 4:if("object"!==(void 0===(f=e.t0)?"undefined":o(f))){e.next=7;break}return e.abrupt("return",f.v);case 7:a++,e.next=2;break;case 10:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"_connectIn",value:function(){var e=c(i.default.mark(function e(t,r,n){var o,s;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._findDevice(t);case 2:return o=e.sent,e.next=5,o.open();case 5:if(!n){e.next=10;break}return e.next=8,o.selectConfiguration(this.configurationId);case 8:return e.next=10,o.reset();case 10:return s=r?this.debugInterfaceId:this.normalInterfaceId,e.next=13,o.claimInterface(s);case 13:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"disconnect",value:function(){var e=c(i.default.mark(function e(t,r,n){var o,s;return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this._findDevice(t);case 2:return o=e.sent,s=r?this.debugInterfaceId:this.normalInterfaceId,e.next=6,o.releaseInterface(s);case 6:if(!n){e.next=9;break}return e.next=9,o.close();case 9:case"end":return e.stop()}},e,this)}));return function(t,r,n){return e.apply(this,arguments)}}()},{key:"requestDevice",value:function(){var e=c(i.default.mark(function e(){return i.default.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.usb.requestDevice({filters:l});case 2:case"end":return e.stop()}},e,this)}));return function(){return e.apply(this,arguments)}}()}]),e}()).prototype,"init",[f.debugInOut],Object.getOwnPropertyDescriptor(n.prototype,"init"),n.prototype),h(n.prototype,"connect",[f.debugInOut],Object.getOwnPropertyDescriptor(n.prototype,"connect"),n.prototype),h(n.prototype,"disconnect",[f.debugInOut],Object.getOwnPropertyDescriptor(n.prototype,"disconnect"),n.prototype),n);t.default=v,e.exports=t.default},function(e,t,r){(function(t,n){r(26).parse;var i=r(26).resolve,o=r(52),s=r(231),a=r(232),f=r(21),u=r(53),c=r(264),h=r(55),l=r(265),p=r(112);function d(e,r){if(!(this instanceof d))return new d(e,r);if(!d.Promise)throw new Error("native promise missing, set Fetch.Promise to your favorite alternative");u.Promise=d.Promise;var n=this;return new d.Promise(function(u,g){var y,b=new l(e,r);if(!b.protocol||!b.hostname)throw new Error("only absolute urls are supported");if("http:"!==b.protocol&&"https:"!==b.protocol)throw new Error("only http(s) protocols are supported");y="https:"===b.protocol?s.request:o.request;var v=new h(b.headers);b.compress&&v.set("accept-encoding","gzip,deflate"),v.has("user-agent")||v.set("user-agent","node-fetch/1.0 (+https://github.com/bitinn/node-fetch)"),v.has("connection")||b.agent||v.set("connection","close"),v.has("accept")||v.set("accept","*/*"),!v.has("content-type")&&b.body&&"function"==typeof b.body.getBoundary&&v.set("content-type","multipart/form-data; boundary="+b.body.getBoundary()),!v.has("content-length")&&/post|put|patch|delete/i.test(b.method)&&("string"==typeof b.body?v.set("content-length",t.byteLength(b.body)):b.body&&"function"==typeof b.body.getLengthSync?b.body._lengthRetrievers&&0==b.body._lengthRetrievers.length?v.set("content-length",b.body.getLengthSync().toString()):b.body.hasKnownLength&&b.body.hasKnownLength()&&v.set("content-length",b.body.getLengthSync().toString()):void 0!==b.body&&null!==b.body||v.set("content-length","0")),b.headers=v.raw(),b.headers.host&&(b.headers.host=b.headers.host[0]);var m,w=y(b);b.timeout&&w.once("socket",function(e){m=setTimeout(function(){w.abort(),g(new p("network timeout at: "+b.url,"request-timeout"))},b.timeout)}),w.on("error",function(e){clearTimeout(m),g(new p("request to "+b.url+" failed, reason: "+e.message,"system",e))}),w.on("response",function(e){if(clearTimeout(m),n.isRedirect(e.statusCode)&&"manual"!==b.redirect)return"error"===b.redirect?void g(new p("redirect mode is set to error: "+b.url,"no-redirect")):b.counter>=b.follow?void g(new p("maximum redirect reached at: "+b.url,"max-redirect")):e.headers.location?(303!==e.statusCode&&(301!==e.statusCode&&302!==e.statusCode||"POST"!==b.method)||(b.method="GET",delete b.body,delete b.headers["content-length"]),b.counter++,void u(d(i(b.url,e.headers.location),b))):void g(new p("redirect location header missing at: "+b.url,"invalid-redirect"));var t=new h(e.headers);"manual"===b.redirect&&t.has("location")&&t.set("location",i(b.url,t.get("location")));var r,o=e.pipe(new f.PassThrough),s={url:b.url,status:e.statusCode,statusText:e.statusMessage,headers:t,size:b.size,timeout:b.timeout};if(!b.compress||"HEAD"===b.method||!t.has("content-encoding")||204===e.statusCode||304===e.statusCode)return r=new c(o,s),void u(r);var l=t.get("content-encoding");if("gzip"==l||"x-gzip"==l)return o=o.pipe(a.createGunzip()),r=new c(o,s),void u(r);"deflate"!=l&&"x-deflate"!=l?(r=new c(o,s),u(r)):e.pipe(new f.PassThrough).once("data",function(e){o=8==(15&e[0])?o.pipe(a.createInflate()):o.pipe(a.createInflateRaw()),r=new c(o,s),u(r)})}),"string"==typeof b.body?(w.write(b.body),w.end()):b.body instanceof t?(w.write(b.body),w.end()):"object"==typeof b.body&&b.body.pipe?b.body.pipe(w):"object"==typeof b.body?(w.write(b.body.toString()),w.end()):w.end()})}e.exports=d,e.exports.default=e.exports,d.prototype.isRedirect=function(e){return 301===e||302===e||303===e||307===e||308===e},d.Promise=n.Promise,d.Response=c,d.Headers=h,d.Request=l}).call(this,r(1).Buffer,r(5))},function(e,t,r){(function(e,n){var i;/*! https://mths.be/punycode v1.4.1 by @mathias */!function(o){t&&t.nodeType,e&&e.nodeType;var s="object"==typeof n&&n;s.global!==s&&s.window!==s&&s.self;var a,f=2147483647,u=36,c=1,h=26,l=38,p=700,d=72,g=128,y="-",b=/^xn--/,v=/[^\x20-\x7E]/,m=/[\x2E\u3002\uFF0E\uFF61]/g,w={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},_=u-c,E=Math.floor,A=String.fromCharCode;function I(e){throw new RangeError(w[e])}function S(e,t){for(var r=e.length,n=[];r--;)n[r]=t(e[r]);return n}function T(e,t){var r=e.split("@"),n="";return r.length>1&&(n=r[0]+"@",e=r[1]),n+S((e=e.replace(m,".")).split("."),t).join(".")}function C(e){for(var t,r,n=[],i=0,o=e.length;i=55296&&t<=56319&&i65535&&(t+=A((e-=65536)>>>10&1023|55296),e=56320|1023&e),t+=A(e)}).join("")}function P(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function k(e,t,r){var n=0;for(e=r?E(e/p):e>>1,e+=E(e/t);e>_*h>>1;n+=u)e=E(e/_);return E(n+(_+1)*e/(e+l))}function x(e){var t,r,n,i,o,s,a,l,p,b,v,m=[],w=e.length,_=0,A=g,S=d;for((r=e.lastIndexOf(y))<0&&(r=0),n=0;n=128&&I("not-basic"),m.push(e.charCodeAt(n));for(i=r>0?r+1:0;i=w&&I("invalid-input"),((l=(v=e.charCodeAt(i++))-48<10?v-22:v-65<26?v-65:v-97<26?v-97:u)>=u||l>E((f-_)/s))&&I("overflow"),_+=l*s,!(l<(p=a<=S?c:a>=S+h?h:a-S));a+=u)s>E(f/(b=u-p))&&I("overflow"),s*=b;S=k(_-o,t=m.length+1,0==o),E(_/t)>f-A&&I("overflow"),A+=E(_/t),_%=t,m.splice(_++,0,A)}return O(m)}function B(e){var t,r,n,i,o,s,a,l,p,b,v,m,w,_,S,T=[];for(m=(e=C(e)).length,t=g,r=0,o=d,s=0;s=t&&vE((f-r)/(w=n+1))&&I("overflow"),r+=(a-t)*w,t=a,s=0;sf&&I("overflow"),v==t){for(l=r,p=u;!(l<(b=p<=o?c:p>=o+h?h:p-o));p+=u)S=l-b,_=u-b,T.push(A(P(b+S%_,0))),l=E(S/_);T.push(A(P(l,0))),o=k(r,w,n==i),r=0,++n}++r,++t}return T.join("")}a={version:"1.4.1",ucs2:{decode:C,encode:O},decode:x,encode:B,toASCII:function(e){return T(e,function(e){return v.test(e)?"xn--"+B(e):e})},toUnicode:function(e){return T(e,function(e){return b.test(e)?x(e.slice(4).toLowerCase()):e})}},void 0===(i=function(){return a}.call(t,r,t,e))||(e.exports=i)}()}).call(this,r(84)(e),r(5))},function(e,t,r){"use strict";e.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},function(e,t,r){"use strict";t.decode=t.parse=r(225),t.encode=t.stringify=r(226)},function(e,t,r){"use strict";function n(e,t){return Object.prototype.hasOwnProperty.call(e,t)}e.exports=function(e,t,r,o){t=t||"&",r=r||"=";var s={};if("string"!=typeof e||0===e.length)return s;var a=/\+/g;e=e.split(t);var f=1e3;o&&"number"==typeof o.maxKeys&&(f=o.maxKeys);var u=e.length;f>0&&u>f&&(u=f);for(var c=0;c=0?(h=g.substr(0,y),l=g.substr(y+1)):(h=g,l=""),p=decodeURIComponent(h),d=decodeURIComponent(l),n(s,p)?i(s[p])?s[p].push(d):s[p]=[s[p],d]:s[p]=d}return s};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},function(e,t,r){"use strict";var n=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};e.exports=function(e,t,r,a){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?o(s(e),function(s){var a=encodeURIComponent(n(s))+r;return i(e[s])?o(e[s],function(e){return a+encodeURIComponent(n(e))}).join(t):a+encodeURIComponent(n(e[s]))}).join(t):a?encodeURIComponent(n(a))+r+encodeURIComponent(n(e)):""};var i=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function o(e,t){if(e.map)return e.map(t);for(var r=[],n=0;n=f?s=new RangeError(u):t=n.concat(i,o),i=[],e.close(),r(s,t)}e.on("error",function(t){e.removeListener("end",a),e.removeListener("readable",s),r(t)}),e.on("end",a),e.end(t),s()}function v(e,t){if("string"==typeof t&&(t=n.from(t)),!n.isBuffer(t))throw new TypeError("Not a string or buffer");var r=e._finishFlushFlag;return e._processChunk(t,r)}function m(e){if(!(this instanceof m))return new m(e);C.call(this,e,o.DEFLATE)}function w(e){if(!(this instanceof w))return new w(e);C.call(this,e,o.INFLATE)}function _(e){if(!(this instanceof _))return new _(e);C.call(this,e,o.GZIP)}function E(e){if(!(this instanceof E))return new E(e);C.call(this,e,o.GUNZIP)}function A(e){if(!(this instanceof A))return new A(e);C.call(this,e,o.DEFLATERAW)}function I(e){if(!(this instanceof I))return new I(e);C.call(this,e,o.INFLATERAW)}function S(e){if(!(this instanceof S))return new S(e);C.call(this,e,o.UNZIP)}function T(e){return e===o.Z_NO_FLUSH||e===o.Z_PARTIAL_FLUSH||e===o.Z_SYNC_FLUSH||e===o.Z_FULL_FLUSH||e===o.Z_FINISH||e===o.Z_BLOCK}function C(e,r){var s=this;if(this._opts=e=e||{},this._chunkSize=e.chunkSize||t.Z_DEFAULT_CHUNK,i.call(this,e),e.flush&&!T(e.flush))throw new Error("Invalid flush flag: "+e.flush);if(e.finishFlush&&!T(e.finishFlush))throw new Error("Invalid flush flag: "+e.finishFlush);if(this._flushFlag=e.flush||o.Z_NO_FLUSH,this._finishFlushFlag=void 0!==e.finishFlush?e.finishFlush:o.Z_FINISH,e.chunkSize&&(e.chunkSizet.Z_MAX_CHUNK))throw new Error("Invalid chunk size: "+e.chunkSize);if(e.windowBits&&(e.windowBitst.Z_MAX_WINDOWBITS))throw new Error("Invalid windowBits: "+e.windowBits);if(e.level&&(e.levelt.Z_MAX_LEVEL))throw new Error("Invalid compression level: "+e.level);if(e.memLevel&&(e.memLevelt.Z_MAX_MEMLEVEL))throw new Error("Invalid memLevel: "+e.memLevel);if(e.strategy&&e.strategy!=t.Z_FILTERED&&e.strategy!=t.Z_HUFFMAN_ONLY&&e.strategy!=t.Z_RLE&&e.strategy!=t.Z_FIXED&&e.strategy!=t.Z_DEFAULT_STRATEGY)throw new Error("Invalid strategy: "+e.strategy);if(e.dictionary&&!n.isBuffer(e.dictionary))throw new Error("Invalid dictionary: it should be a Buffer instance");this._handle=new o.Zlib(r);var a=this;this._hadError=!1,this._handle.onerror=function(e,r){O(a),a._hadError=!0;var n=new Error(e);n.errno=r,n.code=t.codes[r],a.emit("error",n)};var f=t.Z_DEFAULT_COMPRESSION;"number"==typeof e.level&&(f=e.level);var u=t.Z_DEFAULT_STRATEGY;"number"==typeof e.strategy&&(u=e.strategy),this._handle.init(e.windowBits||t.Z_DEFAULT_WINDOWBITS,f,e.memLevel||t.Z_DEFAULT_MEMLEVEL,u,e.dictionary),this._buffer=n.allocUnsafe(this._chunkSize),this._offset=0,this._level=f,this._strategy=u,this.once("end",this.close),Object.defineProperty(this,"_closed",{get:function(){return!s._handle},configurable:!0,enumerable:!0})}function O(t,r){r&&e.nextTick(r),t._handle&&(t._handle.close(),t._handle=null)}function P(e){e.emit("close")}Object.defineProperty(t,"codes",{enumerable:!0,value:Object.freeze(p),writable:!1}),t.Deflate=m,t.Inflate=w,t.Gzip=_,t.Gunzip=E,t.DeflateRaw=A,t.InflateRaw=I,t.Unzip=S,t.createDeflate=function(e){return new m(e)},t.createInflate=function(e){return new w(e)},t.createDeflateRaw=function(e){return new A(e)},t.createInflateRaw=function(e){return new I(e)},t.createGzip=function(e){return new _(e)},t.createGunzip=function(e){return new E(e)},t.createUnzip=function(e){return new S(e)},t.deflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new m(t),e,r)},t.deflateSync=function(e,t){return v(new m(t),e)},t.gzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new _(t),e,r)},t.gzipSync=function(e,t){return v(new _(t),e)},t.deflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new A(t),e,r)},t.deflateRawSync=function(e,t){return v(new A(t),e)},t.unzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new S(t),e,r)},t.unzipSync=function(e,t){return v(new S(t),e)},t.inflate=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new w(t),e,r)},t.inflateSync=function(e,t){return v(new w(t),e)},t.gunzip=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new E(t),e,r)},t.gunzipSync=function(e,t){return v(new E(t),e)},t.inflateRaw=function(e,t,r){return"function"==typeof t&&(r=t,t={}),b(new I(t),e,r)},t.inflateRawSync=function(e,t){return v(new I(t),e)},s.inherits(C,i),C.prototype.params=function(r,n,i){if(rt.Z_MAX_LEVEL)throw new RangeError("Invalid compression level: "+r);if(n!=t.Z_FILTERED&&n!=t.Z_HUFFMAN_ONLY&&n!=t.Z_RLE&&n!=t.Z_FIXED&&n!=t.Z_DEFAULT_STRATEGY)throw new TypeError("Invalid strategy: "+n);if(this._level!==r||this._strategy!==n){var s=this;this.flush(o.Z_SYNC_FLUSH,function(){a(s._handle,"zlib binding closed"),s._handle.params(r,n),s._hadError||(s._level=r,s._strategy=n,i&&i())})}else e.nextTick(i)},C.prototype.reset=function(){return a(this._handle,"zlib binding closed"),this._handle.reset()},C.prototype._flush=function(e){this._transform(n.alloc(0),"",e)},C.prototype.flush=function(t,r){var i=this,s=this._writableState;("function"==typeof t||void 0===t&&!r)&&(r=t,t=o.Z_FULL_FLUSH),s.ended?r&&e.nextTick(r):s.ending?r&&this.once("end",r):s.needDrain?r&&this.once("drain",function(){return i.flush(t,r)}):(this._flushFlag=t,this.write(n.alloc(0),"",r))},C.prototype.close=function(t){O(this,t),e.nextTick(P,this)},C.prototype._transform=function(e,t,r){var i,s=this._writableState,a=(s.ending||s.ended)&&(!e||s.length===e.length);return null===e||n.isBuffer(e)?this._handle?(a?i=this._finishFlushFlag:(i=this._flushFlag,e.length>=s.length&&(this._flushFlag=this._opts.flush||o.Z_NO_FLUSH)),void this._processChunk(e,i,r)):r(new Error("zlib binding closed")):r(new Error("invalid input"))},C.prototype._processChunk=function(e,t,r){var i=e&&e.length,o=this._chunkSize-this._offset,s=0,c=this,h="function"==typeof r;if(!h){var l,p=[],d=0;this.on("error",function(e){l=e}),a(this._handle,"zlib binding closed");do{var g=this._handle.writeSync(t,e,s,i,this._buffer,this._offset,o)}while(!this._hadError&&v(g[0],g[1]));if(this._hadError)throw l;if(d>=f)throw O(this),new RangeError(u);var y=n.concat(p,d);return O(this),y}a(this._handle,"zlib binding closed");var b=this._handle.write(t,e,s,i,this._buffer,this._offset,o);function v(f,u){if(this&&(this.buffer=null,this.callback=null),!c._hadError){var l=o-u;if(a(l>=0,"have should not go down"),l>0){var g=c._buffer.slice(c._offset,c._offset+l);c._offset+=l,h?c.push(g):(p.push(g),d+=g.length)}if((0===u||c._offset>=c._chunkSize)&&(o=c._chunkSize,c._offset=0,c._buffer=n.allocUnsafe(c._chunkSize)),0===u){if(s+=i-f,i=f,!h)return!0;var y=c._handle.write(t,e,s,i,c._buffer,c._offset,c._chunkSize);return y.callback=v,void(y.buffer=e)}if(!h)return!1;r()}}b.buffer=e,b.callback=v},s.inherits(m,C),s.inherits(w,C),s.inherits(_,C),s.inherits(E,C),s.inherits(A,C),s.inherits(I,C),s.inherits(S,C)}).call(this,r(8))},function(e,t,r){"use strict";(function(e,n){var i=r(24),o=r(234),s=r(235),a=r(238),f=r(241);for(var u in f)t[u]=f[u];t.NONE=0,t.DEFLATE=1,t.INFLATE=2,t.GZIP=3,t.GUNZIP=4,t.DEFLATERAW=5,t.INFLATERAW=6,t.UNZIP=7;function c(e){if("number"!=typeof e||et.UNZIP)throw new TypeError("Bad argument");this.dictionary=null,this.err=0,this.flush=0,this.init_done=!1,this.level=0,this.memLevel=0,this.mode=e,this.strategy=0,this.windowBits=0,this.write_in_progress=!1,this.pending_close=!1,this.gzip_id_bytes_read=0}c.prototype.close=function(){this.write_in_progress?this.pending_close=!0:(this.pending_close=!1,i(this.init_done,"close before init"),i(this.mode<=t.UNZIP),this.mode===t.DEFLATE||this.mode===t.GZIP||this.mode===t.DEFLATERAW?s.deflateEnd(this.strm):this.mode!==t.INFLATE&&this.mode!==t.GUNZIP&&this.mode!==t.INFLATERAW&&this.mode!==t.UNZIP||a.inflateEnd(this.strm),this.mode=t.NONE,this.dictionary=null)},c.prototype.write=function(e,t,r,n,i,o,s){return this._write(!0,e,t,r,n,i,o,s)},c.prototype.writeSync=function(e,t,r,n,i,o,s){return this._write(!1,e,t,r,n,i,o,s)},c.prototype._write=function(r,o,s,a,f,u,c,h){if(i.equal(arguments.length,8),i(this.init_done,"write before init"),i(this.mode!==t.NONE,"already finalized"),i.equal(!1,this.write_in_progress,"write already in progress"),i.equal(!1,this.pending_close,"close is pending"),this.write_in_progress=!0,i.equal(!1,void 0===o,"must provide flush value"),this.write_in_progress=!0,o!==t.Z_NO_FLUSH&&o!==t.Z_PARTIAL_FLUSH&&o!==t.Z_SYNC_FLUSH&&o!==t.Z_FULL_FLUSH&&o!==t.Z_FINISH&&o!==t.Z_BLOCK)throw new Error("Invalid flush value");if(null==s&&(s=e.alloc(0),f=0,a=0),this.strm.avail_in=f,this.strm.input=s,this.strm.next_in=a,this.strm.avail_out=h,this.strm.output=u,this.strm.next_out=c,this.flush=o,!r)return this._process(),this._checkError()?this._afterSync():void 0;var l=this;return n.nextTick(function(){l._process(),l._after()}),this},c.prototype._afterSync=function(){var e=this.strm.avail_out,t=this.strm.avail_in;return this.write_in_progress=!1,[t,e]},c.prototype._process=function(){var e=null;switch(this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=s.deflate(this.strm,this.flush);break;case t.UNZIP:switch(this.strm.avail_in>0&&(e=this.strm.next_in),this.gzip_id_bytes_read){case 0:if(null===e)break;if(31!==this.strm.input[e]){this.mode=t.INFLATE;break}if(this.gzip_id_bytes_read=1,e++,1===this.strm.avail_in)break;case 1:if(null===e)break;139===this.strm.input[e]?(this.gzip_id_bytes_read=2,this.mode=t.GUNZIP):this.mode=t.INFLATE;break;default:throw new Error("invalid number of gzip magic number bytes read")}case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:for(this.err=a.inflate(this.strm,this.flush),this.err===t.Z_NEED_DICT&&this.dictionary&&(this.err=a.inflateSetDictionary(this.strm,this.dictionary),this.err===t.Z_OK?this.err=a.inflate(this.strm,this.flush):this.err===t.Z_DATA_ERROR&&(this.err=t.Z_NEED_DICT));this.strm.avail_in>0&&this.mode===t.GUNZIP&&this.err===t.Z_STREAM_END&&0!==this.strm.next_in[0];)this.reset(),this.err=a.inflate(this.strm,this.flush);break;default:throw new Error("Unknown mode "+this.mode)}},c.prototype._checkError=function(){switch(this.err){case t.Z_OK:case t.Z_BUF_ERROR:if(0!==this.strm.avail_out&&this.flush===t.Z_FINISH)return this._error("unexpected end of file"),!1;break;case t.Z_STREAM_END:break;case t.Z_NEED_DICT:return null==this.dictionary?this._error("Missing dictionary"):this._error("Bad dictionary"),!1;default:return this._error("Zlib error"),!1}return!0},c.prototype._after=function(){if(this._checkError()){var e=this.strm.avail_out,t=this.strm.avail_in;this.write_in_progress=!1,this.callback(t,e),this.pending_close&&this.close()}},c.prototype._error=function(e){this.strm.msg&&(e=this.strm.msg),this.onerror(e,this.err),this.write_in_progress=!1,this.pending_close&&this.close()},c.prototype.init=function(e,r,n,o,s){i(4===arguments.length||5===arguments.length,"init(windowBits, level, memLevel, strategy, [dictionary])"),i(e>=8&&e<=15,"invalid windowBits"),i(r>=-1&&r<=9,"invalid compression level"),i(n>=1&&n<=9,"invalid memlevel"),i(o===t.Z_FILTERED||o===t.Z_HUFFMAN_ONLY||o===t.Z_RLE||o===t.Z_FIXED||o===t.Z_DEFAULT_STRATEGY,"invalid strategy"),this._init(r,e,n,o,s),this._setDictionary()},c.prototype.params=function(){throw new Error("deflateParams Not supported")},c.prototype.reset=function(){this._reset(),this._setDictionary()},c.prototype._init=function(e,r,n,i,f){switch(this.level=e,this.windowBits=r,this.memLevel=n,this.strategy=i,this.flush=t.Z_NO_FLUSH,this.err=t.Z_OK,this.mode!==t.GZIP&&this.mode!==t.GUNZIP||(this.windowBits+=16),this.mode===t.UNZIP&&(this.windowBits+=32),this.mode!==t.DEFLATERAW&&this.mode!==t.INFLATERAW||(this.windowBits=-1*this.windowBits),this.strm=new o,this.mode){case t.DEFLATE:case t.GZIP:case t.DEFLATERAW:this.err=s.deflateInit2(this.strm,this.level,t.Z_DEFLATED,this.windowBits,this.memLevel,this.strategy);break;case t.INFLATE:case t.GUNZIP:case t.INFLATERAW:case t.UNZIP:this.err=a.inflateInit2(this.strm,this.windowBits);break;default:throw new Error("Unknown mode "+this.mode)}this.err!==t.Z_OK&&this._error("Init error"),this.dictionary=f,this.write_in_progress=!1,this.init_done=!0},c.prototype._setDictionary=function(){if(null!=this.dictionary){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:this.err=s.deflateSetDictionary(this.strm,this.dictionary)}this.err!==t.Z_OK&&this._error("Failed to set dictionary")}},c.prototype._reset=function(){switch(this.err=t.Z_OK,this.mode){case t.DEFLATE:case t.DEFLATERAW:case t.GZIP:this.err=s.deflateReset(this.strm);break;case t.INFLATE:case t.INFLATERAW:case t.GUNZIP:this.err=a.inflateReset(this.strm)}this.err!==t.Z_OK&&this._error("Failed to reset stream")},t.Zlib=c}).call(this,r(1).Buffer,r(8))},function(e,t,r){"use strict";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},function(e,t,r){"use strict";var n,i=r(34),o=r(236),s=r(108),a=r(109),f=r(237),u=0,c=1,h=3,l=4,p=5,d=0,g=1,y=-2,b=-3,v=-5,m=-1,w=1,_=2,E=3,A=4,I=0,S=2,T=8,C=9,O=15,P=8,k=286,x=30,B=19,D=2*k+1,N=15,U=3,L=258,R=L+U+1,M=32,j=42,F=69,H=73,Q=91,q=103,z=113,V=666,K=1,Y=2,G=3,Z=4,W=3;function $(e,t){return e.msg=f[t],t}function J(e){return(e<<1)-(e>4?9:0)}function X(e){for(var t=e.length;--t>=0;)e[t]=0}function ee(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(i.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function te(e,t){o._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,ee(e.strm)}function re(e,t){e.pending_buf[e.pending++]=t}function ne(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function ie(e,t){var r,n,i=e.max_chain_length,o=e.strstart,s=e.prev_length,a=e.nice_match,f=e.strstart>e.w_size-R?e.strstart-(e.w_size-R):0,u=e.window,c=e.w_mask,h=e.prev,l=e.strstart+L,p=u[o+s-1],d=u[o+s];e.prev_length>=e.good_match&&(i>>=2),a>e.lookahead&&(a=e.lookahead);do{if(u[(r=t)+s]===d&&u[r+s-1]===p&&u[r]===u[o]&&u[++r]===u[o+1]){o+=2,r++;do{}while(u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&u[++o]===u[++r]&&os){if(e.match_start=t,s=n,n>=a)break;p=u[o+s-1],d=u[o+s]}}}while((t=h[t&c])>f&&0!=--i);return s<=e.lookahead?s:e.lookahead}function oe(e){var t,r,n,o,f,u,c,h,l,p,d=e.w_size;do{if(o=e.window_size-e.lookahead-e.strstart,e.strstart>=d+(d-R)){i.arraySet(e.window,e.window,d,d,0),e.match_start-=d,e.strstart-=d,e.block_start-=d,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=d?n-d:0}while(--r);t=r=d;do{n=e.prev[--t],e.prev[t]=n>=d?n-d:0}while(--r);o+=d}if(0===e.strm.avail_in)break;if(u=e.strm,c=e.window,h=e.strstart+e.lookahead,l=o,p=void 0,(p=u.avail_in)>l&&(p=l),r=0===p?0:(u.avail_in-=p,i.arraySet(c,u.input,u.next_in,p,h),1===u.state.wrap?u.adler=s(u.adler,c,p,h):2===u.state.wrap&&(u.adler=a(u.adler,c,p,h)),u.next_in+=p,u.total_in+=p,p),e.lookahead+=r,e.lookahead+e.insert>=U)for(f=e.strstart-e.insert,e.ins_h=e.window[f],e.ins_h=(e.ins_h<=U&&(e.ins_h=(e.ins_h<=U)if(n=o._tr_tally(e,e.strstart-e.match_start,e.match_length-U),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=U){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=U&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=U-1)),e.prev_length>=U&&e.match_length<=e.prev_length){i=e.strstart+e.lookahead-U,n=o._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-U),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=i&&(e.ins_h=(e.ins_h<15&&(a=2,n-=16),o<1||o>C||r!==T||n<8||n>15||t<0||t>9||s<0||s>A)return $(e,y);8===n&&(n=9);var f=new ue;return e.state=f,f.strm=e,f.wrap=a,f.gzhead=null,f.w_bits=n,f.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(oe(e),0===e.lookahead&&t===u)return K;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,te(e,!1),0===e.strm.avail_out))return K;if(e.strstart-e.block_start>=e.w_size-R&&(te(e,!1),0===e.strm.avail_out))return K}return e.insert=0,t===l?(te(e,!0),0===e.strm.avail_out?G:Z):(e.strstart>e.block_start&&(te(e,!1),e.strm.avail_out),K)}),new fe(4,4,8,4,se),new fe(4,5,16,8,se),new fe(4,6,32,32,se),new fe(4,4,16,16,ae),new fe(8,16,32,32,ae),new fe(8,16,128,128,ae),new fe(8,32,128,256,ae),new fe(32,128,258,1024,ae),new fe(32,258,258,4096,ae)],t.deflateInit=function(e,t){return le(e,t,T,O,P,I)},t.deflateInit2=le,t.deflateReset=he,t.deflateResetKeep=ce,t.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?y:(e.state.gzhead=t,d):y},t.deflate=function(e,t){var r,i,s,f;if(!e||!e.state||t>p||t<0)return e?$(e,y):y;if(i=e.state,!e.output||!e.input&&0!==e.avail_in||i.status===V&&t!==l)return $(e,0===e.avail_out?v:y);if(i.strm=e,r=i.last_flush,i.last_flush=t,i.status===j)if(2===i.wrap)e.adler=0,re(i,31),re(i,139),re(i,8),i.gzhead?(re(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),re(i,255&i.gzhead.time),re(i,i.gzhead.time>>8&255),re(i,i.gzhead.time>>16&255),re(i,i.gzhead.time>>24&255),re(i,9===i.level?2:i.strategy>=_||i.level<2?4:0),re(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(re(i,255&i.gzhead.extra.length),re(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(e.adler=a(e.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=F):(re(i,0),re(i,0),re(i,0),re(i,0),re(i,0),re(i,9===i.level?2:i.strategy>=_||i.level<2?4:0),re(i,W),i.status=z);else{var b=T+(i.w_bits-8<<4)<<8;b|=(i.strategy>=_||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(b|=M),b+=31-b%31,i.status=z,ne(i,b),0!==i.strstart&&(ne(i,e.adler>>>16),ne(i,65535&e.adler)),e.adler=1}if(i.status===F)if(i.gzhead.extra){for(s=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>s&&(e.adler=a(e.adler,i.pending_buf,i.pending-s,s)),ee(e),s=i.pending,i.pending!==i.pending_buf_size));)re(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>s&&(e.adler=a(e.adler,i.pending_buf,i.pending-s,s)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=H)}else i.status=H;if(i.status===H)if(i.gzhead.name){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(e.adler=a(e.adler,i.pending_buf,i.pending-s,s)),ee(e),s=i.pending,i.pending===i.pending_buf_size)){f=1;break}f=i.gzindexs&&(e.adler=a(e.adler,i.pending_buf,i.pending-s,s)),0===f&&(i.gzindex=0,i.status=Q)}else i.status=Q;if(i.status===Q)if(i.gzhead.comment){s=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>s&&(e.adler=a(e.adler,i.pending_buf,i.pending-s,s)),ee(e),s=i.pending,i.pending===i.pending_buf_size)){f=1;break}f=i.gzindexs&&(e.adler=a(e.adler,i.pending_buf,i.pending-s,s)),0===f&&(i.status=q)}else i.status=q;if(i.status===q&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&ee(e),i.pending+2<=i.pending_buf_size&&(re(i,255&e.adler),re(i,e.adler>>8&255),e.adler=0,i.status=z)):i.status=z),0!==i.pending){if(ee(e),0===e.avail_out)return i.last_flush=-1,d}else if(0===e.avail_in&&J(t)<=J(r)&&t!==l)return $(e,v);if(i.status===V&&0!==e.avail_in)return $(e,v);if(0!==e.avail_in||0!==i.lookahead||t!==u&&i.status!==V){var m=i.strategy===_?function(e,t){for(var r;;){if(0===e.lookahead&&(oe(e),0===e.lookahead)){if(t===u)return K;break}if(e.match_length=0,r=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(te(e,!1),0===e.strm.avail_out))return K}return e.insert=0,t===l?(te(e,!0),0===e.strm.avail_out?G:Z):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?K:Y}(i,t):i.strategy===E?function(e,t){for(var r,n,i,s,a=e.window;;){if(e.lookahead<=L){if(oe(e),e.lookahead<=L&&t===u)return K;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=U&&e.strstart>0&&(n=a[i=e.strstart-1])===a[++i]&&n===a[++i]&&n===a[++i]){s=e.strstart+L;do{}while(n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&n===a[++i]&&ie.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=U?(r=o._tr_tally(e,1,e.match_length-U),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=o._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(te(e,!1),0===e.strm.avail_out))return K}return e.insert=0,t===l?(te(e,!0),0===e.strm.avail_out?G:Z):e.last_lit&&(te(e,!1),0===e.strm.avail_out)?K:Y}(i,t):n[i.level].func(i,t);if(m!==G&&m!==Z||(i.status=V),m===K||m===G)return 0===e.avail_out&&(i.last_flush=-1),d;if(m===Y&&(t===c?o._tr_align(i):t!==p&&(o._tr_stored_block(i,0,0,!1),t===h&&(X(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),ee(e),0===e.avail_out))return i.last_flush=-1,d}return t!==l?d:i.wrap<=0?g:(2===i.wrap?(re(i,255&e.adler),re(i,e.adler>>8&255),re(i,e.adler>>16&255),re(i,e.adler>>24&255),re(i,255&e.total_in),re(i,e.total_in>>8&255),re(i,e.total_in>>16&255),re(i,e.total_in>>24&255)):(ne(i,e.adler>>>16),ne(i,65535&e.adler)),ee(e),i.wrap>0&&(i.wrap=-i.wrap),0!==i.pending?d:g)},t.deflateEnd=function(e){var t;return e&&e.state?(t=e.state.status)!==j&&t!==F&&t!==H&&t!==Q&&t!==q&&t!==z&&t!==V?$(e,y):(e.state=null,t===z?$(e,b):d):y},t.deflateSetDictionary=function(e,t){var r,n,o,a,f,u,c,h,l=t.length;if(!e||!e.state)return y;if(2===(a=(r=e.state).wrap)||1===a&&r.status!==j||r.lookahead)return y;for(1===a&&(e.adler=s(e.adler,t,l,0)),r.wrap=0,l>=r.w_size&&(0===a&&(X(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new i.Buf8(r.w_size),i.arraySet(h,t,l-r.w_size,r.w_size,0),t=h,l=r.w_size),f=e.avail_in,u=e.next_in,c=e.input,e.avail_in=l,e.next_in=0,e.input=t,oe(r);r.lookahead>=U;){n=r.strstart,o=r.lookahead-(U-1);do{r.ins_h=(r.ins_h<=0;)e[t]=0}var u=0,c=1,h=2,l=29,p=256,d=p+1+l,g=30,y=19,b=2*d+1,v=15,m=16,w=7,_=256,E=16,A=17,I=18,S=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],T=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],C=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],O=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],P=new Array(2*(d+2));f(P);var k=new Array(2*g);f(k);var x=new Array(512);f(x);var B=new Array(256);f(B);var D=new Array(l);f(D);var N,U,L,R=new Array(g);function M(e,t,r,n,i){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=i,this.has_stree=e&&e.length}function j(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function F(e){return e<256?x[e]:x[256+(e>>>7)]}function H(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function Q(e,t,r){e.bi_valid>m-r?(e.bi_buf|=t<>m-e.bi_valid,e.bi_valid+=r-m):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function V(e,t,r){var n,i,o=new Array(v+1),s=0;for(n=1;n<=v;n++)o[n]=s=s+r[n-1]<<1;for(i=0;i<=t;i++){var a=e[2*i+1];0!==a&&(e[2*i]=z(o[a]++,a))}}function K(e){var t;for(t=0;t8?H(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function G(e,t,r,n){var i=2*t,o=2*r;return e[i]>1;r>=1;r--)Z(e,o,r);i=f;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],Z(e,o,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,o[2*i]=o[2*r]+o[2*n],e.depth[i]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,o[2*r+1]=o[2*n+1]=i,e.heap[1]=i++,Z(e,o,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,i,o,s,a,f=t.dyn_tree,u=t.max_code,c=t.stat_desc.static_tree,h=t.stat_desc.has_stree,l=t.stat_desc.extra_bits,p=t.stat_desc.extra_base,d=t.stat_desc.max_length,g=0;for(o=0;o<=v;o++)e.bl_count[o]=0;for(f[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;rd&&(o=d,g++),f[2*n+1]=o,n>u||(e.bl_count[o]++,s=0,n>=p&&(s=l[n-p]),a=f[2*n],e.opt_len+=a*(o+s),h&&(e.static_len+=a*(c[2*n+1]+s)));if(0!==g){do{for(o=d-1;0===e.bl_count[o];)o--;e.bl_count[o]--,e.bl_count[o+1]+=2,e.bl_count[d]--,g-=2}while(g>0);for(o=d;0!==o;o--)for(n=e.bl_count[o];0!==n;)(i=e.heap[--r])>u||(f[2*i+1]!==o&&(e.opt_len+=(o-f[2*i+1])*f[2*i],f[2*i+1]=o),n--)}}(e,t),V(o,u,e.bl_count)}function J(e,t,r){var n,i,o=-1,s=t[1],a=0,f=7,u=4;for(0===s&&(f=138,u=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)i=s,s=t[2*(n+1)+1],++a>=7;n0?(e.strm.data_type===a&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return o;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return s;for(t=32;t=3&&0===e.bl_tree[2*O[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),f=e.opt_len+3+7>>>3,(u=e.static_len+3+7>>>3)<=f&&(f=u)):f=u=r+5,r+4<=f&&-1!==t?te(e,t,r,n):e.strategy===i||u===f?(Q(e,(c<<1)+(n?1:0),3),W(e,P,k)):(Q(e,(h<<1)+(n?1:0),3),function(e,t,r,n){var i;for(Q(e,t-257,5),Q(e,r-1,5),Q(e,n-4,4),i=0;i>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(B[r]+p+1)]++,e.dyn_dtree[2*F(t)]++),e.last_lit===e.lit_bufsize-1},t._tr_align=function(e){Q(e,c<<1,3),q(e,_,P),function(e){16===e.bi_valid?(H(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},function(e,t,r){"use strict";e.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},function(e,t,r){"use strict";var n=r(34),i=r(108),o=r(109),s=r(239),a=r(240),f=0,u=1,c=2,h=4,l=5,p=6,d=0,g=1,y=2,b=-2,v=-3,m=-4,w=-5,_=8,E=1,A=2,I=3,S=4,T=5,C=6,O=7,P=8,k=9,x=10,B=11,D=12,N=13,U=14,L=15,R=16,M=17,j=18,F=19,H=20,Q=21,q=22,z=23,V=24,K=25,Y=26,G=27,Z=28,W=29,$=30,J=31,X=32,ee=852,te=592,re=15;function ne(e){return(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function ie(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function oe(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=E,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(ee),t.distcode=t.distdyn=new n.Buf32(te),t.sane=1,t.back=-1,d):b}function se(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,oe(e)):b}function ae(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?b:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,se(e))):b}function fe(e,t){var r,n;return e?(n=new ie,e.state=n,n.window=null,(r=ae(e,t))!==d&&(e.state=null),r):b}var ue,ce,he=!0;function le(e){if(he){var t;for(ue=new n.Buf32(512),ce=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(a(u,e.lens,0,288,ue,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;a(c,e.lens,0,32,ce,0,e.work,{bits:5}),he=!1}e.lencode=ue,e.lenbits=9,e.distcode=ce,e.distbits=5}function pe(e,t,r,i){var o,s=e.state;return null===s.window&&(s.wsize=1<=s.wsize?(n.arraySet(s.window,t,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):((o=s.wsize-s.wnext)>i&&(o=i),n.arraySet(s.window,t,r-i,o,s.wnext),(i-=o)?(n.arraySet(s.window,t,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=o,s.wnext===s.wsize&&(s.wnext=0),s.whave>>8&255,r.check=o(r.check,Ce,2,0),ae=0,fe=0,r.mode=A;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&ae)<<8)+(ae>>8))%31){e.msg="incorrect header check",r.mode=$;break}if((15&ae)!==_){e.msg="unknown compression method",r.mode=$;break}if(fe-=4,Ee=8+(15&(ae>>>=4)),0===r.wbits)r.wbits=Ee;else if(Ee>r.wbits){e.msg="invalid window size",r.mode=$;break}r.dmax=1<>8&1),512&r.flags&&(Ce[0]=255&ae,Ce[1]=ae>>>8&255,r.check=o(r.check,Ce,2,0)),ae=0,fe=0,r.mode=I;case I:for(;fe<32;){if(0===oe)break e;oe--,ae+=ee[re++]<>>8&255,Ce[2]=ae>>>16&255,Ce[3]=ae>>>24&255,r.check=o(r.check,Ce,4,0)),ae=0,fe=0,r.mode=S;case S:for(;fe<16;){if(0===oe)break e;oe--,ae+=ee[re++]<>8),512&r.flags&&(Ce[0]=255&ae,Ce[1]=ae>>>8&255,r.check=o(r.check,Ce,2,0)),ae=0,fe=0,r.mode=T;case T:if(1024&r.flags){for(;fe<16;){if(0===oe)break e;oe--,ae+=ee[re++]<>>8&255,r.check=o(r.check,Ce,2,0)),ae=0,fe=0}else r.head&&(r.head.extra=null);r.mode=C;case C:if(1024&r.flags&&((he=r.length)>oe&&(he=oe),he&&(r.head&&(Ee=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,ee,re,he,Ee)),512&r.flags&&(r.check=o(r.check,ee,he,re)),oe-=he,re+=he,r.length-=he),r.length))break e;r.length=0,r.mode=O;case O:if(2048&r.flags){if(0===oe)break e;he=0;do{Ee=ee[re+he++],r.head&&Ee&&r.length<65536&&(r.head.name+=String.fromCharCode(Ee))}while(Ee&&he>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=D;break;case x:for(;fe<32;){if(0===oe)break e;oe--,ae+=ee[re++]<>>=7&fe,fe-=7&fe,r.mode=G;break}for(;fe<3;){if(0===oe)break e;oe--,ae+=ee[re++]<>>=1)){case 0:r.mode=U;break;case 1:if(le(r),r.mode=H,t===p){ae>>>=2,fe-=2;break e}break;case 2:r.mode=M;break;case 3:e.msg="invalid block type",r.mode=$}ae>>>=2,fe-=2;break;case U:for(ae>>>=7&fe,fe-=7&fe;fe<32;){if(0===oe)break e;oe--,ae+=ee[re++]<>>16^65535)){e.msg="invalid stored block lengths",r.mode=$;break}if(r.length=65535&ae,ae=0,fe=0,r.mode=L,t===p)break e;case L:r.mode=R;case R:if(he=r.length){if(he>oe&&(he=oe),he>se&&(he=se),0===he)break e;n.arraySet(te,ee,re,he,ie),oe-=he,re+=he,se-=he,ie+=he,r.length-=he;break}r.mode=D;break;case M:for(;fe<14;){if(0===oe)break e;oe--,ae+=ee[re++]<>>=5,fe-=5,r.ndist=1+(31&ae),ae>>>=5,fe-=5,r.ncode=4+(15&ae),ae>>>=4,fe-=4,r.nlen>286||r.ndist>30){e.msg="too many length or distance symbols",r.mode=$;break}r.have=0,r.mode=j;case j:for(;r.have>>=3,fe-=3}for(;r.have<19;)r.lens[Oe[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,Ie={bits:r.lenbits},Ae=a(f,r.lens,0,19,r.lencode,0,r.work,Ie),r.lenbits=Ie.bits,Ae){e.msg="invalid code lengths set",r.mode=$;break}r.have=0,r.mode=F;case F:for(;r.have>>16&255,ve=65535&Te,!((ye=Te>>>24)<=fe);){if(0===oe)break e;oe--,ae+=ee[re++]<>>=ye,fe-=ye,r.lens[r.have++]=ve;else{if(16===ve){for(Se=ye+2;fe>>=ye,fe-=ye,0===r.have){e.msg="invalid bit length repeat",r.mode=$;break}Ee=r.lens[r.have-1],he=3+(3&ae),ae>>>=2,fe-=2}else if(17===ve){for(Se=ye+3;fe>>=ye)),ae>>>=3,fe-=3}else{for(Se=ye+7;fe>>=ye)),ae>>>=7,fe-=7}if(r.have+he>r.nlen+r.ndist){e.msg="invalid bit length repeat",r.mode=$;break}for(;he--;)r.lens[r.have++]=Ee}}if(r.mode===$)break;if(0===r.lens[256]){e.msg="invalid code -- missing end-of-block",r.mode=$;break}if(r.lenbits=9,Ie={bits:r.lenbits},Ae=a(u,r.lens,0,r.nlen,r.lencode,0,r.work,Ie),r.lenbits=Ie.bits,Ae){e.msg="invalid literal/lengths set",r.mode=$;break}if(r.distbits=6,r.distcode=r.distdyn,Ie={bits:r.distbits},Ae=a(c,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,Ie),r.distbits=Ie.bits,Ae){e.msg="invalid distances set",r.mode=$;break}if(r.mode=H,t===p)break e;case H:r.mode=Q;case Q:if(oe>=6&&se>=258){e.next_out=ie,e.avail_out=se,e.next_in=re,e.avail_in=oe,r.hold=ae,r.bits=fe,s(e,ce),ie=e.next_out,te=e.output,se=e.avail_out,re=e.next_in,ee=e.input,oe=e.avail_in,ae=r.hold,fe=r.bits,r.mode===D&&(r.back=-1);break}for(r.back=0;be=(Te=r.lencode[ae&(1<>>16&255,ve=65535&Te,!((ye=Te>>>24)<=fe);){if(0===oe)break e;oe--,ae+=ee[re++]<>me)])>>>16&255,ve=65535&Te,!(me+(ye=Te>>>24)<=fe);){if(0===oe)break e;oe--,ae+=ee[re++]<>>=me,fe-=me,r.back+=me}if(ae>>>=ye,fe-=ye,r.back+=ye,r.length=ve,0===be){r.mode=Y;break}if(32&be){r.back=-1,r.mode=D;break}if(64&be){e.msg="invalid literal/length code",r.mode=$;break}r.extra=15&be,r.mode=q;case q:if(r.extra){for(Se=r.extra;fe>>=r.extra,fe-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=z;case z:for(;be=(Te=r.distcode[ae&(1<>>16&255,ve=65535&Te,!((ye=Te>>>24)<=fe);){if(0===oe)break e;oe--,ae+=ee[re++]<>me)])>>>16&255,ve=65535&Te,!(me+(ye=Te>>>24)<=fe);){if(0===oe)break e;oe--,ae+=ee[re++]<>>=me,fe-=me,r.back+=me}if(ae>>>=ye,fe-=ye,r.back+=ye,64&be){e.msg="invalid distance code",r.mode=$;break}r.offset=ve,r.extra=15&be,r.mode=V;case V:if(r.extra){for(Se=r.extra;fe>>=r.extra,fe-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg="invalid distance too far back",r.mode=$;break}r.mode=K;case K:if(0===se)break e;if(he=ce-se,r.offset>he){if((he=r.offset-he)>r.whave&&r.sane){e.msg="invalid distance too far back",r.mode=$;break}he>r.wnext?(he-=r.wnext,de=r.wsize-he):de=r.wnext-he,he>r.length&&(he=r.length),ge=r.window}else ge=te,de=ie-r.offset,he=r.length;he>se&&(he=se),se-=he,r.length-=he;do{te[ie++]=ge[de++]}while(--he);0===r.length&&(r.mode=Q);break;case Y:if(0===se)break e;te[ie++]=r.length,se--,r.mode=Q;break;case G:if(r.wrap){for(;fe<32;){if(0===oe)break e;oe--,ae|=ee[re++]<>>=w=m>>>24,d-=w,0===(w=m>>>16&255))T[o++]=65535&m;else{if(!(16&w)){if(0==(64&w)){m=g[(65535&m)+(p&(1<>>=w,d-=w),d<15&&(p+=S[n++]<>>=w=m>>>24,d-=w,!(16&(w=m>>>16&255))){if(0==(64&w)){m=y[(65535&m)+(p&(1<f){e.msg="invalid distance too far back",r.mode=30;break e}if(p>>>=w,d-=w,E>(w=o-s)){if((w=E-w)>c&&r.sane){e.msg="invalid distance too far back",r.mode=30;break e}if(A=0,I=l,0===h){if(A+=u-w,w<_){_-=w;do{T[o++]=l[A++]}while(--w);A=o-E,I=T}}else if(h2;)T[o++]=I[A++],T[o++]=I[A++],T[o++]=I[A++],_-=3;_&&(T[o++]=I[A++],_>1&&(T[o++]=I[A++]))}else{A=o-E;do{T[o++]=T[A++],T[o++]=T[A++],T[o++]=T[A++],_-=3}while(_>2);_&&(T[o++]=T[A++],_>1&&(T[o++]=T[A++]))}break}}break}}while(n>3,p&=(1<<(d-=_<<3))-1,e.next_in=n,e.next_out=o,e.avail_in=n=1&&0===U[T];T--);if(C>T&&(C=T),0===T)return u[c++]=20971520,u[c++]=20971520,l.bits=1,0;for(S=1;S0&&(0===e||1!==T))return-1;for(L[1]=0,A=1;A<15;A++)L[A+1]=L[A]+U[A];for(I=0;I852||2===e&&x>592)return 1;for(;;){m=A-P,h[I]v?(w=R[M+h[I]],_=D[N+h[I]]):(w=96,_=0),p=1<>P)+(d-=p)]=m<<24|w<<16|_|0}while(0!==d);for(p=1<>=1;if(0!==p?(B&=p-1,B+=p):B=0,I++,0==--U[A]){if(A===T)break;A=t[r+h[I]]}if(A>C&&(B&y)!==g){for(0===P&&(P=C),b+=S,k=1<<(O=A-P);O+P852||2===e&&x>592)return 1;u[g=B&y]=C<<24|O<<16|b-c|0}}return 0!==B&&(u[b+B]=A-P<<24|64<<16|0),l.bits=C,0}},function(e,t,r){"use strict";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},function(e,t,r){"use strict";(function(t){var n=r(243),i=r(261);function o(e,t,r){return"UTF-8"===t?n.decode(e,r):"UTF-8"===r?n.encode(e,t):n.encode(n.decode(e,r),t)}function s(e){return(e||"").toString().trim().replace(/^latin[\-_]?(\d+)$/i,"ISO-8859-$1").replace(/^win(?:dows)?[\-_]?(\d+)$/i,"WINDOWS-$1").replace(/^utf[\-_]?(\d+)$/i,"UTF-$1").replace(/^ks_c_5601\-1987$/i,"CP949").replace(/^us[\-_]?ascii$/i,"ASCII").toUpperCase()}e.exports.convert=function(e,r,n,a){var f;n=s(n||"UTF-8"),r=s(r||"UTF-8"),e=e||"","UTF-8"!==n&&"string"==typeof e&&(e=new t(e,"binary"));if(n===r)f="string"==typeof e?new t(e):e;else if(i&&!a)try{f=function(e,t,r){var n,o;return o=new i(r,t+"//TRANSLIT//IGNORE"),(n=o.convert(e)).slice(0,n.length)}(e,r,n)}catch(t){console.error(t);try{f=o(e,r,n)}catch(t){console.error(t),f=e}}else try{f=o(e,r,n)}catch(t){console.error(t),f=e}"string"==typeof f&&(f=new t(f,"utf-8"));return f}}).call(this,r(1).Buffer)},function(e,t,r){"use strict";(function(t){var n=r(17).Buffer,i=r(244),o=e.exports;o.encodings=null,o.defaultCharUnicode="�",o.defaultCharSingleByte="?",o.encode=function(e,t,r){e=""+(e||"");var i=o.getEncoder(t,r),s=i.write(e),a=i.end();return a&&a.length>0?n.concat([s,a]):s},o.decode=function(e,t,r){"string"==typeof e&&(o.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),o.skipDecodeWarning=!0),e=n.from(""+(e||""),"binary"));var i=o.getDecoder(t,r),s=i.write(e),a=i.end();return a?s+a:s},o.encodingExists=function(e){try{return o.getCodec(e),!0}catch(e){return!1}},o.toEncoding=o.encode,o.fromEncoding=o.decode,o._codecDataCache={},o.getCodec=function(e){o.encodings||(o.encodings=r(245));for(var t=o._canonicalizeEncoding(e),n={};;){var i=o._codecDataCache[t];if(i)return i;var s=o.encodings[t];switch(typeof s){case"string":t=s;break;case"object":for(var a in s)n[a]=s[a];n.encodingName||(n.encodingName=t),t=s.type;break;case"function":return n.encodingName||(n.encodingName=t),i=new s(n,o),o._codecDataCache[n.encodingName]=i,i;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+t+"')")}}},o._canonicalizeEncoding=function(e){return(""+e).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")},o.getEncoder=function(e,t){var r=o.getCodec(e),n=new r.encoder(t,r);return r.bomAware&&t&&t.addBOM&&(n=new i.PrependBOM(n,t)),n},o.getDecoder=function(e,t){var r=o.getCodec(e),n=new r.decoder(t,r);return!r.bomAware||t&&!1===t.stripBOM||(n=new i.StripBOM(n,t)),n};var s=void 0!==t&&t.versions&&t.versions.node;if(s){var a=s.split(".").map(Number);(a[0]>0||a[1]>=10)&&r(259)(o),r(260)(o)}}).call(this,r(8))},function(e,t,r){"use strict";function n(e,t){this.encoder=e,this.addBOM=!0}function i(e,t){this.decoder=e,this.pass=!1,this.options=t||{}}t.PrependBOM=n,n.prototype.write=function(e){return this.addBOM&&(e="\ufeff"+e,this.addBOM=!1),this.encoder.write(e)},n.prototype.end=function(){return this.encoder.end()},t.StripBOM=i,i.prototype.write=function(e){var t=this.decoder.write(e);return this.pass||!t?t:("\ufeff"===t[0]&&(t=t.slice(1),"function"==typeof this.options.stripBOM&&this.options.stripBOM()),this.pass=!0,t)},i.prototype.end=function(){return this.decoder.end()}},function(e,t,r){"use strict";for(var n=[r(246),r(247),r(248),r(249),r(250),r(251),r(252),r(253)],i=0;i>>6),t[r++]=128+(63&o)):(t[r++]=224+(o>>>12),t[r++]=128+(o>>>6&63),t[r++]=128+(63&o))}return t.slice(0,r)},u.prototype.end=function(){},c.prototype.write=function(e){for(var t=this.acc,r=this.contBytes,n=this.accBytes,i="",o=0;o0&&(i+=this.defaultCharUnicode,r=0),s<128?i+=String.fromCharCode(s):s<224?(t=31&s,r=1,n=1):s<240?(t=15&s,r=2,n=1):i+=this.defaultCharUnicode):r>0?(t=t<<6|63&s,n++,0===--r&&(i+=2===n&&t<128&&t>0?this.defaultCharUnicode:3===n&&t<2048?this.defaultCharUnicode:String.fromCharCode(t))):i+=this.defaultCharUnicode}return this.acc=t,this.contBytes=r,this.accBytes=n,i},c.prototype.end=function(){var e=0;return this.contBytes>0&&(e+=this.defaultCharUnicode),e}},function(e,t,r){"use strict";var n=r(17).Buffer;function i(){}function o(){}function s(){this.overflowByte=-1}function a(e,t){this.iconv=t}function f(e,t){void 0===(e=e||{}).addBOM&&(e.addBOM=!0),this.encoder=t.iconv.getEncoder("utf-16le",e)}function u(e,t){this.decoder=null,this.initialBytes=[],this.initialBytesLen=0,this.options=e||{},this.iconv=t.iconv}function c(e,t){var r=t||"utf-16le";if(e.length>=2)if(254==e[0]&&255==e[1])r="utf-16be";else if(255==e[0]&&254==e[1])r="utf-16le";else{for(var n=0,i=0,o=Math.min(e.length-e.length%2,64),s=0;sn?r="utf-16be":i0&&(e=this.iconv.decode(n.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e},t.utf7imap=d,d.prototype.encoder=g,d.prototype.decoder=y,d.prototype.bomAware=!0,g.prototype.write=function(e){for(var t=this.inBase64,r=this.base64Accum,i=this.base64AccumIdx,o=n.alloc(5*e.length+10),s=0,a=0;a0&&(s+=o.write(r.slice(0,i).toString("base64").replace(/\//g,",").replace(/=+$/,""),s),i=0),o[s++]=l,t=!1),t||(o[s++]=f,f===p&&(o[s++]=l))):(t||(o[s++]=p,t=!0),t&&(r[i++]=f>>8,r[i++]=255&f,i==r.length&&(s+=o.write(r.toString("base64").replace(/\//g,","),s),i=0)))}return this.inBase64=t,this.base64AccumIdx=i,o.slice(0,s)},g.prototype.end=function(){var e=n.alloc(10),t=0;return this.inBase64&&(this.base64AccumIdx>0&&(t+=e.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),t),this.base64AccumIdx=0),e[t++]=l,this.inBase64=!1),e.slice(0,t)};var b=u.slice();b[",".charCodeAt(0)]=!0,y.prototype.write=function(e){for(var t="",r=0,i=this.inBase64,o=this.base64Accum,s=0;s0&&(e=this.iconv.decode(n.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",e}},function(e,t,r){"use strict";var n=r(17).Buffer;function i(e,t){if(!e)throw new Error("SBCS codec is called without the data.");if(!e.chars||128!==e.chars.length&&256!==e.chars.length)throw new Error("Encoding '"+e.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(128===e.chars.length){for(var r="",i=0;i<128;i++)r+=String.fromCharCode(i);e.chars=r+e.chars}this.decodeBuf=n.from(e.chars,"ucs2");var o=n.alloc(65536,t.defaultCharSingleByte.charCodeAt(0));for(i=0;i?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�"},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ "},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ "},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ "},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®‾°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŠÑÒÓÔÕÖ×ØÙÚÛÜÝŽßàáâãäåæçèéêëìíîïšñòóôõö÷øùúûüýžÿ"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"ﺈ×÷ﹱˆ■│─┐┌└┘ﹹﹻﹽﹿﹷﺊﻰﻳﻲﻎﻏﻐﻶﻸﻺﻼ ¤ﺋﺑﺗﺛﺟﺣ،­ﺧﺳ٠١٢٣٤٥٦٧٨٩ﺷ؛ﺻﺿﻊ؟ﻋءآأؤإئابةتثجحخدذرزسشصضطﻇعغﻌﺂﺄﺎﻓـفقكلمنهوىيًٌٍَُِّْﻗﻛﻟﻵﻷﻹﻻﻣﻧﻬﻩ�"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂҐЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђґєѕіїјљњћќ§ўџ"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёҐґЄєІіЇї·√№¤■ "},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦�"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"��������������������������������่กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู้๊๋€฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛¢¬¦ "},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥¦§œ©ª«¬­®¯°±²³Ÿµ¶·Œ¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊�©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ"},maccyrillic:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},macgreek:{type:"_sbcs",chars:"Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�"},maciceland:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macroman:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macromania:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},macthai:{type:"_sbcs",chars:"«»…“”�•‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู\ufeff​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����"},macturkish:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ"},macukraine:{type:"_sbcs",chars:"АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤"},koi8r:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8u:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґ╝╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪Ґ╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8ru:{type:"_sbcs",chars:"─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},koi8t:{type:"_sbcs",chars:"қғ‚Ғ„…†‡�‰ҳ‹ҲҷҶ�Қ‘’“”•–—�™�›�����ӯӮё¤ӣ¦§���«¬­®�°±²Ё�Ӣ¶·�№�»���©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"},armscii8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �և։)(»«—.՝,-֊…՜՛՞ԱաԲբԳգԴդԵեԶզԷէԸըԹթԺժԻիԼլԽխԾծԿկՀհՁձՂղՃճՄմՅյՆնՇշՈոՉչՊպՋջՌռՍսՎվՏտՐրՑցՒւՓփՔքՕօՖֆ՚�"},rk1048:{type:"_sbcs",chars:"ЂЃ‚ѓ„…†‡€‰Љ‹ЊҚҺЏђ‘’“”•–—�™љ›њқһџ ҰұӘ¤Ө¦§Ё©Ғ«¬­®Ү°±Ііөµ¶·ё№ғ»әҢңүАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},tcvn:{type:"_sbcs",chars:"\0ÚỤỪỬỮ\b\t\n\v\f\rỨỰỲỶỸÝỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÀẢÃÁẠẶẬÈẺẼÉẸỆÌỈĨÍỊÒỎÕÓỌỘỜỞỠỚỢÙỦŨ ĂÂÊÔƠƯĐăâêôơưđẶ̀̀̉̃́àảãáạẲằẳẵắẴẮẦẨẪẤỀặầẩẫấậèỂẻẽéẹềểễếệìỉỄẾỒĩíịòỔỏõóọồổỗốộờởỡớợùỖủũúụừửữứựỳỷỹýỵỐ"},georgianacademy:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴჵჶçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},georgianps:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿აბგდევზჱთიკლმნჲოპჟრსტჳუფქღყშჩცძწჭხჴჯჰჵæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"},pt154:{type:"_sbcs",chars:"ҖҒӮғ„…ҶҮҲүҠӢҢҚҺҸҗ‘’“”•–—ҳҷҡӣңқһҹ ЎўЈӨҘҰ§Ё©Ә«¬ӯ®Ҝ°ұІіҙө¶·ё№ә»јҪҫҝАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя"},viscii:{type:"_sbcs",chars:"\0ẲẴẪ\b\t\n\v\f\rỶỸỴ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ẠẮẰẶẤẦẨẬẼẸẾỀỂỄỆỐỒỔỖỘỢỚỜỞỊỎỌỈỦŨỤỲÕắằặấầẩậẽẹếềểễệốồổỗỠƠộờởịỰỨỪỬơớƯÀÁÂÃẢĂẳẵÈÉÊẺÌÍĨỳĐứÒÓÔạỷừửÙÚỹỵÝỡưàáâãảăữẫèéêẻìíĩỉđựòóôõỏọụùúũủýợỮ"},iso646cn:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},iso646jp:{type:"_sbcs",chars:"\0\b\t\n\v\f\r !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_`abcdefghijklmnopqrstuvwxyz{|}‾��������������������������������������������������������������������������������������������������������������������������������"},hproman8:{type:"_sbcs",chars:"€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ÀÂÈÊËÎÏ´ˋˆ¨˜ÙÛ₤¯Ýý°ÇçÑñ¡¿¤£¥§ƒ¢âêôûáéóúàèòùäëöüÅîØÆåíøæÄìÖÜÉïßÔÁÃãÐðÍÌÓÒÕõŠšÚŸÿÞþ·µ¶¾—¼½ªº«■»±�"},macintosh:{type:"_sbcs",chars:"ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ"},ascii:{type:"_sbcs",chars:"��������������������������������������������������������������������������������������������������������������������������������"},tis620:{type:"_sbcs",chars:"���������������������������������กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����"}}},function(e,t,r){"use strict";var n=r(17).Buffer;t._dbcs=u;for(var i=-1,o=-2,s=-1e3,a=new Array(256),f=0;f<256;f++)a[f]=i;function u(e,t){if(this.encodingName=e.encodingName,!e)throw new Error("DBCS codec is called without the data.");if(!e.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=e.table();this.decodeTables=[],this.decodeTables[0]=a.slice(0),this.decodeTableSeq=[];for(var n=0;nt)return-1;for(var r=0,n=e.length;r0;e>>=8)t.push(255&e);0==t.length&&t.push(0);for(var r=this.decodeTables[0],n=t.length-1;n>0;n--){var o=r[t[n]];if(o==i)r[t[n]]=s-this.decodeTables.length,this.decodeTables.push(r=a.slice(0));else{if(!(o<=s))throw new Error("Overwrite byte in "+this.encodingName+", addr: "+e.toString(16));r=this.decodeTables[s-o]}}return r},u.prototype._addDecodeChunk=function(e){var t=parseInt(e[0],16),r=this._getDecodeTrieNode(t);t&=255;for(var n=1;n255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+e[0]+": too long"+t)},u.prototype._getEncodeBucket=function(e){var t=e>>8;return void 0===this.encodeTable[t]&&(this.encodeTable[t]=a.slice(0)),this.encodeTable[t]},u.prototype._setEncodeChar=function(e,t){var r=this._getEncodeBucket(e),n=255&e;r[n]<=-10?this.encodeTableSeq[-10-r[n]][-1]=t:r[n]==i&&(r[n]=t)},u.prototype._setEncodeSequence=function(e,t){var r,n=e[0],o=this._getEncodeBucket(n),s=255&n;o[s]<=-10?r=this.encodeTableSeq[-10-o[s]]:(r={},o[s]!==i&&(r[-1]=o[s]),o[s]=-10-this.encodeTableSeq.length,this.encodeTableSeq.push(r));for(var a=1;a=0?this._setEncodeChar(o,a):o<=s?this._fillEncodeTable(s-o,a<<8,r):o<=-10&&this._setEncodeSequence(this.decodeTableSeq[-10-o],a))}},c.prototype.write=function(e){for(var t=n.alloc(e.length*(this.gb18030?4:3)),r=this.leadSurrogate,o=this.seqObj,s=-1,a=0,f=0;;){if(-1===s){if(a==e.length)break;var u=e.charCodeAt(a++)}else{u=s;s=-1}if(55296<=u&&u<57344)if(u<56320){if(-1===r){r=u;continue}r=u,u=i}else-1!==r?(u=65536+1024*(r-55296)+(u-56320),r=-1):u=i;else-1!==r&&(s=u,u=i,r=-1);var c=i;if(void 0!==o&&u!=i){var h=o[u];if("object"==typeof h){o=h;continue}"number"==typeof h?c=h:null==h&&void 0!==(h=o[-1])&&(c=h,s=u),o=void 0}else if(u>=0){var p=this.encodeTable[u>>8];if(void 0!==p&&(c=p[255&u]),c<=-10){o=this.encodeTableSeq[-10-c];continue}if(c==i&&this.gb18030){var d=l(this.gb18030.uChars,u);if(-1!=d){c=this.gb18030.gbChars[d]+(u-this.gb18030.uChars[d]);t[f++]=129+Math.floor(c/12600),c%=12600,t[f++]=48+Math.floor(c/1260),c%=1260,t[f++]=129+Math.floor(c/10),c%=10,t[f++]=48+c;continue}}}c===i&&(c=this.defaultCharSingleByte),c<256?t[f++]=c:c<65536?(t[f++]=c>>8,t[f++]=255&c):(t[f++]=c>>16,t[f++]=c>>8&255,t[f++]=255&c)}return this.seqObj=o,this.leadSurrogate=r,t.slice(0,f)},c.prototype.end=function(){if(-1!==this.leadSurrogate||void 0!==this.seqObj){var e=n.alloc(10),t=0;if(this.seqObj){var r=this.seqObj[-1];void 0!==r&&(r<256?e[t++]=r:(e[t++]=r>>8,e[t++]=255&r)),this.seqObj=void 0}return-1!==this.leadSurrogate&&(e[t++]=this.defaultCharSingleByte,this.leadSurrogate=-1),e.slice(0,t)}},c.prototype.findIdx=l,h.prototype.write=function(e){var t=n.alloc(2*e.length),r=this.nodeIdx,a=this.prevBuf,f=this.prevBuf.length,u=-this.prevBuf.length;f>0&&(a=n.concat([a,e.slice(0,10)]));for(var c=0,h=0;c=0?e[c]:a[c+f];if((p=this.decodeTables[r][d])>=0);else if(p===i)c=u,p=this.defaultCharUnicode.charCodeAt(0);else if(p===o){var g=u>=0?e.slice(u,c+1):a.slice(u+f,c+1+f),y=12600*(g[0]-129)+1260*(g[1]-48)+10*(g[2]-129)+(g[3]-48),b=l(this.gb18030.gbChars,y);p=this.gb18030.uChars[b]+y-this.gb18030.gbChars[b]}else{if(p<=s){r=s-p;continue}if(!(p<=-10))throw new Error("iconv-lite internal error: invalid decoding table value "+p+" at "+r+"/"+d);for(var v=this.decodeTableSeq[-10-p],m=0;m>8;p=v[v.length-1]}if(p>65535){p-=65536;var w=55296+Math.floor(p/1024);t[h++]=255&w,t[h++]=w>>8,p=56320+p%1024}t[h++]=255&p,t[h++]=p>>8,r=0,u=c+1}return this.nodeIdx=r,this.prevBuf=u>=0?e.slice(u):a.slice(u+f),t.slice(0,h).toString("ucs2")},h.prototype.end=function(){for(var e="";this.prevBuf.length>0;){e+=this.defaultCharUnicode;var t=this.prevBuf.slice(1);this.prevBuf=n.alloc(0),this.nodeIdx=0,t.length>0&&(e+=this.write(t))}return this.nodeIdx=0,e}},function(e,t,r){"use strict";e.exports={shiftjis:{type:"_dbcs",table:function(){return r(254)},encodeAdd:{"¥":92,"‾":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return r(255)},encodeAdd:{"¥":92,"‾":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return r(54)}},gbk:{type:"_dbcs",table:function(){return r(54).concat(r(110))}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return r(54).concat(r(110))},gb18030:function(){return r(256)},encodeSkipVals:[128],encodeAdd:{"€":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return r(257)}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return r(111)}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return r(111).concat(r(258))},encodeSkipVals:[41676]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}},function(e){e.exports=[["0","\0",128],["a1","。",62],["8140"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×"],["8180","÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓"],["81b8","∈∋⊆⊇⊂⊃∪∩"],["81c8","∧∨¬⇒⇔∀∃"],["81da","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["81f0","ʼn♯♭♪†‡¶"],["81fc","◯"],["824f","0",9],["8260","A",25],["8281","a",25],["829f","ぁ",82],["8340","ァ",62],["8380","ム",22],["839f","Α",16,"Σ",6],["83bf","α",16,"σ",6],["8440","А",5,"ЁЖ",25],["8470","а",5,"ёж",7],["8480","о",17],["849f","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["8740","①",19,"Ⅰ",9],["875f","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["877e","㍻"],["8780","〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["889f","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["8940","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円"],["8980","園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["8a40","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫"],["8a80","橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["8b40","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救"],["8b80","朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["8c40","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨"],["8c80","劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["8d40","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降"],["8d80","項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["8e40","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止"],["8e80","死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["8f40","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳"],["8f80","準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["9040","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨"],["9080","逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["9140","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻"],["9180","操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["9240","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄"],["9280","逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["9340","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬"],["9380","凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["9440","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅"],["9480","楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["9540","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷"],["9580","斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["9640","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆"],["9680","摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["9740","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲"],["9780","沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["9840","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["989f","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["9940","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭"],["9980","凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["9a40","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸"],["9a80","噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["9b40","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀"],["9b80","它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["9c40","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠"],["9c80","怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["9d40","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫"],["9d80","捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["9e40","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎"],["9e80","梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["9f40","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯"],["9f80","麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["e040","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝"],["e080","烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e140","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿"],["e180","痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e240","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰"],["e280","窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e340","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷"],["e380","縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e440","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤"],["e480","艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e540","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬"],["e580","蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["e640","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧"],["e680","諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["e740","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜"],["e780","轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["e840","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙"],["e880","閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["e940","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃"],["e980","騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["ea40","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯"],["ea80","黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙"],["ed40","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏"],["ed80","塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["ee40","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙"],["ee80","蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["eeef","ⅰ",9,"¬¦'""],["f040","",62],["f080","",124],["f140","",62],["f180","",124],["f240","",62],["f280","",124],["f340","",62],["f380","",124],["f440","",62],["f480","",124],["f540","",62],["f580","",124],["f640","",62],["f680","",124],["f740","",62],["f780","",124],["f840","",62],["f880","",124],["f940",""],["fa40","ⅰ",9,"Ⅰ",9,"¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊"],["fa80","兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯"],["fb40","涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神"],["fb80","祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙"],["fc40","髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"]]},function(e){e.exports=[["0","\0",127],["8ea1","。",62],["a1a1"," 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈",9,"+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇"],["a2a1","◆□■△▲▽▼※〒→←↑↓〓"],["a2ba","∈∋⊆⊇⊂⊃∪∩"],["a2ca","∧∨¬⇒⇔∀∃"],["a2dc","∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬"],["a2f2","ʼn♯♭♪†‡¶"],["a2fe","◯"],["a3b0","0",9],["a3c1","A",25],["a3e1","a",25],["a4a1","ぁ",82],["a5a1","ァ",85],["a6a1","Α",16,"Σ",6],["a6c1","α",16,"σ",6],["a7a1","А",5,"ЁЖ",25],["a7d1","а",5,"ёж",25],["a8a1","─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂"],["ada1","①",19,"Ⅰ",9],["adc0","㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡"],["addf","㍻〝〟№㏍℡㊤",4,"㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪"],["b0a1","亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭"],["b1a1","院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応"],["b2a1","押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改"],["b3a1","魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱"],["b4a1","粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄"],["b5a1","機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京"],["b6a1","供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈"],["b7a1","掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲"],["b8a1","検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向"],["b9a1","后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込"],["baa1","此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷"],["bba1","察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時"],["bca1","次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周"],["bda1","宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償"],["bea1","勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾"],["bfa1","拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾"],["c0a1","澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線"],["c1a1","繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎"],["c2a1","臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只"],["c3a1","叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵"],["c4a1","帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓"],["c5a1","邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到"],["c6a1","董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入"],["c7a1","如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦"],["c8a1","函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美"],["c9a1","鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服"],["caa1","福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋"],["cba1","法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満"],["cca1","漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒"],["cda1","諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃"],["cea1","痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯"],["cfa1","蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕"],["d0a1","弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲"],["d1a1","僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨"],["d2a1","辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨"],["d3a1","咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉"],["d4a1","圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩"],["d5a1","奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓"],["d6a1","屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏"],["d7a1","廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚"],["d8a1","悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛"],["d9a1","戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼"],["daa1","據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼"],["dba1","曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍"],["dca1","棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣"],["dda1","檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾"],["dea1","沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌"],["dfa1","漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼"],["e0a1","燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱"],["e1a1","瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰"],["e2a1","癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬"],["e3a1","磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐"],["e4a1","筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆"],["e5a1","紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺"],["e6a1","罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋"],["e7a1","隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙"],["e8a1","茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈"],["e9a1","蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙"],["eaa1","蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞"],["eba1","襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫"],["eca1","譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊"],["eda1","蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸"],["eea1","遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮"],["efa1","錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞"],["f0a1","陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰"],["f1a1","顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷"],["f2a1","髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈"],["f3a1","鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠"],["f4a1","堯槇遙瑤凜熙"],["f9a1","纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德"],["faa1","忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱"],["fba1","犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚"],["fca1","釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑"],["fcf1","ⅰ",9,"¬¦'""],["8fa2af","˘ˇ¸˙˝¯˛˚~΄΅"],["8fa2c2","¡¦¿"],["8fa2eb","ºª©®™¤№"],["8fa6e1","ΆΈΉΊΪ"],["8fa6e7","Ό"],["8fa6e9","ΎΫ"],["8fa6ec","Ώ"],["8fa6f1","άέήίϊΐόςύϋΰώ"],["8fa7c2","Ђ",10,"ЎЏ"],["8fa7f2","ђ",10,"ўџ"],["8fa9a1","ÆĐ"],["8fa9a4","Ħ"],["8fa9a6","IJ"],["8fa9a8","ŁĿ"],["8fa9ab","ŊØŒ"],["8fa9af","ŦÞ"],["8fa9c1","æđðħıijĸłŀʼnŋøœßŧþ"],["8faaa1","ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ"],["8faaba","ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ"],["8faba1","áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ"],["8fabbd","ġĥíìïîǐ"],["8fabc5","īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż"],["8fb0a1","丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄"],["8fb1a1","侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐"],["8fb2a1","傒傓傔傖傛傜傞",4,"傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂"],["8fb3a1","凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋"],["8fb4a1","匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿"],["8fb5a1","咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒"],["8fb6a1","嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍",5,"嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤",4,"囱囫园"],["8fb7a1","囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭",4,"坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡"],["8fb8a1","堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭"],["8fb9a1","奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿"],["8fbaa1","嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖",4,"寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩"],["8fbba1","屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤"],["8fbca1","巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪",4,"幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧"],["8fbda1","彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐",4,"忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷"],["8fbea1","悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐",4,"愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥"],["8fbfa1","懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵"],["8fc0a1","捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿"],["8fc1a1","擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝"],["8fc2a1","昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝"],["8fc3a1","杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮",4,"桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏"],["8fc4a1","棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲"],["8fc5a1","樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽"],["8fc6a1","歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖"],["8fc7a1","泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞"],["8fc8a1","湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊"],["8fc9a1","濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔",4,"炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃",4,"焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠"],["8fcaa1","煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻"],["8fcba1","狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽"],["8fcca1","珿琀琁琄琇琊琑琚琛琤琦琨",9,"琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆"],["8fcda1","甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹",5,"疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹"],["8fcea1","瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢",6,"皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢"],["8fcfa1","睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳"],["8fd0a1","碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞"],["8fd1a1","秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰"],["8fd2a1","笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙",5],["8fd3a1","籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝"],["8fd4a1","綞綦綧綪綳綶綷綹緂",4,"緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭"],["8fd5a1","罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮"],["8fd6a1","胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆"],["8fd7a1","艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸"],["8fd8a1","荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓"],["8fd9a1","蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏",4,"蕖蕙蕜",6,"蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼"],["8fdaa1","藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠",4,"虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣"],["8fdba1","蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃",6,"螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵"],["8fdca1","蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊",4,"裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺"],["8fdda1","襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔",4,"觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳"],["8fdea1","誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂",4,"譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆"],["8fdfa1","貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢"],["8fe0a1","踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁"],["8fe1a1","轃轇轏轑",4,"轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃"],["8fe2a1","郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿"],["8fe3a1","釂釃釅釓釔釗釙釚釞釤釥釩釪釬",5,"釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵",4,"鉻鉼鉽鉿銈銉銊銍銎銒銗"],["8fe4a1","銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿",4,"鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶"],["8fe5a1","鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉",4,"鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹"],["8fe6a1","镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂"],["8fe7a1","霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦"],["8fe8a1","頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱",4,"餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵"],["8fe9a1","馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿",4],["8feaa1","鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪",4,"魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸"],["8feba1","鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦",4,"鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻"],["8feca1","鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵"],["8feda1","黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃",4,"齓齕齖齗齘齚齝齞齨齩齭",4,"齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥"]]},function(e){e.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}},function(e){e.exports=[["0","\0",127],["8141","갂갃갅갆갋",4,"갘갞갟갡갢갣갥",6,"갮갲갳갴"],["8161","갵갶갷갺갻갽갾갿걁",9,"걌걎",5,"걕"],["8181","걖걗걙걚걛걝",18,"걲걳걵걶걹걻",4,"겂겇겈겍겎겏겑겒겓겕",6,"겞겢",5,"겫겭겮겱",6,"겺겾겿곀곂곃곅곆곇곉곊곋곍",7,"곖곘",7,"곢곣곥곦곩곫곭곮곲곴곷",4,"곾곿괁괂괃괅괇",4,"괎괐괒괓"],["8241","괔괕괖괗괙괚괛괝괞괟괡",7,"괪괫괮",5],["8261","괶괷괹괺괻괽",6,"굆굈굊",5,"굑굒굓굕굖굗"],["8281","굙",7,"굢굤",7,"굮굯굱굲굷굸굹굺굾궀궃",4,"궊궋궍궎궏궑",10,"궞",5,"궥",17,"궸",7,"귂귃귅귆귇귉",6,"귒귔",7,"귝귞귟귡귢귣귥",18],["8341","귺귻귽귾긂",5,"긊긌긎",5,"긕",7],["8361","긝",18,"긲긳긵긶긹긻긼"],["8381","긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗",4,"깞깢깣깤깦깧깪깫깭깮깯깱",6,"깺깾",5,"꺆",5,"꺍",46,"꺿껁껂껃껅",6,"껎껒",5,"껚껛껝",8],["8441","껦껧껩껪껬껮",5,"껵껶껷껹껺껻껽",8],["8461","꼆꼉꼊꼋꼌꼎꼏꼑",18],["8481","꼤",7,"꼮꼯꼱꼳꼵",6,"꼾꽀꽄꽅꽆꽇꽊",5,"꽑",10,"꽞",5,"꽦",18,"꽺",5,"꾁꾂꾃꾅꾆꾇꾉",6,"꾒꾓꾔꾖",5,"꾝",26,"꾺꾻꾽꾾"],["8541","꾿꿁",5,"꿊꿌꿏",4,"꿕",6,"꿝",4],["8561","꿢",5,"꿪",5,"꿲꿳꿵꿶꿷꿹",6,"뀂뀃"],["8581","뀅",6,"뀍뀎뀏뀑뀒뀓뀕",6,"뀞",9,"뀩",26,"끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞",29,"끾끿낁낂낃낅",6,"낎낐낒",5,"낛낝낞낣낤"],["8641","낥낦낧낪낰낲낶낷낹낺낻낽",6,"냆냊",5,"냒"],["8661","냓냕냖냗냙",6,"냡냢냣냤냦",10],["8681","냱",22,"넊넍넎넏넑넔넕넖넗넚넞",4,"넦넧넩넪넫넭",6,"넶넺",5,"녂녃녅녆녇녉",6,"녒녓녖녗녙녚녛녝녞녟녡",22,"녺녻녽녾녿놁놃",4,"놊놌놎놏놐놑놕놖놗놙놚놛놝"],["8741","놞",9,"놩",15],["8761","놹",18,"뇍뇎뇏뇑뇒뇓뇕"],["8781","뇖",5,"뇞뇠",7,"뇪뇫뇭뇮뇯뇱",7,"뇺뇼뇾",5,"눆눇눉눊눍",6,"눖눘눚",5,"눡",18,"눵",6,"눽",26,"뉙뉚뉛뉝뉞뉟뉡",6,"뉪",4],["8841","뉯",4,"뉶",5,"뉽",6,"늆늇늈늊",4],["8861","늏늒늓늕늖늗늛",4,"늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷"],["8881","늸",15,"닊닋닍닎닏닑닓",4,"닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉",6,"댒댖",5,"댝",54,"덗덙덚덝덠덡덢덣"],["8941","덦덨덪덬덭덯덲덳덵덶덷덹",6,"뎂뎆",5,"뎍"],["8961","뎎뎏뎑뎒뎓뎕",10,"뎢",5,"뎩뎪뎫뎭"],["8981","뎮",21,"돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩",18,"돽",18,"됑",6,"됙됚됛됝됞됟됡",6,"됪됬",7,"됵",15],["8a41","둅",10,"둒둓둕둖둗둙",6,"둢둤둦"],["8a61","둧",4,"둭",18,"뒁뒂"],["8a81","뒃",4,"뒉",19,"뒞",5,"뒥뒦뒧뒩뒪뒫뒭",7,"뒶뒸뒺",5,"듁듂듃듅듆듇듉",6,"듑듒듓듔듖",5,"듞듟듡듢듥듧",4,"듮듰듲",5,"듹",26,"딖딗딙딚딝"],["8b41","딞",5,"딦딫",4,"딲딳딵딶딷딹",6,"땂땆"],["8b61","땇땈땉땊땎땏땑땒땓땕",6,"땞땢",8],["8b81","땫",52,"떢떣떥떦떧떩떬떭떮떯떲떶",4,"떾떿뗁뗂뗃뗅",6,"뗎뗒",5,"뗙",18,"뗭",18],["8c41","똀",15,"똒똓똕똖똗똙",4],["8c61","똞",6,"똦",5,"똭",6,"똵",5],["8c81","똻",12,"뙉",26,"뙥뙦뙧뙩",50,"뚞뚟뚡뚢뚣뚥",5,"뚭뚮뚯뚰뚲",16],["8d41","뛃",16,"뛕",8],["8d61","뛞",17,"뛱뛲뛳뛵뛶뛷뛹뛺"],["8d81","뛻",4,"뜂뜃뜄뜆",33,"뜪뜫뜭뜮뜱",6,"뜺뜼",7,"띅띆띇띉띊띋띍",6,"띖",9,"띡띢띣띥띦띧띩",6,"띲띴띶",5,"띾띿랁랂랃랅",6,"랎랓랔랕랚랛랝랞"],["8e41","랟랡",6,"랪랮",5,"랶랷랹",8],["8e61","럂",4,"럈럊",19],["8e81","럞",13,"럮럯럱럲럳럵",6,"럾렂",4,"렊렋렍렎렏렑",6,"렚렜렞",5,"렦렧렩렪렫렭",6,"렶렺",5,"롁롂롃롅",11,"롒롔",7,"롞롟롡롢롣롥",6,"롮롰롲",5,"롹롺롻롽",7],["8f41","뢅",7,"뢎",17],["8f61","뢠",7,"뢩",6,"뢱뢲뢳뢵뢶뢷뢹",4],["8f81","뢾뢿룂룄룆",5,"룍룎룏룑룒룓룕",7,"룞룠룢",5,"룪룫룭룮룯룱",6,"룺룼룾",5,"뤅",18,"뤙",6,"뤡",26,"뤾뤿륁륂륃륅",6,"륍륎륐륒",5],["9041","륚륛륝륞륟륡",6,"륪륬륮",5,"륶륷륹륺륻륽"],["9061","륾",5,"릆릈릋릌릏",15],["9081","릟",12,"릮릯릱릲릳릵",6,"릾맀맂",5,"맊맋맍맓",4,"맚맜맟맠맢맦맧맩맪맫맭",6,"맶맻",4,"먂",5,"먉",11,"먖",33,"먺먻먽먾먿멁멃멄멅멆"],["9141","멇멊멌멏멐멑멒멖멗멙멚멛멝",6,"멦멪",5],["9161","멲멳멵멶멷멹",9,"몆몈몉몊몋몍",5],["9181","몓",20,"몪몭몮몯몱몳",4,"몺몼몾",5,"뫅뫆뫇뫉",14,"뫚",33,"뫽뫾뫿묁묂묃묅",7,"묎묐묒",5,"묙묚묛묝묞묟묡",6],["9241","묨묪묬",7,"묷묹묺묿",4,"뭆뭈뭊뭋뭌뭎뭑뭒"],["9261","뭓뭕뭖뭗뭙",7,"뭢뭤",7,"뭭",4],["9281","뭲",21,"뮉뮊뮋뮍뮎뮏뮑",18,"뮥뮦뮧뮩뮪뮫뮭",6,"뮵뮶뮸",7,"믁믂믃믅믆믇믉",6,"믑믒믔",35,"믺믻믽믾밁"],["9341","밃",4,"밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵"],["9361","밶밷밹",6,"뱂뱆뱇뱈뱊뱋뱎뱏뱑",8],["9381","뱚뱛뱜뱞",37,"벆벇벉벊벍벏",4,"벖벘벛",4,"벢벣벥벦벩",6,"벲벶",5,"벾벿볁볂볃볅",7,"볎볒볓볔볖볗볙볚볛볝",22,"볷볹볺볻볽"],["9441","볾",5,"봆봈봊",5,"봑봒봓봕",8],["9461","봞",5,"봥",6,"봭",12],["9481","봺",5,"뵁",6,"뵊뵋뵍뵎뵏뵑",6,"뵚",9,"뵥뵦뵧뵩",22,"붂붃붅붆붋",4,"붒붔붖붗붘붛붝",6,"붥",10,"붱",6,"붹",24],["9541","뷒뷓뷖뷗뷙뷚뷛뷝",11,"뷪",5,"뷱"],["9561","뷲뷳뷵뷶뷷뷹",6,"븁븂븄븆",5,"븎븏븑븒븓"],["9581","븕",6,"븞븠",35,"빆빇빉빊빋빍빏",4,"빖빘빜빝빞빟빢빣빥빦빧빩빫",4,"빲빶",4,"빾빿뺁뺂뺃뺅",6,"뺎뺒",5,"뺚",13,"뺩",14],["9641","뺸",23,"뻒뻓"],["9661","뻕뻖뻙",6,"뻡뻢뻦",5,"뻭",8],["9681","뻶",10,"뼂",5,"뼊",13,"뼚뼞",33,"뽂뽃뽅뽆뽇뽉",6,"뽒뽓뽔뽖",44],["9741","뾃",16,"뾕",8],["9761","뾞",17,"뾱",7],["9781","뾹",11,"뿆",5,"뿎뿏뿑뿒뿓뿕",6,"뿝뿞뿠뿢",89,"쀽쀾쀿"],["9841","쁀",16,"쁒",5,"쁙쁚쁛"],["9861","쁝쁞쁟쁡",6,"쁪",15],["9881","쁺",21,"삒삓삕삖삗삙",6,"삢삤삦",5,"삮삱삲삷",4,"삾샂샃샄샆샇샊샋샍샎샏샑",6,"샚샞",5,"샦샧샩샪샫샭",6,"샶샸샺",5,"섁섂섃섅섆섇섉",6,"섑섒섓섔섖",5,"섡섢섥섨섩섪섫섮"],["9941","섲섳섴섵섷섺섻섽섾섿셁",6,"셊셎",5,"셖셗"],["9961","셙셚셛셝",6,"셦셪",5,"셱셲셳셵셶셷셹셺셻"],["9981","셼",8,"솆",5,"솏솑솒솓솕솗",4,"솞솠솢솣솤솦솧솪솫솭솮솯솱",11,"솾",5,"쇅쇆쇇쇉쇊쇋쇍",6,"쇕쇖쇙",6,"쇡쇢쇣쇥쇦쇧쇩",6,"쇲쇴",7,"쇾쇿숁숂숃숅",6,"숎숐숒",5,"숚숛숝숞숡숢숣"],["9a41","숤숥숦숧숪숬숮숰숳숵",16],["9a61","쉆쉇쉉",6,"쉒쉓쉕쉖쉗쉙",6,"쉡쉢쉣쉤쉦"],["9a81","쉧",4,"쉮쉯쉱쉲쉳쉵",6,"쉾슀슂",5,"슊",5,"슑",6,"슙슚슜슞",5,"슦슧슩슪슫슮",5,"슶슸슺",33,"싞싟싡싢싥",5,"싮싰싲싳싴싵싷싺싽싾싿쌁",6,"쌊쌋쌎쌏"],["9b41","쌐쌑쌒쌖쌗쌙쌚쌛쌝",6,"쌦쌧쌪",8],["9b61","쌳",17,"썆",7],["9b81","썎",25,"썪썫썭썮썯썱썳",4,"썺썻썾",5,"쎅쎆쎇쎉쎊쎋쎍",50,"쏁",22,"쏚"],["9c41","쏛쏝쏞쏡쏣",4,"쏪쏫쏬쏮",5,"쏶쏷쏹",5],["9c61","쏿",8,"쐉",6,"쐑",9],["9c81","쐛",8,"쐥",6,"쐭쐮쐯쐱쐲쐳쐵",6,"쐾",9,"쑉",26,"쑦쑧쑩쑪쑫쑭",6,"쑶쑷쑸쑺",5,"쒁",18,"쒕",6,"쒝",12],["9d41","쒪",13,"쒹쒺쒻쒽",8],["9d61","쓆",25],["9d81","쓠",8,"쓪",5,"쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂",9,"씍씎씏씑씒씓씕",6,"씝",10,"씪씫씭씮씯씱",6,"씺씼씾",5,"앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩",6,"앲앶",5,"앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔"],["9e41","얖얙얚얛얝얞얟얡",7,"얪",9,"얶"],["9e61","얷얺얿",4,"엋엍엏엒엓엕엖엗엙",6,"엢엤엦엧"],["9e81","엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑",6,"옚옝",6,"옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉",6,"왒왖",5,"왞왟왡",10,"왭왮왰왲",5,"왺왻왽왾왿욁",6,"욊욌욎",5,"욖욗욙욚욛욝",6,"욦"],["9f41","욨욪",5,"욲욳욵욶욷욻",4,"웂웄웆",5,"웎"],["9f61","웏웑웒웓웕",6,"웞웟웢",5,"웪웫웭웮웯웱웲"],["9f81","웳",4,"웺웻웼웾",5,"윆윇윉윊윋윍",6,"윖윘윚",5,"윢윣윥윦윧윩",6,"윲윴윶윸윹윺윻윾윿읁읂읃읅",4,"읋읎읐읙읚읛읝읞읟읡",6,"읩읪읬",7,"읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛",4,"잢잧",4,"잮잯잱잲잳잵잶잷"],["a041","잸잹잺잻잾쟂",5,"쟊쟋쟍쟏쟑",6,"쟙쟚쟛쟜"],["a061","쟞",5,"쟥쟦쟧쟩쟪쟫쟭",13],["a081","쟻",4,"젂젃젅젆젇젉젋",4,"젒젔젗",4,"젞젟젡젢젣젥",6,"젮젰젲",5,"젹젺젻젽젾젿졁",6,"졊졋졎",5,"졕",26,"졲졳졵졶졷졹졻",4,"좂좄좈좉좊좎",5,"좕",7,"좞좠좢좣좤"],["a141","좥좦좧좩",18,"좾좿죀죁"],["a161","죂죃죅죆죇죉죊죋죍",6,"죖죘죚",5,"죢죣죥"],["a181","죦",14,"죶",5,"죾죿줁줂줃줇",4,"줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈",9,"±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬"],["a241","줐줒",5,"줙",18],["a261","줭",6,"줵",18],["a281","쥈",7,"쥒쥓쥕쥖쥗쥙",6,"쥢쥤",7,"쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®"],["a341","쥱쥲쥳쥵",6,"쥽",10,"즊즋즍즎즏"],["a361","즑",6,"즚즜즞",16],["a381","즯",16,"짂짃짅짆짉짋",4,"짒짔짗짘짛!",58,"₩]",32," ̄"],["a441","짞짟짡짣짥짦짨짩짪짫짮짲",5,"짺짻짽짾짿쨁쨂쨃쨄"],["a461","쨅쨆쨇쨊쨎",5,"쨕쨖쨗쨙",12],["a481","쨦쨧쨨쨪",28,"ㄱ",93],["a541","쩇",4,"쩎쩏쩑쩒쩓쩕",6,"쩞쩢",5,"쩩쩪"],["a561","쩫",17,"쩾",5,"쪅쪆"],["a581","쪇",16,"쪙",14,"ⅰ",9],["a5b0","Ⅰ",9],["a5c1","Α",16,"Σ",6],["a5e1","α",16,"σ",6],["a641","쪨",19,"쪾쪿쫁쫂쫃쫅"],["a661","쫆",5,"쫎쫐쫒쫔쫕쫖쫗쫚",5,"쫡",6],["a681","쫨쫩쫪쫫쫭",6,"쫵",18,"쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃",7],["a741","쬋",4,"쬑쬒쬓쬕쬖쬗쬙",6,"쬢",7],["a761","쬪",22,"쭂쭃쭄"],["a781","쭅쭆쭇쭊쭋쭍쭎쭏쭑",6,"쭚쭛쭜쭞",5,"쭥",7,"㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙",9,"㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰",9,"㎀",4,"㎺",5,"㎐",4,"Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆"],["a841","쭭",10,"쭺",14],["a861","쮉",18,"쮝",6],["a881","쮤",19,"쮹",11,"ÆЪĦ"],["a8a6","IJ"],["a8a8","ĿŁØŒºÞŦŊ"],["a8b1","㉠",27,"ⓐ",25,"①",14,"½⅓⅔¼¾⅛⅜⅝⅞"],["a941","쯅",14,"쯕",10],["a961","쯠쯡쯢쯣쯥쯦쯨쯪",18],["a981","쯽",14,"찎찏찑찒찓찕",6,"찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀",27,"⒜",25,"⑴",14,"¹²³⁴ⁿ₁₂₃₄"],["aa41","찥찦찪찫찭찯찱",6,"찺찿",4,"챆챇챉챊챋챍챎"],["aa61","챏",4,"챖챚",5,"챡챢챣챥챧챩",6,"챱챲"],["aa81","챳챴챶",29,"ぁ",82],["ab41","첔첕첖첗첚첛첝첞첟첡",6,"첪첮",5,"첶첷첹"],["ab61","첺첻첽",6,"쳆쳈쳊",5,"쳑쳒쳓쳕",5],["ab81","쳛",8,"쳥",6,"쳭쳮쳯쳱",12,"ァ",85],["ac41","쳾쳿촀촂",5,"촊촋촍촎촏촑",6,"촚촜촞촟촠"],["ac61","촡촢촣촥촦촧촩촪촫촭",11,"촺",4],["ac81","촿",28,"쵝쵞쵟А",5,"ЁЖ",25],["acd1","а",5,"ёж",25],["ad41","쵡쵢쵣쵥",6,"쵮쵰쵲",5,"쵹",7],["ad61","춁",6,"춉",10,"춖춗춙춚춛춝춞춟"],["ad81","춠춡춢춣춦춨춪",5,"춱",18,"췅"],["ae41","췆",5,"췍췎췏췑",16],["ae61","췢",5,"췩췪췫췭췮췯췱",6,"췺췼췾",4],["ae81","츃츅츆츇츉츊츋츍",6,"츕츖츗츘츚",5,"츢츣츥츦츧츩츪츫"],["af41","츬츭츮츯츲츴츶",19],["af61","칊",13,"칚칛칝칞칢",5,"칪칬"],["af81","칮",5,"칶칷칹칺칻칽",6,"캆캈캊",5,"캒캓캕캖캗캙"],["b041","캚",5,"캢캦",5,"캮",12],["b061","캻",5,"컂",19],["b081","컖",13,"컦컧컩컪컭",6,"컶컺",5,"가각간갇갈갉갊감",7,"같",4,"갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆"],["b141","켂켃켅켆켇켉",6,"켒켔켖",5,"켝켞켟켡켢켣"],["b161","켥",6,"켮켲",5,"켹",11],["b181","콅",14,"콖콗콙콚콛콝",6,"콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸"],["b241","콭콮콯콲콳콵콶콷콹",6,"쾁쾂쾃쾄쾆",5,"쾍"],["b261","쾎",18,"쾢",5,"쾩"],["b281","쾪",5,"쾱",18,"쿅",6,"깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙"],["b341","쿌",19,"쿢쿣쿥쿦쿧쿩"],["b361","쿪",5,"쿲쿴쿶",5,"쿽쿾쿿퀁퀂퀃퀅",5],["b381","퀋",5,"퀒",5,"퀙",19,"끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫",4,"낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝"],["b441","퀮",5,"퀶퀷퀹퀺퀻퀽",6,"큆큈큊",5],["b461","큑큒큓큕큖큗큙",6,"큡",10,"큮큯"],["b481","큱큲큳큵",6,"큾큿킀킂",18,"뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫",4,"닳담답닷",4,"닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥"],["b541","킕",14,"킦킧킩킪킫킭",5],["b561","킳킶킸킺",5,"탂탃탅탆탇탊",5,"탒탖",4],["b581","탛탞탟탡탢탣탥",6,"탮탲",5,"탹",11,"덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸"],["b641","턅",7,"턎",17],["b661","턠",15,"턲턳턵턶턷턹턻턼턽턾"],["b681","턿텂텆",5,"텎텏텑텒텓텕",6,"텞텠텢",5,"텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗"],["b741","텮",13,"텽",6,"톅톆톇톉톊"],["b761","톋",20,"톢톣톥톦톧"],["b781","톩",6,"톲톴톶톷톸톹톻톽톾톿퇁",14,"래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩"],["b841","퇐",7,"퇙",17],["b861","퇫",8,"퇵퇶퇷퇹",13],["b881","툈툊",5,"툑",24,"륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많",4,"맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼"],["b941","툪툫툮툯툱툲툳툵",6,"툾퉀퉂",5,"퉉퉊퉋퉌"],["b961","퉍",14,"퉝",6,"퉥퉦퉧퉨"],["b981","퉩",22,"튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바",4,"받",4,"밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗"],["ba41","튍튎튏튒튓튔튖",5,"튝튞튟튡튢튣튥",6,"튭"],["ba61","튮튯튰튲",5,"튺튻튽튾틁틃",4,"틊틌",5],["ba81","틒틓틕틖틗틙틚틛틝",6,"틦",9,"틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤"],["bb41","틻",4,"팂팄팆",5,"팏팑팒팓팕팗",4,"팞팢팣"],["bb61","팤팦팧팪팫팭팮팯팱",6,"팺팾",5,"퍆퍇퍈퍉"],["bb81","퍊",31,"빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤"],["bc41","퍪",17,"퍾퍿펁펂펃펅펆펇"],["bc61","펈펉펊펋펎펒",5,"펚펛펝펞펟펡",6,"펪펬펮"],["bc81","펯",4,"펵펶펷펹펺펻펽",6,"폆폇폊",5,"폑",5,"샥샨샬샴샵샷샹섀섄섈섐섕서",4,"섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭"],["bd41","폗폙",7,"폢폤",7,"폮폯폱폲폳폵폶폷"],["bd61","폸폹폺폻폾퐀퐂",5,"퐉",13],["bd81","퐗",5,"퐞",25,"숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰"],["be41","퐸",7,"푁푂푃푅",14],["be61","푔",7,"푝푞푟푡푢푣푥",7,"푮푰푱푲"],["be81","푳",4,"푺푻푽푾풁풃",4,"풊풌풎",5,"풕",8,"쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄",6,"엌엎"],["bf41","풞",10,"풪",14],["bf61","풹",18,"퓍퓎퓏퓑퓒퓓퓕"],["bf81","퓖",5,"퓝퓞퓠",7,"퓩퓪퓫퓭퓮퓯퓱",6,"퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염",5,"옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨"],["c041","퓾",5,"픅픆픇픉픊픋픍",6,"픖픘",5],["c061","픞",25],["c081","픸픹픺픻픾픿핁핂핃핅",6,"핎핐핒",5,"핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응",7,"읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊"],["c141","핤핦핧핪핬핮",5,"핶핷핹핺핻핽",6,"햆햊햋"],["c161","햌햍햎햏햑",19,"햦햧"],["c181","햨",31,"점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓"],["c241","헊헋헍헎헏헑헓",4,"헚헜헞",5,"헦헧헩헪헫헭헮"],["c261","헯",4,"헶헸헺",5,"혂혃혅혆혇혉",6,"혒"],["c281","혖",5,"혝혞혟혡혢혣혥",7,"혮",9,"혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻"],["c341","혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝",4],["c361","홢",4,"홨홪",5,"홲홳홵",11],["c381","횁횂횄횆",5,"횎횏횑횒횓횕",7,"횞횠횢",5,"횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층"],["c441","횫횭횮횯횱",7,"횺횼",7,"훆훇훉훊훋"],["c461","훍훎훏훐훒훓훕훖훘훚",5,"훡훢훣훥훦훧훩",4],["c481","훮훯훱훲훳훴훶",5,"훾훿휁휂휃휅",11,"휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼"],["c541","휕휖휗휚휛휝휞휟휡",6,"휪휬휮",5,"휶휷휹"],["c561","휺휻휽",6,"흅흆흈흊",5,"흒흓흕흚",4],["c581","흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵",6,"흾흿힀힂",5,"힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜"],["c641","힍힎힏힑",6,"힚힜힞",5],["c6a1","퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁"],["c7a1","퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠"],["c8a1","혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝"],["caa1","伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕"],["cba1","匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢"],["cca1","瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械"],["cda1","棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜"],["cea1","科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾"],["cfa1","區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴"],["d0a1","鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣"],["d1a1","朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩",5,"那樂",4,"諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉"],["d2a1","納臘蠟衲囊娘廊",4,"乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧",5,"駑魯",10,"濃籠聾膿農惱牢磊腦賂雷尿壘",7,"嫩訥杻紐勒",5,"能菱陵尼泥匿溺多茶"],["d3a1","丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃"],["d4a1","棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅"],["d5a1","蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣"],["d6a1","煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼"],["d7a1","遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬"],["d8a1","立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅"],["d9a1","蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文"],["daa1","汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑"],["dba1","發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖"],["dca1","碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦"],["dda1","孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥"],["dea1","脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索"],["dfa1","傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署"],["e0a1","胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬"],["e1a1","聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁"],["e2a1","戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧"],["e3a1","嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁"],["e4a1","沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額"],["e5a1","櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬"],["e6a1","旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒"],["e7a1","簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳"],["e8a1","烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療"],["e9a1","窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓"],["eaa1","運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜"],["eba1","濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼"],["eca1","議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄"],["eda1","立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長"],["eea1","障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱"],["efa1","煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖"],["f0a1","靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫"],["f1a1","踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只"],["f2a1","咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯"],["f3a1","鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策"],["f4a1","責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢"],["f5a1","椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃"],["f6a1","贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託"],["f7a1","鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑"],["f8a1","阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃"],["f9a1","品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航"],["faa1","行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型"],["fba1","形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵"],["fca1","禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆"],["fda1","爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰"]]},function(e){e.exports=[["8740","䏰䰲䘃䖦䕸𧉧䵷䖳𧲱䳢𧳅㮕䜶䝄䱇䱀𤊿𣘗𧍒𦺋𧃒䱗𪍑䝏䗚䲅𧱬䴇䪤䚡𦬣爥𥩔𡩣𣸆𣽡晍囻"],["8767","綕夝𨮹㷴霴𧯯寛𡵞媤㘥𩺰嫑宷峼杮薓𩥅瑡璝㡵𡵓𣚞𦀡㻬"],["87a1","𥣞㫵竼龗𤅡𨤍𣇪𠪊𣉞䌊蒄龖鐯䤰蘓墖靊鈘秐稲晠権袝瑌篅枂稬剏遆㓦珄𥶹瓆鿇垳䤯呌䄱𣚎堘穲𧭥讏䚮𦺈䆁𥶙箮𢒼鿈𢓁𢓉𢓌鿉蔄𣖻䂴鿊䓡𪷿拁灮鿋"],["8840","㇀",4,"𠄌㇅𠃑𠃍㇆㇇𠃋𡿨㇈𠃊㇉㇊㇋㇌𠄎㇍㇎ĀÁǍÀĒÉĚÈŌÓǑÒ࿿Ê̄Ế࿿Ê̌ỀÊāáǎàɑēéěèīíǐìōóǒòūúǔùǖǘǚ"],["88a1","ǜü࿿ê̄ế࿿ê̌ềêɡ⏚⏛"],["8940","𪎩𡅅"],["8943","攊"],["8946","丽滝鵎釟"],["894c","𧜵撑会伨侨兖兴农凤务动医华发变团声处备夲头学实実岚庆总斉柾栄桥济炼电纤纬纺织经统缆缷艺苏药视设询车轧轮"],["89a1","琑糼緍楆竉刧"],["89ab","醌碸酞肼"],["89b0","贋胶𠧧"],["89b5","肟黇䳍鷉鸌䰾𩷶𧀎鸊𪄳㗁"],["89c1","溚舾甙"],["89c5","䤑马骏龙禇𨑬𡷊𠗐𢫦两亁亀亇亿仫伷㑌侽㹈倃傈㑽㒓㒥円夅凛凼刅争剹劐匧㗇厩㕑厰㕓参吣㕭㕲㚁咓咣咴咹哐哯唘唣唨㖘唿㖥㖿嗗㗅"],["8a40","𧶄唥"],["8a43","𠱂𠴕𥄫喐𢳆㧬𠍁蹆𤶸𩓥䁓𨂾睺𢰸㨴䟕𨅝𦧲𤷪擝𠵼𠾴𠳕𡃴撍蹾𠺖𠰋𠽤𢲩𨉖𤓓"],["8a64","𠵆𩩍𨃩䟴𤺧𢳂骲㩧𩗴㿭㔆𥋇𩟔𧣈𢵄鵮頕"],["8a76","䏙𦂥撴哣𢵌𢯊𡁷㧻𡁯"],["8aa1","𦛚𦜖𧦠擪𥁒𠱃蹨𢆡𨭌𠜱"],["8aac","䠋𠆩㿺塳𢶍"],["8ab2","𤗈𠓼𦂗𠽌𠶖啹䂻䎺"],["8abb","䪴𢩦𡂝膪飵𠶜捹㧾𢝵跀嚡摼㹃"],["8ac9","𪘁𠸉𢫏𢳉"],["8ace","𡃈𣧂㦒㨆𨊛㕸𥹉𢃇噒𠼱𢲲𩜠㒼氽𤸻"],["8adf","𧕴𢺋𢈈𪙛𨳍𠹺𠰴𦠜羓𡃏𢠃𢤹㗻𥇣𠺌𠾍𠺪㾓𠼰𠵇𡅏𠹌"],["8af6","𠺫𠮩𠵈𡃀𡄽㿹𢚖搲𠾭"],["8b40","𣏴𧘹𢯎𠵾𠵿𢱑𢱕㨘𠺘𡃇𠼮𪘲𦭐𨳒𨶙𨳊閪哌苄喹"],["8b55","𩻃鰦骶𧝞𢷮煀腭胬尜𦕲脴㞗卟𨂽醶𠻺𠸏𠹷𠻻㗝𤷫㘉𠳖嚯𢞵𡃉𠸐𠹸𡁸𡅈𨈇𡑕𠹹𤹐𢶤婔𡀝𡀞𡃵𡃶垜𠸑"],["8ba1","𧚔𨋍𠾵𠹻𥅾㜃𠾶𡆀𥋘𪊽𤧚𡠺𤅷𨉼墙剨㘚𥜽箲孨䠀䬬鼧䧧鰟鮍𥭴𣄽嗻㗲嚉丨夂𡯁屮靑𠂆乛亻㔾尣彑忄㣺扌攵歺氵氺灬爫丬犭𤣩罒礻糹罓𦉪㓁"],["8bde","𦍋耂肀𦘒𦥑卝衤见𧢲讠贝钅镸长门𨸏韦页风飞饣𩠐鱼鸟黄歯龜丷𠂇阝户钢"],["8c40","倻淾𩱳龦㷉袏𤅎灷峵䬠𥇍㕙𥴰愢𨨲辧釶熑朙玺𣊁𪄇㲋𡦀䬐磤琂冮𨜏䀉橣𪊺䈣蘏𠩯稪𩥇𨫪靕灍匤𢁾鏴盙𨧣龧矝亣俰傼丯众龨吴綋墒壐𡶶庒庙忂𢜒斋"],["8ca1","𣏹椙橃𣱣泿"],["8ca7","爀𤔅玌㻛𤨓嬕璹讃𥲤𥚕窓篬糃繬苸薗龩袐龪躹龫迏蕟駠鈡龬𨶹𡐿䁱䊢娚"],["8cc9","顨杫䉶圽"],["8cce","藖𤥻芿𧄍䲁𦵴嵻𦬕𦾾龭龮宖龯曧繛湗秊㶈䓃𣉖𢞖䎚䔶"],["8ce6","峕𣬚諹屸㴒𣕑嵸龲煗䕘𤃬𡸣䱷㥸㑊𠆤𦱁諌侴𠈹妿腬顖𩣺弻"],["8d40","𠮟"],["8d42","𢇁𨥭䄂䚻𩁹㼇龳𪆵䃸㟖䛷𦱆䅼𨚲𧏿䕭㣔𥒚䕡䔛䶉䱻䵶䗪㿈𤬏㙡䓞䒽䇭崾嵈嵖㷼㠏嶤嶹㠠㠸幂庽弥徃㤈㤔㤿㥍惗愽峥㦉憷憹懏㦸戬抐拥挘㧸嚱"],["8da1","㨃揢揻搇摚㩋擀崕嘡龟㪗斆㪽旿晓㫲暒㬢朖㭂枤栀㭘桊梄㭲㭱㭻椉楃牜楤榟榅㮼槖㯝橥橴橱檂㯬檙㯲檫檵櫔櫶殁毁毪汵沪㳋洂洆洦涁㳯涤涱渕渘温溆𨧀溻滢滚齿滨滩漤漴㵆𣽁澁澾㵪㵵熷岙㶊瀬㶑灐灔灯灿炉𠌥䏁㗱𠻘"],["8e40","𣻗垾𦻓焾𥟠㙎榢𨯩孴穉𥣡𩓙穥穽𥦬窻窰竂竃燑𦒍䇊竚竝竪䇯咲𥰁笋筕笩𥌎𥳾箢筯莜𥮴𦱿篐萡箒箸𥴠㶭𥱥蒒篺簆簵𥳁籄粃𤢂粦晽𤕸糉糇糦籴糳糵糎"],["8ea1","繧䔝𦹄絝𦻖璍綉綫焵綳緒𤁗𦀩緤㴓緵𡟹緥𨍭縝𦄡𦅚繮纒䌫鑬縧罀罁罇礶𦋐駡羗𦍑羣𡙡𠁨䕜𣝦䔃𨌺翺𦒉者耈耝耨耯𪂇𦳃耻耼聡𢜔䦉𦘦𣷣𦛨朥肧𨩈脇脚墰𢛶汿𦒘𤾸擧𡒊舘𡡞橓𤩥𤪕䑺舩𠬍𦩒𣵾俹𡓽蓢荢𦬊𤦧𣔰𡝳𣷸芪椛芳䇛"],["8f40","蕋苐茚𠸖𡞴㛁𣅽𣕚艻苢茘𣺋𦶣𦬅𦮗𣗎㶿茝嗬莅䔋𦶥莬菁菓㑾𦻔橗蕚㒖𦹂𢻯葘𥯤葱㷓䓤檧葊𣲵祘蒨𦮖𦹷𦹃蓞萏莑䒠蒓蓤𥲑䉀𥳀䕃蔴嫲𦺙䔧蕳䔖枿蘖"],["8fa1","𨘥𨘻藁𧂈蘂𡖂𧃍䕫䕪蘨㙈𡢢号𧎚虾蝱𪃸蟮𢰧螱蟚蠏噡虬桖䘏衅衆𧗠𣶹𧗤衞袜䙛袴袵揁装睷𧜏覇覊覦覩覧覼𨨥觧𧤤𧪽誜瞓釾誐𧩙竩𧬺𣾏䜓𧬸煼謌謟𥐰𥕥謿譌譍誩𤩺讐讛誯𡛟䘕衏貛𧵔𧶏貫㜥𧵓賖𧶘𧶽贒贃𡤐賛灜贑𤳉㻐起"],["9040","趩𨀂𡀔𤦊㭼𨆼𧄌竧躭躶軃鋔輙輭𨍥𨐒辥錃𪊟𠩐辳䤪𨧞𨔽𣶻廸𣉢迹𪀔𨚼𨔁𢌥㦀𦻗逷𨔼𧪾遡𨕬𨘋邨𨜓郄𨛦邮都酧㫰醩釄粬𨤳𡺉鈎沟鉁鉢𥖹銹𨫆𣲛𨬌𥗛"],["90a1","𠴱錬鍫𨫡𨯫炏嫃𨫢𨫥䥥鉄𨯬𨰹𨯿鍳鑛躼閅閦鐦閠濶䊹𢙺𨛘𡉼𣸮䧟氜陻隖䅬隣𦻕懚隶磵𨫠隽双䦡𦲸𠉴𦐐𩂯𩃥𤫑𡤕𣌊霱虂霶䨏䔽䖅𤫩灵孁霛靜𩇕靗孊𩇫靟鐥僐𣂷𣂼鞉鞟鞱鞾韀韒韠𥑬韮琜𩐳響韵𩐝𧥺䫑頴頳顋顦㬎𧅵㵑𠘰𤅜"],["9140","𥜆飊颷飈飇䫿𦴧𡛓喰飡飦飬鍸餹𤨩䭲𩡗𩤅駵騌騻騐驘𥜥㛄𩂱𩯕髠髢𩬅髴䰎鬔鬭𨘀倴鬴𦦨㣃𣁽魐魀𩴾婅𡡣鮎𤉋鰂鯿鰌𩹨鷔𩾷𪆒𪆫𪃡𪄣𪇟鵾鶃𪄴鸎梈"],["91a1","鷄𢅛𪆓𪈠𡤻𪈳鴹𪂹𪊴麐麕麞麢䴴麪麯𤍤黁㭠㧥㴝伲㞾𨰫鼂鼈䮖鐤𦶢鼗鼖鼹嚟嚊齅馸𩂋韲葿齢齩竜龎爖䮾𤥵𤦻煷𤧸𤍈𤩑玞𨯚𡣺禟𨥾𨸶鍩鏳𨩄鋬鎁鏋𨥬𤒹爗㻫睲穃烐𤑳𤏸煾𡟯炣𡢾𣖙㻇𡢅𥐯𡟸㜢𡛻𡠹㛡𡝴𡣑𥽋㜣𡛀坛𤨥𡏾𡊨"],["9240","𡏆𡒶蔃𣚦蔃葕𤦔𧅥𣸱𥕜𣻻𧁒䓴𣛮𩦝𦼦柹㜳㰕㷧塬𡤢栐䁗𣜿𤃡𤂋𤄏𦰡哋嚞𦚱嚒𠿟𠮨𠸍鏆𨬓鎜仸儫㠙𤐶亼𠑥𠍿佋侊𥙑婨𠆫𠏋㦙𠌊𠐔㐵伩𠋀𨺳𠉵諚𠈌亘"],["92a1","働儍侢伃𤨎𣺊佂倮偬傁俌俥偘僼兙兛兝兞湶𣖕𣸹𣺿浲𡢄𣺉冨凃𠗠䓝𠒣𠒒𠒑赺𨪜𠜎剙劤𠡳勡鍮䙺熌𤎌𠰠𤦬𡃤槑𠸝瑹㻞璙琔瑖玘䮎𤪼𤂍叐㖄爏𤃉喴𠍅响𠯆圝鉝雴鍦埝垍坿㘾壋媙𨩆𡛺𡝯𡜐娬妸銏婾嫏娒𥥆𡧳𡡡𤊕㛵洅瑃娡𥺃"],["9340","媁𨯗𠐓鏠璌𡌃焅䥲鐈𨧻鎽㞠尞岞幞幈𡦖𡥼𣫮廍孏𡤃𡤄㜁𡢠㛝𡛾㛓脪𨩇𡶺𣑲𨦨弌弎𡤧𡞫婫𡜻孄蘔𧗽衠恾𢡠𢘫忛㺸𢖯𢖾𩂈𦽳懀𠀾𠁆𢘛憙憘恵𢲛𢴇𤛔𩅍"],["93a1","摱𤙥𢭪㨩𢬢𣑐𩣪𢹸挷𪑛撶挱揑𤧣𢵧护𢲡搻敫楲㯴𣂎𣊭𤦉𣊫唍𣋠𡣙𩐿曎𣊉𣆳㫠䆐𥖄𨬢𥖏𡛼𥕛𥐥磮𣄃𡠪𣈴㑤𣈏𣆂𤋉暎𦴤晫䮓昰𧡰𡷫晣𣋒𣋡昞𥡲㣑𣠺𣞼㮙𣞢𣏾瓐㮖枏𤘪梶栞㯄檾㡣𣟕𤒇樳橒櫉欅𡤒攑梘橌㯗橺歗𣿀𣲚鎠鋲𨯪𨫋"],["9440","銉𨀞𨧜鑧涥漋𤧬浧𣽿㶏渄𤀼娽渊塇洤硂焻𤌚𤉶烱牐犇犔𤞏𤜥兹𤪤𠗫瑺𣻸𣙟𤩊𤤗𥿡㼆㺱𤫟𨰣𣼵悧㻳瓌琼鎇琷䒟𦷪䕑疃㽣𤳙𤴆㽘畕癳𪗆㬙瑨𨫌𤦫𤦎㫻"],["94a1","㷍𤩎㻿𤧅𤣳釺圲鍂𨫣𡡤僟𥈡𥇧睸𣈲眎眏睻𤚗𣞁㩞𤣰琸璛㺿𤪺𤫇䃈𤪖𦆮錇𥖁砞碍碈磒珐祙𧝁𥛣䄎禛蒖禥樭𣻺稺秴䅮𡛦䄲鈵秱𠵌𤦌𠊙𣶺𡝮㖗啫㕰㚪𠇔𠰍竢婙𢛵𥪯𥪜娍𠉛磰娪𥯆竾䇹籝籭䈑𥮳𥺼𥺦糍𤧹𡞰粎籼粮檲緜縇緓罎𦉡"],["9540","𦅜𧭈綗𥺂䉪𦭵𠤖柖𠁎𣗏埄𦐒𦏸𤥢翝笧𠠬𥫩𥵃笌𥸎駦虅驣樜𣐿㧢𤧷𦖭騟𦖠蒀𧄧𦳑䓪脷䐂胆脉腂𦞴飃𦩂艢艥𦩑葓𦶧蘐𧈛媆䅿𡡀嬫𡢡嫤𡣘蚠蜨𣶏蠭𧐢娂"],["95a1","衮佅袇袿裦襥襍𥚃襔𧞅𧞄𨯵𨯙𨮜𨧹㺭蒣䛵䛏㟲訽訜𩑈彍鈫𤊄旔焩烄𡡅鵭貟賩𧷜妚矃姰䍮㛔踪躧𤰉輰轊䋴汘澻𢌡䢛潹溋𡟚鯩㚵𤤯邻邗啱䤆醻鐄𨩋䁢𨫼鐧𨰝𨰻蓥訫閙閧閗閖𨴴瑅㻂𤣿𤩂𤏪㻧𣈥随𨻧𨹦𨹥㻌𤧭𤩸𣿮琒瑫㻼靁𩂰"],["9640","桇䨝𩂓𥟟靝鍨𨦉𨰦𨬯𦎾銺嬑譩䤼珹𤈛鞛靱餸𠼦巁𨯅𤪲頟𩓚鋶𩗗釥䓀𨭐𤩧𨭤飜𨩅㼀鈪䤥萔餻饍𧬆㷽馛䭯馪驜𨭥𥣈檏騡嫾騯𩣱䮐𩥈馼䮽䮗鍽塲𡌂堢𤦸"],["96a1","𡓨硄𢜟𣶸棅㵽鑘㤧慐𢞁𢥫愇鱏鱓鱻鰵鰐魿鯏𩸭鮟𪇵𪃾鴡䲮𤄄鸘䲰鴌𪆴𪃭𪃳𩤯鶥蒽𦸒𦿟𦮂藼䔳𦶤𦺄𦷰萠藮𦸀𣟗𦁤秢𣖜𣙀䤭𤧞㵢鏛銾鍈𠊿碹鉷鑍俤㑀遤𥕝砽硔碶硋𡝗𣇉𤥁㚚佲濚濙瀞瀞吔𤆵垻壳垊鴖埗焴㒯𤆬燫𦱀𤾗嬨𡞵𨩉"],["9740","愌嫎娋䊼𤒈㜬䭻𨧼鎻鎸𡣖𠼝葲𦳀𡐓𤋺𢰦𤏁妔𣶷𦝁綨𦅛𦂤𤦹𤦋𨧺鋥珢㻩璴𨭣𡢟㻡𤪳櫘珳珻㻖𤨾𤪔𡟙𤩦𠎧𡐤𤧥瑈𤤖炥𤥶銄珦鍟𠓾錱𨫎𨨖鎆𨯧𥗕䤵𨪂煫"],["97a1","𤥃𠳿嚤𠘚𠯫𠲸唂秄𡟺緾𡛂𤩐𡡒䔮鐁㜊𨫀𤦭妰𡢿𡢃𧒄媡㛢𣵛㚰鉟婹𨪁𡡢鍴㳍𠪴䪖㦊僴㵩㵌𡎜煵䋻𨈘渏𩃤䓫浗𧹏灧沯㳖𣿭𣸭渂漌㵯𠏵畑㚼㓈䚀㻚䡱姄鉮䤾轁𨰜𦯀堒埈㛖𡑒烾𤍢𤩱𢿣𡊰𢎽梹楧𡎘𣓥𧯴𣛟𨪃𣟖𣏺𤲟樚𣚭𦲷萾䓟䓎"],["9840","𦴦𦵑𦲂𦿞漗𧄉茽𡜺菭𦲀𧁓𡟛妉媂𡞳婡婱𡤅𤇼㜭姯𡜼㛇熎鎐暚𤊥婮娫𤊓樫𣻹𧜶𤑛𤋊焝𤉙𨧡侰𦴨峂𤓎𧹍𤎽樌𤉖𡌄炦焳𤏩㶥泟勇𤩏繥姫崯㷳彜𤩝𡟟綤萦"],["98a1","咅𣫺𣌀𠈔坾𠣕𠘙㿥𡾞𪊶瀃𩅛嵰玏糓𨩙𩐠俈翧狍猐𧫴猸猹𥛶獁獈㺩𧬘遬燵𤣲珡臶㻊県㻑沢国琙琞琟㻢㻰㻴㻺瓓㼎㽓畂畭畲疍㽼痈痜㿀癍㿗癴㿜発𤽜熈嘣覀塩䀝睃䀹条䁅㗛瞘䁪䁯属瞾矋売砘点砜䂨砹硇硑硦葈𥔵礳栃礲䄃"],["9940","䄉禑禙辻稆込䅧窑䆲窼艹䇄竏竛䇏両筢筬筻簒簛䉠䉺类粜䊌粸䊔糭输烀𠳏総緔緐緽羮羴犟䎗耠耥笹耮耱联㷌垴炠肷胩䏭脌猪脎脒畠脔䐁㬹腖腙腚"],["99a1","䐓堺腼膄䐥膓䐭膥埯臁臤艔䒏芦艶苊苘苿䒰荗险榊萅烵葤惣蒈䔄蒾蓡蓸蔐蔸蕒䔻蕯蕰藠䕷虲蚒蚲蛯际螋䘆䘗袮裿褤襇覑𧥧訩訸誔誴豑賔賲贜䞘塟跃䟭仮踺嗘坔蹱嗵躰䠷軎転軤軭軲辷迁迊迌逳駄䢭飠鈓䤞鈨鉘鉫銱銮銿"],["9a40","鋣鋫鋳鋴鋽鍃鎄鎭䥅䥑麿鐗匁鐝鐭鐾䥪鑔鑹锭関䦧间阳䧥枠䨤靀䨵鞲韂噔䫤惨颹䬙飱塄餎餙冴餜餷饂饝饢䭰駅䮝騼鬏窃魩鮁鯝鯱鯴䱭鰠㝯𡯂鵉鰺"],["9aa1","黾噐鶓鶽鷀鷼银辶鹻麬麱麽黆铜黢黱黸竈齄𠂔𠊷𠎠椚铃妬𠓗塀铁㞹𠗕𠘕𠙶𡚺块煳𠫂𠫍𠮿呪吆𠯋咞𠯻𠰻𠱓𠱥𠱼惧𠲍噺𠲵𠳝𠳭𠵯𠶲𠷈楕鰯螥𠸄𠸎𠻗𠾐𠼭𠹳尠𠾼帋𡁜𡁏𡁶朞𡁻𡂈𡂖㙇𡂿𡃓𡄯𡄻卤蒭𡋣𡍵𡌶讁𡕷𡘙𡟃𡟇乸炻𡠭𡥪"],["9b40","𡨭𡩅𡰪𡱰𡲬𡻈拃𡻕𡼕熘桕𢁅槩㛈𢉼𢏗𢏺𢜪𢡱𢥏苽𢥧𢦓𢫕覥𢫨辠𢬎鞸𢬿顇骽𢱌"],["9b62","𢲈𢲷𥯨𢴈𢴒𢶷𢶕𢹂𢽴𢿌𣀳𣁦𣌟𣏞徱晈暿𧩹𣕧𣗳爁𤦺矗𣘚𣜖纇𠍆墵朎"],["9ba1","椘𣪧𧙗𥿢𣸑𣺹𧗾𢂚䣐䪸𤄙𨪚𤋮𤌍𤀻𤌴𤎖𤩅𠗊凒𠘑妟𡺨㮾𣳿𤐄𤓖垈𤙴㦛𤜯𨗨𩧉㝢𢇃譞𨭎駖𤠒𤣻𤨕爉𤫀𠱸奥𤺥𤾆𠝹軚𥀬劏圿煱𥊙𥐙𣽊𤪧喼𥑆𥑮𦭒釔㑳𥔿𧘲𥕞䜘𥕢𥕦𥟇𤤿𥡝偦㓻𣏌惞𥤃䝼𨥈𥪮𥮉𥰆𡶐垡煑澶𦄂𧰒遖𦆲𤾚譢𦐂𦑊"],["9c40","嵛𦯷輶𦒄𡤜諪𤧶𦒈𣿯𦔒䯀𦖿𦚵𢜛鑥𥟡憕娧晉侻嚹𤔡𦛼乪𤤴陖涏𦲽㘘襷𦞙𦡮𦐑𦡞營𦣇筂𩃀𠨑𦤦鄄𦤹穅鷰𦧺騦𦨭㙟𦑩𠀡禃𦨴𦭛崬𣔙菏𦮝䛐𦲤画补𦶮墶"],["9ca1","㜜𢖍𧁋𧇍㱔𧊀𧊅銁𢅺𧊋錰𧋦𤧐氹钟𧑐𠻸蠧裵𢤦𨑳𡞱溸𤨪𡠠㦤㚹尐秣䔿暶𩲭𩢤襃𧟌𧡘囖䃟𡘊㦡𣜯𨃨𡏅熭荦𧧝𩆨婧䲷𧂯𨦫𧧽𧨊𧬋𧵦𤅺筃祾𨀉澵𪋟樃𨌘厢𦸇鎿栶靝𨅯𨀣𦦵𡏭𣈯𨁈嶅𨰰𨂃圕頣𨥉嶫𤦈斾槕叒𤪥𣾁㰑朶𨂐𨃴𨄮𡾡𨅏"],["9d40","𨆉𨆯𨈚𨌆𨌯𨎊㗊𨑨𨚪䣺揦𨥖砈鉕𨦸䏲𨧧䏟𨧨𨭆𨯔姸𨰉輋𨿅𩃬筑𩄐𩄼㷷𩅞𤫊运犏嚋𩓧𩗩𩖰𩖸𩜲𩣑𩥉𩥪𩧃𩨨𩬎𩵚𩶛纟𩻸𩼣䲤镇𪊓熢𪋿䶑递𪗋䶜𠲜达嗁"],["9da1","辺𢒰边𤪓䔉繿潖檱仪㓤𨬬𧢝㜺躀𡟵𨀤𨭬𨮙𧨾𦚯㷫𧙕𣲷𥘵𥥖亚𥺁𦉘嚿𠹭踎孭𣺈𤲞揞拐𡟶𡡻攰嘭𥱊吚𥌑㷆𩶘䱽嘢嘞罉𥻘奵𣵀蝰东𠿪𠵉𣚺脗鵞贘瘻鱅癎瞹鍅吲腈苷嘥脲萘肽嗪祢噃吖𠺝㗎嘅嗱曱𨋢㘭甴嗰喺咗啲𠱁𠲖廐𥅈𠹶𢱢"],["9e40","𠺢麫絚嗞𡁵抝靭咔賍燶酶揼掹揾啩𢭃鱲𢺳冚㓟𠶧冧呍唞唓癦踭𦢊疱肶蠄螆裇膶萜𡃁䓬猄𤜆宐茋𦢓噻𢛴𧴯𤆣𧵳𦻐𧊶酰𡇙鈈𣳼𪚩𠺬𠻹牦𡲢䝎𤿂𧿹𠿫䃺"],["9ea1","鱝攟𢶠䣳𤟠𩵼𠿬𠸊恢𧖣𠿭"],["9ead","𦁈𡆇熣纎鵐业丄㕷嬍沲卧㚬㧜卽㚥𤘘墚𤭮舭呋垪𥪕𠥹"],["9ec5","㩒𢑥獴𩺬䴉鯭𣳾𩼰䱛𤾩𩖞𩿞葜𣶶𧊲𦞳𣜠挮紥𣻷𣸬㨪逈勌㹴㙺䗩𠒎癀嫰𠺶硺𧼮墧䂿噼鮋嵴癔𪐴麅䳡痹㟻愙𣃚𤏲"],["9ef5","噝𡊩垧𤥣𩸆刴𧂮㖭汊鵼"],["9f40","籖鬹埞𡝬屓擓𩓐𦌵𧅤蚭𠴨𦴢𤫢𠵱"],["9f4f","凾𡼏嶎霃𡷑麁遌笟鬂峑箣扨挵髿篏鬪籾鬮籂粆鰕篼鬉鼗鰛𤤾齚啳寃俽麘俲剠㸆勑坧偖妷帒韈鶫轜呩鞴饀鞺匬愰"],["9fa1","椬叚鰊鴂䰻陁榀傦畆𡝭駚剳"],["9fae","酙隁酜"],["9fb2","酑𨺗捿𦴣櫊嘑醎畺抅𠏼獏籰𥰡𣳽"],["9fc1","𤤙盖鮝个𠳔莾衂"],["9fc9","届槀僭坺刟巵从氱𠇲伹咜哚劚趂㗾弌㗳"],["9fdb","歒酼龥鮗頮颴骺麨麄煺笔"],["9fe7","毺蠘罸"],["9feb","嘠𪙊蹷齓"],["9ff0","跔蹏鸜踁抂𨍽踨蹵竓𤩷稾磘泪詧瘇"],["a040","𨩚鼦泎蟖痃𪊲硓咢贌狢獱謭猂瓱賫𤪻蘯徺袠䒷"],["a055","𡠻𦸅"],["a058","詾𢔛"],["a05b","惽癧髗鵄鍮鮏蟵"],["a063","蠏賷猬霡鮰㗖犲䰇籑饊𦅙慙䰄麖慽"],["a073","坟慯抦戹拎㩜懢厪𣏵捤栂㗒"],["a0a1","嵗𨯂迚𨸹"],["a0a6","僙𡵆礆匲阸𠼻䁥"],["a0ae","矾"],["a0b0","糂𥼚糚稭聦聣絍甅瓲覔舚朌聢𧒆聛瓰脃眤覉𦟌畓𦻑螩蟎臈螌詉貭譃眫瓸蓚㘵榲趦"],["a0d4","覩瑨涹蟁𤀑瓧㷛煶悤憜㳑煢恷"],["a0e2","罱𨬭牐惩䭾删㰘𣳇𥻗𧙖𥔱𡥄𡋾𩤃𦷜𧂭峁𦆭𨨏𣙷𠃮𦡆𤼎䕢嬟𦍌齐麦𦉫"],["a3c0","␀",31,"␡"],["c6a1","①",9,"⑴",9,"ⅰ",9,"丶丿亅亠冂冖冫勹匸卩厶夊宀巛⼳广廴彐彡攴无疒癶辵隶¨ˆヽヾゝゞ〃仝々〆〇ー[]✽ぁ",23],["c740","す",58,"ァアィイ"],["c7a1","ゥ",81,"А",5,"ЁЖ",4],["c840","Л",26,"ёж",25,"⇧↸↹㇏𠃌乚𠂊刂䒑"],["c8a1","龰冈龱𧘇"],["c8cd","¬¦'"㈱№℡゛゜⺀⺄⺆⺇⺈⺊⺌⺍⺕⺜⺝⺥⺧⺪⺬⺮⺶⺼⺾⻆⻊⻌⻍⻏⻖⻗⻞⻣"],["c8f5","ʃɐɛɔɵœøŋʊɪ"],["f9fe","■"],["fa40","𠕇鋛𠗟𣿅蕌䊵珯况㙉𤥂𨧤鍄𡧛苮𣳈砼杄拟𤤳𨦪𠊠𦮳𡌅侫𢓭倈𦴩𧪄𣘀𤪱𢔓倩𠍾徤𠎀𠍇滛𠐟偽儁㑺儎顬㝃萖𤦤𠒇兠𣎴兪𠯿𢃼𠋥𢔰𠖎𣈳𡦃宂蝽𠖳𣲙冲冸"],["faa1","鴴凉减凑㳜凓𤪦决凢卂凭菍椾𣜭彻刋刦刼劵剗劔効勅簕蕂勠蘍𦬓包𨫞啉滙𣾀𠥔𣿬匳卄𠯢泋𡜦栛珕恊㺪㣌𡛨燝䒢卭却𨚫卾卿𡖖𡘓矦厓𨪛厠厫厮玧𥝲㽙玜叁叅汉义埾叙㪫𠮏叠𣿫𢶣叶𠱷吓灹唫晗浛呭𦭓𠵴啝咏咤䞦𡜍𠻝㶴𠵍"],["fb40","𨦼𢚘啇䳭启琗喆喩嘅𡣗𤀺䕒𤐵暳𡂴嘷曍𣊊暤暭噍噏磱囱鞇叾圀囯园𨭦㘣𡉏坆𤆥汮炋坂㚱𦱾埦𡐖堃𡑔𤍣堦𤯵塜墪㕡壠壜𡈼壻寿坃𪅐𤉸鏓㖡够梦㛃湙"],["fba1","𡘾娤啓𡚒蔅姉𠵎𦲁𦴪𡟜姙𡟻𡞲𦶦浱𡠨𡛕姹𦹅媫婣㛦𤦩婷㜈媖瑥嫓𦾡𢕔㶅𡤑㜲𡚸広勐孶斈孼𧨎䀄䡝𠈄寕慠𡨴𥧌𠖥寳宝䴐尅𡭄尓珎尔𡲥𦬨屉䣝岅峩峯嶋𡷹𡸷崐崘嵆𡺤岺巗苼㠭𤤁𢁉𢅳芇㠶㯂帮檊幵幺𤒼𠳓厦亷廐厨𡝱帉廴𨒂"],["fc40","廹廻㢠廼栾鐛弍𠇁弢㫞䢮𡌺强𦢈𢏐彘𢑱彣鞽𦹮彲鍀𨨶徧嶶㵟𥉐𡽪𧃸𢙨釖𠊞𨨩怱暅𡡷㥣㷇㘹垐𢞴祱㹀悞悤悳𤦂𤦏𧩓璤僡媠慤萤慂慈𦻒憁凴𠙖憇宪𣾷"],["fca1","𢡟懓𨮝𩥝懐㤲𢦀𢣁怣慜攞掋𠄘担𡝰拕𢸍捬𤧟㨗搸揸𡎎𡟼撐澊𢸶頔𤂌𥜝擡擥鑻㩦携㩗敍漖𤨨𤨣斅敭敟𣁾斵𤥀䬷旑䃘𡠩无旣忟𣐀昘𣇷𣇸晄𣆤𣆥晋𠹵晧𥇦晳晴𡸽𣈱𨗴𣇈𥌓矅𢣷馤朂𤎜𤨡㬫槺𣟂杞杧杢𤇍𩃭柗䓩栢湐鈼栁𣏦𦶠桝"],["fd40","𣑯槡樋𨫟楳棃𣗍椁椀㴲㨁𣘼㮀枬楡𨩊䋼椶榘㮡𠏉荣傐槹𣙙𢄪橅𣜃檝㯳枱櫈𩆜㰍欝𠤣惞欵歴𢟍溵𣫛𠎵𡥘㝀吡𣭚毡𣻼毜氷𢒋𤣱𦭑汚舦汹𣶼䓅𣶽𤆤𤤌𤤀"],["fda1","𣳉㛥㳫𠴲鮃𣇹𢒑羏样𦴥𦶡𦷫涖浜湼漄𤥿𤂅𦹲蔳𦽴凇沜渝萮𨬡港𣸯瑓𣾂秌湏媑𣁋濸㜍澝𣸰滺𡒗𤀽䕕鏰潄潜㵎潴𩅰㴻澟𤅄濓𤂑𤅕𤀹𣿰𣾴𤄿凟𤅖𤅗𤅀𦇝灋灾炧炁烌烕烖烟䄄㷨熴熖𤉷焫煅媈煊煮岜𤍥煏鍢𤋁焬𤑚𤨧𤨢熺𨯨炽爎"],["fe40","鑂爕夑鑃爤鍁𥘅爮牀𤥴梽牕牗㹕𣁄栍漽犂猪猫𤠣𨠫䣭𨠄猨献珏玪𠰺𦨮珉瑉𤇢𡛧𤨤昣㛅𤦷𤦍𤧻珷琕椃𤨦琹𠗃㻗瑜𢢭瑠𨺲瑇珤瑶莹瑬㜰瑴鏱樬璂䥓𤪌"],["fea1","𤅟𤩹𨮏孆𨰃𡢞瓈𡦈甎瓩甞𨻙𡩋寗𨺬鎅畍畊畧畮𤾂㼄𤴓疎瑝疞疴瘂瘬癑癏癯癶𦏵皐臯㟸𦤑𦤎皡皥皷盌𦾟葢𥂝𥅽𡸜眞眦着撯𥈠睘𣊬瞯𨥤𨥨𡛁矴砉𡍶𤨒棊碯磇磓隥礮𥗠磗礴碱𧘌辸袄𨬫𦂃𢘜禆褀椂禀𥡗禝𧬹礼禩渪𧄦㺨秆𩄍秔"]]},function(e,t){},function(e,t){},function(e,t,r){"use strict";var n;try{"iconv",n=r(262)("iconv").Iconv}catch(e){}e.exports=n},function(e,t){function r(e){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}r.keys=function(){return[]},r.resolve=r,e.exports=r,r.id=262},function(e,t,r){"use strict";var n=e.exports=function(e){return null!==e&&"object"==typeof e&&"function"==typeof e.pipe};n.writable=function(e){return n(e)&&!1!==e.writable&&"function"==typeof e._write&&"object"==typeof e._writableState},n.readable=function(e){return n(e)&&!1!==e.readable&&"function"==typeof e._read&&"object"==typeof e._readableState},n.duplex=function(e){return n.writable(e)&&n.readable(e)},n.transform=function(e){return n.duplex(e)&&"function"==typeof e._transform&&"object"==typeof e._transformState}},function(e,t,r){var n=r(52),i=r(55),o=r(53);function s(e,t){t=t||{},this.url=t.url,this.status=t.status||200,this.statusText=t.statusText||n.STATUS_CODES[this.status],this.headers=new i(t.headers),this.ok=this.status>=200&&this.status<300,o.call(this,e,t)}e.exports=s,s.prototype=Object.create(o.prototype),s.prototype.clone=function(){return new s(this._clone(this),{url:this.url,status:this.status,statusText:this.statusText,headers:this.headers,ok:this.ok})}},function(e,t,r){var n=r(26).parse,i=r(55),o=r(53);function s(e,t){var r,a;e instanceof s?(r=e.url,a=n(r)):(a=n(r=e),e={}),t=t||{},this.method=t.method||e.method||"GET",this.redirect=t.redirect||e.redirect||"follow",this.headers=new i(t.headers||e.headers||{}),this.url=r,this.follow=void 0!==t.follow?t.follow:void 0!==e.follow?e.follow:20,this.compress=void 0!==t.compress?t.compress:void 0===e.compress||e.compress,this.counter=t.counter||e.counter||0,this.agent=t.agent||e.agent,o.call(this,t.body||this._clone(e),{timeout:t.timeout||e.timeout||0,size:t.size||e.size||0}),this.protocol=a.protocol,this.hostname=a.hostname,this.port=a.port,this.path=a.path,this.auth=a.auth}e.exports=s,s.prototype=Object.create(o.prototype),s.prototype.clone=function(){return new s(this)}}])}); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2FmZS1idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9idWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90eXBlZm9yY2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9pbmhlcml0cy9pbmhlcml0c19icm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvc2NyaXB0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvKHdlYnBhY2spL2J1aWxkaW4vZ2xvYmFsLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdHlwZXMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX2R1cGxleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpZ2kvbGliL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcHJvdG9idWZqcy1vbGQtZml4ZWQtd2VicGFjay9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2V2ZW50cy9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy9jcnlwdG8uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zaGEuanMvaGFzaC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL25ldHdvcmtzLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2FmZXItYnVmZmVyL3NhZmVyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLmpzL2xpYi9ldmVudHMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3IuanMvbGliL2Zsb3ctZXZlbnRzLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS1icm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvY29yZS11dGlsLWlzL2xpYi91dGlsLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYXNzZXJ0L2Fzc2VydC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3VybC91cmwuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wcm9jZXNzLW5leHRpY2stYXJncy9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JzNThjaGVjay9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VjdXJ2ZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9oYXMvc3JjL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZnVuY3Rpb24tYmluZC9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci1saW5rL2xpYi9kZWJ1Zy1kZWNvcmF0b3IuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi91dGlscy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90eXBlZm9yY2UvbmF0aXZlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL211bHRpc2lnL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3B1YmtleS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL3RlbXBsYXRlcy9wdWJrZXloYXNoL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdmFydWludC1iaXRjb2luL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvY2lwaGVyLWJhc2UvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy90cmFuc2FjdGlvbi5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL2VjcGFpci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL2FkZHJlc3MuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy91dGlsL3V0aWwuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy9lY3NpZ25hdHVyZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvdXRpbHMvaGRub2RlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvY2FzaGFkZHJqcy9zcmMvdmFsaWRhdGlvbi5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvZGV2aWNlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaXMtY2FsbGFibGUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zdHJlYW0taHR0cC9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvbGliL2JvZHkuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL2xpYi9oZWFkZXJzLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLmpzL2xpYi9zZXNzaW9uLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaXNhcnJheS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpcDY2L2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcHVzaGRhdGEtYml0Y29pbi9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3R5cGVmb3JjZS9lcnJvcnMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy9zY3JpcHRfbnVtYmVyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL211bHRpc2lnL291dHB1dC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL3RlbXBsYXRlcy93aXRuZXNzcHVia2V5aGFzaC9vdXRwdXQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy90ZW1wbGF0ZXMvd2l0bmVzc3NjcmlwdGhhc2gvb3V0cHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvYnVmZmVydXRpbHMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaGFzaC9icm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvbWQ1LmpzL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaGFzaC1iYXNlL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3JlYWRhYmxlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbS1icm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fdHJhbnNmb3JtLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmlwZW1kMTYwL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2hhLmpzL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTI1Ni5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3NoYS5qcy9zaGE1MTIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9uYW5vYXNzZXJ0L2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvY29pbnMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9jcmVhdGUtaG1hYy9icm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYmlnaS9saWIvYmlnaS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VjdXJ2ZS9saWIvcG9pbnQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lY3VydmUvbGliL2N1cnZlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmFuZG9tYnl0ZXMvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLyh3ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvdW5hY3F1aXJlZC1kZXZpY2UuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zZW12ZXItY29tcGFyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvdXRpbHMvY29ubmVjdGlvbkxvY2suanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3IuanMvbGliL2Rlc2NyaXB0b3Itc3RyZWFtLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLWxpbmsvbGliL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLWxpbmsvbGliL2xvd2xldmVsL3NlbmQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvbG93bGV2ZWwvcHJvdG9idWYvcGFyc2VfcHJvdG9jb2wuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvbG93bGV2ZWwvcHJvdG9idWYvbWVzc2FnZXMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9kZWZpbmUtcHJvcGVydGllcy9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL29iamVjdC52YWx1ZXMvaW1wbGVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lcy10by1wcmltaXRpdmUvaGVscGVycy9pc1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L0dldEludHJpbnNpYy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L2hlbHBlcnMvaXNOYU4uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lcy1hYnN0cmFjdC9oZWxwZXJzL2lzRmluaXRlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZXMtYWJzdHJhY3QvaGVscGVycy9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lcy1hYnN0cmFjdC9oZWxwZXJzL3NpZ24uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lcy1hYnN0cmFjdC9oZWxwZXJzL21vZC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL29iamVjdC52YWx1ZXMvcG9seWZpbGwuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvbG93bGV2ZWwvcmVjZWl2ZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci1saW5rL2xpYi9kZWZlcmVkLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc3RyZWFtLWh0dHAvbGliL2NhcGFiaWxpdHkuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zdHJlYW0taHR0cC9saWIvcmVzcG9uc2UuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2FkbGVyMzIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NyYzMyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9saWIvZmV0Y2gtZXJyb3IuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL3NyYy9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vc3JjL2NvbmZpZy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvaW5kZXgtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2Jhc2U2NC1qcy9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2llZWU3NTQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUtbW9kdWxlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVnZW5lcmF0b3ItcnVudGltZS9ydW50aW1lLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHlwZWZvcmNlL2V4dHJhLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbi1vcHMvbWFwLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL211bHRpc2lnL2lucHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL251bGxkYXRhLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3B1YmtleS9pbnB1dC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL3RlbXBsYXRlcy9wdWJrZXkvb3V0cHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3B1YmtleWhhc2gvaW5wdXQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy90ZW1wbGF0ZXMvcHVia2V5aGFzaC9vdXRwdXQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy90ZW1wbGF0ZXMvc2NyaXB0aGFzaC9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL3RlbXBsYXRlcy9zY3JpcHRoYXNoL2lucHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3NjcmlwdGhhc2gvb3V0cHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3dpdG5lc3NwdWJrZXloYXNoL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3dpdG5lc3NwdWJrZXloYXNoL2lucHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3dpdG5lc3NzY3JpcHRoYXNoL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3dpdG5lc3NzY3JpcHRoYXNoL2lucHV0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3dpdG5lc3Njb21taXRtZW50L2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYml0Y29pbmpzLWxpYi16Y2FzaC9zcmMvdGVtcGxhdGVzL3dpdG5lc3Njb21taXRtZW50L291dHB1dC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL2Jsb2NrLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90aW1lcnMtYnJvd3NlcmlmeS9tYWluLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2V0aW1tZWRpYXRlL3NldEltbWVkaWF0ZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vd3JpdGFibGUtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9kdXBsZXgtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTEuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9zaGEuanMvc2hhMjI0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvc2hhLmpzL3NoYTM4NC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL21lcmtsZS1saWIvZmFzdFJvb3QuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9ibGFrZTJiL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYmxha2UyYi13YXNtL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYmxha2UyYi13YXNtL2JsYWtlMmIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iZWNoMzIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iczU4Y2hlY2svYmFzZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JzNTgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iYXNlLXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaXRjb2luanMtbGliLXpjYXNoL3NyYy9lY2RzYS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1obWFjL2xlZ2FjeS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1oYXNoL21kNS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpZ2kvbGliL2NvbnZlcnQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy91dGlsL3N1cHBvcnQvaXNCdWZmZXJCcm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZWN1cnZlL2xpYi9uYW1lcy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3dpZi9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL2hkbm9kZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2JpdGNvaW5qcy1saWItemNhc2gvc3JjL3RyYW5zYWN0aW9uX2J1aWxkZXIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3IuanMvbGliL3V0aWxzL3NpZ250eC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvdXRpbHMvc2lnbmJqc3R4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvYmNoYWRkcmpzL3NyYy9iY2hhZGRyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvY2FzaGFkZHJqcy9zcmMvY2FzaGFkZHIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9jYXNoYWRkcmpzL3NyYy9iYXNlMzIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9iaWctaW50ZWdlci9CaWdJbnRlZ2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvY2FzaGFkZHJqcy9zcmMvY29udmVydEJpdHMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3IuanMvbGliL3V0aWxzL3NpZ25ldGh0eC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvdXRpbHMvY2FsbC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci5qcy9saWIvZGV2aWNlLWxpc3QuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3IuanMvbGliL2luc3RhbGxlcnMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy91bm9ybS9saWIvdW5vcm0uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvYnJpZGdlL3YyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLWxpbmsvbGliL2JyaWRnZS9odHRwLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLWxpbmsvbGliL2hpZ2hsZXZlbC1jaGVja3MuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wcm90b2J1ZmpzLW9sZC1maXhlZC13ZWJwYWNrL2Rpc3QvUHJvdG9CdWYuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYXRoLWJyb3dzZXJpZnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9ieXRlYnVmZmVyLW9sZC1maXhlZC13ZWJwYWNrL2Rpc3QvQnl0ZUJ1ZmZlckFCLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvbG9uZy9kaXN0L0xvbmcuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvbG93bGV2ZWwvcHJvdG9idWYvdG9fanNvbi5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL29iamVjdC52YWx1ZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9vYmplY3Qta2V5cy9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL29iamVjdC1rZXlzL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZXMtYWJzdHJhY3QvZXM3LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZXMtYWJzdHJhY3QvZXMyMDE2LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZXMtYWJzdHJhY3QvZXMyMDE1LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZnVuY3Rpb24tYmluZC9pbXBsZW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VzLXRvLXByaW1pdGl2ZS9lczYuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lcy10by1wcmltaXRpdmUvZXMyMDE1LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaXMtZGF0ZS1vYmplY3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9pcy1zeW1ib2wvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9oYXMtc3ltYm9scy9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2hhcy1zeW1ib2xzL3NoYW1zLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvZXMtYWJzdHJhY3QvaGVscGVycy9pc1ByaW1pdGl2ZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VzLWFic3RyYWN0L2VzNS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VzLXRvLXByaW1pdGl2ZS9lczUuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9pcy1yZWdleC9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL29iamVjdC52YWx1ZXMvc2hpbS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci1saW5rL2xpYi9sb3dsZXZlbC9wcm90b2J1Zi9jb25maWdfcHJvdG9fY29tcGlsZWQuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvbG93bGV2ZWwvcHJvdG9idWYvbWVzc2FnZV9kZWNvZGVyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdHJlem9yLWxpbmsvbGliL2xvd2xldmVsL3dpdGhTaGFyZWRDb25uZWN0aW9ucy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci1saW5rL2xpYi9sb3dsZXZlbC9wcm90b2J1Zi9tb25rZXlfcGF0Y2guanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy90cmV6b3ItbGluay9saWIvbG93bGV2ZWwvc2hhcmVkQ29ubmVjdGlvbldvcmtlci5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2pzb24tc3RhYmxlLXN0cmluZ2lmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2pzb25pZnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9qc29uaWZ5L2xpYi9wYXJzZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2pzb25pZnkvbGliL3N0cmluZ2lmeS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci1saW5rL2xpYi9mYWxsYmFjay5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3RyZXpvci1saW5rL2xpYi9sb3dsZXZlbC93ZWJ1c2IuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9ub2RlLWZldGNoL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvbm9kZS1saWJzLWJyb3dzZXIvbm9kZV9tb2R1bGVzL3B1bnljb2RlL3B1bnljb2RlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdXJsL3V0aWwuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9xdWVyeXN0cmluZy1lczMvZGVjb2RlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcXVlcnlzdHJpbmctZXMzL2VuY29kZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3N0cmVhbS1odHRwL2xpYi9yZXF1ZXN0LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvdG8tYXJyYXlidWZmZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy94dGVuZC9pbW11dGFibGUuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9idWlsdGluLXN0YXR1cy1jb2Rlcy9icm93c2VyLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaHR0cHMtYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2Jyb3dzZXJpZnktemxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9icm93c2VyaWZ5LXpsaWIvbGliL2JpbmRpbmcuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3pzdHJlYW0uanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2RlZmxhdGUuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL3RyZWVzLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvcGFrby9saWIvemxpYi9tZXNzYWdlcy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvaW5mbGF0ZS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvaW5mZmFzdC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL3Bha28vbGliL3psaWIvaW5mdHJlZXMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9wYWtvL2xpYi96bGliL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VuY29kaW5nL2xpYi9lbmNvZGluZy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvbGliL2luZGV4LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9saWIvYm9tLWhhbmRsaW5nLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9pbnRlcm5hbC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3V0ZjE2LmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvdXRmNy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL3NiY3MtY29kZWMuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9zYmNzLWRhdGEuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9pY29udi1saXRlL2VuY29kaW5ncy9zYmNzLWRhdGEtZ2VuZXJhdGVkLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvaWNvbnYtbGl0ZS9lbmNvZGluZ3MvZGJjcy1jb2RlYy5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2ljb252LWxpdGUvZW5jb2RpbmdzL2RiY3MtZGF0YS5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2VuY29kaW5nL2xpYi9pY29udi1sb2FkZXIuanMiLCJ3ZWJwYWNrOi8vdHJlem9yLmpzLXVtZC8uL25vZGVfbW9kdWxlcy9lbmNvZGluZy9saWIgc3luYyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL2lzLXN0cmVhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly90cmV6b3IuanMtdW1kLy4vbm9kZV9tb2R1bGVzL25vZGUtZmV0Y2gvbGliL3Jlc3BvbnNlLmpzIiwid2VicGFjazovL3RyZXpvci5qcy11bWQvLi9ub2RlX21vZHVsZXMvbm9kZS1mZXRjaC9saWIvcmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJyb290IiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwidGhpcyIsImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJidWZmZXIiLCJCdWZmZXIiLCJjb3B5UHJvcHMiLCJzcmMiLCJkc3QiLCJTYWZlQnVmZmVyIiwiYXJnIiwiZW5jb2RpbmdPck9mZnNldCIsImxlbmd0aCIsImZyb20iLCJhbGxvYyIsImFsbG9jVW5zYWZlIiwiYWxsb2NVbnNhZmVTbG93IiwiVHlwZUVycm9yIiwic2l6ZSIsImZpbGwiLCJlbmNvZGluZyIsImJ1ZiIsInVuZGVmaW5lZCIsIlNsb3dCdWZmZXIiLCJnbG9iYWwiLCJiYXNlNjQiLCJpZWVlNzU0IiwiaXNBcnJheSIsImtNYXhMZW5ndGgiLCJUWVBFRF9BUlJBWV9TVVBQT1JUIiwiY3JlYXRlQnVmZmVyIiwidGhhdCIsIlJhbmdlRXJyb3IiLCJVaW50OEFycmF5IiwiX19wcm90b19fIiwiRXJyb3IiLCJBcnJheUJ1ZmZlciIsImFycmF5IiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJmcm9tQXJyYXlMaWtlIiwiZnJvbUFycmF5QnVmZmVyIiwic3RyaW5nIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsIndyaXRlIiwic2xpY2UiLCJmcm9tU3RyaW5nIiwib2JqIiwiaXNCdWZmZXIiLCJsZW4iLCJjaGVja2VkIiwiY29weSIsInZhbCIsInR5cGUiLCJkYXRhIiwiZnJvbU9iamVjdCIsImFzc2VydFNpemUiLCJ0b1N0cmluZyIsImlzVmlldyIsImxvd2VyZWRDYXNlIiwidXRmOFRvQnl0ZXMiLCJiYXNlNjRUb0J5dGVzIiwidG9Mb3dlckNhc2UiLCJzd2FwIiwiYiIsImJpZGlyZWN0aW9uYWxJbmRleE9mIiwiZGlyIiwiaXNOYU4iLCJhcnJheUluZGV4T2YiLCJpbmRleE9mIiwibGFzdEluZGV4T2YiLCJhcnIiLCJpbmRleFNpemUiLCJhcnJMZW5ndGgiLCJ2YWxMZW5ndGgiLCJTdHJpbmciLCJyZWFkIiwicmVhZFVJbnQxNkJFIiwiZm91bmRJbmRleCIsImZvdW5kIiwiaiIsImhleFdyaXRlIiwib2Zmc2V0IiwiTnVtYmVyIiwicmVtYWluaW5nIiwic3RyTGVuIiwicGFyc2VkIiwicGFyc2VJbnQiLCJzdWJzdHIiLCJ1dGY4V3JpdGUiLCJibGl0QnVmZmVyIiwiYXNjaWlXcml0ZSIsInN0ciIsImJ5dGVBcnJheSIsInB1c2giLCJjaGFyQ29kZUF0IiwiYXNjaWlUb0J5dGVzIiwibGF0aW4xV3JpdGUiLCJiYXNlNjRXcml0ZSIsInVjczJXcml0ZSIsInVuaXRzIiwiaGkiLCJsbyIsInV0ZjE2bGVUb0J5dGVzIiwiYmFzZTY0U2xpY2UiLCJzdGFydCIsImVuZCIsImZyb21CeXRlQXJyYXkiLCJ1dGY4U2xpY2UiLCJNYXRoIiwibWluIiwicmVzIiwic2Vjb25kQnl0ZSIsInRoaXJkQnl0ZSIsImZvdXJ0aEJ5dGUiLCJ0ZW1wQ29kZVBvaW50IiwiZmlyc3RCeXRlIiwiY29kZVBvaW50IiwiYnl0ZXNQZXJTZXF1ZW5jZSIsImNvZGVQb2ludHMiLCJNQVhfQVJHVU1FTlRTX0xFTkdUSCIsImZyb21DaGFyQ29kZSIsImFwcGx5IiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwiSU5TUEVDVF9NQVhfQllURVMiLCJmb28iLCJzdWJhcnJheSIsImUiLCJ0eXBlZEFycmF5U3VwcG9ydCIsInBvb2xTaXplIiwiX2F1Z21lbnQiLCJzcGVjaWVzIiwiY29uZmlndXJhYmxlIiwiX2lzQnVmZmVyIiwiY29tcGFyZSIsImEiLCJ4IiwieSIsImNvbmNhdCIsImxpc3QiLCJwb3MiLCJzd2FwMTYiLCJzd2FwMzIiLCJzd2FwNjQiLCJhcmd1bWVudHMiLCJoZXhTbGljZSIsImFzY2lpU2xpY2UiLCJsYXRpbjFTbGljZSIsInV0ZjE2bGVTbGljZSIsImVxdWFscyIsImluc3BlY3QiLCJtYXgiLCJtYXRjaCIsImpvaW4iLCJ0YXJnZXQiLCJ0aGlzU3RhcnQiLCJ0aGlzRW5kIiwidGhpc0NvcHkiLCJ0YXJnZXRDb3B5IiwiaW5jbHVkZXMiLCJpc0Zpbml0ZSIsInRvSlNPTiIsIkFycmF5IiwiX2FyciIsInJldCIsIm91dCIsInRvSGV4IiwiYnl0ZXMiLCJjaGVja09mZnNldCIsImV4dCIsImNoZWNrSW50Iiwib2JqZWN0V3JpdGVVSW50MTYiLCJsaXR0bGVFbmRpYW4iLCJvYmplY3RXcml0ZVVJbnQzMiIsImNoZWNrSUVFRTc1NCIsIndyaXRlRmxvYXQiLCJub0Fzc2VydCIsIndyaXRlRG91YmxlIiwibmV3QnVmIiwic2xpY2VMZW4iLCJyZWFkVUludExFIiwibXVsIiwicmVhZFVJbnRCRSIsInJlYWRVSW50OCIsInJlYWRVSW50MTZMRSIsInJlYWRVSW50MzJMRSIsInJlYWRVSW50MzJCRSIsInJlYWRJbnRMRSIsInBvdyIsInJlYWRJbnRCRSIsInJlYWRJbnQ4IiwicmVhZEludDE2TEUiLCJyZWFkSW50MTZCRSIsInJlYWRJbnQzMkxFIiwicmVhZEludDMyQkUiLCJyZWFkRmxvYXRMRSIsInJlYWRGbG9hdEJFIiwicmVhZERvdWJsZUxFIiwicmVhZERvdWJsZUJFIiwid3JpdGVVSW50TEUiLCJ3cml0ZVVJbnRCRSIsIndyaXRlVUludDgiLCJmbG9vciIsIndyaXRlVUludDE2TEUiLCJ3cml0ZVVJbnQxNkJFIiwid3JpdGVVSW50MzJMRSIsIndyaXRlVUludDMyQkUiLCJ3cml0ZUludExFIiwibGltaXQiLCJzdWIiLCJ3cml0ZUludEJFIiwid3JpdGVJbnQ4Iiwid3JpdGVJbnQxNkxFIiwid3JpdGVJbnQxNkJFIiwid3JpdGVJbnQzMkxFIiwid3JpdGVJbnQzMkJFIiwid3JpdGVGbG9hdExFIiwid3JpdGVGbG9hdEJFIiwid3JpdGVEb3VibGVMRSIsIndyaXRlRG91YmxlQkUiLCJ0YXJnZXRTdGFydCIsInNldCIsImNvZGUiLCJJTlZBTElEX0JBU0U2NF9SRSIsIkluZmluaXR5IiwibGVhZFN1cnJvZ2F0ZSIsInRvQnl0ZUFycmF5IiwidHJpbSIsInJlcGxhY2UiLCJzdHJpbmd0cmltIiwiYmFzZTY0Y2xlYW4iLCJFUlJPUlMiLCJOQVRJVkUiLCJ0ZkpTT04iLCJUZlR5cGVFcnJvciIsIlRmUHJvcGVydHlUeXBlRXJyb3IiLCJ0ZlN1YkVycm9yIiwiZ2V0VmFsdWVUeXBlTmFtZSIsIlRZUEVTIiwiYXJyYXlPZiIsIl9hcnJheU9mIiwic3RyaWN0IiwiZXZlcnkiLCJ0eXBlZm9yY2UiLCJjb21waWxlIiwibWF5YmUiLCJfbWF5YmUiLCJOaWwiLCJtYXAiLCJwcm9wZXJ0eVR5cGUiLCJwcm9wZXJ0eUtleVR5cGUiLCJfbWFwIiwicHJvcGVydHlOYW1lIiwicHJvcGVydHlWYWx1ZSIsInVuY29tcGlsZWQiLCJ0eXBlUHJvcGVydHlOYW1lIiwiX29iamVjdCIsIm9uZU9mIiwidHlwZXMiLCJfb25lT2YiLCJzb21lIiwicXVhY2tzTGlrZSIsIl9xdWFja3NMaWtlIiwidHVwbGUiLCJfdHVwbGUiLCJ2YWx1ZXMiLCJleHBlY3RlZCIsIl92YWx1ZSIsIkZ1bmN0aW9uIiwic3Vycm9nYXRlIiwidHlwZU5hbWUiLCJFWFRSQSIsImFzeW5jIiwiX19hc3luYyIsImNhbGxiYWNrIiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsImNvbnN0cnVjdG9yIiwid3JpdGFibGUiLCJUZW1wQ3RvciIsImJpcDY2IiwicHVzaGRhdGEiLCJzY3JpcHROdW1iZXIiLCJPUFMiLCJSRVZFUlNFX09QUyIsIk9QX0lOVF9CQVNFIiwiT1BfUkVTRVJWRUQiLCJpc1B1c2hPbmx5Q2h1bmsiLCJPUF8wIiwiT1BfMSIsIk9QXzE2IiwiT1BfMU5FR0FURSIsImlzT1BJbnQiLCJpc1B1c2hPbmx5IiwiYXNNaW5pbWFsT1AiLCJjaHVua3MiLCJidWZmZXJTaXplIiwicmVkdWNlIiwiYWNjdW0iLCJjaHVuayIsImVuY29kaW5nTGVuZ3RoIiwiZm9yRWFjaCIsIm9wY29kZSIsImVuY29kZSIsImRlY29tcGlsZSIsIk9QX1BVU0hEQVRBNCIsImRlY29kZSIsIm51bWJlciIsIm9wIiwiaXNEZWZpbmVkSGFzaFR5cGUiLCJoYXNoVHlwZSIsImhhc2hUeXBlTW9kIiwiZnJvbUFTTSIsImFzbSIsInNwbGl0IiwiY2h1bmtTdHIiLCJIZXgiLCJ0b0FTTSIsInRvU3RhY2siLCJpc0Nhbm9uaWNhbFB1YktleSIsImlzQ2Fub25pY2FsU2lnbmF0dXJlIiwiY2hlY2siLCJnIiwiZXZhbCIsIndpbmRvdyIsIlVJTlQzMV9NQVgiLCJCSVAzMlBhdGgiLCJTQVRPU0hJX01BWCIsIkJpZ0ludCIsIkVDUG9pbnQiLCJFQ1NpZ25hdHVyZSIsIk5ldHdvcmsiLCJtZXNzYWdlUHJlZml4IiwiYmlwMzIiLCJwdWJsaWMiLCJVSW50MzIiLCJwcml2YXRlIiwicHViS2V5SGFzaCIsIlVJbnQxNiIsInNjcmlwdEhhc2giLCJ3aWYiLCJVSW50OCIsIkJ1ZmZlcjI1NmJpdCIsIkJ1ZmZlck4iLCJIYXNoMTYwYml0IiwiSGFzaDI1NmJpdCIsIlNhdG9zaGkiLCJVSW50NTMiLCJVSW50MzEiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwicHJvY2VzcyIsImRlZmF1bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwicnVuVGltZW91dCIsImZ1biIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJjdXJyZW50UXVldWUiLCJxdWV1ZSIsImRyYWluaW5nIiwicXVldWVJbmRleCIsImNsZWFuVXBOZXh0VGljayIsImRyYWluUXVldWUiLCJ0aW1lb3V0IiwicnVuIiwibWFya2VyIiwicnVuQ2xlYXJUaW1lb3V0IiwiSXRlbSIsIm5vb3AiLCJuZXh0VGljayIsImFyZ3MiLCJ0aXRsZSIsImJyb3dzZXIiLCJlbnYiLCJhcmd2IiwidmVyc2lvbiIsInZlcnNpb25zIiwib24iLCJhZGRMaXN0ZW5lciIsIm9uY2UiLCJvZmYiLCJyZW1vdmVMaXN0ZW5lciIsInJlbW92ZUFsbExpc3RlbmVycyIsImVtaXQiLCJwcmVwZW5kTGlzdGVuZXIiLCJwcmVwZW5kT25jZUxpc3RlbmVyIiwibGlzdGVuZXJzIiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwidW1hc2siLCJwbmEiLCJvYmplY3RLZXlzIiwia2V5cyIsIkR1cGxleCIsInV0aWwiLCJpbmhlcml0cyIsIlJlYWRhYmxlIiwiV3JpdGFibGUiLCJ2IiwibWV0aG9kIiwib3B0aW9ucyIsInJlYWRhYmxlIiwiYWxsb3dIYWxmT3BlbiIsIm9uZW5kIiwiX3dyaXRhYmxlU3RhdGUiLCJlbmRlZCIsIm9uRW5kTlQiLCJoaWdoV2F0ZXJNYXJrIiwiX3JlYWRhYmxlU3RhdGUiLCJkZXN0cm95ZWQiLCJfZGVzdHJveSIsImVyciIsImNiIiwiQmlnSW50ZWdlciIsIlByb3RvQnVmIiwiRXZlbnRFbWl0dGVyIiwiX2V2ZW50cyIsIl9tYXhMaXN0ZW5lcnMiLCJpc0Z1bmN0aW9uIiwiaXNPYmplY3QiLCJpc1VuZGVmaW5lZCIsImRlZmF1bHRNYXhMaXN0ZW5lcnMiLCJzZXRNYXhMaXN0ZW5lcnMiLCJlciIsImhhbmRsZXIiLCJlcnJvciIsImNvbnRleHQiLCJsaXN0ZW5lciIsIm5ld0xpc3RlbmVyIiwid2FybmVkIiwiY29uc29sZSIsInRyYWNlIiwiZmlyZWQiLCJwb3NpdGlvbiIsInNwbGljZSIsImxpc3RlbmVyQ291bnQiLCJldmxpc3RlbmVyIiwiZW1pdHRlciIsImNyZWF0ZUhhc2giLCJyaXBlbWQxNjAiLCJ1cGRhdGUiLCJkaWdlc3QiLCJzaGEyNTYiLCJoYXNoMTYwIiwiaGFzaDI1NiIsInNoYTEiLCJIYXNoIiwiYmxvY2tTaXplIiwiZmluYWxTaXplIiwiX2Jsb2NrIiwiX2ZpbmFsU2l6ZSIsIl9ibG9ja1NpemUiLCJfbGVuIiwiZW5jIiwiYmxvY2siLCJhc3NpZ25lZCIsInJlbWFpbmRlciIsIl91cGRhdGUiLCJyZW0iLCJiaXRzIiwibG93Qml0cyIsImhpZ2hCaXRzIiwiaGFzaCIsIl9oYXNoIiwiY29pbnMiLCJiaXRjb2luIiwiYmVjaDMyIiwiY29pbiIsIkJUQyIsInRlc3RuZXQiLCJsaXRlY29pbiIsIkxUQyIsImRhc2giLCJEQVNIIiwiZGFzaFRlc3QiLCJ6Y2FzaCIsImNvbnNlbnN1c0JyYW5jaElkIiwiMSIsIjIiLCIzIiwiNCIsIlpFQyIsInpjYXNoVGVzdCIsImNhcHJpY29pbiIsIkNBUFJJQ09JTiIsInNhZmVyIiwiU2FmZXIiLCJrU3RyaW5nTWF4TGVuZ3RoIiwiY29uc3RhbnRzIiwiTUFYX0xFTkdUSCIsIk1BWF9TVFJJTkdfTEVOR1RIIiwiRXZlbnRFbWl0dGVyT3V0IiwiX0V2ZW50RW1pdHRlck91dCIsImluc3RhbmNlIiwiQ29uc3RydWN0b3IiLCJfY2xhc3NDYWxsQ2hlY2siLCJSZWZlcmVuY2VFcnJvciIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiZ2V0UHJvdG90eXBlT2YiLCJzdWJDbGFzcyIsInN1cGVyQ2xhc3MiLCJzZXRQcm90b3R5cGVPZiIsIl9pbmhlcml0cyIsIl9jcmVhdGVDbGFzcyIsImRlZmluZVByb3BlcnRpZXMiLCJwcm9wcyIsImRlc2NyaXB0b3IiLCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJFdmVudDAiLCJwYXJlbnQiLCJFdmVudDEiLCJhcmcxIiwiRXZlbnQyIiwiYXJnMiIsInNjcmlwdCIsInRlbXBsYXRlcyIsImJ1ZmZlcnV0aWxzIiwiQmxvY2siLCJFQ1BhaXIiLCJIRE5vZGUiLCJUcmFuc2FjdGlvbiIsIlRyYW5zYWN0aW9uQnVpbGRlciIsImFkZHJlc3MiLCJjcnlwdG8iLCJuZXR3b3JrcyIsIm9wY29kZXMiLCJTdHJlYW0iLCJFRSIsIlRyYW5zZm9ybSIsIlBhc3NUaHJvdWdoIiwicGlwZSIsImRlc3QiLCJzb3VyY2UiLCJvbmRhdGEiLCJwYXVzZSIsIm9uZHJhaW4iLCJyZXN1bWUiLCJfaXNTdGRpbyIsIm9uY2xvc2UiLCJkaWRPbkVuZCIsImRlc3Ryb3kiLCJvbmVycm9yIiwiY2xlYW51cCIsIm9iamVjdFRvU3RyaW5nIiwiaXNCb29sZWFuIiwiaXNOdWxsIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJpc051bWJlciIsImlzU3RyaW5nIiwiaXNTeW1ib2wiLCJpc1JlZ0V4cCIsInJlIiwiaXNEYXRlIiwiaXNFcnJvciIsImlzUHJpbWl0aXZlIiwiaGFzT3duIiwicFNsaWNlIiwiZnVuY3Rpb25zSGF2ZU5hbWVzIiwicFRvU3RyaW5nIiwiYXJyYnVmIiwiRGF0YVZpZXciLCJhc3NlcnQiLCJvayIsInJlZ2V4IiwiZ2V0TmFtZSIsImZ1bmMiLCJ0cnVuY2F0ZSIsInNvbWV0aGluZyIsInJhd25hbWUiLCJmYWlsIiwibWVzc2FnZSIsIm9wZXJhdG9yIiwic3RhY2tTdGFydEZ1bmN0aW9uIiwiQXNzZXJ0aW9uRXJyb3IiLCJfZGVlcEVxdWFsIiwibWVtb3MiLCJnZXRUaW1lIiwibXVsdGlsaW5lIiwibGFzdEluZGV4IiwiaWdub3JlQ2FzZSIsIkZsb2F0MzJBcnJheSIsIkZsb2F0NjRBcnJheSIsImFjdHVhbEluZGV4IiwiYWN0dWFsVmlzaXRlZE9iamVjdHMiLCJhSXNBcmdzIiwiaXNBcmd1bWVudHMiLCJiSXNBcmdzIiwia2EiLCJrYiIsInNvcnQiLCJvYmpFcXVpdiIsImV4cGVjdGVkRXhjZXB0aW9uIiwidGVzdCIsImlzUHJvdG90eXBlT2YiLCJfdGhyb3dzIiwic2hvdWxkVGhyb3ciLCJfdHJ5QmxvY2siLCJ1c2VyUHJvdmlkZWRNZXNzYWdlIiwiaXNVbmV4cGVjdGVkRXhjZXB0aW9uIiwiZ2VuZXJhdGVkTWVzc2FnZSIsImNhcHR1cmVTdGFja1RyYWNlIiwic3RhY2siLCJmbl9uYW1lIiwiaWR4IiwibmV4dF9saW5lIiwic3Vic3RyaW5nIiwiZXF1YWwiLCJub3RFcXVhbCIsImRlZXBFcXVhbCIsImRlZXBTdHJpY3RFcXVhbCIsIm5vdERlZXBFcXVhbCIsIm5vdERlZXBTdHJpY3RFcXVhbCIsInN0cmljdEVxdWFsIiwibm90U3RyaWN0RXF1YWwiLCJ0aHJvd3MiLCJkb2VzTm90VGhyb3ciLCJpZkVycm9yIiwicHVueWNvZGUiLCJVcmwiLCJwcm90b2NvbCIsInNsYXNoZXMiLCJhdXRoIiwiaG9zdCIsInBvcnQiLCJob3N0bmFtZSIsInNlYXJjaCIsInF1ZXJ5IiwicGF0aG5hbWUiLCJwYXRoIiwiaHJlZiIsInBhcnNlIiwidXJsUGFyc2UiLCJyZXNvbHZlIiwicmVsYXRpdmUiLCJyZXNvbHZlT2JqZWN0IiwiZm9ybWF0IiwicHJvdG9jb2xQYXR0ZXJuIiwicG9ydFBhdHRlcm4iLCJzaW1wbGVQYXRoUGF0dGVybiIsInVud2lzZSIsImF1dG9Fc2NhcGUiLCJub25Ib3N0Q2hhcnMiLCJob3N0RW5kaW5nQ2hhcnMiLCJob3N0bmFtZVBhcnRQYXR0ZXJuIiwiaG9zdG5hbWVQYXJ0U3RhcnQiLCJ1bnNhZmVQcm90b2NvbCIsImphdmFzY3JpcHQiLCJqYXZhc2NyaXB0OiIsImhvc3RsZXNzUHJvdG9jb2wiLCJzbGFzaGVkUHJvdG9jb2wiLCJodHRwIiwiaHR0cHMiLCJmdHAiLCJnb3BoZXIiLCJmaWxlIiwiaHR0cDoiLCJodHRwczoiLCJmdHA6IiwiZ29waGVyOiIsImZpbGU6IiwicXVlcnlzdHJpbmciLCJ1cmwiLCJwYXJzZVF1ZXJ5U3RyaW5nIiwic2xhc2hlc0Rlbm90ZUhvc3QiLCJ1IiwicXVlcnlJbmRleCIsInNwbGl0dGVyIiwidVNwbGl0IiwicmVzdCIsInNpbXBsZVBhdGgiLCJleGVjIiwicHJvdG8iLCJsb3dlclByb3RvIiwiYXRTaWduIiwiaG9zdEVuZCIsImhlYyIsImRlY29kZVVSSUNvbXBvbmVudCIsInBhcnNlSG9zdCIsImlwdjZIb3N0bmFtZSIsImhvc3RwYXJ0cyIsInBhcnQiLCJuZXdwYXJ0IiwiayIsInZhbGlkUGFydHMiLCJub3RIb3N0IiwiYml0IiwidW5zaGlmdCIsInRvQVNDSUkiLCJoIiwiYWUiLCJlc2MiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJxbSIsInN0cmluZ2lmeSIsImNoYXJBdCIsInJlbCIsInJlc3VsdCIsInRrZXlzIiwidGsiLCJ0a2V5IiwicmtleXMiLCJyayIsInJrZXkiLCJyZWxQYXRoIiwic2hpZnQiLCJpc1NvdXJjZUFicyIsImlzUmVsQWJzIiwibXVzdEVuZEFicyIsInJlbW92ZUFsbERvdHMiLCJzcmNQYXRoIiwicHN5Y2hvdGljIiwicG9wIiwiYXV0aEluSG9zdCIsImxhc3QiLCJoYXNUcmFpbGluZ1NsYXNoIiwidXAiLCJpc0Fic29sdXRlIiwiZm4iLCJhcmczIiwiU3RyaW5nRGVjb2RlciIsIm5iIiwibmVuYyIsInJldHJpZWQiLCJfbm9ybWFsaXplRW5jb2RpbmciLCJub3JtYWxpemVFbmNvZGluZyIsInRleHQiLCJ1dGYxNlRleHQiLCJ1dGYxNkVuZCIsImZpbGxMYXN0IiwidXRmOEZpbGxMYXN0IiwiYmFzZTY0VGV4dCIsImJhc2U2NEVuZCIsInNpbXBsZVdyaXRlIiwic2ltcGxlRW5kIiwibGFzdE5lZWQiLCJsYXN0VG90YWwiLCJsYXN0Q2hhciIsInV0ZjhDaGVja0J5dGUiLCJieXRlIiwidXRmOENoZWNrRXh0cmFCeXRlcyIsInRvdGFsIiwidXRmOENoZWNrSW5jb21wbGV0ZSIsImJzNThjaGVja0Jhc2UiLCJ0bXAiLCJQb2ludCIsIkN1cnZlIiwiZ2V0Q3VydmVCeU5hbWUiLCJpbXBsZW1lbnRhdGlvbiIsImRlYnVnSW5PdXQiLCJvcmlnaW5hbCIsIl9jb25zb2xlIiwiZGVidWciLCJvYmpOYW1lIiwiYXJnc0FyciIsImxvZyIsImFycjIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJmIiwidGhlbiIsIlRZUEVEX09LIiwiVWludDE2QXJyYXkiLCJJbnQzMkFycmF5IiwiX2hhcyIsImFzc2lnbiIsInNvdXJjZXMiLCJzaHJpbmtCdWYiLCJmblR5cGVkIiwiYXJyYXlTZXQiLCJzcmNfb2ZmcyIsImRlc3Rfb2ZmcyIsImZsYXR0ZW5DaHVua3MiLCJmblVudHlwZWQiLCJzZXRUeXBlZCIsIkJ1ZjgiLCJCdWYxNiIsIkJ1ZjMyIiwiQm9vbGVhbiIsIiIsIk51bGwiLCJtdWx0aXNpZyIsIm51bGxEYXRhIiwicHViS2V5Iiwid2l0bmVzc1B1YktleUhhc2giLCJ3aXRuZXNzU2NyaXB0SGFzaCIsIndpdG5lc3NDb21taXRtZW50IiwiTVVMVElTSUciLCJOT05TVEFOREFSRCIsIk5VTExEQVRBIiwiUDJQSyIsIlAyUEtIIiwiUDJTSCIsIlAyV1BLSCIsIlAyV1NIIiwiV0lUTkVTU19DT01NSVRNRU5UIiwiY2xhc3NpZnlJbnB1dCIsImFsbG93SW5jb21wbGV0ZSIsImlucHV0IiwiY2xhc3NpZnlPdXRwdXQiLCJvdXRwdXQiLCJjbGFzc2lmeVdpdG5lc3MiLCJNQVhfU0FGRV9JTlRFR0VSIiwiY2hlY2tVSW50NTMiLCJmaXJzdCIsInNldEltbWVkaWF0ZSIsIkNvcmtlZFJlcXVlc3QiLCJzdGF0ZSIsIl90aGlzIiwibmV4dCIsImVudHJ5IiwiZmluaXNoIiwiY29ya1JlcSIsInBlbmRpbmdjYiIsImNvcmtlZFJlcXVlc3RzRnJlZSIsIm9uQ29ya2VkRmluaXNoIiwiYXN5bmNXcml0ZSIsIldyaXRhYmxlU3RhdGUiLCJpbnRlcm5hbFV0aWwiLCJkZXByZWNhdGUiLCJPdXJVaW50OEFycmF5IiwicmVhbEhhc0luc3RhbmNlIiwiZGVzdHJveUltcGwiLCJub3AiLCJzdHJlYW0iLCJpc0R1cGxleCIsIm9iamVjdE1vZGUiLCJ3cml0YWJsZU9iamVjdE1vZGUiLCJod20iLCJ3cml0YWJsZUh3bSIsIndyaXRhYmxlSGlnaFdhdGVyTWFyayIsImRlZmF1bHRId20iLCJmaW5hbENhbGxlZCIsIm5lZWREcmFpbiIsImVuZGluZyIsImZpbmlzaGVkIiwibm9EZWNvZGUiLCJkZWNvZGVTdHJpbmdzIiwiZGVmYXVsdEVuY29kaW5nIiwid3JpdGluZyIsImNvcmtlZCIsInN5bmMiLCJidWZmZXJQcm9jZXNzaW5nIiwib253cml0ZSIsIndyaXRlY2IiLCJ3cml0ZWxlbiIsIm9ud3JpdGVTdGF0ZVVwZGF0ZSIsImZpbmlzaE1heWJlIiwiZXJyb3JFbWl0dGVkIiwib253cml0ZUVycm9yIiwibmVlZEZpbmlzaCIsImJ1ZmZlcmVkUmVxdWVzdCIsImNsZWFyQnVmZmVyIiwiYWZ0ZXJXcml0ZSIsImxhc3RCdWZmZXJlZFJlcXVlc3QiLCJwcmVmaW5pc2hlZCIsImJ1ZmZlcmVkUmVxdWVzdENvdW50IiwiX3dyaXRlIiwid3JpdGV2IiwiX3dyaXRldiIsImZpbmFsIiwiX2ZpbmFsIiwiZG9Xcml0ZSIsIm9ud3JpdGVEcmFpbiIsImhvbGRlciIsImNvdW50IiwiYWxsQnVmZmVycyIsImlzQnVmIiwiY2FsbEZpbmFsIiwibmVlZCIsInByZWZpbmlzaCIsImdldEJ1ZmZlciIsImN1cnJlbnQiLCJfIiwiaGFzSW5zdGFuY2UiLCJfdWludDhBcnJheVRvQnVmZmVyIiwid3JpdGVBZnRlckVuZCIsInZhbGlkIiwidmFsaWRDaHVuayIsIm5ld0NodW5rIiwiZGVjb2RlQ2h1bmsiLCJ3cml0ZU9yQnVmZmVyIiwiY29yayIsInVuY29yayIsInNldERlZmF1bHRFbmNvZGluZyIsImVuZFdyaXRhYmxlIiwiX3VuZGVzdHJveSIsInVuZGVzdHJveSIsIkNpcGhlckJhc2UiLCJoYXNoTW9kZSIsIl9maW5hbE9yRGlnZXN0IiwiX19maW5hbCIsIl9kZWNvZGVyIiwiX2VuY29kaW5nIiwiaW5wdXRFbmMiLCJvdXRwdXRFbmMiLCJvdXREYXRhIiwiX3RvU3RyaW5nIiwic2V0QXV0b1BhZGRpbmciLCJnZXRBdXRoVGFnIiwic2V0QXV0aFRhZyIsInNldEFBRCIsIl90cmFuc2Zvcm0iLCJfZmx1c2giLCJkb25lIiwiZmluIiwiYmNyeXB0byIsImJsYWtlMmIiLCJic2NyaXB0IiwidmFydWludCIsInZhclNsaWNlU2l6ZSIsInNvbWVTY3JpcHQiLCJuZXR3b3JrIiwibG9ja3RpbWUiLCJ0aW1lc3RhbXAiLCJpbnMiLCJvdXRzIiwiam9pbnNwbGl0cyIsInZlcnNpb25Hcm91cElkIiwiZXhwaXJ5Iiwic3BlbmREZXNjcyIsIm91dHB1dERlc2NzIiwiZGFzaFR5cGUiLCJkYXNoUGF5bG9hZCIsImludmFsaWRUcmFuc2FjdGlvbiIsIkRFRkFVTFRfU0VRVUVOQ0UiLCJTSUdIQVNIX0FMTCIsIlNJR0hBU0hfTk9ORSIsIlNJR0hBU0hfU0lOR0xFIiwiU0lHSEFTSF9BTllPTkVDQU5QQVkiLCJBRFZBTkNFRF9UUkFOU0FDVElPTl9NQVJLRVIiLCJBRFZBTkNFRF9UUkFOU0FDVElPTl9GTEFHIiwiRU1QVFlfU0NSSVBUIiwiRU1QVFlfV0lUTkVTUyIsIlpFUk8iLCJPTkUiLCJWQUxVRV9VSU5UNjRfTUFYIiwiQkxBTktfT1VUUFVUIiwidmFsdWVCdWZmZXIiLCJaQ0FTSF9PVkVSV0lOVEVSX1ZFUlNJT04iLCJaQ0FTSF9TQVBMSU5HX1ZFUlNJT04iLCJaQ0FTSF9KT0lOU1BMSVRTX1NVUFBPUlRfVkVSU0lPTiIsIlpDQVNIX05VTV9KU19JTlBVVFMiLCJaQ0FTSF9OVU1fSlNfT1VUUFVUUyIsIlpDQVNIX05PVEVDSVBIRVJURVhUX1NJWkUiLCJaQ0FTSF9HMV9QUkVGSVhfTUFTSyIsIlpDQVNIX0cyX1BSRUZJWF9NQVNLIiwiREFTSF9OT1JNQUwiLCJEQVNIX1BST1ZJREVSX1JFR0lTVEVSIiwiREFTSF9QUk9WSURFUl9VUERBVEVfU0VSVklDRSIsIkRBU0hfUFJPVklERVJfVVBEQVRFX1JFR0lTVFJBUiIsIkRBU0hfUFJPVklERVJfVVBEQVRFX1JFVk9LRSIsIkRBU0hfQ09JTkJBU0UiLCJEQVNIX1FVT1JVTV9DT01NSVRNRU5UIiwiUFJFVk9VVFNfSEFTSF9QRVJTT04iLCJTRVFVRU5DRV9IQVNIX1BFUlNPTiIsIk9VVFBVVFNfSEFTSF9QRVJTT04iLCJKT0lOU1BMSVRTX0hBU0hfUEVSU09OIiwiT1ZFUldJTlRFUl9IQVNIX1BFUlNPTiIsIlpDX1NBUExJTkdfRU5DQ0lQSEVSVEVYVF9TSVpFIiwiWkNfU0FQTElOR19FTkNQTEFJTlRFWFRfU0laRSIsIlpDX1NBUExJTkdfT1VUQ0lQSEVSVEVYVF9TSVpFIiwiWkNfU0FQTElOR19PVVRQTEFJTlRFWFRfU0laRSIsImZyb21CdWZmZXIiLCJfX25vU3RyaWN0IiwicmVhZFNsaWNlIiwicmVhZFVJbnQzMiIsInJlYWRVSW50NjQiLCJyZWFkVUludDY0TEUiLCJyZWFkVmFySW50IiwidmkiLCJyZWFkVmFyU2xpY2UiLCJyZWFkVmVjdG9yIiwidmVjdG9yIiwicmVhZENvbXByZXNzZWRHMSIsInlMc2IiLCJyZWFkT3V0cHV0RGVzYyIsImN2IiwiY211IiwiZXBoZW1lcmFsS2V5IiwiZW5jQ2lwaGVyVGV4dCIsIm91dENpcGhlclRleHQiLCJwcm9vZiIsInR4IiwicmVhZEludDMyIiwiaXNaY2FzaCIsIm92ZXJ3aW50ZXJlZCIsImlzRGFzaCIsImZsYWciLCJoYXNXaXRuZXNzZXMiLCJpc0NhcHJpY29pbiIsInZpbkxlbiIsImluZGV4Iiwic2VxdWVuY2UiLCJ3aXRuZXNzIiwidm91dExlbiIsImlzT3ZlcndpbnRlckNvbXBhdGlibGUiLCJpc1NhcGxpbmdDb21wYXRpYmxlIiwidmFsdWVCYWxhbmNlIiwic2l6ZVNwZW5kRGVzY3MiLCJzcGVuZCIsImFuY2hvciIsIm51bGxpZmllciIsInNwZW5kQXV0aFNpZyIsInNpemVPdXRwdXREZXNjcyIsInN1cHBvcnRzSm9pblNwbGl0cyIsImpzTGVuIiwidnB1Yk9sZCIsInZwdWJOZXciLCJudWxsaWZpZXJzIiwiY29tbWl0bWVudHMiLCJyYW5kb21TZWVkIiwibWFjcyIsInpwcm9vZiIsImdBIiwiZ0FQcmltZSIsImdCIiwiZ0JQcmltZSIsImdDIiwiZ0NQcmltZSIsImdLIiwiZ0giLCJzQSIsInNCIiwic0MiLCJjaXBoZXJ0ZXh0cyIsImpvaW5zcGxpdFB1YmtleSIsImpvaW5zcGxpdFNpZyIsImJpbmRpbmdTaWciLCJpc0Rhc2hTcGVjaWFsVHJhbnNhY3Rpb24iLCJmcm9tSGV4IiwiaGV4IiwiaXNDb2luYmFzZUhhc2giLCJpc0NvaW5iYXNlIiwiYWRkSW5wdXQiLCJzY3JpcHRTaWciLCJhZGRPdXRwdXQiLCJzY3JpcHRQdWJLZXkiLCJ3ZWlnaHQiLCJfX2J5dGVMZW5ndGgiLCJ2aXJ0dWFsU2l6ZSIsImNlaWwiLCJqb2luc3BsaXRCeXRlTGVuZ3RoIiwiam9pblNwbGl0c0xlbiIsInZhckludFNpemUiLCJzcGVuZERlc2NzQnl0ZUxlbmd0aCIsIm91dHB1dERlc2NzQnl0ZUxlbmd0aCIsInpjYXNoVHJhbnNhY3Rpb25CeXRlTGVuZ3RoIiwic3VtIiwiX19hbGxvd1dpdG5lc3MiLCJzb21lVmVjdG9yIiwiY2xvbmUiLCJuZXdUeCIsInR4SW4iLCJ0eE91dCIsImhhc2hGb3JTaWduYXR1cmUiLCJpbkluZGV4IiwicHJldk91dFNjcmlwdCIsIm91clNjcmlwdCIsImZpbHRlciIsIk9QX0NPREVTRVBBUkFUT1IiLCJ0eFRtcCIsIl9fdG9CdWZmZXIiLCJoYXNoRm9yWklQMTQzIiwidGJ1ZmZlciIsInRvZmZzZXQiLCJ3cml0ZVNsaWNlIiwid3JpdGVVSW50MzIiLCJ3cml0ZVVJbnQ2NCIsIndyaXRlVUludDY0TEUiLCJ3cml0ZVZhclNsaWNlIiwiaGFzaE91dHB1dHMiLCJoYXNoUHJldm91dHMiLCJoYXNoU2VxdWVuY2UiLCJoYXNoSm9pbnNwbGl0cyIsInR4T3V0c1NpemUiLCJoYXNoRm9yV2l0bmVzc1YwIiwiZ2V0SGFzaCIsImdldElkIiwicmV2ZXJzZSIsInRvQnVmZmVyIiwiaW5pdGlhbE9mZnNldCIsIndyaXRlSW50MTYiLCJ3cml0ZUludDMyIiwid3JpdGVWYXJJbnQiLCJ3cml0ZUNvbXByZXNzZWRHMSIsIndyaXRlU3BlbnREZXNjIiwid3JpdGVPdXRwdXREZXNjIiwiam9pbnNwbGl0IiwiY2lwaGVydGV4dCIsInNldElucHV0U2NyaXB0Iiwic2V0V2l0bmVzcyIsImdldEV4dHJhRGF0YSIsImV4dHJhRGF0YUxlbmd0aCIsImlzWmNhc2hUcmFuc2FjdGlvbiIsImJhZGRyZXNzIiwiZWNkc2EiLCJyYW5kb21CeXRlcyIsIk5FVFdPUktTIiwiZWN1cnZlIiwic2VjcDI1NmsxIiwiX19jdXJ2ZSIsIlEiLCJjb21wcmVzc2VkIiwic2lnbnVtIiwiY29tcGFyZVRvIiwiX19RIiwiRyIsIm11bHRpcGx5IiwiZnJvbVB1YmxpY0tleUJ1ZmZlciIsImRlY29kZUZyb20iLCJmcm9tV0lGIiwiZGVjb2RlZCIsInByaXZhdGVLZXkiLCJtYWtlUmFuZG9tIiwicm5nIiwiZ2V0QWRkcmVzcyIsInRvQmFzZTU4Q2hlY2siLCJnZXRQdWJsaWNLZXlCdWZmZXIiLCJnZXROZXR3b3JrIiwiZ2V0RW5jb2RlZCIsInNpZ24iLCJ0b1dJRiIsInZlcmlmeSIsInNpZ25hdHVyZSIsImJzNThjaGVjayIsImJ0ZW1wbGF0ZXMiLCJmcm9tQmFzZTU4Q2hlY2siLCJwYXlsb2FkIiwibXVsdGlieXRlIiwiZnJvbUJlY2gzMiIsImZyb21Xb3JkcyIsIndvcmRzIiwicHJlZml4IiwidG9CZWNoMzIiLCJ0b1dvcmRzIiwiZnJvbU91dHB1dFNjcmlwdCIsIm91dHB1dFNjcmlwdCIsInRvT3V0cHV0U2NyaXB0IiwiZm9ybWF0UmVnRXhwIiwib2JqZWN0cyIsIkpTT04iLCJtc2ciLCJub0RlcHJlY2F0aW9uIiwidGhyb3dEZXByZWNhdGlvbiIsInRyYWNlRGVwcmVjYXRpb24iLCJkZWJ1Z0Vudmlyb24iLCJkZWJ1Z3MiLCJvcHRzIiwiY3R4Iiwic2VlbiIsInN0eWxpemUiLCJzdHlsaXplTm9Db2xvciIsImRlcHRoIiwiY29sb3JzIiwic2hvd0hpZGRlbiIsIl9leHRlbmQiLCJjdXN0b21JbnNwZWN0Iiwic3R5bGl6ZVdpdGhDb2xvciIsImZvcm1hdFZhbHVlIiwic3R5bGVUeXBlIiwic3R5bGUiLCJzdHlsZXMiLCJyZWN1cnNlVGltZXMiLCJwcmltaXRpdmUiLCJzaW1wbGUiLCJmb3JtYXRQcmltaXRpdmUiLCJ2aXNpYmxlS2V5cyIsImFycmF5VG9IYXNoIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImZvcm1hdEVycm9yIiwiUmVnRXhwIiwiRGF0ZSIsImJhc2UiLCJicmFjZXMiLCJ0b1VUQ1N0cmluZyIsImZvcm1hdFByb3BlcnR5IiwiZm9ybWF0QXJyYXkiLCJwcmV2IiwiY3VyIiwibnVtTGluZXNFc3QiLCJyZWR1Y2VUb1NpbmdsZVN0cmluZyIsImRlc2MiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJsaW5lIiwiYXIiLCJwYWQiLCJkZWJ1Z2xvZyIsIk5PREVfREVCVUciLCJ0b1VwcGVyQ2FzZSIsInBpZCIsImJvbGQiLCJpdGFsaWMiLCJ1bmRlcmxpbmUiLCJpbnZlcnNlIiwid2hpdGUiLCJncmV5IiwiYmxhY2siLCJibHVlIiwiY3lhbiIsImdyZWVuIiwibWFnZW50YSIsInJlZCIsInllbGxvdyIsInNwZWNpYWwiLCJib29sZWFuIiwibnVsbCIsImRhdGUiLCJyZWdleHAiLCJtb250aHMiLCJwcm9wIiwidGltZSIsImdldEhvdXJzIiwiZ2V0TWludXRlcyIsImdldFNlY29uZHMiLCJnZXREYXRlIiwiZ2V0TW9udGgiLCJvcmlnaW4iLCJhZGQiLCJwYXJzZUNvbXBhY3QiLCJmbGFnQnl0ZSIsImZyb21SU0J1ZmZlciIsImZyb21ERVIiLCJmcm9tREVSSW50ZWdlciIsInBhcnNlU2NyaXB0U2lnbmF0dXJlIiwidG9Db21wYWN0IiwidG9SU0J1ZmZlciIsInRvREVSIiwidG9ERVJJbnRlZ2VyIiwidG9TY3JpcHRTaWduYXR1cmUiLCJoYXNoVHlwZUJ1ZmZlciIsIkJJVENPSU5fQ09JTl9JTkZPIiwiYmpzTm9kZTJwcml2Tm9kZSIsIm5vZGUiLCJrZXlQYWlyIiwiZmluZ2VycHJpbnQiLCJwYXJlbnRGaW5nZXJwcmludCIsImNoaWxkX251bSIsInByaXZhdGVfa2V5IiwiY2hhaW5fY29kZSIsImNoYWluQ29kZSIsInB1Yk5vZGUyYmpzTm9kZSIsInB1YktleTJianNOb2RlIiwiZGVyaXZlUHViS2V5SGFzaCIsIm5vZGVzIiwibm9kZUl4IiwiYWRkcmVzc0l4IiwiZGVyaXZlIiwiZ2V0SWRlbnRpZmllciIsImdldEhETm9kZSIsInNlc3Npb24iLCJuZXR3b3JrT3JDb2luSW5mbyIsInhwdWJEZXJpdmUiLCJkZXZpY2UiLCJjYW5Vc2VTY3JpcHRUeXBlIiwiZmVhdHVyZXMiLCJtYWpvcl92ZXJzaW9uIiwiYXRMZWFzdCIsImNvaW5JbmZvIiwiY2hpbGRQYXRoIiwic2NyaXB0VHlwZSIsInNlZ3dpdFB1Yk1hZ2ljIiwic2Vnd2l0TmF0aXZlUHViTWFnaWMiLCJnZXRTY3JpcHRUeXBlIiwiZ2V0U2NyaXB0VHlwZU5ldHdvcmsiLCJfZ2V0UHVibGljS2V5SW50ZXJuYWwiLCJyZXNLZXkiLCJyZXNOb2RlIiwicmVzWHB1YiIsInhwdWIiLCJjaGlsZEtleSIsImNoaWxkWHB1YiIsImFjdHVhbENoaWxkWHB1YiIsImdldFNjcmlwdFR5cGVIRE5vZGUiLCJnZXRCaXRjb2luSEROb2RlIiwiaGFyZGVuIiwiSEFSREVOSU5HIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJuZXdPYmoiLCJkZWZhdWx0IiwiY3VydmUiLCJwdWJsaWNLZXkiLCJwdWJsaWNfa2V5IiwiY29udmVydCIsImJqc05vZGUiLCJianNYcHViIiwidG9CYXNlNTgiLCJrZXlYcHViIiwiZnJvbUJhc2U1OCIsImNvbnZlcnRYcHViIiwiVmFsaWRhdGlvbkVycm9yIiwidmFsaWRhdGUiLCJjb25kaXRpb24iLCJfcmVnZW5lcmF0b3IyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9leHRlbmRzIiwiX3NlbXZlckNvbXBhcmUyIiwiX2Zsb3dFdmVudHMiLCJfc2Vzc2lvbjIiLCJfY29ubmVjdGlvbkxvY2siLCJfaGRub2RlIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJnZW4iLCJQcm9taXNlIiwicmVqZWN0Iiwic3RlcCIsImluZm8iLCJEZXZpY2UiLCJfRXZlbnRFbWl0dGVyIiwidHJhbnNwb3J0IiwiZGV2aWNlTGlzdCIsImhhc0RlYnVnTGluayIsImFjdGl2aXR5SW5Qcm9ncmVzcyIsImNvbm5lY3RlZCIsImNsZWFyU2Vzc2lvbiIsImNsZWFyU2Vzc2lvblRpbWUiLCJjbGVhclNlc3Npb25UaW1lb3V0IiwiY2xlYXJTZXNzaW9uRnV0dXJlIiwicmVtZW1iZXJQbGFpbnRleHRQYXNzcGhyYXNlIiwicmVtZW1iZXJlZFBsYWludGV4dFBhc3NocHJhc2UiLCJwYXNzcGhyYXNlU3RhdGUiLCJpbnRlZ3JpdHlDaGVja2luZ1hwdWJQYXRoIiwiaW50ZWdyaXR5Q2hlY2tpbmdYcHViTmV0d29yayIsImRpc2Nvbm5lY3RFdmVudCIsImJ1dHRvbkV2ZW50IiwiZXJyb3JFdmVudCIsInBhc3NwaHJhc2VFdmVudCIsIndvcmRFdmVudCIsImNoYW5nZWRTZXNzaW9uc0V2ZW50IiwicGluRXZlbnQiLCJyZWNlaXZlRXZlbnQiLCJzZW5kRXZlbnQiLCJfc3RvbGVuRXZlbnQiLCJtaW5vcl92ZXJzaW9uIiwicGF0Y2hfdmVyc2lvbiIsImJvb3Rsb2FkZXJfbW9kZSIsIm9yaWdpbmFsRGVzY3JpcHRvciIsInJlbWVtYmVyRGV2aWNlUGFzc3BocmFzZSIsImdldFZlcnNpb25zIiwiX3dhdGNoIiwib3B0aW9uc18iLCJ3YWl0aW5nIiwiYWdncmVzc2l2ZSIsImlzQm9vdGxvYWRlciIsImJvb3Rsb2FkZXJfbWFqb3JfdmVyc2lvbiIsImJvb3Rsb2FkZXJfbWlub3JfdmVyc2lvbiIsImJvb3Rsb2FkZXJfcGF0Y2hfdmVyc2lvbiIsImZpcm13YXJlX21ham9yX3ZlcnNpb24iLCJmaXJtd2FyZV9taW5vcl92ZXJzaW9uIiwiZmlybXdhcmVfcGF0Y2hfdmVyc2lvbiIsIl90aGlzMiIsImRlYnVnTGluayIsInNraXBGaW5hbFJlbG9hZCIsIm9ubHlPbmVBY3Rpdml0eSIsIl9zdG9wQ2xlYXJTZXNzaW9uVGltZW91dCIsImN1cnJlbnRTZXNzaW9uIiwiZ2V0U2Vzc2lvbiIsIndhaXRpbmdQcm9taXNlIiwiX3dhaXRGb3JOdWxsU2Vzc2lvbiIsInJlc29sdmVkU2Vzc2lvbiIsInN0b2xlblAiLCJvbmNlU3RvbGVuIiwiX3J1biIsIl9ydW5JbnNpZGUiLCJjdXJyZW50RGVidWdTZXNzaW9uT2JqZWN0IiwiY3VycmVudFNlc3Npb25PYmplY3QiLCJvbkRpc2Nvbm5lY3QiLCJvbkNoYW5nZWQiLCJpc1N0b2xlbiIsInByb21pc2VGaW5hbGx5IiwiYWxsIiwiX3N0YXJ0Q2xlYXJTZXNzaW9uVGltZW91dCIsInJ1bkZpbmFsIiwiY2F0Y2giLCJpbnRlZ3JpdHlDaGVja2luZ1hwdWIiLCJpbnRlZ3JpdHlDaGVja2luZ1Bhc3NwaHJhc2UiLCJvbGRGZWF0dXJlcyIsImluaXRpYWxpemVkIiwibm9QYXNzcGhyYXNlIiwicGFzc3BocmFzZV9wcm90ZWN0aW9uIiwicGFzc3BocmFzZV9jYWNoZWQiLCJwYXNzcGhyYXNlRGlzYWJsZWQiLCJwYXNzcGhyYXNlRW5hYmxlZFJlbWVtYmVyZWQiLCJzYW1lUGFzc2hwcmFzZSIsIm5vUGluIiwicGluX3Byb3RlY3Rpb24iLCJwaW5fY2FjaGVkIiwiX3JlZiIsIm1hcmsiLCJfY2FsbGVlIiwiaGRub2RlIiwid3JhcCIsIl9jb250ZXh0IiwiX2dldEhETm9kZUludGVybmFsIiwic2VudCIsInN0b3AiLCJfeCIsIl90aGlzMyIsImdldEZlYXR1cmVzIiwiaW5pdGlhbGl6ZSIsIl90aGlzNCIsIm5vdyIsInBhc3NwaHJhc2UiLCJnZXRQYXNzcGhyYXNlSGFzaCIsIndlYnNpdGVIYXNoIiwiaWQiLCJkZXZpY2VfaWQiLCJoYXNoZWQiLCJyZWFsQnVmZmVyIiwiX3RoaXM1IiwiY2hlY2tQYXNzcGhyYXNlSGFzaCIsIl9yZWYyIiwiX2NhbGxlZTIiLCJhY3RpdmVTZXNzaW9uIiwiX2NvbnRleHQyIiwiZm9yd2FyZDIiLCJmb3J3YXJkRXJyb3IiLCJmb3J3YXJkMSIsImZvcndhcmRDYWxsYmFjazIiLCJmb3J3YXJkQ2FsbGJhY2sxIiwiZm9yd2FyZFBhc3NwaHJhc2UiLCJfcmVsb2FkRmVhdHVyZXNPckluaXRpYWxpemUiLCJjYW5TYXlYcHViIiwieHB1YkludGVncml0eUNoZWNrIiwiZGVhY3RpdmF0ZUV2ZW50cyIsImFicnVwdCIsIl94MiIsIl94MyIsIl94NCIsIl94NSIsIl90aGlzNiIsIl9vbkRpc2Nvbm5lY3QiLCJvblVwZGF0ZSIsInVwZGF0ZWRTZXNzaW9uIiwiZGV2aWNlcyIsInVwZGF0ZUV2ZW50IiwiZ2V0VmVyc2lvbiIsIl90aGlzNyIsIm9uQ2hhbmdlZFNlc3Npb25zIiwiaXNVc2VkIiwiaXNVc2VkSGVyZSIsImV2IiwibXlTZXNzaW9uIiwic2hvdWxkQmVVc2VkSGVyZSIsImlzVXNlZEVsc2V3aGVyZSIsIm1vZGVsIiwicmVsZWFzZSIsIl9yZWYzIiwiX2NhbGxlZTMiLCJvbkFjcXVpcmUiLCJvblJlbGVhc2UiLCJfZmVhdHVyZXMiLCJfY29udGV4dDMiLCJfYWNxdWlyZSIsIl9yZWxlYXNlIiwiX3g2IiwiX3g3IiwiX3g4IiwiX3g5IiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiX3gxMyIsInJlbGVhc2VkIiwibG9jayIsInNldEhhcmQiLCJhY3F1aXJlIiwicHJldmlvdXMiLCJkZWJ1Z0luZm8iLCJmblRvU3RyIiwiY29uc3RydWN0b3JSZWdleCIsImlzRVM2Q2xhc3NGbiIsImZuU3RyIiwidG9TdHIiLCJoYXNUb1N0cmluZ1RhZyIsInRyeUZ1bmN0aW9uT2JqZWN0Iiwic3RyQ2xhc3MiLCJDbGllbnRSZXF1ZXN0IiwicmVzcG9uc2UiLCJleHRlbmQiLCJzdGF0dXNDb2RlcyIsInJlcXVlc3QiLCJkZWZhdWx0UHJvdG9jb2wiLCJsb2NhdGlvbiIsImhlYWRlcnMiLCJyZXEiLCJJbmNvbWluZ01lc3NhZ2UiLCJBZ2VudCIsImRlZmF1bHRNYXhTb2NrZXRzIiwiZ2xvYmFsQWdlbnQiLCJTVEFUVVNfQ09ERVMiLCJNRVRIT0RTIiwiYm9keVN0cmVhbSIsIkZldGNoRXJyb3IiLCJCb2R5IiwiYm9keSIsImJvZHlVc2VkIiwiX3JhdyIsIl9hYm9ydCIsImpzb24iLCJfZGVjb2RlIiwiX2J5dGVzIiwicmVzVGltZW91dCIsIl9jb252ZXJ0IiwiY3QiLCJjaGFyc2V0IiwiX2Nsb25lIiwicDEiLCJwMiIsImdldEJvdW5kYXJ5IiwiSGVhZGVycyIsIl9oZWFkZXJzIiwicmF3IiwiaXRlbSIsImFwcGVuZCIsImdldEFsbCIsImhhcyIsInRoaXNBcmciLCJfY2xhc3MiLCJfY2xhc3MyIiwiX3RlbXAiLCJfcmVnZW5lcmF0b3IiLCJjb2luTmFtZSIsImNvaW5OZXR3b3JrIiwiaGRub2RlVXRpbHMiLCJzaWduVHhIZWxwZXIiLCJzaWduQmpzVHhIZWxwZXIiLCJzaWduRXRoVHhIZWxwZXIiLCJfY2FsbCIsIl9hcHBseURlY29yYXRlZERlc2NyaXB0b3IiLCJkZWNvcmF0b3JzIiwiaW5pdGlhbGl6ZXIiLCJkZWNvcmF0b3IiLCJTZXNzaW9uIiwic2Vzc2lvbklkIiwiX3RyYW5zcG9ydCIsIl9zZXNzaW9uSWQiLCJfZGVzY3JpcHRvciIsImNhbGxIZWxwZXIiLCJDYWxsSGVscGVyIiwidHlwZWRDYWxsIiwiYWRkcmVzc19uIiwic2hvd19kaXNwbGF5Iiwic2Vnd2l0IiwiY29pbl9uYW1lIiwic2NyaXB0X3R5cGUiLCJzZXR0aW5ncyIsImNvbnZlcnRlZE5ldHdvcmsiLCJuZXR3b3JrXyIsIm1uZW1vbmljIiwid3JhcExvYWREZXZpY2UiLCJlbmZvcmNlX3dvcmRsaXN0IiwiZmxhZ3MiLCJyZW1vdmUiLCJfdXBkYXRlRmlybXdhcmVWMiIsIl91cGRhdGVGaXJtd2FyZVYxIiwiaWRlbnRpdHkiLCJjaGFsbGVuZ2VfaGlkZGVuIiwiY2hhbGxlbmdlX3Zpc3VhbCIsImVuY3J5cHQiLCJhc2tfb25fZW5jcnlwdCIsImFza19vbl9kZWNyeXB0IiwiaXYiLCJ2YWx1ZVN0cmluZyIsIml2U3RyaW5nIiwiY2lwaGVyS2V5VmFsdWUiLCJpbnB1dHMiLCJvdXRwdXRzIiwiaW5wdXRzX2NvdW50Iiwib3V0cHV0c19jb3VudCIsInR4cyIsIm92ZXJ3aW50ZXIiLCJzaWduVHgiLCJyZWZUeHMiLCJpc0Nhc2hhZGRyZXNzIiwic2lnbkJqc1R4Iiwibm9uY2UiLCJnYXNfcHJpY2UiLCJnYXNfbGltaXQiLCJ0byIsImNoYWluX2lkIiwic2lnbkV0aFR4IiwicmVzVHlwZSIsInBvc3QiLCJ2ZXJpZmllZCIsIndhcm4iLCJqc0FkZHJlc3MiLCJ0cmV6b3JBZGRyZXNzIiwibGFiZWwiLCJMQUJFTF9NQVhfTEVOR1RIIiwiYXBwbHlTZXR0aW5ncyIsImVuYWJsZSIsInVzZV9wYXNzcGhyYXNlIiwiaG9tZXNjcmVlbiIsImNvdW50ZXIiLCJ1MmZfY291bnRlciIsInRyYW5zYWN0aW9uIiwiaW50ZWdyaXR5Q2hlY2siLCJfYXJndW1lbnRzIiwiY2hlY2tQcm9taXNlIiwibGVuUiIsImxlblMiLCJPUF9QVVNIREFUQTEiLCJPUF9QVVNIREFUQTIiLCJuYXRpdmUiLCJ2YWx1ZVR5cGVOYW1lIiwiX19lcnJvciIsIl9fdHlwZSIsIl9fdmFsdWUiLCJfX3ZhbHVlVHlwZU5hbWUiLCJ0ZkVycm9yU3RyaW5nIiwiX19sYWJlbCIsIl9fcHJvcGVydHkiLCJkZXNjcmlwdGlvbiIsInRmUHJvcGVydHlFcnJvclN0cmluZyIsImdldFR5cGVOYW1lIiwidmFsdWVKc29uIiwiZ2V0VmFsdWUiLCJ0ZkVycm9yVHlwZSIsInRmQ3VzdG9tRXJyb3IiLCJtYXhMZW5ndGgiLCJtaW5pbWFsIiwiYWJzIiwic2NyaXB0TnVtU2l6ZSIsIm5lZ2F0aXZlIiwiT1BfQ0hFQ0tNVUxUSVNJRyIsInB1YktleXMiLCJ2ZXJpZnVpbnQiLCJwdXNoRGF0YVNpemUiLCJyZWFkUHVzaERhdGFJbnQiLCJ2YXJJbnRCdWZmZXIiLCJ3cml0ZVB1c2hEYXRhSW50IiwiTUQ1IiwiUklQRU1EMTYwIiwic2hhIiwiQmFzZSIsImFsZyIsIkhhc2hCYXNlIiwiQVJSQVkxNiIsIl9hIiwiX2IiLCJfYyIsIl9kIiwicm90bCIsImZuRiIsImZuRyIsImZuSCIsImZuSSIsIk0iLCJfZGlnZXN0IiwiX2Jsb2NrT2Zmc2V0IiwiX2xlbmd0aCIsIl9maW5hbGl6ZWQiLCJ0aHJvd0lmTm90U3RyaW5nT3JCdWZmZXIiLCJjYXJyeSIsIlJlYWRhYmxlU3RhdGUiLCJFRWxpc3RlbmVyQ291bnQiLCJkZWJ1Z1V0aWwiLCJCdWZmZXJMaXN0Iiwia1Byb3h5RXZlbnRzIiwicmVhZGFibGVPYmplY3RNb2RlIiwicmVhZGFibGVId20iLCJyZWFkYWJsZUhpZ2hXYXRlck1hcmsiLCJwaXBlcyIsInBpcGVzQ291bnQiLCJmbG93aW5nIiwiZW5kRW1pdHRlZCIsInJlYWRpbmciLCJuZWVkUmVhZGFibGUiLCJlbWl0dGVkUmVhZGFibGUiLCJyZWFkYWJsZUxpc3RlbmluZyIsInJlc3VtZVNjaGVkdWxlZCIsImF3YWl0RHJhaW4iLCJyZWFkaW5nTW9yZSIsImRlY29kZXIiLCJfcmVhZCIsInJlYWRhYmxlQWRkQ2h1bmsiLCJhZGRUb0Zyb250Iiwic2tpcENodW5rQ2hlY2siLCJlbWl0UmVhZGFibGUiLCJvbkVvZkNodW5rIiwiY2h1bmtJbnZhbGlkIiwiYWRkQ2h1bmsiLCJtYXliZVJlYWRNb3JlIiwibmVlZE1vcmVEYXRhIiwiaXNQYXVzZWQiLCJzZXRFbmNvZGluZyIsIk1BWF9IV00iLCJob3dNdWNoVG9SZWFkIiwiaGVhZCIsImNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrIiwiZW1pdFJlYWRhYmxlXyIsImZsb3ciLCJtYXliZVJlYWRNb3JlXyIsIm5SZWFkaW5nTmV4dFRpY2siLCJyZXN1bWVfIiwiZnJvbUxpc3QiLCJjbGVhciIsImhhc1N0cmluZ3MiLCJ0YWlsIiwiY29weUZyb21CdWZmZXJTdHJpbmciLCJjb3B5RnJvbUJ1ZmZlciIsImZyb21MaXN0UGFydGlhbCIsImVuZFJlYWRhYmxlIiwiZW5kUmVhZGFibGVOVCIsInhzIiwibk9yaWciLCJkb1JlYWQiLCJwaXBlT3B0cyIsImVuZEZuIiwic3Rkb3V0Iiwic3RkZXJyIiwidW5waXBlIiwib251bnBpcGUiLCJ1bnBpcGVJbmZvIiwiaGFzVW5waXBlZCIsIm9uZmluaXNoIiwiY2xlYW5lZFVwIiwicGlwZU9uRHJhaW4iLCJpbmNyZWFzZWRBd2FpdERyYWluIiwiZXZlbnQiLCJkZXN0cyIsInBhdXNlZCIsIl9mcm9tTGlzdCIsImVtaXRFcnJvck5UIiwicmVhZGFibGVEZXN0cm95ZWQiLCJ3cml0YWJsZURlc3Ryb3llZCIsIl90cmFuc2Zvcm1TdGF0ZSIsImFmdGVyVHJhbnNmb3JtIiwidHMiLCJ0cmFuc2Zvcm1pbmciLCJ3cml0ZWNodW5rIiwicnMiLCJuZWVkVHJhbnNmb3JtIiwid3JpdGVlbmNvZGluZyIsInRyYW5zZm9ybSIsImZsdXNoIiwiZXJyMiIsInpsIiwienIiLCJzbCIsInNyIiwiaGwiLCJociIsIl9lIiwiZm4xIiwiZm4yIiwiZm4zIiwiZm40IiwiZm41IiwiYWwiLCJibCIsImNsIiwiZGwiLCJlbCIsImJyIiwiY3IiLCJkciIsInRsIiwidHIiLCJhbGdvcml0aG0iLCJBbGdvcml0aG0iLCJzaGEyMjQiLCJzaGEzODQiLCJzaGE1MTIiLCJLIiwiVyIsIlNoYTI1NiIsImluaXQiLCJfdyIsImNoIiwieiIsIm1haiIsInNpZ21hMCIsInNpZ21hMSIsImdhbW1hMCIsIl9mIiwiX2ciLCJfaCIsIlQxIiwiVDIiLCJIIiwiU2hhNTEyIiwiQ2giLCJ4bCIsIkdhbW1hMCIsIkdhbW1hMGwiLCJHYW1tYTEiLCJHYW1tYTFsIiwiZ2V0Q2FycnkiLCJfYWgiLCJfYmgiLCJfY2giLCJfZGgiLCJfZWgiLCJfZmgiLCJfZ2giLCJfaGgiLCJfYWwiLCJfYmwiLCJfY2wiLCJfZGwiLCJfZWwiLCJfZmwiLCJfZ2wiLCJfaGwiLCJhaCIsImJoIiwiZGgiLCJlaCIsImZoIiwiZ2giLCJoaCIsImZsIiwiZ2wiLCJ4aCIsImdhbW1hMGwiLCJnYW1tYTEiLCJnYW1tYTFsIiwiV2k3aCIsIldpN2wiLCJXaTE2aCIsIldpMTZsIiwiV2lsIiwiV2loIiwibWFqaCIsIm1hamwiLCJzaWdtYTBoIiwic2lnbWEwbCIsInNpZ21hMWgiLCJzaWdtYTFsIiwiS2loIiwiS2lsIiwiY2hoIiwiY2hsIiwidDFsIiwidDFoIiwidDJsIiwidDJoIiwid3JpdGVJbnQ2NEJFIiwibm90T2siLCJCQ0giLCJCU1YiLCJCVEciLCJESUdJQllURSIsIkRPR0VDT0lOIiwiTkFNRUNPSU4iLCJWRVJUQ09JTiIsImlzQml0Y29pbiIsImlzQml0Y29pbkNhc2giLCJpc0JpdGNvaW5TViIsImlzQml0Y29pbkdvbGQiLCJpc0xpdGVjb2luIiwiaXNWYWxpZENvaW4iLCJMZWdhY3kiLCJtZDUiLCJaRVJPUyIsIkhtYWMiLCJibG9ja3NpemUiLCJfYWxnIiwiX2tleSIsImlwYWQiLCJfaXBhZCIsIm9wYWQiLCJfb3BhZCIsImZyb21OdW1iZXIiLCJfX2JpZ2kiLCJpc0JpZ0ludGVnZXIiLCJjaGVja192ZXIiLCJhbSIsInciLCJEQiIsIkRNIiwiRFYiLCJGViIsIkYxIiwiQklfRlAiLCJGMiIsInJyIiwidnYiLCJCSV9STSIsIkJJX1JDIiwiaW50MmNoYXIiLCJpbnRBdCIsIm5idiIsImZyb21JbnQiLCJuYml0cyIsIkNsYXNzaWMiLCJNb250Z29tZXJ5IiwibXAiLCJpbnZEaWdpdCIsIm1wbCIsIm1waCIsInVtIiwibXQyIiwib3BfYW5kIiwib3Bfb3IiLCJvcF94b3IiLCJvcF9hbmRub3QiLCJsYml0IiwiY2JpdCIsIk51bGxFeHAiLCJuTm9wIiwiQmFycmV0dCIsInIyIiwicTMiLCJkbFNoaWZ0VG8iLCJtdSIsImRpdmlkZSIsIm1vZCIsInJldmVydCIsImRpdlJlbVRvIiwibXVsVG8iLCJtdWx0aXBseVRvIiwic3FyVG8iLCJzcXVhcmVUbyIsInN1YlRvIiwiY29weVRvIiwidTAiLCJjbGFtcCIsImRyU2hpZnRUbyIsImZyb21SYWRpeCIsIm1pIiwic2giLCJsU2hpZnRUbyIsImJzIiwiY2JzIiwiYm0iLCJkcyIsInJTaGlmdFRvIiwicSIsInBtIiwicHQiLCJtcyIsIm5zaCIsInlzIiwieTAiLCJ5dCIsImQxIiwiZDIiLCJxZCIsImlzRXZlbiIsImV4cCIsIm5lZ2F0ZSIsInRvUmFkaXgiLCJrbSIsImJpdExlbmd0aCIsIm1vZFBvd0ludCIsIm11bHRpcGx5VXBwZXJUbyIsIm11bHRpcGx5TG93ZXJUbyIsImRBZGRPZmZzZXQiLCJsb3dwcmltZXMiLCJscGxpbSIsImNodW5rU2l6ZSIsIkxOMiIsImNzIiwiaW50VmFsdWUiLCJkTXVsdGlwbHkiLCJ0ZXN0Qml0IiwiYml0d2lzZVRvIiwic2hpZnRMZWZ0IiwiaXNQcm9iYWJsZVByaW1lIiwibmV4dEJ5dGVzIiwiY2hhbmdlQml0IiwiYWRkVG8iLCJtb2RJbnQiLCJtaWxsZXJSYWJpbiIsIm4xIiwic3VidHJhY3QiLCJnZXRMb3dlc3RTZXRCaXQiLCJzaGlmdFJpZ2h0IiwiYmFzZXMiLCJyYW5kb20iLCJtb2RQb3ciLCJieXRlVmFsdWUiLCJzaG9ydFZhbHVlIiwiYW5kIiwib3IiLCJ4b3IiLCJhbmROb3QiLCJub3QiLCJiaXRDb3VudCIsInNldEJpdCIsImNsZWFyQml0IiwiZmxpcEJpdCIsImRpdmlkZUFuZFJlbWFpbmRlciIsImsxIiwiZzIiLCJpczEiLCJtb2RJbnZlcnNlIiwiYWMiLCJnY2QiLCJzcXVhcmUiLCJ2YWx1ZU9mIiwiVEhSRUUiLCJfekludiIsInpJbnYiLCJmcm9tQWZmaW5lIiwib3RoZXIiLCJpc0luZmluaXR5IiwieDEiLCJ5MSIsIngyIiwidHdpY2UiLCJpbmZpbml0eSIsInYyIiwidjMiLCJ4MXYyIiwienUyIiwieDMiLCJ5MyIsInozIiwieTF6MSIsInkxc3F6MSIsIm5lZyIsIlIiLCJoQml0IiwiZUJpdCIsIm11bHRpcGx5VHdvIiwiYm90aCIsImpCaXQiLCJrQml0IiwiYWZmaW5lWCIsImFmZmluZVkiLCJwTGVuZ3RoIiwiaXNPZGQiLCJwb2ludEZyb21YIiwiR3giLCJHeSIsInBPdmVyRm91ciIsImJldGEiLCJpc09uQ3VydmUiLCJsaHMiLCJyaHMiLCJuUSIsIm1zQ3J5cHRvIiwiZ2V0UmFuZG9tVmFsdWVzIiwicmF3Qnl0ZXMiLCJ3ZWJwYWNrUG9seWZpbGwiLCJwYXRocyIsImNoaWxkcmVuIiwiX2RldmljZSIsIl9kZXZpY2UyIiwiVW5hY3F1aXJlZERldmljZSIsImNvbm5lY3RFdmVudCIsIm9uQ29ubmVjdCIsIl9kaXNjb25uZWN0TGlzdGVuZXIiLCJkZXYiLCJjb25uZWN0TGlzdGVuZXIiLCJ1bmFjcXVpcmVkRGV2aWNlIiwiZGlzY29ubmVjdFVuYWNxdWlyZWRFdmVudCIsIm9uVW5hY3F1aXJlZENvbm5lY3QiLCJvblVuYWNxdWlyZWREaXNjb25uZWN0IiwiX3dhdGNoQ29ubmVjdERpc2Nvbm5lY3QiLCJwYSIsInBiIiwibmEiLCJjdXJyZW50UCIsIkRlc2NyaXB0b3JTdHJlYW0iLCJsaXN0ZW5pbmciLCJmYWlsZWRUb0ZldGNoVGltZXN0YW1wIiwiYWNxdWlyZWRFdmVudCIsInJlbGVhc2VkRXZlbnQiLCJkZWJ1Z0FjcXVpcmVkRXZlbnQiLCJkZWJ1Z1JlbGVhc2VkRXZlbnQiLCJkZWJ1Z0NoYW5nZWRTZXNzaW9uc0V2ZW50IiwiZGVidWdTZXNzaW9uIiwiX3JlcG9ydENoYW5nZXMiLCJ3YWl0Rm9yRXZlbnQiLCJsaXN0ZW4iLCJlbnVtZXJhdGUiLCJkZXNjcmlwdG9ycyIsInByZXZpb3VzTiIsImZpbmQiLCJkaXNjb25uZWN0ZWQiLCJjaGFuZ2VkU2Vzc2lvbnMiLCJwcmV2aW91c0Rlc2NyaXB0b3IiLCJhY3F1aXJlZCIsImRlYnVnQ2hhbmdlZFNlc3Npb25zIiwiZGVidWdBY3F1aXJlZCIsImRlYnVnUmVsZWFzZWQiLCJkaWRVcGRhdGUiLCJkaWZmIiwiX2RpZmYiLCJmZXRjaCIsIm5vcm1hbGl6ZU5hbWUiLCJub3JtYWxpemVWYWx1ZSIsInN1cHBvcnQiLCJibG9iIiwiQmxvYiIsImZvcm1EYXRhIiwiYXJyYXlCdWZmZXIiLCJtZXRob2RzIiwiUmVxdWVzdCIsIlJlc3BvbnNlIiwiX2JvZHlJbml0Iiwic3RhdHVzIiwic3RhdHVzVGV4dCIsInJlZGlyZWN0U3RhdHVzZXMiLCJyZWRpcmVjdCIsInhociIsIlhNTEh0dHBSZXF1ZXN0Iiwib25sb2FkIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJzIiwiaGVhZGVyIiwicmVzcG9uc2VVUkwiLCJnZXRSZXNwb25zZUhlYWRlciIsInJlc3BvbnNlVGV4dCIsIm9wZW4iLCJjcmVkZW50aWFscyIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJzZW5kIiwicG9seWZpbGwiLCJjb25zdW1lZCIsImZpbGVSZWFkZXJSZWFkeSIsInJlYWRlciIsInJlYWRCbG9iQXNBcnJheUJ1ZmZlciIsIkZpbGVSZWFkZXIiLCJyZWFkQXNBcnJheUJ1ZmZlciIsIl9pbml0Qm9keSIsIl9ib2R5VGV4dCIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsInJlamVjdGVkIiwicmVhZEFzVGV4dCIsInVwY2FzZWQiLCJyZWZlcnJlciIsImZvcm0iLCJib2R5SW5pdCIsIl92MiIsIl93aXRoU2hhcmVkQ29ubmVjdGlvbnMyIiwiX2ZhbGxiYWNrMiIsIl93ZWJ1c2IyIiwiX2ZldGNoIiwic2V0RmV0Y2giLCJCcmlkZ2VWMiIsIkZhbGxiYWNrIiwiTG93bGV2ZWwiLCJXZWJVc2IiLCJidWlsZEFuZFNlbmQiLCJzZW5kQnVmZmVycyIsInNlbmRlciIsImJ1ZmZlcnMiLCJfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uIiwiX2RpZEl0ZXJhdG9yRXJyb3IiLCJfaXRlcmF0b3JFcnJvciIsIl9pdGVyYXRvciIsIl9zdGVwIiwiaXRlcmF0b3IiLCJ0MCIsInJldHVybiIsIm1lc3NhZ2VzIiwiYnVpbGRCdWZmZXJzIiwiYnVpbGRPbmUiLCJCdWlsdE1lc3NhZ2UiLCJlbmNvZGVPbmUiLCJfcHJvdG9idWZqc09sZEZpeGVkV2VicGFjayIsIkJ1aWxkZXIiLCJtZXNzYWdlc0J5TmFtZSIsImNsZWFudXBJbnB1dCIsIiQkaGFzaEtleSIsIm1lc3NhZ2VUeXBlcyIsImFkZFRyZXpvckhlYWRlcnMiLCJlbmNvZGVBQiIsImZ1bGxTaXplIiwiaGVhZGVyU2l6ZSIsImVuY29kZWRCeXRlQnVmZmVyIiwiQnl0ZUJ1ZmZlciIsIndyaXRlQnl0ZSIsIndyaXRlVWludDE2Iiwid3JpdGVVaW50MzIiLCJfZW5jb2RlTG9uZyIsIm5ld0FycmF5IiwicGFyc2VDb25maWd1cmUiLCJfcHJvdG9idWZNZXNzYWdlcyIsIm5ld0J1aWxkZXIiLCJidWlsZCIsIl9tZXNzYWdlcyIsIk1lc3NhZ2VzIiwibG9hZGVkQ29uZmlnIiwiY29tcGlsZWRDb25maWdQcm90byIsInZhbGlkVW50aWwiLCJ2YWxpZF91bnRpbCIsInRpbWVOb3ciLCJ3aXJlUHJvdG9jb2wiLCJ3aXJlX3Byb3RvY29sIiwicHJvdG9jb2xKU09OIiwiX3RvX2pzb24iLCJwcm90b2NvbFRvSlNPTiIsInRvUmF3IiwicHJvdG9idWZNZXNzYWdlcyIsIm1lc3NhZ2VzQnlUeXBlIiwiTWVzc2FnZVR5cGUiLCJsb25nTmFtZSIsInR5cGVJZCIsInNob3J0TmFtZSIsImhhc1N5bWJvbHMiLCJvcmlnRGVmaW5lUHJvcGVydHkiLCJzdXBwb3J0c0Rlc2NyaXB0b3JzIiwiYXJlUHJvcGVydHlEZXNjcmlwdG9yc1N1cHBvcnRlZCIsInByZWRpY2F0ZSIsInByZWRpY2F0ZXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJFUyIsImlzRW51bWVyYWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTyIsIlJlcXVpcmVPYmplY3RDb2VyY2libGUiLCJ2YWxzIiwiVGhyb3dUeXBlRXJyb3IiLCJnZXRQcm90byIsImFzeW5jR2VuSXRlcmF0b3IiLCJUeXBlZEFycmF5IiwiSU5UUklOU0lDUyIsIiQgJUFycmF5JSIsIiQgJUFycmF5QnVmZmVyJSIsIiQgJUFycmF5QnVmZmVyUHJvdG90eXBlJSIsIiQgJUFycmF5SXRlcmF0b3JQcm90b3R5cGUlIiwiJCAlQXJyYXlQcm90b3R5cGUlIiwiJCAlQXJyYXlQcm90b19lbnRyaWVzJSIsImVudHJpZXMiLCIkICVBcnJheVByb3RvX2ZvckVhY2glIiwiJCAlQXJyYXlQcm90b19rZXlzJSIsIiQgJUFycmF5UHJvdG9fdmFsdWVzJSIsIiQgJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUiLCIkICVBc3luY0Z1bmN0aW9uJSIsIiQgJUFzeW5jRnVuY3Rpb25Qcm90b3R5cGUlIiwiJCAlQXN5bmNHZW5lcmF0b3IlIiwiJCAlQXN5bmNHZW5lcmF0b3JGdW5jdGlvbiUiLCIkICVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUiLCIkICVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSIsImFzeW5jSXRlcmF0b3IiLCIkICVBdG9taWNzJSIsIkF0b21pY3MiLCIkICVCb29sZWFuJSIsIiQgJUJvb2xlYW5Qcm90b3R5cGUlIiwiJCAlRGF0YVZpZXclIiwiJCAlRGF0YVZpZXdQcm90b3R5cGUlIiwiJCAlRGF0ZSUiLCIkICVEYXRlUHJvdG90eXBlJSIsIiQgJWRlY29kZVVSSSUiLCJkZWNvZGVVUkkiLCIkICVkZWNvZGVVUklDb21wb25lbnQlIiwiJCAlZW5jb2RlVVJJJSIsImVuY29kZVVSSSIsIiQgJWVuY29kZVVSSUNvbXBvbmVudCUiLCIkICVFcnJvciUiLCIkICVFcnJvclByb3RvdHlwZSUiLCIkICVldmFsJSIsIiQgJUV2YWxFcnJvciUiLCJFdmFsRXJyb3IiLCIkICVFdmFsRXJyb3JQcm90b3R5cGUlIiwiJCAlRmxvYXQzMkFycmF5JSIsIiQgJUZsb2F0MzJBcnJheVByb3RvdHlwZSUiLCIkICVGbG9hdDY0QXJyYXklIiwiJCAlRmxvYXQ2NEFycmF5UHJvdG90eXBlJSIsIiQgJUZ1bmN0aW9uJSIsIiQgJUZ1bmN0aW9uUHJvdG90eXBlJSIsIiQgJUdlbmVyYXRvciUiLCIkICVHZW5lcmF0b3JGdW5jdGlvbiUiLCIkICVHZW5lcmF0b3JQcm90b3R5cGUlIiwiJCAlSW50OEFycmF5JSIsIkludDhBcnJheSIsIiQgJUludDhBcnJheVByb3RvdHlwZSUiLCIkICVJbnQxNkFycmF5JSIsIkludDE2QXJyYXkiLCIkICVJbnQxNkFycmF5UHJvdG90eXBlJSIsIiQgJUludDMyQXJyYXklIiwiJCAlSW50MzJBcnJheVByb3RvdHlwZSUiLCIkICVpc0Zpbml0ZSUiLCIkICVpc05hTiUiLCIkICVJdGVyYXRvclByb3RvdHlwZSUiLCIkICVKU09OJSIsIiQgJUpTT05QYXJzZSUiLCIkICVNYXAlIiwiTWFwIiwiJCAlTWFwSXRlcmF0b3JQcm90b3R5cGUlIiwiJCAlTWFwUHJvdG90eXBlJSIsIiQgJU1hdGglIiwiJCAlTnVtYmVyJSIsIiQgJU51bWJlclByb3RvdHlwZSUiLCIkICVPYmplY3QlIiwiJCAlT2JqZWN0UHJvdG90eXBlJSIsIiQgJU9ialByb3RvX3RvU3RyaW5nJSIsIiQgJU9ialByb3RvX3ZhbHVlT2YlIiwiJCAlcGFyc2VGbG9hdCUiLCJwYXJzZUZsb2F0IiwiJCAlcGFyc2VJbnQlIiwiJCAlUHJvbWlzZSUiLCIkICVQcm9taXNlUHJvdG90eXBlJSIsIiQgJVByb21pc2VQcm90b190aGVuJSIsIiQgJVByb21pc2VfYWxsJSIsIiQgJVByb21pc2VfcmVqZWN0JSIsIiQgJVByb21pc2VfcmVzb2x2ZSUiLCIkICVQcm94eSUiLCJQcm94eSIsIiQgJVJhbmdlRXJyb3IlIiwiJCAlUmFuZ2VFcnJvclByb3RvdHlwZSUiLCIkICVSZWZlcmVuY2VFcnJvciUiLCIkICVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUiLCIkICVSZWZsZWN0JSIsIlJlZmxlY3QiLCIkICVSZWdFeHAlIiwiJCAlUmVnRXhwUHJvdG90eXBlJSIsIiQgJVNldCUiLCJTZXQiLCIkICVTZXRJdGVyYXRvclByb3RvdHlwZSUiLCIkICVTZXRQcm90b3R5cGUlIiwiJCAlU2hhcmVkQXJyYXlCdWZmZXIlIiwiU2hhcmVkQXJyYXlCdWZmZXIiLCIkICVTaGFyZWRBcnJheUJ1ZmZlclByb3RvdHlwZSUiLCIkICVTdHJpbmclIiwiJCAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIiwiJCAlU3RyaW5nUHJvdG90eXBlJSIsIiQgJVN5bWJvbCUiLCIkICVTeW1ib2xQcm90b3R5cGUlIiwiJCAlU3ludGF4RXJyb3IlIiwiU3ludGF4RXJyb3IiLCIkICVTeW50YXhFcnJvclByb3RvdHlwZSUiLCIkICVUaHJvd1R5cGVFcnJvciUiLCIkICVUeXBlZEFycmF5JSIsIiQgJVR5cGVkQXJyYXlQcm90b3R5cGUlIiwiJCAlVHlwZUVycm9yJSIsIiQgJVR5cGVFcnJvclByb3RvdHlwZSUiLCIkICVVaW50OEFycmF5JSIsIiQgJVVpbnQ4QXJyYXlQcm90b3R5cGUlIiwiJCAlVWludDhDbGFtcGVkQXJyYXklIiwiVWludDhDbGFtcGVkQXJyYXkiLCIkICVVaW50OENsYW1wZWRBcnJheVByb3RvdHlwZSUiLCIkICVVaW50MTZBcnJheSUiLCIkICVVaW50MTZBcnJheVByb3RvdHlwZSUiLCIkICVVaW50MzJBcnJheSUiLCJVaW50MzJBcnJheSIsIiQgJVVpbnQzMkFycmF5UHJvdG90eXBlJSIsIiQgJVVSSUVycm9yJSIsIlVSSUVycm9yIiwiJCAlVVJJRXJyb3JQcm90b3R5cGUlIiwiJCAlV2Vha01hcCUiLCJXZWFrTWFwIiwiJCAlV2Vha01hcFByb3RvdHlwZSUiLCIkICVXZWFrU2V0JSIsIldlYWtTZXQiLCIkICVXZWFrU2V0UHJvdG90eXBlJSIsImFsbG93TWlzc2luZyIsIiRpc05hTiIsIiRhc3NpZ24iLCJtb2R1bG8iLCJyZW1haW4iLCJyZWNlaXZlQW5kUGFyc2UiLCJyZWNlaXZlUmVzdCIsInBhcnNlZElucHV0IiwicmVjZWl2ZXIiLCJpc0RvbmUiLCJyZWNlaXZlQnVmZmVyIiwicGFydGlhbElucHV0IiwicGFyc2VGaXJzdElucHV0IiwicmVjZWl2ZWQiLCJ0eXBlTnVtYmVyIiwiX21lc3NhZ2VfZGVjb2RlciIsIk1lc3NhZ2VEZWNvZGVyIiwiZGVjb2RlZEpTT04iLCJtZXNzYWdlTmFtZSIsInJlY2VpdmVPbmUiLCJieXRlQnVmZmVyIiwicmVhZFVpbnQxNiIsInJlYWRVaW50MzIiLCJ0b0FycmF5QnVmZmVyIiwiTUVTU0FHRV9IRUFERVJfQllURSIsIlBhcnRpYWxseVBhcnNlZElucHV0IiwiZXhwZWN0ZWRMZW5ndGgiLCJyZXNldCIsInNoYXJwMSIsInJlYWRCeXRlIiwic2hhcnAyIiwibG9jYWxSZXNvbHZlIiwibG9jYWxSZWplY3QiLCJwcm9taXNlIiwicmVqZWN0aW5nUHJvbWlzZSIsInJlc29sdmVUaW1lb3V0UHJvbWlzZSIsImRlbGF5IiwicmVqZWN0VGltZW91dFByb21pc2UiLCJSZWFkYWJsZVN0cmVhbSIsIndyaXRhYmxlU3RyZWFtIiwiV3JpdGFibGVTdHJlYW0iLCJhYm9ydENvbnRyb2xsZXIiLCJBYm9ydENvbnRyb2xsZXIiLCJibG9iQ29uc3RydWN0b3IiLCJnZXRYSFIiLCJYRG9tYWluUmVxdWVzdCIsImNoZWNrVHlwZVN1cHBvcnQiLCJoYXZlQXJyYXlCdWZmZXIiLCJoYXZlU2xpY2UiLCJhcnJheWJ1ZmZlciIsIm1zc3RyZWFtIiwibW96Y2h1bmtlZGFycmF5YnVmZmVyIiwib3ZlcnJpZGVNaW1lVHlwZSIsInZiQXJyYXkiLCJWQkFycmF5IiwiY2FwYWJpbGl0eSIsInJTdGF0ZXMiLCJyZWFkeVN0YXRlcyIsIlVOU0VOVCIsIk9QRU5FRCIsIkhFQURFUlNfUkVDRUlWRUQiLCJMT0FESU5HIiwiRE9ORSIsImZldGNoVGltZXIiLCJfbW9kZSIsInJhd0hlYWRlcnMiLCJ0cmFpbGVycyIsInJhd1RyYWlsZXJzIiwiX2ZldGNoUmVzcG9uc2UiLCJzdGF0dXNDb2RlIiwic3RhdHVzTWVzc2FnZSIsIl9kZXN0cm95ZWQiLCJfcmVzdW1lRmV0Y2giLCJjbG9zZSIsImFib3J0IiwicGlwZVRvIiwiZ2V0UmVhZGVyIiwiX3hociIsIl9wb3MiLCJtYXRjaGVzIiwiX2NoYXJzZXQiLCJtaW1lVHlwZSIsImNoYXJzZXRNYXRjaCIsIl9vblhIUlByb2dyZXNzIiwicmVhZHlTdGF0ZSIsInJlc3BvbnNlQm9keSIsInRvQXJyYXkiLCJuZXdEYXRhIiwiTVNTdHJlYW1SZWFkZXIiLCJvbnByb2dyZXNzIiwiYWRsZXIiLCJzMSIsInMyIiwiY3JjVGFibGUiLCJ0YWJsZSIsIm1ha2VUYWJsZSIsImNyYyIsInN5c3RlbUVycm9yIiwiZXJybm8iLCJfY29uZmlnIiwidHJlem9yIiwicmVxdWlyZSIsInRyZXpvckxpbmsiLCJ0cmV6b3JDb25maWciLCJ1ZGV2SW5zdGFsbGVycyIsImxhdGVzdFZlcnNpb24iLCJpbnN0YWxsZXJzIiwiRGV2aWNlTGlzdCIsIl9zZXNzaW9uIiwiX3VuYWNxdWlyZWREZXZpY2UiLCJfZGVzY3JpcHRvclN0cmVhbSIsIl9kZXZpY2VMaXN0Iiwic2V0U2hhcmVkV29ya2VyRmFjdG9yeSIsInN3ZiIsInNoYXJlZFdvcmtlckZhY3RvcnkiLCJfaW5zdGFsbGVycyIsIl90cmV6b3JMaW5rMiIsIl9kZXZpY2VMaXN0MiIsIl9zZXROb2RlIiwiX3NldFRyYW5zcG9ydCIsIl9zZXRGZXRjaCIsImI2NCIsImxlbnMiLCJnZXRMZW5zIiwidmFsaWRMZW4iLCJwbGFjZUhvbGRlcnNMZW4iLCJBcnIiLCJfYnl0ZUxlbmd0aCIsImN1ckJ5dGUiLCJyZXZMb29rdXAiLCJ1aW50OCIsImV4dHJhQnl0ZXMiLCJwYXJ0cyIsImxlbjIiLCJlbmNvZGVDaHVuayIsImxvb2t1cCIsIm51bSIsImlzTEUiLCJtTGVuIiwibkJ5dGVzIiwiZUxlbiIsImVNYXgiLCJlQmlhcyIsIm5CaXRzIiwiTmFOIiwicnQiLCJoYWRSdW50aW1lIiwicmVnZW5lcmF0b3JSdW50aW1lIiwib2xkUnVudGltZSIsIk9wIiwiJFN5bWJvbCIsIml0ZXJhdG9yU3ltYm9sIiwiYXN5bmNJdGVyYXRvclN5bWJvbCIsInRvU3RyaW5nVGFnU3ltYm9sIiwiaW5Nb2R1bGUiLCJydW50aW1lIiwiR2VuU3RhdGVTdXNwZW5kZWRTdGFydCIsIkdlblN0YXRlU3VzcGVuZGVkWWllbGQiLCJHZW5TdGF0ZUV4ZWN1dGluZyIsIkdlblN0YXRlQ29tcGxldGVkIiwiQ29udGludWVTZW50aW5lbCIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUiLCJHcCIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwiR2VuZXJhdG9yIiwiR2VuZXJhdG9yRnVuY3Rpb24iLCJkaXNwbGF5TmFtZSIsImlzR2VuZXJhdG9yRnVuY3Rpb24iLCJnZW5GdW4iLCJhd3JhcCIsIl9fYXdhaXQiLCJkZWZpbmVJdGVyYXRvck1ldGhvZHMiLCJBc3luY0l0ZXJhdG9yIiwiaW5uZXJGbiIsIm91dGVyRm4iLCJ0cnlMb2NzTGlzdCIsIml0ZXIiLCJDb250ZXh0Iiwic2tpcFRlbXBSZXNldCIsIl9zZW50IiwiZGVsZWdhdGUiLCJ0cnlFbnRyaWVzIiwicmVzZXRUcnlFbnRyeSIsInJvb3RSZWNvcmQiLCJjb21wbGV0aW9uIiwicnZhbCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiZXhjZXB0aW9uIiwiaGFuZGxlIiwibG9jIiwiY2F1Z2h0IiwicmVjb3JkIiwidHJ5TG9jIiwiaGFzQ2F0Y2giLCJoYXNGaW5hbGx5IiwiY2F0Y2hMb2MiLCJmaW5hbGx5TG9jIiwiZmluYWxseUVudHJ5IiwiY29tcGxldGUiLCJhZnRlckxvYyIsInRocm93biIsImRlbGVnYXRlWWllbGQiLCJpdGVyYWJsZSIsInJlc3VsdE5hbWUiLCJuZXh0TG9jIiwicHJvdG9HZW5lcmF0b3IiLCJnZW5lcmF0b3IiLCJfaW52b2tlIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlUmVzdWx0IiwibWF5YmVJbnZva2VEZWxlZ2F0ZSIsInRyeUNhdGNoIiwibWFrZUludm9rZU1ldGhvZCIsInByZXZpb3VzUHJvbWlzZSIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiaW52b2tlIiwidW53cmFwcGVkIiwicHVzaFRyeUVudHJ5IiwibG9jcyIsIml0ZXJhdG9yTWV0aG9kIiwiX0J1ZmZlciIsIl9MZW5ndGhOIiwiTGVuZ3RoIiwiX0FycmF5TiIsIl9CdWZmZXJOIiwiX0hleE4iLCJVSU5UNTNfTUFYIiwiQXJyYXlOIiwiRmluaXRlIiwiSGV4TiIsIkludDgiLCJJbnQxNiIsIkludDMyIiwicDJtc28iLCJwYXJ0aWFsU2lnbmF0dXJlIiwiRU1QVFlfQlVGRkVSIiwiZW5jb2RlU3RhY2siLCJzaWduYXR1cmVzIiwic2NyaXB0RGF0YSIsInNpZyIsImRlY29kZVN0YWNrIiwiT1BfUkVUVVJOIiwiT1BfQ0hFQ0tTSUciLCJPUF9EVVAiLCJPUF9IQVNIMTYwIiwiT1BfRVFVQUxWRVJJRlkiLCJwMm1zIiwicDJwayIsInAycGtoIiwicDJ3cGtobyIsInAyd3NobyIsImxhc3RDaHVuayIsInNjcmlwdFNpZ0NodW5rcyIsInJlZGVlbVNjcmlwdENodW5rcyIsInJlZGVlbVNjcmlwdFN0YWNrIiwicmVkZWVtU2NyaXB0Iiwic2VyaWFsaXplZFNjcmlwdFB1YktleSIsInJlZGVlbVNjcmlwdFNpZyIsIk9QX0VRVUFMIiwiaXNDb21wcmVzc2VkQ2Fub25pY2FsUHViS2V5Iiwid2l0bmVzc1NjcmlwdCIsIndpdG5lc3NTY3JpcHRDaHVua3MiLCJ3aXRuZXNzUmF3U2NyaXB0U2lnIiwid2l0bmVzc0RhdGEiLCJIRUFERVIiLCJjb21taXRtZW50IiwiZmFzdE1lcmtsZVJvb3QiLCJwcmV2SGFzaCIsIm1lcmtsZVJvb3QiLCJyZWFkVHJhbnNhY3Rpb24iLCJuVHJhbnNhY3Rpb25zIiwidHJhbnNhY3Rpb25zIiwiaGVhZGVyc09ubHkiLCJnZXRVVENEYXRlIiwic2V0VVRDU2Vjb25kcyIsInR4U2l6ZSIsImNhbGN1bGF0ZVRhcmdldCIsImV4cG9uZW50IiwibWFudGlzc2EiLCJjYWxjdWxhdGVNZXJrbGVSb290IiwiaGFzaGVzIiwiY2hlY2tNZXJrbGVSb290IiwiYWN0dWFsTWVya2xlUm9vdCIsImNoZWNrUHJvb2ZPZldvcmsiLCJjdXN0b20iLCJzY29wZSIsIlRpbWVvdXQiLCJjbGVhckZuIiwiX2lkIiwiX2NsZWFyRm4iLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJ1bnJlZiIsInJlZiIsImVucm9sbCIsIm1zZWNzIiwiX2lkbGVUaW1lb3V0SWQiLCJfaWRsZVRpbWVvdXQiLCJ1bmVucm9sbCIsIl91bnJlZkFjdGl2ZSIsImFjdGl2ZSIsIl9vblRpbWVvdXQiLCJjbGVhckltbWVkaWF0ZSIsInJlZ2lzdGVySW1tZWRpYXRlIiwiaHRtbCIsImNoYW5uZWwiLCJvbkdsb2JhbE1lc3NhZ2UiLCJuZXh0SGFuZGxlIiwidGFza3NCeUhhbmRsZSIsImN1cnJlbnRseVJ1bm5pbmdBVGFzayIsImRvYyIsImRvY3VtZW50IiwiYXR0YWNoVG8iLCJydW5JZlByZXNlbnQiLCJwb3N0TWVzc2FnZSIsImltcG9ydFNjcmlwdHMiLCJwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzIiwib2xkT25NZXNzYWdlIiwib25tZXNzYWdlIiwiY2FuVXNlUG9zdE1lc3NhZ2UiLCJNZXNzYWdlQ2hhbm5lbCIsInBvcnQxIiwicG9ydDIiLCJjcmVhdGVFbGVtZW50IiwiZG9jdW1lbnRFbGVtZW50Iiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVtb3ZlQ2hpbGQiLCJhcHBlbmRDaGlsZCIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsInRhc2siLCJjb25maWciLCJsb2NhbFN0b3JhZ2UiLCJTaGEiLCJyb3RsMzAiLCJmdCIsIlNoYTEiLCJyb3RsNSIsIlNoYTIyNCIsIlNIQTUxMiIsIlNoYTM4NCIsImRpZ2VzdEZuIiwicmVzdWx0cyIsImxlZnQiLCJyaWdodCIsImIyd2FzbSIsIkFERDY0QUEiLCJvMCIsIm8xIiwiQURENjRBQyIsImIwIiwiYjEiLCJCMkJfR0VUMzIiLCJCMkJfRyIsIml4IiwiaXkiLCJ4MCIsInhvcjAiLCJ4b3IxIiwiQkxBS0UyQl9JVjMyIiwiU0lHTUE4MiIsImJsYWtlMmJDb21wcmVzcyIsInBhcmFtZXRlcl9ibG9jayIsIkJsYWtlMmIiLCJvdXRsZW4iLCJzYWx0IiwicGVyc29uYWwiLCJibGFrZTJiVXBkYXRlIiwiYmxha2UyYkZpbmFsIiwicmVhZHkiLCJQcm90byIsIkJZVEVTX01JTiIsIkJZVEVTX01BWCIsIktFWUJZVEVTX01JTiIsIktFWUJZVEVTX01BWCIsIlNBTFRCWVRFUyIsIlBFUlNPTkFMQllURVMiLCJXQVNNX1NVUFBPUlRFRCIsIlNVUFBPUlRFRCIsIldBU01fTE9BREVEIiwiQllURVMiLCJLRVlCWVRFUyIsIndhc20iLCJmcmVlTGlzdCIsImRpZ2VzdExlbmd0aCIsImZpbmFsaXplZCIsInBvaW50ZXIiLCJtZW1vcnkiLCJyZWFsbG9jIiwiYmxha2UyYl9pbml0IiwiYmxha2UyYl91cGRhdGUiLCJibGFrZTJiX2ZpbmFsIiwiV0FTTSIsIldlYkFzc2VtYmx5IiwibG9hZFdlYkFzc2VtYmx5Iiwic3VwcG9ydGVkIiwiaW1wIiwiaW1wb3J0cyIsImF0b2IiLCJncm93Iiwic2V0dXAiLCJJbnN0YW5jZSIsIk1vZHVsZSIsImluc3RhbnRpYXRlIiwiQUxQSEFCRVQiLCJBTFBIQUJFVF9NQVAiLCJwb2x5bW9kU3RlcCIsInByZSIsInByZWZpeENoayIsImNoayIsImluQml0cyIsIm91dEJpdHMiLCJtYXhWIiwiTElNSVQiLCJsb3dlcmVkIiwidXBwZXJlZCIsIndvcmRDaGFycyIsImJhc2U1OCIsImNoZWNrc3VtRm4iLCJkZWNvZGVSYXciLCJjaGVja3N1bSIsIm5ld0NoZWNrc3VtIiwiZGVjb2RlVW5zYWZlIiwiYmFzZXgiLCJCQVNFX01BUCIsInhjIiwiQkFTRSIsIkxFQURFUiIsIkZBQ1RPUiIsImlGQUNUT1IiLCJwc3oiLCJ6ZXJvZXMiLCJiMjU2IiwiaXQiLCJ2Y2giLCJwYmVnaW4iLCJwZW5kIiwiYjU4IiwicmVwZWF0IiwiY3JlYXRlSG1hYyIsImRldGVybWluaXN0aWNHZW5lcmF0ZUsiLCJjaGVja1NpZyIsIlQiLCJOX09WRVJfVFdPIiwic0ludiIsInUxIiwidTIiLCJmcm9tQnl0ZUFycmF5VW5zaWduZWQiLCJ0b0J5dGVBcnJheVVuc2lnbmVkIiwiemVyb3MiLCJwYWRkaW5nIiwiY3VydmVzIiwiZW5jb2RlUmF3IiwiYmFzZTU4Y2hlY2siLCJISUdIRVNUX0JJVCIsIkxFTkdUSCIsIk1BU1RFUl9TRUNSRVQiLCJmcm9tU2VlZEJ1ZmZlciIsInNlZWQiLCJJIiwiSUwiLCJJUiIsInBJTCIsImZyb21TZWVkSGV4Iiwic2tpcFZhbGlkYXRpb24iLCJoZCIsImdldEZpbmdlcnByaW50IiwibmV1dGVyZWQiLCJfX2lzUHJpdmF0ZSIsImlzTmV1dGVyZWQiLCJpc0hhcmRlbmVkIiwiZGVyaXZlZEtleVBhaXIiLCJLaSIsImtpIiwiZGVyaXZlSGFyZGVuZWQiLCJkZXJpdmVQYXRoIiwic3BsaXRQYXRoIiwicHJldkhkIiwiaW5kZXhTdHIiLCJvcHMiLCJzY3JpcHRUeXBlcyIsIlNJR05BQkxFIiwic3VwcG9ydGVkVHlwZSIsInN1cHBvcnRlZFAyU0hUeXBlIiwiZXhwYW5kSW5wdXQiLCJ3aXRuZXNzU3RhY2siLCJwcmV2T3V0VHlwZSIsIndpdG5lc3NTY3JpcHRUeXBlIiwicmVkZWVtU2NyaXB0VHlwZSIsIndpdG5lc3NQcm9ncmFtIiwicDJ3c2giLCJwMnNoIiwia2V5SGFzaCIsImV4cGFuZGVkIiwiZXh0cmFjdENodW5rcyIsInNpZ25UeXBlIiwic2lnblNjcmlwdCIsImV4cGFuZE91dHB1dCIsIm91clB1YktleSIsInNjcmlwdENodW5rcyIsInBraDEiLCJwa2gyIiwid3BraDEiLCJ3cGtoMiIsImNoZWNrUDJTSElucHV0IiwicmVkZWVtU2NyaXB0SGFzaCIsInByZXBhcmVJbnB1dCIsImtwUHViS2V5Iiwid2l0bmVzc1ZhbHVlIiwicDJzaFR5cGUiLCJ3aXRuZXNzVHlwZSIsImNoZWNrUDJXU0hJbnB1dCIsImJ1aWxkU3RhY2siLCJtYXhpbXVtRmVlUmF0ZSIsInByZXZUeE1hcCIsInR4dmVyc2lvbiIsInNldFZlcnNpb24iLCJzZXRWZXJzaW9uR3JvdXBJZCIsImNhblNpZ24iLCJzaWduYXR1cmVIYXNoVHlwZSIsInNldEV4cGlyeSIsInZlcnNpb25ncm91cGlkIiwic2V0TG9ja1RpbWUiLCJmcm9tVHJhbnNhY3Rpb24iLCJ0eGIiLCJfX2FkZElucHV0VW5zYWZlIiwidmluIiwidW5tYXRjaGVkIiwiZml4TXVsdGlzaWdPcmRlciIsInR4SGFzaCIsInZvdXQiLCJfX2Nhbk1vZGlmeUlucHV0cyIsInByZXZUeE91dCIsIl9fY2FuTW9kaWZ5T3V0cHV0cyIsIl9fYnVpbGQiLCJidWlsZEluY29tcGxldGUiLCJidWlsZElucHV0IiwiX19vdmVyTWF4aW11bUZlZXMiLCJzaWduYXR1cmVIYXNoIiwibklucHV0cyIsIm5PdXRwdXRzIiwiaW5kZXhUeHNGb3JTaWduIiwic2VyaWFsaXplZFR4Iiwic2VyaWFsaXplZCIsImNvaW5OYW1lQ2FwaXRhbGl6ZWQiLCJ0eERlc2MiLCJsb2NrX3RpbWUiLCJ2ZXJzaW9uX2dyb3VwX2lkIiwicHJvY2Vzc1R4UmVxdWVzdCIsIl9zaWduYXR1cmVJbmRleCIsInNpZ25hdHVyZV9pbmRleCIsIl9zaWduYXR1cmUiLCJfc2VyaWFsaXplZFR4Iiwic2VyaWFsaXplZF90eCIsInNhdmVUeFNpZ25hdHVyZXMiLCJyZXF1ZXN0X3R5cGUiLCJyZXNUeCIsIm1kIiwiZGV0YWlscyIsInR4X2hhc2giLCJyZXFUeCIsInJlcXVlc3RUeXBlIiwicmVxdWVzdEluZGV4IiwiZGF0YUxlbiIsImRhdGFPZmZzZXQiLCJiaW5fb3V0cHV0cyIsImRhdGFMZW5OIiwiZGF0YU9mZnNldE4iLCJleHRyYV9kYXRhIiwib3V0cHV0Q291bnQiLCJfZGF0YSIsImRhdGFfIiwiaW5wdXRzX2NudCIsIm91dHB1dHNfY250IiwiZXh0cmFfZGF0YV9sZW4iLCJyZXF1ZXN0UHJldlR4SW5mbyIsInJlcXVlc3RfaW5kZXgiLCJleHRyYV9kYXRhX29mZnNldCIsInJlcXVlc3RTaWduZWRUeEluZm8iLCJyZXF1ZXN0VHhJbmZvIiwidHJlem9ySW5wdXRzIiwiYW1vdW50IiwicHJldl9pbmRleCIsInByZXZfaGFzaCIsInJldmVyc2VCdWZmZXIiLCJpbnB1dDJ0cmV6b3IiLCJ0cmV6b3JPdXRwdXRzIiwib3BSZXR1cm5EYXRhIiwib3BfcmV0dXJuX2RhdGEiLCJwYXRoQXJyIiwiX2Zsb3dfbWFrZUFycmF5IiwiX2Ftb3VudCIsImlzU2NyaXB0SGFzaCIsIl9iY2hhZGRyanMyIiwidG9DYXNoQWRkcmVzcyIsIm91dHB1dDJ0cmV6b3IiLCJ0cmV6b3JSZWZUeHMiLCJleHRyYURhdGEiLCJzY3JpcHRfc2lnIiwic2NyaXB0X3B1YmtleSIsImJqc1R4MnJlZlR4Iiwic2lnbmVkVHgiLCJzaWduZWRUeDJianNUeCIsInNjcmlwdEIiLCJzY3JpcHRBIiwiYWRkcmVzc09yUGF0aCIsIl9wYXRoIiwiX2Zsb3dfZ2V0UGF0aE9yQWRkcmVzcyIsIl9zZWd3aXQiLCJfZmxvd19nZXRTZWd3aXQiLCJfc2NyaXB0QSIsInBhdGhPckFkZHJlc3MiLCJpc0JlY2gzMiIsInBraCIsImFkZHJlc3NCeXRlcyIsImRlcml2ZVdpdG5lc3NPdXRwdXQiLCJkZXJpdmVPdXRwdXRTY3JpcHQiLCJ2ZXJpZnlCanNUeCIsIl9iY2hhZGRyanMiLCJ0b0xlZ2FjeUFkZHJlc3MiLCJfZGVjb2RlZCIsImNhc2hhZGRyIiwiRm9ybWF0IiwiQml0cGF5IiwiQ2FzaGFkZHIiLCJNYWlubmV0IiwiVGVzdG5ldCIsIlR5cGUiLCJkZXRlY3RBZGRyZXNzRm9ybWF0IiwiZGVjb2RlQWRkcmVzcyIsImRldGVjdEFkZHJlc3NOZXR3b3JrIiwiZGV0ZWN0QWRkcmVzc1R5cGUiLCJWRVJTSU9OX0JZVEUiLCJCQVNFXzU4X0NIRUNLX1BBWUxPQURfTEVOR1RIIiwiSW52YWxpZEFkZHJlc3NFcnJvciIsInZlcnNpb25CeXRlIiwiZGVjb2RlQmFzZTU4QWRkcmVzcyIsImRlY29kZUNhc2hBZGRyZXNzV2l0aFByZWZpeCIsInByZWZpeGVzIiwiZGVjb2RlQ2FzaEFkZHJlc3MiLCJlbmNvZGVBc0xlZ2FjeSIsInRvQml0cGF5QWRkcmVzcyIsImVuY29kZUFzQml0cGF5IiwiZW5jb2RlQXNDYXNoYWRkciIsImlzTGVnYWN5QWRkcmVzcyIsImlzQml0cGF5QWRkcmVzcyIsImlzQ2FzaEFkZHJlc3MiLCJpc01haW5uZXRBZGRyZXNzIiwiaXNUZXN0bmV0QWRkcmVzcyIsImlzUDJQS0hBZGRyZXNzIiwiaXNQMlNIQWRkcmVzcyIsImJhc2UzMiIsImJpZ0ludCIsImNvbnZlcnRCaXRzIiwidmFsaWRhdGlvbiIsIlZBTElEX1BSRUZJWEVTIiwicHJlZml4VG9VaW50NUFycmF5IiwiYWIiLCJwb2x5bW9kIiwiR0VORVJBVE9SIiwidG9wQml0cyIsImhhc1NpbmdsZUNhc2UiLCJpc1ZhbGlkUHJlZml4IiwicHJlZml4RGF0YSIsImdldFR5cGVCaXRzIiwiZ2V0SGFzaFNpemVCaXRzIiwicGF5bG9hZERhdGEiLCJvZiIsImNoZWNrc3VtRGF0YSIsInRvSlNOdW1iZXIiLCJjaGVja3N1bVRvVWludDVBcnJheSIsInBpZWNlcyIsInZhbGlkQ2hlY2tzdW0iLCJnZXRIYXNoU2l6ZSIsImdldFR5cGUiLCJDSEFSU0VUIiwiQ0hBUlNFVF9JTlZFUlNFX0lOREVYIiwiOSIsIjgiLCIwIiwiNSIsIjYiLCI3IiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxUX18iLCJMT0dfQkFTRSIsIk1BWF9JTlQiLCJNQVhfSU5UX0FSUiIsInNtYWxsVG9BcnJheSIsIkRFRkFVTFRfQUxQSEFCRVQiLCJzdXBwb3J0c05hdGl2ZUJpZ0ludCIsIkludGVnZXIiLCJyYWRpeCIsImFscGhhYmV0IiwiY2FzZVNlbnNpdGl2ZSIsInBhcnNlQmFzZSIsInBhcnNlVmFsdWUiLCJpc1NtYWxsIiwiU21hbGxJbnRlZ2VyIiwiTmF0aXZlQmlnSW50IiwiaXNQcmVjaXNlIiwiYXJyYXlUb1NtYWxsIiwiY29tcGFyZUFicyIsImNyZWF0ZUFycmF5IiwibF9hIiwibF9iIiwiYWRkQW55IiwiYWRkU21hbGwiLCJkaWZmZXJlbmNlIiwiYV9sIiwiYl9sIiwiYm9ycm93Iiwic3VidHJhY3RTbWFsbCIsIm11bHRpcGx5TG9uZyIsInByb2R1Y3QiLCJhX2kiLCJtdWx0aXBseVNtYWxsIiwibXVsdGlwbHlTbWFsbEFuZEFycmF5IiwiZGl2TW9kU21hbGwiLCJsYW1iZGEiLCJkaXZpc29yIiwicXVvdGllbnQiLCJkaXZNb2RBbnkiLCJjb21wYXJpc29uIiwicXVvdGllbnREaWdpdCIsImRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCIsImRpdk1vZDEiLCJndWVzcyIsInhsZW4iLCJoaWdoeCIsImhpZ2h5IiwiZGl2TW9kMiIsInFTaWduIiwibVNpZ24iLCJpc0Jhc2ljUHJpbWUiLCJpc1VuaXQiLCJpc0RpdmlzaWJsZUJ5IiwibGVzc2VyIiwibWlsbGVyUmFiaW5UZXN0IiwiblByZXYiLCJwbHVzIiwic3VidHJhY3RBbnkiLCJtaW51cyIsInNtYWxsIiwibDEiLCJsMiIsIm11bHRpcGx5S2FyYXRzdWJhIiwiYmQiLCJhYmNkIiwidGltZXMiLCJfbXVsdGlwbHlCeVNtYWxsIiwiZGl2bW9kIiwib3ZlciIsIl8wIiwiXzEiLCJfMiIsImlzTmVnYXRpdmUiLCJpc1plcm8iLCJpc1Bvc2l0aXZlIiwiZXEiLCJub3RFcXVhbHMiLCJuZXEiLCJncmVhdGVyIiwiZ3QiLCJsdCIsImdyZWF0ZXJPckVxdWFscyIsImdlcSIsImxlc3Nlck9yRXF1YWxzIiwibGVxIiwiaXNQcmltZSIsImxvZ04iLCJpdGVyYXRpb25zIiwicmFuZEJldHdlZW4iLCJtb2RJbnYiLCJsYXN0VCIsImxhc3RSIiwiemVybyIsIm5ld1QiLCJvbmUiLCJuZXdSIiwicG93ZXJzT2ZUd28iLCJwb3dlcnMyTGVuZ3RoIiwiaGlnaGVzdFBvd2VyMiIsInNoaWZ0X2lzU21hbGwiLCJiaXR3aXNlIiwieFNpZ24iLCJ5U2lnbiIsInhSZW0iLCJ5UmVtIiwieERpZ2l0IiwieURpZ2l0IiwieERpdk1vZCIsInlEaXZNb2QiLCJyZW1RdW8iLCJMT0JNQVNLX0kiLCJMT0JNQVNLX0JJIiwicm91Z2hMT0IiLCJpbnRlZ2VyTG9nYXJpdGhtIiwiYWJzQmFzZSIsImFscGhhYmV0VmFsdWVzIiwiZGlnaXRzIiwicGFyc2VCYXNlRnJvbUFycmF5IiwidG9CYXNlIiwiZGlnaXQiLCJ0b0Jhc2VTdHJpbmciLCJwYXJzZVN0cmluZ1ZhbHVlIiwiZGVjaW1hbFBsYWNlIiwicGFyc2VOdW1iZXJWYWx1ZSIsIm1pbnVzT25lIiwibGNtIiwiaXNJbnN0YW5jZSIsImxvdyIsInJhbmdlIiwicmVzdHJpY3RlZCIsInRvcCIsImZyb21BcnJheSIsInN0cmljdE1vZGUiLCJtYXNrIiwiYWNjdW11bGF0b3IiLCJfc2xpY2VkVG9BcnJheSIsIl9uIiwiX3MiLCJfaSIsInNsaWNlSXRlcmF0b3IiLCJfc3BsaXRTdHJpbmczIiwic3BsaXRTdHJpbmciLCJfc3BsaXRTdHJpbmc0Iiwic3RyaXBMZWFkaW5nWmVyb2VzIiwiZGF0YV9sZW5ndGgiLCJkYXRhX2luaXRpYWxfY2h1bmsiLCJfdiIsInNpZ25hdHVyZV92IiwiX3IiLCJzaWduYXR1cmVfciIsInNpZ25hdHVyZV9zIiwiX3NwbGl0U3RyaW5nIiwiX3NwbGl0U3RyaW5nMiIsImRhdGFfY2h1bmsiLCJfcmFuZG9tYnl0ZXMiLCJfcmFuZG9tYnl0ZXMyIiwiZmlsdGVyRm9yTG9nIiwiYmxhY2tsaXN0IiwiUGFzc3BocmFzZUFjayIsIkNpcGhlcmVkS2V5VmFsdWUiLCJHZXRQdWJsaWNLZXkiLCJQdWJsaWNLZXkiLCJEZWNyeXB0ZWRNZXNzYWdlIiwiRmlybXdhcmVVcGxvYWQiLCJsb2dNZXNzYWdlIiwiX2NvbW1vbkNhbGwiLCJyZXNUeXBlcyIsImFzc2VydFR5cGUiLCJfZmlsdGVyQ29tbW9uVHlwZXMiLCJlbnRyb3B5IiwiZ2VuZXJhdGVFbnRyb3B5IiwiX3Byb21wdFBpbiIsInBpbiIsImN1cnJlbnRTdGF0ZSIsInJlY2VpdmVkU3RhdGUiLCJvbl9kZXZpY2UiLCJfcHJvbXB0UGFzc3BocmFzZSIsIl9wcm9tcHRXb3JkIiwid29yZCIsIm5vcm1hbGl6ZSIsIl90aGlzOCIsInRvTG9jYWxlTG93ZXJDYXNlIiwiX2Rlc2NyaXB0b3JTdHJlYW0yIiwiX3VuYWNxdWlyZWREZXZpY2UyIiwidHJhbnNwb3J0TG9hZGluZyIsInVuYWNxdWlyZWREZXZpY2VzIiwiY3JlYXRpbmdEZXZpY2VzIiwic2Vzc2lvbnMiLCJkZWJ1Z1Nlc3Npb25zIiwidHJhbnNwb3J0RXZlbnQiLCJzdHJlYW1FdmVudCIsImNvbm5lY3RVbmFjcXVpcmVkRXZlbnQiLCJ1bnJlYWRhYmxlSGlkRGV2aWNlQ2hhbmdlIiwicmVxdWVzdE5lZWRlZCIsIl9pbml0U3RyZWFtIiwiX3NldFVucmVhZGFibGVIaWREZXZpY2VDaGFuZ2UiLCJfaW5pdFRyYW5zcG9ydCIsImRlZmF1bHRUcmFuc3BvcnQiLCJyZXF1ZXN0RGV2aWNlIiwib2JqZWN0VmFsdWVzIiwiYXNBcnJheSIsInVuYWNxdWlyZWRBc0FycmF5IiwiYWN0aXZlTmFtZSIsImlzT3V0ZGF0ZWQiLCJjb25maWd1cmUiLCJfY29uZmlnVXJsIiwiY29uZmlnVXJsIiwiQ09ORklHX1VSTCIsImJyaWRnZVZlcnNpb25VcmwiLCJzZXRCcmlkZ2VMYXRlc3RVcmwiLCJfY29uZmlnVHJhbnNwb3J0IiwiX2NyZWF0ZURldmljZSIsImZyb21EZXNjcmlwdG9yIiwiX2NyZWF0ZVVuYWNxdWlyZWREZXZpY2UiLCJfY3JlYXRlQW5kU2F2ZURldmljZSIsInBhdGhTdHIiLCJyZWplY3RPbkVtcHR5Iiwic3RlYWwiLCJzdGVhbEZpcnN0RGV2aWNlIiwiYWNxdWlyZUZpcnN0RGV2aWNlIiwiX3RoaXM5IiwiYWN0aXZlVHJhbnNwb3J0Iiwid2VidXNiVHJhbnNwb3J0Iiwid29ya2luZ1RyYW5zcG9ydHMiLCJwbHVnaW4iLCJfdHJhbnNwb3J0MiIsInVucmVhZGFibGVIaWREZXZpY2UiLCJvbmJlZm9yZXVubG9hZCIsInBsYXRmb3JtIiwicHJlZmVycmVkUGxhdGZvcm0iLCJkb21haW4iLCJEQVRBX0RPTUFJTiIsIlVERVZfSU5TVEFMTEVSUyIsImZpbGxJbnN0YWxsZXJVcmwiLCJ1ZGV2IiwicHJlZmVycmVkIiwiaXNQcmVmZXJyZWQiLCJCUklER0VfSU5TVEFMTEVSUyIsImJyaWRnZSIsImluc3RhbGxlciIsInNob3J0VXJsIiwiQlJJREdFX1ZFUlNJT05fVVJMIiwiYnJpZGdlVXJsIiwidmVyc2lvbl8iLCJ2ZXIiLCJuYXZpZ2F0b3IiLCJ1c2VyQWdlbnQiLCJERUZBVUxUX0ZFQVRVUkUiLCJDQUNIRV9USFJFU0hPTEQiLCJTQmFzZSIsIkxCYXNlIiwiVkJhc2UiLCJUQmFzZSIsIkxDb3VudCIsIlZDb3VudCIsIlRDb3VudCIsIk5Db3VudCIsIlNDb3VudCIsIlVDaGFyIiwiY3AiLCJmZWF0dXJlIiwiY29kZXBvaW50IiwiY2FjaGUiLCJjYWNoZUNvdW50ZXIiLCJzdHJhdGVnaWVzIiwibmVlZEZlYXR1cmUiLCJTSW5kZXgiLCJUSW5kZXgiLCJ1ZGF0YSIsInJlZHVjZVJpZ2h0Iiwic3RyYXRlZ3kiLCJpc0hpZ2hTdXJyb2dhdGUiLCJpc0xvd1N1cnJvZ2F0ZSIsInByZXBGZWF0dXJlIiwiZ2V0RGVjb21wIiwiaXNDb21wYXRpYmlsaXR5IiwiaXNFeGNsdWRlIiwiZ2V0Q2Fub25pY2FsQ2xhc3MiLCJnZXRDb21wb3NpdGUiLCJmb2xsb3dpbmciLCJVQ2hhckl0ZXJhdG9yIiwiY3Vyc29yIiwiUmVjdXJzRGVjb21wSXRlcmF0b3IiLCJjYW5vIiwiY2Fub25pY2FsIiwicmVzQnVmIiwidWNoYXIiLCJyZWN1cnNpdmVEZWNvbXAiLCJkZWNvbXAiLCJEZWNvbXBJdGVyYXRvciIsImNjIiwiaW5zcHQiLCJDb21wSXRlcmF0b3IiLCJwcm9jQnVmIiwibGFzdENsYXNzIiwiY29tcG9zaXRlIiwiY3JlYXRlSXRlcmF0b3IiLCI2MCIsIjgyNCIsIjYxIiwiNjIiLCI2NSIsIjc2OCIsIjc2OSIsIjc3MCIsIjc3MSIsIjc3MiIsIjc3NCIsIjc3NSIsIjc3NiIsIjc3NyIsIjc3OCIsIjc4MCIsIjc4MyIsIjc4NSIsIjgwMyIsIjgwNSIsIjgwOCIsIjY2IiwiODE3IiwiNjciLCI4MDciLCI2OCIsIjgxMyIsIjY5IiwiODE2IiwiNzAiLCI3MSIsIjcyIiwiODE0IiwiNzMiLCI3NCIsIjc1IiwiNzYiLCI3NyIsIjc4IiwiNzkiLCI3NzkiLCI3OTUiLCI4MCIsIjgyIiwiODMiLCI4MDYiLCI4NCIsIjg1IiwiODA0IiwiODYiLCI4NyIsIjg4IiwiODkiLCI5MCIsIjk3IiwiOTgiLCI5OSIsIjEwMCIsIjEwMSIsIjEwMiIsIjEwMyIsIjEwNCIsIjEwNSIsIjEwNiIsIjEwNyIsIjEwOCIsIjEwOSIsIjExMCIsIjExMSIsIjExMiIsIjExNCIsIjExNSIsIjExNiIsIjExNyIsIjExOCIsIjExOSIsIjEyMCIsIjEyMSIsIjEyMiIsIjE2MCIsIjE2OCIsIjgzNCIsIjE3MCIsIjE3NSIsIjE3OCIsIjE3OSIsIjE4MCIsIjE4MSIsIjE4NCIsIjE4NSIsIjE4NiIsIjE4OCIsIjE4OSIsIjE5MCIsIjE5MiIsIjE5MyIsIjE5NCIsIjE5NSIsIjE5NiIsIjE5NyIsIjE5OCIsIjE5OSIsIjIwMCIsIjIwMSIsIjIwMiIsIjIwMyIsIjIwNCIsIjIwNSIsIjIwNiIsIjIwNyIsIjIwOSIsIjIxMCIsIjIxMSIsIjIxMiIsIjIxMyIsIjIxNCIsIjIxNiIsIjIxNyIsIjIxOCIsIjIxOSIsIjIyMCIsIjIyMSIsIjIyNCIsIjIyNSIsIjIyNiIsIjIyNyIsIjIyOCIsIjIyOSIsIjIzMCIsIjIzMSIsIjIzMiIsIjIzMyIsIjIzNCIsIjIzNSIsIjIzNiIsIjIzNyIsIjIzOCIsIjIzOSIsIjI0MSIsIjI0MiIsIjI0MyIsIjI0NCIsIjI0NSIsIjI0NiIsIjI0OCIsIjI0OSIsIjI1MCIsIjI1MSIsIjI1MiIsIjI1MyIsIjI1NSIsIjI1NiIsIjI1NyIsIjI1OCIsIjI1OSIsIjI2MCIsIjI2MSIsIjI2MiIsIjI2MyIsIjI2NCIsIjI2NSIsIjI2NiIsIjI2NyIsIjI2OCIsIjI2OSIsIjI3MCIsIjI3MSIsIjI3NCIsIjI3NSIsIjI3NiIsIjI3NyIsIjI3OCIsIjI3OSIsIjI4MCIsIjI4MSIsIjI4MiIsIjI4MyIsIjI4NCIsIjI4NSIsIjI4NiIsIjI4NyIsIjI4OCIsIjI4OSIsIjI5MCIsIjI5MSIsIjI5MiIsIjI5MyIsIjI5NiIsIjI5NyIsIjI5OCIsIjI5OSIsIjMwMCIsIjMwMSIsIjMwMiIsIjMwMyIsIjMwNCIsIjMwNiIsIjMwNyIsIjMwOCIsIjMwOSIsIjMxMCIsIjMxMSIsIjMxMyIsIjMxNCIsIjMxNSIsIjMxNiIsIjMxNyIsIjMxOCIsIjMxOSIsIjMyMCIsIjMyMyIsIjMyNCIsIjMyNSIsIjMyNiIsIjMyNyIsIjMyOCIsIjMyOSIsIjMzMiIsIjMzMyIsIjMzNCIsIjMzNSIsIjMzNiIsIjMzNyIsIjM0MCIsIjM0MSIsIjM0MiIsIjM0MyIsIjM0NCIsIjM0NSIsIjM0NiIsIjM0NyIsIjM0OCIsIjM0OSIsIjM1MCIsIjM1MSIsIjM1MiIsIjM1MyIsIjM1NCIsIjM1NSIsIjM1NiIsIjM1NyIsIjM2MCIsIjM2MSIsIjM2MiIsIjM2MyIsIjM2NCIsIjM2NSIsIjM2NiIsIjM2NyIsIjM2OCIsIjM2OSIsIjM3MCIsIjM3MSIsIjM3MiIsIjM3MyIsIjM3NCIsIjM3NSIsIjM3NiIsIjM3NyIsIjM3OCIsIjM3OSIsIjM4MCIsIjM4MSIsIjM4MiIsIjM4MyIsIjQxNiIsIjQxNyIsIjQzMSIsIjQzMiIsIjQzOSIsIjQ1MiIsIjQ1MyIsIjQ1NCIsIjQ1NSIsIjQ1NiIsIjQ1NyIsIjQ1OCIsIjQ1OSIsIjQ2MCIsIjQ2MSIsIjQ2MiIsIjQ2MyIsIjQ2NCIsIjQ2NSIsIjQ2NiIsIjQ2NyIsIjQ2OCIsIjQ2OSIsIjQ3MCIsIjQ3MSIsIjQ3MiIsIjQ3MyIsIjQ3NCIsIjQ3NSIsIjQ3NiIsIjQ3OCIsIjQ3OSIsIjQ4MCIsIjQ4MSIsIjQ4MiIsIjQ4MyIsIjQ4NiIsIjQ4NyIsIjQ4OCIsIjQ4OSIsIjQ5MCIsIjQ5MSIsIjQ5MiIsIjQ5MyIsIjQ5NCIsIjQ5NSIsIjQ5NiIsIjQ5NyIsIjQ5OCIsIjQ5OSIsIjUwMCIsIjUwMSIsIjUwNCIsIjUwNSIsIjUwNiIsIjUwNyIsIjUwOCIsIjUwOSIsIjUxMCIsIjUxMSIsIjY2MDQ1IiwiNTEyIiwiNTEzIiwiNTE0IiwiNTE1IiwiNTE2IiwiNTE3IiwiNTE4IiwiNTE5IiwiNTIwIiwiNTIxIiwiNTIyIiwiNTIzIiwiNTI0IiwiNTI1IiwiNTI2IiwiNTI3IiwiNTI4IiwiNTI5IiwiNTMwIiwiNTMxIiwiNTMyIiwiNTMzIiwiNTM0IiwiNTM1IiwiNTM2IiwiNTM3IiwiNTM4IiwiNTM5IiwiNTQyIiwiNTQzIiwiNTUwIiwiNTUxIiwiNTUyIiwiNTUzIiwiNTU0IiwiNTU1IiwiNTU2IiwiNTU3IiwiNTU4IiwiNTU5IiwiNTYwIiwiNTYxIiwiNTYyIiwiNTYzIiwiNjU4IiwiNjg4IiwiNjg5IiwiNjkwIiwiNjkxIiwiNjkyIiwiNjkzIiwiNjk0IiwiNjk1IiwiNjk2IiwiNzI4IiwiNzI5IiwiNzMwIiwiNzMxIiwiNzMyIiwiNzMzIiwiNzM2IiwiNzM3IiwiNzM4IiwiNzM5IiwiNzQwIiwiNjYyNzIiLCI3NzMiLCI3ODEiLCI3ODIiLCI3ODQiLCI3ODYiLCI3ODciLCI3ODgiLCI3ODkiLCI3OTAiLCI3OTEiLCI3OTIiLCI3OTMiLCI3OTQiLCI3OTYiLCI3OTciLCI3OTgiLCI3OTkiLCI4MDAiLCI4MDEiLCI4MDIiLCI4MDkiLCI4MTAiLCI4MTEiLCI4MTIiLCI4MTUiLCI4MTgiLCI4MTkiLCI4MjAiLCI4MjEiLCI4MjIiLCI4MjMiLCI4MjUiLCI4MjYiLCI4MjciLCI4MjgiLCI4MjkiLCI4MzAiLCI4MzEiLCI4MzIiLCI4MzMiLCI4MzUiLCI4MzYiLCI4MzciLCI4MzgiLCI4MzkiLCI4NDAiLCI4NDEiLCI4NDIiLCI4NDMiLCI4NDQiLCI4NDUiLCI4NDYiLCI4NDgiLCI4NDkiLCI4NTAiLCI4NTEiLCI4NTIiLCI4NTMiLCI4NTQiLCI4NTUiLCI4NTYiLCI4NTciLCI4NTgiLCI4NTkiLCI4NjAiLCI4NjEiLCI4NjIiLCI4NjMiLCI4NjQiLCI4NjUiLCI4NjYiLCI4NjciLCI4NjgiLCI4NjkiLCI4NzAiLCI4NzEiLCI4NzIiLCI4NzMiLCI4NzQiLCI4NzUiLCI4NzYiLCI4NzciLCI4NzgiLCI4NzkiLCI4ODQiLCI4OTAiLCI4OTQiLCI5MDAiLCI5MDEiLCI5MDIiLCI5MDMiLCI5MDQiLCI5MDUiLCI5MDYiLCI5MDgiLCI5MTAiLCI5MTEiLCI5MTIiLCI5MTMiLCI5MTciLCI5MTkiLCI5MjEiLCI5MjciLCI5MjkiLCI5MzMiLCI5MzciLCI5MzgiLCI5MzkiLCI5NDAiLCI5NDEiLCI5NDIiLCI5NDMiLCI5NDQiLCI5NDUiLCI5NDkiLCI5NTEiLCI5NTMiLCI5NTkiLCI5NjEiLCI5NjUiLCI5NjkiLCI5NzAiLCI5NzEiLCI5NzIiLCI5NzMiLCI5NzQiLCI5NzYiLCI5NzciLCI5NzgiLCI5NzkiLCI5ODAiLCI5ODEiLCI5ODIiLCIxMDA4IiwiMTAwOSIsIjEwMTAiLCIxMDEyIiwiMTAxMyIsIjEwMTciLCI2NjQyMiIsIjY2NDIzIiwiNjY0MjQiLCI2NjQyNSIsIjY2NDI2IiwiMTAyNCIsIjEwMjUiLCIxMDI3IiwiMTAzMCIsIjEwMzEiLCIxMDM2IiwiMTAzNyIsIjEwMzgiLCIxMDQwIiwiMTA0MyIsIjEwNDUiLCIxMDQ2IiwiMTA0NyIsIjEwNDgiLCIxMDQ5IiwiMTA1MCIsIjEwNTQiLCIxMDU5IiwiMTA2MyIsIjEwNjciLCIxMDY5IiwiMTA3MiIsIjEwNzUiLCIxMDc3IiwiMTA3OCIsIjEwNzkiLCIxMDgwIiwiMTA4MSIsIjEwODIiLCIxMDg2IiwiMTA5MSIsIjEwOTUiLCIxMDk5IiwiMTEwMSIsIjExMDQiLCIxMTA1IiwiMTEwNyIsIjExMTAiLCIxMTExIiwiMTExNiIsIjExMTciLCIxMTE4IiwiMTE0MCIsIjExNDEiLCIxMTQyIiwiMTE0MyIsIjExNTUiLCIxMTU2IiwiMTE1NyIsIjExNTgiLCIxMTU5IiwiMTIxNyIsIjEyMTgiLCIxMjMyIiwiMTIzMyIsIjEyMzQiLCIxMjM1IiwiMTIzOCIsIjEyMzkiLCIxMjQwIiwiMTI0MSIsIjEyNDIiLCIxMjQzIiwiMTI0NCIsIjEyNDUiLCIxMjQ2IiwiMTI0NyIsIjEyNTAiLCIxMjUxIiwiMTI1MiIsIjEyNTMiLCIxMjU0IiwiMTI1NSIsIjEyNTYiLCIxMjU3IiwiMTI1OCIsIjEyNTkiLCIxMjYwIiwiMTI2MSIsIjEyNjIiLCIxMjYzIiwiMTI2NCIsIjEyNjUiLCIxMjY2IiwiMTI2NyIsIjEyNjgiLCIxMjY5IiwiMTI3MiIsIjEyNzMiLCIxMjgwIiwiMTQxNSIsIjE0MjUiLCIxNDI2IiwiMTQyNyIsIjE0MjgiLCIxNDI5IiwiMTQzMCIsIjE0MzEiLCIxNDMyIiwiMTQzMyIsIjE0MzQiLCIxNDM1IiwiMTQzNiIsIjE0MzciLCIxNDM4IiwiMTQzOSIsIjE0NDAiLCIxNDQxIiwiMTQ0MiIsIjE0NDMiLCIxNDQ0IiwiMTQ0NSIsIjE0NDYiLCIxNDQ3IiwiMTQ0OCIsIjE0NDkiLCIxNDUwIiwiMTQ1MSIsIjE0NTIiLCIxNDUzIiwiMTQ1NCIsIjE0NTUiLCIxNDU2IiwiMTQ1NyIsIjE0NTgiLCIxNDU5IiwiMTQ2MCIsIjE0NjEiLCIxNDYyIiwiMTQ2MyIsIjE0NjQiLCIxNDY1IiwiMTQ2NiIsIjE0NjciLCIxNDY4IiwiMTQ2OSIsIjE0NzEiLCIxNDczIiwiMTQ3NCIsIjE0NzYiLCIxNDc3IiwiMTQ3OSIsIjE1MzYiLCIxNTUyIiwiMTU1MyIsIjE1NTQiLCIxNTU1IiwiMTU1NiIsIjE1NTciLCIxNTU4IiwiMTU1OSIsIjE1NjAiLCIxNTYxIiwiMTU2MiIsIjE1NzAiLCIxNTcxIiwiMTU3MiIsIjE1NzMiLCIxNTc0IiwiMTU3NSIsIjE2MTkiLCIxNjIwIiwiMTYyMSIsIjE2MDgiLCIxNjEwIiwiMTYxMSIsIjE2MTIiLCIxNjEzIiwiMTYxNCIsIjE2MTUiLCIxNjE2IiwiMTYxNyIsIjE2MTgiLCIxNjIyIiwiMTYyMyIsIjE2MjQiLCIxNjI1IiwiMTYyNiIsIjE2MjciLCIxNjI4IiwiMTYyOSIsIjE2MzAiLCIxNjMxIiwiMTY0OCIsIjE2NTMiLCIxNjU0IiwiMTY1NSIsIjE2NTYiLCIxNzI4IiwiMTcyOSIsIjE3MzAiLCIxNzQ2IiwiMTc0NyIsIjE3NDkiLCIxNzUwIiwiMTc1MSIsIjE3NTIiLCIxNzUzIiwiMTc1NCIsIjE3NTUiLCIxNzU2IiwiMTc1OSIsIjE3NjAiLCIxNzYxIiwiMTc2MiIsIjE3NjMiLCIxNzY0IiwiMTc2NyIsIjE3NjgiLCIxNzcwIiwiMTc3MSIsIjE3NzIiLCIxNzczIiwiMTc5MiIsIjE4MDkiLCIxODQwIiwiMTg0MSIsIjE4NDIiLCIxODQzIiwiMTg0NCIsIjE4NDUiLCIxODQ2IiwiMTg0NyIsIjE4NDgiLCIxODQ5IiwiMTg1MCIsIjE4NTEiLCIxODUyIiwiMTg1MyIsIjE4NTQiLCIxODU1IiwiMTg1NiIsIjE4NTciLCIxODU4IiwiMTg1OSIsIjE4NjAiLCIxODYxIiwiMTg2MiIsIjE4NjMiLCIxODY0IiwiMTg2NSIsIjE4NjYiLCIyMDI3IiwiMjAyOCIsIjIwMjkiLCIyMDMwIiwiMjAzMSIsIjIwMzIiLCIyMDMzIiwiMjAzNCIsIjIwMzUiLCIyMDQ4IiwiMjA3MCIsIjIwNzEiLCIyMDcyIiwiMjA3MyIsIjIwNzUiLCIyMDc2IiwiMjA3NyIsIjIwNzgiLCIyMDc5IiwiMjA4MCIsIjIwODEiLCIyMDgyIiwiMjA4MyIsIjIwODUiLCIyMDg2IiwiMjA4NyIsIjIwODkiLCIyMDkwIiwiMjA5MSIsIjIwOTIiLCIyMDkzIiwiMjEzNyIsIjIxMzgiLCIyMTM5IiwiMjI3NiIsIjIyNzciLCIyMjc4IiwiMjI3OSIsIjIyODAiLCIyMjgxIiwiMjI4MiIsIjIyODMiLCIyMjg0IiwiMjI4NSIsIjIyODYiLCIyMjg3IiwiMjI4OCIsIjIyODkiLCIyMjkwIiwiMjI5MSIsIjIyOTIiLCIyMjkzIiwiMjI5NCIsIjIyOTUiLCIyMjk2IiwiMjI5NyIsIjIyOTgiLCIyMjk5IiwiMjMwMCIsIjIzMDEiLCIyMzAyIiwiMjMwMyIsIjIzMDQiLCIyMzQ0IiwiMjM2NCIsIjIzNDUiLCIyMzUyIiwiMjM1MyIsIjIzNTUiLCIyMzU2IiwiMjM4MSIsIjIzODUiLCIyMzg2IiwiMjM4NyIsIjIzODgiLCIyMzkyIiwiMjM5MyIsIjIzOTQiLCIyMzk1IiwiMjM5NiIsIjIzOTciLCIyMzk4IiwiMjM5OSIsIjI0OTIiLCIyNTAzIiwiMjQ5NCIsIjI1MTkiLCIyNTA3IiwiMjUwOCIsIjI1MDkiLCIyNTI0IiwiMjUyNSIsIjI1MjciLCIyNTYwIiwiMjYxMSIsIjI2MTQiLCIyNjIwIiwiMjYzNyIsIjI2NDkiLCIyNjUwIiwiMjY1MSIsIjI2NTQiLCIyNzQ4IiwiMjc2NSIsIjY4MTA5IiwiNjgxMTEiLCI2ODE1MiIsIjY4MTUzIiwiNjgxNTQiLCI2ODE1OSIsIjY4MzI1IiwiNjgzMjYiLCIyODE2IiwiMjg3NiIsIjI4ODciLCIyODc4IiwiMjkwMiIsIjI5MDMiLCIyODg4IiwiMjg5MSIsIjI4OTIiLCIyODkzIiwiMjkwOCIsIjI5MDkiLCIyOTYyIiwiMzAzMSIsIjI5NjQiLCIzMDE0IiwiMzAwNiIsIjMwMTUiLCIzMDE4IiwiMzAxOSIsIjMwMjAiLCIzMDIxIiwiMzA3MiIsIjMxNDIiLCIzMTU4IiwiMzE0NCIsIjMxNDkiLCIzMTU3IiwiMzI2MCIsIjMyNjMiLCIzMjg1IiwiMzI2NCIsIjMyNzAiLCIzMjY2IiwiMzI4NiIsIjMyNzEiLCIzMjcyIiwiMzI3NCIsIjMyNzUiLCIzMjc3IiwiMzMyOCIsIjMzOTgiLCIzMzkwIiwiMzQxNSIsIjMzOTkiLCIzNDAyIiwiMzQwMyIsIjM0MDQiLCIzNDA1IiwiMzUzMCIsIjM1NDUiLCIzNTM1IiwiMzU1MSIsIjM1NDYiLCIzNTQ4IiwiMzU0OSIsIjM1NTAiLCIzNTg0IiwiMzYzNSIsIjM2NDAiLCIzNjQxIiwiMzY0MiIsIjM2NTYiLCIzNjU3IiwiMzY1OCIsIjM2NTkiLCIzNzYzIiwiMzc2OCIsIjM3NjkiLCIzNzg0IiwiMzc4NSIsIjM3ODYiLCIzNzg3IiwiMzgwNCIsIjM4MDUiLCIzODQwIiwiMzg1MiIsIjM4NjQiLCIzODY1IiwiMzg5MyIsIjM4OTUiLCIzODk3IiwiMzkwNyIsIjM5MTciLCIzOTIyIiwiMzkyNyIsIjM5MzIiLCIzOTQ1IiwiMzk1MyIsIjM5NTQiLCIzOTU1IiwiMzk1NiIsIjM5NTciLCIzOTU4IiwiMzk1OSIsIjM5NjAiLCIzOTYxIiwiMzk2MiIsIjM5NjMiLCIzOTY0IiwiMzk2NSIsIjM5NjgiLCIzOTY5IiwiMzk3MCIsIjM5NzEiLCIzOTcyIiwiMzk3NCIsIjM5NzUiLCIzOTg3IiwiMzk5NyIsIjQwMDIiLCI0MDA3IiwiNDAxMiIsIjQwMjUiLCI0MDM4IiwiNDA5NiIsIjQxMzMiLCI0MTQyIiwiNDEzNCIsIjQxNTEiLCI0MTUzIiwiNDE1NCIsIjQyMzciLCI0MzQ4IiwiNjk3MDIiLCI2OTc1OSIsIjY5Nzg1IiwiNjk4MTgiLCI2OTc4NiIsIjY5Nzg3IiwiNjk3ODgiLCI2OTc5NyIsIjY5ODAzIiwiNjk4MTciLCI0MzUyIiwiNjk4ODgiLCI2OTg4OSIsIjY5ODkwIiwiNjk5MzQiLCI2OTkzNSIsIjY5OTM3IiwiNjk5MjciLCI2OTkzOCIsIjY5OTM5IiwiNjk5NDAiLCI3MDAwMyIsIjcwMDgwIiwiNDYwOCIsIjcwMTk3IiwiNzAxOTgiLCI3MDM3NyIsIjcwMzc4IiwiNDg2NCIsIjQ5NTciLCI0OTU4IiwiNDk1OSIsIjcwNDYwIiwiNzA0NzEiLCI3MDQ2MiIsIjcwNDg3IiwiNzA0NzUiLCI3MDQ3NiIsIjcwNDc3IiwiNzA1MDIiLCI3MDUwMyIsIjcwNTA0IiwiNzA1MDUiLCI3MDUwNiIsIjcwNTA3IiwiNzA1MDgiLCI3MDUxMiIsIjcwNTEzIiwiNzA1MTQiLCI3MDUxNSIsIjcwNTE2IiwiNTEyMCIsIjcwODQxIiwiNzA4MzIiLCI3MDg0MiIsIjcwODQ1IiwiNzA4NDMiLCI3MDg0NCIsIjcwODQ2IiwiNzA4NTAiLCI3MDg1MSIsIjUzNzYiLCI3MTA5NiIsIjcxMDg3IiwiNzEwOTciLCI3MTA5OCIsIjcxMDk5IiwiNzExMDMiLCI3MTEwNCIsIjU2MzIiLCI3MTIzMSIsIjcxMzUwIiwiNzEzNTEiLCI1ODg4IiwiNTkwOCIsIjU5NDAiLCI2MDk4IiwiNjEwOSIsIjYxNDQiLCI2MzEzIiwiNjQwMCIsIjY0NTciLCI2NDU4IiwiNjQ1OSIsIjY2NTYiLCI2Njc5IiwiNjY4MCIsIjY3NTIiLCI2NzczIiwiNjc3NCIsIjY3NzUiLCI2Nzc2IiwiNjc3NyIsIjY3NzgiLCI2Nzc5IiwiNjc4MCIsIjY3ODMiLCI2ODMyIiwiNjgzMyIsIjY4MzQiLCI2ODM1IiwiNjgzNiIsIjY4MzciLCI2ODM4IiwiNjgzOSIsIjY4NDAiLCI2ODQxIiwiNjg0MiIsIjY4NDMiLCI2ODQ0IiwiNjg0NSIsIjY5MTIiLCI2OTE3IiwiNjk2NSIsIjY5MTgiLCI2OTE5IiwiNjkyMCIsIjY5MjEiLCI2OTIyIiwiNjkyMyIsIjY5MjQiLCI2OTI1IiwiNjkyNiIsIjY5MjkiLCI2OTMwIiwiNjk2NCIsIjY5NzAiLCI2OTcxIiwiNjk3MiIsIjY5NzMiLCI2OTc0IiwiNjk3NSIsIjY5NzYiLCI2OTc3IiwiNjk3OCIsIjY5NzkiLCI2OTgwIiwiNzAxOSIsIjcwMjAiLCI3MDIxIiwiNzAyMiIsIjcwMjMiLCI3MDI0IiwiNzAyNSIsIjcwMjYiLCI3MDI3IiwiNzA4MiIsIjcwODMiLCI3MTQyIiwiNzE1NCIsIjcxNTUiLCI3MTY4IiwiNzIyMyIsIjczNzYiLCI3Mzc3IiwiNzM3OCIsIjczODAiLCI3MzgxIiwiNzM4MiIsIjczODMiLCI3Mzg0IiwiNzM4NSIsIjczODYiLCI3Mzg3IiwiNzM4OCIsIjczODkiLCI3MzkwIiwiNzM5MSIsIjczOTIiLCI3Mzk0IiwiNzM5NSIsIjczOTYiLCI3Mzk3IiwiNzM5OCIsIjczOTkiLCI3NDAwIiwiNzQwNSIsIjc0MTIiLCI3NDE2IiwiNzQxNyIsIjc0MjQiLCI3NDY4IiwiNzQ2OSIsIjc0NzAiLCI3NDcyIiwiNzQ3MyIsIjc0NzQiLCI3NDc1IiwiNzQ3NiIsIjc0NzciLCI3NDc4IiwiNzQ3OSIsIjc0ODAiLCI3NDgxIiwiNzQ4MiIsIjc0ODQiLCI3NDg1IiwiNzQ4NiIsIjc0ODciLCI3NDg4IiwiNzQ4OSIsIjc0OTAiLCI3NDkxIiwiNzQ5MiIsIjc0OTMiLCI3NDk0IiwiNzQ5NSIsIjc0OTYiLCI3NDk3IiwiNzQ5OCIsIjc0OTkiLCI3NTAwIiwiNzUwMSIsIjc1MDMiLCI3NTA0IiwiNzUwNSIsIjc1MDYiLCI3NTA3IiwiNzUwOCIsIjc1MDkiLCI3NTEwIiwiNzUxMSIsIjc1MTIiLCI3NTEzIiwiNzUxNCIsIjc1MTUiLCI3NTE2IiwiNzUxNyIsIjc1MTgiLCI3NTE5IiwiNzUyMCIsIjc1MjEiLCI3NTIyIiwiNzUyMyIsIjc1MjQiLCI3NTI1IiwiNzUyNiIsIjc1MjciLCI3NTI4IiwiNzUyOSIsIjc1MzAiLCI3NTQ0IiwiNzU3OSIsIjc1ODAiLCI3NTgxIiwiNzU4MiIsIjc1ODMiLCI3NTg0IiwiNzU4NSIsIjc1ODYiLCI3NTg3IiwiNzU4OCIsIjc1ODkiLCI3NTkwIiwiNzU5MSIsIjc1OTIiLCI3NTkzIiwiNzU5NCIsIjc1OTUiLCI3NTk2IiwiNzU5NyIsIjc1OTgiLCI3NTk5IiwiNzYwMCIsIjc2MDEiLCI3NjAyIiwiNzYwMyIsIjc2MDQiLCI3NjA1IiwiNzYwNiIsIjc2MDciLCI3NjA4IiwiNzYwOSIsIjc2MTAiLCI3NjExIiwiNzYxMiIsIjc2MTMiLCI3NjE0IiwiNzYxNSIsIjc2MTYiLCI3NjE3IiwiNzYxOCIsIjc2MTkiLCI3NjIwIiwiNzYyMSIsIjc2MjIiLCI3NjIzIiwiNzYyNCIsIjc2MjUiLCI3NjI2IiwiNzYyNyIsIjc2MjgiLCI3NjI5IiwiNzYzMCIsIjc2MzEiLCI3NjMyIiwiNzYzMyIsIjc2MzQiLCI3NjM1IiwiNzYzNiIsIjc2MzciLCI3NjM4IiwiNzYzOSIsIjc2NDAiLCI3NjQxIiwiNzY0MiIsIjc2NDMiLCI3NjQ0IiwiNzY0NSIsIjc2NDYiLCI3NjQ3IiwiNzY0OCIsIjc2NDkiLCI3NjUwIiwiNzY1MSIsIjc2NTIiLCI3NjUzIiwiNzY1NCIsIjc2NTUiLCI3NjU2IiwiNzY1NyIsIjc2NTgiLCI3NjU5IiwiNzY2MCIsIjc2NjEiLCI3NjYyIiwiNzY2MyIsIjc2NjQiLCI3NjY1IiwiNzY2NiIsIjc2NjciLCI3NjY4IiwiNzY2OSIsIjc2NzYiLCI3Njc3IiwiNzY3OCIsIjc2NzkiLCI3NjgwIiwiNzY4MSIsIjc2ODIiLCI3NjgzIiwiNzY4NCIsIjc2ODUiLCI3Njg2IiwiNzY4NyIsIjc2ODgiLCI3Njg5IiwiNzY5MCIsIjc2OTEiLCI3NjkyIiwiNzY5MyIsIjc2OTQiLCI3Njk1IiwiNzY5NiIsIjc2OTciLCI3Njk4IiwiNzY5OSIsIjc3MDAiLCI3NzAxIiwiNzcwMiIsIjc3MDMiLCI3NzA0IiwiNzcwNSIsIjc3MDYiLCI3NzA3IiwiNzcwOCIsIjc3MDkiLCI3NzEwIiwiNzcxMSIsIjc3MTIiLCI3NzEzIiwiNzcxNCIsIjc3MTUiLCI3NzE2IiwiNzcxNyIsIjc3MTgiLCI3NzE5IiwiNzcyMCIsIjc3MjEiLCI3NzIyIiwiNzcyMyIsIjc3MjQiLCI3NzI1IiwiNzcyNiIsIjc3MjciLCI3NzI4IiwiNzcyOSIsIjc3MzAiLCI3NzMxIiwiNzczMiIsIjc3MzMiLCI3NzM0IiwiNzczNSIsIjc3MzYiLCI3NzM3IiwiNzczOCIsIjc3MzkiLCI3NzQwIiwiNzc0MSIsIjc3NDIiLCI3NzQzIiwiNzc0NCIsIjc3NDUiLCI3NzQ2IiwiNzc0NyIsIjc3NDgiLCI3NzQ5IiwiNzc1MCIsIjc3NTEiLCI3NzUyIiwiNzc1MyIsIjc3NTQiLCI3NzU1IiwiNzc1NiIsIjc3NTciLCI3NzU4IiwiNzc1OSIsIjc3NjAiLCI3NzYxIiwiNzc2MiIsIjc3NjMiLCI3NzY0IiwiNzc2NSIsIjc3NjYiLCI3NzY3IiwiNzc2OCIsIjc3NjkiLCI3NzcwIiwiNzc3MSIsIjc3NzIiLCI3NzczIiwiNzc3NCIsIjc3NzUiLCI3Nzc2IiwiNzc3NyIsIjc3NzgiLCI3Nzc5IiwiNzc4MCIsIjc3ODEiLCI3NzgyIiwiNzc4MyIsIjc3ODQiLCI3Nzg1IiwiNzc4NiIsIjc3ODciLCI3Nzg4IiwiNzc4OSIsIjc3OTAiLCI3NzkxIiwiNzc5MiIsIjc3OTMiLCI3Nzk0IiwiNzc5NSIsIjc3OTYiLCI3Nzk3IiwiNzc5OCIsIjc3OTkiLCI3ODAwIiwiNzgwMSIsIjc4MDIiLCI3ODAzIiwiNzgwNCIsIjc4MDUiLCI3ODA2IiwiNzgwNyIsIjc4MDgiLCI3ODA5IiwiNzgxMCIsIjc4MTEiLCI3ODEyIiwiNzgxMyIsIjc4MTQiLCI3ODE1IiwiNzgxNiIsIjc4MTciLCI3ODE4IiwiNzgxOSIsIjc4MjAiLCI3ODIxIiwiNzgyMiIsIjc4MjMiLCI3ODI0IiwiNzgyNSIsIjc4MjYiLCI3ODI3IiwiNzgyOCIsIjc4MjkiLCI3ODMwIiwiNzgzMSIsIjc4MzIiLCI3ODMzIiwiNzgzNCIsIjc4MzUiLCI3ODQwIiwiNzg0MSIsIjc4NDIiLCI3ODQzIiwiNzg0NCIsIjc4NDUiLCI3ODQ2IiwiNzg0NyIsIjc4NDgiLCI3ODQ5IiwiNzg1MCIsIjc4NTEiLCI3ODUyIiwiNzg1MyIsIjc4NTQiLCI3ODU1IiwiNzg1NiIsIjc4NTciLCI3ODU4IiwiNzg1OSIsIjc4NjAiLCI3ODYxIiwiNzg2MiIsIjc4NjMiLCI3ODY0IiwiNzg2NSIsIjc4NjYiLCI3ODY3IiwiNzg2OCIsIjc4NjkiLCI3ODcwIiwiNzg3MSIsIjc4NzIiLCI3ODczIiwiNzg3NCIsIjc4NzUiLCI3ODc2IiwiNzg3NyIsIjc4NzgiLCI3ODc5IiwiNzg4MCIsIjc4ODEiLCI3ODgyIiwiNzg4MyIsIjc4ODQiLCI3ODg1IiwiNzg4NiIsIjc4ODciLCI3ODg4IiwiNzg4OSIsIjc4OTAiLCI3ODkxIiwiNzg5MiIsIjc4OTMiLCI3ODk0IiwiNzg5NSIsIjc4OTYiLCI3ODk3IiwiNzg5OCIsIjc4OTkiLCI3OTAwIiwiNzkwMSIsIjc5MDIiLCI3OTAzIiwiNzkwNCIsIjc5MDUiLCI3OTA2IiwiNzkwNyIsIjc5MDgiLCI3OTA5IiwiNzkxMCIsIjc5MTEiLCI3OTEyIiwiNzkxMyIsIjc5MTQiLCI3OTE1IiwiNzkxNiIsIjc5MTciLCI3OTE4IiwiNzkxOSIsIjc5MjAiLCI3OTIxIiwiNzkyMiIsIjc5MjMiLCI3OTI0IiwiNzkyNSIsIjc5MjYiLCI3OTI3IiwiNzkyOCIsIjc5MjkiLCI3OTM2IiwiNzkzNyIsIjc5MzgiLCI3OTM5IiwiNzk0MCIsIjc5NDEiLCI3OTQyIiwiNzk0MyIsIjc5NDQiLCI3OTQ1IiwiNzk0NiIsIjc5NDciLCI3OTQ4IiwiNzk0OSIsIjc5NTAiLCI3OTUxIiwiNzk1MiIsIjc5NTMiLCI3OTU0IiwiNzk1NSIsIjc5NTYiLCI3OTU3IiwiNzk2MCIsIjc5NjEiLCI3OTYyIiwiNzk2MyIsIjc5NjQiLCI3OTY1IiwiNzk2OCIsIjc5NjkiLCI3OTcwIiwiNzk3MSIsIjc5NzIiLCI3OTczIiwiNzk3NCIsIjc5NzUiLCI3OTc2IiwiNzk3NyIsIjc5NzgiLCI3OTc5IiwiNzk4MCIsIjc5ODEiLCI3OTgyIiwiNzk4MyIsIjc5ODQiLCI3OTg1IiwiNzk4NiIsIjc5ODciLCI3OTg4IiwiNzk4OSIsIjc5OTAiLCI3OTkxIiwiNzk5MiIsIjc5OTMiLCI3OTk0IiwiNzk5NSIsIjc5OTYiLCI3OTk3IiwiNzk5OCIsIjc5OTkiLCI4MDAwIiwiODAwMSIsIjgwMDIiLCI4MDAzIiwiODAwNCIsIjgwMDUiLCI4MDA4IiwiODAwOSIsIjgwMTAiLCI4MDExIiwiODAxMiIsIjgwMTMiLCI4MDE2IiwiODAxNyIsIjgwMTgiLCI4MDE5IiwiODAyMCIsIjgwMjEiLCI4MDIyIiwiODAyMyIsIjgwMjUiLCI4MDI3IiwiODAyOSIsIjgwMzEiLCI4MDMyIiwiODAzMyIsIjgwMzQiLCI4MDM1IiwiODAzNiIsIjgwMzciLCI4MDM4IiwiODAzOSIsIjgwNDAiLCI4MDQxIiwiODA0MiIsIjgwNDMiLCI4MDQ0IiwiODA0NSIsIjgwNDYiLCI4MDQ3IiwiODA0OCIsIjgwNDkiLCI4MDUwIiwiODA1MSIsIjgwNTIiLCI4MDUzIiwiODA1NCIsIjgwNTUiLCI4MDU2IiwiODA1NyIsIjgwNTgiLCI4MDU5IiwiODA2MCIsIjgwNjEiLCI4MDY0IiwiODA2NSIsIjgwNjYiLCI4MDY3IiwiODA2OCIsIjgwNjkiLCI4MDcwIiwiODA3MSIsIjgwNzIiLCI4MDczIiwiODA3NCIsIjgwNzUiLCI4MDc2IiwiODA3NyIsIjgwNzgiLCI4MDc5IiwiODA4MCIsIjgwODEiLCI4MDgyIiwiODA4MyIsIjgwODQiLCI4MDg1IiwiODA4NiIsIjgwODciLCI4MDg4IiwiODA4OSIsIjgwOTAiLCI4MDkxIiwiODA5MiIsIjgwOTMiLCI4MDk0IiwiODA5NSIsIjgwOTYiLCI4MDk3IiwiODA5OCIsIjgwOTkiLCI4MTAwIiwiODEwMSIsIjgxMDIiLCI4MTAzIiwiODEwNCIsIjgxMDUiLCI4MTA2IiwiODEwNyIsIjgxMDgiLCI4MTA5IiwiODExMCIsIjgxMTEiLCI4MTEyIiwiODExMyIsIjgxMTQiLCI4MTE1IiwiODExNiIsIjgxMTgiLCI4MTE5IiwiODEyMCIsIjgxMjEiLCI4MTIyIiwiODEyMyIsIjgxMjQiLCI4MTI1IiwiODEyNiIsIjgxMjciLCI4MTI4IiwiODEyOSIsIjgxMzAiLCI4MTMxIiwiODEzMiIsIjgxMzQiLCI4MTM1IiwiODEzNiIsIjgxMzciLCI4MTM4IiwiODEzOSIsIjgxNDAiLCI4MTQxIiwiODE0MiIsIjgxNDMiLCI4MTQ0IiwiODE0NSIsIjgxNDYiLCI4MTQ3IiwiODE1MCIsIjgxNTEiLCI4MTUyIiwiODE1MyIsIjgxNTQiLCI4MTU1IiwiODE1NyIsIjgxNTgiLCI4MTU5IiwiODE2MCIsIjgxNjEiLCI4MTYyIiwiODE2MyIsIjgxNjQiLCI4MTY1IiwiODE2NiIsIjgxNjciLCI4MTY4IiwiODE2OSIsIjgxNzAiLCI4MTcxIiwiODE3MiIsIjgxNzMiLCI4MTc0IiwiODE3NSIsIjgxNzgiLCI4MTc5IiwiODE4MCIsIjgxODIiLCI4MTgzIiwiODE4NCIsIjgxODUiLCI4MTg2IiwiODE4NyIsIjgxODgiLCI4MTg5IiwiODE5MCIsIjgxOTIiLCI4MTkzIiwiODE5NCIsIjgxOTUiLCI4MTk2IiwiODE5NyIsIjgxOTgiLCI4MTk5IiwiODIwMCIsIjgyMDEiLCI4MjAyIiwiODIwOSIsIjgyMTUiLCI4MjI4IiwiODIyOSIsIjgyMzAiLCI4MjM5IiwiODI0MyIsIjgyNDQiLCI4MjQ2IiwiODI0NyIsIjgyNTIiLCI4MjU0IiwiODI2MyIsIjgyNjQiLCI4MjY1IiwiODI3OSIsIjgyODciLCI4MzA0IiwiODMwNSIsIjgzMDgiLCI4MzA5IiwiODMxMCIsIjgzMTEiLCI4MzEyIiwiODMxMyIsIjgzMTQiLCI4MzE1IiwiODMxNiIsIjgzMTciLCI4MzE4IiwiODMxOSIsIjgzMjAiLCI4MzIxIiwiODMyMiIsIjgzMjMiLCI4MzI0IiwiODMyNSIsIjgzMjYiLCI4MzI3IiwiODMyOCIsIjgzMjkiLCI4MzMwIiwiODMzMSIsIjgzMzIiLCI4MzMzIiwiODMzNCIsIjgzMzYiLCI4MzM3IiwiODMzOCIsIjgzMzkiLCI4MzQwIiwiODM0MSIsIjgzNDIiLCI4MzQzIiwiODM0NCIsIjgzNDUiLCI4MzQ2IiwiODM0NyIsIjgzNDgiLCI4MzYwIiwiODQwMCIsIjg0MDEiLCI4NDAyIiwiODQwMyIsIjg0MDQiLCI4NDA1IiwiODQwNiIsIjg0MDciLCI4NDA4IiwiODQwOSIsIjg0MTAiLCI4NDExIiwiODQxMiIsIjg0MTciLCI4NDIxIiwiODQyMiIsIjg0MjMiLCI4NDI0IiwiODQyNSIsIjg0MjYiLCI4NDI3IiwiODQyOCIsIjg0MjkiLCI4NDMwIiwiODQzMSIsIjg0MzIiLCI4NDQ4IiwiODQ0OSIsIjg0NTAiLCI4NDUxIiwiODQ1MyIsIjg0NTQiLCI4NDU1IiwiODQ1NyIsIjg0NTgiLCI4NDU5IiwiODQ2MCIsIjg0NjEiLCI4NDYyIiwiODQ2MyIsIjg0NjQiLCI4NDY1IiwiODQ2NiIsIjg0NjciLCI4NDY5IiwiODQ3MCIsIjg0NzMiLCI4NDc0IiwiODQ3NSIsIjg0NzYiLCI4NDc3IiwiODQ4MCIsIjg0ODEiLCI4NDgyIiwiODQ4NCIsIjg0ODYiLCI4NDg4IiwiODQ5MCIsIjg0OTEiLCI4NDkyIiwiODQ5MyIsIjg0OTUiLCI4NDk2IiwiODQ5NyIsIjg0OTkiLCI4NTAwIiwiODUwMSIsIjg1MDIiLCI4NTAzIiwiODUwNCIsIjg1MDUiLCI4NTA3IiwiODUwOCIsIjg1MDkiLCI4NTEwIiwiODUxMSIsIjg1MTIiLCI4NTE3IiwiODUxOCIsIjg1MTkiLCI4NTIwIiwiODUyMSIsIjg1MjgiLCI4NTI5IiwiODUzMCIsIjg1MzEiLCI4NTMyIiwiODUzMyIsIjg1MzQiLCI4NTM1IiwiODUzNiIsIjg1MzciLCI4NTM4IiwiODUzOSIsIjg1NDAiLCI4NTQxIiwiODU0MiIsIjg1NDMiLCI4NTQ0IiwiODU0NSIsIjg1NDYiLCI4NTQ3IiwiODU0OCIsIjg1NDkiLCI4NTUwIiwiODU1MSIsIjg1NTIiLCI4NTUzIiwiODU1NCIsIjg1NTUiLCI4NTU2IiwiODU1NyIsIjg1NTgiLCI4NTU5IiwiODU2MCIsIjg1NjEiLCI4NTYyIiwiODU2MyIsIjg1NjQiLCI4NTY1IiwiODU2NiIsIjg1NjciLCI4NTY4IiwiODU2OSIsIjg1NzAiLCI4NTcxIiwiODU3MiIsIjg1NzMiLCI4NTc0IiwiODU3NSIsIjg1ODUiLCI4NTkyIiwiODU5NCIsIjg1OTYiLCI4NjAyIiwiODYwMyIsIjg2MjIiLCI4NjUzIiwiODY1NCIsIjg2NTUiLCI4NjU2IiwiODY1OCIsIjg2NjAiLCI4NzA0IiwiODcwNyIsIjg3MDgiLCI4NzEyIiwiODcxMyIsIjg3MTUiLCI4NzE2IiwiODczOSIsIjg3NDAiLCI4NzQxIiwiODc0MiIsIjg3NDgiLCI4NzQ5IiwiODc1MSIsIjg3NTIiLCI4NzY0IiwiODc2OSIsIjg3NzEiLCI4NzcyIiwiODc3MyIsIjg3NzUiLCI4Nzc2IiwiODc3NyIsIjg3ODEiLCI4ODAwIiwiODgwMSIsIjg4MDIiLCI4ODA0IiwiODgwNSIsIjg4MTMiLCI4ODE0IiwiODgxNSIsIjg4MTYiLCI4ODE3IiwiODgxOCIsIjg4MTkiLCI4ODIwIiwiODgyMSIsIjg4MjIiLCI4ODIzIiwiODgyNCIsIjg4MjUiLCI4ODI2IiwiODgyNyIsIjg4MjgiLCI4ODI5IiwiODgzMiIsIjg4MzMiLCI4ODM0IiwiODgzNSIsIjg4MzYiLCI4ODM3IiwiODgzOCIsIjg4MzkiLCI4ODQwIiwiODg0MSIsIjg4NDkiLCI4ODUwIiwiODg2NiIsIjg4NzIiLCI4ODczIiwiODg3NSIsIjg4NzYiLCI4ODc3IiwiODg3OCIsIjg4NzkiLCI4ODgyIiwiODg4MyIsIjg4ODQiLCI4ODg1IiwiODkyOCIsIjg5MjkiLCI4OTMwIiwiODkzMSIsIjg5MzgiLCI4OTM5IiwiODk0MCIsIjg5NDEiLCI4OTYwIiwiOTAwMSIsIjkwMDIiLCI5MjE2IiwiOTMxMiIsIjkzMTMiLCI5MzE0IiwiOTMxNSIsIjkzMTYiLCI5MzE3IiwiOTMxOCIsIjkzMTkiLCI5MzIwIiwiOTMyMSIsIjkzMjIiLCI5MzIzIiwiOTMyNCIsIjkzMjUiLCI5MzI2IiwiOTMyNyIsIjkzMjgiLCI5MzI5IiwiOTMzMCIsIjkzMzEiLCI5MzMyIiwiOTMzMyIsIjkzMzQiLCI5MzM1IiwiOTMzNiIsIjkzMzciLCI5MzM4IiwiOTMzOSIsIjkzNDAiLCI5MzQxIiwiOTM0MiIsIjkzNDMiLCI5MzQ0IiwiOTM0NSIsIjkzNDYiLCI5MzQ3IiwiOTM0OCIsIjkzNDkiLCI5MzUwIiwiOTM1MSIsIjkzNTIiLCI5MzUzIiwiOTM1NCIsIjkzNTUiLCI5MzU2IiwiOTM1NyIsIjkzNTgiLCI5MzU5IiwiOTM2MCIsIjkzNjEiLCI5MzYyIiwiOTM2MyIsIjkzNjQiLCI5MzY1IiwiOTM2NiIsIjkzNjciLCI5MzY4IiwiOTM2OSIsIjkzNzAiLCI5MzcxIiwiOTM3MiIsIjkzNzMiLCI5Mzc0IiwiOTM3NSIsIjkzNzYiLCI5Mzc3IiwiOTM3OCIsIjkzNzkiLCI5MzgwIiwiOTM4MSIsIjkzODIiLCI5MzgzIiwiOTM4NCIsIjkzODUiLCI5Mzg2IiwiOTM4NyIsIjkzODgiLCI5Mzg5IiwiOTM5MCIsIjkzOTEiLCI5MzkyIiwiOTM5MyIsIjkzOTQiLCI5Mzk1IiwiOTM5NiIsIjkzOTciLCI5Mzk4IiwiOTM5OSIsIjk0MDAiLCI5NDAxIiwiOTQwMiIsIjk0MDMiLCI5NDA0IiwiOTQwNSIsIjk0MDYiLCI5NDA3IiwiOTQwOCIsIjk0MDkiLCI5NDEwIiwiOTQxMSIsIjk0MTIiLCI5NDEzIiwiOTQxNCIsIjk0MTUiLCI5NDE2IiwiOTQxNyIsIjk0MTgiLCI5NDE5IiwiOTQyMCIsIjk0MjEiLCI5NDIyIiwiOTQyMyIsIjk0MjQiLCI5NDI1IiwiOTQyNiIsIjk0MjciLCI5NDI4IiwiOTQyOSIsIjk0MzAiLCI5NDMxIiwiOTQzMiIsIjk0MzMiLCI5NDM0IiwiOTQzNSIsIjk0MzYiLCI5NDM3IiwiOTQzOCIsIjk0MzkiLCI5NDQwIiwiOTQ0MSIsIjk0NDIiLCI5NDQzIiwiOTQ0NCIsIjk0NDUiLCI5NDQ2IiwiOTQ0NyIsIjk0NDgiLCI5NDQ5IiwiOTQ1MCIsIjEwNzUyIiwiMTA3NjQiLCIxMDg2OCIsIjEwODY5IiwiMTA4NzAiLCIxMDk3MiIsIjExMjY0IiwiMTEzODgiLCIxMTM4OSIsIjExNTAzIiwiMTE1MDQiLCIxMTUwNSIsIjExNTIwIiwiMTE2MzEiLCIxMTY0NyIsIjExNzQ0IiwiMTE3NDUiLCIxMTc0NiIsIjExNzQ3IiwiMTE3NDgiLCIxMTc0OSIsIjExNzUwIiwiMTE3NTEiLCIxMTc1MiIsIjExNzUzIiwiMTE3NTQiLCIxMTc1NSIsIjExNzU2IiwiMTE3NTciLCIxMTc1OCIsIjExNzU5IiwiMTE3NjAiLCIxMTc2MSIsIjExNzYyIiwiMTE3NjMiLCIxMTc2NCIsIjExNzY1IiwiMTE3NjYiLCIxMTc2NyIsIjExNzY4IiwiMTE3NjkiLCIxMTc3MCIsIjExNzcxIiwiMTE3NzIiLCIxMTc3MyIsIjExNzc0IiwiMTE3NzUiLCIxMTc3NiIsIjExOTM1IiwiMTIwMTkiLCIxMjAzMiIsIjEyMDMzIiwiMTIwMzQiLCIxMjAzNSIsIjEyMDM2IiwiMTIwMzciLCIxMjAzOCIsIjEyMDM5IiwiMTIwNDAiLCIxMjA0MSIsIjEyMDQyIiwiMTIwNDMiLCIxMjA0NCIsIjEyMDQ1IiwiMTIwNDYiLCIxMjA0NyIsIjEyMDQ4IiwiMTIwNDkiLCIxMjA1MCIsIjEyMDUxIiwiMTIwNTIiLCIxMjA1MyIsIjEyMDU0IiwiMTIwNTUiLCIxMjA1NiIsIjEyMDU3IiwiMTIwNTgiLCIxMjA1OSIsIjEyMDYwIiwiMTIwNjEiLCIxMjA2MiIsIjEyMDYzIiwiMTIwNjQiLCIxMjA2NSIsIjEyMDY2IiwiMTIwNjciLCIxMjA2OCIsIjEyMDY5IiwiMTIwNzAiLCIxMjA3MSIsIjEyMDcyIiwiMTIwNzMiLCIxMjA3NCIsIjEyMDc1IiwiMTIwNzYiLCIxMjA3NyIsIjEyMDc4IiwiMTIwNzkiLCIxMjA4MCIsIjEyMDgxIiwiMTIwODIiLCIxMjA4MyIsIjEyMDg0IiwiMTIwODUiLCIxMjA4NiIsIjEyMDg3IiwiMTIwODgiLCIxMjA4OSIsIjEyMDkwIiwiMTIwOTEiLCIxMjA5MiIsIjEyMDkzIiwiMTIwOTQiLCIxMjA5NSIsIjEyMDk2IiwiMTIwOTciLCIxMjA5OCIsIjEyMDk5IiwiMTIxMDAiLCIxMjEwMSIsIjEyMTAyIiwiMTIxMDMiLCIxMjEwNCIsIjEyMTA1IiwiMTIxMDYiLCIxMjEwNyIsIjEyMTA4IiwiMTIxMDkiLCIxMjExMCIsIjEyMTExIiwiMTIxMTIiLCIxMjExMyIsIjEyMTE0IiwiMTIxMTUiLCIxMjExNiIsIjEyMTE3IiwiMTIxMTgiLCIxMjExOSIsIjEyMTIwIiwiMTIxMjEiLCIxMjEyMiIsIjEyMTIzIiwiMTIxMjQiLCIxMjEyNSIsIjEyMTI2IiwiMTIxMjciLCIxMjEyOCIsIjEyMTI5IiwiMTIxMzAiLCIxMjEzMSIsIjEyMTMyIiwiMTIxMzMiLCIxMjEzNCIsIjEyMTM1IiwiMTIxMzYiLCIxMjEzNyIsIjEyMTM4IiwiMTIxMzkiLCIxMjE0MCIsIjEyMTQxIiwiMTIxNDIiLCIxMjE0MyIsIjEyMTQ0IiwiMTIxNDUiLCIxMjE0NiIsIjEyMTQ3IiwiMTIxNDgiLCIxMjE0OSIsIjEyMTUwIiwiMTIxNTEiLCIxMjE1MiIsIjEyMTUzIiwiMTIxNTQiLCIxMjE1NSIsIjEyMTU2IiwiMTIxNTciLCIxMjE1OCIsIjEyMTU5IiwiMTIxNjAiLCIxMjE2MSIsIjEyMTYyIiwiMTIxNjMiLCIxMjE2NCIsIjEyMTY1IiwiMTIxNjYiLCIxMjE2NyIsIjEyMTY4IiwiMTIxNjkiLCIxMjE3MCIsIjEyMTcxIiwiMTIxNzIiLCIxMjE3MyIsIjEyMTc0IiwiMTIxNzUiLCIxMjE3NiIsIjEyMTc3IiwiMTIxNzgiLCIxMjE3OSIsIjEyMTgwIiwiMTIxODEiLCIxMjE4MiIsIjEyMTgzIiwiMTIxODQiLCIxMjE4NSIsIjEyMTg2IiwiMTIxODciLCIxMjE4OCIsIjEyMTg5IiwiMTIxOTAiLCIxMjE5MSIsIjEyMTkyIiwiMTIxOTMiLCIxMjE5NCIsIjEyMTk1IiwiMTIxOTYiLCIxMjE5NyIsIjEyMTk4IiwiMTIxOTkiLCIxMjIwMCIsIjEyMjAxIiwiMTIyMDIiLCIxMjIwMyIsIjEyMjA0IiwiMTIyMDUiLCIxMjIwNiIsIjEyMjA3IiwiMTIyMDgiLCIxMjIwOSIsIjEyMjEwIiwiMTIyMTEiLCIxMjIxMiIsIjEyMjEzIiwiMTIyMTQiLCIxMjIxNSIsIjEyMjE2IiwiMTIyMTciLCIxMjIxOCIsIjEyMjE5IiwiMTIyMjAiLCIxMjIyMSIsIjEyMjIyIiwiMTIyMjMiLCIxMjIyNCIsIjEyMjI1IiwiMTIyMjYiLCIxMjIyNyIsIjEyMjI4IiwiMTIyMjkiLCIxMjIzMCIsIjEyMjMxIiwiMTIyMzIiLCIxMjIzMyIsIjEyMjM0IiwiMTIyMzUiLCIxMjIzNiIsIjEyMjM3IiwiMTIyMzgiLCIxMjIzOSIsIjEyMjQwIiwiMTIyNDEiLCIxMjI0MiIsIjEyMjQzIiwiMTIyNDQiLCIxMjI0NSIsIjEyMjg4IiwiMTIzMzAiLCIxMjMzMSIsIjEyMzMyIiwiMTIzMzMiLCIxMjMzNCIsIjEyMzM1IiwiMTIzNDIiLCIxMjM0NCIsIjEyMzQ1IiwiMTIzNDYiLCIxMjM1OCIsIjEyNDQxIiwiMTIzNjMiLCIxMjM2NCIsIjEyMzY1IiwiMTIzNjYiLCIxMjM2NyIsIjEyMzY4IiwiMTIzNjkiLCIxMjM3MCIsIjEyMzcxIiwiMTIzNzIiLCIxMjM3MyIsIjEyMzc0IiwiMTIzNzUiLCIxMjM3NiIsIjEyMzc3IiwiMTIzNzgiLCIxMjM3OSIsIjEyMzgwIiwiMTIzODEiLCIxMjM4MiIsIjEyMzgzIiwiMTIzODQiLCIxMjM4NSIsIjEyMzg2IiwiMTIzODgiLCIxMjM4OSIsIjEyMzkwIiwiMTIzOTEiLCIxMjM5MiIsIjEyMzkzIiwiMTIzOTkiLCIxMjQ0MiIsIjEyNDAwIiwiMTI0MDEiLCIxMjQwMiIsIjEyNDAzIiwiMTI0MDQiLCIxMjQwNSIsIjEyNDA2IiwiMTI0MDciLCIxMjQwOCIsIjEyNDA5IiwiMTI0MTAiLCIxMjQxMSIsIjEyNDEyIiwiMTI0MTMiLCIxMjQzNiIsIjEyNDQzIiwiMTI0NDQiLCIxMjQ0NSIsIjEyNDQ2IiwiMTI0NDciLCIxMjQ1NCIsIjEyNDU5IiwiMTI0NjAiLCIxMjQ2MSIsIjEyNDYyIiwiMTI0NjMiLCIxMjQ2NCIsIjEyNDY1IiwiMTI0NjYiLCIxMjQ2NyIsIjEyNDY4IiwiMTI0NjkiLCIxMjQ3MCIsIjEyNDcxIiwiMTI0NzIiLCIxMjQ3MyIsIjEyNDc0IiwiMTI0NzUiLCIxMjQ3NiIsIjEyNDc3IiwiMTI0NzgiLCIxMjQ3OSIsIjEyNDgwIiwiMTI0ODEiLCIxMjQ4MiIsIjEyNDg0IiwiMTI0ODUiLCIxMjQ4NiIsIjEyNDg3IiwiMTI0ODgiLCIxMjQ4OSIsIjEyNDk1IiwiMTI0OTYiLCIxMjQ5NyIsIjEyNDk4IiwiMTI0OTkiLCIxMjUwMCIsIjEyNTAxIiwiMTI1MDIiLCIxMjUwMyIsIjEyNTA0IiwiMTI1MDUiLCIxMjUwNiIsIjEyNTA3IiwiMTI1MDgiLCIxMjUwOSIsIjEyNTI3IiwiMTI1MjgiLCIxMjUyOSIsIjEyNTMwIiwiMTI1MzIiLCIxMjUzNSIsIjEyNTM2IiwiMTI1MzciLCIxMjUzOCIsIjEyNTQxIiwiMTI1NDIiLCIxMjU0MyIsIjEyNTQ0IiwiMTI1OTMiLCIxMjU5NCIsIjEyNTk1IiwiMTI1OTYiLCIxMjU5NyIsIjEyNTk4IiwiMTI1OTkiLCIxMjYwMCIsIjEyNjAxIiwiMTI2MDIiLCIxMjYwMyIsIjEyNjA0IiwiMTI2MDUiLCIxMjYwNiIsIjEyNjA3IiwiMTI2MDgiLCIxMjYwOSIsIjEyNjEwIiwiMTI2MTEiLCIxMjYxMiIsIjEyNjEzIiwiMTI2MTQiLCIxMjYxNSIsIjEyNjE2IiwiMTI2MTciLCIxMjYxOCIsIjEyNjE5IiwiMTI2MjAiLCIxMjYyMSIsIjEyNjIyIiwiMTI2MjMiLCIxMjYyNCIsIjEyNjI1IiwiMTI2MjYiLCIxMjYyNyIsIjEyNjI4IiwiMTI2MjkiLCIxMjYzMCIsIjEyNjMxIiwiMTI2MzIiLCIxMjYzMyIsIjEyNjM0IiwiMTI2MzUiLCIxMjYzNiIsIjEyNjM3IiwiMTI2MzgiLCIxMjYzOSIsIjEyNjQwIiwiMTI2NDEiLCIxMjY0MiIsIjEyNjQzIiwiMTI2NDQiLCIxMjY0NSIsIjEyNjQ2IiwiMTI2NDciLCIxMjY0OCIsIjEyNjQ5IiwiMTI2NTAiLCIxMjY1MSIsIjEyNjUyIiwiMTI2NTMiLCIxMjY1NCIsIjEyNjU1IiwiMTI2NTYiLCIxMjY1NyIsIjEyNjU4IiwiMTI2NTkiLCIxMjY2MCIsIjEyNjYxIiwiMTI2NjIiLCIxMjY2MyIsIjEyNjY0IiwiMTI2NjUiLCIxMjY2NiIsIjEyNjY3IiwiMTI2NjgiLCIxMjY2OSIsIjEyNjcwIiwiMTI2NzEiLCIxMjY3MiIsIjEyNjczIiwiMTI2NzQiLCIxMjY3NSIsIjEyNjc2IiwiMTI2NzciLCIxMjY3OCIsIjEyNjc5IiwiMTI2ODAiLCIxMjY4MSIsIjEyNjgyIiwiMTI2ODMiLCIxMjY4NCIsIjEyNjg1IiwiMTI2ODYiLCIxMjY5MCIsIjEyNjkxIiwiMTI2OTIiLCIxMjY5MyIsIjEyNjk0IiwiMTI2OTUiLCIxMjY5NiIsIjEyNjk3IiwiMTI2OTgiLCIxMjY5OSIsIjEyNzAwIiwiMTI3MDEiLCIxMjcwMiIsIjEyNzAzIiwiMTI4MDAiLCIxMjgwMSIsIjEyODAyIiwiMTI4MDMiLCIxMjgwNCIsIjEyODA1IiwiMTI4MDYiLCIxMjgwNyIsIjEyODA4IiwiMTI4MDkiLCIxMjgxMCIsIjEyODExIiwiMTI4MTIiLCIxMjgxMyIsIjEyODE0IiwiMTI4MTUiLCIxMjgxNiIsIjEyODE3IiwiMTI4MTgiLCIxMjgxOSIsIjEyODIwIiwiMTI4MjEiLCIxMjgyMiIsIjEyODIzIiwiMTI4MjQiLCIxMjgyNSIsIjEyODI2IiwiMTI4MjciLCIxMjgyOCIsIjEyODI5IiwiMTI4MzAiLCIxMjgzMiIsIjEyODMzIiwiMTI4MzQiLCIxMjgzNSIsIjEyODM2IiwiMTI4MzciLCIxMjgzOCIsIjEyODM5IiwiMTI4NDAiLCIxMjg0MSIsIjEyODQyIiwiMTI4NDMiLCIxMjg0NCIsIjEyODQ1IiwiMTI4NDYiLCIxMjg0NyIsIjEyODQ4IiwiMTI4NDkiLCIxMjg1MCIsIjEyODUxIiwiMTI4NTIiLCIxMjg1MyIsIjEyODU0IiwiMTI4NTUiLCIxMjg1NiIsIjEyODU3IiwiMTI4NTgiLCIxMjg1OSIsIjEyODYwIiwiMTI4NjEiLCIxMjg2MiIsIjEyODYzIiwiMTI4NjQiLCIxMjg2NSIsIjEyODY2IiwiMTI4NjciLCIxMjg2OCIsIjEyODY5IiwiMTI4NzAiLCIxMjg3MSIsIjEyODgwIiwiMTI4ODEiLCIxMjg4MiIsIjEyODgzIiwiMTI4ODQiLCIxMjg4NSIsIjEyODg2IiwiMTI4ODciLCIxMjg4OCIsIjEyODg5IiwiMTI4OTAiLCIxMjg5MSIsIjEyODkyIiwiMTI4OTMiLCIxMjg5NCIsIjEyODk1IiwiMTI4OTYiLCIxMjg5NyIsIjEyODk4IiwiMTI4OTkiLCIxMjkwMCIsIjEyOTAxIiwiMTI5MDIiLCIxMjkwMyIsIjEyOTA0IiwiMTI5MDUiLCIxMjkwNiIsIjEyOTA3IiwiMTI5MDgiLCIxMjkwOSIsIjEyOTEwIiwiMTI5MTEiLCIxMjkxMiIsIjEyOTEzIiwiMTI5MTQiLCIxMjkxNSIsIjEyOTE2IiwiMTI5MTciLCIxMjkxOCIsIjEyOTE5IiwiMTI5MjAiLCIxMjkyMSIsIjEyOTIyIiwiMTI5MjMiLCIxMjkyNCIsIjEyOTI1IiwiMTI5MjYiLCIxMjkyOCIsIjEyOTI5IiwiMTI5MzAiLCIxMjkzMSIsIjEyOTMyIiwiMTI5MzMiLCIxMjkzNCIsIjEyOTM1IiwiMTI5MzYiLCIxMjkzNyIsIjEyOTM4IiwiMTI5MzkiLCIxMjk0MCIsIjEyOTQxIiwiMTI5NDIiLCIxMjk0MyIsIjEyOTQ0IiwiMTI5NDUiLCIxMjk0NiIsIjEyOTQ3IiwiMTI5NDgiLCIxMjk0OSIsIjEyOTUwIiwiMTI5NTEiLCIxMjk1MiIsIjEyOTUzIiwiMTI5NTQiLCIxMjk1NSIsIjEyOTU2IiwiMTI5NTciLCIxMjk1OCIsIjEyOTU5IiwiMTI5NjAiLCIxMjk2MSIsIjEyOTYyIiwiMTI5NjMiLCIxMjk2NCIsIjEyOTY1IiwiMTI5NjYiLCIxMjk2NyIsIjEyOTY4IiwiMTI5NjkiLCIxMjk3MCIsIjEyOTcxIiwiMTI5NzIiLCIxMjk3MyIsIjEyOTc0IiwiMTI5NzUiLCIxMjk3NiIsIjEyOTc3IiwiMTI5NzgiLCIxMjk3OSIsIjEyOTgwIiwiMTI5ODEiLCIxMjk4MiIsIjEyOTgzIiwiMTI5ODQiLCIxMjk4NSIsIjEyOTg2IiwiMTI5ODciLCIxMjk4OCIsIjEyOTg5IiwiMTI5OTAiLCIxMjk5MSIsIjEyOTkyIiwiMTI5OTMiLCIxMjk5NCIsIjEyOTk1IiwiMTI5OTYiLCIxMjk5NyIsIjEyOTk4IiwiMTI5OTkiLCIxMzAwMCIsIjEzMDAxIiwiMTMwMDIiLCIxMzAwMyIsIjEzMDA0IiwiMTMwMDUiLCIxMzAwNiIsIjEzMDA3IiwiMTMwMDgiLCIxMzAwOSIsIjEzMDEwIiwiMTMwMTEiLCIxMzAxMiIsIjEzMDEzIiwiMTMwMTQiLCIxMzAxNSIsIjEzMDE2IiwiMTMwMTciLCIxMzAxOCIsIjEzMDE5IiwiMTMwMjAiLCIxMzAyMSIsIjEzMDIyIiwiMTMwMjMiLCIxMzAyNCIsIjEzMDI1IiwiMTMwMjYiLCIxMzAyNyIsIjEzMDI4IiwiMTMwMjkiLCIxMzAzMCIsIjEzMDMxIiwiMTMwMzIiLCIxMzAzMyIsIjEzMDM0IiwiMTMwMzUiLCIxMzAzNiIsIjEzMDM3IiwiMTMwMzgiLCIxMzAzOSIsIjEzMDQwIiwiMTMwNDEiLCIxMzA0MiIsIjEzMDQzIiwiMTMwNDQiLCIxMzA0NSIsIjEzMDQ2IiwiMTMwNDciLCIxMzA0OCIsIjEzMDQ5IiwiMTMwNTAiLCIxMzA1MSIsIjEzMDUyIiwiMTMwNTMiLCIxMzA1NCIsIjEzMDU2IiwiMTMwNTciLCIxMzA1OCIsIjEzMDU5IiwiMTMwNjAiLCIxMzA2MSIsIjEzMDYyIiwiMTMwNjMiLCIxMzA2NCIsIjEzMDY1IiwiMTMwNjYiLCIxMzA2NyIsIjEzMDY4IiwiMTMwNjkiLCIxMzA3MCIsIjEzMDcxIiwiMTMwNzIiLCIxMzA3MyIsIjEzMDc0IiwiMTMwNzUiLCIxMzA3NiIsIjEzMDc3IiwiMTMwNzgiLCIxMzA3OSIsIjEzMDgwIiwiMTMwODEiLCIxMzA4MiIsIjEzMDgzIiwiMTMwODQiLCIxMzA4NSIsIjEzMDg2IiwiMTMwODciLCIxMzA4OCIsIjEzMDg5IiwiMTMwOTAiLCIxMzA5MSIsIjEzMDkyIiwiMTMwOTMiLCIxMzA5NCIsIjEzMDk1IiwiMTMwOTYiLCIxMzA5NyIsIjEzMDk4IiwiMTMwOTkiLCIxMzEwMCIsIjEzMTAxIiwiMTMxMDIiLCIxMzEwMyIsIjEzMTA0IiwiMTMxMDUiLCIxMzEwNiIsIjEzMTA3IiwiMTMxMDgiLCIxMzEwOSIsIjEzMTEwIiwiMTMxMTEiLCIxMzExMiIsIjEzMTEzIiwiMTMxMTQiLCIxMzExNSIsIjEzMTE2IiwiMTMxMTciLCIxMzExOCIsIjEzMTE5IiwiMTMxMjAiLCIxMzEyMSIsIjEzMTIyIiwiMTMxMjMiLCIxMzEyNCIsIjEzMTI1IiwiMTMxMjYiLCIxMzEyNyIsIjEzMTI4IiwiMTMxMjkiLCIxMzEzMCIsIjEzMTMxIiwiMTMxMzIiLCIxMzEzMyIsIjEzMTM0IiwiMTMxMzUiLCIxMzEzNiIsIjEzMTM3IiwiMTMxMzgiLCIxMzEzOSIsIjEzMTQwIiwiMTMxNDEiLCIxMzE0MiIsIjEzMTQzIiwiMTMxNDQiLCIxMzE0NSIsIjEzMTQ2IiwiMTMxNDciLCIxMzE0OCIsIjEzMTQ5IiwiMTMxNTAiLCIxMzE1MSIsIjEzMTUyIiwiMTMxNTMiLCIxMzE1NCIsIjEzMTU1IiwiMTMxNTYiLCIxMzE1NyIsIjEzMTU4IiwiMTMxNTkiLCIxMzE2MCIsIjEzMTYxIiwiMTMxNjIiLCIxMzE2MyIsIjEzMTY0IiwiMTMxNjUiLCIxMzE2NiIsIjEzMTY3IiwiMTMxNjgiLCIxMzE2OSIsIjEzMTcwIiwiMTMxNzEiLCIxMzE3MiIsIjEzMTczIiwiMTMxNzQiLCIxMzE3NSIsIjEzMTc2IiwiMTMxNzciLCIxMzE3OCIsIjEzMTc5IiwiMTMxODAiLCIxMzE4MSIsIjEzMTgyIiwiMTMxODMiLCIxMzE4NCIsIjEzMTg1IiwiMTMxODYiLCIxMzE4NyIsIjEzMTg4IiwiMTMxODkiLCIxMzE5MCIsIjEzMTkxIiwiMTMxOTIiLCIxMzE5MyIsIjEzMTk0IiwiMTMxOTUiLCIxMzE5NiIsIjEzMTk3IiwiMTMxOTgiLCIxMzE5OSIsIjEzMjAwIiwiMTMyMDEiLCIxMzIwMiIsIjEzMjAzIiwiMTMyMDQiLCIxMzIwNSIsIjEzMjA2IiwiMTMyMDciLCIxMzIwOCIsIjEzMjA5IiwiMTMyMTAiLCIxMzIxMSIsIjEzMjEyIiwiMTMyMTMiLCIxMzIxNCIsIjEzMjE1IiwiMTMyMTYiLCIxMzIxNyIsIjEzMjE4IiwiMTMyMTkiLCIxMzIyMCIsIjEzMjIxIiwiMTMyMjIiLCIxMzIyMyIsIjEzMjI0IiwiMTMyMjUiLCIxMzIyNiIsIjEzMjI3IiwiMTMyMjgiLCIxMzIyOSIsIjEzMjMwIiwiMTMyMzEiLCIxMzIzMiIsIjEzMjMzIiwiMTMyMzQiLCIxMzIzNSIsIjEzMjM2IiwiMTMyMzciLCIxMzIzOCIsIjEzMjM5IiwiMTMyNDAiLCIxMzI0MSIsIjEzMjQyIiwiMTMyNDMiLCIxMzI0NCIsIjEzMjQ1IiwiMTMyNDYiLCIxMzI0NyIsIjEzMjQ4IiwiMTMyNDkiLCIxMzI1MCIsIjEzMjUxIiwiMTMyNTIiLCIxMzI1MyIsIjEzMjU0IiwiMTMyNTUiLCIxMzI1NiIsIjEzMjU3IiwiMTMyNTgiLCIxMzI1OSIsIjEzMjYwIiwiMTMyNjEiLCIxMzI2MiIsIjEzMjYzIiwiMTMyNjQiLCIxMzI2NSIsIjEzMjY2IiwiMTMyNjciLCIxMzI2OCIsIjEzMjY5IiwiMTMyNzAiLCIxMzI3MSIsIjEzMjcyIiwiMTMyNzMiLCIxMzI3NCIsIjEzMjc1IiwiMTMyNzYiLCIxMzI3NyIsIjEzMjc4IiwiMTMyNzkiLCIxMzI4MCIsIjEzMjgxIiwiMTMyODIiLCIxMzI4MyIsIjEzMjg0IiwiMTMyODUiLCIxMzI4NiIsIjEzMjg3IiwiMTMyODgiLCIxMzI4OSIsIjEzMjkwIiwiMTMyOTEiLCIxMzI5MiIsIjEzMjkzIiwiMTMyOTQiLCIxMzI5NSIsIjEzMjk2IiwiMTMyOTciLCIxMzI5OCIsIjEzMjk5IiwiMTMzMDAiLCIxMzMwMSIsIjEzMzAyIiwiMTMzMDMiLCIxMzMwNCIsIjEzMzA1IiwiMTMzMDYiLCIxMzMwNyIsIjEzMzA4IiwiMTMzMDkiLCIxMzMxMCIsIjEzMzExIiwiMjcxMzYiLCI5MjkxMiIsIjkyOTEzIiwiOTI5MTQiLCI5MjkxNSIsIjkyOTE2IiwiMjczOTIiLCI5Mjk3NiIsIjkyOTc3IiwiOTI5NzgiLCI5Mjk3OSIsIjkyOTgwIiwiOTI5ODEiLCI5Mjk4MiIsIjQyNDk2IiwiNDI2MDciLCI0MjYxMiIsIjQyNjEzIiwiNDI2MTQiLCI0MjYxNSIsIjQyNjE2IiwiNDI2MTciLCI0MjYxOCIsIjQyNjE5IiwiNDI2MjAiLCI0MjYyMSIsIjQyNjUyIiwiNDI2NTMiLCI0MjY1NSIsIjQyNzM2IiwiNDI3MzciLCI0Mjc1MiIsIjQyODY0IiwiNDMwMDAiLCI0MzAwMSIsIjQzMDA4IiwiNDMwMTQiLCI0MzIwNCIsIjQzMjMyIiwiNDMyMzMiLCI0MzIzNCIsIjQzMjM1IiwiNDMyMzYiLCI0MzIzNyIsIjQzMjM4IiwiNDMyMzkiLCI0MzI0MCIsIjQzMjQxIiwiNDMyNDIiLCI0MzI0MyIsIjQzMjQ0IiwiNDMyNDUiLCI0MzI0NiIsIjQzMjQ3IiwiNDMyNDgiLCI0MzI0OSIsIjQzMjY0IiwiNDMzMDciLCI0MzMwOCIsIjQzMzA5IiwiNDMzNDciLCI0MzQ0MyIsIjQzNDU2IiwiNDM1MjAiLCI0MzY5NiIsIjQzNjk4IiwiNDM2OTkiLCI0MzcwMCIsIjQzNzAzIiwiNDM3MDQiLCI0MzcxMCIsIjQzNzExIiwiNDM3MTMiLCI0Mzc2NiIsIjQzNzc2IiwiNDM4NjgiLCI0Mzg2OSIsIjQzODcwIiwiNDM4NzEiLCI0NDAxMyIsIjQ4MTI4IiwiMTEzODIyIiwiNTM1MDQiLCIxMTkxMzQiLCIxMTkxMzUiLCIxMTkxMzYiLCIxMTkxMzciLCIxMTkxMzgiLCIxMTkxMzkiLCIxMTkxNDAiLCIxMTkxNDEiLCIxMTkxNDIiLCIxMTkxNDMiLCIxMTkxNDQiLCIxMTkxNDUiLCIxMTkxNDkiLCIxMTkxNTAiLCIxMTkxNTEiLCIxMTkxNTIiLCIxMTkxNTMiLCIxMTkxNTQiLCIxMTkxNjMiLCIxMTkxNjQiLCIxMTkxNjUiLCIxMTkxNjYiLCIxMTkxNjciLCIxMTkxNjgiLCIxMTkxNjkiLCIxMTkxNzAiLCIxMTkxNzMiLCIxMTkxNzQiLCIxMTkxNzUiLCIxMTkxNzYiLCIxMTkxNzciLCIxMTkxNzgiLCIxMTkxNzkiLCIxMTkyMTAiLCIxMTkyMTEiLCIxMTkyMTIiLCIxMTkyMTMiLCIxMTkyMjciLCIxMTkyMjgiLCIxMTkyMjkiLCIxMTkyMzAiLCIxMTkyMzEiLCIxMTkyMzIiLCI1Mzc2MCIsIjExOTM2MiIsIjExOTM2MyIsIjExOTM2NCIsIjU0MjcyIiwiMTE5ODA4IiwiMTE5ODA5IiwiMTE5ODEwIiwiMTE5ODExIiwiMTE5ODEyIiwiMTE5ODEzIiwiMTE5ODE0IiwiMTE5ODE1IiwiMTE5ODE2IiwiMTE5ODE3IiwiMTE5ODE4IiwiMTE5ODE5IiwiMTE5ODIwIiwiMTE5ODIxIiwiMTE5ODIyIiwiMTE5ODIzIiwiMTE5ODI0IiwiMTE5ODI1IiwiMTE5ODI2IiwiMTE5ODI3IiwiMTE5ODI4IiwiMTE5ODI5IiwiMTE5ODMwIiwiMTE5ODMxIiwiMTE5ODMyIiwiMTE5ODMzIiwiMTE5ODM0IiwiMTE5ODM1IiwiMTE5ODM2IiwiMTE5ODM3IiwiMTE5ODM4IiwiMTE5ODM5IiwiMTE5ODQwIiwiMTE5ODQxIiwiMTE5ODQyIiwiMTE5ODQzIiwiMTE5ODQ0IiwiMTE5ODQ1IiwiMTE5ODQ2IiwiMTE5ODQ3IiwiMTE5ODQ4IiwiMTE5ODQ5IiwiMTE5ODUwIiwiMTE5ODUxIiwiMTE5ODUyIiwiMTE5ODUzIiwiMTE5ODU0IiwiMTE5ODU1IiwiMTE5ODU2IiwiMTE5ODU3IiwiMTE5ODU4IiwiMTE5ODU5IiwiMTE5ODYwIiwiMTE5ODYxIiwiMTE5ODYyIiwiMTE5ODYzIiwiMTE5ODY0IiwiMTE5ODY1IiwiMTE5ODY2IiwiMTE5ODY3IiwiMTE5ODY4IiwiMTE5ODY5IiwiMTE5ODcwIiwiMTE5ODcxIiwiMTE5ODcyIiwiMTE5ODczIiwiMTE5ODc0IiwiMTE5ODc1IiwiMTE5ODc2IiwiMTE5ODc3IiwiMTE5ODc4IiwiMTE5ODc5IiwiMTE5ODgwIiwiMTE5ODgxIiwiMTE5ODgyIiwiMTE5ODgzIiwiMTE5ODg0IiwiMTE5ODg1IiwiMTE5ODg2IiwiMTE5ODg3IiwiMTE5ODg4IiwiMTE5ODg5IiwiMTE5ODkwIiwiMTE5ODkxIiwiMTE5ODkyIiwiMTE5ODk0IiwiMTE5ODk1IiwiMTE5ODk2IiwiMTE5ODk3IiwiMTE5ODk4IiwiMTE5ODk5IiwiMTE5OTAwIiwiMTE5OTAxIiwiMTE5OTAyIiwiMTE5OTAzIiwiMTE5OTA0IiwiMTE5OTA1IiwiMTE5OTA2IiwiMTE5OTA3IiwiMTE5OTA4IiwiMTE5OTA5IiwiMTE5OTEwIiwiMTE5OTExIiwiMTE5OTEyIiwiMTE5OTEzIiwiMTE5OTE0IiwiMTE5OTE1IiwiMTE5OTE2IiwiMTE5OTE3IiwiMTE5OTE4IiwiMTE5OTE5IiwiMTE5OTIwIiwiMTE5OTIxIiwiMTE5OTIyIiwiMTE5OTIzIiwiMTE5OTI0IiwiMTE5OTI1IiwiMTE5OTI2IiwiMTE5OTI3IiwiMTE5OTI4IiwiMTE5OTI5IiwiMTE5OTMwIiwiMTE5OTMxIiwiMTE5OTMyIiwiMTE5OTMzIiwiMTE5OTM0IiwiMTE5OTM1IiwiMTE5OTM2IiwiMTE5OTM3IiwiMTE5OTM4IiwiMTE5OTM5IiwiMTE5OTQwIiwiMTE5OTQxIiwiMTE5OTQyIiwiMTE5OTQzIiwiMTE5OTQ0IiwiMTE5OTQ1IiwiMTE5OTQ2IiwiMTE5OTQ3IiwiMTE5OTQ4IiwiMTE5OTQ5IiwiMTE5OTUwIiwiMTE5OTUxIiwiMTE5OTUyIiwiMTE5OTUzIiwiMTE5OTU0IiwiMTE5OTU1IiwiMTE5OTU2IiwiMTE5OTU3IiwiMTE5OTU4IiwiMTE5OTU5IiwiMTE5OTYwIiwiMTE5OTYxIiwiMTE5OTYyIiwiMTE5OTYzIiwiMTE5OTY0IiwiMTE5OTY2IiwiMTE5OTY3IiwiMTE5OTcwIiwiMTE5OTczIiwiMTE5OTc0IiwiMTE5OTc3IiwiMTE5OTc4IiwiMTE5OTc5IiwiMTE5OTgwIiwiMTE5OTgyIiwiMTE5OTgzIiwiMTE5OTg0IiwiMTE5OTg1IiwiMTE5OTg2IiwiMTE5OTg3IiwiMTE5OTg4IiwiMTE5OTg5IiwiMTE5OTkwIiwiMTE5OTkxIiwiMTE5OTkyIiwiMTE5OTkzIiwiMTE5OTk1IiwiMTE5OTk3IiwiMTE5OTk4IiwiMTE5OTk5IiwiMTIwMDAwIiwiMTIwMDAxIiwiMTIwMDAyIiwiMTIwMDAzIiwiMTIwMDA1IiwiMTIwMDA2IiwiMTIwMDA3IiwiMTIwMDA4IiwiMTIwMDA5IiwiMTIwMDEwIiwiMTIwMDExIiwiMTIwMDEyIiwiMTIwMDEzIiwiMTIwMDE0IiwiMTIwMDE1IiwiMTIwMDE2IiwiMTIwMDE3IiwiMTIwMDE4IiwiMTIwMDE5IiwiMTIwMDIwIiwiMTIwMDIxIiwiMTIwMDIyIiwiMTIwMDIzIiwiMTIwMDI0IiwiMTIwMDI1IiwiMTIwMDI2IiwiMTIwMDI3IiwiMTIwMDI4IiwiMTIwMDI5IiwiMTIwMDMwIiwiMTIwMDMxIiwiMTIwMDMyIiwiMTIwMDMzIiwiMTIwMDM0IiwiMTIwMDM1IiwiMTIwMDM2IiwiMTIwMDM3IiwiMTIwMDM4IiwiMTIwMDM5IiwiMTIwMDQwIiwiMTIwMDQxIiwiMTIwMDQyIiwiMTIwMDQzIiwiMTIwMDQ0IiwiMTIwMDQ1IiwiMTIwMDQ2IiwiMTIwMDQ3IiwiMTIwMDQ4IiwiMTIwMDQ5IiwiMTIwMDUwIiwiMTIwMDUxIiwiMTIwMDUyIiwiMTIwMDUzIiwiMTIwMDU0IiwiMTIwMDU1IiwiMTIwMDU2IiwiMTIwMDU3IiwiMTIwMDU4IiwiMTIwMDU5IiwiMTIwMDYwIiwiMTIwMDYxIiwiMTIwMDYyIiwiMTIwMDYzIiwiNTQ1MjgiLCIxMjAwNjQiLCIxMjAwNjUiLCIxMjAwNjYiLCIxMjAwNjciLCIxMjAwNjgiLCIxMjAwNjkiLCIxMjAwNzEiLCIxMjAwNzIiLCIxMjAwNzMiLCIxMjAwNzQiLCIxMjAwNzciLCIxMjAwNzgiLCIxMjAwNzkiLCIxMjAwODAiLCIxMjAwODEiLCIxMjAwODIiLCIxMjAwODMiLCIxMjAwODQiLCIxMjAwODYiLCIxMjAwODciLCIxMjAwODgiLCIxMjAwODkiLCIxMjAwOTAiLCIxMjAwOTEiLCIxMjAwOTIiLCIxMjAwOTQiLCIxMjAwOTUiLCIxMjAwOTYiLCIxMjAwOTciLCIxMjAwOTgiLCIxMjAwOTkiLCIxMjAxMDAiLCIxMjAxMDEiLCIxMjAxMDIiLCIxMjAxMDMiLCIxMjAxMDQiLCIxMjAxMDUiLCIxMjAxMDYiLCIxMjAxMDciLCIxMjAxMDgiLCIxMjAxMDkiLCIxMjAxMTAiLCIxMjAxMTEiLCIxMjAxMTIiLCIxMjAxMTMiLCIxMjAxMTQiLCIxMjAxMTUiLCIxMjAxMTYiLCIxMjAxMTciLCIxMjAxMTgiLCIxMjAxMTkiLCIxMjAxMjAiLCIxMjAxMjEiLCIxMjAxMjMiLCIxMjAxMjQiLCIxMjAxMjUiLCIxMjAxMjYiLCIxMjAxMjgiLCIxMjAxMjkiLCIxMjAxMzAiLCIxMjAxMzEiLCIxMjAxMzIiLCIxMjAxMzQiLCIxMjAxMzgiLCIxMjAxMzkiLCIxMjAxNDAiLCIxMjAxNDEiLCIxMjAxNDIiLCIxMjAxNDMiLCIxMjAxNDQiLCIxMjAxNDYiLCIxMjAxNDciLCIxMjAxNDgiLCIxMjAxNDkiLCIxMjAxNTAiLCIxMjAxNTEiLCIxMjAxNTIiLCIxMjAxNTMiLCIxMjAxNTQiLCIxMjAxNTUiLCIxMjAxNTYiLCIxMjAxNTciLCIxMjAxNTgiLCIxMjAxNTkiLCIxMjAxNjAiLCIxMjAxNjEiLCIxMjAxNjIiLCIxMjAxNjMiLCIxMjAxNjQiLCIxMjAxNjUiLCIxMjAxNjYiLCIxMjAxNjciLCIxMjAxNjgiLCIxMjAxNjkiLCIxMjAxNzAiLCIxMjAxNzEiLCIxMjAxNzIiLCIxMjAxNzMiLCIxMjAxNzQiLCIxMjAxNzUiLCIxMjAxNzYiLCIxMjAxNzciLCIxMjAxNzgiLCIxMjAxNzkiLCIxMjAxODAiLCIxMjAxODEiLCIxMjAxODIiLCIxMjAxODMiLCIxMjAxODQiLCIxMjAxODUiLCIxMjAxODYiLCIxMjAxODciLCIxMjAxODgiLCIxMjAxODkiLCIxMjAxOTAiLCIxMjAxOTEiLCIxMjAxOTIiLCIxMjAxOTMiLCIxMjAxOTQiLCIxMjAxOTUiLCIxMjAxOTYiLCIxMjAxOTciLCIxMjAxOTgiLCIxMjAxOTkiLCIxMjAyMDAiLCIxMjAyMDEiLCIxMjAyMDIiLCIxMjAyMDMiLCIxMjAyMDQiLCIxMjAyMDUiLCIxMjAyMDYiLCIxMjAyMDciLCIxMjAyMDgiLCIxMjAyMDkiLCIxMjAyMTAiLCIxMjAyMTEiLCIxMjAyMTIiLCIxMjAyMTMiLCIxMjAyMTQiLCIxMjAyMTUiLCIxMjAyMTYiLCIxMjAyMTciLCIxMjAyMTgiLCIxMjAyMTkiLCIxMjAyMjAiLCIxMjAyMjEiLCIxMjAyMjIiLCIxMjAyMjMiLCIxMjAyMjQiLCIxMjAyMjUiLCIxMjAyMjYiLCIxMjAyMjciLCIxMjAyMjgiLCIxMjAyMjkiLCIxMjAyMzAiLCIxMjAyMzEiLCIxMjAyMzIiLCIxMjAyMzMiLCIxMjAyMzQiLCIxMjAyMzUiLCIxMjAyMzYiLCIxMjAyMzciLCIxMjAyMzgiLCIxMjAyMzkiLCIxMjAyNDAiLCIxMjAyNDEiLCIxMjAyNDIiLCIxMjAyNDMiLCIxMjAyNDQiLCIxMjAyNDUiLCIxMjAyNDYiLCIxMjAyNDciLCIxMjAyNDgiLCIxMjAyNDkiLCIxMjAyNTAiLCIxMjAyNTEiLCIxMjAyNTIiLCIxMjAyNTMiLCIxMjAyNTQiLCIxMjAyNTUiLCIxMjAyNTYiLCIxMjAyNTciLCIxMjAyNTgiLCIxMjAyNTkiLCIxMjAyNjAiLCIxMjAyNjEiLCIxMjAyNjIiLCIxMjAyNjMiLCIxMjAyNjQiLCIxMjAyNjUiLCIxMjAyNjYiLCIxMjAyNjciLCIxMjAyNjgiLCIxMjAyNjkiLCIxMjAyNzAiLCIxMjAyNzEiLCIxMjAyNzIiLCIxMjAyNzMiLCIxMjAyNzQiLCIxMjAyNzUiLCIxMjAyNzYiLCIxMjAyNzciLCIxMjAyNzgiLCIxMjAyNzkiLCIxMjAyODAiLCIxMjAyODEiLCIxMjAyODIiLCIxMjAyODMiLCIxMjAyODQiLCIxMjAyODUiLCIxMjAyODYiLCIxMjAyODciLCIxMjAyODgiLCIxMjAyODkiLCIxMjAyOTAiLCIxMjAyOTEiLCIxMjAyOTIiLCIxMjAyOTMiLCIxMjAyOTQiLCIxMjAyOTUiLCIxMjAyOTYiLCIxMjAyOTciLCIxMjAyOTgiLCIxMjAyOTkiLCIxMjAzMDAiLCIxMjAzMDEiLCIxMjAzMDIiLCIxMjAzMDMiLCIxMjAzMDQiLCIxMjAzMDUiLCIxMjAzMDYiLCIxMjAzMDciLCIxMjAzMDgiLCIxMjAzMDkiLCIxMjAzMTAiLCIxMjAzMTEiLCIxMjAzMTIiLCIxMjAzMTMiLCIxMjAzMTQiLCIxMjAzMTUiLCIxMjAzMTYiLCIxMjAzMTciLCIxMjAzMTgiLCIxMjAzMTkiLCI1NDc4NCIsIjEyMDMyMCIsIjEyMDMyMSIsIjEyMDMyMiIsIjEyMDMyMyIsIjEyMDMyNCIsIjEyMDMyNSIsIjEyMDMyNiIsIjEyMDMyNyIsIjEyMDMyOCIsIjEyMDMyOSIsIjEyMDMzMCIsIjEyMDMzMSIsIjEyMDMzMiIsIjEyMDMzMyIsIjEyMDMzNCIsIjEyMDMzNSIsIjEyMDMzNiIsIjEyMDMzNyIsIjEyMDMzOCIsIjEyMDMzOSIsIjEyMDM0MCIsIjEyMDM0MSIsIjEyMDM0MiIsIjEyMDM0MyIsIjEyMDM0NCIsIjEyMDM0NSIsIjEyMDM0NiIsIjEyMDM0NyIsIjEyMDM0OCIsIjEyMDM0OSIsIjEyMDM1MCIsIjEyMDM1MSIsIjEyMDM1MiIsIjEyMDM1MyIsIjEyMDM1NCIsIjEyMDM1NSIsIjEyMDM1NiIsIjEyMDM1NyIsIjEyMDM1OCIsIjEyMDM1OSIsIjEyMDM2MCIsIjEyMDM2MSIsIjEyMDM2MiIsIjEyMDM2MyIsIjEyMDM2NCIsIjEyMDM2NSIsIjEyMDM2NiIsIjEyMDM2NyIsIjEyMDM2OCIsIjEyMDM2OSIsIjEyMDM3MCIsIjEyMDM3MSIsIjEyMDM3MiIsIjEyMDM3MyIsIjEyMDM3NCIsIjEyMDM3NSIsIjEyMDM3NiIsIjEyMDM3NyIsIjEyMDM3OCIsIjEyMDM3OSIsIjEyMDM4MCIsIjEyMDM4MSIsIjEyMDM4MiIsIjEyMDM4MyIsIjEyMDM4NCIsIjEyMDM4NSIsIjEyMDM4NiIsIjEyMDM4NyIsIjEyMDM4OCIsIjEyMDM4OSIsIjEyMDM5MCIsIjEyMDM5MSIsIjEyMDM5MiIsIjEyMDM5MyIsIjEyMDM5NCIsIjEyMDM5NSIsIjEyMDM5NiIsIjEyMDM5NyIsIjEyMDM5OCIsIjEyMDM5OSIsIjEyMDQwMCIsIjEyMDQwMSIsIjEyMDQwMiIsIjEyMDQwMyIsIjEyMDQwNCIsIjEyMDQwNSIsIjEyMDQwNiIsIjEyMDQwNyIsIjEyMDQwOCIsIjEyMDQwOSIsIjEyMDQxMCIsIjEyMDQxMSIsIjEyMDQxMiIsIjEyMDQxMyIsIjEyMDQxNCIsIjEyMDQxNSIsIjEyMDQxNiIsIjEyMDQxNyIsIjEyMDQxOCIsIjEyMDQxOSIsIjEyMDQyMCIsIjEyMDQyMSIsIjEyMDQyMiIsIjEyMDQyMyIsIjEyMDQyNCIsIjEyMDQyNSIsIjEyMDQyNiIsIjEyMDQyNyIsIjEyMDQyOCIsIjEyMDQyOSIsIjEyMDQzMCIsIjEyMDQzMSIsIjEyMDQzMiIsIjEyMDQzMyIsIjEyMDQzNCIsIjEyMDQzNSIsIjEyMDQzNiIsIjEyMDQzNyIsIjEyMDQzOCIsIjEyMDQzOSIsIjEyMDQ0MCIsIjEyMDQ0MSIsIjEyMDQ0MiIsIjEyMDQ0MyIsIjEyMDQ0NCIsIjEyMDQ0NSIsIjEyMDQ0NiIsIjEyMDQ0NyIsIjEyMDQ0OCIsIjEyMDQ0OSIsIjEyMDQ1MCIsIjEyMDQ1MSIsIjEyMDQ1MiIsIjEyMDQ1MyIsIjEyMDQ1NCIsIjEyMDQ1NSIsIjEyMDQ1NiIsIjEyMDQ1NyIsIjEyMDQ1OCIsIjEyMDQ1OSIsIjEyMDQ2MCIsIjEyMDQ2MSIsIjEyMDQ2MiIsIjEyMDQ2MyIsIjEyMDQ2NCIsIjEyMDQ2NSIsIjEyMDQ2NiIsIjEyMDQ2NyIsIjEyMDQ2OCIsIjEyMDQ2OSIsIjEyMDQ3MCIsIjEyMDQ3MSIsIjEyMDQ3MiIsIjEyMDQ3MyIsIjEyMDQ3NCIsIjEyMDQ3NSIsIjEyMDQ3NiIsIjEyMDQ3NyIsIjEyMDQ3OCIsIjEyMDQ3OSIsIjEyMDQ4MCIsIjEyMDQ4MSIsIjEyMDQ4MiIsIjEyMDQ4MyIsIjEyMDQ4NCIsIjEyMDQ4NSIsIjEyMDQ4OCIsIjEyMDQ4OSIsIjEyMDQ5MCIsIjEyMDQ5MSIsIjEyMDQ5MiIsIjEyMDQ5MyIsIjEyMDQ5NCIsIjEyMDQ5NSIsIjEyMDQ5NiIsIjEyMDQ5NyIsIjEyMDQ5OCIsIjEyMDQ5OSIsIjEyMDUwMCIsIjEyMDUwMSIsIjEyMDUwMiIsIjEyMDUwMyIsIjEyMDUwNCIsIjEyMDUwNSIsIjEyMDUwNiIsIjEyMDUwNyIsIjEyMDUwOCIsIjEyMDUwOSIsIjEyMDUxMCIsIjEyMDUxMSIsIjEyMDUxMiIsIjEyMDUxMyIsIjEyMDUxNCIsIjEyMDUxNSIsIjEyMDUxNiIsIjEyMDUxNyIsIjEyMDUxOCIsIjEyMDUxOSIsIjEyMDUyMCIsIjEyMDUyMSIsIjEyMDUyMiIsIjEyMDUyMyIsIjEyMDUyNCIsIjEyMDUyNSIsIjEyMDUyNiIsIjEyMDUyNyIsIjEyMDUyOCIsIjEyMDUyOSIsIjEyMDUzMCIsIjEyMDUzMSIsIjEyMDUzMiIsIjEyMDUzMyIsIjEyMDUzNCIsIjEyMDUzNSIsIjEyMDUzNiIsIjEyMDUzNyIsIjEyMDUzOCIsIjEyMDUzOSIsIjEyMDU0MCIsIjEyMDU0MSIsIjEyMDU0MiIsIjEyMDU0MyIsIjEyMDU0NCIsIjEyMDU0NSIsIjEyMDU0NiIsIjEyMDU0NyIsIjEyMDU0OCIsIjEyMDU0OSIsIjEyMDU1MCIsIjEyMDU1MSIsIjEyMDU1MiIsIjEyMDU1MyIsIjEyMDU1NCIsIjEyMDU1NSIsIjEyMDU1NiIsIjEyMDU1NyIsIjEyMDU1OCIsIjEyMDU1OSIsIjEyMDU2MCIsIjEyMDU2MSIsIjEyMDU2MiIsIjEyMDU2MyIsIjEyMDU2NCIsIjEyMDU2NSIsIjEyMDU2NiIsIjEyMDU2NyIsIjEyMDU2OCIsIjEyMDU2OSIsIjEyMDU3MCIsIjEyMDU3MSIsIjEyMDU3MiIsIjEyMDU3MyIsIjEyMDU3NCIsIjEyMDU3NSIsIjU1MDQwIiwiMTIwNTc2IiwiMTIwNTc3IiwiMTIwNTc4IiwiMTIwNTc5IiwiMTIwNTgwIiwiMTIwNTgxIiwiMTIwNTgyIiwiMTIwNTgzIiwiMTIwNTg0IiwiMTIwNTg1IiwiMTIwNTg2IiwiMTIwNTg3IiwiMTIwNTg4IiwiMTIwNTg5IiwiMTIwNTkwIiwiMTIwNTkxIiwiMTIwNTkyIiwiMTIwNTkzIiwiMTIwNTk0IiwiMTIwNTk1IiwiMTIwNTk2IiwiMTIwNTk3IiwiMTIwNTk4IiwiMTIwNTk5IiwiMTIwNjAwIiwiMTIwNjAxIiwiMTIwNjAyIiwiMTIwNjAzIiwiMTIwNjA0IiwiMTIwNjA1IiwiMTIwNjA2IiwiMTIwNjA3IiwiMTIwNjA4IiwiMTIwNjA5IiwiMTIwNjEwIiwiMTIwNjExIiwiMTIwNjEyIiwiMTIwNjEzIiwiMTIwNjE0IiwiMTIwNjE1IiwiMTIwNjE2IiwiMTIwNjE3IiwiMTIwNjE4IiwiMTIwNjE5IiwiMTIwNjIwIiwiMTIwNjIxIiwiMTIwNjIyIiwiMTIwNjIzIiwiMTIwNjI0IiwiMTIwNjI1IiwiMTIwNjI2IiwiMTIwNjI3IiwiMTIwNjI4IiwiMTIwNjI5IiwiMTIwNjMwIiwiMTIwNjMxIiwiMTIwNjMyIiwiMTIwNjMzIiwiMTIwNjM0IiwiMTIwNjM1IiwiMTIwNjM2IiwiMTIwNjM3IiwiMTIwNjM4IiwiMTIwNjM5IiwiMTIwNjQwIiwiMTIwNjQxIiwiMTIwNjQyIiwiMTIwNjQzIiwiMTIwNjQ0IiwiMTIwNjQ1IiwiMTIwNjQ2IiwiMTIwNjQ3IiwiMTIwNjQ4IiwiMTIwNjQ5IiwiMTIwNjUwIiwiMTIwNjUxIiwiMTIwNjUyIiwiMTIwNjUzIiwiMTIwNjU0IiwiMTIwNjU1IiwiMTIwNjU2IiwiMTIwNjU3IiwiMTIwNjU4IiwiMTIwNjU5IiwiMTIwNjYwIiwiMTIwNjYxIiwiMTIwNjYyIiwiMTIwNjYzIiwiMTIwNjY0IiwiMTIwNjY1IiwiMTIwNjY2IiwiMTIwNjY3IiwiMTIwNjY4IiwiMTIwNjY5IiwiMTIwNjcwIiwiMTIwNjcxIiwiMTIwNjcyIiwiMTIwNjczIiwiMTIwNjc0IiwiMTIwNjc1IiwiMTIwNjc2IiwiMTIwNjc3IiwiMTIwNjc4IiwiMTIwNjc5IiwiMTIwNjgwIiwiMTIwNjgxIiwiMTIwNjgyIiwiMTIwNjgzIiwiMTIwNjg0IiwiMTIwNjg1IiwiMTIwNjg2IiwiMTIwNjg3IiwiMTIwNjg4IiwiMTIwNjg5IiwiMTIwNjkwIiwiMTIwNjkxIiwiMTIwNjkyIiwiMTIwNjkzIiwiMTIwNjk0IiwiMTIwNjk1IiwiMTIwNjk2IiwiMTIwNjk3IiwiMTIwNjk4IiwiMTIwNjk5IiwiMTIwNzAwIiwiMTIwNzAxIiwiMTIwNzAyIiwiMTIwNzAzIiwiMTIwNzA0IiwiMTIwNzA1IiwiMTIwNzA2IiwiMTIwNzA3IiwiMTIwNzA4IiwiMTIwNzA5IiwiMTIwNzEwIiwiMTIwNzExIiwiMTIwNzEyIiwiMTIwNzEzIiwiMTIwNzE0IiwiMTIwNzE1IiwiMTIwNzE2IiwiMTIwNzE3IiwiMTIwNzE4IiwiMTIwNzE5IiwiMTIwNzIwIiwiMTIwNzIxIiwiMTIwNzIyIiwiMTIwNzIzIiwiMTIwNzI0IiwiMTIwNzI1IiwiMTIwNzI2IiwiMTIwNzI3IiwiMTIwNzI4IiwiMTIwNzI5IiwiMTIwNzMwIiwiMTIwNzMxIiwiMTIwNzMyIiwiMTIwNzMzIiwiMTIwNzM0IiwiMTIwNzM1IiwiMTIwNzM2IiwiMTIwNzM3IiwiMTIwNzM4IiwiMTIwNzM5IiwiMTIwNzQwIiwiMTIwNzQxIiwiMTIwNzQyIiwiMTIwNzQzIiwiMTIwNzQ0IiwiMTIwNzQ1IiwiMTIwNzQ2IiwiMTIwNzQ3IiwiMTIwNzQ4IiwiMTIwNzQ5IiwiMTIwNzUwIiwiMTIwNzUxIiwiMTIwNzUyIiwiMTIwNzUzIiwiMTIwNzU0IiwiMTIwNzU1IiwiMTIwNzU2IiwiMTIwNzU3IiwiMTIwNzU4IiwiMTIwNzU5IiwiMTIwNzYwIiwiMTIwNzYxIiwiMTIwNzYyIiwiMTIwNzYzIiwiMTIwNzY0IiwiMTIwNzY1IiwiMTIwNzY2IiwiMTIwNzY3IiwiMTIwNzY4IiwiMTIwNzY5IiwiMTIwNzcwIiwiMTIwNzcxIiwiMTIwNzcyIiwiMTIwNzczIiwiMTIwNzc0IiwiMTIwNzc1IiwiMTIwNzc2IiwiMTIwNzc3IiwiMTIwNzc4IiwiMTIwNzc5IiwiMTIwNzgyIiwiMTIwNzgzIiwiMTIwNzg0IiwiMTIwNzg1IiwiMTIwNzg2IiwiMTIwNzg3IiwiMTIwNzg4IiwiMTIwNzg5IiwiMTIwNzkwIiwiMTIwNzkxIiwiMTIwNzkyIiwiMTIwNzkzIiwiMTIwNzk0IiwiMTIwNzk1IiwiMTIwNzk2IiwiMTIwNzk3IiwiMTIwNzk4IiwiMTIwNzk5IiwiMTIwODAwIiwiMTIwODAxIiwiMTIwODAyIiwiMTIwODAzIiwiMTIwODA0IiwiMTIwODA1IiwiMTIwODA2IiwiMTIwODA3IiwiMTIwODA4IiwiMTIwODA5IiwiMTIwODEwIiwiMTIwODExIiwiMTIwODEyIiwiMTIwODEzIiwiMTIwODE0IiwiMTIwODE1IiwiMTIwODE2IiwiMTIwODE3IiwiMTIwODE4IiwiMTIwODE5IiwiMTIwODIwIiwiMTIwODIxIiwiMTIwODIyIiwiMTIwODIzIiwiMTIwODI0IiwiMTIwODI1IiwiMTIwODI2IiwiMTIwODI3IiwiMTIwODI4IiwiMTIwODI5IiwiMTIwODMwIiwiMTIwODMxIiwiNTkzOTIiLCIxMjUxMzYiLCIxMjUxMzciLCIxMjUxMzgiLCIxMjUxMzkiLCIxMjUxNDAiLCIxMjUxNDEiLCIxMjUxNDIiLCI2MDkyOCIsIjEyNjQ2NCIsIjEyNjQ2NSIsIjEyNjQ2NiIsIjEyNjQ2NyIsIjEyNjQ2OSIsIjEyNjQ3MCIsIjEyNjQ3MSIsIjEyNjQ3MiIsIjEyNjQ3MyIsIjEyNjQ3NCIsIjEyNjQ3NSIsIjEyNjQ3NiIsIjEyNjQ3NyIsIjEyNjQ3OCIsIjEyNjQ3OSIsIjEyNjQ4MCIsIjEyNjQ4MSIsIjEyNjQ4MiIsIjEyNjQ4MyIsIjEyNjQ4NCIsIjEyNjQ4NSIsIjEyNjQ4NiIsIjEyNjQ4NyIsIjEyNjQ4OCIsIjEyNjQ4OSIsIjEyNjQ5MCIsIjEyNjQ5MSIsIjEyNjQ5MiIsIjEyNjQ5MyIsIjEyNjQ5NCIsIjEyNjQ5NSIsIjEyNjQ5NyIsIjEyNjQ5OCIsIjEyNjUwMCIsIjEyNjUwMyIsIjEyNjUwNSIsIjEyNjUwNiIsIjEyNjUwNyIsIjEyNjUwOCIsIjEyNjUwOSIsIjEyNjUxMCIsIjEyNjUxMSIsIjEyNjUxMiIsIjEyNjUxMyIsIjEyNjUxNCIsIjEyNjUxNiIsIjEyNjUxNyIsIjEyNjUxOCIsIjEyNjUxOSIsIjEyNjUyMSIsIjEyNjUyMyIsIjEyNjUzMCIsIjEyNjUzNSIsIjEyNjUzNyIsIjEyNjUzOSIsIjEyNjU0MSIsIjEyNjU0MiIsIjEyNjU0MyIsIjEyNjU0NSIsIjEyNjU0NiIsIjEyNjU0OCIsIjEyNjU1MSIsIjEyNjU1MyIsIjEyNjU1NSIsIjEyNjU1NyIsIjEyNjU1OSIsIjEyNjU2MSIsIjEyNjU2MiIsIjEyNjU2NCIsIjEyNjU2NyIsIjEyNjU2OCIsIjEyNjU2OSIsIjEyNjU3MCIsIjEyNjU3MiIsIjEyNjU3MyIsIjEyNjU3NCIsIjEyNjU3NSIsIjEyNjU3NiIsIjEyNjU3NyIsIjEyNjU3OCIsIjEyNjU4MCIsIjEyNjU4MSIsIjEyNjU4MiIsIjEyNjU4MyIsIjEyNjU4NSIsIjEyNjU4NiIsIjEyNjU4NyIsIjEyNjU4OCIsIjEyNjU5MCIsIjEyNjU5MiIsIjEyNjU5MyIsIjEyNjU5NCIsIjEyNjU5NSIsIjEyNjU5NiIsIjEyNjU5NyIsIjEyNjU5OCIsIjEyNjU5OSIsIjEyNjYwMCIsIjEyNjYwMSIsIjEyNjYwMyIsIjEyNjYwNCIsIjEyNjYwNSIsIjEyNjYwNiIsIjEyNjYwNyIsIjEyNjYwOCIsIjEyNjYwOSIsIjEyNjYxMCIsIjEyNjYxMSIsIjEyNjYxMiIsIjEyNjYxMyIsIjEyNjYxNCIsIjEyNjYxNSIsIjEyNjYxNiIsIjEyNjYxNyIsIjEyNjYxOCIsIjEyNjYxOSIsIjEyNjYyNSIsIjEyNjYyNiIsIjEyNjYyNyIsIjEyNjYyOSIsIjEyNjYzMCIsIjEyNjYzMSIsIjEyNjYzMiIsIjEyNjYzMyIsIjEyNjYzNSIsIjEyNjYzNiIsIjEyNjYzNyIsIjEyNjYzOCIsIjEyNjYzOSIsIjEyNjY0MCIsIjEyNjY0MSIsIjEyNjY0MiIsIjEyNjY0MyIsIjEyNjY0NCIsIjEyNjY0NSIsIjEyNjY0NiIsIjEyNjY0NyIsIjEyNjY0OCIsIjEyNjY0OSIsIjEyNjY1MCIsIjEyNjY1MSIsIjYxNjk2IiwiMTI3MjMyIiwiMTI3MjMzIiwiMTI3MjM0IiwiMTI3MjM1IiwiMTI3MjM2IiwiMTI3MjM3IiwiMTI3MjM4IiwiMTI3MjM5IiwiMTI3MjQwIiwiMTI3MjQxIiwiMTI3MjQyIiwiMTI3MjQ4IiwiMTI3MjQ5IiwiMTI3MjUwIiwiMTI3MjUxIiwiMTI3MjUyIiwiMTI3MjUzIiwiMTI3MjU0IiwiMTI3MjU1IiwiMTI3MjU2IiwiMTI3MjU3IiwiMTI3MjU4IiwiMTI3MjU5IiwiMTI3MjYwIiwiMTI3MjYxIiwiMTI3MjYyIiwiMTI3MjYzIiwiMTI3MjY0IiwiMTI3MjY1IiwiMTI3MjY2IiwiMTI3MjY3IiwiMTI3MjY4IiwiMTI3MjY5IiwiMTI3MjcwIiwiMTI3MjcxIiwiMTI3MjcyIiwiMTI3MjczIiwiMTI3Mjc0IiwiMTI3Mjc1IiwiMTI3Mjc2IiwiMTI3Mjc3IiwiMTI3Mjc4IiwiMTI3MjgwIiwiMTI3MjgxIiwiMTI3MjgyIiwiMTI3MjgzIiwiMTI3Mjg0IiwiMTI3Mjg1IiwiMTI3Mjg2IiwiMTI3Mjg3IiwiMTI3Mjg4IiwiMTI3Mjg5IiwiMTI3MjkwIiwiMTI3MjkxIiwiMTI3MjkyIiwiMTI3MjkzIiwiMTI3Mjk0IiwiMTI3Mjk1IiwiMTI3Mjk2IiwiMTI3Mjk3IiwiMTI3Mjk4IiwiMTI3Mjk5IiwiMTI3MzAwIiwiMTI3MzAxIiwiMTI3MzAyIiwiMTI3MzAzIiwiMTI3MzA0IiwiMTI3MzA1IiwiMTI3MzA2IiwiMTI3MzA3IiwiMTI3MzA4IiwiMTI3MzA5IiwiMTI3MzEwIiwiMTI3MzExIiwiMTI3MzM4IiwiMTI3MzM5IiwiMTI3Mzc2IiwiNjE5NTIiLCIxMjc0ODgiLCIxMjc0ODkiLCIxMjc0OTAiLCIxMjc1MDQiLCIxMjc1MDUiLCIxMjc1MDYiLCIxMjc1MDciLCIxMjc1MDgiLCIxMjc1MDkiLCIxMjc1MTAiLCIxMjc1MTEiLCIxMjc1MTIiLCIxMjc1MTMiLCIxMjc1MTQiLCIxMjc1MTUiLCIxMjc1MTYiLCIxMjc1MTciLCIxMjc1MTgiLCIxMjc1MTkiLCIxMjc1MjAiLCIxMjc1MjEiLCIxMjc1MjIiLCIxMjc1MjMiLCIxMjc1MjQiLCIxMjc1MjUiLCIxMjc1MjYiLCIxMjc1MjciLCIxMjc1MjgiLCIxMjc1MjkiLCIxMjc1MzAiLCIxMjc1MzEiLCIxMjc1MzIiLCIxMjc1MzMiLCIxMjc1MzQiLCIxMjc1MzUiLCIxMjc1MzYiLCIxMjc1MzciLCIxMjc1MzgiLCIxMjc1MzkiLCIxMjc1NDAiLCIxMjc1NDEiLCIxMjc1NDIiLCIxMjc1NDMiLCIxMjc1NDQiLCIxMjc1NDUiLCIxMjc1NDYiLCIxMjc1NTIiLCIxMjc1NTMiLCIxMjc1NTQiLCIxMjc1NTUiLCIxMjc1NTYiLCIxMjc1NTciLCIxMjc1NTgiLCIxMjc1NTkiLCIxMjc1NjAiLCIxMjc1NjgiLCIxMjc1NjkiLCI2MzQ4OCIsIjE5NDU2MCIsIjE5NDU2MSIsIjE5NDU2MiIsIjE5NDU2MyIsIjE5NDU2NCIsIjE5NDU2NSIsIjE5NDU2NiIsIjE5NDU2NyIsIjE5NDU2OCIsIjE5NDU2OSIsIjE5NDU3MCIsIjE5NDU3MSIsIjE5NDU3MiIsIjE5NDU3MyIsIjE5NDU3NCIsIjE5NDU3NSIsIjE5NDU3NiIsIjE5NDU3NyIsIjE5NDU3OCIsIjE5NDU3OSIsIjE5NDU4MCIsIjE5NDU4MSIsIjE5NDU4MiIsIjE5NDU4MyIsIjE5NDU4NCIsIjE5NDU4NSIsIjE5NDU4NiIsIjE5NDU4NyIsIjE5NDU4OCIsIjE5NDU4OSIsIjE5NDU5MCIsIjE5NDU5MSIsIjE5NDU5MiIsIjE5NDU5MyIsIjE5NDU5NCIsIjE5NDU5NSIsIjE5NDU5NiIsIjE5NDU5NyIsIjE5NDU5OCIsIjE5NDU5OSIsIjE5NDYwMCIsIjE5NDYwMSIsIjE5NDYwMiIsIjE5NDYwMyIsIjE5NDYwNCIsIjE5NDYwNSIsIjE5NDYwNiIsIjE5NDYwNyIsIjE5NDYwOCIsIjE5NDYwOSIsIjE5NDYxMCIsIjE5NDYxMSIsIjE5NDYxMiIsIjE5NDYxMyIsIjE5NDYxNCIsIjE5NDYxNSIsIjE5NDYxNiIsIjE5NDYxNyIsIjE5NDYxOCIsIjE5NDYxOSIsIjE5NDYyMCIsIjE5NDYyMSIsIjE5NDYyMiIsIjE5NDYyMyIsIjE5NDYyNCIsIjE5NDYyNSIsIjE5NDYyNiIsIjE5NDYyNyIsIjE5NDYyOCIsIjE5NDYyOSIsIjE5NDYzMCIsIjE5NDYzMSIsIjE5NDYzMiIsIjE5NDYzMyIsIjE5NDYzNCIsIjE5NDYzNSIsIjE5NDYzNiIsIjE5NDYzNyIsIjE5NDYzOCIsIjE5NDYzOSIsIjE5NDY0MCIsIjE5NDY0MSIsIjE5NDY0MiIsIjE5NDY0MyIsIjE5NDY0NCIsIjE5NDY0NSIsIjE5NDY0NiIsIjE5NDY0NyIsIjE5NDY0OCIsIjE5NDY0OSIsIjE5NDY1MCIsIjE5NDY1MSIsIjE5NDY1MiIsIjE5NDY1MyIsIjE5NDY1NCIsIjE5NDY1NSIsIjE5NDY1NiIsIjE5NDY1NyIsIjE5NDY1OCIsIjE5NDY1OSIsIjE5NDY2MCIsIjE5NDY2MSIsIjE5NDY2MiIsIjE5NDY2MyIsIjE5NDY2NCIsIjE5NDY2NSIsIjE5NDY2NiIsIjE5NDY2NyIsIjE5NDY2OCIsIjE5NDY2OSIsIjE5NDY3MCIsIjE5NDY3MSIsIjE5NDY3MiIsIjE5NDY3MyIsIjE5NDY3NCIsIjE5NDY3NSIsIjE5NDY3NiIsIjE5NDY3NyIsIjE5NDY3OCIsIjE5NDY3OSIsIjE5NDY4MCIsIjE5NDY4MSIsIjE5NDY4MiIsIjE5NDY4MyIsIjE5NDY4NCIsIjE5NDY4NSIsIjE5NDY4NiIsIjE5NDY4NyIsIjE5NDY4OCIsIjE5NDY4OSIsIjE5NDY5MCIsIjE5NDY5MSIsIjE5NDY5MiIsIjE5NDY5MyIsIjE5NDY5NCIsIjE5NDY5NSIsIjE5NDY5NiIsIjE5NDY5NyIsIjE5NDY5OCIsIjE5NDY5OSIsIjE5NDcwMCIsIjE5NDcwMSIsIjE5NDcwMiIsIjE5NDcwMyIsIjE5NDcwNCIsIjE5NDcwNSIsIjE5NDcwNiIsIjE5NDcwNyIsIjE5NDcwOCIsIjE5NDcwOSIsIjE5NDcxMCIsIjE5NDcxMSIsIjE5NDcxMiIsIjE5NDcxMyIsIjE5NDcxNCIsIjE5NDcxNSIsIjE5NDcxNiIsIjE5NDcxNyIsIjE5NDcxOCIsIjE5NDcxOSIsIjE5NDcyMCIsIjE5NDcyMSIsIjE5NDcyMiIsIjE5NDcyMyIsIjE5NDcyNCIsIjE5NDcyNSIsIjE5NDcyNiIsIjE5NDcyNyIsIjE5NDcyOCIsIjE5NDcyOSIsIjE5NDczMCIsIjE5NDczMSIsIjE5NDczMiIsIjE5NDczMyIsIjE5NDczNCIsIjE5NDczNSIsIjE5NDczNiIsIjE5NDczNyIsIjE5NDczOCIsIjE5NDczOSIsIjE5NDc0MCIsIjE5NDc0MSIsIjE5NDc0MiIsIjE5NDc0MyIsIjE5NDc0NCIsIjE5NDc0NSIsIjE5NDc0NiIsIjE5NDc0NyIsIjE5NDc0OCIsIjE5NDc0OSIsIjE5NDc1MCIsIjE5NDc1MSIsIjE5NDc1MiIsIjE5NDc1MyIsIjE5NDc1NCIsIjE5NDc1NSIsIjE5NDc1NiIsIjE5NDc1NyIsIjE5NDc1OCIsIjE5NDc1OSIsIjE5NDc2MCIsIjE5NDc2MSIsIjE5NDc2MiIsIjE5NDc2MyIsIjE5NDc2NCIsIjE5NDc2NSIsIjE5NDc2NiIsIjE5NDc2NyIsIjE5NDc2OCIsIjE5NDc2OSIsIjE5NDc3MCIsIjE5NDc3MSIsIjE5NDc3MiIsIjE5NDc3MyIsIjE5NDc3NCIsIjE5NDc3NSIsIjE5NDc3NiIsIjE5NDc3NyIsIjE5NDc3OCIsIjE5NDc3OSIsIjE5NDc4MCIsIjE5NDc4MSIsIjE5NDc4MiIsIjE5NDc4MyIsIjE5NDc4NCIsIjE5NDc4NSIsIjE5NDc4NiIsIjE5NDc4NyIsIjE5NDc4OCIsIjE5NDc4OSIsIjE5NDc5MCIsIjE5NDc5MSIsIjE5NDc5MiIsIjE5NDc5MyIsIjE5NDc5NCIsIjE5NDc5NSIsIjE5NDc5NiIsIjE5NDc5NyIsIjE5NDc5OCIsIjE5NDc5OSIsIjE5NDgwMCIsIjE5NDgwMSIsIjE5NDgwMiIsIjE5NDgwMyIsIjE5NDgwNCIsIjE5NDgwNSIsIjE5NDgwNiIsIjE5NDgwNyIsIjE5NDgwOCIsIjE5NDgwOSIsIjE5NDgxMCIsIjE5NDgxMSIsIjE5NDgxMiIsIjE5NDgxMyIsIjE5NDgxNCIsIjE5NDgxNSIsIjYzNzQ0IiwiNjM3NDUiLCI2Mzc0NiIsIjYzNzQ3IiwiNjM3NDgiLCI2Mzc0OSIsIjYzNzUwIiwiNjM3NTEiLCI2Mzc1MiIsIjYzNzUzIiwiNjM3NTQiLCI2Mzc1NSIsIjYzNzU2IiwiNjM3NTciLCI2Mzc1OCIsIjYzNzU5IiwiNjM3NjAiLCI2Mzc2MSIsIjYzNzYyIiwiNjM3NjMiLCI2Mzc2NCIsIjYzNzY1IiwiNjM3NjYiLCI2Mzc2NyIsIjYzNzY4IiwiNjM3NjkiLCI2Mzc3MCIsIjYzNzcxIiwiNjM3NzIiLCI2Mzc3MyIsIjYzNzc0IiwiNjM3NzUiLCI2Mzc3NiIsIjYzNzc3IiwiNjM3NzgiLCI2Mzc3OSIsIjYzNzgwIiwiNjM3ODEiLCI2Mzc4MiIsIjYzNzgzIiwiNjM3ODQiLCI2Mzc4NSIsIjYzNzg2IiwiNjM3ODciLCI2Mzc4OCIsIjYzNzg5IiwiNjM3OTAiLCI2Mzc5MSIsIjYzNzkyIiwiNjM3OTMiLCI2Mzc5NCIsIjYzNzk1IiwiNjM3OTYiLCI2Mzc5NyIsIjYzNzk4IiwiNjM3OTkiLCI2MzgwMCIsIjYzODAxIiwiNjM4MDIiLCI2MzgwMyIsIjYzODA0IiwiNjM4MDUiLCI2MzgwNiIsIjYzODA3IiwiNjM4MDgiLCI2MzgwOSIsIjYzODEwIiwiNjM4MTEiLCI2MzgxMiIsIjYzODEzIiwiNjM4MTQiLCI2MzgxNSIsIjYzODE2IiwiNjM4MTciLCI2MzgxOCIsIjYzODE5IiwiNjM4MjAiLCI2MzgyMSIsIjYzODIyIiwiNjM4MjMiLCI2MzgyNCIsIjYzODI1IiwiNjM4MjYiLCI2MzgyNyIsIjYzODI4IiwiNjM4MjkiLCI2MzgzMCIsIjYzODMxIiwiNjM4MzIiLCI2MzgzMyIsIjYzODM0IiwiNjM4MzUiLCI2MzgzNiIsIjYzODM3IiwiNjM4MzgiLCI2MzgzOSIsIjYzODQwIiwiNjM4NDEiLCI2Mzg0MiIsIjYzODQzIiwiNjM4NDQiLCI2Mzg0NSIsIjYzODQ2IiwiNjM4NDciLCI2Mzg0OCIsIjYzODQ5IiwiNjM4NTAiLCI2Mzg1MSIsIjYzODUyIiwiNjM4NTMiLCI2Mzg1NCIsIjYzODU1IiwiNjM4NTYiLCI2Mzg1NyIsIjYzODU4IiwiNjM4NTkiLCI2Mzg2MCIsIjYzODYxIiwiNjM4NjIiLCI2Mzg2MyIsIjYzODY0IiwiNjM4NjUiLCI2Mzg2NiIsIjYzODY3IiwiNjM4NjgiLCI2Mzg2OSIsIjYzODcwIiwiNjM4NzEiLCI2Mzg3MiIsIjYzODczIiwiNjM4NzQiLCI2Mzg3NSIsIjYzODc2IiwiNjM4NzciLCI2Mzg3OCIsIjYzODc5IiwiNjM4ODAiLCI2Mzg4MSIsIjYzODgyIiwiNjM4ODMiLCI2Mzg4NCIsIjYzODg1IiwiNjM4ODYiLCI2Mzg4NyIsIjYzODg4IiwiNjM4ODkiLCI2Mzg5MCIsIjYzODkxIiwiNjM4OTIiLCI2Mzg5MyIsIjYzODk0IiwiNjM4OTUiLCI2Mzg5NiIsIjYzODk3IiwiNjM4OTgiLCI2Mzg5OSIsIjYzOTAwIiwiNjM5MDEiLCI2MzkwMiIsIjYzOTAzIiwiNjM5MDQiLCI2MzkwNSIsIjYzOTA2IiwiNjM5MDciLCI2MzkwOCIsIjYzOTA5IiwiNjM5MTAiLCI2MzkxMSIsIjYzOTEyIiwiNjM5MTMiLCI2MzkxNCIsIjYzOTE1IiwiNjM5MTYiLCI2MzkxNyIsIjYzOTE4IiwiNjM5MTkiLCI2MzkyMCIsIjYzOTIxIiwiNjM5MjIiLCI2MzkyMyIsIjYzOTI0IiwiNjM5MjUiLCI2MzkyNiIsIjYzOTI3IiwiNjM5MjgiLCI2MzkyOSIsIjYzOTMwIiwiNjM5MzEiLCI2MzkzMiIsIjYzOTMzIiwiNjM5MzQiLCI2MzkzNSIsIjYzOTM2IiwiNjM5MzciLCI2MzkzOCIsIjYzOTM5IiwiNjM5NDAiLCI2Mzk0MSIsIjYzOTQyIiwiNjM5NDMiLCI2Mzk0NCIsIjYzOTQ1IiwiNjM5NDYiLCI2Mzk0NyIsIjYzOTQ4IiwiNjM5NDkiLCI2Mzk1MCIsIjYzOTUxIiwiNjM5NTIiLCI2Mzk1MyIsIjYzOTU0IiwiNjM5NTUiLCI2Mzk1NiIsIjYzOTU3IiwiNjM5NTgiLCI2Mzk1OSIsIjYzOTYwIiwiNjM5NjEiLCI2Mzk2MiIsIjYzOTYzIiwiNjM5NjQiLCI2Mzk2NSIsIjYzOTY2IiwiNjM5NjciLCI2Mzk2OCIsIjYzOTY5IiwiNjM5NzAiLCI2Mzk3MSIsIjYzOTcyIiwiNjM5NzMiLCI2Mzk3NCIsIjYzOTc1IiwiNjM5NzYiLCI2Mzk3NyIsIjYzOTc4IiwiNjM5NzkiLCI2Mzk4MCIsIjYzOTgxIiwiNjM5ODIiLCI2Mzk4MyIsIjYzOTg0IiwiNjM5ODUiLCI2Mzk4NiIsIjYzOTg3IiwiNjM5ODgiLCI2Mzk4OSIsIjYzOTkwIiwiNjM5OTEiLCI2Mzk5MiIsIjYzOTkzIiwiNjM5OTQiLCI2Mzk5NSIsIjYzOTk2IiwiNjM5OTciLCI2Mzk5OCIsIjYzOTk5IiwiMTk0ODE2IiwiMTk0ODE3IiwiMTk0ODE4IiwiMTk0ODE5IiwiMTk0ODIwIiwiMTk0ODIxIiwiMTk0ODIyIiwiMTk0ODIzIiwiMTk0ODI0IiwiMTk0ODI1IiwiMTk0ODI2IiwiMTk0ODI3IiwiMTk0ODI4IiwiMTk0ODI5IiwiMTk0ODMwIiwiMTk0ODMxIiwiMTk0ODMyIiwiMTk0ODMzIiwiMTk0ODM0IiwiMTk0ODM1IiwiMTk0ODM2IiwiMTk0ODM3IiwiMTk0ODM4IiwiMTk0ODM5IiwiMTk0ODQwIiwiMTk0ODQxIiwiMTk0ODQyIiwiMTk0ODQzIiwiMTk0ODQ0IiwiMTk0ODQ1IiwiMTk0ODQ2IiwiMTk0ODQ3IiwiMTk0ODQ4IiwiMTk0ODQ5IiwiMTk0ODUwIiwiMTk0ODUxIiwiMTk0ODUyIiwiMTk0ODUzIiwiMTk0ODU0IiwiMTk0ODU1IiwiMTk0ODU2IiwiMTk0ODU3IiwiMTk0ODU4IiwiMTk0ODU5IiwiMTk0ODYwIiwiMTk0ODYxIiwiMTk0ODYyIiwiMTk0ODYzIiwiMTk0ODY0IiwiMTk0ODY1IiwiMTk0ODY2IiwiMTk0ODY3IiwiMTk0ODY4IiwiMTk0ODY5IiwiMTk0ODcwIiwiMTk0ODcxIiwiMTk0ODcyIiwiMTk0ODczIiwiMTk0ODc0IiwiMTk0ODc1IiwiMTk0ODc2IiwiMTk0ODc3IiwiMTk0ODc4IiwiMTk0ODc5IiwiMTk0ODgwIiwiMTk0ODgxIiwiMTk0ODgyIiwiMTk0ODgzIiwiMTk0ODg0IiwiMTk0ODg1IiwiMTk0ODg2IiwiMTk0ODg3IiwiMTk0ODg4IiwiMTk0ODg5IiwiMTk0ODkwIiwiMTk0ODkxIiwiMTk0ODkyIiwiMTk0ODkzIiwiMTk0ODk0IiwiMTk0ODk1IiwiMTk0ODk2IiwiMTk0ODk3IiwiMTk0ODk4IiwiMTk0ODk5IiwiMTk0OTAwIiwiMTk0OTAxIiwiMTk0OTAyIiwiMTk0OTAzIiwiMTk0OTA0IiwiMTk0OTA1IiwiMTk0OTA2IiwiMTk0OTA3IiwiMTk0OTA4IiwiMTk0OTA5IiwiMTk0OTEwIiwiMTk0OTExIiwiMTk0OTEyIiwiMTk0OTEzIiwiMTk0OTE0IiwiMTk0OTE1IiwiMTk0OTE2IiwiMTk0OTE3IiwiMTk0OTE4IiwiMTk0OTE5IiwiMTk0OTIwIiwiMTk0OTIxIiwiMTk0OTIyIiwiMTk0OTIzIiwiMTk0OTI0IiwiMTk0OTI1IiwiMTk0OTI2IiwiMTk0OTI3IiwiMTk0OTI4IiwiMTk0OTI5IiwiMTk0OTMwIiwiMTk0OTMxIiwiMTk0OTMyIiwiMTk0OTMzIiwiMTk0OTM0IiwiMTk0OTM1IiwiMTk0OTM2IiwiMTk0OTM3IiwiMTk0OTM4IiwiMTk0OTM5IiwiMTk0OTQwIiwiMTk0OTQxIiwiMTk0OTQyIiwiMTk0OTQzIiwiMTk0OTQ0IiwiMTk0OTQ1IiwiMTk0OTQ2IiwiMTk0OTQ3IiwiMTk0OTQ4IiwiMTk0OTQ5IiwiMTk0OTUwIiwiMTk0OTUxIiwiMTk0OTUyIiwiMTk0OTUzIiwiMTk0OTU0IiwiMTk0OTU1IiwiMTk0OTU2IiwiMTk0OTU3IiwiMTk0OTU4IiwiMTk0OTU5IiwiMTk0OTYwIiwiMTk0OTYxIiwiMTk0OTYyIiwiMTk0OTYzIiwiMTk0OTY0IiwiMTk0OTY1IiwiMTk0OTY2IiwiMTk0OTY3IiwiMTk0OTY4IiwiMTk0OTY5IiwiMTk0OTcwIiwiMTk0OTcxIiwiMTk0OTcyIiwiMTk0OTczIiwiMTk0OTc0IiwiMTk0OTc1IiwiMTk0OTc2IiwiMTk0OTc3IiwiMTk0OTc4IiwiMTk0OTc5IiwiMTk0OTgwIiwiMTk0OTgxIiwiMTk0OTgyIiwiMTk0OTgzIiwiMTk0OTg0IiwiMTk0OTg1IiwiMTk0OTg2IiwiMTk0OTg3IiwiMTk0OTg4IiwiMTk0OTg5IiwiMTk0OTkwIiwiMTk0OTkxIiwiMTk0OTkyIiwiMTk0OTkzIiwiMTk0OTk0IiwiMTk0OTk1IiwiMTk0OTk2IiwiMTk0OTk3IiwiMTk0OTk4IiwiMTk0OTk5IiwiMTk1MDAwIiwiMTk1MDAxIiwiMTk1MDAyIiwiMTk1MDAzIiwiMTk1MDA0IiwiMTk1MDA1IiwiMTk1MDA2IiwiMTk1MDA3IiwiMTk1MDA4IiwiMTk1MDA5IiwiMTk1MDEwIiwiMTk1MDExIiwiMTk1MDEyIiwiMTk1MDEzIiwiMTk1MDE0IiwiMTk1MDE1IiwiMTk1MDE2IiwiMTk1MDE3IiwiMTk1MDE4IiwiMTk1MDE5IiwiMTk1MDIwIiwiMTk1MDIxIiwiMTk1MDIyIiwiMTk1MDIzIiwiMTk1MDI0IiwiMTk1MDI1IiwiMTk1MDI2IiwiMTk1MDI3IiwiMTk1MDI4IiwiMTk1MDI5IiwiMTk1MDMwIiwiMTk1MDMxIiwiMTk1MDMyIiwiMTk1MDMzIiwiMTk1MDM0IiwiMTk1MDM1IiwiMTk1MDM2IiwiMTk1MDM3IiwiMTk1MDM4IiwiMTk1MDM5IiwiMTk1MDQwIiwiMTk1MDQxIiwiMTk1MDQyIiwiMTk1MDQzIiwiMTk1MDQ0IiwiMTk1MDQ1IiwiMTk1MDQ2IiwiMTk1MDQ3IiwiMTk1MDQ4IiwiMTk1MDQ5IiwiMTk1MDUwIiwiMTk1MDUxIiwiMTk1MDUyIiwiMTk1MDUzIiwiMTk1MDU0IiwiMTk1MDU1IiwiMTk1MDU2IiwiMTk1MDU3IiwiMTk1MDU4IiwiMTk1MDU5IiwiMTk1MDYwIiwiMTk1MDYxIiwiMTk1MDYyIiwiMTk1MDYzIiwiMTk1MDY0IiwiMTk1MDY1IiwiMTk1MDY2IiwiMTk1MDY3IiwiMTk1MDY4IiwiMTk1MDY5IiwiMTk1MDcwIiwiMTk1MDcxIiwiNjQwMDAiLCI2NDAwMSIsIjY0MDAyIiwiNjQwMDMiLCI2NDAwNCIsIjY0MDA1IiwiNjQwMDYiLCI2NDAwNyIsIjY0MDA4IiwiNjQwMDkiLCI2NDAxMCIsIjY0MDExIiwiNjQwMTIiLCI2NDAxMyIsIjY0MDE2IiwiNjQwMTgiLCI2NDAyMSIsIjY0MDIyIiwiNjQwMjMiLCI2NDAyNCIsIjY0MDI1IiwiNjQwMjYiLCI2NDAyNyIsIjY0MDI4IiwiNjQwMjkiLCI2NDAzMCIsIjY0MDMyIiwiNjQwMzQiLCI2NDAzNyIsIjY0MDM4IiwiNjQwNDIiLCI2NDA0MyIsIjY0MDQ0IiwiNjQwNDUiLCI2NDA0NiIsIjY0MDQ3IiwiNjQwNDgiLCI2NDA0OSIsIjY0MDUwIiwiNjQwNTEiLCI2NDA1MiIsIjY0MDUzIiwiNjQwNTQiLCI2NDA1NSIsIjY0MDU2IiwiNjQwNTciLCI2NDA1OCIsIjY0MDU5IiwiNjQwNjAiLCI2NDA2MSIsIjY0MDYyIiwiNjQwNjMiLCI2NDA2NCIsIjY0MDY1IiwiNjQwNjYiLCI2NDA2NyIsIjY0MDY4IiwiNjQwNjkiLCI2NDA3MCIsIjY0MDcxIiwiNjQwNzIiLCI2NDA3MyIsIjY0MDc0IiwiNjQwNzUiLCI2NDA3NiIsIjY0MDc3IiwiNjQwNzgiLCI2NDA3OSIsIjY0MDgwIiwiNjQwODEiLCI2NDA4MiIsIjY0MDgzIiwiNjQwODQiLCI2NDA4NSIsIjY0MDg2IiwiNjQwODciLCI2NDA4OCIsIjY0MDg5IiwiNjQwOTAiLCI2NDA5MSIsIjY0MDkyIiwiNjQwOTMiLCI2NDA5NCIsIjY0MDk1IiwiNjQwOTYiLCI2NDA5NyIsIjY0MDk4IiwiNjQwOTkiLCI2NDEwMCIsIjY0MTAxIiwiNjQxMDIiLCI2NDEwMyIsIjY0MTA0IiwiNjQxMDUiLCI2NDEwNiIsIjY0MTA3IiwiNjQxMDgiLCI2NDEwOSIsIjY0MTEyIiwiNjQxMTMiLCI2NDExNCIsIjY0MTE1IiwiNjQxMTYiLCI2NDExNyIsIjY0MTE4IiwiNjQxMTkiLCI2NDEyMCIsIjY0MTIxIiwiNjQxMjIiLCI2NDEyMyIsIjY0MTI0IiwiNjQxMjUiLCI2NDEyNiIsIjY0MTI3IiwiNjQxMjgiLCI2NDEyOSIsIjY0MTMwIiwiNjQxMzEiLCI2NDEzMiIsIjY0MTMzIiwiNjQxMzQiLCI2NDEzNSIsIjY0MTM2IiwiNjQxMzciLCI2NDEzOCIsIjY0MTM5IiwiNjQxNDAiLCI2NDE0MSIsIjY0MTQyIiwiNjQxNDMiLCI2NDE0NCIsIjY0MTQ1IiwiNjQxNDYiLCI2NDE0NyIsIjY0MTQ4IiwiNjQxNDkiLCI2NDE1MCIsIjY0MTUxIiwiNjQxNTIiLCI2NDE1MyIsIjY0MTU0IiwiNjQxNTUiLCI2NDE1NiIsIjY0MTU3IiwiNjQxNTgiLCI2NDE1OSIsIjY0MTYwIiwiNjQxNjEiLCI2NDE2MiIsIjY0MTYzIiwiNjQxNjQiLCI2NDE2NSIsIjY0MTY2IiwiNjQxNjciLCI2NDE2OCIsIjY0MTY5IiwiNjQxNzAiLCI2NDE3MSIsIjY0MTcyIiwiNjQxNzMiLCI2NDE3NCIsIjY0MTc1IiwiNjQxNzYiLCI2NDE3NyIsIjY0MTc4IiwiNjQxNzkiLCI2NDE4MCIsIjY0MTgxIiwiNjQxODIiLCI2NDE4MyIsIjY0MTg0IiwiNjQxODUiLCI2NDE4NiIsIjY0MTg3IiwiNjQxODgiLCI2NDE4OSIsIjY0MTkwIiwiNjQxOTEiLCI2NDE5MiIsIjY0MTkzIiwiNjQxOTQiLCI2NDE5NSIsIjY0MTk2IiwiNjQxOTciLCI2NDE5OCIsIjY0MTk5IiwiNjQyMDAiLCI2NDIwMSIsIjY0MjAyIiwiNjQyMDMiLCI2NDIwNCIsIjY0MjA1IiwiNjQyMDYiLCI2NDIwNyIsIjY0MjA4IiwiNjQyMDkiLCI2NDIxMCIsIjY0MjExIiwiNjQyMTIiLCI2NDIxMyIsIjY0MjE0IiwiNjQyMTUiLCI2NDIxNiIsIjY0MjE3IiwiMTk1MDcyIiwiMTk1MDczIiwiMTk1MDc0IiwiMTk1MDc1IiwiMTk1MDc2IiwiMTk1MDc3IiwiMTk1MDc4IiwiMTk1MDc5IiwiMTk1MDgwIiwiMTk1MDgxIiwiMTk1MDgyIiwiMTk1MDgzIiwiMTk1MDg0IiwiMTk1MDg1IiwiMTk1MDg2IiwiMTk1MDg3IiwiMTk1MDg4IiwiMTk1MDg5IiwiMTk1MDkwIiwiMTk1MDkxIiwiMTk1MDkyIiwiMTk1MDkzIiwiMTk1MDk0IiwiMTk1MDk1IiwiMTk1MDk2IiwiMTk1MDk3IiwiMTk1MDk4IiwiMTk1MDk5IiwiMTk1MTAwIiwiMTk1MTAxIiwiNjQyNTYiLCI2NDI1NyIsIjY0MjU4IiwiNjQyNTkiLCI2NDI2MCIsIjY0MjYxIiwiNjQyNjIiLCI2NDI3NSIsIjY0Mjc2IiwiNjQyNzciLCI2NDI3OCIsIjY0Mjc5IiwiNjQyODUiLCI2NDI4NiIsIjY0Mjg3IiwiNjQyODgiLCI2NDI4OSIsIjY0MjkwIiwiNjQyOTEiLCI2NDI5MiIsIjY0MjkzIiwiNjQyOTQiLCI2NDI5NSIsIjY0Mjk2IiwiNjQyOTciLCI2NDI5OCIsIjY0Mjk5IiwiNjQzMDAiLCI2NDMwMSIsIjY0MzAyIiwiNjQzMDMiLCI2NDMwNCIsIjY0MzA1IiwiNjQzMDYiLCI2NDMwNyIsIjY0MzA4IiwiNjQzMDkiLCI2NDMxMCIsIjY0MzEyIiwiNjQzMTMiLCI2NDMxNCIsIjY0MzE1IiwiNjQzMTYiLCI2NDMxOCIsIjY0MzIwIiwiNjQzMjEiLCI2NDMyMyIsIjY0MzI0IiwiNjQzMjYiLCI2NDMyNyIsIjY0MzI4IiwiNjQzMjkiLCI2NDMzMCIsIjY0MzMxIiwiNjQzMzIiLCI2NDMzMyIsIjY0MzM0IiwiNjQzMzUiLCI2NDMzNiIsIjY0MzM3IiwiNjQzMzgiLCI2NDMzOSIsIjY0MzQwIiwiNjQzNDEiLCI2NDM0MiIsIjY0MzQzIiwiNjQzNDQiLCI2NDM0NSIsIjY0MzQ2IiwiNjQzNDciLCI2NDM0OCIsIjY0MzQ5IiwiNjQzNTAiLCI2NDM1MSIsIjY0MzUyIiwiNjQzNTMiLCI2NDM1NCIsIjY0MzU1IiwiNjQzNTYiLCI2NDM1NyIsIjY0MzU4IiwiNjQzNTkiLCI2NDM2MCIsIjY0MzYxIiwiNjQzNjIiLCI2NDM2MyIsIjY0MzY0IiwiNjQzNjUiLCI2NDM2NiIsIjY0MzY3IiwiNjQzNjgiLCI2NDM2OSIsIjY0MzcwIiwiNjQzNzEiLCI2NDM3MiIsIjY0MzczIiwiNjQzNzQiLCI2NDM3NSIsIjY0Mzc2IiwiNjQzNzciLCI2NDM3OCIsIjY0Mzc5IiwiNjQzODAiLCI2NDM4MSIsIjY0MzgyIiwiNjQzODMiLCI2NDM4NCIsIjY0Mzg1IiwiNjQzODYiLCI2NDM4NyIsIjY0Mzg4IiwiNjQzODkiLCI2NDM5MCIsIjY0MzkxIiwiNjQzOTIiLCI2NDM5MyIsIjY0Mzk0IiwiNjQzOTUiLCI2NDM5NiIsIjY0Mzk3IiwiNjQzOTgiLCI2NDM5OSIsIjY0NDAwIiwiNjQ0MDEiLCI2NDQwMiIsIjY0NDAzIiwiNjQ0MDQiLCI2NDQwNSIsIjY0NDA2IiwiNjQ0MDciLCI2NDQwOCIsIjY0NDA5IiwiNjQ0MTAiLCI2NDQxMSIsIjY0NDEyIiwiNjQ0MTMiLCI2NDQxNCIsIjY0NDE1IiwiNjQ0MTYiLCI2NDQxNyIsIjY0NDE4IiwiNjQ0MTkiLCI2NDQyMCIsIjY0NDIxIiwiNjQ0MjIiLCI2NDQyMyIsIjY0NDI0IiwiNjQ0MjUiLCI2NDQyNiIsIjY0NDI3IiwiNjQ0MjgiLCI2NDQyOSIsIjY0NDMwIiwiNjQ0MzEiLCI2NDQzMiIsIjY0NDMzIiwiNjQ0NjciLCI2NDQ2OCIsIjY0NDY5IiwiNjQ0NzAiLCI2NDQ3MSIsIjY0NDcyIiwiNjQ0NzMiLCI2NDQ3NCIsIjY0NDc1IiwiNjQ0NzYiLCI2NDQ3NyIsIjY0NDc4IiwiNjQ0NzkiLCI2NDQ4MCIsIjY0NDgxIiwiNjQ0ODIiLCI2NDQ4MyIsIjY0NDg0IiwiNjQ0ODUiLCI2NDQ4NiIsIjY0NDg3IiwiNjQ0ODgiLCI2NDQ4OSIsIjY0NDkwIiwiNjQ0OTEiLCI2NDQ5MiIsIjY0NDkzIiwiNjQ0OTQiLCI2NDQ5NSIsIjY0NDk2IiwiNjQ0OTciLCI2NDQ5OCIsIjY0NDk5IiwiNjQ1MDAiLCI2NDUwMSIsIjY0NTAyIiwiNjQ1MDMiLCI2NDUwNCIsIjY0NTA1IiwiNjQ1MDYiLCI2NDUwNyIsIjY0NTA4IiwiNjQ1MDkiLCI2NDUxMCIsIjY0NTExIiwiNjQ1MTIiLCI2NDUxMyIsIjY0NTE0IiwiNjQ1MTUiLCI2NDUxNiIsIjY0NTE3IiwiNjQ1MTgiLCI2NDUxOSIsIjY0NTIwIiwiNjQ1MjEiLCI2NDUyMiIsIjY0NTIzIiwiNjQ1MjQiLCI2NDUyNSIsIjY0NTI2IiwiNjQ1MjciLCI2NDUyOCIsIjY0NTI5IiwiNjQ1MzAiLCI2NDUzMSIsIjY0NTMyIiwiNjQ1MzMiLCI2NDUzNCIsIjY0NTM1IiwiNjQ1MzYiLCI2NDUzNyIsIjY0NTM4IiwiNjQ1MzkiLCI2NDU0MCIsIjY0NTQxIiwiNjQ1NDIiLCI2NDU0MyIsIjY0NTQ0IiwiNjQ1NDUiLCI2NDU0NiIsIjY0NTQ3IiwiNjQ1NDgiLCI2NDU0OSIsIjY0NTUwIiwiNjQ1NTEiLCI2NDU1MiIsIjY0NTUzIiwiNjQ1NTQiLCI2NDU1NSIsIjY0NTU2IiwiNjQ1NTciLCI2NDU1OCIsIjY0NTU5IiwiNjQ1NjAiLCI2NDU2MSIsIjY0NTYyIiwiNjQ1NjMiLCI2NDU2NCIsIjY0NTY1IiwiNjQ1NjYiLCI2NDU2NyIsIjY0NTY4IiwiNjQ1NjkiLCI2NDU3MCIsIjY0NTcxIiwiNjQ1NzIiLCI2NDU3MyIsIjY0NTc0IiwiNjQ1NzUiLCI2NDU3NiIsIjY0NTc3IiwiNjQ1NzgiLCI2NDU3OSIsIjY0NTgwIiwiNjQ1ODEiLCI2NDU4MiIsIjY0NTgzIiwiNjQ1ODQiLCI2NDU4NSIsIjY0NTg2IiwiNjQ1ODciLCI2NDU4OCIsIjY0NTg5IiwiNjQ1OTAiLCI2NDU5MSIsIjY0NTkyIiwiNjQ1OTMiLCI2NDU5NCIsIjY0NTk1IiwiNjQ1OTYiLCI2NDU5NyIsIjY0NTk4IiwiNjQ1OTkiLCI2NDYwMCIsIjY0NjAxIiwiNjQ2MDIiLCI2NDYwMyIsIjY0NjA0IiwiNjQ2MDUiLCI2NDYwNiIsIjY0NjA3IiwiNjQ2MDgiLCI2NDYwOSIsIjY0NjEwIiwiNjQ2MTEiLCI2NDYxMiIsIjY0NjEzIiwiNjQ2MTQiLCI2NDYxNSIsIjY0NjE2IiwiNjQ2MTciLCI2NDYxOCIsIjY0NjE5IiwiNjQ2MjAiLCI2NDYyMSIsIjY0NjIyIiwiNjQ2MjMiLCI2NDYyNCIsIjY0NjI1IiwiNjQ2MjYiLCI2NDYyNyIsIjY0NjI4IiwiNjQ2MjkiLCI2NDYzMCIsIjY0NjMxIiwiNjQ2MzIiLCI2NDYzMyIsIjY0NjM0IiwiNjQ2MzUiLCI2NDYzNiIsIjY0NjM3IiwiNjQ2MzgiLCI2NDYzOSIsIjY0NjQwIiwiNjQ2NDEiLCI2NDY0MiIsIjY0NjQzIiwiNjQ2NDQiLCI2NDY0NSIsIjY0NjQ2IiwiNjQ2NDciLCI2NDY0OCIsIjY0NjQ5IiwiNjQ2NTAiLCI2NDY1MSIsIjY0NjUyIiwiNjQ2NTMiLCI2NDY1NCIsIjY0NjU1IiwiNjQ2NTYiLCI2NDY1NyIsIjY0NjU4IiwiNjQ2NTkiLCI2NDY2MCIsIjY0NjYxIiwiNjQ2NjIiLCI2NDY2MyIsIjY0NjY0IiwiNjQ2NjUiLCI2NDY2NiIsIjY0NjY3IiwiNjQ2NjgiLCI2NDY2OSIsIjY0NjcwIiwiNjQ2NzEiLCI2NDY3MiIsIjY0NjczIiwiNjQ2NzQiLCI2NDY3NSIsIjY0Njc2IiwiNjQ2NzciLCI2NDY3OCIsIjY0Njc5IiwiNjQ2ODAiLCI2NDY4MSIsIjY0NjgyIiwiNjQ2ODMiLCI2NDY4NCIsIjY0Njg1IiwiNjQ2ODYiLCI2NDY4NyIsIjY0Njg4IiwiNjQ2ODkiLCI2NDY5MCIsIjY0NjkxIiwiNjQ2OTIiLCI2NDY5MyIsIjY0Njk0IiwiNjQ2OTUiLCI2NDY5NiIsIjY0Njk3IiwiNjQ2OTgiLCI2NDY5OSIsIjY0NzAwIiwiNjQ3MDEiLCI2NDcwMiIsIjY0NzAzIiwiNjQ3MDQiLCI2NDcwNSIsIjY0NzA2IiwiNjQ3MDciLCI2NDcwOCIsIjY0NzA5IiwiNjQ3MTAiLCI2NDcxMSIsIjY0NzEyIiwiNjQ3MTMiLCI2NDcxNCIsIjY0NzE1IiwiNjQ3MTYiLCI2NDcxNyIsIjY0NzE4IiwiNjQ3MTkiLCI2NDcyMCIsIjY0NzIxIiwiNjQ3MjIiLCI2NDcyMyIsIjY0NzI0IiwiNjQ3MjUiLCI2NDcyNiIsIjY0NzI3IiwiNjQ3MjgiLCI2NDcyOSIsIjY0NzMwIiwiNjQ3MzEiLCI2NDczMiIsIjY0NzMzIiwiNjQ3MzQiLCI2NDczNSIsIjY0NzM2IiwiNjQ3MzciLCI2NDczOCIsIjY0NzM5IiwiNjQ3NDAiLCI2NDc0MSIsIjY0NzQyIiwiNjQ3NDMiLCI2NDc0NCIsIjY0NzQ1IiwiNjQ3NDYiLCI2NDc0NyIsIjY0NzQ4IiwiNjQ3NDkiLCI2NDc1MCIsIjY0NzUxIiwiNjQ3NTIiLCI2NDc1MyIsIjY0NzU0IiwiNjQ3NTUiLCI2NDc1NiIsIjY0NzU3IiwiNjQ3NTgiLCI2NDc1OSIsIjY0NzYwIiwiNjQ3NjEiLCI2NDc2MiIsIjY0NzYzIiwiNjQ3NjQiLCI2NDc2NSIsIjY0NzY2IiwiNjQ3NjciLCI2NDc2OCIsIjY0NzY5IiwiNjQ3NzAiLCI2NDc3MSIsIjY0NzcyIiwiNjQ3NzMiLCI2NDc3NCIsIjY0Nzc1IiwiNjQ3NzYiLCI2NDc3NyIsIjY0Nzc4IiwiNjQ3NzkiLCI2NDc4MCIsIjY0NzgxIiwiNjQ3ODIiLCI2NDc4MyIsIjY0Nzg0IiwiNjQ3ODUiLCI2NDc4NiIsIjY0Nzg3IiwiNjQ3ODgiLCI2NDc4OSIsIjY0NzkwIiwiNjQ3OTEiLCI2NDc5MiIsIjY0NzkzIiwiNjQ3OTQiLCI2NDc5NSIsIjY0Nzk2IiwiNjQ3OTciLCI2NDc5OCIsIjY0Nzk5IiwiNjQ4MDAiLCI2NDgwMSIsIjY0ODAyIiwiNjQ4MDMiLCI2NDgwNCIsIjY0ODA1IiwiNjQ4MDYiLCI2NDgwNyIsIjY0ODA4IiwiNjQ4MDkiLCI2NDgxMCIsIjY0ODExIiwiNjQ4MTIiLCI2NDgxMyIsIjY0ODE0IiwiNjQ4MTUiLCI2NDgxNiIsIjY0ODE3IiwiNjQ4MTgiLCI2NDgxOSIsIjY0ODIwIiwiNjQ4MjEiLCI2NDgyMiIsIjY0ODIzIiwiNjQ4MjQiLCI2NDgyNSIsIjY0ODI2IiwiNjQ4MjciLCI2NDgyOCIsIjY0ODI5IiwiNjQ4NDgiLCI2NDg0OSIsIjY0ODUwIiwiNjQ4NTEiLCI2NDg1MiIsIjY0ODUzIiwiNjQ4NTQiLCI2NDg1NSIsIjY0ODU2IiwiNjQ4NTciLCI2NDg1OCIsIjY0ODU5IiwiNjQ4NjAiLCI2NDg2MSIsIjY0ODYyIiwiNjQ4NjMiLCI2NDg2NCIsIjY0ODY1IiwiNjQ4NjYiLCI2NDg2NyIsIjY0ODY4IiwiNjQ4NjkiLCI2NDg3MCIsIjY0ODcxIiwiNjQ4NzIiLCI2NDg3MyIsIjY0ODc0IiwiNjQ4NzUiLCI2NDg3NiIsIjY0ODc3IiwiNjQ4NzgiLCI2NDg3OSIsIjY0ODgwIiwiNjQ4ODEiLCI2NDg4MiIsIjY0ODgzIiwiNjQ4ODQiLCI2NDg4NSIsIjY0ODg2IiwiNjQ4ODciLCI2NDg4OCIsIjY0ODg5IiwiNjQ4OTAiLCI2NDg5MSIsIjY0ODkyIiwiNjQ4OTMiLCI2NDg5NCIsIjY0ODk1IiwiNjQ4OTYiLCI2NDg5NyIsIjY0ODk4IiwiNjQ4OTkiLCI2NDkwMCIsIjY0OTAxIiwiNjQ5MDIiLCI2NDkwMyIsIjY0OTA0IiwiNjQ5MDUiLCI2NDkwNiIsIjY0OTA3IiwiNjQ5MDgiLCI2NDkwOSIsIjY0OTEwIiwiNjQ5MTEiLCI2NDkxNCIsIjY0OTE1IiwiNjQ5MTYiLCI2NDkxNyIsIjY0OTE4IiwiNjQ5MTkiLCI2NDkyMCIsIjY0OTIxIiwiNjQ5MjIiLCI2NDkyMyIsIjY0OTI0IiwiNjQ5MjUiLCI2NDkyNiIsIjY0OTI3IiwiNjQ5MjgiLCI2NDkyOSIsIjY0OTMwIiwiNjQ5MzEiLCI2NDkzMiIsIjY0OTMzIiwiNjQ5MzQiLCI2NDkzNSIsIjY0OTM2IiwiNjQ5MzciLCI2NDkzOCIsIjY0OTM5IiwiNjQ5NDAiLCI2NDk0MSIsIjY0OTQyIiwiNjQ5NDMiLCI2NDk0NCIsIjY0OTQ1IiwiNjQ5NDYiLCI2NDk0NyIsIjY0OTQ4IiwiNjQ5NDkiLCI2NDk1MCIsIjY0OTUxIiwiNjQ5NTIiLCI2NDk1MyIsIjY0OTU0IiwiNjQ5NTUiLCI2NDk1NiIsIjY0OTU3IiwiNjQ5NTgiLCI2NDk1OSIsIjY0OTYwIiwiNjQ5NjEiLCI2NDk2MiIsIjY0OTYzIiwiNjQ5NjQiLCI2NDk2NSIsIjY0OTY2IiwiNjQ5NjciLCI2NTAwOCIsIjY1MDA5IiwiNjUwMTAiLCI2NTAxMSIsIjY1MDEyIiwiNjUwMTMiLCI2NTAxNCIsIjY1MDE1IiwiNjUwMTYiLCI2NTAxNyIsIjY1MDE4IiwiNjUwMTkiLCI2NTAyMCIsIjY1MDI0IiwiNjUwNDAiLCI2NTA0MSIsIjY1MDQyIiwiNjUwNDMiLCI2NTA0NCIsIjY1MDQ1IiwiNjUwNDYiLCI2NTA0NyIsIjY1MDQ4IiwiNjUwNDkiLCI2NTA1NiIsIjY1MDU3IiwiNjUwNTgiLCI2NTA1OSIsIjY1MDYwIiwiNjUwNjEiLCI2NTA2MiIsIjY1MDYzIiwiNjUwNjQiLCI2NTA2NSIsIjY1MDY2IiwiNjUwNjciLCI2NTA2OCIsIjY1MDY5IiwiNjUwNzIiLCI2NTA3MyIsIjY1MDc0IiwiNjUwNzUiLCI2NTA3NiIsIjY1MDc3IiwiNjUwNzgiLCI2NTA3OSIsIjY1MDgwIiwiNjUwODEiLCI2NTA4MiIsIjY1MDgzIiwiNjUwODQiLCI2NTA4NSIsIjY1MDg2IiwiNjUwODciLCI2NTA4OCIsIjY1MDg5IiwiNjUwOTAiLCI2NTA5MSIsIjY1MDkyIiwiNjUwOTUiLCI2NTA5NiIsIjY1MDk3IiwiNjUwOTgiLCI2NTA5OSIsIjY1MTAwIiwiNjUxMDEiLCI2NTEwMiIsIjY1MTAzIiwiNjUxMDQiLCI2NTEwNSIsIjY1MTA2IiwiNjUxMDgiLCI2NTEwOSIsIjY1MTEwIiwiNjUxMTEiLCI2NTExMiIsIjY1MTEzIiwiNjUxMTQiLCI2NTExNSIsIjY1MTE2IiwiNjUxMTciLCI2NTExOCIsIjY1MTE5IiwiNjUxMjAiLCI2NTEyMSIsIjY1MTIyIiwiNjUxMjMiLCI2NTEyNCIsIjY1MTI1IiwiNjUxMjYiLCI2NTEyOCIsIjY1MTI5IiwiNjUxMzAiLCI2NTEzMSIsIjY1MTM2IiwiNjUxMzciLCI2NTEzOCIsIjY1MTQwIiwiNjUxNDIiLCI2NTE0MyIsIjY1MTQ0IiwiNjUxNDUiLCI2NTE0NiIsIjY1MTQ3IiwiNjUxNDgiLCI2NTE0OSIsIjY1MTUwIiwiNjUxNTEiLCI2NTE1MiIsIjY1MTUzIiwiNjUxNTQiLCI2NTE1NSIsIjY1MTU2IiwiNjUxNTciLCI2NTE1OCIsIjY1MTU5IiwiNjUxNjAiLCI2NTE2MSIsIjY1MTYyIiwiNjUxNjMiLCI2NTE2NCIsIjY1MTY1IiwiNjUxNjYiLCI2NTE2NyIsIjY1MTY4IiwiNjUxNjkiLCI2NTE3MCIsIjY1MTcxIiwiNjUxNzIiLCI2NTE3MyIsIjY1MTc0IiwiNjUxNzUiLCI2NTE3NiIsIjY1MTc3IiwiNjUxNzgiLCI2NTE3OSIsIjY1MTgwIiwiNjUxODEiLCI2NTE4MiIsIjY1MTgzIiwiNjUxODQiLCI2NTE4NSIsIjY1MTg2IiwiNjUxODciLCI2NTE4OCIsIjY1MTg5IiwiNjUxOTAiLCI2NTE5MSIsIjY1MTkyIiwiNjUxOTMiLCI2NTE5NCIsIjY1MTk1IiwiNjUxOTYiLCI2NTE5NyIsIjY1MTk4IiwiNjUxOTkiLCI2NTIwMCIsIjY1MjAxIiwiNjUyMDIiLCI2NTIwMyIsIjY1MjA0IiwiNjUyMDUiLCI2NTIwNiIsIjY1MjA3IiwiNjUyMDgiLCI2NTIwOSIsIjY1MjEwIiwiNjUyMTEiLCI2NTIxMiIsIjY1MjEzIiwiNjUyMTQiLCI2NTIxNSIsIjY1MjE2IiwiNjUyMTciLCI2NTIxOCIsIjY1MjE5IiwiNjUyMjAiLCI2NTIyMSIsIjY1MjIyIiwiNjUyMjMiLCI2NTIyNCIsIjY1MjI1IiwiNjUyMjYiLCI2NTIyNyIsIjY1MjI4IiwiNjUyMjkiLCI2NTIzMCIsIjY1MjMxIiwiNjUyMzIiLCI2NTIzMyIsIjY1MjM0IiwiNjUyMzUiLCI2NTIzNiIsIjY1MjM3IiwiNjUyMzgiLCI2NTIzOSIsIjY1MjQwIiwiNjUyNDEiLCI2NTI0MiIsIjY1MjQzIiwiNjUyNDQiLCI2NTI0NSIsIjY1MjQ2IiwiNjUyNDciLCI2NTI0OCIsIjY1MjQ5IiwiNjUyNTAiLCI2NTI1MSIsIjY1MjUyIiwiNjUyNTMiLCI2NTI1NCIsIjY1MjU1IiwiNjUyNTYiLCI2NTI1NyIsIjY1MjU4IiwiNjUyNTkiLCI2NTI2MCIsIjY1MjYxIiwiNjUyNjIiLCI2NTI2MyIsIjY1MjY0IiwiNjUyNjUiLCI2NTI2NiIsIjY1MjY3IiwiNjUyNjgiLCI2NTI2OSIsIjY1MjcwIiwiNjUyNzEiLCI2NTI3MiIsIjY1MjczIiwiNjUyNzQiLCI2NTI3NSIsIjY1Mjc2IiwiNjUyODAiLCI2NTI4MSIsIjY1MjgyIiwiNjUyODMiLCI2NTI4NCIsIjY1Mjg1IiwiNjUyODYiLCI2NTI4NyIsIjY1Mjg4IiwiNjUyODkiLCI2NTI5MCIsIjY1MjkxIiwiNjUyOTIiLCI2NTI5MyIsIjY1Mjk0IiwiNjUyOTUiLCI2NTI5NiIsIjY1Mjk3IiwiNjUyOTgiLCI2NTI5OSIsIjY1MzAwIiwiNjUzMDEiLCI2NTMwMiIsIjY1MzAzIiwiNjUzMDQiLCI2NTMwNSIsIjY1MzA2IiwiNjUzMDciLCI2NTMwOCIsIjY1MzA5IiwiNjUzMTAiLCI2NTMxMSIsIjY1MzEyIiwiNjUzMTMiLCI2NTMxNCIsIjY1MzE1IiwiNjUzMTYiLCI2NTMxNyIsIjY1MzE4IiwiNjUzMTkiLCI2NTMyMCIsIjY1MzIxIiwiNjUzMjIiLCI2NTMyMyIsIjY1MzI0IiwiNjUzMjUiLCI2NTMyNiIsIjY1MzI3IiwiNjUzMjgiLCI2NTMyOSIsIjY1MzMwIiwiNjUzMzEiLCI2NTMzMiIsIjY1MzMzIiwiNjUzMzQiLCI2NTMzNSIsIjY1MzM2IiwiNjUzMzciLCI2NTMzOCIsIjY1MzM5IiwiNjUzNDAiLCI2NTM0MSIsIjY1MzQyIiwiNjUzNDMiLCI2NTM0NCIsIjY1MzQ1IiwiNjUzNDYiLCI2NTM0NyIsIjY1MzQ4IiwiNjUzNDkiLCI2NTM1MCIsIjY1MzUxIiwiNjUzNTIiLCI2NTM1MyIsIjY1MzU0IiwiNjUzNTUiLCI2NTM1NiIsIjY1MzU3IiwiNjUzNTgiLCI2NTM1OSIsIjY1MzYwIiwiNjUzNjEiLCI2NTM2MiIsIjY1MzYzIiwiNjUzNjQiLCI2NTM2NSIsIjY1MzY2IiwiNjUzNjciLCI2NTM2OCIsIjY1MzY5IiwiNjUzNzAiLCI2NTM3MSIsIjY1MzcyIiwiNjUzNzMiLCI2NTM3NCIsIjY1Mzc1IiwiNjUzNzYiLCI2NTM3NyIsIjY1Mzc4IiwiNjUzNzkiLCI2NTM4MCIsIjY1MzgxIiwiNjUzODIiLCI2NTM4MyIsIjY1Mzg0IiwiNjUzODUiLCI2NTM4NiIsIjY1Mzg3IiwiNjUzODgiLCI2NTM4OSIsIjY1MzkwIiwiNjUzOTEiLCI2NTM5MiIsIjY1MzkzIiwiNjUzOTQiLCI2NTM5NSIsIjY1Mzk2IiwiNjUzOTciLCI2NTM5OCIsIjY1Mzk5IiwiNjU0MDAiLCI2NTQwMSIsIjY1NDAyIiwiNjU0MDMiLCI2NTQwNCIsIjY1NDA1IiwiNjU0MDYiLCI2NTQwNyIsIjY1NDA4IiwiNjU0MDkiLCI2NTQxMCIsIjY1NDExIiwiNjU0MTIiLCI2NTQxMyIsIjY1NDE0IiwiNjU0MTUiLCI2NTQxNiIsIjY1NDE3IiwiNjU0MTgiLCI2NTQxOSIsIjY1NDIwIiwiNjU0MjEiLCI2NTQyMiIsIjY1NDIzIiwiNjU0MjQiLCI2NTQyNSIsIjY1NDI2IiwiNjU0MjciLCI2NTQyOCIsIjY1NDI5IiwiNjU0MzAiLCI2NTQzMSIsIjY1NDMyIiwiNjU0MzMiLCI2NTQzNCIsIjY1NDM1IiwiNjU0MzYiLCI2NTQzNyIsIjY1NDM4IiwiNjU0MzkiLCI2NTQ0MCIsIjY1NDQxIiwiNjU0NDIiLCI2NTQ0MyIsIjY1NDQ0IiwiNjU0NDUiLCI2NTQ0NiIsIjY1NDQ3IiwiNjU0NDgiLCI2NTQ0OSIsIjY1NDUwIiwiNjU0NTEiLCI2NTQ1MiIsIjY1NDUzIiwiNjU0NTQiLCI2NTQ1NSIsIjY1NDU2IiwiNjU0NTciLCI2NTQ1OCIsIjY1NDU5IiwiNjU0NjAiLCI2NTQ2MSIsIjY1NDYyIiwiNjU0NjMiLCI2NTQ2NCIsIjY1NDY1IiwiNjU0NjYiLCI2NTQ2NyIsIjY1NDY4IiwiNjU0NjkiLCI2NTQ3MCIsIjY1NDc0IiwiNjU0NzUiLCI2NTQ3NiIsIjY1NDc3IiwiNjU0NzgiLCI2NTQ3OSIsIjY1NDgyIiwiNjU0ODMiLCI2NTQ4NCIsIjY1NDg1IiwiNjU0ODYiLCI2NTQ4NyIsIjY1NDkwIiwiNjU0OTEiLCI2NTQ5MiIsIjY1NDkzIiwiNjU0OTQiLCI2NTQ5NSIsIjY1NDk4IiwiNjU0OTkiLCI2NTUwMCIsIjY1NTA0IiwiNjU1MDUiLCI2NTUwNiIsIjY1NTA3IiwiNjU1MDgiLCI2NTUwOSIsIjY1NTEwIiwiNjU1MTIiLCI2NTUxMyIsIjY1NTE0IiwiNjU1MTUiLCI2NTUxNiIsIjY1NTE3IiwiNjU1MTgiLCJ1bm9ybSIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic2hpbUFwcGxpZWQiLCJfaHR0cCIsIl9zZW5kIiwiX3BhcnNlX3Byb3RvY29sIiwiX3JlY2VpdmUiLCJfZGVidWdEZWNvcmF0b3IiLCJERUZBVUxUX1VSTCIsIkRFRkFVTFRfVkVSU0lPTl9VUkwiLCJCcmlkZ2VUcmFuc3BvcnQiLCJuZXdlc3RWZXJzaW9uVXJsIiwiY29uZmlndXJlZCIsInN0b3BwZWQiLCJza2lwQ29udGVudFR5cGVIZWFkZXIiLCJfc2lsZW50SW5pdCIsImluZm9TIiwibmV3VmVyc2lvbiIsInQxIiwiX3JlZjQiLCJfY2FsbGVlNCIsInNpZ25lZERhdGEiLCJfY29udGV4dDQiLCJfcmVmNSIsIl9jYWxsZWU1Iiwib2xkIiwiZGV2aWNlc1MiLCJfY29udGV4dDUiLCJfcG9zdCIsIl9yZWY2IiwiX2NhbGxlZTYiLCJfY29udGV4dDYiLCJfcmVmNyIsIl9jYWxsZWU3IiwicHJldmlvdXNTdHIiLCJfY29udGV4dDciLCJfcmVmOCIsIl9jYWxsZWU4IiwiYWNxdWlyZVMiLCJfY29udGV4dDgiLCJfYWNxdWlyZU1peGVkIiwiX3JlZjkiLCJfY2FsbGVlOSIsIl9jb250ZXh0OSIsIl9yZWYxMCIsIl9jYWxsZWUxMCIsInJlc0RhdGEiLCJqc29uRGF0YSIsIl9jb250ZXh0MTAiLCJfeDE0IiwiX3gxNSIsIl9yZWYxMSIsIl9jYWxsZWUxMSIsIl9jb250ZXh0MTEiLCJfeDE2IiwiX3gxNyIsIl94MTgiLCJfeDE5IiwiX3JlZjEyIiwiX2NhbGxlZTEyIiwiX2NvbnRleHQxMiIsIl94MjAiLCJfeDIxIiwiaXNOb2RlIiwiX3R5cGVvZiIsImZldGNoT3B0aW9ucyIsInJlc1RleHQiLCJyZXNKc29uIiwid3JhcEJvZHkiLCJDb250ZW50LVR5cGUiLCJjb250ZW50VHlwZSIsIl9pc05vZGUiLCJPcmlnaW4iLCJwYXJzZVJlc3VsdCIsImNvbnZlcnRTZXNzaW9uIiwicGF0aFMiLCJ2ZW5kb3IiLCJWRVJTSU9OIiwiV0lSRV9UWVBFUyIsIlZBUklOVCIsIkJJVFM2NCIsIkxERUxJTSIsIlNUQVJUR1JPVVAiLCJFTkRHUk9VUCIsIkJJVFMzMiIsIlBBQ0tBQkxFX1dJUkVfVFlQRVMiLCJpbnQzMiIsIndpcmVUeXBlIiwidWludDMyIiwic2ludDMyIiwiaW50NjQiLCJ1aW50NjQiLCJzaW50NjQiLCJib29sIiwiZG91YmxlIiwiZml4ZWQzMiIsInNmaXhlZDMyIiwiZml4ZWQ2NCIsInNmaXhlZDY0IiwiZmxvYXQiLCJlbnVtIiwiZ3JvdXAiLCJJRF9NSU4iLCJJRF9NQVgiLCJMb25nIiwiY29udmVydEZpZWxkc1RvQ2FtZWxDYXNlIiwicG9wdWxhdGVBY2Nlc3NvcnMiLCJVdGlsIiwiRiIsIklTX05PREUiLCJYSFIiLCJYTUxIdHRwRmFjdG9yaWVzIiwiQWN0aXZlWE9iamVjdCIsIkxhbmciLCJPUEVOIiwiQ0xPU0UiLCJPUFRPUEVOIiwiT1BUQ0xPU0UiLCJPUFRFTkQiLCJFUVVBTCIsIkVORCIsIlNUUklOR09QRU4iLCJTVFJJTkdDTE9TRSIsIlNUUklOR09QRU5fU1EiLCJTVFJJTkdDTE9TRV9TUSIsIkNPUFRPUEVOIiwiQ09QVENMT1NFIiwiREVMSU0iLCJSVUxFIiwiVFlQRSIsIk5BTUUiLCJUWVBFREVGIiwiVFlQRVJFRiIsIkZRVFlQRVJFRiIsIk5VTUJFUiIsIk5VTUJFUl9ERUMiLCJOVU1CRVJfSEVYIiwiTlVNQkVSX09DVCIsIk5VTUJFUl9GTFQiLCJJRCIsIk5FR0lEIiwiV0hJVEVTUEFDRSIsIlNUUklORyIsIkJPT0wiLCJEb3RQcm90byIsIlRva2VuaXplciIsInJlYWRpbmdTdHJpbmciLCJzdHJpbmdFbmRzV2l0aCIsIlRva2VuaXplclByb3RvdHlwZSIsIl9yZWFkU3RyaW5nIiwidG9rZW4iLCJwZWVrIiwiUGFyc2VyIiwidG4iLCJQYXJzZXJQcm90b3R5cGUiLCJ0b3BMZXZlbCIsInBhY2thZ2UiLCJlbnVtcyIsInNlcnZpY2VzIiwiX3BhcnNlUGFja2FnZSIsIl9wYXJzZUltcG9ydCIsIl9wYXJzZU1lc3NhZ2UiLCJfcGFyc2VFbnVtIiwiX3BhcnNlT3B0aW9uIiwiX3BhcnNlU2VydmljZSIsIl9wYXJzZUV4dGVuZCIsIl9wYXJzZUlnbm9yZWRTdGF0ZW1lbnQiLCJfcGFyc2VOdW1iZXIiLCJfcGFyc2VTdHJpbmciLCJfcGFyc2VJZCIsInBrZyIsImltcG9ydGVkIiwia2V5d29yZCIsInN2YyIsInJwYyIsIl9wYXJzZVNlcnZpY2VSUEMiLCJmbGQiLCJpc0dyb3VwIiwiX3BhcnNlRmllbGRPcHRpb25zIiwiX3BhcnNlTWVzc2FnZUZpZWxkIiwiX3BhcnNlTWVzc2FnZU9uZU9mIiwiX3BhcnNlRXh0ZW5zaW9ucyIsImdycCIsImZpZWxkcyIsIl9wYXJzZUZpZWxkT3B0aW9uIiwiZW5tIiwiX3BhcnNlRW51bVZhbHVlIiwiYnVpbGRlciIsImNsYXNzTmFtZSIsIlRQcm90b3R5cGUiLCJmcW4iLCJwdHIiLCJpbmNsdWRlQ2xhc3MiLCJOYW1lc3BhY2UiLCJOYW1lc3BhY2VQcm90b3R5cGUiLCJnZXRDaGlsZHJlbiIsImFkZENoaWxkIiwiY2hpbGQiLCJnZXRDaGlsZCIsIk1lc3NhZ2UiLCJGaWVsZCIsIm9yaWdpbmFsTmFtZSIsIm5hbWVPcklkIiwicW4iLCJleGNsdWRlRmllbGRzIiwiYnVpbGRPcHQiLCJvcHQiLCJnZXRPcHRpb24iLCJleHRlbnNpb25zIiwiY2xhenoiLCJfZmllbGRzIiwiX2ZpZWxkc0J5SWQiLCJfZmllbGRzQnlOYW1lIiwiTWVzc2FnZVByb3RvdHlwZSIsInNraXBUaWxsR3JvdXBFbmQiLCJleHBlY3RlZElkIiwidGFnIiwicmVhZFZhcmludDMyIiwicmVhZFVpbnQ4IiwicmVidWlsZCIsIm9uZW9mcyIsIk9uZU9mIiwidmFyX2FyZ3MiLCJmaWVsZCIsInJlcGVhdGVkIiwicmVxdWlyZWQiLCJkZWZhdWx0VmFsdWUiLCIkc2V0IiwidmVyaWZ5VmFsdWUiLCIkYWRkIiwib25lb2YiLCIkZ2V0IiwiRXh0ZW5zaW9uRmllbGQiLCJOYW1lIiwic2V0dGVyIiwibm9WZXJpZnkiLCJpc05ldyIsImxlIiwiTEUiLCJmbGlwIiwiY2FsY3VsYXRlIiwiZW5jb2RlRGVsaW1pdGVkIiwid3JpdGVWYXJpbnQzMiIsImVuY29kZU5CIiwiZW5jb2RlNjQiLCJ0b0Jhc2U2NCIsImVuY29kZUhleCIsImluY2x1ZGVCaW5hcnlBc0Jhc2U2NCIsImNsb25lUmF3IiwiZGVjb2RlRGVsaW1pdGVkIiwiZGVjb2RlNjQiLCJkZWNvZGVIZXgiLCJFbnVtIiwiRXh0ZW5zaW9uIiwiZmllbGRNaXNzaW5nIiwiZXhwZWN0ZWRHcm91cEVuZElkIiwicnVsZSIsInJlc29sdmVkVHlwZSIsIl90b0NhbWVsQ2FzZSIsIiQwIiwiJDEiLCJGaWVsZFByb3RvdHlwZSIsIm1rTG9uZyIsInVuc2lnbmVkIiwiaGlnaCIsInNraXBSZXBlYXRlZCIsImlzQnl0ZUJ1ZmZlciIsIlZhbHVlIiwiZW5zdXJlQ2FwYWNpdHkiLCJlbmNvZGVWYWx1ZSIsInZhcmludExlbiIsImNhbGN1bGF0ZVZhcmludDMyIiwiY29udGVudHMiLCJ3cml0ZVZhcmludDY0Iiwid3JpdGVWYXJpbnQzMlppZ1phZyIsIndyaXRlVmFyaW50NjRaaWdaYWciLCJ3cml0ZVVpbnQ2NCIsIndyaXRlSW50NjQiLCJ3cml0ZUZsb2F0MzIiLCJ3cml0ZUZsb2F0NjQiLCJ3cml0ZVZTdHJpbmciLCJwcmV2T2Zmc2V0IiwiYmIiLCJuaSIsImNhbGN1bGF0ZVZhbHVlIiwiY2FsY3VsYXRlVmFyaW50NjQiLCJ6aWdaYWdFbmNvZGUzMiIsInppZ1phZ0VuY29kZTY0IiwiY2FsY3VsYXRlVVRGOEJ5dGVzIiwicmVhZFZhcmludDMyWmlnWmFnIiwicmVhZFZhcmludDY0IiwidG9VbnNpZ25lZCIsInJlYWRWYXJpbnQ2NFppZ1phZyIsInJlYWRVaW50NjQiLCJyZWFkSW50NjQiLCJyZWFkRmxvYXQiLCJyZWFkRG91YmxlIiwicmVhZFZTdHJpbmciLCJleHRlbnNpb24iLCJTZXJ2aWNlIiwicnBjSW1wbCIsIlNlcnZpY2VQcm90b3R5cGUiLCJSUENNZXRob2QiLCJyZXNvbHZlZFJlcXVlc3RUeXBlIiwicmVzb2x2ZWRSZXNwb25zZVR5cGUiLCJub3RBQnVmZmVyIiwiTWV0aG9kIiwicmVxdWVzdE5hbWUiLCJyZXNwb25zZU5hbWUiLCJyZXNvbHZlZCIsImZpbGVzIiwiaW1wb3J0Um9vdCIsIkJ1aWxkZXJQcm90b3R5cGUiLCJpc1ZhbGlkTWVzc2FnZSIsImRlZiIsImlkcyIsImlzVmFsaWRNZXNzYWdlRmllbGQiLCJpc1ZhbGlkRW51bSIsImlzVmFsaWRFeHRlbmQiLCJkZWZzIiwic3ViT2JqIiwiaXNWYWxpZFNlcnZpY2UiLCJmaWxlbmFtZSIsImRlbGltIiwicmVzZXRSb290IiwiaW1wb3J0RmlsZW5hbWUiLCIkMiIsInJlc29sdmVBbGwiLCJsb2FkUHJvdG8iLCJsb2FkSnNvbiIsInByb3RvRnJvbVN0cmluZyIsImxvYWRQcm90b0ZpbGUiLCJwcm90b0Zyb21GaWxlIiwibG9hZEpzb25GaWxlIiwibm9ybWFsaXplQXJyYXkiLCJhbGxvd0Fib3ZlUm9vdCIsInNwbGl0UGF0aFJlIiwicmVzb2x2ZWRQYXRoIiwicmVzb2x2ZWRBYnNvbHV0ZSIsInRyYWlsaW5nU2xhc2giLCJmcm9tUGFydHMiLCJ0b1BhcnRzIiwic2FtZVBhcnRzTGVuZ3RoIiwib3V0cHV0UGFydHMiLCJzZXAiLCJkZWxpbWl0ZXIiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJleHRuYW1lIiwiY2FwYWNpdHkiLCJERUZBVUxUX0NBUEFDSVRZIiwiREVGQVVMVF9FTkRJQU4iLCJERUZBVUxUX05PQVNTRVJUIiwidmlldyIsIm1hcmtlZE9mZnNldCIsIkxJVFRMRV9FTkRJQU4iLCJCSUdfRU5ESUFOIiwiQnl0ZUJ1ZmZlclByb3RvdHlwZSIsInN0cmluZ0Zyb21DaGFyQ29kZSIsInN0cmluZ1NvdXJjZSIsInN0cmluZ0Rlc3RpbmF0aW9uIiwicHMiLCJhbGxvY2F0ZSIsImJpIiwiZnJvbUJhc2U2NCIsImZyb21CaW5hcnkiLCJmcm9tVVRGOCIsImZyb21EZWJ1ZyIsInNldFVpbnQ4IiwiY2FwYWNpdHkwIiwicmVzaXplIiwic2V0SW50OCIsImdldEludDgiLCJ3cml0ZVVpbnQ4IiwiY2FwYWNpdHkxIiwiZ2V0VWludDgiLCJjYXBhY2l0eTIiLCJzZXRJbnQxNiIsIndyaXRlU2hvcnQiLCJyZWFkSW50MTYiLCJnZXRJbnQxNiIsInJlYWRTaG9ydCIsImNhcGFjaXR5MyIsInNldFVpbnQxNiIsImdldFVpbnQxNiIsImNhcGFjaXR5NCIsInNldEludDMyIiwid3JpdGVJbnQiLCJnZXRJbnQzMiIsInJlYWRJbnQiLCJjYXBhY2l0eTUiLCJzZXRVaW50MzIiLCJnZXRVaW50MzIiLCJjYXBhY2l0eTYiLCJ3cml0ZUxvbmciLCJyZWFkTG9uZyIsImNhcGFjaXR5NyIsImNhcGFjaXR5OCIsInNldEZsb2F0MzIiLCJyZWFkRmxvYXQzMiIsImdldEZsb2F0MzIiLCJjYXBhY2l0eTkiLCJzZXRGbG9hdDY0IiwicmVhZEZsb2F0NjQiLCJnZXRGbG9hdDY0IiwiTUFYX1ZBUklOVDMyX0JZVEVTIiwiemlnWmFnRGVjb2RlMzIiLCJjYXBhY2l0eTEwIiwidGVtcCIsImlvZmZzZXQiLCJNQVhfVkFSSU5UNjRfQllURVMiLCJwYXJ0MCIsInRvSW50IiwicGFydDEiLCJzaGlmdFJpZ2h0VW5zaWduZWQiLCJwYXJ0MiIsInRvU2lnbmVkIiwiemlnWmFnRGVjb2RlNjQiLCJjYXBhY2l0eTExIiwiZnJvbUJpdHMiLCJ3cml0ZUNTdHJpbmciLCJ1dGZ4IiwiY2FsY3VsYXRlVVRGMTZhc1VURjgiLCJjYXBhY2l0eTEyIiwiZW5jb2RlVVRGMTZ0b1VURjgiLCJyZWFkQ1N0cmluZyIsInNkIiwiZGVjb2RlVVRGOHRvVVRGMTYiLCJ3cml0ZUlTdHJpbmciLCJjYXBhY2l0eTEzIiwicmVhZElTdHJpbmciLCJNRVRSSUNTX0NIQVJTIiwiTUVUUklDU19CWVRFUyIsIndyaXRlVVRGOFN0cmluZyIsImNhcGFjaXR5MTQiLCJ3cml0ZVN0cmluZyIsImNhbGN1bGF0ZVVURjhDaGFycyIsInJlYWRVVEY4U3RyaW5nIiwibWV0cmljcyIsImRlY29kZVVURjgiLCJVVEY4dG9VVEYxNiIsInJlYWRTdHJpbmciLCJjYXBhY2l0eTE1IiwiY2FwYWNpdHkxNiIsImFwcGVuZFRvIiwiY29tcGFjdCIsImJlZ2luIiwidGFyZ2V0T2Zmc2V0Iiwic291cmNlT2Zmc2V0Iiwic291cmNlTGltaXQiLCJ0YXJnZXRSZWxhdGl2ZSIsIm9yZGVyIiwiQkUiLCJiaWdFbmRpYW4iLCJwcmVwZW5kIiwiYXJyYXlWaWV3IiwicHJlcGVuZFRvIiwicHJpbnREZWJ1ZyIsInRvRGVidWciLCJza2lwIiwiZm9yY2VDb3B5IiwidG9VVEY4IiwidG9CaW5hcnkiLCJ0b0NvbHVtbnMiLCJseGl2IiwiYW91dCIsImFpbiIsInQyIiwiYnRvYSIsImNoYXJDb2RlIiwiY29sdW1ucyIsImFzYyIsImhvIiwiaG0iLCJNQVhfQ09ERVBPSU5UIiwiZW5jb2RlVVRGOCIsIlVURjE2dG9VVEY4IiwiYzEiLCJjMiIsImNhbGN1bGF0ZUNvZGVQb2ludCIsImNhbGN1bGF0ZVVURjgiLCJsb2FkQnl0ZUJ1ZmZlciIsIl9fV0VCUEFDS19BTURfREVGSU5FX0ZBQ1RPUllfXyIsIl9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18iLCJfX2lzTG9uZ19fIiwiaXNMb25nIiwiSU5UX0NBQ0hFIiwiVUlOVF9DQUNIRSIsImNhY2hlZE9iaiIsIlRXT19QV1JfNjNfREJMIiwiTUlOX1ZBTFVFIiwiTUFYX1ZBTFVFIiwiVFdPX1BXUl82NF9EQkwiLCJNQVhfVU5TSUdORURfVkFMVUUiLCJUV09fUFdSXzMyX0RCTCIsInJhZGl4VG9Qb3dlciIsInBvd2VyIiwiZnJvbVZhbHVlIiwiVFdPX1BXUl8xNl9EQkwiLCJUV09fUFdSXzI0IiwiVVpFUk8iLCJVT05FIiwiTkVHX09ORSIsInRvTnVtYmVyIiwicmFkaXhMb25nIiwiZGl2IiwicmVtRGl2IiwiZ2V0SGlnaEJpdHMiLCJnZXRIaWdoQml0c1Vuc2lnbmVkIiwiZ2V0TG93Qml0cyIsImdldExvd0JpdHNVbnNpZ25lZCIsImdldE51bUJpdHNBYnMiLCJsZXNzVGhhbiIsImxlc3NUaGFuT3JFcXVhbCIsImx0ZSIsImdyZWF0ZXJUaGFuIiwiZ3JlYXRlclRoYW5PckVxdWFsIiwiZ3RlIiwidGhpc05lZyIsIm90aGVyTmVnIiwiYWRkZW5kIiwiYTQ4IiwiYTMyIiwiYTE2IiwiYTAwIiwiYjQ4IiwiYjMyIiwiYjE2IiwiYzQ4IiwiYzMyIiwiYzE2IiwiYzAwIiwic3VidHJhaGVuZCIsIm11bHRpcGxpZXIiLCJiMDAiLCJhcHByb3giLCJsb2cyIiwiZGVsdGEiLCJhcHByb3hSZXMiLCJhcHByb3hSZW0iLCJudW1CaXRzIiwic2hsIiwic2hyIiwic2hydSIsImZpbGVUb0pTT04iLCJtZXNzYWdlc1NpbXBsZSIsIm1lc3NhZ2VfdHlwZSIsIm1lc3NhZ2VUb0pTT04iLCJtZXNzYWdlc1JlZiIsImV4dGVuZGVlIiwiZmllbGRUb0pTT04iLCJleHRlbnNpb25Ub0pTT04iLCJlbnVtX3R5cGUiLCJlbnVtVG9KU09OIiwiZW51bW0iLCJlbnVtX3ZhbHVlVG9KU09OIiwic2hpbSIsInR5cGVfbWFwIiwiMTAiLCIxMSIsIjEyIiwiMTMiLCIxNCIsIjE1IiwiMTYiLCIxNyIsIjE4IiwidHlwZV9uYW1lIiwiZ2V0UG9seWZpbGwiLCJpc0FyZ3MiLCJoYXNEb250RW51bUJ1ZyIsImhhc1Byb3RvRW51bUJ1ZyIsImRvbnRFbnVtcyIsImVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlIiwiZXhjbHVkZWRLZXlzIiwiJGFwcGxpY2F0aW9uQ2FjaGUiLCIkY29uc29sZSIsIiRleHRlcm5hbCIsIiRmcmFtZSIsIiRmcmFtZUVsZW1lbnQiLCIkZnJhbWVzIiwiJGlubmVySGVpZ2h0IiwiJGlubmVyV2lkdGgiLCIkb3V0ZXJIZWlnaHQiLCIkb3V0ZXJXaWR0aCIsIiRwYWdlWE9mZnNldCIsIiRwYWdlWU9mZnNldCIsIiRwYXJlbnQiLCIkc2Nyb2xsTGVmdCIsIiRzY3JvbGxUb3AiLCIkc2Nyb2xsWCIsIiRzY3JvbGxZIiwiJHNlbGYiLCIkd2Via2l0SW5kZXhlZERCIiwiJHdlYmtpdFN0b3JhZ2VJbmZvIiwiJHdpbmRvdyIsImhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1ZyIsImtleXNTaGltIiwidGhlS2V5cyIsInNraXBQcm90byIsInNraXBDb25zdHJ1Y3RvciIsImVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneSIsIm9yaWdpbmFsS2V5cyIsImNhbGxlZSIsIkVTMjAxNSIsIkVTMjAxNiIsIlNhbWVWYWx1ZU5vbk51bWJlciIsIlNhbWVWYWx1ZSIsInRvUHJpbWl0aXZlIiwiR2V0SW50cmluc2ljIiwiJFR5cGVFcnJvciIsIiRTeW50YXhFcnJvciIsIiRBcnJheSIsIiRTdHJpbmciLCIkT2JqZWN0IiwiJE51bWJlciIsIiRSZWdFeHAiLCIkaXNGaW5pdGUiLCJwYXJzZUludGVnZXIiLCJhcnJheVNsaWNlIiwic3RyU2xpY2UiLCJpc0JpbmFyeSIsImlzT2N0YWwiLCJyZWdleEV4ZWMiLCJub25XU3JlZ2V4IiwiaGFzTm9uV1MiLCJpc0ludmFsaWRIZXhMaXRlcmFsIiwiJGNoYXJDb2RlQXQiLCIkZmxvb3IiLCIkYWJzIiwiJE9iamVjdENyZWF0ZSIsIiRnT1BEIiwiJGlzRXh0ZW5zaWJsZSIsImlzRXh0ZW5zaWJsZSIsIndzIiwidHJpbVJlZ2V4IiwiRVM1IiwiaGFzUmVnRXhwTWF0Y2hlciIsIkVTNiIsIkNhbGwiLCJWIiwiSXNDYWxsYWJsZSIsIlRvUHJpbWl0aXZlIiwiVG9OdW1iZXIiLCJhcmd1bWVudCIsInRyaW1tZWQiLCJUb0ludDE2IiwiaW50MTZiaXQiLCJUb1VpbnQxNiIsIlRvSW50OCIsImludDhiaXQiLCJUb1VpbnQ4IiwicG9zSW50IiwiVG9VaW50OENsYW1wIiwiVG9TdHJpbmciLCJUb09iamVjdCIsIlRvUHJvcGVydHlLZXkiLCJUb0xlbmd0aCIsIlRvSW50ZWdlciIsIkNhbm9uaWNhbE51bWVyaWNJbmRleFN0cmluZyIsIkNoZWNrT2JqZWN0Q29lcmNpYmxlIiwiSXNBcnJheSIsIklzQ29uc3RydWN0b3IiLCJJc0V4dGVuc2libGUiLCJwcmV2ZW50RXh0ZW5zaW9ucyIsIklzSW50ZWdlciIsIklzUHJvcGVydHlLZXkiLCJJc1JlZ0V4cCIsIlRvQm9vbGVhbiIsIlNhbWVWYWx1ZVplcm8iLCJHZXRWIiwiUCIsIkdldE1ldGhvZCIsIkdldCIsIlNwZWNpZXNDb25zdHJ1Y3RvciIsImRlZmF1bHRDb25zdHJ1Y3RvciIsIkMiLCJTIiwiQ29tcGxldGVQcm9wZXJ0eURlc2NyaXB0b3IiLCJEZXNjIiwiSXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJJc0dlbmVyaWNEZXNjcmlwdG9yIiwiSXNEYXRhRGVzY3JpcHRvciIsIlRocm93IiwiSGFzT3duUHJvcGVydHkiLCJIYXNQcm9wZXJ0eSIsIklzQ29uY2F0U3ByZWFkYWJsZSIsImlzQ29uY2F0U3ByZWFkYWJsZSIsInNwcmVhZGFibGUiLCJJbnZva2UiLCJhcmd1bWVudHNMaXN0IiwiR2V0SXRlcmF0b3IiLCJhY3R1YWxNZXRob2QiLCJJdGVyYXRvck5leHQiLCJJdGVyYXRvckNvbXBsZXRlIiwiaXRlclJlc3VsdCIsIkl0ZXJhdG9yVmFsdWUiLCJJdGVyYXRvclN0ZXAiLCJJdGVyYXRvckNsb3NlIiwiY29tcGxldGlvblJlY29yZCIsImNvbXBsZXRpb25UaHVuayIsIml0ZXJhdG9yUmV0dXJuIiwiaW5uZXJSZXN1bHQiLCJDcmVhdGVJdGVyUmVzdWx0T2JqZWN0IiwiUmVnRXhwRXhlYyIsIkFycmF5U3BlY2llc0NyZWF0ZSIsIm9yaWdpbmFsQXJyYXkiLCJDcmVhdGVEYXRhUHJvcGVydHkiLCJvbGREZXNjIiwiZXh0ZW5zaWJsZSIsIm5ld0Rlc2MiLCJDcmVhdGVEYXRhUHJvcGVydHlPclRocm93Iiwic3VjY2VzcyIsIk9iamVjdENyZWF0ZSIsImludGVybmFsU2xvdHNMaXN0IiwiQWR2YW5jZVN0cmluZ0luZGV4IiwidW5pY29kZSIsInNlY29uZCIsImJvdW5kIiwiYm91bmRMZW5ndGgiLCJib3VuZEFyZ3MiLCJFbXB0eSIsImlzQ2FsbGFibGUiLCJleG90aWNUb1ByaW0iLCJoaW50IiwibWV0aG9kTmFtZXMiLCJvcmRpbmFyeVRvUHJpbWl0aXZlIiwiZ2V0RGF5IiwidHJ5RGF0ZU9iamVjdCIsInN5bVRvU3RyIiwic3ltU3RyaW5nUmVnZXgiLCJpc1N5bWJvbE9iamVjdCIsIm9yaWdTeW1ib2wiLCJoYXNTeW1ib2xTaGFtIiwic3ltIiwic3ltT2JqIiwic3ltcyIsIlRvSW50MzIiLCJUb1VpbnQzMiIsIm9wdE1lc3NhZ2UiLCJhbGxvd2VkIiwiW1tDb25maWd1cmFibGVdXSIsIltbRW51bWVyYWJsZV1dIiwiW1tHZXRdXSIsIltbU2V0XV0iLCJbW1ZhbHVlXV0iLCJbW1dyaXRhYmxlXV0iLCJpc0RhdGEiLCJJc0FjY2Vzc29yIiwiSXNBY2Nlc3NvckRlc2NyaXB0b3IiLCJGcm9tUHJvcGVydHlEZXNjcmlwdG9yIiwiVG9Qcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmoiLCJFUzVpbnRlcm5hbFNsb3RzIiwiYWN0dWFsSGludCIsImdPUEQiLCJ0cnlSZWdleEV4ZWNDYWxsIiwicGFja2VkIiwiamF2YV9wYWNrYWdlIiwiamF2YV9vdXRlcl9jbGFzc25hbWUiLCJvcHRpbWl6ZV9mb3IiLCJNZXNzYWdlSW5mbyIsIl9tZXNzYWdlSW5mbyIsIm1lc3NhZ2VDb25zdHJ1Y3RvciIsImNvbnZlcnRlZCIsIm1ldGEiLCIkdHlwZSIsIl9sb29wIiwiZGVjb2RlZEFyciIsImVudW1WYWx1ZXMiLCJfZGVjb2RlZE1lc3NhZ2UiLCJfbW9ua2V5X3BhdGNoIiwiX2RlZmVyZWQiLCJfc2hhcmVkQ29ubmVjdGlvbldvcmtlciIsInBhdGNoIiwic3RhYmxlU3RyaW5naWZ5IiwicHVyZURldmljZXMiLCJMb3dsZXZlbFRyYW5zcG9ydFdpdGhTaGFyZWRDb25uZWN0aW9ucyIsImRlZmVyZWREZWJ1Z09uUmVsZWFzZSIsImRlZmVyZWROb3JtYWxPblJlbGVhc2UiLCJfbGFzdFN0cmluZ2lmaWVkIiwibGF0ZXN0SWQiLCJkZWZlcmVkcyIsIl9zaGFyZWRXb3JrZXJGYWN0b3J5IiwiYWxsb3dzV3JpdGVBbmRFbnVtZXJhdGUiLCJfc2lsZW50RW51bWVyYXRlIiwic2Vzc2lvbnNNIiwibm9ybWFsU2Vzc2lvbnMiLCJkZXZpY2VzV2l0aFNlc3Npb25zIiwic2VuZFRvV29ya2VyIiwiX3JlbGVhc2VEaXNjb25uZWN0ZWQiLCJfcmVsZWFzZUNsZWFudXAiLCJvbGRTdHJpbmdpZmllZCIsIl9ydW5JdGVyIiwiaXRlcmF0aW9uIiwic3RyaW5naWZpZWQiLCJtZXNzQmFjayIsIm1lc3NCYWNrMiIsIm90aGVyU2Vzc2lvbiIsImNvbm5lY3QiLCJtZXNzYmFjayIsImRpc2Nvbm5lY3QiLCJyZWNlaXZlIiwiaW5zaWRlIiwic2Vzc2lvbnNNTSIsInBhdGhfIiwicmVzUHJvbWlzZSIsImRlZmVyZWQiLCJrcGF0aCIsInJhY2UiLCJjYWxsSW5zaWRlIiwiX3NlbmRMb3dsZXZlbCIsIl9yZWNlaXZlTG93bGV2ZWwiLCJkb1dpdGhTZXNzaW9uIiwiX3gyMiIsIl9jYWxsZWUxMyIsIl9jb250ZXh0MTMiLCJfcmVmMTMiLCJfeDI1IiwiX3gyMyIsIl94MjQiLCJfcmVmMTQiLCJfY2FsbGVlMTQiLCJfY29udGV4dDE0Iiwic2hhcmVkV29ya2VyIiwicmVjZWl2ZUZyb21Xb3JrZXIiLCJfeDI2IiwiX3JlZjE1IiwiX2NhbGxlZTE1IiwiX2NvbnRleHQxNSIsInBvc3RNb2R1bGVNZXNzYWdlIiwicGF0Y2hlZCIsInZlcmlmeVZhbHVlT3JpZ2luYWwiLCJuZXdWYWx1ZSIsImhhbmRsZU1lc3NhZ2UiLCJvbmNvbm5lY3QiLCJwb3J0cyIsIndhaXRQcm9taXNlIiwic3RhcnRMb2NrIiwibmV3TG9jayIsInJlbGVhc2VMb2NrIiwid2FpdEZvckxvY2siLCJ3YWl0SW5RdWV1ZSIsInRoaXNUYWJsZSIsIm90aGVyVGFibGUiLCJyZWFsUHJldmlvdXMiLCJzZW5kQmFjayIsImdvb2QiLCJsYXN0U2Vzc2lvbiIsImhhbmRsZUFjcXVpcmVJbnRlbnQiLCJoYW5kbGVBY3F1aXJlRG9uZSIsImhhbmRsZUFjcXVpcmVGYWlsZWQiLCJoYW5kbGVHZXRTZXNzaW9ucyIsImhhbmRsZVJlbGVhc2VPbkNsb3NlIiwiX2RlYnVnIiwib3RoZXJTZXNzaW9ucyIsImhhbmRsZVJlbGVhc2VJbnRlbnQiLCJoYW5kbGVSZWxlYXNlRG9uZSIsImhhbmRsZUVudW1lcmF0ZUludGVudCIsImNtcCIsInNwYWNlIiwiY3ljbGVzIiwicmVwbGFjZXIiLCJhb2JqIiwiYm9iaiIsImxldmVsIiwiaW5kZW50IiwiY29sb25TZXBhcmF0b3IiLCJrZXlWYWx1ZSIsImF0IiwiZXNjYXBlZSIsIlwiIiwiXFwiLCIvIiwidWZmZmYiLCJyZXZpdmVyIiwid2FsayIsImdhcCIsInJlcCIsImVzY2FwYWJsZSIsIlxiIiwiXHQiLCJcbiIsIlxmIiwiXHIiLCJxdW90ZSIsInBhcnRpYWwiLCJtaW5kIiwiRmFsbGJhY2tUcmFuc3BvcnQiLCJ0cmFuc3BvcnRzIiwibGFzdEVycm9yIiwiX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjIiLCJfZGlkSXRlcmF0b3JFcnJvcjIiLCJfaXRlcmF0b3JFcnJvcjIiLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX2F2YWlsYWJsZVRyYW5zcG9ydHMiLCJfdHJ5SW5pdFRyYW5zcG9ydHMiLCJfdHJ5Q29uZmlndXJlVHJhbnNwb3J0cyIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zIiwiX2RpZEl0ZXJhdG9yRXJyb3IzIiwiX2l0ZXJhdG9yRXJyb3IzIiwiX3N0ZXAzIiwiX2l0ZXJhdG9yMyIsIl9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240IiwiX2RpZEl0ZXJhdG9yRXJyb3I0IiwiX2l0ZXJhdG9yRXJyb3I0IiwiX3N0ZXA0IiwiX2l0ZXJhdG9yNCIsIl9ldmVudHMyIiwiVFJFWk9SX0RFU0NTIiwidmVuZG9ySWQiLCJwcm9kdWN0SWQiLCJDT05GSUdVUkFUSU9OX0lEIiwiSU5URVJGQUNFX0lEIiwiRU5EUE9JTlRfSUQiLCJERUJVR19JTlRFUkZBQ0VfSUQiLCJERUJVR19FTkRQT0lOVF9JRCIsIldlYlVzYlBsdWdpbiIsImNvbmZpZ3VyYXRpb25JZCIsIm5vcm1hbEludGVyZmFjZUlkIiwibm9ybWFsRW5kcG9pbnRJZCIsImRlYnVnSW50ZXJmYWNlSWQiLCJkZWJ1Z0VuZHBvaW50SWQiLCJfbGFzdERldmljZXMiLCJ1c2IiLCJpZmFjZSIsImNvbmZpZ3VyYXRpb25zIiwiaW50ZXJmYWNlcyIsImFsdGVybmF0ZXMiLCJpbnRlcmZhY2VDbGFzcyIsImVuZHBvaW50cyIsImVuZHBvaW50TnVtYmVyIiwiYm9vdGxvYWRlcklkIiwidHJlem9yRGV2aWNlcyIsImhpZERldmljZXMiLCJub25IaWREZXZpY2VzIiwib2xkVW5yZWFkYWJsZUhpZERldmljZSIsImdldERldmljZXMiLCJfZGV2aWNlSXNIaWQiLCJzZXJpYWxOdW1iZXIiLCJfZGV2aWNlSGFzRGVidWdMaW5rIiwiX2xpc3REZXZpY2VzIiwiZGV2aWNlTyIsImVuZHBvaW50IiwiX2ZpbmREZXZpY2UiLCJvcGVuZWQiLCJ0cmFuc2Zlck91dCIsInRyYW5zZmVySW4iLCJfcmV0IiwiX2Nvbm5lY3RJbiIsImludGVyZmFjZUlkIiwic2VsZWN0Q29uZmlndXJhdGlvbiIsImNsYWltSW50ZXJmYWNlIiwicmVsZWFzZUludGVyZmFjZSIsImZpbHRlcnMiLCJyZXNvbHZlX3VybCIsInpsaWIiLCJGZXRjaCIsImNvbXByZXNzIiwiYWdlbnQiLCJnZXRMZW5ndGhTeW5jIiwiX2xlbmd0aFJldHJpZXZlcnMiLCJoYXNLbm93bkxlbmd0aCIsInJlcVRpbWVvdXQiLCJzb2NrZXQiLCJpc1JlZGlyZWN0IiwiZm9sbG93IiwicmVzcG9uc2Vfb3B0aW9ucyIsImNyZWF0ZUd1bnppcCIsImNyZWF0ZUluZmxhdGUiLCJjcmVhdGVJbmZsYXRlUmF3Iiwibm9kZVR5cGUiLCJmcmVlR2xvYmFsIiwibWF4SW50IiwidE1pbiIsInRNYXgiLCJza2V3IiwiZGFtcCIsImluaXRpYWxCaWFzIiwiaW5pdGlhbE4iLCJyZWdleFB1bnljb2RlIiwicmVnZXhOb25BU0NJSSIsInJlZ2V4U2VwYXJhdG9ycyIsImVycm9ycyIsIm92ZXJmbG93Iiwibm90LWJhc2ljIiwiaW52YWxpZC1pbnB1dCIsImJhc2VNaW51c1RNaW4iLCJtYXBEb21haW4iLCJ1Y3MyZGVjb2RlIiwiZXh0cmEiLCJ1Y3MyZW5jb2RlIiwiZGlnaXRUb0Jhc2ljIiwiYWRhcHQiLCJudW1Qb2ludHMiLCJmaXJzdFRpbWUiLCJiYXNpYyIsIm9sZGkiLCJiYXNlTWludXNUIiwiaW5wdXRMZW5ndGgiLCJiaWFzIiwiaGFuZGxlZENQQ291bnQiLCJiYXNpY0xlbmd0aCIsImN1cnJlbnRWYWx1ZSIsImhhbmRsZWRDUENvdW50UGx1c09uZSIsInFNaW51c1QiLCJ1Y3MyIiwidG9Vbmljb2RlIiwicXMiLCJtYXhLZXlzIiwia3N0ciIsInZzdHIiLCJzdHJpbmdpZnlQcmltaXRpdmUiLCJrcyIsInByZWZlckJpbmFyeSIsIl9vcHRzIiwiX2JvZHkiLCJzZXRIZWFkZXIiLCJ1c2VGZXRjaCIsImRlY2lkZU1vZGUiLCJfZmV0Y2hUaW1lciIsIl9vbkZpbmlzaCIsImxvd2VyTmFtZSIsInVuc2FmZUhlYWRlcnMiLCJnZXRIZWFkZXIiLCJyZW1vdmVIZWFkZXIiLCJoZWFkZXJzT2JqIiwiaGVhZGVyc0xpc3QiLCJrZXlOYW1lIiwic2lnbmFsIiwiY29udHJvbGxlciIsIl9mZXRjaEFib3J0Q29udHJvbGxlciIsInJlcXVlc3RUaW1lb3V0IiwiX2Nvbm5lY3QiLCJyZWFzb24iLCJvbnRpbWVvdXQiLCJfcmVzcG9uc2UiLCJzdGF0dXNWYWxpZCIsImZsdXNoSGVhZGVycyIsInNldE5vRGVsYXkiLCJzZXRTb2NrZXRLZWVwQWxpdmUiLCJhcnJheUNvcHkiLCIyMDgiLCIzMDUiLCI0MDAiLCI0MDEiLCI0MDIiLCI0MDMiLCI0MDQiLCI0MDUiLCI0MDYiLCI0MDciLCI0MDgiLCI0MDkiLCI0MTAiLCI0MTEiLCI0MTIiLCI0MTMiLCI0MTQiLCI0MTUiLCI0MTgiLCI0MjEiLCI0MjIiLCI0MjMiLCI0MjQiLCI0MjUiLCI0MjYiLCI0MjgiLCI0MjkiLCI0NTEiLCI1MDIiLCI1MDMiLCJ2YWxpZGF0ZVBhcmFtcyIsInBhcmFtcyIsImtSYW5nZUVycm9yTWVzc2FnZSIsIlpfTUlOX1dJTkRPV0JJVFMiLCJaX01BWF9XSU5ET1dCSVRTIiwiWl9ERUZBVUxUX1dJTkRPV0JJVFMiLCJaX01JTl9DSFVOSyIsIlpfTUFYX0NIVU5LIiwiWl9ERUZBVUxUX0NIVU5LIiwiWl9NSU5fTUVNTEVWRUwiLCJaX01BWF9NRU1MRVZFTCIsIlpfREVGQVVMVF9NRU1MRVZFTCIsIlpfTUlOX0xFVkVMIiwiWl9NQVhfTEVWRUwiLCJaX0RFRkFVTFRfTEVWRUwiLCJaX0RFRkFVTFRfQ09NUFJFU1NJT04iLCJia2V5cyIsImJrIiwiYmtleSIsImNvZGVzIiwiWl9PSyIsIlpfU1RSRUFNX0VORCIsIlpfTkVFRF9ESUNUIiwiWl9FUlJOTyIsIlpfU1RSRUFNX0VSUk9SIiwiWl9EQVRBX0VSUk9SIiwiWl9NRU1fRVJST1IiLCJaX0JVRl9FUlJPUiIsIlpfVkVSU0lPTl9FUlJPUiIsImNrZXlzIiwiY2siLCJja2V5IiwiemxpYkJ1ZmZlciIsImVuZ2luZSIsIm5yZWFkIiwib25FbmQiLCJ6bGliQnVmZmVyU3luYyIsImZsdXNoRmxhZyIsIl9maW5pc2hGbHVzaEZsYWciLCJfcHJvY2Vzc0NodW5rIiwiRGVmbGF0ZSIsIlpsaWIiLCJERUZMQVRFIiwiSW5mbGF0ZSIsIklORkxBVEUiLCJHemlwIiwiR1pJUCIsIkd1bnppcCIsIkdVTlpJUCIsIkRlZmxhdGVSYXciLCJERUZMQVRFUkFXIiwiSW5mbGF0ZVJhdyIsIklORkxBVEVSQVciLCJVbnppcCIsIlVOWklQIiwiaXNWYWxpZEZsdXNoRmxhZyIsIlpfTk9fRkxVU0giLCJaX1BBUlRJQUxfRkxVU0giLCJaX1NZTkNfRkxVU0giLCJaX0ZVTExfRkxVU0giLCJaX0ZJTklTSCIsIlpfQkxPQ0siLCJfY2h1bmtTaXplIiwiZmluaXNoRmx1c2giLCJfZmx1c2hGbGFnIiwid2luZG93Qml0cyIsIm1lbUxldmVsIiwiWl9GSUxURVJFRCIsIlpfSFVGRk1BTl9PTkxZIiwiWl9STEUiLCJaX0ZJWEVEIiwiWl9ERUZBVUxUX1NUUkFURUdZIiwiZGljdGlvbmFyeSIsIl9oYW5kbGUiLCJfaGFkRXJyb3IiLCJfY2xvc2UiLCJfYnVmZmVyIiwiX29mZnNldCIsIl9sZXZlbCIsIl9zdHJhdGVneSIsImVtaXRDbG9zZU5UIiwiZnJlZXplIiwiY3JlYXRlRGVmbGF0ZSIsImNyZWF0ZURlZmxhdGVSYXciLCJjcmVhdGVHemlwIiwiY3JlYXRlVW56aXAiLCJkZWZsYXRlIiwiZGVmbGF0ZVN5bmMiLCJnemlwIiwiZ3ppcFN5bmMiLCJkZWZsYXRlUmF3IiwiZGVmbGF0ZVJhd1N5bmMiLCJ1bnppcCIsInVuemlwU3luYyIsImluZmxhdGUiLCJpbmZsYXRlU3luYyIsImd1bnppcCIsImd1bnppcFN5bmMiLCJpbmZsYXRlUmF3IiwiaW5mbGF0ZVJhd1N5bmMiLCJraW5kIiwiYXZhaWxJbkJlZm9yZSIsImF2YWlsT3V0QmVmb3JlIiwiaW5PZmYiLCJ3cml0ZVN5bmMiLCJhdmFpbEluQWZ0ZXIiLCJhdmFpbE91dEFmdGVyIiwiaGF2ZSIsIm5ld1JlcSIsIlpzdHJlYW0iLCJ6bGliX2RlZmxhdGUiLCJ6bGliX2luZmxhdGUiLCJOT05FIiwiaW5pdF9kb25lIiwid3JpdGVfaW5fcHJvZ3Jlc3MiLCJwZW5kaW5nX2Nsb3NlIiwiZ3ppcF9pZF9ieXRlc19yZWFkIiwiZGVmbGF0ZUVuZCIsInN0cm0iLCJpbmZsYXRlRW5kIiwiaW5fb2ZmIiwiaW5fbGVuIiwib3V0X29mZiIsIm91dF9sZW4iLCJhdmFpbF9pbiIsIm5leHRfaW4iLCJhdmFpbF9vdXQiLCJuZXh0X291dCIsIl9wcm9jZXNzIiwiX2NoZWNrRXJyb3IiLCJfYWZ0ZXJTeW5jIiwiX2FmdGVyIiwibmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSIsImluZmxhdGVTZXREaWN0aW9uYXJ5IiwiX2Vycm9yIiwiX2luaXQiLCJfc2V0RGljdGlvbmFyeSIsIl9yZXNldCIsImRlZmxhdGVJbml0MiIsIlpfREVGTEFURUQiLCJpbmZsYXRlSW5pdDIiLCJkZWZsYXRlU2V0RGljdGlvbmFyeSIsImRlZmxhdGVSZXNldCIsImluZmxhdGVSZXNldCIsInRvdGFsX2luIiwidG90YWxfb3V0IiwiZGF0YV90eXBlIiwiY29uZmlndXJhdGlvbl90YWJsZSIsInV0aWxzIiwidHJlZXMiLCJhZGxlcjMyIiwiY3JjMzIiLCJaX1VOS05PV04iLCJNQVhfTUVNX0xFVkVMIiwiTUFYX1dCSVRTIiwiREVGX01FTV9MRVZFTCIsIkxfQ09ERVMiLCJMSVRFUkFMUyIsIkRfQ09ERVMiLCJCTF9DT0RFUyIsIkhFQVBfU0laRSIsIk1BWF9CSVRTIiwiTUlOX01BVENIIiwiTUFYX01BVENIIiwiTUlOX0xPT0tBSEVBRCIsIlBSRVNFVF9ESUNUIiwiSU5JVF9TVEFURSIsIkVYVFJBX1NUQVRFIiwiTkFNRV9TVEFURSIsIkNPTU1FTlRfU1RBVEUiLCJIQ1JDX1NUQVRFIiwiQlVTWV9TVEFURSIsIkZJTklTSF9TVEFURSIsIkJTX05FRURfTU9SRSIsIkJTX0JMT0NLX0RPTkUiLCJCU19GSU5JU0hfU1RBUlRFRCIsIkJTX0ZJTklTSF9ET05FIiwiT1NfQ09ERSIsImVycm9yQ29kZSIsInJhbmsiLCJmbHVzaF9wZW5kaW5nIiwicGVuZGluZyIsInBlbmRpbmdfYnVmIiwicGVuZGluZ19vdXQiLCJmbHVzaF9ibG9ja19vbmx5IiwiX3RyX2ZsdXNoX2Jsb2NrIiwiYmxvY2tfc3RhcnQiLCJzdHJzdGFydCIsInB1dF9ieXRlIiwicHV0U2hvcnRNU0IiLCJsb25nZXN0X21hdGNoIiwiY3VyX21hdGNoIiwiY2hhaW5fbGVuZ3RoIiwibWF4X2NoYWluX2xlbmd0aCIsInNjYW4iLCJiZXN0X2xlbiIsInByZXZfbGVuZ3RoIiwibmljZV9tYXRjaCIsIndfc2l6ZSIsIl93aW4iLCJ3bWFzayIsIndfbWFzayIsInN0cmVuZCIsInNjYW5fZW5kMSIsInNjYW5fZW5kIiwiZ29vZF9tYXRjaCIsImxvb2thaGVhZCIsIm1hdGNoX3N0YXJ0IiwiZmlsbF93aW5kb3ciLCJtb3JlIiwiX3dfc2l6ZSIsIndpbmRvd19zaXplIiwiaGFzaF9zaXplIiwiaW5zZXJ0IiwiaW5zX2giLCJoYXNoX3NoaWZ0IiwiaGFzaF9tYXNrIiwiZGVmbGF0ZV9mYXN0IiwiaGFzaF9oZWFkIiwiYmZsdXNoIiwibWF0Y2hfbGVuZ3RoIiwiX3RyX3RhbGx5IiwibWF4X2xhenlfbWF0Y2giLCJsYXN0X2xpdCIsImRlZmxhdGVfc2xvdyIsIm1heF9pbnNlcnQiLCJwcmV2X21hdGNoIiwibWF0Y2hfYXZhaWxhYmxlIiwiQ29uZmlnIiwiZ29vZF9sZW5ndGgiLCJtYXhfbGF6eSIsIm5pY2VfbGVuZ3RoIiwibWF4X2NoYWluIiwiRGVmbGF0ZVN0YXRlIiwicGVuZGluZ19idWZfc2l6ZSIsImd6aGVhZCIsImd6aW5kZXgiLCJsYXN0X2ZsdXNoIiwid19iaXRzIiwiaGFzaF9iaXRzIiwiZHluX2x0cmVlIiwiZHluX2R0cmVlIiwiYmxfdHJlZSIsImxfZGVzYyIsImRfZGVzYyIsImJsX2Rlc2MiLCJibF9jb3VudCIsImhlYXAiLCJoZWFwX2xlbiIsImhlYXBfbWF4IiwibF9idWYiLCJsaXRfYnVmc2l6ZSIsImRfYnVmIiwib3B0X2xlbiIsInN0YXRpY19sZW4iLCJiaV9idWYiLCJiaV92YWxpZCIsImRlZmxhdGVSZXNldEtlZXAiLCJfdHJfaW5pdCIsIm1heF9ibG9ja19zaXplIiwibWF4X3N0YXJ0IiwiZGVmbGF0ZUluaXQiLCJkZWZsYXRlU2V0SGVhZGVyIiwib2xkX2ZsdXNoIiwiYmVnIiwiaGNyYyIsImNvbW1lbnQiLCJvcyIsImJzdGF0ZSIsImRlZmxhdGVfaHVmZiIsImRlZmxhdGVfcmxlIiwiX3RyX2FsaWduIiwiX3RyX3N0b3JlZF9ibG9jayIsImF2YWlsIiwidG1wRGljdCIsImRpY3RMZW5ndGgiLCJkZWZsYXRlSW5mbyIsIlpfQklOQVJZIiwiWl9URVhUIiwiU1RPUkVEX0JMT0NLIiwiU1RBVElDX1RSRUVTIiwiRFlOX1RSRUVTIiwiTEVOR1RIX0NPREVTIiwiQnVmX3NpemUiLCJNQVhfQkxfQklUUyIsIkVORF9CTE9DSyIsIlJFUF8zXzYiLCJSRVBaXzNfMTAiLCJSRVBaXzExXzEzOCIsImV4dHJhX2xiaXRzIiwiZXh0cmFfZGJpdHMiLCJleHRyYV9ibGJpdHMiLCJibF9vcmRlciIsInN0YXRpY19sdHJlZSIsInN0YXRpY19kdHJlZSIsIl9kaXN0X2NvZGUiLCJfbGVuZ3RoX2NvZGUiLCJiYXNlX2xlbmd0aCIsInN0YXRpY19sX2Rlc2MiLCJzdGF0aWNfZF9kZXNjIiwic3RhdGljX2JsX2Rlc2MiLCJiYXNlX2Rpc3QiLCJTdGF0aWNUcmVlRGVzYyIsInN0YXRpY190cmVlIiwiZXh0cmFfYml0cyIsImV4dHJhX2Jhc2UiLCJlbGVtcyIsIm1heF9sZW5ndGgiLCJoYXNfc3RyZWUiLCJUcmVlRGVzYyIsImR5bl90cmVlIiwic3RhdF9kZXNjIiwibWF4X2NvZGUiLCJkX2NvZGUiLCJkaXN0IiwicHV0X3Nob3J0Iiwic2VuZF9iaXRzIiwic2VuZF9jb2RlIiwidHJlZSIsImJpX3JldmVyc2UiLCJnZW5fY29kZXMiLCJuZXh0X2NvZGUiLCJpbml0X2Jsb2NrIiwiYmlfd2luZHVwIiwic21hbGxlciIsIl9uMiIsIl9tMiIsInBxZG93bmhlYXAiLCJjb21wcmVzc19ibG9jayIsImx0cmVlIiwiZHRyZWUiLCJsYyIsImx4IiwiYnVpbGRfdHJlZSIsInN0cmVlIiwieGJpdHMiLCJnZW5fYml0bGVuIiwic2Nhbl90cmVlIiwiY3VybGVuIiwicHJldmxlbiIsIm5leHRsZW4iLCJtYXhfY291bnQiLCJtaW5fY291bnQiLCJzZW5kX3RyZWUiLCJzdGF0aWNfaW5pdF9kb25lIiwic3RvcmVkX2xlbiIsImNvcHlfYmxvY2siLCJ0cl9zdGF0aWNfaW5pdCIsIm9wdF9sZW5iIiwic3RhdGljX2xlbmIiLCJtYXhfYmxpbmRleCIsImJsYWNrX21hc2siLCJkZXRlY3RfZGF0YV90eXBlIiwiYnVpbGRfYmxfdHJlZSIsImxjb2RlcyIsImRjb2RlcyIsImJsY29kZXMiLCJzZW5kX2FsbF90cmVlcyIsImJpX2ZsdXNoIiwiLTEiLCItMiIsIi0zIiwiLTQiLCItNSIsIi02IiwiaW5mbGF0ZV9mYXN0IiwiaW5mbGF0ZV90YWJsZSIsIkNPREVTIiwiTEVOUyIsIkRJU1RTIiwiWl9UUkVFUyIsIkhFQUQiLCJGTEFHUyIsIlRJTUUiLCJPUyIsIkVYTEVOIiwiQ09NTUVOVCIsIkhDUkMiLCJESUNUSUQiLCJESUNUIiwiVFlQRURPIiwiU1RPUkVEIiwiQ09QWV8iLCJDT1BZIiwiVEFCTEUiLCJMRU5MRU5TIiwiQ09ERUxFTlMiLCJMRU5fIiwiTEVOIiwiTEVORVhUIiwiRElTVCIsIkRJU1RFWFQiLCJNQVRDSCIsIkxJVCIsIkNIRUNLIiwiQkFEIiwiTUVNIiwiU1lOQyIsIkVOT1VHSF9MRU5TIiwiRU5PVUdIX0RJU1RTIiwiREVGX1dCSVRTIiwienN3YXAzMiIsIkluZmxhdGVTdGF0ZSIsImhhdmVkaWN0IiwiZG1heCIsIndiaXRzIiwid3NpemUiLCJ3aGF2ZSIsInduZXh0IiwiaG9sZCIsImxlbmNvZGUiLCJkaXN0Y29kZSIsImxlbmJpdHMiLCJkaXN0Yml0cyIsIm5jb2RlIiwibmxlbiIsIm5kaXN0Iiwid29yayIsImxlbmR5biIsImRpc3RkeW4iLCJzYW5lIiwiYmFjayIsIndhcyIsImluZmxhdGVSZXNldEtlZXAiLCJpbmZsYXRlUmVzZXQyIiwibGVuZml4IiwiZGlzdGZpeCIsInZpcmdpbiIsImZpeGVkdGFibGVzIiwidXBkYXRld2luZG93IiwiaW5mbGF0ZUluaXQiLCJwdXQiLCJfaW4iLCJfb3V0IiwiZnJvbV9zb3VyY2UiLCJoZXJlX2JpdHMiLCJoZXJlX29wIiwiaGVyZV92YWwiLCJsYXN0X2JpdHMiLCJsYXN0X29wIiwibGFzdF92YWwiLCJoZXJlIiwiaGJ1ZiIsImluZl9sZWF2ZSIsInhmbGFncyIsImV4dHJhX2xlbiIsImluZmxhdGVHZXRIZWFkZXIiLCJpbmZsYXRlSW5mbyIsInNfd2luZG93IiwibGNvZGUiLCJkY29kZSIsImxtYXNrIiwiZG1hc2siLCJkb2xlbiIsImRvZGlzdCIsImxiYXNlIiwibGV4dCIsImRiYXNlIiwiZGV4dCIsImxlbnNfaW5kZXgiLCJ0YWJsZV9pbmRleCIsImluY3IiLCJjdXJyIiwiZHJvcCIsInVzZWQiLCJodWZmIiwiYmFzZV9pbmRleCIsIk1BWEJJVFMiLCJvZmZzIiwiZXh0cmFfaW5kZXgiLCJaX05PX0NPTVBSRVNTSU9OIiwiWl9CRVNUX1NQRUVEIiwiWl9CRVNUX0NPTVBSRVNTSU9OIiwiaWNvbnZMaXRlIiwiSWNvbnYiLCJjb252ZXJ0SWNvbnZMaXRlIiwiY2hlY2tFbmNvZGluZyIsInVzZUxpdGUiLCJpY29udiIsImNvbnZlcnRJY29udiIsIkUiLCJib21IYW5kbGluZyIsImVuY29kaW5ncyIsImRlZmF1bHRDaGFyVW5pY29kZSIsImRlZmF1bHRDaGFyU2luZ2xlQnl0ZSIsImVuY29kZXIiLCJnZXRFbmNvZGVyIiwidHJhaWwiLCJza2lwRGVjb2RlV2FybmluZyIsImdldERlY29kZXIiLCJlbmNvZGluZ0V4aXN0cyIsImdldENvZGVjIiwidG9FbmNvZGluZyIsImZyb21FbmNvZGluZyIsIl9jb2RlY0RhdGFDYWNoZSIsIl9jYW5vbmljYWxpemVFbmNvZGluZyIsImNvZGVjT3B0aW9ucyIsImNvZGVjIiwiY29kZWNEZWYiLCJlbmNvZGluZ05hbWUiLCJib21Bd2FyZSIsImFkZEJPTSIsIlByZXBlbmRCT00iLCJzdHJpcEJPTSIsIlN0cmlwQk9NIiwibm9kZVZlciIsIm5vZGVWZXJBcnIiLCJQcmVwZW5kQk9NV3JhcHBlciIsIlN0cmlwQk9NV3JhcHBlciIsInBhc3MiLCJJbnRlcm5hbENvZGVjIiwiSW50ZXJuYWxFbmNvZGVyQmFzZTY0IiwiSW50ZXJuYWxFbmNvZGVyQ2VzdTgiLCJJbnRlcm5hbERlY29kZXJDZXN1OCIsInV0ZjgiLCJjZXN1OCIsInVuaWNvZGUxMXV0ZjgiLCJ1dGYxNmxlIiwiYmluYXJ5IiwiX2ludGVybmFsIiwiSW50ZXJuYWxFbmNvZGVyIiwiSW50ZXJuYWxEZWNvZGVyIiwicHJldlN0ciIsImFjYyIsImNvbnRCeXRlcyIsImFjY0J5dGVzIiwiY29tcGxldGVRdWFkcyIsImJ1ZklkeCIsIlV0ZjE2QkVDb2RlYyIsIlV0ZjE2QkVFbmNvZGVyIiwiVXRmMTZCRURlY29kZXIiLCJvdmVyZmxvd0J5dGUiLCJVdGYxNkNvZGVjIiwiVXRmMTZFbmNvZGVyIiwiVXRmMTZEZWNvZGVyIiwiaW5pdGlhbEJ5dGVzIiwiaW5pdGlhbEJ5dGVzTGVuIiwiZGV0ZWN0RW5jb2RpbmciLCJhc2NpaUNoYXJzTEUiLCJhc2NpaUNoYXJzQkUiLCJ1dGYxNmJlIiwiYnVmMiIsInV0ZjE2IiwiVXRmN0NvZGVjIiwidXRmNyIsInVuaWNvZGUxMXV0ZjciLCJVdGY3RW5jb2RlciIsIlV0ZjdEZWNvZGVyIiwibm9uRGlyZWN0Q2hhcnMiLCJpbkJhc2U2NCIsImJhc2U2NEFjY3VtIiwiYmFzZTY0UmVnZXgiLCJiYXNlNjRDaGFycyIsInBsdXNDaGFyIiwibWludXNDaGFyIiwiYW5kQ2hhciIsIlV0ZjdJTUFQQ29kZWMiLCJVdGY3SU1BUEVuY29kZXIiLCJiYXNlNjRBY2N1bUlkeCIsIlV0ZjdJTUFQRGVjb2RlciIsImxhc3RJIiwiYjY0c3RyIiwiY2FuQmVEZWNvZGVkIiwidXRmN2ltYXAiLCJ1Q2hhciIsImJhc2U2NElNQVBDaGFycyIsIlNCQ1NDb2RlYyIsImNoYXJzIiwiYXNjaWlTdHJpbmciLCJkZWNvZGVCdWYiLCJlbmNvZGVCdWYiLCJTQkNTRW5jb2RlciIsIlNCQ1NEZWNvZGVyIiwiX3NiY3MiLCJpZHgxIiwiaWR4MiIsIjEwMDI5IiwibWFjY2VudGV1cm8iLCJpYm04MDgiLCJjcDgwOCIsIm1payIsImFzY2lpOGJpdCIsInVzYXNjaWkiLCJhbnNpeDM0IiwiYW5zaXgzNDE5NjgiLCJhbnNpeDM0MTk4NiIsImNzYXNjaWkiLCJjcDM2NyIsImlibTM2NyIsImlzb2lyNiIsImlzbzY0NnVzIiwiaXNvNjQ2aXJ2IiwidXMiLCJsYXRpbjEiLCJsYXRpbjIiLCJsYXRpbjMiLCJsYXRpbjQiLCJsYXRpbjUiLCJsYXRpbjYiLCJsYXRpbjciLCJsYXRpbjgiLCJsYXRpbjkiLCJsYXRpbjEwIiwiY3Npc29sYXRpbjEiLCJjc2lzb2xhdGluMiIsImNzaXNvbGF0aW4zIiwiY3Npc29sYXRpbjQiLCJjc2lzb2xhdGluY3lyaWxsaWMiLCJjc2lzb2xhdGluYXJhYmljIiwiY3Npc29sYXRpbmdyZWVrIiwiY3Npc29sYXRpbmhlYnJldyIsImNzaXNvbGF0aW41IiwiY3Npc29sYXRpbjYiLCJsMyIsImw0IiwibDUiLCJsNiIsImw3IiwibDgiLCJsOSIsImwxMCIsImlzb2lyMTQiLCJpc29pcjU3IiwiaXNvaXIxMDAiLCJpc29pcjEwMSIsImlzb2lyMTA5IiwiaXNvaXIxMTAiLCJpc29pcjE0NCIsImlzb2lyMTI3IiwiaXNvaXIxMjYiLCJpc29pcjEzOCIsImlzb2lyMTQ4IiwiaXNvaXIxNTciLCJpc29pcjE2NiIsImlzb2lyMTc5IiwiaXNvaXIxOTkiLCJpc29pcjIwMyIsImlzb2lyMjI2IiwiY3A4MTkiLCJpYm04MTkiLCJjeXJpbGxpYyIsImFyYWJpYyIsImFyYWJpYzgiLCJlY21hMTE0IiwiYXNtbzcwOCIsImdyZWVrIiwiZ3JlZWs4IiwiZWNtYTExOCIsImVsb3Q5MjgiLCJoZWJyZXciLCJoZWJyZXc4IiwidHVya2lzaCIsInR1cmtpc2g4IiwidGhhaSIsInRoYWk4IiwiY2VsdGljIiwiY2VsdGljOCIsImlzb2NlbHRpYyIsInRpczYyMDAiLCJ0aXM2MjAyNTI5MSIsInRpczYyMDI1MzMwIiwiMTAwMDAiLCIxMDAwNiIsIjEwMDA3IiwiMTAwNzkiLCIxMDA4MSIsImNzcGM4Y29kZXBhZ2U0MzciLCJjc3BjNzc1YmFsdGljIiwiY3NwYzg1MG11bHRpbGluZ3VhbCIsImNzcGNwODUyIiwiY3NwYzg2MmxhdGluaGVicmV3IiwiY3BnciIsIm1zZWUiLCJtc2N5cmwiLCJtc2Fuc2kiLCJtc2dyZWVrIiwibXN0dXJrIiwibXNoZWJyIiwibXNhcmFiIiwid2luYmFsdHJpbSIsImNwMjA4NjYiLCIyMDg2NiIsImlibTg3OCIsImNza29pOHIiLCJjcDIxODY2IiwiMjE4NjYiLCJpYm0xMTY4Iiwic3RyazEwNDgyMDAyIiwidGN2bjU3MTIiLCJ0Y3ZuNTcxMjEiLCJnYjE5ODg4MCIsImNuIiwiY3Npc28xNGppc2M2MjIwcm8iLCJqaXNjNjIyMDE5NjlybyIsImpwIiwiY3NocHJvbWFuOCIsInI4Iiwicm9tYW44IiwieHJvbWFuOCIsImlibTEwNTEiLCJtYWMiLCJjc21hY2ludG9zaCIsIjQzNyIsIjkyMiIsIjExMjQiLCIxMTI1IiwiMTEyOSIsIjExMzMiLCIxMTYxIiwiMTE2MiIsIjExNjMiLCIyODU5MSIsIjI4NTkyIiwiMjg1OTMiLCIyODU5NCIsIjI4NTk1IiwiMjg1OTYiLCIyODU5NyIsIjI4NTk4IiwiMjg1OTkiLCIyODYwMCIsIjI4NjAxIiwiMjg2MDMiLCIyODYwNCIsIjI4NjA1IiwiMjg2MDYiLCJ3aW5kb3dzODc0Iiwid2luODc0IiwiY3A4NzQiLCJ3aW5kb3dzMTI1MCIsIndpbjEyNTAiLCJjcDEyNTAiLCJ3aW5kb3dzMTI1MSIsIndpbjEyNTEiLCJjcDEyNTEiLCJ3aW5kb3dzMTI1MiIsIndpbjEyNTIiLCJjcDEyNTIiLCJ3aW5kb3dzMTI1MyIsIndpbjEyNTMiLCJjcDEyNTMiLCJ3aW5kb3dzMTI1NCIsIndpbjEyNTQiLCJjcDEyNTQiLCJ3aW5kb3dzMTI1NSIsIndpbjEyNTUiLCJjcDEyNTUiLCJ3aW5kb3dzMTI1NiIsIndpbjEyNTYiLCJjcDEyNTYiLCJ3aW5kb3dzMTI1NyIsIndpbjEyNTciLCJjcDEyNTciLCJ3aW5kb3dzMTI1OCIsIndpbjEyNTgiLCJjcDEyNTgiLCJpc284ODU5MSIsImNwMjg1OTEiLCJpc284ODU5MiIsImNwMjg1OTIiLCJpc284ODU5MyIsImNwMjg1OTMiLCJpc284ODU5NCIsImNwMjg1OTQiLCJpc284ODU5NSIsImNwMjg1OTUiLCJpc284ODU5NiIsImNwMjg1OTYiLCJpc284ODU5NyIsImNwMjg1OTciLCJpc284ODU5OCIsImNwMjg1OTgiLCJpc284ODU5OSIsImNwMjg1OTkiLCJpc284ODU5MTAiLCJjcDI4NjAwIiwiaXNvODg1OTExIiwiY3AyODYwMSIsImlzbzg4NTkxMyIsImNwMjg2MDMiLCJpc284ODU5MTQiLCJjcDI4NjA0IiwiaXNvODg1OTE1IiwiY3AyODYwNSIsImlzbzg4NTkxNiIsImNwMjg2MDYiLCJjcDQzNyIsImlibTQzNyIsImNzaWJtNDM3IiwiY3A3MzciLCJpYm03MzciLCJjc2libTczNyIsImNwNzc1IiwiaWJtNzc1IiwiY3NpYm03NzUiLCJjcDg1MCIsImlibTg1MCIsImNzaWJtODUwIiwiY3A4NTIiLCJpYm04NTIiLCJjc2libTg1MiIsImNwODU1IiwiaWJtODU1IiwiY3NpYm04NTUiLCJjcDg1NiIsImlibTg1NiIsImNzaWJtODU2IiwiY3A4NTciLCJpYm04NTciLCJjc2libTg1NyIsImNwODU4IiwiaWJtODU4IiwiY3NpYm04NTgiLCJjcDg2MCIsImlibTg2MCIsImNzaWJtODYwIiwiY3A4NjEiLCJpYm04NjEiLCJjc2libTg2MSIsImNwODYyIiwiaWJtODYyIiwiY3NpYm04NjIiLCJjcDg2MyIsImlibTg2MyIsImNzaWJtODYzIiwiY3A4NjQiLCJpYm04NjQiLCJjc2libTg2NCIsImNwODY1IiwiaWJtODY1IiwiY3NpYm04NjUiLCJjcDg2NiIsImlibTg2NiIsImNzaWJtODY2IiwiY3A4NjkiLCJpYm04NjkiLCJjc2libTg2OSIsImNwOTIyIiwiaWJtOTIyIiwiY3NpYm05MjIiLCJjcDEwNDYiLCJpYm0xMDQ2IiwiY3NpYm0xMDQ2IiwiY3AxMTI0IiwiaWJtMTEyNCIsImNzaWJtMTEyNCIsImNwMTEyNSIsImlibTExMjUiLCJjc2libTExMjUiLCJjcDExMjkiLCJpYm0xMTI5IiwiY3NpYm0xMTI5IiwiY3AxMTMzIiwiaWJtMTEzMyIsImNzaWJtMTEzMyIsImNwMTE2MSIsImlibTExNjEiLCJjc2libTExNjEiLCJjcDExNjIiLCJpYm0xMTYyIiwiY3NpYm0xMTYyIiwiY3AxMTYzIiwiaWJtMTE2MyIsImNzaWJtMTE2MyIsIm1hY2Nyb2F0aWFuIiwibWFjY3lyaWxsaWMiLCJtYWNncmVlayIsIm1hY2ljZWxhbmQiLCJtYWNyb21hbiIsIm1hY3JvbWFuaWEiLCJtYWN0aGFpIiwibWFjdHVya2lzaCIsIm1hY3VrcmFpbmUiLCJrb2k4ciIsImtvaTh1Iiwia29pOHJ1Iiwia29pOHQiLCJhcm1zY2lpOCIsInJrMTA0OCIsInRjdm4iLCJnZW9yZ2lhbmFjYWRlbXkiLCJnZW9yZ2lhbnBzIiwicHQxNTQiLCJ2aXNjaWkiLCJpc282NDZjbiIsImlzbzY0NmpwIiwiaHByb21hbjgiLCJtYWNpbnRvc2giLCJhc2NpaSIsInRpczYyMCIsIl9kYmNzIiwiREJDU0NvZGVjIiwiVU5BU1NJR05FRCIsIkdCMTgwMzBfQ09ERSIsIk5PREVfU1RBUlQiLCJVTkFTU0lHTkVEX05PREUiLCJtYXBwaW5nVGFibGUiLCJkZWNvZGVUYWJsZXMiLCJkZWNvZGVUYWJsZVNlcSIsIl9hZGREZWNvZGVDaHVuayIsImVuY29kZVRhYmxlIiwiZW5jb2RlVGFibGVTZXEiLCJza2lwRW5jb2RlQ2hhcnMiLCJlbmNvZGVTa2lwVmFscyIsIl9maWxsRW5jb2RlVGFibGUiLCJlbmNvZGVBZGQiLCJfc2V0RW5jb2RlQ2hhciIsImRlZkNoYXJTQiIsImdiMTgwMzAiLCJ0aGlyZEJ5dGVOb2RlSWR4IiwidGhpcmRCeXRlTm9kZSIsImZvdXJ0aEJ5dGVOb2RlSWR4IiwiZm91cnRoQnl0ZU5vZGUiLCJzZWNvbmRCeXRlTm9kZUlkeCIsInNlY29uZEJ5dGVOb2RlIiwiREJDU0VuY29kZXIiLCJzZXFPYmoiLCJEQkNTRGVjb2RlciIsIm5vZGVJZHgiLCJwcmV2QnVmIiwiZmluZElkeCIsIm1pZCIsIl9nZXREZWNvZGVUcmllTm9kZSIsImFkZHIiLCJjdXJBZGRyIiwid3JpdGVUYWJsZSIsImNvZGVUcmFpbCIsInNlcSIsIl9nZXRFbmNvZGVCdWNrZXQiLCJ1Q29kZSIsImRiY3NDb2RlIiwiYnVja2V0IiwiX3NldEVuY29kZVNlcXVlbmNlIiwib2xkVmFsIiwibWJDb2RlIiwibmV4dENoYXIiLCJyZXNDb2RlIiwic3VidGFibGUiLCJ1Q2hhcnMiLCJnYkNoYXJzIiwicHJldkJ1Zk9mZnNldCIsInNlcVN0YXJ0IiwiY3VyU2VxIiwidUNvZGVMZWFkIiwic2hpZnRqaXMiLCLCpSIsIuKAviIsImNzc2hpZnRqaXMiLCJtc2thbmppIiwic2ppcyIsIndpbmRvd3MzMWoiLCJtczMxaiIsInhzamlzIiwid2luZG93czkzMiIsIm1zOTMyIiwiOTMyIiwiY3A5MzIiLCJldWNqcCIsImdiMjMxMiIsImdiMjMxMjgwIiwiZ2IyMzEyMTk4MCIsImNzZ2IyMzEyIiwiY3Npc281OGdiMjMxMjgwIiwiZXVjY24iLCJ3aW5kb3dzOTM2IiwibXM5MzYiLCI5MzYiLCJjcDkzNiIsImdiayIsInhnYmsiLCJpc29pcjU4Iiwi4oKsIiwiY2hpbmVzZSIsIndpbmRvd3M5NDkiLCJtczk0OSIsImNwOTQ5IiwiY3NldWNrciIsImNza3NjNTYwMTE5ODciLCJldWNrciIsImlzb2lyMTQ5Iiwia29yZWFuIiwia3NjNTYwMTE5ODciLCJrc2M1NjAxMTk4OSIsImtzYzU2MDEiLCJ3aW5kb3dzOTUwIiwibXM5NTAiLCI5NTAiLCJjcDk1MCIsImJpZzUiLCJiaWc1aGtzY3MiLCJjbmJpZzUiLCJjc2JpZzUiLCJ4eGJpZzUiLCJ3ZWJwYWNrRW1wdHlDb250ZXh0IiwiaXNTdHJlYW0iLCJkdXBsZXgiLCJwYXJzZV91cmwiLCJ1cmxfcGFyc2VkIl0sIm1hcHBpbmdzIjoiQ0FBQSxTQUFBQSxFQUFBQyxHQUNBLGlCQUFBQyxTQUFBLGlCQUFBQyxPQUNBQSxPQUFBRCxRQUFBRCxJQUNBLG1CQUFBRyxlQUFBQyxJQUNBRCxPQUFBLG1CQUFBSCxHQUNBLGlCQUFBQyxRQUNBQSxRQUFBLGlCQUFBRCxJQUVBRCxF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QUFBLElBQVU5UCxJQUFBLE1BQVErUCxJQUFBLGVBQUFDLElBQUEsZUFBQUMsSUFBQSxnQkFBQUMsSUFBQSxjQUFBQyxJQUFBLGVBQUFDLElBQUEsZ0JBQUFDLElBQUEsY0FBQUMsSUFBQSxlQUFBQyxJQUFBLGdCQUFBQyxJQUFBLFdBQUFDLElBQUEsV0FBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUF1bEJ4UyxJQUFBLE1BQVF5UyxJQUFBLGFBQW1CelMsSUFBQSxNQUFRMFMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsY0FBQUMsSUFBQSxlQUFBQyxJQUFBLGdCQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLE1BQUEsUUFDNzRGQyxJQUFBLENBQUtBLElBQUEsV0FBQUMsSUFBQSxXQUFBQyxJQUFBLFdBQUFDLElBQUEsV0FBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLFdBQUFDLElBQUEsWUFBQUMsSUFBQSxXQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBK2QzVixJQUFBLE1BQVE0VixJQUFBLFlBQWtCNVYsSUFBQSxNQUFRNlYsSUFBQSxZQUFrQjVWLElBQUEsT0FBUzZWLElBQUEsYUFBbUI3VixJQUFBLE9BQVM4VixJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBa0ZuVyxJQUFBLE1BQVFvVyxJQUFBLGFBQW1CcFcsSUFBQSxNQUFRcVcsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsV0FBQUMsSUFBQSxZQUFBQyxJQUFBLElBQXlFblcsSUFBQSxNQUFRb1csSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxlQUFBQyxJQUFBLGVBQUFDLElBQUEsZUFBQUMsSUFBQSxlQUFBQyxJQUFBLGVBQUFDLElBQUEsZUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLElBQUEsWUFBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUFDLE1BQUEsUUFDbndCbFksSUFBQSxDQUFLQSxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQStYLElBQUEsT0FBQTlYLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQW1HTixJQUFBLE1BQVFPLElBQUEsT0FBQUMsSUFBQSxPQUFBMEIsSUFBQSxPQUFBekIsSUFBQSxPQUFBMFgsSUFBQSxPQUFBQyxJQUFBLE9BQUExWCxJQUFBLE9BQUEyWCxJQUFBLE9BQUExWCxJQUFBLE9BQUEyWCxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBM1csSUFBQSxPQUFBNFcsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBelksSUFBQSxPQUFBOEIsSUFBQSxPQUFBN0IsSUFBQSxPQUFBMEIsSUFBQSxPQUFBckIsSUFBQSxPQUFBSixJQUFBLE9BQUF3WSxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFyWSxJQUFBLE9BQUFNLElBQUEsT0FBQWdZLElBQUEsT0FBQXBZLElBQUEsT0FBQU4sSUFBQSxPQUFBMlksSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsS0FBQUMsSUFBQSxLQUFBQyxJQUFBLEtBQUFDLElBQUEsS0FBQXJhLElBQUEsS0FBQXNhLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxZQUFBQyxJQUFBLFlBQUE5VixJQUFBLE9BQUErVixJQUFBLFlBQUFDLElBQUEsZ0JBQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxPQUFBQyxJQUFBLE9BQUFDLElBQUEsT0FBQUMsSUFBQSxP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QUEsY0FDaGlEQyxLQUFBLENBQU1DLEtBQUEsa0JBQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQ05DLEtBQUEsQ0FBTUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLElBQXlPQyxLQUFBLEtBQUFDLEtBQUEsS0FBQUMsS0FBQSxPQUE4QkMsS0FBQSxJQUFXRixLQUFBLE9BQVVHLEtBQUEsSUFBV0gsS0FBQSxPQUFVSSxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQVosS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQVcsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE1BQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsY0FBQUMsS0FBQSxJQUF5WDVCLEtBQUEsT0FBVTZCLEtBQUEsY0FBQUMsS0FBQSxJQUE4QjlCLEtBQUEsT0FBVStCLEtBQUEsY0FBQUMsS0FBQSxJQUE4QmhDLEtBQUEsT0FBVWlDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsUUFDMXdCQyxLQUFBLENBQU1DLEtBQUEsTUFBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsUUFDTkMsS0FBQSxDQUFNQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE1BQUFDLEtBQUEsTUFBQUMsS0FBQSxNQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLFFBQ05DLEtBQUEsQ0FBTUMsS0FBQSxJQUFTQyxLQUFBLE9BQVVDLEtBQUEsY0FBQUMsS0FBQSxJQUE4QkYsS0FBQSxPQUFVRyxLQUFBLGNBQUFDLEtBQUEsSUFBOEJKLEtBQUEsT0FBVUssS0FBQSxjQUFBTCxLQUFBLEtBQUFNLEtBQUEsS0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLEtBQUFDLEtBQUEsSUFBb1NDLEtBQUEsS0FBQUMsS0FBQSxPQUFvQkMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsS0FBQUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxtQkFDamFDLEtBQUEsQ0FBTUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxLQUFBQyxLQUFBLEtBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLEtBQUFDLE1BQUEsT0FBQUMsTUFBQSxLQUFBQyxNQUFBLE9BQUFDLE1BQUEsUUFDTkMsS0FBQSxDQUFNQyxLQUFBLEtBQUFDLEtBQUEsSUFBbUJDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLE9BQThCQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLEtBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsSUFBNEhDLEtBQUEsT0FBVUMsS0FBQSxjQUFBQyxLQUFBLElBQThCQyxLQUFBLEtBQUFILEtBQUEsT0FBb0JJLEtBQUEsSUFBV0QsS0FBQSxPQUFVRSxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLE1BQ3BRQyxLQUFBLENBQU1DLEtBQUEsSUFBU0MsS0FBQSxPQUFVQyxLQUFBLGNBQUFDLEtBQUEsS0FBQUMsS0FBQSxNQUFBSCxLQUFBLE1BQUFJLEtBQUEsS0FBQUMsS0FBQSxJQUF3RUMsS0FBQSxPQUFVQyxLQUFBLGNBQUFDLEtBQUEsSUFBOEJDLEtBQUEsS0FBQUgsS0FBQSxLQUFBSSxLQUFBLE9BQThCQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxlQUE0RFAsS0FBQSxPQUFVUSxLQUFBLGNBQUFDLEtBQUEsTUFDN09DLEtBQUEsQ0FBTUMsS0FBQSxJQUFTQyxLQUFBLEtBQUFDLEtBQUEsT0FBb0JDLEtBQUEsSUFBV0YsS0FBQSxPQUFVRyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLEtBQUFDLEtBQUEsS0FBQUMsS0FBQSxJQUF3RkQsS0FBQSxLQUFBRSxLQUFBLEtBQUFDLEtBQUEsT0FBOEJDLEtBQUEsY0FBQUMsS0FBQSxlQUF5Q0wsS0FBQSxPQUFVTSxLQUFBLGNBQUFDLEtBQUEsZUFDak9DLEtBQUEsQ0FBTUMsS0FBQSxrQkFBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsS0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLGtCQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLGtCQUFBQyxLQUFBLG1CQUNOQyxLQUFBLENBQU1DLEtBQUEsYUFBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLGtCQUFBQyxLQUFBLE9BQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLGtCQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxLQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxRQUNOQyxLQUFBLENBQU1DLEtBQUEsSUFB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QUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLEtBQUFDLEtBQUEsS0FBQUMsS0FBQSxNQUNuYkMsS0FBQSxDQUFNQyxLQUFBLEtBQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsS0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxLQUFBQyxLQUFBLEtBQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLEtBQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLFFBQ05DLEtBQUEsQ0FBTUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxhQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLGFBQUFDLEtBQUEsYUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxhQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxhQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxhQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLGFBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLGFBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxhQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsUUFDTkMsS0FBQSxDQUFNQSxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQTY0QnAzQyxJQUFBLE9BQVNxM0MsS0FBQSxhQUFvQnIzQyxJQUFBLE9BQVNzM0MsS0FBQSxhQUFBQyxLQUFBLGFBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQTJrQng1QyxJQUFBLE9BQVN5NUMsS0FBQSxhQUFvQno1QyxJQUFBLE9BQVMwNUMsS0FBQSxhQUFBQyxLQUFBLGFBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUF5SDk1QyxJQUFBLE9BQVMrNUMsS0FBQSxhQUFvQi81QyxJQUFBLE9BQVNnNkMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLGFBQUFDLEtBQUEsYUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxlQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBNDdCNTlDLElBQUEsS0FBQUcsSUFBQSxPQUFrQjA5QyxLQUFBLFlBQW1CNzlDLElBQUEsS0FBQUcsSUFBQSxPQUFrQjI5QyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsYUFBQUMsS0FBQSxhQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxhQUFBQyxLQUFBLGFBQUFDLEtBQUEsWUFBMllwL0MsSUFBQSxPQUFTcS9DLEtBQUEsYUFBb0JyL0MsSUFBQSxPQUFTcy9DLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFB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QyxLQUFBLFFBQUFDLEtBQUEsWUFBQUMsS0FBQSxRQUFBQyxLQUFBLFlBQUFDLEtBQUEsYUFBQUMsS0FBQSxhQUFBQyxLQUFBLGFBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsUUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsUUFBQUMsS0FBQSxhQUFBQyxLQUFBLGFBQUFDLEtBQUEsYUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxRQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsUUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsUUFBQUMsS0FBQSxPQUFBQyxLQUFBLGFBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLGFBQW9yQjMyQyxJQUFBLE9BQVM0MkMsS0FBQSxhQUFBQyxLQUFBLFlBQUFDLEtBQUEsUUFBQUMsS0FBQSxZQUFBQyxLQUFBLFFBQUFDLEtBQUEsWUFBQUMsS0FBQSxRQUFBQyxLQUFBLGVBQWtJaHlELElBQUEsS0FBQUMsSUFBQSxLQUFBMkUsSUFBQSxRQUNseUtxdEQsS0FBQSxDQUFNQSxLQUFBLFNBQUFDLEtBQUEsU0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxhQUFBQyxLQUFBLGVBQUFDLEtBQUEsV0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLFdBQUFDLEtBQUEsa0JBQUFDLEtBQUEsdUJBQUFDLEtBQUEsa0JBQUFDLEtBQUEsdUJBQUFDLEtBQUEsY0FBQUMsS0FBQSxlQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLDRCQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsYUFBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxhQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsZUFBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLEtBQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsS0FBQUMsS0FBQSxLQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLEtBQUFDLEtBQUEsS0FBQUMsS0FBQSxPQUFBQyxLQUFBLE9BQUFDLEtBQUEsT0FBQUMsS0FBQSxPQUFBQyxLQUFBLFFBQ05DLEtBQUEsQ0FBTUEsS0FBQSxpQkFBQUMsS0FBQSxrQkFBQUMsS0FBQSxXQUFBQyxLQUFBLGVBQUFDLEtBQUEsa0JBQUFDLEtBQUEsa0JBQUFDLEtBQUEsWUFBQUMsS0FBQSxlQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsV0FBQUMsS0FBQSxlQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGNBQUFDLEtBQUEsV0FBQUMsS0FBQSxRQUFBQyxLQUFBLFdBQUFDLEtBQUEsT0FBQUMsS0FBQSxRQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsYUFBQUMsS0FBQSxhQUFBQyxLQUFBLGFBQUFDLEtBQUEsYUFBQUMsS0FBQSxZQUFBQyxLQUFBLGlCQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsYUFBQUMsS0FBQSxXQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsc0JBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsbUJBQUFDLEtBQUEsZ0JBQUFDLEtBQUEsV0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGNBQUFDLEtBQUEsV0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLG9CQUFBQyxLQUFBLGNBQUFDLEtBQUEsV0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsWUFBQUMsS0FBQSxnQkFBQUMs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Y0FDNXpDQyxLQUFBLENBQU1DLEtBQUEsVUFBQUMsS0FBQSxXQUNOQyxLQUFBLENBQU1DLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLG9CQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGNBQUFDLEtBQUEsY0FBQUMsS0FBQSxjQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGlCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLGtCQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxXQUFBQyxLQUFBLFdBQUFDLEtBQUEsV0FBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFBQUMsS0FBQSxZQUFBQyxLQUFBLFlBQUFDLEtBQUEsWUFDTkMsTUFBQSxDQUFPQyxNQUFBLDRCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGNBQUFDLE1BQUEsaUJBQUFDLE1BQUEsbUJBQ1BDLE1BQUEsQ0FBT0MsTUFBQSxZQUFBQyxNQUFBLFdBQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLFFBQ1BDLE1BQUEsQ0FBT0MsTUFBQSxjQUFBQyxNQUFBLEtBQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxRQUNQQyxNQUFBLENBQU9DLE1BQUEsY0FBQUMsTUFBQSxlQUNQQyxNQUFBLENBQU9BLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLFlBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFB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QUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsZUFDUEMsTUFBQSxDQUFPQSxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHdCQUFBQyxNQUFBLHVDQUFBQyxNQUFBLGtDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsaUJBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGlDQUFBQyxNQUFBLDRCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsZUFBQUMsTUFBQSxvQkFBQUMsTUFBQSxlQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsZUFDUEMsTUFBQSxDQUFPQSxNQUFBLGdDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLHNDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLHNDQUFBQyxNQUFBLDRDQUFBQyxNQUFBLHNDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLHNDQUFBQyxNQUFBLHNDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLHNDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLHNDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLHNDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLHNDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLHNDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLHNDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLHNDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLHNDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLGdDQUFBQyxNQUFBLGdDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGdDQUFBQyxNQUFBLG9CQUFBQyxNQUFBLHNDQUFBQyxNQUFBLDBCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLGlCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGVBQUFDLE1BQUEsY0FBQUMsTUFBQSxrQkFBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsY0FBQUMsTUFBQSxvQkFBQUMsTUFBQSxvQkFBQUMsTUFBQSxvQkFBQUMsTUFBQSxvQkFBQUMsTUFBQSxnQ0FBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsZUFBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsa0JBQUFDLE1BQUEsc0JBQUFDLE1BQUEsZUFBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZUFBQUMsTUFBQSxtQkFBQUMsTUFBQSxrQkFBQUMsTUFBQSxrQkFBQUMsTUFBQSxrQkFBQUMsTUFBQSxpQkFBQUMsTUFBQSxpQkFBQUMsTUFBQSxpQkFBQUMsTUFBQSxpQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxlQUFBQyxNQUFBLGdCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLGdCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLGdCQUFBQyxNQUFBLG9CQUFBQyxNQUFBLHFCQUFBQyxNQUFBLHlCQUFBQyxNQUFBLGNBQUFDLE1BQUEsa0JBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsbUJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsZ0NBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZUFBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsZUFBQUMsTUFBQSxlQUFBQyxNQUFBLGNBQUFDLE1BQUEsZUFBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsZUFBQUMsTUFBQSxlQUFBQyxNQUFBLGNBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZUFBQUMsTUFBQSxxQkFBQUMsTUFBQSxlQUFBQyxNQUFBLGNBQUFDLE1BQUEsZUFBQUMsTUFBQSx3QkFBQUMsTUFBQSxrQkFBQUMsTUFBQSxlQUFBQyxNQUFBLGVBQUFDLE1BQUEsZUFBQUMsTUFBQSxjQUFBQyxNQUFBLGdCQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxnQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxvQkFBQUMsTUFBQSxnQkFBQUMsTUFBQSxlQUFBQyxNQUFBLG9CQUFBQyxNQUFBLG9CQUFBQyxNQUFBLGNBQUFDLE1BQUEsc0JBQUFDLE1BQUEsaUJBQUFDLE1BQUEsY0FBQUMsTUFBQSxnQkFBQUMsTUFBQSxlQUFBQyxNQUFBLGNBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsaUJBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQ1BDLE1BQUEsQ0FBT0MsTUFBQSxLQUFBQyxNQUFBLEtBQUFDLE1BQUEsS0FBQUMsTUFBQSxLQUFBQyxNQUFBLE1BQ1BDLE1BQUEsQ0FBT0MsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxRQUNQQyxNQUFBLENBQU9DLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsUUFDUEMsTUFBQSxDQUFPQyxNQUFBLGNBQUFDLE1BQUEsWUFBQUMsTUFBQSxhQUNQQyxNQUFBLENBQU9DLE1BQUEsS0FBQUMsTUFBQSxLQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxRQUNQQyxNQUFBLENBQU9DLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsS0FBQUMsTUFBQSxLQUFBQyxNQUFBLE1BQ1BDLE1BQUEsQ0FBT0MsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxNQUNQQyxNQUFBLENBQU9DLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLFlBQUFDLE1BQUEsY0FBQUMsTUFBQSxNQUNQQyxNQUFBLENBQU9DLE9BQUEsTUFDUEMsTUFBQSxDQUFPQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxLQUFBQyxPQUFBLEtBQUFDLE9BQUEsS0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHNCQUFBQyxPQUFBLHVCQUNQQyxNQUFBLENBQU9DLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLFFBQ1BDLE1BQUEsQ0FBT0MsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUNQQyxNQUFBLENBQU9DLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFDUEMsTUFBQSxDQUFPQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFDUEMsTUFBQSxDQUFPQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxZQUFBQyxPQUFBLGFBQUFDLE9BQUEsWUFBQUMsT0FBQSxhQUFBQyxPQUFBLFlBQUFDLE9BQUEsWUFBQUMsT0FBQSxZQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsWUFDUEMsTUFBQSxDQUFPQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLE9BQUFDLE9BQUEsT0FBQUMsT0FBQSxPQUFBQyxPQUFBLFFBQ1BDLE1BQUEsQ0FBT0MsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsYUFBQUMsT0FBQSxhQUFBQyxPQUFBLGFBQUFDLE9BQUEsY0FDUEMsTUFBQSxDQUFPQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSxpQkFBQUMsT0FBQSx1QkFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGlCQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGVBQ1BDLE1BQUEsQ0FBT0MsT0FBQSxvQkFBQUMsT0FBQSxvQkFBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsY0FBQUMsT0FBQSxjQUFBQyxPQUFBLGNBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsMEJBQUFDLE9BQUEsY0FBQUMsT0FBQSxlQUNQQyxNQUFBLENBQU9DLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFNBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FDUEMsTUFBQSxDQUFPQSxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxTQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FDUEMsTUFBQSxDQUFPQSxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFdBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxNQUFBLFVBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsVUFBQUMsTUFBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsVUFBQUMsT0FBQSxRQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsV0FBQUMsT0FBQSxVQUFBQyxPQUFBLFdBQUFDLE9BQUEsV0FBQUMsT0FBQSxXQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxVQUFBQyxPQUFBLFVBQUFDLE9BQUEsVUFBQUMsT0FBQSxZQUNQQyxNQUFBLENBQU9BLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsb0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsTUFBQUMsTUFBQSxrQkFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxXQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLG1CQUFBQyxNQUFBLG1CQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsY0FDUEMsTUFBQSxDQUFPQSxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLHFCQUFBQyxNQUFBLHFCQUFBQyxNQUFBLHFCQUFBQyxNQUFBLHFCQUFBQyxNQUFBLHFCQUFBQyxNQUFBLHFCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLHVCQUFBQyxNQUFBLHVCQUFBQyxNQUFBLHVCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLGtCQUFBQyxNQUFBLG1CQUNQQyxNQUFBLENBQU9BLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsNEJBQUFDLE1BQUEsdUJBQUFDLE1BQUEsNEZBQUFDLE1BQUEsOENBQUFDLE1BQUEsNkJBQ1BDLE1BQUEsQ0FBT0MsTUFBQSxXQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxhQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxPQUFBQyxNQUFBLE9BQUFDLE1BQUEsT0FBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLGNBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLGFBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsZ0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsa0JBQUFDLE1BQUEsbUJBQ1BDLE1BQUEsQ0FBT0MsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFdBQUFDLE1BQUEsV0FBQUMsTUFBQSxXQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLGNBQUFDLE1BQUEsY0FBQUMsTUFBQSxjQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLFlBQUFDLE1BQUEsWUFBQUMsTUFBQSxZQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFDLE1BQUEsYUFBQUMsTUFBQSxhQUFBQyxNQUFBLGFBQUFD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QUEsV0FDQUMsT0FBQSxZQUNBQyxPQUFBLFlBQ0FDLE9BQUEsWUFDQUMsT0FBQSxZQUNBQyxRQUFBLFlBRUFDLFlBQUEsV0FDQUMsWUFBQSxXQUNBQyxZQUFBLFdBQ0FDLFlBQUEsV0FDQUMsbUJBQUEsV0FDQUMsaUJBQUEsV0FDQUMsZ0JBQUEsV0FDQUMsaUJBQUEsV0FDQUMsWUFBQSxXQUNBQyxZQUFBLFlBRUE5L1EsR0FBQSxXQUNBQyxHQUFBLFdBQ0E4L1EsR0FBQSxXQUNBQyxHQUFBLFdBQ0FDLEdBQUEsV0FDQUMsR0FBQSxZQUNBQyxHQUFBLFlBQ0FDLEdBQUEsWUFDQUMsR0FBQSxZQUNBQyxJQUFBLFlBRUFDLFFBQUEsV0FDQUMsUUFBQSxXQUNBQyxTQUFBLFdBQ0FDLFNBQUEsV0FDQUMsU0FBQSxXQUNBQyxTQUFBLFdBQ0FDLFNBQUEsV0FDQUMsU0FBQSxXQUNBQyxTQUFBLFdBQ0FDLFNBQUEsV0FDQUMsU0FBQSxXQUNBQyxTQUFBLFlBQ0FDLFNBQUEsU0FDQUMsU0FBQSxZQUNBQyxTQUFBLFlBQ0FDLFNBQUEsWUFDQUMsU0FBQSxZQUVBQyxNQUFBLFdBQ0FDLE9BQUEsV0FFQUMsU0FBQSxXQUVBQyxPQUFBLFdBQ0FDLFFBQUEsV0FDQUMsUUFBQSxXQUNBQyxRQUFBLFdBRUFDLE1BQUEsV0FDQUMsT0FBQSxXQUNBQyxRQUFBLFdBQ0FDLFFBQUEsV0FFQUMsT0FBQSxXQUNBQyxRQUFBLFdBRUFDLFFBQUEsV0FDQUMsU0FBQSxXQUVBQyxLQUFBLFlBQ0FDLE1BQUEsWUFFQUMsT0FBQSxZQUNBQyxRQUFBLFlBQ0FDLFVBQUEsWUFFQUMsUUFBQSxTQUNBQyxZQUFBLFNBQ0FDLFlBQUEsU0FFQUMsTUFBQSxXQUNBQyxNQUFBLFdBQ0FDLE1BQUEsY0FDQUMsTUFBQSxhQUNBQyxNQUFBLGFBRUFDLGlCQUFBLFFBQ0FDLGNBQUEsUUFDQUMsb0JBQUEsUUFDQUMsU0FBQSxRQUNBQyxtQkFBQSxRQUNBQyxLQUFBLFFBRUFDLEtBQUEsU0FDQUMsT0FBQSxTQUNBQyxPQUFBLFNBQ0FDLFFBQUEsU0FDQUMs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VSxTQUNBOTFWLEtBQUE4bEQsUUFBQThLLEVBQUE5SyxTQUFBNXhCLEVBQUE0eEIsU0FBQSxFQUNBOWxELEtBQUErMVYsTUFBQW5sUyxFQUFBbWxTLE9BQUE3aFUsRUFBQTZoVSxNQUVBcjJTLEVBQUFuL0MsS0FBQVAsS0FBQTR3RCxFQUFBalIsTUFBQTMvQyxLQUFBc2dELE9BQUFwc0IsR0FBQSxDQUNBcGIsUUFBQTgzQyxFQUFBOTNDLFNBQUFvYixFQUFBcGIsU0FBQSxFQUNBNVYsS0FBQTB0RCxFQUFBMXRELE1BQUFneEIsRUFBQWh4QixNQUFBLElBSUFsRCxLQUFBZ3BCLFNBQUFxeVcsRUFBQXJ5VyxTQUNBaHBCLEtBQUFxcEIsU0FBQWd5VyxFQUFBaHlXLFNBQ0FycEIsS0FBQW9wQixLQUFBaXlXLEVBQUFqeVcsS0FDQXBwQixLQUFBeXBCLEtBQUE0eFcsRUFBQTV4VyxLQUNBenBCLEtBQUFrcEIsS0FBQW15VyxFQUFBbnlXLEtBbkRBdHBCLEVBQUFELFFBQUFzbEUsRUFzREFBLEVBQUFqakUsVUFBQWxCLE9BQUFZLE9BQUFnK0MsRUFBQTE5QyxXQU9BaWpFLEVBQUFqakUsVUFBQStoQyxNQUFBLFdBQ0EsV0FBQWtoQyxFQUFBamxFIiwiZmlsZSI6InRyZXpvci5qcy11bWQubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJ0cmV6b3IuanMtdW1kXCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcInRyZXpvci5qcy11bWRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1widHJlem9yLmpzLXVtZFwiXSA9IGZhY3RvcnkoKTtcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzLCBmdW5jdGlvbigpIHtcbnJldHVybiAiLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gMTEzKTtcbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vZGUvbm8tZGVwcmVjYXRlZC1hcGkgKi9cbnZhciBidWZmZXIgPSByZXF1aXJlKCdidWZmZXInKVxudmFyIEJ1ZmZlciA9IGJ1ZmZlci5CdWZmZXJcblxuLy8gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgT2JqZWN0LmtleXMgZm9yIG9sZCBicm93c2Vyc1xuZnVuY3Rpb24gY29weVByb3BzIChzcmMsIGRzdCkge1xuICBmb3IgKHZhciBrZXkgaW4gc3JjKSB7XG4gICAgZHN0W2tleV0gPSBzcmNba2V5XVxuICB9XG59XG5pZiAoQnVmZmVyLmZyb20gJiYgQnVmZmVyLmFsbG9jICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZSAmJiBCdWZmZXIuYWxsb2NVbnNhZmVTbG93KSB7XG4gIG1vZHVsZS5leHBvcnRzID0gYnVmZmVyXG59IGVsc2Uge1xuICAvLyBDb3B5IHByb3BlcnRpZXMgZnJvbSByZXF1aXJlKCdidWZmZXInKVxuICBjb3B5UHJvcHMoYnVmZmVyLCBleHBvcnRzKVxuICBleHBvcnRzLkJ1ZmZlciA9IFNhZmVCdWZmZXJcbn1cblxuZnVuY3Rpb24gU2FmZUJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIEJ1ZmZlcihhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuLy8gQ29weSBzdGF0aWMgbWV0aG9kcyBmcm9tIEJ1ZmZlclxuY29weVByb3BzKEJ1ZmZlciwgU2FmZUJ1ZmZlcilcblxuU2FmZUJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGJ1Zi5maWxsKDApXG4gIH1cbiAgcmV0dXJuIGJ1ZlxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoc2l6ZSlcbn1cblxuU2FmZUJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlci5TbG93QnVmZmVyKHNpemUpXG59XG4iLCIvKiFcbiAqIFRoZSBidWZmZXIgbW9kdWxlIGZyb20gbm9kZS5qcywgZm9yIHRoZSBicm93c2VyLlxuICpcbiAqIEBhdXRob3IgICBGZXJvc3MgQWJvdWtoYWRpamVoIDxmZXJvc3NAZmVyb3NzLm9yZz4gPGh0dHA6Ly9mZXJvc3Mub3JnPlxuICogQGxpY2Vuc2UgIE1JVFxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90byAqL1xuXG4ndXNlIHN0cmljdCdcblxudmFyIGJhc2U2NCA9IHJlcXVpcmUoJ2Jhc2U2NC1qcycpXG52YXIgaWVlZTc1NCA9IHJlcXVpcmUoJ2llZWU3NTQnKVxudmFyIGlzQXJyYXkgPSByZXF1aXJlKCdpc2FycmF5JylcblxuZXhwb3J0cy5CdWZmZXIgPSBCdWZmZXJcbmV4cG9ydHMuU2xvd0J1ZmZlciA9IFNsb3dCdWZmZXJcbmV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVMgPSA1MFxuXG4vKipcbiAqIElmIGBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVGA6XG4gKiAgID09PSB0cnVlICAgIFVzZSBVaW50OEFycmF5IGltcGxlbWVudGF0aW9uIChmYXN0ZXN0KVxuICogICA9PT0gZmFsc2UgICBVc2UgT2JqZWN0IGltcGxlbWVudGF0aW9uIChtb3N0IGNvbXBhdGlibGUsIGV2ZW4gSUU2KVxuICpcbiAqIEJyb3dzZXJzIHRoYXQgc3VwcG9ydCB0eXBlZCBhcnJheXMgYXJlIElFIDEwKywgRmlyZWZveCA0KywgQ2hyb21lIDcrLCBTYWZhcmkgNS4xKyxcbiAqIE9wZXJhIDExLjYrLCBpT1MgNC4yKy5cbiAqXG4gKiBEdWUgdG8gdmFyaW91cyBicm93c2VyIGJ1Z3MsIHNvbWV0aW1lcyB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uIHdpbGwgYmUgdXNlZCBldmVuXG4gKiB3aGVuIHRoZSBicm93c2VyIHN1cHBvcnRzIHR5cGVkIGFycmF5cy5cbiAqXG4gKiBOb3RlOlxuICpcbiAqICAgLSBGaXJlZm94IDQtMjkgbGFja3Mgc3VwcG9ydCBmb3IgYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIHRvIGBVaW50OEFycmF5YCBpbnN0YW5jZXMsXG4gKiAgICAgU2VlOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD02OTU0MzguXG4gKlxuICogICAtIENocm9tZSA5LTEwIGlzIG1pc3NpbmcgdGhlIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24uXG4gKlxuICogICAtIElFMTAgaGFzIGEgYnJva2VuIGBUeXBlZEFycmF5LnByb3RvdHlwZS5zdWJhcnJheWAgZnVuY3Rpb24gd2hpY2ggcmV0dXJucyBhcnJheXMgb2ZcbiAqICAgICBpbmNvcnJlY3QgbGVuZ3RoIGluIHNvbWUgc2l0dWF0aW9ucy5cblxuICogV2UgZGV0ZWN0IHRoZXNlIGJ1Z2d5IGJyb3dzZXJzIGFuZCBzZXQgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYCB0byBgZmFsc2VgIHNvIHRoZXlcbiAqIGdldCB0aGUgT2JqZWN0IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBzbG93ZXIgYnV0IGJlaGF2ZXMgY29ycmVjdGx5LlxuICovXG5CdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCA9IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUICE9PSB1bmRlZmluZWRcbiAgPyBnbG9iYWwuVFlQRURfQVJSQVlfU1VQUE9SVFxuICA6IHR5cGVkQXJyYXlTdXBwb3J0KClcblxuLypcbiAqIEV4cG9ydCBrTWF4TGVuZ3RoIGFmdGVyIHR5cGVkIGFycmF5IHN1cHBvcnQgaXMgZGV0ZXJtaW5lZC5cbiAqL1xuZXhwb3J0cy5rTWF4TGVuZ3RoID0ga01heExlbmd0aCgpXG5cbmZ1bmN0aW9uIHR5cGVkQXJyYXlTdXBwb3J0ICgpIHtcbiAgdHJ5IHtcbiAgICB2YXIgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMSlcbiAgICBhcnIuX19wcm90b19fID0ge19fcHJvdG9fXzogVWludDhBcnJheS5wcm90b3R5cGUsIGZvbzogZnVuY3Rpb24gKCkgeyByZXR1cm4gNDIgfX1cbiAgICByZXR1cm4gYXJyLmZvbygpID09PSA0MiAmJiAvLyB0eXBlZCBhcnJheSBpbnN0YW5jZXMgY2FuIGJlIGF1Z21lbnRlZFxuICAgICAgICB0eXBlb2YgYXJyLnN1YmFycmF5ID09PSAnZnVuY3Rpb24nICYmIC8vIGNocm9tZSA5LTEwIGxhY2sgYHN1YmFycmF5YFxuICAgICAgICBhcnIuc3ViYXJyYXkoMSwgMSkuYnl0ZUxlbmd0aCA9PT0gMCAvLyBpZTEwIGhhcyBicm9rZW4gYHN1YmFycmF5YFxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuZnVuY3Rpb24ga01heExlbmd0aCAoKSB7XG4gIHJldHVybiBCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVFxuICAgID8gMHg3ZmZmZmZmZlxuICAgIDogMHgzZmZmZmZmZlxufVxuXG5mdW5jdGlvbiBjcmVhdGVCdWZmZXIgKHRoYXQsIGxlbmd0aCkge1xuICBpZiAoa01heExlbmd0aCgpIDwgbGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgdHlwZWQgYXJyYXkgbGVuZ3RoJylcbiAgfVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICBpZiAodGhhdCA9PT0gbnVsbCkge1xuICAgICAgdGhhdCA9IG5ldyBCdWZmZXIobGVuZ3RoKVxuICAgIH1cbiAgICB0aGF0Lmxlbmd0aCA9IGxlbmd0aFxuICB9XG5cbiAgcmV0dXJuIHRoYXRcbn1cblxuLyoqXG4gKiBUaGUgQnVmZmVyIGNvbnN0cnVjdG9yIHJldHVybnMgaW5zdGFuY2VzIG9mIGBVaW50OEFycmF5YCB0aGF0IGhhdmUgdGhlaXJcbiAqIHByb3RvdHlwZSBjaGFuZ2VkIHRvIGBCdWZmZXIucHJvdG90eXBlYC4gRnVydGhlcm1vcmUsIGBCdWZmZXJgIGlzIGEgc3ViY2xhc3Mgb2ZcbiAqIGBVaW50OEFycmF5YCwgc28gdGhlIHJldHVybmVkIGluc3RhbmNlcyB3aWxsIGhhdmUgYWxsIHRoZSBub2RlIGBCdWZmZXJgIG1ldGhvZHNcbiAqIGFuZCB0aGUgYFVpbnQ4QXJyYXlgIG1ldGhvZHMuIFNxdWFyZSBicmFja2V0IG5vdGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkIC0tIGl0XG4gKiByZXR1cm5zIGEgc2luZ2xlIG9jdGV0LlxuICpcbiAqIFRoZSBgVWludDhBcnJheWAgcHJvdG90eXBlIHJlbWFpbnMgdW5tb2RpZmllZC5cbiAqL1xuXG5mdW5jdGlvbiBCdWZmZXIgKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQgJiYgISh0aGlzIGluc3RhbmNlb2YgQnVmZmVyKSkge1xuICAgIHJldHVybiBuZXcgQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgLy8gQ29tbW9uIGNhc2UuXG4gIGlmICh0eXBlb2YgYXJnID09PSAnbnVtYmVyJykge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmdPck9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0lmIGVuY29kaW5nIGlzIHNwZWNpZmllZCB0aGVuIHRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nJ1xuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gYWxsb2NVbnNhZmUodGhpcywgYXJnKVxuICB9XG4gIHJldHVybiBmcm9tKHRoaXMsIGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG5CdWZmZXIucG9vbFNpemUgPSA4MTkyIC8vIG5vdCB1c2VkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb25cblxuLy8gVE9ETzogTGVnYWN5LCBub3QgbmVlZGVkIGFueW1vcmUuIFJlbW92ZSBpbiBuZXh0IG1ham9yIHZlcnNpb24uXG5CdWZmZXIuX2F1Z21lbnQgPSBmdW5jdGlvbiAoYXJyKSB7XG4gIGFyci5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIHJldHVybiBhcnJcbn1cblxuZnVuY3Rpb24gZnJvbSAodGhhdCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBtdXN0IG5vdCBiZSBhIG51bWJlcicpXG4gIH1cblxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIGZyb21BcnJheUJ1ZmZlcih0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZnJvbVN0cmluZyh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldClcbiAgfVxuXG4gIHJldHVybiBmcm9tT2JqZWN0KHRoYXQsIHZhbHVlKVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIEJ1ZmZlcihhcmcsIGVuY29kaW5nKSBidXQgdGhyb3dzIGEgVHlwZUVycm9yXG4gKiBpZiB2YWx1ZSBpcyBhIG51bWJlci5cbiAqIEJ1ZmZlci5mcm9tKHN0clssIGVuY29kaW5nXSlcbiAqIEJ1ZmZlci5mcm9tKGFycmF5KVxuICogQnVmZmVyLmZyb20oYnVmZmVyKVxuICogQnVmZmVyLmZyb20oYXJyYXlCdWZmZXJbLCBieXRlT2Zmc2V0WywgbGVuZ3RoXV0pXG4gKiovXG5CdWZmZXIuZnJvbSA9IGZ1bmN0aW9uICh2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBmcm9tKG51bGwsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbmlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICBCdWZmZXIucHJvdG90eXBlLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXkucHJvdG90eXBlXG4gIEJ1ZmZlci5fX3Byb3RvX18gPSBVaW50OEFycmF5XG4gIGlmICh0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wuc3BlY2llcyAmJlxuICAgICAgQnVmZmVyW1N5bWJvbC5zcGVjaWVzXSA9PT0gQnVmZmVyKSB7XG4gICAgLy8gRml4IHN1YmFycmF5KCkgaW4gRVMyMDE2LiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mZXJvc3MvYnVmZmVyL3B1bGwvOTdcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQnVmZmVyLCBTeW1ib2wuc3BlY2llcywge1xuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFNpemUgKHNpemUpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9IGVsc2UgaWYgKHNpemUgPCAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1wic2l6ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG5lZ2F0aXZlJylcbiAgfVxufVxuXG5mdW5jdGlvbiBhbGxvYyAodGhhdCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICBpZiAoc2l6ZSA8PSAwKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxuICB9XG4gIGlmIChmaWxsICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPbmx5IHBheSBhdHRlbnRpb24gdG8gZW5jb2RpbmcgaWYgaXQncyBhIHN0cmluZy4gVGhpc1xuICAgIC8vIHByZXZlbnRzIGFjY2lkZW50YWxseSBzZW5kaW5nIGluIGEgbnVtYmVyIHRoYXQgd291bGRcbiAgICAvLyBiZSBpbnRlcnByZXR0ZWQgYXMgYSBzdGFydCBvZmZzZXQuXG4gICAgcmV0dXJuIHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZydcbiAgICAgID8gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgICA6IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKS5maWxsKGZpbGwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplKVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXcgZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqIGFsbG9jKHNpemVbLCBmaWxsWywgZW5jb2RpbmddXSlcbiAqKi9cbkJ1ZmZlci5hbGxvYyA9IGZ1bmN0aW9uIChzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICByZXR1cm4gYWxsb2MobnVsbCwgc2l6ZSwgZmlsbCwgZW5jb2RpbmcpXG59XG5cbmZ1bmN0aW9uIGFsbG9jVW5zYWZlICh0aGF0LCBzaXplKSB7XG4gIGFzc2VydFNpemUoc2l6ZSlcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBzaXplIDwgMCA/IDAgOiBjaGVja2VkKHNpemUpIHwgMClcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG4gICAgICB0aGF0W2ldID0gMFxuICAgIH1cbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gQnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKiAqL1xuQnVmZmVyLmFsbG9jVW5zYWZlID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG4vKipcbiAqIEVxdWl2YWxlbnQgdG8gU2xvd0J1ZmZlcihudW0pLCBieSBkZWZhdWx0IGNyZWF0ZXMgYSBub24temVyby1maWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICovXG5CdWZmZXIuYWxsb2NVbnNhZmVTbG93ID0gZnVuY3Rpb24gKHNpemUpIHtcbiAgcmV0dXJuIGFsbG9jVW5zYWZlKG51bGwsIHNpemUpXG59XG5cbmZ1bmN0aW9uIGZyb21TdHJpbmcgKHRoYXQsIHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycgfHwgZW5jb2RpbmcgPT09ICcnKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgfVxuXG4gIGlmICghQnVmZmVyLmlzRW5jb2RpbmcoZW5jb2RpbmcpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJlbmNvZGluZ1wiIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgZW5jb2RpbmcnKVxuICB9XG5cbiAgdmFyIGxlbmd0aCA9IGJ5dGVMZW5ndGgoc3RyaW5nLCBlbmNvZGluZykgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuXG4gIHZhciBhY3R1YWwgPSB0aGF0LndyaXRlKHN0cmluZywgZW5jb2RpbmcpXG5cbiAgaWYgKGFjdHVhbCAhPT0gbGVuZ3RoKSB7XG4gICAgLy8gV3JpdGluZyBhIGhleCBzdHJpbmcsIGZvciBleGFtcGxlLCB0aGF0IGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycyB3aWxsXG4gICAgLy8gY2F1c2UgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgaW52YWxpZCBjaGFyYWN0ZXIgdG8gYmUgaWdub3JlZC4gKGUuZy5cbiAgICAvLyAnYWJ4eGNkJyB3aWxsIGJlIHRyZWF0ZWQgYXMgJ2FiJylcbiAgICB0aGF0ID0gdGhhdC5zbGljZSgwLCBhY3R1YWwpXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlMaWtlICh0aGF0LCBhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoIDwgMCA/IDAgOiBjaGVja2VkKGFycmF5Lmxlbmd0aCkgfCAwXG4gIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuZ3RoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7XG4gICAgdGhhdFtpXSA9IGFycmF5W2ldICYgMjU1XG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbUFycmF5QnVmZmVyICh0aGF0LCBhcnJheSwgYnl0ZU9mZnNldCwgbGVuZ3RoKSB7XG4gIGFycmF5LmJ5dGVMZW5ndGggLy8gdGhpcyB0aHJvd3MgaWYgYGFycmF5YCBpcyBub3QgYSB2YWxpZCBBcnJheUJ1ZmZlclxuXG4gIGlmIChieXRlT2Zmc2V0IDwgMCB8fCBhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdcXCdvZmZzZXRcXCcgaXMgb3V0IG9mIGJvdW5kcycpXG4gIH1cblxuICBpZiAoYXJyYXkuYnl0ZUxlbmd0aCA8IGJ5dGVPZmZzZXQgKyAobGVuZ3RoIHx8IDApKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ2xlbmd0aFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChieXRlT2Zmc2V0ID09PSB1bmRlZmluZWQgJiYgbGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5KVxuICB9IGVsc2UgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgYXJyYXkgPSBuZXcgVWludDhBcnJheShhcnJheSwgYnl0ZU9mZnNldClcbiAgfSBlbHNlIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBSZXR1cm4gYW4gYXVnbWVudGVkIGBVaW50OEFycmF5YCBpbnN0YW5jZSwgZm9yIGJlc3QgcGVyZm9ybWFuY2VcbiAgICB0aGF0ID0gYXJyYXlcbiAgICB0aGF0Ll9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgfSBlbHNlIHtcbiAgICAvLyBGYWxsYmFjazogUmV0dXJuIGFuIG9iamVjdCBpbnN0YW5jZSBvZiB0aGUgQnVmZmVyIGNsYXNzXG4gICAgdGhhdCA9IGZyb21BcnJheUxpa2UodGhhdCwgYXJyYXkpXG4gIH1cbiAgcmV0dXJuIHRoYXRcbn1cblxuZnVuY3Rpb24gZnJvbU9iamVjdCAodGhhdCwgb2JqKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIob2JqKSkge1xuICAgIHZhciBsZW4gPSBjaGVja2VkKG9iai5sZW5ndGgpIHwgMFxuICAgIHRoYXQgPSBjcmVhdGVCdWZmZXIodGhhdCwgbGVuKVxuXG4gICAgaWYgKHRoYXQubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhhdFxuICAgIH1cblxuICAgIG9iai5jb3B5KHRoYXQsIDAsIDAsIGxlbilcbiAgICByZXR1cm4gdGhhdFxuICB9XG5cbiAgaWYgKG9iaikge1xuICAgIGlmICgodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBvYmouYnVmZmVyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHx8ICdsZW5ndGgnIGluIG9iaikge1xuICAgICAgaWYgKHR5cGVvZiBvYmoubGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBpc25hbihvYmoubGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIDApXG4gICAgICB9XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmopXG4gICAgfVxuXG4gICAgaWYgKG9iai50eXBlID09PSAnQnVmZmVyJyAmJiBpc0FycmF5KG9iai5kYXRhKSkge1xuICAgICAgcmV0dXJuIGZyb21BcnJheUxpa2UodGhhdCwgb2JqLmRhdGEpXG4gICAgfVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcignRmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZywgQnVmZmVyLCBBcnJheUJ1ZmZlciwgQXJyYXksIG9yIGFycmF5LWxpa2Ugb2JqZWN0LicpXG59XG5cbmZ1bmN0aW9uIGNoZWNrZWQgKGxlbmd0aCkge1xuICAvLyBOb3RlOiBjYW5ub3QgdXNlIGBsZW5ndGggPCBrTWF4TGVuZ3RoKClgIGhlcmUgYmVjYXVzZSB0aGF0IGZhaWxzIHdoZW5cbiAgLy8gbGVuZ3RoIGlzIE5hTiAod2hpY2ggaXMgb3RoZXJ3aXNlIGNvZXJjZWQgdG8gemVyby4pXG4gIGlmIChsZW5ndGggPj0ga01heExlbmd0aCgpKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gYWxsb2NhdGUgQnVmZmVyIGxhcmdlciB0aGFuIG1heGltdW0gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3NpemU6IDB4JyArIGtNYXhMZW5ndGgoKS50b1N0cmluZygxNikgKyAnIGJ5dGVzJylcbiAgfVxuICByZXR1cm4gbGVuZ3RoIHwgMFxufVxuXG5mdW5jdGlvbiBTbG93QnVmZmVyIChsZW5ndGgpIHtcbiAgaWYgKCtsZW5ndGggIT0gbGVuZ3RoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG4gICAgbGVuZ3RoID0gMFxuICB9XG4gIHJldHVybiBCdWZmZXIuYWxsb2MoK2xlbmd0aClcbn1cblxuQnVmZmVyLmlzQnVmZmVyID0gZnVuY3Rpb24gaXNCdWZmZXIgKGIpIHtcbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcilcbn1cblxuQnVmZmVyLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlIChhLCBiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGEpIHx8ICFCdWZmZXIuaXNCdWZmZXIoYikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgbXVzdCBiZSBCdWZmZXJzJylcbiAgfVxuXG4gIGlmIChhID09PSBiKSByZXR1cm4gMFxuXG4gIHZhciB4ID0gYS5sZW5ndGhcbiAgdmFyIHkgPSBiLmxlbmd0aFxuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldXG4gICAgICB5ID0gYltpXVxuICAgICAgYnJlYWtcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHJldHVybiAtMVxuICBpZiAoeSA8IHgpIHJldHVybiAxXG4gIHJldHVybiAwXG59XG5cbkJ1ZmZlci5pc0VuY29kaW5nID0gZnVuY3Rpb24gaXNFbmNvZGluZyAoZW5jb2RpbmcpIHtcbiAgc3dpdGNoIChTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOlxuICAgIGNhc2UgJ3V0ZjgnOlxuICAgIGNhc2UgJ3V0Zi04JzpcbiAgICBjYXNlICdhc2NpaSc6XG4gICAgY2FzZSAnbGF0aW4xJzpcbiAgICBjYXNlICdiaW5hcnknOlxuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgY2FzZSAndWNzMic6XG4gICAgY2FzZSAndWNzLTInOlxuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbkJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQgKGxpc3QsIGxlbmd0aCkge1xuICBpZiAoIWlzQXJyYXkobGlzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImxpc3RcIiBhcmd1bWVudCBtdXN0IGJlIGFuIEFycmF5IG9mIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGxpc3QubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKVxuICB9XG5cbiAgdmFyIGlcbiAgaWYgKGxlbmd0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgbGVuZ3RoID0gMFxuICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7XG4gICAgICBsZW5ndGggKz0gbGlzdFtpXS5sZW5ndGhcbiAgICB9XG4gIH1cblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGxlbmd0aClcbiAgdmFyIHBvcyA9IDBcbiAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYnVmID0gbGlzdFtpXVxuICAgIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gICAgfVxuICAgIGJ1Zi5jb3B5KGJ1ZmZlciwgcG9zKVxuICAgIHBvcyArPSBidWYubGVuZ3RoXG4gIH1cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiBieXRlTGVuZ3RoIChzdHJpbmcsIGVuY29kaW5nKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmcubGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIEFycmF5QnVmZmVyLmlzVmlldyA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgKEFycmF5QnVmZmVyLmlzVmlldyhzdHJpbmcpIHx8IHN0cmluZyBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgIHJldHVybiBzdHJpbmcuYnl0ZUxlbmd0aFxuICB9XG4gIGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJykge1xuICAgIHN0cmluZyA9ICcnICsgc3RyaW5nXG4gIH1cblxuICB2YXIgbGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAobGVuID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIFVzZSBhIGZvciBsb29wIHRvIGF2b2lkIHJlY3Vyc2lvblxuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuICBmb3IgKDs7KSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsZW5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aFxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIGxlbiAqIDJcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBsZW4gPj4+IDFcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIHJldHVybiBiYXNlNjRUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHJldHVybiB1dGY4VG9CeXRlcyhzdHJpbmcpLmxlbmd0aCAvLyBhc3N1bWUgdXRmOFxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuQnVmZmVyLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5cbmZ1bmN0aW9uIHNsb3dUb1N0cmluZyAoZW5jb2RpbmcsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcblxuICAvLyBObyBuZWVkIHRvIHZlcmlmeSB0aGF0IFwidGhpcy5sZW5ndGggPD0gTUFYX1VJTlQzMlwiIHNpbmNlIGl0J3MgYSByZWFkLW9ubHlcbiAgLy8gcHJvcGVydHkgb2YgYSB0eXBlZCBhcnJheS5cblxuICAvLyBUaGlzIGJlaGF2ZXMgbmVpdGhlciBsaWtlIFN0cmluZyBub3IgVWludDhBcnJheSBpbiB0aGF0IHdlIHNldCBzdGFydC9lbmRcbiAgLy8gdG8gdGhlaXIgdXBwZXIvbG93ZXIgYm91bmRzIGlmIHRoZSB2YWx1ZSBwYXNzZWQgaXMgb3V0IG9mIHJhbmdlLlxuICAvLyB1bmRlZmluZWQgaXMgaGFuZGxlZCBzcGVjaWFsbHkgYXMgcGVyIEVDTUEtMjYyIDZ0aCBFZGl0aW9uLFxuICAvLyBTZWN0aW9uIDEzLjMuMy43IFJ1bnRpbWUgU2VtYW50aWNzOiBLZXllZEJpbmRpbmdJbml0aWFsaXphdGlvbi5cbiAgaWYgKHN0YXJ0ID09PSB1bmRlZmluZWQgfHwgc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgLy8gUmV0dXJuIGVhcmx5IGlmIHN0YXJ0ID4gdGhpcy5sZW5ndGguIERvbmUgaGVyZSB0byBwcmV2ZW50IHBvdGVudGlhbCB1aW50MzJcbiAgLy8gY29lcmNpb24gZmFpbCBiZWxvdy5cbiAgaWYgKHN0YXJ0ID4gdGhpcy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCB8fCBlbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIGVuZCA9IHRoaXMubGVuZ3RoXG4gIH1cblxuICBpZiAoZW5kIDw9IDApIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIC8vIEZvcmNlIGNvZXJzaW9uIHRvIHVpbnQzMi4gVGhpcyB3aWxsIGFsc28gY29lcmNlIGZhbHNleS9OYU4gdmFsdWVzIHRvIDAuXG4gIGVuZCA+Pj49IDBcbiAgc3RhcnQgPj4+PSAwXG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSAndXRmOCdcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1dGYxNmxlU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbi8vIFRoZSBwcm9wZXJ0eSBpcyB1c2VkIGJ5IGBCdWZmZXIuaXNCdWZmZXJgIGFuZCBgaXMtYnVmZmVyYCAoaW4gU2FmYXJpIDUtNykgdG8gZGV0ZWN0XG4vLyBCdWZmZXIgaW5zdGFuY2VzLlxuQnVmZmVyLnByb3RvdHlwZS5faXNCdWZmZXIgPSB0cnVlXG5cbmZ1bmN0aW9uIHN3YXAgKGIsIG4sIG0pIHtcbiAgdmFyIGkgPSBiW25dXG4gIGJbbl0gPSBiW21dXG4gIGJbbV0gPSBpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDE2ID0gZnVuY3Rpb24gc3dhcDE2ICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSAyICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAxNi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMSlcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXAzMiA9IGZ1bmN0aW9uIHN3YXAzMiAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgNCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgMzItYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDMpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDIpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwNjQgPSBmdW5jdGlvbiBzd2FwNjQgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDggIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDY0LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDgpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyA3KVxuICAgIHN3YXAodGhpcywgaSArIDEsIGkgKyA2KVxuICAgIHN3YXAodGhpcywgaSArIDIsIGkgKyA1KVxuICAgIHN3YXAodGhpcywgaSArIDMsIGkgKyA0KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyAoKSB7XG4gIHZhciBsZW5ndGggPSB0aGlzLmxlbmd0aCB8IDBcbiAgaWYgKGxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKSByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIDAsIGxlbmd0aClcbiAgcmV0dXJuIHNsb3dUb1N0cmluZy5hcHBseSh0aGlzLCBhcmd1bWVudHMpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuZXF1YWxzID0gZnVuY3Rpb24gZXF1YWxzIChiKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgaWYgKHRoaXMgPT09IGIpIHJldHVybiB0cnVlXG4gIHJldHVybiBCdWZmZXIuY29tcGFyZSh0aGlzLCBiKSA9PT0gMFxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluc3BlY3QgPSBmdW5jdGlvbiBpbnNwZWN0ICgpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIHZhciBtYXggPSBleHBvcnRzLklOU1BFQ1RfTUFYX0JZVEVTXG4gIGlmICh0aGlzLmxlbmd0aCA+IDApIHtcbiAgICBzdHIgPSB0aGlzLnRvU3RyaW5nKCdoZXgnLCAwLCBtYXgpLm1hdGNoKC8uezJ9L2cpLmpvaW4oJyAnKVxuICAgIGlmICh0aGlzLmxlbmd0aCA+IG1heCkgc3RyICs9ICcgLi4uICdcbiAgfVxuICByZXR1cm4gJzxCdWZmZXIgJyArIHN0ciArICc+J1xufVxuXG5CdWZmZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiBjb21wYXJlICh0YXJnZXQsIHN0YXJ0LCBlbmQsIHRoaXNTdGFydCwgdGhpc0VuZCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih0YXJnZXQpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlcicpXG4gIH1cblxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0YXJ0ID0gMFxuICB9XG4gIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIGVuZCA9IHRhcmdldCA/IHRhcmdldC5sZW5ndGggOiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgdGhpc1N0YXJ0ID0gMFxuICB9XG4gIGlmICh0aGlzRW5kID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzRW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChzdGFydCA8IDAgfHwgZW5kID4gdGFyZ2V0Lmxlbmd0aCB8fCB0aGlzU3RhcnQgPCAwIHx8IHRoaXNFbmQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdvdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kICYmIHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgaWYgKHRoaXNTdGFydCA+PSB0aGlzRW5kKSB7XG4gICAgcmV0dXJuIC0xXG4gIH1cbiAgaWYgKHN0YXJ0ID49IGVuZCkge1xuICAgIHJldHVybiAxXG4gIH1cblxuICBzdGFydCA+Pj49IDBcbiAgZW5kID4+Pj0gMFxuICB0aGlzU3RhcnQgPj4+PSAwXG4gIHRoaXNFbmQgPj4+PSAwXG5cbiAgaWYgKHRoaXMgPT09IHRhcmdldCkgcmV0dXJuIDBcblxuICB2YXIgeCA9IHRoaXNFbmQgLSB0aGlzU3RhcnRcbiAgdmFyIHkgPSBlbmQgLSBzdGFydFxuICB2YXIgbGVuID0gTWF0aC5taW4oeCwgeSlcblxuICB2YXIgdGhpc0NvcHkgPSB0aGlzLnNsaWNlKHRoaXNTdGFydCwgdGhpc0VuZClcbiAgdmFyIHRhcmdldENvcHkgPSB0YXJnZXQuc2xpY2Uoc3RhcnQsIGVuZClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKHRoaXNDb3B5W2ldICE9PSB0YXJnZXRDb3B5W2ldKSB7XG4gICAgICB4ID0gdGhpc0NvcHlbaV1cbiAgICAgIHkgPSB0YXJnZXRDb3B5W2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuLy8gRmluZHMgZWl0aGVyIHRoZSBmaXJzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPj0gYGJ5dGVPZmZzZXRgLFxuLy8gT1IgdGhlIGxhc3QgaW5kZXggb2YgYHZhbGAgaW4gYGJ1ZmZlcmAgYXQgb2Zmc2V0IDw9IGBieXRlT2Zmc2V0YC5cbi8vXG4vLyBBcmd1bWVudHM6XG4vLyAtIGJ1ZmZlciAtIGEgQnVmZmVyIHRvIHNlYXJjaFxuLy8gLSB2YWwgLSBhIHN0cmluZywgQnVmZmVyLCBvciBudW1iZXJcbi8vIC0gYnl0ZU9mZnNldCAtIGFuIGluZGV4IGludG8gYGJ1ZmZlcmA7IHdpbGwgYmUgY2xhbXBlZCB0byBhbiBpbnQzMlxuLy8gLSBlbmNvZGluZyAtIGFuIG9wdGlvbmFsIGVuY29kaW5nLCByZWxldmFudCBpcyB2YWwgaXMgYSBzdHJpbmdcbi8vIC0gZGlyIC0gdHJ1ZSBmb3IgaW5kZXhPZiwgZmFsc2UgZm9yIGxhc3RJbmRleE9mXG5mdW5jdGlvbiBiaWRpcmVjdGlvbmFsSW5kZXhPZiAoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpIHtcbiAgLy8gRW1wdHkgYnVmZmVyIG1lYW5zIG5vIG1hdGNoXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAwKSByZXR1cm4gLTFcblxuICAvLyBOb3JtYWxpemUgYnl0ZU9mZnNldFxuICBpZiAodHlwZW9mIGJ5dGVPZmZzZXQgPT09ICdzdHJpbmcnKSB7XG4gICAgZW5jb2RpbmcgPSBieXRlT2Zmc2V0XG4gICAgYnl0ZU9mZnNldCA9IDBcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0ID4gMHg3ZmZmZmZmZikge1xuICAgIGJ5dGVPZmZzZXQgPSAweDdmZmZmZmZmXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IC0weDgwMDAwMDAwKSB7XG4gICAgYnl0ZU9mZnNldCA9IC0weDgwMDAwMDAwXG4gIH1cbiAgYnl0ZU9mZnNldCA9ICtieXRlT2Zmc2V0ICAvLyBDb2VyY2UgdG8gTnVtYmVyLlxuICBpZiAoaXNOYU4oYnl0ZU9mZnNldCkpIHtcbiAgICAvLyBieXRlT2Zmc2V0OiBpdCBpdCdzIHVuZGVmaW5lZCwgbnVsbCwgTmFOLCBcImZvb1wiLCBldGMsIHNlYXJjaCB3aG9sZSBidWZmZXJcbiAgICBieXRlT2Zmc2V0ID0gZGlyID8gMCA6IChidWZmZXIubGVuZ3RoIC0gMSlcbiAgfVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0OiBuZWdhdGl2ZSBvZmZzZXRzIHN0YXJ0IGZyb20gdGhlIGVuZCBvZiB0aGUgYnVmZmVyXG4gIGlmIChieXRlT2Zmc2V0IDwgMCkgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggKyBieXRlT2Zmc2V0XG4gIGlmIChieXRlT2Zmc2V0ID49IGJ1ZmZlci5sZW5ndGgpIHtcbiAgICBpZiAoZGlyKSByZXR1cm4gLTFcbiAgICBlbHNlIGJ5dGVPZmZzZXQgPSBidWZmZXIubGVuZ3RoIC0gMVxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPCAwKSB7XG4gICAgaWYgKGRpcikgYnl0ZU9mZnNldCA9IDBcbiAgICBlbHNlIHJldHVybiAtMVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIHZhbFxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICB2YWwgPSBCdWZmZXIuZnJvbSh2YWwsIGVuY29kaW5nKVxuICB9XG5cbiAgLy8gRmluYWxseSwgc2VhcmNoIGVpdGhlciBpbmRleE9mIChpZiBkaXIgaXMgdHJ1ZSkgb3IgbGFzdEluZGV4T2ZcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcih2YWwpKSB7XG4gICAgLy8gU3BlY2lhbCBjYXNlOiBsb29raW5nIGZvciBlbXB0eSBzdHJpbmcvYnVmZmVyIGFsd2F5cyBmYWlsc1xuICAgIGlmICh2YWwubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcilcbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDB4RkYgLy8gU2VhcmNoIGZvciBhIGJ5dGUgdmFsdWUgWzAtMjU1XVxuICAgIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJlxuICAgICAgICB0eXBlb2YgVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKGRpcikge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUuaW5kZXhPZi5jYWxsKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFVpbnQ4QXJyYXkucHJvdG90eXBlLmxhc3RJbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcnJheUluZGV4T2YoYnVmZmVyLCBbIHZhbCBdLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9XG5cbiAgdGhyb3cgbmV3IFR5cGVFcnJvcigndmFsIG11c3QgYmUgc3RyaW5nLCBudW1iZXIgb3IgQnVmZmVyJylcbn1cblxuZnVuY3Rpb24gYXJyYXlJbmRleE9mIChhcnIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICB2YXIgaW5kZXhTaXplID0gMVxuICB2YXIgYXJyTGVuZ3RoID0gYXJyLmxlbmd0aFxuICB2YXIgdmFsTGVuZ3RoID0gdmFsLmxlbmd0aFxuXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSBTdHJpbmcoZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICBpZiAoZW5jb2RpbmcgPT09ICd1Y3MyJyB8fCBlbmNvZGluZyA9PT0gJ3Vjcy0yJyB8fFxuICAgICAgICBlbmNvZGluZyA9PT0gJ3V0ZjE2bGUnIHx8IGVuY29kaW5nID09PSAndXRmLTE2bGUnKSB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA8IDIgfHwgdmFsLmxlbmd0aCA8IDIpIHtcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgICBpbmRleFNpemUgPSAyXG4gICAgICBhcnJMZW5ndGggLz0gMlxuICAgICAgdmFsTGVuZ3RoIC89IDJcbiAgICAgIGJ5dGVPZmZzZXQgLz0gMlxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWQgKGJ1ZiwgaSkge1xuICAgIGlmIChpbmRleFNpemUgPT09IDEpIHtcbiAgICAgIHJldHVybiBidWZbaV1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGJ1Zi5yZWFkVUludDE2QkUoaSAqIGluZGV4U2l6ZSlcbiAgICB9XG4gIH1cblxuICB2YXIgaVxuICBpZiAoZGlyKSB7XG4gICAgdmFyIGZvdW5kSW5kZXggPSAtMVxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPCBhcnJMZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHJlYWQoYXJyLCBpKSA9PT0gcmVhZCh2YWwsIGZvdW5kSW5kZXggPT09IC0xID8gMCA6IGkgLSBmb3VuZEluZGV4KSkge1xuICAgICAgICBpZiAoZm91bmRJbmRleCA9PT0gLTEpIGZvdW5kSW5kZXggPSBpXG4gICAgICAgIGlmIChpIC0gZm91bmRJbmRleCArIDEgPT09IHZhbExlbmd0aCkgcmV0dXJuIGZvdW5kSW5kZXggKiBpbmRleFNpemVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ICE9PSAtMSkgaSAtPSBpIC0gZm91bmRJbmRleFxuICAgICAgICBmb3VuZEluZGV4ID0gLTFcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGJ5dGVPZmZzZXQgKyB2YWxMZW5ndGggPiBhcnJMZW5ndGgpIGJ5dGVPZmZzZXQgPSBhcnJMZW5ndGggLSB2YWxMZW5ndGhcbiAgICBmb3IgKGkgPSBieXRlT2Zmc2V0OyBpID49IDA7IGktLSkge1xuICAgICAgdmFyIGZvdW5kID0gdHJ1ZVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB2YWxMZW5ndGg7IGorKykge1xuICAgICAgICBpZiAocmVhZChhcnIsIGkgKyBqKSAhPT0gcmVhZCh2YWwsIGopKSB7XG4gICAgICAgICAgZm91bmQgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGlcbiAgICB9XG4gIH1cblxuICByZXR1cm4gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmNsdWRlcyA9IGZ1bmN0aW9uIGluY2x1ZGVzICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiB0aGlzLmluZGV4T2YodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykgIT09IC0xXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5kZXhPZiA9IGZ1bmN0aW9uIGluZGV4T2YgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIGJpZGlyZWN0aW9uYWxJbmRleE9mKHRoaXMsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIHRydWUpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUubGFzdEluZGV4T2YgPSBmdW5jdGlvbiBsYXN0SW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZmFsc2UpXG59XG5cbmZ1bmN0aW9uIGhleFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgb2Zmc2V0ID0gTnVtYmVyKG9mZnNldCkgfHwgMFxuICB2YXIgcmVtYWluaW5nID0gYnVmLmxlbmd0aCAtIG9mZnNldFxuICBpZiAoIWxlbmd0aCkge1xuICAgIGxlbmd0aCA9IHJlbWFpbmluZ1xuICB9IGVsc2Uge1xuICAgIGxlbmd0aCA9IE51bWJlcihsZW5ndGgpXG4gICAgaWYgKGxlbmd0aCA+IHJlbWFpbmluZykge1xuICAgICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gICAgfVxuICB9XG5cbiAgLy8gbXVzdCBiZSBhbiBldmVuIG51bWJlciBvZiBkaWdpdHNcbiAgdmFyIHN0ckxlbiA9IHN0cmluZy5sZW5ndGhcbiAgaWYgKHN0ckxlbiAlIDIgIT09IDApIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgaGV4IHN0cmluZycpXG5cbiAgaWYgKGxlbmd0aCA+IHN0ckxlbiAvIDIpIHtcbiAgICBsZW5ndGggPSBzdHJMZW4gLyAyXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHZhciBwYXJzZWQgPSBwYXJzZUludChzdHJpbmcuc3Vic3RyKGkgKiAyLCAyKSwgMTYpXG4gICAgaWYgKGlzTmFOKHBhcnNlZCkpIHJldHVybiBpXG4gICAgYnVmW29mZnNldCArIGldID0gcGFyc2VkXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gdXRmOFdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmOFRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYXNjaWlXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGFzY2lpVG9CeXRlcyhzdHJpbmcpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBsYXRpbjFXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBhc2NpaVdyaXRlKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gYmFzZTY0V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcihiYXNlNjRUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIHVjczJXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKHV0ZjE2bGVUb0J5dGVzKHN0cmluZywgYnVmLmxlbmd0aCAtIG9mZnNldCksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiB3cml0ZSAoc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCwgZW5jb2RpbmcpIHtcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZylcbiAgaWYgKG9mZnNldCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5jb2RpbmcgPSAndXRmOCdcbiAgICBsZW5ndGggPSB0aGlzLmxlbmd0aFxuICAgIG9mZnNldCA9IDBcbiAgLy8gQnVmZmVyI3dyaXRlKHN0cmluZywgZW5jb2RpbmcpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgJiYgdHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IG9mZnNldFxuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBvZmZzZXRbLCBsZW5ndGhdWywgZW5jb2RpbmddKVxuICB9IGVsc2UgaWYgKGlzRmluaXRlKG9mZnNldCkpIHtcbiAgICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gICAgaWYgKGlzRmluaXRlKGxlbmd0aCkpIHtcbiAgICAgIGxlbmd0aCA9IGxlbmd0aCB8IDBcbiAgICAgIGlmIChlbmNvZGluZyA9PT0gdW5kZWZpbmVkKSBlbmNvZGluZyA9ICd1dGY4J1xuICAgIH0gZWxzZSB7XG4gICAgICBlbmNvZGluZyA9IGxlbmd0aFxuICAgICAgbGVuZ3RoID0gdW5kZWZpbmVkXG4gICAgfVxuICAvLyBsZWdhY3kgd3JpdGUoc3RyaW5nLCBlbmNvZGluZywgb2Zmc2V0LCBsZW5ndGgpIC0gcmVtb3ZlIGluIHYwLjEzXG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0J1ZmZlci53cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXRbLCBsZW5ndGhdKSBpcyBubyBsb25nZXIgc3VwcG9ydGVkJ1xuICAgIClcbiAgfVxuXG4gIHZhciByZW1haW5pbmcgPSB0aGlzLmxlbmd0aCAtIG9mZnNldFxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQgfHwgbGVuZ3RoID4gcmVtYWluaW5nKSBsZW5ndGggPSByZW1haW5pbmdcblxuICBpZiAoKHN0cmluZy5sZW5ndGggPiAwICYmIChsZW5ndGggPCAwIHx8IG9mZnNldCA8IDApKSB8fCBvZmZzZXQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdBdHRlbXB0IHRvIHdyaXRlIG91dHNpZGUgYnVmZmVyIGJvdW5kcycpXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gaGV4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiB1dGY4V3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYXNjaWknOlxuICAgICAgICByZXR1cm4gYXNjaWlXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxhdGluMVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICAgIC8vIFdhcm5pbmc6IG1heExlbmd0aCBub3QgdGFrZW4gaW50byBhY2NvdW50IGluIGJhc2U2NFdyaXRlXG4gICAgICAgIHJldHVybiBiYXNlNjRXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gdWNzMldyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgICAgICBlbmNvZGluZyA9ICgnJyArIGVuY29kaW5nKS50b0xvd2VyQ2FzZSgpXG4gICAgICAgIGxvd2VyZWRDYXNlID0gdHJ1ZVxuICAgIH1cbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIHRvSlNPTiAoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogJ0J1ZmZlcicsXG4gICAgZGF0YTogQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fYXJyIHx8IHRoaXMsIDApXG4gIH1cbn1cblxuZnVuY3Rpb24gYmFzZTY0U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICBpZiAoc3RhcnQgPT09IDAgJiYgZW5kID09PSBidWYubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGJhc2U2NC5mcm9tQnl0ZUFycmF5KGJ1ZilcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmLnNsaWNlKHN0YXJ0LCBlbmQpKVxuICB9XG59XG5cbmZ1bmN0aW9uIHV0ZjhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcbiAgdmFyIHJlcyA9IFtdXG5cbiAgdmFyIGkgPSBzdGFydFxuICB3aGlsZSAoaSA8IGVuZCkge1xuICAgIHZhciBmaXJzdEJ5dGUgPSBidWZbaV1cbiAgICB2YXIgY29kZVBvaW50ID0gbnVsbFxuICAgIHZhciBieXRlc1BlclNlcXVlbmNlID0gKGZpcnN0Qnl0ZSA+IDB4RUYpID8gNFxuICAgICAgOiAoZmlyc3RCeXRlID4gMHhERikgPyAzXG4gICAgICA6IChmaXJzdEJ5dGUgPiAweEJGKSA/IDJcbiAgICAgIDogMVxuXG4gICAgaWYgKGkgKyBieXRlc1BlclNlcXVlbmNlIDw9IGVuZCkge1xuICAgICAgdmFyIHNlY29uZEJ5dGUsIHRoaXJkQnl0ZSwgZm91cnRoQnl0ZSwgdGVtcENvZGVQb2ludFxuXG4gICAgICBzd2l0Y2ggKGJ5dGVzUGVyU2VxdWVuY2UpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChmaXJzdEJ5dGUgPCAweDgwKSB7XG4gICAgICAgICAgICBjb2RlUG9pbnQgPSBmaXJzdEJ5dGVcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHgxRikgPDwgMHg2IHwgKHNlY29uZEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweDdGKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGlmICgoc2Vjb25kQnl0ZSAmIDB4QzApID09PSAweDgwICYmICh0aGlyZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4QyB8IChzZWNvbmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKHRoaXJkQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0ZGICYmICh0ZW1wQ29kZVBvaW50IDwgMHhEODAwIHx8IHRlbXBDb2RlUG9pbnQgPiAweERGRkYpKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIHNlY29uZEJ5dGUgPSBidWZbaSArIDFdXG4gICAgICAgICAgdGhpcmRCeXRlID0gYnVmW2kgKyAyXVxuICAgICAgICAgIGZvdXJ0aEJ5dGUgPSBidWZbaSArIDNdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwICYmIChmb3VydGhCeXRlICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICAgIHRlbXBDb2RlUG9pbnQgPSAoZmlyc3RCeXRlICYgMHhGKSA8PCAweDEyIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweEMgfCAodGhpcmRCeXRlICYgMHgzRikgPDwgMHg2IHwgKGZvdXJ0aEJ5dGUgJiAweDNGKVxuICAgICAgICAgICAgaWYgKHRlbXBDb2RlUG9pbnQgPiAweEZGRkYgJiYgdGVtcENvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICAgICAgICAgIGNvZGVQb2ludCA9IHRlbXBDb2RlUG9pbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGVQb2ludCA9PT0gbnVsbCkge1xuICAgICAgLy8gd2UgZGlkIG5vdCBnZW5lcmF0ZSBhIHZhbGlkIGNvZGVQb2ludCBzbyBpbnNlcnQgYVxuICAgICAgLy8gcmVwbGFjZW1lbnQgY2hhciAoVStGRkZEKSBhbmQgYWR2YW5jZSBvbmx5IDEgYnl0ZVxuICAgICAgY29kZVBvaW50ID0gMHhGRkZEXG4gICAgICBieXRlc1BlclNlcXVlbmNlID0gMVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50ID4gMHhGRkZGKSB7XG4gICAgICAvLyBlbmNvZGUgdG8gdXRmMTYgKHN1cnJvZ2F0ZSBwYWlyIGRhbmNlKVxuICAgICAgY29kZVBvaW50IC09IDB4MTAwMDBcbiAgICAgIHJlcy5wdXNoKGNvZGVQb2ludCA+Pj4gMTAgJiAweDNGRiB8IDB4RDgwMClcbiAgICAgIGNvZGVQb2ludCA9IDB4REMwMCB8IGNvZGVQb2ludCAmIDB4M0ZGXG4gICAgfVxuXG4gICAgcmVzLnB1c2goY29kZVBvaW50KVxuICAgIGkgKz0gYnl0ZXNQZXJTZXF1ZW5jZVxuICB9XG5cbiAgcmV0dXJuIGRlY29kZUNvZGVQb2ludHNBcnJheShyZXMpXG59XG5cbi8vIEJhc2VkIG9uIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9hLzIyNzQ3MjcyLzY4MDc0MiwgdGhlIGJyb3dzZXIgd2l0aFxuLy8gdGhlIGxvd2VzdCBsaW1pdCBpcyBDaHJvbWUsIHdpdGggMHgxMDAwMCBhcmdzLlxuLy8gV2UgZ28gMSBtYWduaXR1ZGUgbGVzcywgZm9yIHNhZmV0eVxudmFyIE1BWF9BUkdVTUVOVFNfTEVOR1RIID0gMHgxMDAwXG5cbmZ1bmN0aW9uIGRlY29kZUNvZGVQb2ludHNBcnJheSAoY29kZVBvaW50cykge1xuICB2YXIgbGVuID0gY29kZVBvaW50cy5sZW5ndGhcbiAgaWYgKGxlbiA8PSBNQVhfQVJHVU1FTlRTX0xFTkdUSCkge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgY29kZVBvaW50cykgLy8gYXZvaWQgZXh0cmEgc2xpY2UoKVxuICB9XG5cbiAgLy8gRGVjb2RlIGluIGNodW5rcyB0byBhdm9pZCBcImNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZFwiLlxuICB2YXIgcmVzID0gJydcbiAgdmFyIGkgPSAwXG4gIHdoaWxlIChpIDwgbGVuKSB7XG4gICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoXG4gICAgICBTdHJpbmcsXG4gICAgICBjb2RlUG9pbnRzLnNsaWNlKGksIGkgKz0gTUFYX0FSR1VNRU5UU19MRU5HVEgpXG4gICAgKVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0gJiAweDdGKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gbGF0aW4xU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgcmV0ID0gJydcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgcmV0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnVmW2ldKVxuICB9XG4gIHJldHVybiByZXRcbn1cblxuZnVuY3Rpb24gaGV4U2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gYnVmLmxlbmd0aFxuXG4gIGlmICghc3RhcnQgfHwgc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgfHwgZW5kIDwgMCB8fCBlbmQgPiBsZW4pIGVuZCA9IGxlblxuXG4gIHZhciBvdXQgPSAnJ1xuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIG91dCArPSB0b0hleChidWZbaV0pXG4gIH1cbiAgcmV0dXJuIG91dFxufVxuXG5mdW5jdGlvbiB1dGYxNmxlU2xpY2UgKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgYnl0ZXMgPSBidWYuc2xpY2Uoc3RhcnQsIGVuZClcbiAgdmFyIHJlcyA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSArIGJ5dGVzW2kgKyAxXSAqIDI1NilcbiAgfVxuICByZXR1cm4gcmVzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbiBzbGljZSAoc3RhcnQsIGVuZCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgc3RhcnQgPSB+fnN0YXJ0XG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gbGVuIDogfn5lbmRcblxuICBpZiAoc3RhcnQgPCAwKSB7XG4gICAgc3RhcnQgKz0gbGVuXG4gICAgaWYgKHN0YXJ0IDwgMCkgc3RhcnQgPSAwXG4gIH0gZWxzZSBpZiAoc3RhcnQgPiBsZW4pIHtcbiAgICBzdGFydCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuXG4gICAgaWYgKGVuZCA8IDApIGVuZCA9IDBcbiAgfSBlbHNlIGlmIChlbmQgPiBsZW4pIHtcbiAgICBlbmQgPSBsZW5cbiAgfVxuXG4gIGlmIChlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICB2YXIgbmV3QnVmXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIG5ld0J1ZiA9IHRoaXMuc3ViYXJyYXkoc3RhcnQsIGVuZClcbiAgICBuZXdCdWYuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIHZhciBzbGljZUxlbiA9IGVuZCAtIHN0YXJ0XG4gICAgbmV3QnVmID0gbmV3IEJ1ZmZlcihzbGljZUxlbiwgdW5kZWZpbmVkKVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2xpY2VMZW47ICsraSkge1xuICAgICAgbmV3QnVmW2ldID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5ld0J1ZlxufVxuXG4vKlxuICogTmVlZCB0byBtYWtlIHN1cmUgdGhhdCBidWZmZXIgaXNuJ3QgdHJ5aW5nIHRvIHdyaXRlIG91dCBvZiBib3VuZHMuXG4gKi9cbmZ1bmN0aW9uIGNoZWNrT2Zmc2V0IChvZmZzZXQsIGV4dCwgbGVuZ3RoKSB7XG4gIGlmICgob2Zmc2V0ICUgMSkgIT09IDAgfHwgb2Zmc2V0IDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ29mZnNldCBpcyBub3QgdWludCcpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBsZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdUcnlpbmcgdG8gYWNjZXNzIGJleW9uZCBidWZmZXIgbGVuZ3RoJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludExFID0gZnVuY3Rpb24gcmVhZFVJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludEJFID0gZnVuY3Rpb24gcmVhZFVJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcbiAgfVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldCArIC0tYnl0ZUxlbmd0aF1cbiAgdmFyIG11bCA9IDFcbiAgd2hpbGUgKGJ5dGVMZW5ndGggPiAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50OCA9IGZ1bmN0aW9uIHJlYWRVSW50OCAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDEsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gdGhpc1tvZmZzZXRdXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkxFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MTZCRSA9IGZ1bmN0aW9uIHJlYWRVSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCA4KSB8IHRoaXNbb2Zmc2V0ICsgMV1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyTEUgPSBmdW5jdGlvbiByZWFkVUludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKCh0aGlzW29mZnNldF0pIHxcbiAgICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAgICh0aGlzW29mZnNldCArIDJdIDw8IDE2KSkgK1xuICAgICAgKHRoaXNbb2Zmc2V0ICsgM10gKiAweDEwMDAwMDApXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQzMkJFID0gZnVuY3Rpb24gcmVhZFVJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gKiAweDEwMDAwMDApICtcbiAgICAoKHRoaXNbb2Zmc2V0ICsgMV0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCA4KSB8XG4gICAgdGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50TEUgPSBmdW5jdGlvbiByZWFkSW50TEUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdXG4gIHZhciBtdWwgPSAxXG4gIHZhciBpID0gMFxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIGldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50QkUgPSBmdW5jdGlvbiByZWFkSW50QkUgKG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBieXRlTGVuZ3RoID0gYnl0ZUxlbmd0aCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCBieXRlTGVuZ3RoLCB0aGlzLmxlbmd0aClcblxuICB2YXIgaSA9IGJ5dGVMZW5ndGhcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1pXVxuICB3aGlsZSAoaSA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWldICogbXVsXG4gIH1cbiAgbXVsICo9IDB4ODBcblxuICBpZiAodmFsID49IG11bCkgdmFsIC09IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoKVxuXG4gIHJldHVybiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50OCA9IGZ1bmN0aW9uIHJlYWRJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIGlmICghKHRoaXNbb2Zmc2V0XSAmIDB4ODApKSByZXR1cm4gKHRoaXNbb2Zmc2V0XSlcbiAgcmV0dXJuICgoMHhmZiAtIHRoaXNbb2Zmc2V0XSArIDEpICogLTEpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2TEUgPSBmdW5jdGlvbiByZWFkSW50MTZMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXRdIHwgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQxNkJFID0gZnVuY3Rpb24gcmVhZEludDE2QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgMV0gfCAodGhpc1tvZmZzZXRdIDw8IDgpXG4gIHJldHVybiAodmFsICYgMHg4MDAwKSA/IHZhbCB8IDB4RkZGRjAwMDAgOiB2YWxcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0pIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSA8PCAyNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MzJCRSA9IGZ1bmN0aW9uIHJlYWRJbnQzMkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG5cbiAgcmV0dXJuICh0aGlzW29mZnNldF0gPDwgMjQpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAzXSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRMRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdExFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRmxvYXRCRSA9IGZ1bmN0aW9uIHJlYWRGbG9hdEJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgNCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCBmYWxzZSwgMjMsIDQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZERvdWJsZUxFID0gZnVuY3Rpb24gcmVhZERvdWJsZUxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgOCwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiBpZWVlNzU0LnJlYWQodGhpcywgb2Zmc2V0LCB0cnVlLCA1MiwgOClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlQkUgPSBmdW5jdGlvbiByZWFkRG91YmxlQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCA1MiwgOClcbn1cblxuZnVuY3Rpb24gY2hlY2tJbnQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWYpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImJ1ZmZlclwiIGFyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAodmFsdWUgPiBtYXggfHwgdmFsdWUgPCBtaW4pIHRocm93IG5ldyBSYW5nZUVycm9yKCdcInZhbHVlXCIgYXJndW1lbnQgaXMgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlVUludExFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlVUludEJFICh2YWx1ZSwgb2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIG1heEJ5dGVzID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpIC0gMVxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG1heEJ5dGVzLCAwKVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAodmFsdWUgLyBtdWwpICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVVSW50OCAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAxLCAweGZmLCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDE2IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDIpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlICYgKDB4ZmYgPDwgKDggKiAobGl0dGxlRW5kaWFuID8gaSA6IDEgLSBpKSkpKSA+Pj5cbiAgICAgIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpICogOFxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgMlxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZVVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4ZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbmZ1bmN0aW9uIG9iamVjdFdyaXRlVUludDMyIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbikge1xuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgZm9yICh2YXIgaSA9IDAsIGogPSBNYXRoLm1pbihidWYubGVuZ3RoIC0gb2Zmc2V0LCA0KTsgaSA8IGo7ICsraSkge1xuICAgIGJ1ZltvZmZzZXQgKyBpXSA9ICh2YWx1ZSA+Pj4gKGxpdHRsZUVuZGlhbiA/IGkgOiAzIC0gaSkgKiA4KSAmIDB4ZmZcbiAgfVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZVVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4ZmZmZmZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRMRSA9IGZ1bmN0aW9uIHdyaXRlSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSAwXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0XSA9IHZhbHVlICYgMHhGRlxuICB3aGlsZSAoKytpIDwgYnl0ZUxlbmd0aCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSAtIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnRCRSA9IGZ1bmN0aW9uIHdyaXRlSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIHZhciBsaW1pdCA9IE1hdGgucG93KDIsIDggKiBieXRlTGVuZ3RoIC0gMSlcblxuICAgIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIGxpbWl0IC0gMSwgLWxpbWl0KVxuICB9XG5cbiAgdmFyIGkgPSBieXRlTGVuZ3RoIC0gMVxuICB2YXIgbXVsID0gMVxuICB2YXIgc3ViID0gMFxuICB0aGlzW29mZnNldCArIGldID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgtLWkgPj0gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIGlmICh2YWx1ZSA8IDAgJiYgc3ViID09PSAwICYmIHRoaXNbb2Zmc2V0ICsgaSArIDFdICE9PSAwKSB7XG4gICAgICBzdWIgPSAxXG4gICAgfVxuICAgIHRoaXNbb2Zmc2V0ICsgaV0gPSAoKHZhbHVlIC8gbXVsKSA+PiAwKSAtIHN1YiAmIDB4RkZcbiAgfVxuXG4gIHJldHVybiBvZmZzZXQgKyBieXRlTGVuZ3RoXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQ4ID0gZnVuY3Rpb24gd3JpdGVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4N2YsIC0weDgwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB2YWx1ZSA9IE1hdGguZmxvb3IodmFsdWUpXG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZiArIHZhbHVlICsgMVxuICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICByZXR1cm4gb2Zmc2V0ICsgMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MTZMRSA9IGZ1bmN0aW9uIHdyaXRlSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweDdmZmYsIC0weDgwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkJFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkxFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlSW50MzJCRSA9IGZ1bmN0aW9uIHdyaXRlSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweDdmZmZmZmZmLCAtMHg4MDAwMDAwMClcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmZmZmZmZmICsgdmFsdWUgKyAxXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlICYgMHhmZilcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSlcbiAgfVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5mdW5jdGlvbiBjaGVja0lFRUU3NTQgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgZXh0LCBtYXgsIG1pbikge1xuICBpZiAob2Zmc2V0ICsgZXh0ID4gYnVmLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0luZGV4IG91dCBvZiByYW5nZScpXG4gIGlmIChvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbn1cblxuZnVuY3Rpb24gd3JpdGVGbG9hdCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA0LCAzLjQwMjgyMzQ2NjM4NTI4ODZlKzM4LCAtMy40MDI4MjM0NjYzODUyODg2ZSszOClcbiAgfVxuICBpZWVlNzU0LndyaXRlKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuLCAyMywgNClcbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUZsb2F0TEUgPSBmdW5jdGlvbiB3cml0ZUZsb2F0TEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZUZsb2F0KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUsIG5vQXNzZXJ0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRCRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UsIG5vQXNzZXJ0KVxufVxuXG5mdW5jdGlvbiB3cml0ZURvdWJsZSAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja0lFRUU3NTQoYnVmLCB2YWx1ZSwgb2Zmc2V0LCA4LCAxLjc5NzY5MzEzNDg2MjMxNTdFKzMwOCwgLTEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDUyLCA4KVxuICByZXR1cm4gb2Zmc2V0ICsgOFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRG91YmxlTEUgPSBmdW5jdGlvbiB3cml0ZURvdWJsZUxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVEb3VibGUodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVCRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlQkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbi8vIGNvcHkodGFyZ2V0QnVmZmVyLCB0YXJnZXRTdGFydD0wLCBzb3VyY2VTdGFydD0wLCBzb3VyY2VFbmQ9YnVmZmVyLmxlbmd0aClcbkJ1ZmZlci5wcm90b3R5cGUuY29weSA9IGZ1bmN0aW9uIGNvcHkgKHRhcmdldCwgdGFyZ2V0U3RhcnQsIHN0YXJ0LCBlbmQpIHtcbiAgaWYgKCFzdGFydCkgc3RhcnQgPSAwXG4gIGlmICghZW5kICYmIGVuZCAhPT0gMCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldFN0YXJ0ID49IHRhcmdldC5sZW5ndGgpIHRhcmdldFN0YXJ0ID0gdGFyZ2V0Lmxlbmd0aFxuICBpZiAoIXRhcmdldFN0YXJ0KSB0YXJnZXRTdGFydCA9IDBcbiAgaWYgKGVuZCA+IDAgJiYgZW5kIDwgc3RhcnQpIGVuZCA9IHN0YXJ0XG5cbiAgLy8gQ29weSAwIGJ5dGVzOyB3ZSdyZSBkb25lXG4gIGlmIChlbmQgPT09IHN0YXJ0KSByZXR1cm4gMFxuICBpZiAodGFyZ2V0Lmxlbmd0aCA9PT0gMCB8fCB0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIDBcblxuICAvLyBGYXRhbCBlcnJvciBjb25kaXRpb25zXG4gIGlmICh0YXJnZXRTdGFydCA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcigndGFyZ2V0U3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIH1cbiAgaWYgKHN0YXJ0IDwgMCB8fCBzdGFydCA+PSB0aGlzLmxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZVN0YXJ0IG91dCBvZiBib3VuZHMnKVxuICBpZiAoZW5kIDwgMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3NvdXJjZUVuZCBvdXQgb2YgYm91bmRzJylcblxuICAvLyBBcmUgd2Ugb29iP1xuICBpZiAoZW5kID4gdGhpcy5sZW5ndGgpIGVuZCA9IHRoaXMubGVuZ3RoXG4gIGlmICh0YXJnZXQubGVuZ3RoIC0gdGFyZ2V0U3RhcnQgPCBlbmQgLSBzdGFydCkge1xuICAgIGVuZCA9IHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCArIHN0YXJ0XG4gIH1cblxuICB2YXIgbGVuID0gZW5kIC0gc3RhcnRcbiAgdmFyIGlcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0ICYmIHN0YXJ0IDwgdGFyZ2V0U3RhcnQgJiYgdGFyZ2V0U3RhcnQgPCBlbmQpIHtcbiAgICAvLyBkZXNjZW5kaW5nIGNvcHkgZnJvbSBlbmRcbiAgICBmb3IgKGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgdGFyZ2V0W2kgKyB0YXJnZXRTdGFydF0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH0gZWxzZSBpZiAobGVuIDwgMTAwMCB8fCAhQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICAvLyBhc2NlbmRpbmcgY29weSBmcm9tIHN0YXJ0XG4gICAgZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBVaW50OEFycmF5LnByb3RvdHlwZS5zZXQuY2FsbChcbiAgICAgIHRhcmdldCxcbiAgICAgIHRoaXMuc3ViYXJyYXkoc3RhcnQsIHN0YXJ0ICsgbGVuKSxcbiAgICAgIHRhcmdldFN0YXJ0XG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGxlblxufVxuXG4vLyBVc2FnZTpcbi8vICAgIGJ1ZmZlci5maWxsKG51bWJlclssIG9mZnNldFssIGVuZF1dKVxuLy8gICAgYnVmZmVyLmZpbGwoYnVmZmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChzdHJpbmdbLCBvZmZzZXRbLCBlbmRdXVssIGVuY29kaW5nXSlcbkJ1ZmZlci5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uIGZpbGwgKHZhbCwgc3RhcnQsIGVuZCwgZW5jb2RpbmcpIHtcbiAgLy8gSGFuZGxlIHN0cmluZyBjYXNlczpcbiAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKHR5cGVvZiBzdGFydCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gc3RhcnRcbiAgICAgIHN0YXJ0ID0gMFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbmQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuZFxuICAgICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgICB9XG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDEpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsLmNoYXJDb2RlQXQoMClcbiAgICAgIGlmIChjb2RlIDwgMjU2KSB7XG4gICAgICAgIHZhbCA9IGNvZGVcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQgJiYgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignZW5jb2RpbmcgbXVzdCBiZSBhIHN0cmluZycpXG4gICAgfVxuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnICYmICFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICB2YWwgPSB2YWwgJiAyNTVcbiAgfVxuXG4gIC8vIEludmFsaWQgcmFuZ2VzIGFyZSBub3Qgc2V0IHRvIGEgZGVmYXVsdCwgc28gY2FuIHJhbmdlIGNoZWNrIGVhcmx5LlxuICBpZiAoc3RhcnQgPCAwIHx8IHRoaXMubGVuZ3RoIDwgc3RhcnQgfHwgdGhpcy5sZW5ndGggPCBlbmQpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignT3V0IG9mIHJhbmdlIGluZGV4JylcbiAgfVxuXG4gIGlmIChlbmQgPD0gc3RhcnQpIHtcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgc3RhcnQgPSBzdGFydCA+Pj4gMFxuICBlbmQgPSBlbmQgPT09IHVuZGVmaW5lZCA/IHRoaXMubGVuZ3RoIDogZW5kID4+PiAwXG5cbiAgaWYgKCF2YWwpIHZhbCA9IDBcblxuICB2YXIgaVxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICBmb3IgKGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgICB0aGlzW2ldID0gdmFsXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBieXRlcyA9IEJ1ZmZlci5pc0J1ZmZlcih2YWwpXG4gICAgICA/IHZhbFxuICAgICAgOiB1dGY4VG9CeXRlcyhuZXcgQnVmZmVyKHZhbCwgZW5jb2RpbmcpLnRvU3RyaW5nKCkpXG4gICAgdmFyIGxlbiA9IGJ5dGVzLmxlbmd0aFxuICAgIGZvciAoaSA9IDA7IGkgPCBlbmQgLSBzdGFydDsgKytpKSB7XG4gICAgICB0aGlzW2kgKyBzdGFydF0gPSBieXRlc1tpICUgbGVuXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT1cblxudmFyIElOVkFMSURfQkFTRTY0X1JFID0gL1teK1xcLzAtOUEtWmEtei1fXS9nXG5cbmZ1bmN0aW9uIGJhc2U2NGNsZWFuIChzdHIpIHtcbiAgLy8gTm9kZSBzdHJpcHMgb3V0IGludmFsaWQgY2hhcmFjdGVycyBsaWtlIFxcbiBhbmQgXFx0IGZyb20gdGhlIHN0cmluZywgYmFzZTY0LWpzIGRvZXMgbm90XG4gIHN0ciA9IHN0cmluZ3RyaW0oc3RyKS5yZXBsYWNlKElOVkFMSURfQkFTRTY0X1JFLCAnJylcbiAgLy8gTm9kZSBjb252ZXJ0cyBzdHJpbmdzIHdpdGggbGVuZ3RoIDwgMiB0byAnJ1xuICBpZiAoc3RyLmxlbmd0aCA8IDIpIHJldHVybiAnJ1xuICAvLyBOb2RlIGFsbG93cyBmb3Igbm9uLXBhZGRlZCBiYXNlNjQgc3RyaW5ncyAobWlzc2luZyB0cmFpbGluZyA9PT0pLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgd2hpbGUgKHN0ci5sZW5ndGggJSA0ICE9PSAwKSB7XG4gICAgc3RyID0gc3RyICsgJz0nXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiBzdHJpbmd0cmltIChzdHIpIHtcbiAgaWYgKHN0ci50cmltKSByZXR1cm4gc3RyLnRyaW0oKVxuICByZXR1cm4gc3RyLnJlcGxhY2UoL15cXHMrfFxccyskL2csICcnKVxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG5cbmZ1bmN0aW9uIHV0ZjhUb0J5dGVzIChzdHJpbmcsIHVuaXRzKSB7XG4gIHVuaXRzID0gdW5pdHMgfHwgSW5maW5pdHlcbiAgdmFyIGNvZGVQb2ludFxuICB2YXIgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aFxuICB2YXIgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcbiAgdmFyIGJ5dGVzID0gW11cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgY29kZVBvaW50ID0gc3RyaW5nLmNoYXJDb2RlQXQoaSlcblxuICAgIC8vIGlzIHN1cnJvZ2F0ZSBjb21wb25lbnRcbiAgICBpZiAoY29kZVBvaW50ID4gMHhEN0ZGICYmIGNvZGVQb2ludCA8IDB4RTAwMCkge1xuICAgICAgLy8gbGFzdCBjaGFyIHdhcyBhIGxlYWRcbiAgICAgIGlmICghbGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgICAvLyBubyBsZWFkIHlldFxuICAgICAgICBpZiAoY29kZVBvaW50ID4gMHhEQkZGKSB7XG4gICAgICAgICAgLy8gdW5leHBlY3RlZCB0cmFpbFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgIC8vIHVucGFpcmVkIGxlYWRcbiAgICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gdmFsaWQgbGVhZFxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG5cbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgLy8gMiBsZWFkcyBpbiBhIHJvd1xuICAgICAgaWYgKGNvZGVQb2ludCA8IDB4REMwMCkge1xuICAgICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IGNvZGVQb2ludFxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyB2YWxpZCBzdXJyb2dhdGUgcGFpclxuICAgICAgY29kZVBvaW50ID0gKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDAgPDwgMTAgfCBjb2RlUG9pbnQgLSAweERDMDApICsgMHgxMDAwMFxuICAgIH0gZWxzZSBpZiAobGVhZFN1cnJvZ2F0ZSkge1xuICAgICAgLy8gdmFsaWQgYm1wIGNoYXIsIGJ1dCBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgfVxuXG4gICAgbGVhZFN1cnJvZ2F0ZSA9IG51bGxcblxuICAgIC8vIGVuY29kZSB1dGY4XG4gICAgaWYgKGNvZGVQb2ludCA8IDB4ODApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMSkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChjb2RlUG9pbnQpXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPCAweDgwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAyKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2IHwgMHhDMCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gMykgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyB8IDB4RTAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4MTEwMDAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDQpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDEyIHwgMHhGMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4QyAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHg2ICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCAmIDB4M0YgfCAweDgwXG4gICAgICApXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb2RlIHBvaW50JylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gYnl0ZXNcbn1cblxuZnVuY3Rpb24gYXNjaWlUb0J5dGVzIChzdHIpIHtcbiAgdmFyIGJ5dGVBcnJheSA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7XG4gICAgLy8gTm9kZSdzIGNvZGUgc2VlbXMgdG8gYmUgZG9pbmcgdGhpcyBhbmQgbm90ICYgMHg3Ri4uXG4gICAgYnl0ZUFycmF5LnB1c2goc3RyLmNoYXJDb2RlQXQoaSkgJiAweEZGKVxuICB9XG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gdXRmMTZsZVRvQnl0ZXMgKHN0ciwgdW5pdHMpIHtcbiAgdmFyIGMsIGhpLCBsb1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcblxuICAgIGMgPSBzdHIuY2hhckNvZGVBdChpKVxuICAgIGhpID0gYyA+PiA4XG4gICAgbG8gPSBjICUgMjU2XG4gICAgYnl0ZUFycmF5LnB1c2gobG8pXG4gICAgYnl0ZUFycmF5LnB1c2goaGkpXG4gIH1cblxuICByZXR1cm4gYnl0ZUFycmF5XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRvQnl0ZXMgKHN0cikge1xuICByZXR1cm4gYmFzZTY0LnRvQnl0ZUFycmF5KGJhc2U2NGNsZWFuKHN0cikpXG59XG5cbmZ1bmN0aW9uIGJsaXRCdWZmZXIgKHNyYywgZHN0LCBvZmZzZXQsIGxlbmd0aCkge1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgaWYgKChpICsgb2Zmc2V0ID49IGRzdC5sZW5ndGgpIHx8IChpID49IHNyYy5sZW5ndGgpKSBicmVha1xuICAgIGRzdFtpICsgb2Zmc2V0XSA9IHNyY1tpXVxuICB9XG4gIHJldHVybiBpXG59XG5cbmZ1bmN0aW9uIGlzbmFuICh2YWwpIHtcbiAgcmV0dXJuIHZhbCAhPT0gdmFsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2VsZi1jb21wYXJlXG59XG4iLCJ2YXIgRVJST1JTID0gcmVxdWlyZSgnLi9lcnJvcnMnKVxudmFyIE5BVElWRSA9IHJlcXVpcmUoJy4vbmF0aXZlJylcblxuLy8gc2hvcnQtaGFuZFxudmFyIHRmSlNPTiA9IEVSUk9SUy50ZkpTT05cbnZhciBUZlR5cGVFcnJvciA9IEVSUk9SUy5UZlR5cGVFcnJvclxudmFyIFRmUHJvcGVydHlUeXBlRXJyb3IgPSBFUlJPUlMuVGZQcm9wZXJ0eVR5cGVFcnJvclxudmFyIHRmU3ViRXJyb3IgPSBFUlJPUlMudGZTdWJFcnJvclxudmFyIGdldFZhbHVlVHlwZU5hbWUgPSBFUlJPUlMuZ2V0VmFsdWVUeXBlTmFtZVxuXG52YXIgVFlQRVMgPSB7XG4gIGFycmF5T2Y6IGZ1bmN0aW9uIGFycmF5T2YgKHR5cGUpIHtcbiAgICB0eXBlID0gY29tcGlsZSh0eXBlKVxuXG4gICAgZnVuY3Rpb24gX2FycmF5T2YgKGFycmF5LCBzdHJpY3QpIHtcbiAgICAgIGlmICghTkFUSVZFLkFycmF5KGFycmF5KSkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIHJldHVybiBhcnJheS5ldmVyeShmdW5jdGlvbiAodmFsdWUsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gdHlwZWZvcmNlKHR5cGUsIHZhbHVlLCBzdHJpY3QpXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyB0ZlN1YkVycm9yKGUsIGkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIF9hcnJheU9mLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdbJyArIHRmSlNPTih0eXBlKSArICddJyB9XG5cbiAgICByZXR1cm4gX2FycmF5T2ZcbiAgfSxcblxuICBtYXliZTogZnVuY3Rpb24gbWF5YmUgKHR5cGUpIHtcbiAgICB0eXBlID0gY29tcGlsZSh0eXBlKVxuXG4gICAgZnVuY3Rpb24gX21heWJlICh2YWx1ZSwgc3RyaWN0KSB7XG4gICAgICByZXR1cm4gTkFUSVZFLk5pbCh2YWx1ZSkgfHwgdHlwZSh2YWx1ZSwgc3RyaWN0LCBtYXliZSlcbiAgICB9XG4gICAgX21heWJlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICc/JyArIHRmSlNPTih0eXBlKSB9XG5cbiAgICByZXR1cm4gX21heWJlXG4gIH0sXG5cbiAgbWFwOiBmdW5jdGlvbiBtYXAgKHByb3BlcnR5VHlwZSwgcHJvcGVydHlLZXlUeXBlKSB7XG4gICAgcHJvcGVydHlUeXBlID0gY29tcGlsZShwcm9wZXJ0eVR5cGUpXG4gICAgaWYgKHByb3BlcnR5S2V5VHlwZSkgcHJvcGVydHlLZXlUeXBlID0gY29tcGlsZShwcm9wZXJ0eUtleVR5cGUpXG5cbiAgICBmdW5jdGlvbiBfbWFwICh2YWx1ZSwgc3RyaWN0KSB7XG4gICAgICBpZiAoIU5BVElWRS5PYmplY3QodmFsdWUsIHN0cmljdCkpIHJldHVybiBmYWxzZVxuICAgICAgaWYgKE5BVElWRS5OaWwodmFsdWUsIHN0cmljdCkpIHJldHVybiBmYWxzZVxuXG4gICAgICBmb3IgKHZhciBwcm9wZXJ0eU5hbWUgaW4gdmFsdWUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAocHJvcGVydHlLZXlUeXBlKSB7XG4gICAgICAgICAgICB0eXBlZm9yY2UocHJvcGVydHlLZXlUeXBlLCBwcm9wZXJ0eU5hbWUsIHN0cmljdClcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICB0aHJvdyB0ZlN1YkVycm9yKGUsIHByb3BlcnR5TmFtZSwgJ2tleScpXG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBwcm9wZXJ0eVZhbHVlID0gdmFsdWVbcHJvcGVydHlOYW1lXVxuICAgICAgICAgIHR5cGVmb3JjZShwcm9wZXJ0eVR5cGUsIHByb3BlcnR5VmFsdWUsIHN0cmljdClcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IHRmU3ViRXJyb3IoZSwgcHJvcGVydHlOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHByb3BlcnR5S2V5VHlwZSkge1xuICAgICAgX21hcC50b0pTT04gPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAneycgKyB0ZkpTT04ocHJvcGVydHlLZXlUeXBlKSArICc6ICcgKyB0ZkpTT04ocHJvcGVydHlUeXBlKSArICd9J1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfbWFwLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICd7JyArIHRmSlNPTihwcm9wZXJ0eVR5cGUpICsgJ30nIH1cbiAgICB9XG5cbiAgICByZXR1cm4gX21hcFxuICB9LFxuXG4gIG9iamVjdDogZnVuY3Rpb24gb2JqZWN0ICh1bmNvbXBpbGVkKSB7XG4gICAgdmFyIHR5cGUgPSB7fVxuXG4gICAgZm9yICh2YXIgdHlwZVByb3BlcnR5TmFtZSBpbiB1bmNvbXBpbGVkKSB7XG4gICAgICB0eXBlW3R5cGVQcm9wZXJ0eU5hbWVdID0gY29tcGlsZSh1bmNvbXBpbGVkW3R5cGVQcm9wZXJ0eU5hbWVdKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIF9vYmplY3QgKHZhbHVlLCBzdHJpY3QpIHtcbiAgICAgIGlmICghTkFUSVZFLk9iamVjdCh2YWx1ZSkpIHJldHVybiBmYWxzZVxuICAgICAgaWYgKE5BVElWRS5OaWwodmFsdWUpKSByZXR1cm4gZmFsc2VcblxuICAgICAgdmFyIHByb3BlcnR5TmFtZVxuXG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHByb3BlcnR5TmFtZSBpbiB0eXBlKSB7XG4gICAgICAgICAgdmFyIHByb3BlcnR5VHlwZSA9IHR5cGVbcHJvcGVydHlOYW1lXVxuICAgICAgICAgIHZhciBwcm9wZXJ0eVZhbHVlID0gdmFsdWVbcHJvcGVydHlOYW1lXVxuXG4gICAgICAgICAgdHlwZWZvcmNlKHByb3BlcnR5VHlwZSwgcHJvcGVydHlWYWx1ZSwgc3RyaWN0KVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRocm93IHRmU3ViRXJyb3IoZSwgcHJvcGVydHlOYW1lKVxuICAgICAgfVxuXG4gICAgICBpZiAoc3RyaWN0KSB7XG4gICAgICAgIGZvciAocHJvcGVydHlOYW1lIGluIHZhbHVlKSB7XG4gICAgICAgICAgaWYgKHR5cGVbcHJvcGVydHlOYW1lXSkgY29udGludWVcblxuICAgICAgICAgIHRocm93IG5ldyBUZlByb3BlcnR5VHlwZUVycm9yKHVuZGVmaW5lZCwgcHJvcGVydHlOYW1lKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICAgIF9vYmplY3QudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGZKU09OKHR5cGUpIH1cblxuICAgIHJldHVybiBfb2JqZWN0XG4gIH0sXG5cbiAgb25lT2Y6IGZ1bmN0aW9uIG9uZU9mICgpIHtcbiAgICB2YXIgdHlwZXMgPSBbXS5zbGljZS5jYWxsKGFyZ3VtZW50cykubWFwKGNvbXBpbGUpXG5cbiAgICBmdW5jdGlvbiBfb25lT2YgKHZhbHVlLCBzdHJpY3QpIHtcbiAgICAgIHJldHVybiB0eXBlcy5zb21lKGZ1bmN0aW9uICh0eXBlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGVmb3JjZSh0eXBlLCB2YWx1ZSwgc3RyaWN0KVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICAgIF9vbmVPZi50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlcy5tYXAodGZKU09OKS5qb2luKCd8JykgfVxuXG4gICAgcmV0dXJuIF9vbmVPZlxuICB9LFxuXG4gIHF1YWNrc0xpa2U6IGZ1bmN0aW9uIHF1YWNrc0xpa2UgKHR5cGUpIHtcbiAgICBmdW5jdGlvbiBfcXVhY2tzTGlrZSAodmFsdWUpIHtcbiAgICAgIHJldHVybiB0eXBlID09PSBnZXRWYWx1ZVR5cGVOYW1lKHZhbHVlKVxuICAgIH1cbiAgICBfcXVhY2tzTGlrZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0eXBlIH1cblxuICAgIHJldHVybiBfcXVhY2tzTGlrZVxuICB9LFxuXG4gIHR1cGxlOiBmdW5jdGlvbiB0dXBsZSAoKSB7XG4gICAgdmFyIHR5cGVzID0gW10uc2xpY2UuY2FsbChhcmd1bWVudHMpLm1hcChjb21waWxlKVxuXG4gICAgZnVuY3Rpb24gX3R1cGxlICh2YWx1ZXMsIHN0cmljdCkge1xuICAgICAgcmV0dXJuIHR5cGVzLmV2ZXJ5KGZ1bmN0aW9uICh0eXBlLCBpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIHR5cGVmb3JjZSh0eXBlLCB2YWx1ZXNbaV0sIHN0cmljdClcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRocm93IHRmU3ViRXJyb3IoZSwgaSlcbiAgICAgICAgfVxuICAgICAgfSkgJiYgKCFzdHJpY3QgfHwgdmFsdWVzLmxlbmd0aCA9PT0gYXJndW1lbnRzLmxlbmd0aClcbiAgICB9XG4gICAgX3R1cGxlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcoJyArIHR5cGVzLm1hcCh0ZkpTT04pLmpvaW4oJywgJykgKyAnKScgfVxuXG4gICAgcmV0dXJuIF90dXBsZVxuICB9LFxuXG4gIHZhbHVlOiBmdW5jdGlvbiB2YWx1ZSAoZXhwZWN0ZWQpIHtcbiAgICBmdW5jdGlvbiBfdmFsdWUgKGFjdHVhbCkge1xuICAgICAgcmV0dXJuIGFjdHVhbCA9PT0gZXhwZWN0ZWRcbiAgICB9XG4gICAgX3ZhbHVlLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGV4cGVjdGVkIH1cblxuICAgIHJldHVybiBfdmFsdWVcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21waWxlICh0eXBlKSB7XG4gIGlmIChOQVRJVkUuU3RyaW5nKHR5cGUpKSB7XG4gICAgaWYgKHR5cGVbMF0gPT09ICc/JykgcmV0dXJuIFRZUEVTLm1heWJlKGNvbXBpbGUodHlwZS5zbGljZSgxKSkpXG5cbiAgICByZXR1cm4gTkFUSVZFW3R5cGVdIHx8IFRZUEVTLnF1YWNrc0xpa2UodHlwZSlcbiAgfSBlbHNlIGlmICh0eXBlICYmIE5BVElWRS5PYmplY3QodHlwZSkpIHtcbiAgICBpZiAoTkFUSVZFLkFycmF5KHR5cGUpKSByZXR1cm4gVFlQRVMuYXJyYXlPZihjb21waWxlKHR5cGVbMF0pKVxuXG4gICAgcmV0dXJuIFRZUEVTLm9iamVjdCh0eXBlKVxuICB9IGVsc2UgaWYgKE5BVElWRS5GdW5jdGlvbih0eXBlKSkge1xuICAgIHJldHVybiB0eXBlXG4gIH1cblxuICByZXR1cm4gVFlQRVMudmFsdWUodHlwZSlcbn1cblxuZnVuY3Rpb24gdHlwZWZvcmNlICh0eXBlLCB2YWx1ZSwgc3RyaWN0LCBzdXJyb2dhdGUpIHtcbiAgaWYgKE5BVElWRS5GdW5jdGlvbih0eXBlKSkge1xuICAgIGlmICh0eXBlKHZhbHVlLCBzdHJpY3QpKSByZXR1cm4gdHJ1ZVxuXG4gICAgdGhyb3cgbmV3IFRmVHlwZUVycm9yKHN1cnJvZ2F0ZSB8fCB0eXBlLCB2YWx1ZSlcbiAgfVxuXG4gIC8vIEpJVFxuICByZXR1cm4gdHlwZWZvcmNlKGNvbXBpbGUodHlwZSksIHZhbHVlLCBzdHJpY3QpXG59XG5cbi8vIGFzc2lnbiB0eXBlcyB0byB0eXBlZm9yY2UgZnVuY3Rpb25cbmZvciAodmFyIHR5cGVOYW1lIGluIE5BVElWRSkge1xuICB0eXBlZm9yY2VbdHlwZU5hbWVdID0gTkFUSVZFW3R5cGVOYW1lXVxufVxuXG5mb3IgKHR5cGVOYW1lIGluIFRZUEVTKSB7XG4gIHR5cGVmb3JjZVt0eXBlTmFtZV0gPSBUWVBFU1t0eXBlTmFtZV1cbn1cblxudmFyIEVYVFJBID0gcmVxdWlyZSgnLi9leHRyYScpXG5mb3IgKHR5cGVOYW1lIGluIEVYVFJBKSB7XG4gIHR5cGVmb3JjZVt0eXBlTmFtZV0gPSBFWFRSQVt0eXBlTmFtZV1cbn1cblxuLy8gYXN5bmMgd3JhcHBlclxuZnVuY3Rpb24gX19hc3luYyAodHlwZSwgdmFsdWUsIHN0cmljdCwgY2FsbGJhY2spIHtcbiAgLy8gZGVmYXVsdCB0byBmYWxzeSBzdHJpY3QgaWYgdXNpbmcgc2hvcnRoYW5kIG92ZXJsb2FkXG4gIGlmICh0eXBlb2Ygc3RyaWN0ID09PSAnZnVuY3Rpb24nKSByZXR1cm4gX19hc3luYyh0eXBlLCB2YWx1ZSwgZmFsc2UsIHN0cmljdClcblxuICB0cnkge1xuICAgIHR5cGVmb3JjZSh0eXBlLCB2YWx1ZSwgc3RyaWN0KVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGNhbGxiYWNrKGUpXG4gIH1cblxuICBjYWxsYmFjaygpXG59XG5cbnR5cGVmb3JjZS5hc3luYyA9IF9fYXN5bmNcbnR5cGVmb3JjZS5jb21waWxlID0gY29tcGlsZVxudHlwZWZvcmNlLlRmVHlwZUVycm9yID0gVGZUeXBlRXJyb3JcbnR5cGVmb3JjZS5UZlByb3BlcnR5VHlwZUVycm9yID0gVGZQcm9wZXJ0eVR5cGVFcnJvclxuXG5tb2R1bGUuZXhwb3J0cyA9IHR5cGVmb3JjZVxuIiwiaWYgKHR5cGVvZiBPYmplY3QuY3JlYXRlID09PSAnZnVuY3Rpb24nKSB7XG4gIC8vIGltcGxlbWVudGF0aW9uIGZyb20gc3RhbmRhcmQgbm9kZS5qcyAndXRpbCcgbW9kdWxlXG4gIG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5oZXJpdHMoY3Rvciwgc3VwZXJDdG9yKSB7XG4gICAgY3Rvci5zdXBlcl8gPSBzdXBlckN0b3JcbiAgICBjdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDdG9yLnByb3RvdHlwZSwge1xuICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgdmFsdWU6IGN0b3IsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgICB9XG4gICAgfSk7XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgdmFyIFRlbXBDdG9yID0gZnVuY3Rpb24gKCkge31cbiAgICBUZW1wQ3Rvci5wcm90b3R5cGUgPSBzdXBlckN0b3IucHJvdG90eXBlXG4gICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgIGN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gY3RvclxuICB9XG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBiaXA2NiA9IHJlcXVpcmUoJ2JpcDY2JylcbnZhciBwdXNoZGF0YSA9IHJlcXVpcmUoJ3B1c2hkYXRhLWJpdGNvaW4nKVxudmFyIHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJylcbnZhciBzY3JpcHROdW1iZXIgPSByZXF1aXJlKCcuL3NjcmlwdF9udW1iZXInKVxuXG52YXIgT1BTID0gcmVxdWlyZSgnYml0Y29pbi1vcHMnKVxudmFyIFJFVkVSU0VfT1BTID0gcmVxdWlyZSgnYml0Y29pbi1vcHMvbWFwJylcbnZhciBPUF9JTlRfQkFTRSA9IE9QUy5PUF9SRVNFUlZFRCAvLyBPUF8xIC0gMVxuXG5mdW5jdGlvbiBpc09QSW50ICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZXMuTnVtYmVyKHZhbHVlKSAmJlxuICAgICgodmFsdWUgPT09IE9QUy5PUF8wKSB8fFxuICAgICh2YWx1ZSA+PSBPUFMuT1BfMSAmJiB2YWx1ZSA8PSBPUFMuT1BfMTYpIHx8XG4gICAgKHZhbHVlID09PSBPUFMuT1BfMU5FR0FURSkpXG59XG5cbmZ1bmN0aW9uIGlzUHVzaE9ubHlDaHVuayAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVzLkJ1ZmZlcih2YWx1ZSkgfHwgaXNPUEludCh2YWx1ZSlcbn1cblxuZnVuY3Rpb24gaXNQdXNoT25seSAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVzLkFycmF5KHZhbHVlKSAmJiB2YWx1ZS5ldmVyeShpc1B1c2hPbmx5Q2h1bmspXG59XG5cbmZ1bmN0aW9uIGFzTWluaW1hbE9QIChidWZmZXIpIHtcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiBPUFMuT1BfMFxuICBpZiAoYnVmZmVyLmxlbmd0aCAhPT0gMSkgcmV0dXJuXG4gIGlmIChidWZmZXJbMF0gPj0gMSAmJiBidWZmZXJbMF0gPD0gMTYpIHJldHVybiBPUF9JTlRfQkFTRSArIGJ1ZmZlclswXVxuICBpZiAoYnVmZmVyWzBdID09PSAweDgxKSByZXR1cm4gT1BTLk9QXzFORUdBVEVcbn1cblxuZnVuY3Rpb24gY29tcGlsZSAoY2h1bmtzKSB7XG4gIC8vIFRPRE86IHJlbW92ZSBtZVxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rcykpIHJldHVybiBjaHVua3NcblxuICB0eXBlZm9yY2UodHlwZXMuQXJyYXksIGNodW5rcylcblxuICB2YXIgYnVmZmVyU2l6ZSA9IGNodW5rcy5yZWR1Y2UoZnVuY3Rpb24gKGFjY3VtLCBjaHVuaykge1xuICAgIC8vIGRhdGEgY2h1bmtcbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgICAgLy8gYWRoZXJlIHRvIEJJUDYyLjMsIG1pbmltYWwgcHVzaCBwb2xpY3lcbiAgICAgIGlmIChjaHVuay5sZW5ndGggPT09IDEgJiYgYXNNaW5pbWFsT1AoY2h1bmspICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGFjY3VtICsgMVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNjdW0gKyBwdXNoZGF0YS5lbmNvZGluZ0xlbmd0aChjaHVuay5sZW5ndGgpICsgY2h1bmsubGVuZ3RoXG4gICAgfVxuXG4gICAgLy8gb3Bjb2RlXG4gICAgcmV0dXJuIGFjY3VtICsgMVxuICB9LCAwLjApXG5cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShidWZmZXJTaXplKVxuICB2YXIgb2Zmc2V0ID0gMFxuXG4gIGNodW5rcy5mb3JFYWNoKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIC8vIGRhdGEgY2h1bmtcbiAgICBpZiAoQnVmZmVyLmlzQnVmZmVyKGNodW5rKSkge1xuICAgICAgLy8gYWRoZXJlIHRvIEJJUDYyLjMsIG1pbmltYWwgcHVzaCBwb2xpY3lcbiAgICAgIHZhciBvcGNvZGUgPSBhc01pbmltYWxPUChjaHVuaylcbiAgICAgIGlmIChvcGNvZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBidWZmZXIud3JpdGVVSW50OChvcGNvZGUsIG9mZnNldClcbiAgICAgICAgb2Zmc2V0ICs9IDFcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIG9mZnNldCArPSBwdXNoZGF0YS5lbmNvZGUoYnVmZmVyLCBjaHVuay5sZW5ndGgsIG9mZnNldClcbiAgICAgIGNodW5rLmNvcHkoYnVmZmVyLCBvZmZzZXQpXG4gICAgICBvZmZzZXQgKz0gY2h1bmsubGVuZ3RoXG5cbiAgICAvLyBvcGNvZGVcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmZmVyLndyaXRlVUludDgoY2h1bmssIG9mZnNldClcbiAgICAgIG9mZnNldCArPSAxXG4gICAgfVxuICB9KVxuXG4gIGlmIChvZmZzZXQgIT09IGJ1ZmZlci5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGRlY29kZSBjaHVua3MnKVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGRlY29tcGlsZSAoYnVmZmVyKSB7XG4gIC8vIFRPRE86IHJlbW92ZSBtZVxuICBpZiAodHlwZXMuQXJyYXkoYnVmZmVyKSkgcmV0dXJuIGJ1ZmZlclxuXG4gIHR5cGVmb3JjZSh0eXBlcy5CdWZmZXIsIGJ1ZmZlcilcblxuICB2YXIgY2h1bmtzID0gW11cbiAgdmFyIGkgPSAwXG5cbiAgd2hpbGUgKGkgPCBidWZmZXIubGVuZ3RoKSB7XG4gICAgdmFyIG9wY29kZSA9IGJ1ZmZlcltpXVxuXG4gICAgLy8gZGF0YSBjaHVua1xuICAgIGlmICgob3Bjb2RlID4gT1BTLk9QXzApICYmIChvcGNvZGUgPD0gT1BTLk9QX1BVU0hEQVRBNCkpIHtcbiAgICAgIHZhciBkID0gcHVzaGRhdGEuZGVjb2RlKGJ1ZmZlciwgaSlcblxuICAgICAgLy8gZGlkIHJlYWRpbmcgYSBwdXNoRGF0YUludCBmYWlsPyBlbXB0eSBzY3JpcHRcbiAgICAgIGlmIChkID09PSBudWxsKSByZXR1cm4gW11cbiAgICAgIGkgKz0gZC5zaXplXG5cbiAgICAgIC8vIGF0dGVtcHQgdG8gcmVhZCB0b28gbXVjaCBkYXRhPyBlbXB0eSBzY3JpcHRcbiAgICAgIGlmIChpICsgZC5udW1iZXIgPiBidWZmZXIubGVuZ3RoKSByZXR1cm4gW11cblxuICAgICAgdmFyIGRhdGEgPSBidWZmZXIuc2xpY2UoaSwgaSArIGQubnVtYmVyKVxuICAgICAgaSArPSBkLm51bWJlclxuXG4gICAgICAvLyBkZWNvbXBpbGUgbWluaW1hbGx5XG4gICAgICB2YXIgb3AgPSBhc01pbmltYWxPUChkYXRhKVxuICAgICAgaWYgKG9wICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2h1bmtzLnB1c2gob3ApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjaHVua3MucHVzaChkYXRhKVxuICAgICAgfVxuXG4gICAgLy8gb3Bjb2RlXG4gICAgfSBlbHNlIHtcbiAgICAgIGNodW5rcy5wdXNoKG9wY29kZSlcblxuICAgICAgaSArPSAxXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNodW5rc1xufVxuXG5mdW5jdGlvbiB0b0FTTSAoY2h1bmtzKSB7XG4gIGlmIChCdWZmZXIuaXNCdWZmZXIoY2h1bmtzKSkge1xuICAgIGNodW5rcyA9IGRlY29tcGlsZShjaHVua3MpXG4gIH1cblxuICByZXR1cm4gY2h1bmtzLm1hcChmdW5jdGlvbiAoY2h1bmspIHtcbiAgICAvLyBkYXRhP1xuICAgIGlmIChCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7XG4gICAgICB2YXIgb3AgPSBhc01pbmltYWxPUChjaHVuaylcbiAgICAgIGlmIChvcCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gY2h1bmsudG9TdHJpbmcoJ2hleCcpXG4gICAgICBjaHVuayA9IG9wXG4gICAgfVxuXG4gICAgLy8gb3Bjb2RlIVxuICAgIHJldHVybiBSRVZFUlNFX09QU1tjaHVua11cbiAgfSkuam9pbignICcpXG59XG5cbmZ1bmN0aW9uIGZyb21BU00gKGFzbSkge1xuICB0eXBlZm9yY2UodHlwZXMuU3RyaW5nLCBhc20pXG5cbiAgcmV0dXJuIGNvbXBpbGUoYXNtLnNwbGl0KCcgJykubWFwKGZ1bmN0aW9uIChjaHVua1N0cikge1xuICAgIC8vIG9wY29kZT9cbiAgICBpZiAoT1BTW2NodW5rU3RyXSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gT1BTW2NodW5rU3RyXVxuICAgIHR5cGVmb3JjZSh0eXBlcy5IZXgsIGNodW5rU3RyKVxuXG4gICAgLy8gZGF0YSFcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmtTdHIsICdoZXgnKVxuICB9KSlcbn1cblxuZnVuY3Rpb24gdG9TdGFjayAoY2h1bmtzKSB7XG4gIGNodW5rcyA9IGRlY29tcGlsZShjaHVua3MpXG4gIHR5cGVmb3JjZShpc1B1c2hPbmx5LCBjaHVua3MpXG5cbiAgcmV0dXJuIGNodW5rcy5tYXAoZnVuY3Rpb24gKG9wKSB7XG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvcCkpIHJldHVybiBvcFxuICAgIGlmIChvcCA9PT0gT1BTLk9QXzApIHJldHVybiBCdWZmZXIuYWxsb2NVbnNhZmUoMClcblxuICAgIHJldHVybiBzY3JpcHROdW1iZXIuZW5jb2RlKG9wIC0gT1BfSU5UX0JBU0UpXG4gIH0pXG59XG5cbmZ1bmN0aW9uIGlzQ2Fub25pY2FsUHViS2V5IChidWZmZXIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgcmV0dXJuIGZhbHNlXG4gIGlmIChidWZmZXIubGVuZ3RoIDwgMzMpIHJldHVybiBmYWxzZVxuXG4gIHN3aXRjaCAoYnVmZmVyWzBdKSB7XG4gICAgY2FzZSAweDAyOlxuICAgIGNhc2UgMHgwMzpcbiAgICAgIHJldHVybiBidWZmZXIubGVuZ3RoID09PSAzM1xuICAgIGNhc2UgMHgwNDpcbiAgICAgIHJldHVybiBidWZmZXIubGVuZ3RoID09PSA2NVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlXG59XG5cbmZ1bmN0aW9uIGlzRGVmaW5lZEhhc2hUeXBlIChoYXNoVHlwZSkge1xuICB2YXIgaGFzaFR5cGVNb2QgPSBoYXNoVHlwZSAmIH4weDgwXG5cbi8vIHJldHVybiBoYXNoVHlwZU1vZCA+IFNJR0hBU0hfQUxMICYmIGhhc2hUeXBlTW9kIDwgU0lHSEFTSF9TSU5HTEVcbiAgcmV0dXJuIGhhc2hUeXBlTW9kID4gMHgwMCAmJiBoYXNoVHlwZU1vZCA8IDB4MDRcbn1cblxuZnVuY3Rpb24gaXNDYW5vbmljYWxTaWduYXR1cmUgKGJ1ZmZlcikge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXIpKSByZXR1cm4gZmFsc2VcbiAgaWYgKCFpc0RlZmluZWRIYXNoVHlwZShidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdKSkgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIGJpcDY2LmNoZWNrKGJ1ZmZlci5zbGljZSgwLCAtMSkpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjb21waWxlOiBjb21waWxlLFxuICBkZWNvbXBpbGU6IGRlY29tcGlsZSxcbiAgZnJvbUFTTTogZnJvbUFTTSxcbiAgdG9BU006IHRvQVNNLFxuICB0b1N0YWNrOiB0b1N0YWNrLFxuXG4gIG51bWJlcjogcmVxdWlyZSgnLi9zY3JpcHRfbnVtYmVyJyksXG5cbiAgaXNDYW5vbmljYWxQdWJLZXk6IGlzQ2Fub25pY2FsUHViS2V5LFxuICBpc0Nhbm9uaWNhbFNpZ25hdHVyZTogaXNDYW5vbmljYWxTaWduYXR1cmUsXG4gIGlzUHVzaE9ubHk6IGlzUHVzaE9ubHksXG4gIGlzRGVmaW5lZEhhc2hUeXBlOiBpc0RlZmluZWRIYXNoVHlwZVxufVxuIiwidmFyIGc7XG5cbi8vIFRoaXMgd29ya3MgaW4gbm9uLXN0cmljdCBtb2RlXG5nID0gKGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gdGhpcztcbn0pKCk7XG5cbnRyeSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgZXZhbCBpcyBhbGxvd2VkIChzZWUgQ1NQKVxuXHRnID0gZyB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCkgfHwgKDEsIGV2YWwpKFwidGhpc1wiKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsInZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxuXG52YXIgVUlOVDMxX01BWCA9IE1hdGgucG93KDIsIDMxKSAtIDFcbmZ1bmN0aW9uIFVJbnQzMSAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVmb3JjZS5VSW50MzIodmFsdWUpICYmIHZhbHVlIDw9IFVJTlQzMV9NQVhcbn1cblxuZnVuY3Rpb24gQklQMzJQYXRoICh2YWx1ZSkge1xuICByZXR1cm4gdHlwZWZvcmNlLlN0cmluZyh2YWx1ZSkgJiYgdmFsdWUubWF0Y2goL14obVxcLyk/KFxcZCsnP1xcLykqXFxkKyc/JC8pXG59XG5CSVAzMlBhdGgudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ0JJUDMyIGRlcml2YXRpb24gcGF0aCcgfVxuXG52YXIgU0FUT1NISV9NQVggPSAyMSAqIDFlMTRcbmZ1bmN0aW9uIFNhdG9zaGkgKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlZm9yY2UuVUludDUzKHZhbHVlKSAmJiB2YWx1ZSA8PSBTQVRPU0hJX01BWFxufVxuXG4vLyBleHRlcm5hbCBkZXBlbmRlbnQgdHlwZXNcbnZhciBCaWdJbnQgPSB0eXBlZm9yY2UucXVhY2tzTGlrZSgnQmlnSW50ZWdlcicpXG52YXIgRUNQb2ludCA9IHR5cGVmb3JjZS5xdWFja3NMaWtlKCdQb2ludCcpXG5cbi8vIGV4cG9zZWQsIGV4dGVybmFsIEFQSVxudmFyIEVDU2lnbmF0dXJlID0gdHlwZWZvcmNlLmNvbXBpbGUoeyByOiBCaWdJbnQsIHM6IEJpZ0ludCB9KVxudmFyIE5ldHdvcmsgPSB0eXBlZm9yY2UuY29tcGlsZSh7XG4gIG1lc3NhZ2VQcmVmaXg6IHR5cGVmb3JjZS5vbmVPZih0eXBlZm9yY2UuQnVmZmVyLCB0eXBlZm9yY2UuU3RyaW5nKSxcbiAgYmlwMzI6IHtcbiAgICBwdWJsaWM6IHR5cGVmb3JjZS5VSW50MzIsXG4gICAgcHJpdmF0ZTogdHlwZWZvcmNlLlVJbnQzMlxuICB9LFxuICBwdWJLZXlIYXNoOiB0eXBlZm9yY2UuVUludDE2LFxuICBzY3JpcHRIYXNoOiB0eXBlZm9yY2UuVUludDE2LFxuICB3aWY6IHR5cGVmb3JjZS5VSW50OFxufSlcblxuLy8gZXh0ZW5kIHR5cGVmb3JjZSB0eXBlcyB3aXRoIG91cnNcbnZhciB0eXBlcyA9IHtcbiAgQmlnSW50OiBCaWdJbnQsXG4gIEJJUDMyUGF0aDogQklQMzJQYXRoLFxuICBCdWZmZXIyNTZiaXQ6IHR5cGVmb3JjZS5CdWZmZXJOKDMyKSxcbiAgRUNQb2ludDogRUNQb2ludCxcbiAgRUNTaWduYXR1cmU6IEVDU2lnbmF0dXJlLFxuICBIYXNoMTYwYml0OiB0eXBlZm9yY2UuQnVmZmVyTigyMCksXG4gIEhhc2gyNTZiaXQ6IHR5cGVmb3JjZS5CdWZmZXJOKDMyKSxcbiAgTmV0d29yazogTmV0d29yayxcbiAgU2F0b3NoaTogU2F0b3NoaSxcbiAgVUludDMxOiBVSW50MzFcbn1cblxuZm9yICh2YXIgdHlwZU5hbWUgaW4gdHlwZWZvcmNlKSB7XG4gIHR5cGVzW3R5cGVOYW1lXSA9IHR5cGVmb3JjZVt0eXBlTmFtZV1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0eXBlc1xuIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV93cml0YWJsZScpO1xuXG51dGlsLmluaGVyaXRzKER1cGxleCwgUmVhZGFibGUpO1xuXG57XG4gIC8vIGF2b2lkIHNjb3BlIGNyZWVwLCB0aGUga2V5cyBhcnJheSBjYW4gdGhlbiBiZSBjb2xsZWN0ZWRcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG4gIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgIHZhciBtZXRob2QgPSBrZXlzW3ZdO1xuICAgIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG5cbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG5cbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gdGhlIG5vLWhhbGYtb3BlbiBlbmZvcmNlclxuZnVuY3Rpb24gb25lbmQoKSB7XG4gIC8vIGlmIHdlIGFsbG93IGhhbGYtb3BlbiBzdGF0ZSwgb3IgaWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsXG4gIC8vIHRoZW4gd2UncmUgb2suXG4gIGlmICh0aGlzLmFsbG93SGFsZk9wZW4gfHwgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkgcmV0dXJuO1xuXG4gIC8vIG5vIG1vcmUgZGF0YSBjYW4gYmUgd3JpdHRlbi5cbiAgLy8gQnV0IGFsbG93IG1vcmUgd3JpdGVzIHRvIGhhcHBlbiBpbiB0aGlzIHRpY2suXG4gIHBuYS5uZXh0VGljayhvbkVuZE5ULCB0aGlzKTtcbn1cblxuZnVuY3Rpb24gb25FbmROVChzZWxmKSB7XG4gIHNlbGYuZW5kKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbkR1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIHRoaXMuZW5kKCk7XG5cbiAgcG5hLm5leHRUaWNrKGNiLCBlcnIpO1xufTsiLCJ2YXIgQmlnSW50ZWdlciA9IHJlcXVpcmUoJy4vYmlnaScpXG5cbi8vYWRkb25zXG5yZXF1aXJlKCcuL2NvbnZlcnQnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IEJpZ0ludGVnZXIiLCIvKlxuIENvcHlyaWdodCAyMDEzIERhbmllbCBXaXJ0eiA8ZGNvZGVAZGNvZGUuaW8+XG5cbiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbnZhciBQcm90b0J1ZiA9IHJlcXVpcmUoXCIuL2Rpc3QvUHJvdG9CdWYuanNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvdG9CdWY7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICB0aGlzLl9ldmVudHMgPSB0aGlzLl9ldmVudHMgfHwge307XG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50RW1pdHRlcjtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC4xMC54XG5FdmVudEVtaXR0ZXIuRXZlbnRFbWl0dGVyID0gRXZlbnRFbWl0dGVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9ldmVudHMgPSB1bmRlZmluZWQ7XG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLl9tYXhMaXN0ZW5lcnMgPSB1bmRlZmluZWQ7XG5cbi8vIEJ5IGRlZmF1bHQgRXZlbnRFbWl0dGVycyB3aWxsIHByaW50IGEgd2FybmluZyBpZiBtb3JlIHRoYW4gMTAgbGlzdGVuZXJzIGFyZVxuLy8gYWRkZWQgdG8gaXQuIFRoaXMgaXMgYSB1c2VmdWwgZGVmYXVsdCB3aGljaCBoZWxwcyBmaW5kaW5nIG1lbW9yeSBsZWFrcy5cbkV2ZW50RW1pdHRlci5kZWZhdWx0TWF4TGlzdGVuZXJzID0gMTA7XG5cbi8vIE9idmlvdXNseSBub3QgYWxsIEVtaXR0ZXJzIHNob3VsZCBiZSBsaW1pdGVkIHRvIDEwLiBUaGlzIGZ1bmN0aW9uIGFsbG93c1xuLy8gdGhhdCB0byBiZSBpbmNyZWFzZWQuIFNldCB0byB6ZXJvIGZvciB1bmxpbWl0ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnNldE1heExpc3RlbmVycyA9IGZ1bmN0aW9uKG4pIHtcbiAgaWYgKCFpc051bWJlcihuKSB8fCBuIDwgMCB8fCBpc05hTihuKSlcbiAgICB0aHJvdyBUeXBlRXJyb3IoJ24gbXVzdCBiZSBhIHBvc2l0aXZlIG51bWJlcicpO1xuICB0aGlzLl9tYXhMaXN0ZW5lcnMgPSBuO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuZW1pdCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgdmFyIGVyLCBoYW5kbGVyLCBsZW4sIGFyZ3MsIGksIGxpc3RlbmVycztcblxuICBpZiAoIXRoaXMuX2V2ZW50cylcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmICh0eXBlID09PSAnZXJyb3InKSB7XG4gICAgaWYgKCF0aGlzLl9ldmVudHMuZXJyb3IgfHxcbiAgICAgICAgKGlzT2JqZWN0KHRoaXMuX2V2ZW50cy5lcnJvcikgJiYgIXRoaXMuX2V2ZW50cy5lcnJvci5sZW5ndGgpKSB7XG4gICAgICBlciA9IGFyZ3VtZW50c1sxXTtcbiAgICAgIGlmIChlciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQXQgbGVhc3QgZ2l2ZSBzb21lIGtpbmQgb2YgY29udGV4dCB0byB0aGUgdXNlclxuICAgICAgICB2YXIgZXJyID0gbmV3IEVycm9yKCdVbmNhdWdodCwgdW5zcGVjaWZpZWQgXCJlcnJvclwiIGV2ZW50LiAoJyArIGVyICsgJyknKTtcbiAgICAgICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhhbmRsZXIgPSB0aGlzLl9ldmVudHNbdHlwZV07XG5cbiAgaWYgKGlzVW5kZWZpbmVkKGhhbmRsZXIpKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAoaXNGdW5jdGlvbihoYW5kbGVyKSkge1xuICAgIHN3aXRjaCAoYXJndW1lbnRzLmxlbmd0aCkge1xuICAgICAgLy8gZmFzdCBjYXNlc1xuICAgICAgY2FzZSAxOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICBoYW5kbGVyLmNhbGwodGhpcywgYXJndW1lbnRzWzFdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIGhhbmRsZXIuY2FsbCh0aGlzLCBhcmd1bWVudHNbMV0sIGFyZ3VtZW50c1syXSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgLy8gc2xvd2VyXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICAgICAgaGFuZGxlci5hcHBseSh0aGlzLCBhcmdzKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QoaGFuZGxlcikpIHtcbiAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgICBsaXN0ZW5lcnMgPSBoYW5kbGVyLnNsaWNlKCk7XG4gICAgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDtcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspXG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgYXJncyk7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICB2YXIgbTtcblxuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgdGhpcy5fZXZlbnRzID0ge307XG5cbiAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgLy8gYWRkaW5nIGl0IHRvIHRoZSBsaXN0ZW5lcnMsIGZpcnN0IGVtaXQgXCJuZXdMaXN0ZW5lclwiLlxuICBpZiAodGhpcy5fZXZlbnRzLm5ld0xpc3RlbmVyKVxuICAgIHRoaXMuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICBpc0Z1bmN0aW9uKGxpc3RlbmVyLmxpc3RlbmVyKSA/XG4gICAgICAgICAgICAgIGxpc3RlbmVyLmxpc3RlbmVyIDogbGlzdGVuZXIpO1xuXG4gIGlmICghdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIC8vIE9wdGltaXplIHRoZSBjYXNlIG9mIG9uZSBsaXN0ZW5lci4gRG9uJ3QgbmVlZCB0aGUgZXh0cmEgYXJyYXkgb2JqZWN0LlxuICAgIHRoaXMuX2V2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICBlbHNlIGlmIChpc09iamVjdCh0aGlzLl9ldmVudHNbdHlwZV0pKVxuICAgIC8vIElmIHdlJ3ZlIGFscmVhZHkgZ290IGFuIGFycmF5LCBqdXN0IGFwcGVuZC5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0ucHVzaChsaXN0ZW5lcik7XG4gIGVsc2VcbiAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICB0aGlzLl9ldmVudHNbdHlwZV0gPSBbdGhpcy5fZXZlbnRzW3R5cGVdLCBsaXN0ZW5lcl07XG5cbiAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgaWYgKGlzT2JqZWN0KHRoaXMuX2V2ZW50c1t0eXBlXSkgJiYgIXRoaXMuX2V2ZW50c1t0eXBlXS53YXJuZWQpIHtcbiAgICBpZiAoIWlzVW5kZWZpbmVkKHRoaXMuX21heExpc3RlbmVycykpIHtcbiAgICAgIG0gPSB0aGlzLl9tYXhMaXN0ZW5lcnM7XG4gICAgfSBlbHNlIHtcbiAgICAgIG0gPSBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgICB9XG5cbiAgICBpZiAobSAmJiBtID4gMCAmJiB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoID4gbSkge1xuICAgICAgdGhpcy5fZXZlbnRzW3R5cGVdLndhcm5lZCA9IHRydWU7XG4gICAgICBjb25zb2xlLmVycm9yKCcobm9kZSkgd2FybmluZzogcG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSAnICtcbiAgICAgICAgICAgICAgICAgICAgJ2xlYWsgZGV0ZWN0ZWQuICVkIGxpc3RlbmVycyBhZGRlZC4gJyArXG4gICAgICAgICAgICAgICAgICAgICdVc2UgZW1pdHRlci5zZXRNYXhMaXN0ZW5lcnMoKSB0byBpbmNyZWFzZSBsaW1pdC4nLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudHNbdHlwZV0ubGVuZ3RoKTtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZS50cmFjZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIGluIElFIDEwXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub24gPSBFdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyO1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbih0eXBlLCBsaXN0ZW5lcikge1xuICBpZiAoIWlzRnVuY3Rpb24obGlzdGVuZXIpKVxuICAgIHRocm93IFR5cGVFcnJvcignbGlzdGVuZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cbiAgdmFyIGZpcmVkID0gZmFsc2U7XG5cbiAgZnVuY3Rpb24gZygpIHtcbiAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGcpO1xuXG4gICAgaWYgKCFmaXJlZCkge1xuICAgICAgZmlyZWQgPSB0cnVlO1xuICAgICAgbGlzdGVuZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG4gIH1cblxuICBnLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHRoaXMub24odHlwZSwgZyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBlbWl0cyBhICdyZW1vdmVMaXN0ZW5lcicgZXZlbnQgaWZmIHRoZSBsaXN0ZW5lciB3YXMgcmVtb3ZlZFxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBsaXN0LCBwb3NpdGlvbiwgbGVuZ3RoLCBpO1xuXG4gIGlmICghaXNGdW5jdGlvbihsaXN0ZW5lcikpXG4gICAgdGhyb3cgVHlwZUVycm9yKCdsaXN0ZW5lciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblxuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldHVybiB0aGlzO1xuXG4gIGxpc3QgPSB0aGlzLl9ldmVudHNbdHlwZV07XG4gIGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICBwb3NpdGlvbiA9IC0xO1xuXG4gIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fFxuICAgICAgKGlzRnVuY3Rpb24obGlzdC5saXN0ZW5lcikgJiYgbGlzdC5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICBpZiAodGhpcy5fZXZlbnRzLnJlbW92ZUxpc3RlbmVyKVxuICAgICAgdGhpcy5lbWl0KCdyZW1vdmVMaXN0ZW5lcicsIHR5cGUsIGxpc3RlbmVyKTtcblxuICB9IGVsc2UgaWYgKGlzT2JqZWN0KGxpc3QpKSB7XG4gICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gPiAwOykge1xuICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8XG4gICAgICAgICAgKGxpc3RbaV0ubGlzdGVuZXIgJiYgbGlzdFtpXS5saXN0ZW5lciA9PT0gbGlzdGVuZXIpKSB7XG4gICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uIDwgMClcbiAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgaWYgKGxpc3QubGVuZ3RoID09PSAxKSB7XG4gICAgICBsaXN0Lmxlbmd0aCA9IDA7XG4gICAgICBkZWxldGUgdGhpcy5fZXZlbnRzW3R5cGVdO1xuICAgIH0gZWxzZSB7XG4gICAgICBsaXN0LnNwbGljZShwb3NpdGlvbiwgMSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcilcbiAgICAgIHRoaXMuZW1pdCgncmVtb3ZlTGlzdGVuZXInLCB0eXBlLCBsaXN0ZW5lcik7XG4gIH1cblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucmVtb3ZlQWxsTGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIga2V5LCBsaXN0ZW5lcnM7XG5cbiAgaWYgKCF0aGlzLl9ldmVudHMpXG4gICAgcmV0dXJuIHRoaXM7XG5cbiAgLy8gbm90IGxpc3RlbmluZyBmb3IgcmVtb3ZlTGlzdGVuZXIsIG5vIG5lZWQgdG8gZW1pdFxuICBpZiAoIXRoaXMuX2V2ZW50cy5yZW1vdmVMaXN0ZW5lcikge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAwKVxuICAgICAgdGhpcy5fZXZlbnRzID0ge307XG4gICAgZWxzZSBpZiAodGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgICAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGZvciAoa2V5IGluIHRoaXMuX2V2ZW50cykge1xuICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycyhrZXkpO1xuICAgIH1cbiAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICB0aGlzLl9ldmVudHMgPSB7fTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIGxpc3RlbmVycyA9IHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICBpZiAoaXNGdW5jdGlvbihsaXN0ZW5lcnMpKSB7XG4gICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnMpO1xuICB9IGVsc2UgaWYgKGxpc3RlbmVycykge1xuICAgIC8vIExJRk8gb3JkZXJcbiAgICB3aGlsZSAobGlzdGVuZXJzLmxlbmd0aClcbiAgICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIodHlwZSwgbGlzdGVuZXJzW2xpc3RlbmVycy5sZW5ndGggLSAxXSk7XG4gIH1cbiAgZGVsZXRlIHRoaXMuX2V2ZW50c1t0eXBlXTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24odHlwZSkge1xuICB2YXIgcmV0O1xuICBpZiAoIXRoaXMuX2V2ZW50cyB8fCAhdGhpcy5fZXZlbnRzW3R5cGVdKVxuICAgIHJldCA9IFtdO1xuICBlbHNlIGlmIChpc0Z1bmN0aW9uKHRoaXMuX2V2ZW50c1t0eXBlXSkpXG4gICAgcmV0ID0gW3RoaXMuX2V2ZW50c1t0eXBlXV07XG4gIGVsc2VcbiAgICByZXQgPSB0aGlzLl9ldmVudHNbdHlwZV0uc2xpY2UoKTtcbiAgcmV0dXJuIHJldDtcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJDb3VudCA9IGZ1bmN0aW9uKHR5cGUpIHtcbiAgaWYgKHRoaXMuX2V2ZW50cykge1xuICAgIHZhciBldmxpc3RlbmVyID0gdGhpcy5fZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKGlzRnVuY3Rpb24oZXZsaXN0ZW5lcikpXG4gICAgICByZXR1cm4gMTtcbiAgICBlbHNlIGlmIChldmxpc3RlbmVyKVxuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICB9XG4gIHJldHVybiAwO1xufTtcblxuRXZlbnRFbWl0dGVyLmxpc3RlbmVyQ291bnQgPSBmdW5jdGlvbihlbWl0dGVyLCB0eXBlKSB7XG4gIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG59O1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cblxuZnVuY3Rpb24gaXNPYmplY3QoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiBhcmcgIT09IG51bGw7XG59XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG4iLCJ2YXIgY3JlYXRlSGFzaCA9IHJlcXVpcmUoJ2NyZWF0ZS1oYXNoJylcblxuZnVuY3Rpb24gcmlwZW1kMTYwIChidWZmZXIpIHtcbiAgcmV0dXJuIGNyZWF0ZUhhc2goJ3JtZDE2MCcpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdCgpXG59XG5cbmZ1bmN0aW9uIHNoYTEgKGJ1ZmZlcikge1xuICByZXR1cm4gY3JlYXRlSGFzaCgnc2hhMScpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdCgpXG59XG5cbmZ1bmN0aW9uIHNoYTI1NiAoYnVmZmVyKSB7XG4gIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKVxufVxuXG5mdW5jdGlvbiBoYXNoMTYwIChidWZmZXIpIHtcbiAgcmV0dXJuIHJpcGVtZDE2MChzaGEyNTYoYnVmZmVyKSlcbn1cblxuZnVuY3Rpb24gaGFzaDI1NiAoYnVmZmVyKSB7XG4gIHJldHVybiBzaGEyNTYoc2hhMjU2KGJ1ZmZlcikpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBoYXNoMTYwOiBoYXNoMTYwLFxuICBoYXNoMjU2OiBoYXNoMjU2LFxuICByaXBlbWQxNjA6IHJpcGVtZDE2MCxcbiAgc2hhMTogc2hhMSxcbiAgc2hhMjU2OiBzaGEyNTZcbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG4vLyBwcm90b3R5cGUgY2xhc3MgZm9yIGhhc2ggZnVuY3Rpb25zXG5mdW5jdGlvbiBIYXNoIChibG9ja1NpemUsIGZpbmFsU2l6ZSkge1xuICB0aGlzLl9ibG9jayA9IEJ1ZmZlci5hbGxvYyhibG9ja1NpemUpXG4gIHRoaXMuX2ZpbmFsU2l6ZSA9IGZpbmFsU2l6ZVxuICB0aGlzLl9ibG9ja1NpemUgPSBibG9ja1NpemVcbiAgdGhpcy5fbGVuID0gMFxufVxuXG5IYXNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jKSB7XG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmMgPSBlbmMgfHwgJ3V0ZjgnXG4gICAgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIGVuYylcbiAgfVxuXG4gIHZhciBibG9jayA9IHRoaXMuX2Jsb2NrXG4gIHZhciBibG9ja1NpemUgPSB0aGlzLl9ibG9ja1NpemVcbiAgdmFyIGxlbmd0aCA9IGRhdGEubGVuZ3RoXG4gIHZhciBhY2N1bSA9IHRoaXMuX2xlblxuXG4gIGZvciAodmFyIG9mZnNldCA9IDA7IG9mZnNldCA8IGxlbmd0aDspIHtcbiAgICB2YXIgYXNzaWduZWQgPSBhY2N1bSAlIGJsb2NrU2l6ZVxuICAgIHZhciByZW1haW5kZXIgPSBNYXRoLm1pbihsZW5ndGggLSBvZmZzZXQsIGJsb2NrU2l6ZSAtIGFzc2lnbmVkKVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZW1haW5kZXI7IGkrKykge1xuICAgICAgYmxvY2tbYXNzaWduZWQgKyBpXSA9IGRhdGFbb2Zmc2V0ICsgaV1cbiAgICB9XG5cbiAgICBhY2N1bSArPSByZW1haW5kZXJcbiAgICBvZmZzZXQgKz0gcmVtYWluZGVyXG5cbiAgICBpZiAoKGFjY3VtICUgYmxvY2tTaXplKSA9PT0gMCkge1xuICAgICAgdGhpcy5fdXBkYXRlKGJsb2NrKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuX2xlbiArPSBsZW5ndGhcbiAgcmV0dXJuIHRoaXNcbn1cblxuSGFzaC5wcm90b3R5cGUuZGlnZXN0ID0gZnVuY3Rpb24gKGVuYykge1xuICB2YXIgcmVtID0gdGhpcy5fbGVuICUgdGhpcy5fYmxvY2tTaXplXG5cbiAgdGhpcy5fYmxvY2tbcmVtXSA9IDB4ODBcblxuICAvLyB6ZXJvIChyZW0gKyAxKSB0cmFpbGluZyBiaXRzLCB3aGVyZSAocmVtICsgMSkgaXMgdGhlIHNtYWxsZXN0XG4gIC8vIG5vbi1uZWdhdGl2ZSBzb2x1dGlvbiB0byB0aGUgZXF1YXRpb24gKGxlbmd0aCArIDEgKyAocmVtICsgMSkpID09PSBmaW5hbFNpemUgbW9kIGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9jay5maWxsKDAsIHJlbSArIDEpXG5cbiAgaWYgKHJlbSA+PSB0aGlzLl9maW5hbFNpemUpIHtcbiAgICB0aGlzLl91cGRhdGUodGhpcy5fYmxvY2spXG4gICAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB9XG5cbiAgdmFyIGJpdHMgPSB0aGlzLl9sZW4gKiA4XG5cbiAgLy8gdWludDMyXG4gIGlmIChiaXRzIDw9IDB4ZmZmZmZmZmYpIHtcbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGJpdHMsIHRoaXMuX2Jsb2NrU2l6ZSAtIDQpXG5cbiAgLy8gdWludDY0XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxvd0JpdHMgPSAoYml0cyAmIDB4ZmZmZmZmZmYpID4+PiAwXG4gICAgdmFyIGhpZ2hCaXRzID0gKGJpdHMgLSBsb3dCaXRzKSAvIDB4MTAwMDAwMDAwXG5cbiAgICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkJFKGhpZ2hCaXRzLCB0aGlzLl9ibG9ja1NpemUgLSA4KVxuICAgIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyQkUobG93Qml0cywgdGhpcy5fYmxvY2tTaXplIC0gNClcbiAgfVxuXG4gIHRoaXMuX3VwZGF0ZSh0aGlzLl9ibG9jaylcbiAgdmFyIGhhc2ggPSB0aGlzLl9oYXNoKClcblxuICByZXR1cm4gZW5jID8gaGFzaC50b1N0cmluZyhlbmMpIDogaGFzaFxufVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ191cGRhdGUgbXVzdCBiZSBpbXBsZW1lbnRlZCBieSBzdWJjbGFzcycpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gSGFzaFxuIiwiLy8gaHR0cHM6Ly9lbi5iaXRjb2luLml0L3dpa2kvTGlzdF9vZl9hZGRyZXNzX3ByZWZpeGVzXG4vLyBEb2dlY29pbiBCSVAzMiBpcyBhIHByb3Bvc2VkIHN0YW5kYXJkOiBodHRwczovL2JpdGNvaW50YWxrLm9yZy9pbmRleC5waHA/dG9waWM9NDA5NzMxXG52YXIgY29pbnMgPSByZXF1aXJlKCcuL2NvaW5zJylcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGJpdGNvaW46IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThCaXRjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gICAgYmVjaDMyOiAnYmMnLFxuICAgIGJpcDMyOiB7XG4gICAgICBwdWJsaWM6IDB4MDQ4OGIyMWUsXG4gICAgICBwcml2YXRlOiAweDA0ODhhZGU0XG4gICAgfSxcbiAgICBwdWJLZXlIYXNoOiAweDAwLFxuICAgIHNjcmlwdEhhc2g6IDB4MDUsXG4gICAgd2lmOiAweDgwLFxuICAgIGNvaW46IGNvaW5zLkJUQ1xuICB9LFxuICB0ZXN0bmV0OiB7XG4gICAgbWVzc2FnZVByZWZpeDogJ1xceDE4Qml0Y29pbiBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJlY2gzMjogJ3RiJyxcbiAgICBiaXAzMjoge1xuICAgICAgcHVibGljOiAweDA0MzU4N2NmLFxuICAgICAgcHJpdmF0ZTogMHgwNDM1ODM5NFxuICAgIH0sXG4gICAgcHViS2V5SGFzaDogMHg2ZixcbiAgICBzY3JpcHRIYXNoOiAweGM0LFxuICAgIHdpZjogMHhlZixcbiAgICBjb2luOiBjb2lucy5CVENcbiAgfSxcbiAgbGl0ZWNvaW46IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MTlMaXRlY29pbiBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJpcDMyOiB7XG4gICAgICBwdWJsaWM6IDB4MDE5ZGE0NjIsXG4gICAgICBwcml2YXRlOiAweDAxOWQ5Y2ZlXG4gICAgfSxcbiAgICBwdWJLZXlIYXNoOiAweDMwLFxuICAgIHNjcmlwdEhhc2g6IDB4MzIsXG4gICAgd2lmOiAweGIwLFxuICAgIGNvaW46IGNvaW5zLkxUQ1xuICB9LFxuICBkYXNoOiB7XG4gICAgbWVzc2FnZVByZWZpeDogJ1xceDE5RGFya0NvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiaXAzMjoge1xuICAgICAgcHVibGljOiAweDA0ODhiMjFlLFxuICAgICAgcHJpdmF0ZTogMHgwNDg4YWRlNFxuICAgIH0sXG4gICAgcHViS2V5SGFzaDogMHg0YywgLy8gaHR0cHM6Ly9kYXNoLWRvY3MuZ2l0aHViLmlvL2VuL2RldmVsb3Blci1yZWZlcmVuY2Ujb3Bjb2Rlc1xuICAgIHNjcmlwdEhhc2g6IDB4MTAsXG4gICAgd2lmOiAweGNjLFxuICAgIGNvaW46IGNvaW5zLkRBU0hcbiAgfSxcbiAgZGFzaFRlc3Q6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MTlEYXJrQ29pbiBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJpcDMyOiB7XG4gICAgICBwdWJsaWM6IDB4MDQzNTg3Y2YsXG4gICAgICBwcml2YXRlOiAweDA0MzU4Mzk0XG4gICAgfSxcbiAgICBwdWJLZXlIYXNoOiAweDhjLCAvLyBodHRwczovL2Rhc2gtZG9jcy5naXRodWIuaW8vZW4vZGV2ZWxvcGVyLXJlZmVyZW5jZSNvcGNvZGVzXG4gICAgc2NyaXB0SGFzaDogMHgxMyxcbiAgICB3aWY6IDB4ZWYsIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kYXNocGF5L2dvZGFzaHV0aWwvYmxvYi9tYXN0ZXIvd2lmLmdvI0w3MlxuICAgIGNvaW46IGNvaW5zLkRBU0hcbiAgfSxcbiAgemNhc2g6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThaQ2FzaCBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJlY2gzMjogJ2JjJyxcbiAgICBiaXAzMjoge1xuICAgICAgcHVibGljOiAweDA0ODhiMjFlLFxuICAgICAgcHJpdmF0ZTogMHgwNDg4YWRlNFxuICAgIH0sXG4gICAgcHViS2V5SGFzaDogMHgxY2I4LFxuICAgIHNjcmlwdEhhc2g6IDB4MWNiZCxcbiAgICB3aWY6IDB4ODAsXG4gICAgLy8gVGhpcyBwYXJhbWV0ZXIgd2FzIGludHJvZHVjZWQgaW4gdmVyc2lvbiAzIHRvIGFsbG93IHNvZnQgZm9ya3MsIGZvciB2ZXJzaW9uIDEgYW5kIDIgdHJhbnNhY3Rpb25zIHdlIGFkZCBhXG4gICAgLy8gZHVtbXkgdmFsdWUuXG4gICAgY29uc2Vuc3VzQnJhbmNoSWQ6IHtcbiAgICAgIDE6IDB4MDAsXG4gICAgICAyOiAweDAwLFxuICAgICAgMzogMHg1YmE4MWIxOSxcbiAgICAgIDQ6IDB4NzZiODA5YmJcbiAgICB9LFxuICAgIGNvaW46IGNvaW5zLlpFQ1xuICB9LFxuICB6Y2FzaFRlc3Q6IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThaQ2FzaCBTaWduZWQgTWVzc2FnZTpcXG4nLFxuICAgIGJlY2gzMjogJ3RiJyxcbiAgICBiaXAzMjoge1xuICAgICAgcHVibGljOiAweDA0MzU4N2NmLFxuICAgICAgcHJpdmF0ZTogMHgwNDM1ODM5NFxuICAgIH0sXG4gICAgcHViS2V5SGFzaDogMHgxZDI1LFxuICAgIHNjcmlwdEhhc2g6IDB4MWNiYSxcbiAgICB3aWY6IDB4ZWYsXG4gICAgY29uc2Vuc3VzQnJhbmNoSWQ6IHtcbiAgICAgIDE6IDB4MDAsXG4gICAgICAyOiAweDAwLFxuICAgICAgMzogMHg1YmE4MWIxOSxcbiAgICAgIDQ6IDB4NzZiODA5YmJcbiAgICB9LFxuICAgIGNvaW46IGNvaW5zLlpFQ1xuICB9LFxuICBjYXByaWNvaW46IHtcbiAgICBtZXNzYWdlUHJlZml4OiAnXFx4MThDYXByaWNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJyxcbiAgICBiZWNoMzI6IG51bGwsXG4gICAgYmlwMzI6IHtcbiAgICAgIHB1YmxpYzogNzYwNjczNTgsXG4gICAgICBwcml2YXRlOiA3NjA2NjI3NlxuICAgIH0sXG4gICAgcHViS2V5SGFzaDogMjgsXG4gICAgc2NyaXB0SGFzaDogMzUsXG4gICAgd2lmOiAweGVmLFxuICAgIGNvaW46IGNvaW5zLkNBUFJJQ09JTlxuICB9XG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBub2RlL25vLWRlcHJlY2F0ZWQtYXBpICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYnVmZmVyID0gcmVxdWlyZSgnYnVmZmVyJylcbnZhciBCdWZmZXIgPSBidWZmZXIuQnVmZmVyXG5cbnZhciBzYWZlciA9IHt9XG5cbnZhciBrZXlcblxuZm9yIChrZXkgaW4gYnVmZmVyKSB7XG4gIGlmICghYnVmZmVyLmhhc093blByb3BlcnR5KGtleSkpIGNvbnRpbnVlXG4gIGlmIChrZXkgPT09ICdTbG93QnVmZmVyJyB8fCBrZXkgPT09ICdCdWZmZXInKSBjb250aW51ZVxuICBzYWZlcltrZXldID0gYnVmZmVyW2tleV1cbn1cblxudmFyIFNhZmVyID0gc2FmZXIuQnVmZmVyID0ge31cbmZvciAoa2V5IGluIEJ1ZmZlcikge1xuICBpZiAoIUJ1ZmZlci5oYXNPd25Qcm9wZXJ0eShrZXkpKSBjb250aW51ZVxuICBpZiAoa2V5ID09PSAnYWxsb2NVbnNhZmUnIHx8IGtleSA9PT0gJ2FsbG9jVW5zYWZlU2xvdycpIGNvbnRpbnVlXG4gIFNhZmVyW2tleV0gPSBCdWZmZXJba2V5XVxufVxuXG5zYWZlci5CdWZmZXIucHJvdG90eXBlID0gQnVmZmVyLnByb3RvdHlwZVxuXG5pZiAoIVNhZmVyLmZyb20gfHwgU2FmZXIuZnJvbSA9PT0gVWludDhBcnJheS5mcm9tKSB7XG4gIFNhZmVyLmZyb20gPSBmdW5jdGlvbiAodmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIG9mIHR5cGUgbnVtYmVyLiBSZWNlaXZlZCB0eXBlICcgKyB0eXBlb2YgdmFsdWUpXG4gICAgfVxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUubGVuZ3RoID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgb25lIG9mIHR5cGUgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgQXJyYXktbGlrZSBPYmplY3QuIFJlY2VpdmVkIHR5cGUgJyArIHR5cGVvZiB2YWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIEJ1ZmZlcih2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxuICB9XG59XG5cbmlmICghU2FmZXIuYWxsb2MpIHtcbiAgU2FmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBvZiB0eXBlIG51bWJlci4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIHNpemUpXG4gICAgfVxuICAgIGlmIChzaXplIDwgMCB8fCBzaXplID49IDIgKiAoMSA8PCAzMCkpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdUaGUgdmFsdWUgXCInICsgc2l6ZSArICdcIiBpcyBpbnZhbGlkIGZvciBvcHRpb24gXCJzaXplXCInKVxuICAgIH1cbiAgICB2YXIgYnVmID0gQnVmZmVyKHNpemUpXG4gICAgaWYgKCFmaWxsIHx8IGZpbGwubGVuZ3RoID09PSAwKSB7XG4gICAgICBidWYuZmlsbCgwKVxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykge1xuICAgICAgYnVmLmZpbGwoZmlsbCwgZW5jb2RpbmcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1Zi5maWxsKGZpbGwpXG4gICAgfVxuICAgIHJldHVybiBidWZcbiAgfVxufVxuXG5pZiAoIXNhZmVyLmtTdHJpbmdNYXhMZW5ndGgpIHtcbiAgdHJ5IHtcbiAgICBzYWZlci5rU3RyaW5nTWF4TGVuZ3RoID0gcHJvY2Vzcy5iaW5kaW5nKCdidWZmZXInKS5rU3RyaW5nTWF4TGVuZ3RoXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyB3ZSBjYW4ndCBkZXRlcm1pbmUga1N0cmluZ01heExlbmd0aCBpbiBlbnZpcm9ubWVudHMgd2hlcmUgcHJvY2Vzcy5iaW5kaW5nXG4gICAgLy8gaXMgdW5zdXBwb3J0ZWQsIHNvIGxldCdzIG5vdCBzZXQgaXRcbiAgfVxufVxuXG5pZiAoIXNhZmVyLmNvbnN0YW50cykge1xuICBzYWZlci5jb25zdGFudHMgPSB7XG4gICAgTUFYX0xFTkdUSDogc2FmZXIua01heExlbmd0aFxuICB9XG4gIGlmIChzYWZlci5rU3RyaW5nTWF4TGVuZ3RoKSB7XG4gICAgc2FmZXIuY29uc3RhbnRzLk1BWF9TVFJJTkdfTEVOR1RIID0gc2FmZXIua1N0cmluZ01heExlbmd0aFxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2FmZXJcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG4vLyBhdm9pZHMgYSBidWcgaW4gZmxvd3R5cGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy81NDVcblxudmFyIGV2ZW50cyA9IHJlcXVpcmUoJ2V2ZW50cycpO1xudmFyIEV2ZW50RW1pdHRlck91dCA9IGV2ZW50cy5FdmVudEVtaXR0ZXI7XG5cbnZhciBFdmVudEVtaXR0ZXIgPSBleHBvcnRzLkV2ZW50RW1pdHRlciA9IGZ1bmN0aW9uIChfRXZlbnRFbWl0dGVyT3V0KSB7XG4gIF9pbmhlcml0cyhFdmVudEVtaXR0ZXIsIF9FdmVudEVtaXR0ZXJPdXQpO1xuXG4gIGZ1bmN0aW9uIEV2ZW50RW1pdHRlcigpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXZlbnRFbWl0dGVyKTtcblxuICAgIHJldHVybiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoRXZlbnRFbWl0dGVyLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoRXZlbnRFbWl0dGVyKSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG4gIH1cblxuICByZXR1cm4gRXZlbnRFbWl0dGVyO1xufShFdmVudEVtaXR0ZXJPdXQpOyIsIlxuXG4vLyBTaW1wbGUgd3JhcHBlciBmb3IgdHlwZWNoZWNraW5nIGV2ZW50c1xuLy8gc2VlOiBodHRwczovL2dpdGh1Yi5jb20vcnVubjFuZy9mbG93LWV2ZW50c1xuJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBldmVudHMgPSByZXF1aXJlKCdldmVudHMnKTtcbnZhciBFdmVudEVtaXR0ZXIgPSBldmVudHMuRXZlbnRFbWl0dGVyO1xuXG52YXIgRXZlbnQwID0gZXhwb3J0cy5FdmVudDAgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRXZlbnQwKHR5cGUsIHBhcmVudCkge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXZlbnQwKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoRXZlbnQwLCBbe1xuICAgICAgICBrZXk6ICdvbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBvbihsaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQub24odGhpcy50eXBlLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ29uY2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gb25jZShsaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQub25jZSh0aGlzLnR5cGUsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVtb3ZlTGlzdGVuZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdyZW1vdmVBbGxMaXN0ZW5lcnMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQWxsTGlzdGVuZXJzKHRoaXMudHlwZSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2VtaXQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZW1pdCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5lbWl0KHRoaXMudHlwZSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2xpc3RlbmVyQ291bnQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gbGlzdGVuZXJDb3VudCgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmVudC5saXN0ZW5lckNvdW50KHRoaXMudHlwZSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gRXZlbnQwO1xufSgpO1xuXG52YXIgRXZlbnQxID0gZXhwb3J0cy5FdmVudDEgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gRXZlbnQxKHR5cGUsIHBhcmVudCkge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRXZlbnQxKTtcblxuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgICAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoRXZlbnQxLCBbe1xuICAgICAgICBrZXk6ICdvbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBvbihsaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQub24odGhpcy50eXBlLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ29uY2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gb25jZShsaXN0ZW5lcikge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQub25jZSh0aGlzLnR5cGUsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVtb3ZlTGlzdGVuZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUxpc3RlbmVyKHRoaXMudHlwZSwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdyZW1vdmVBbGxMaXN0ZW5lcnMnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVtb3ZlQWxsTGlzdGVuZXJzKCkge1xuICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlQWxsTGlzdGVuZXJzKHRoaXMudHlwZSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2VtaXQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZW1pdChhcmcxKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuZW1pdCh0aGlzLnR5cGUsIGFyZzEpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdsaXN0ZW5lckNvdW50JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGxpc3RlbmVyQ291bnQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQubGlzdGVuZXJDb3VudCh0aGlzLnR5cGUpO1xuICAgICAgICB9XG4gICAgfV0pO1xuXG4gICAgcmV0dXJuIEV2ZW50MTtcbn0oKTtcblxudmFyIEV2ZW50MiA9IGV4cG9ydHMuRXZlbnQyID0gZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIEV2ZW50Mih0eXBlLCBwYXJlbnQpIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV2ZW50Mik7XG5cbiAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKEV2ZW50MiwgW3tcbiAgICAgICAga2V5OiAnb24nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gb24obGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uKHRoaXMudHlwZSwgbGlzdGVuZXIpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdvbmNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIG9uY2UobGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50Lm9uY2UodGhpcy50eXBlLCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3JlbW92ZUxpc3RlbmVyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUxpc3RlbmVyKGxpc3RlbmVyKSB7XG4gICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIGxpc3RlbmVyKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmVtb3ZlQWxsTGlzdGVuZXJzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycygpIHtcbiAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW92ZUFsbExpc3RlbmVycyh0aGlzLnR5cGUpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdlbWl0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGVtaXQoYXJnMSwgYXJnMikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50LmVtaXQodGhpcy50eXBlLCBhcmcxLCBhcmcyKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbGlzdGVuZXJDb3VudCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsaXN0ZW5lckNvdW50KCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50Lmxpc3RlbmVyQ291bnQodGhpcy50eXBlKTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBFdmVudDI7XG59KCk7IiwidmFyIHNjcmlwdCA9IHJlcXVpcmUoJy4vc2NyaXB0JylcblxudmFyIHRlbXBsYXRlcyA9IHJlcXVpcmUoJy4vdGVtcGxhdGVzJylcbmZvciAodmFyIGtleSBpbiB0ZW1wbGF0ZXMpIHtcbiAgc2NyaXB0W2tleV0gPSB0ZW1wbGF0ZXNba2V5XVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYnVmZmVydXRpbHM6IHJlcXVpcmUoJy4vYnVmZmVydXRpbHMnKSwgLy8gVE9ETzogcmVtb3ZlIGluIDQuMC4wXG5cbiAgQmxvY2s6IHJlcXVpcmUoJy4vYmxvY2snKSxcbiAgRUNQYWlyOiByZXF1aXJlKCcuL2VjcGFpcicpLFxuICBFQ1NpZ25hdHVyZTogcmVxdWlyZSgnLi9lY3NpZ25hdHVyZScpLFxuICBIRE5vZGU6IHJlcXVpcmUoJy4vaGRub2RlJyksXG4gIFRyYW5zYWN0aW9uOiByZXF1aXJlKCcuL3RyYW5zYWN0aW9uJyksXG4gIFRyYW5zYWN0aW9uQnVpbGRlcjogcmVxdWlyZSgnLi90cmFuc2FjdGlvbl9idWlsZGVyJyksXG5cbiAgYWRkcmVzczogcmVxdWlyZSgnLi9hZGRyZXNzJyksXG4gIGNyeXB0bzogcmVxdWlyZSgnLi9jcnlwdG8nKSxcbiAgbmV0d29ya3M6IHJlcXVpcmUoJy4vbmV0d29ya3MnKSxcbiAgb3Bjb2RlczogcmVxdWlyZSgnYml0Y29pbi1vcHMnKSxcbiAgc2NyaXB0OiBzY3JpcHRcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG5tb2R1bGUuZXhwb3J0cyA9IFN0cmVhbTtcblxudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcblxuaW5oZXJpdHMoU3RyZWFtLCBFRSk7XG5TdHJlYW0uUmVhZGFibGUgPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUuanMnKTtcblN0cmVhbS5Xcml0YWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS93cml0YWJsZS5qcycpO1xuU3RyZWFtLkR1cGxleCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9kdXBsZXguanMnKTtcblN0cmVhbS5UcmFuc2Zvcm0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vdHJhbnNmb3JtLmpzJyk7XG5TdHJlYW0uUGFzc1Rocm91Z2ggPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0vcGFzc3Rocm91Z2guanMnKTtcblxuLy8gQmFja3dhcmRzLWNvbXBhdCB3aXRoIG5vZGUgMC40LnhcblN0cmVhbS5TdHJlYW0gPSBTdHJlYW07XG5cblxuXG4vLyBvbGQtc3R5bGUgc3RyZWFtcy4gIE5vdGUgdGhhdCB0aGUgcGlwZSBtZXRob2QgKHRoZSBvbmx5IHJlbGV2YW50XG4vLyBwYXJ0IG9mIHRoaXMgY2xhc3MpIGlzIG92ZXJyaWRkZW4gaW4gdGhlIFJlYWRhYmxlIGNsYXNzLlxuXG5mdW5jdGlvbiBTdHJlYW0oKSB7XG4gIEVFLmNhbGwodGhpcyk7XG59XG5cblN0cmVhbS5wcm90b3R5cGUucGlwZSA9IGZ1bmN0aW9uKGRlc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHNvdXJjZSA9IHRoaXM7XG5cbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgaWYgKGRlc3Qud3JpdGFibGUpIHtcbiAgICAgIGlmIChmYWxzZSA9PT0gZGVzdC53cml0ZShjaHVuaykgJiYgc291cmNlLnBhdXNlKSB7XG4gICAgICAgIHNvdXJjZS5wYXVzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZGF0YScsIG9uZGF0YSk7XG5cbiAgZnVuY3Rpb24gb25kcmFpbigpIHtcbiAgICBpZiAoc291cmNlLnJlYWRhYmxlICYmIHNvdXJjZS5yZXN1bWUpIHtcbiAgICAgIHNvdXJjZS5yZXN1bWUoKTtcbiAgICB9XG4gIH1cblxuICBkZXN0Lm9uKCdkcmFpbicsIG9uZHJhaW4pO1xuXG4gIC8vIElmIHRoZSAnZW5kJyBvcHRpb24gaXMgbm90IHN1cHBsaWVkLCBkZXN0LmVuZCgpIHdpbGwgYmUgY2FsbGVkIHdoZW5cbiAgLy8gc291cmNlIGdldHMgdGhlICdlbmQnIG9yICdjbG9zZScgZXZlbnRzLiAgT25seSBkZXN0LmVuZCgpIG9uY2UuXG4gIGlmICghZGVzdC5faXNTdGRpbyAmJiAoIW9wdGlvbnMgfHwgb3B0aW9ucy5lbmQgIT09IGZhbHNlKSkge1xuICAgIHNvdXJjZS5vbignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5vbignY2xvc2UnLCBvbmNsb3NlKTtcbiAgfVxuXG4gIHZhciBkaWRPbkVuZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBpZiAoZGlkT25FbmQpIHJldHVybjtcbiAgICBkaWRPbkVuZCA9IHRydWU7XG5cbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cblxuICBmdW5jdGlvbiBvbmNsb3NlKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGlmICh0eXBlb2YgZGVzdC5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSBkZXN0LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIGRvbid0IGxlYXZlIGRhbmdsaW5nIHBpcGVzIHdoZW4gdGhlcmUgYXJlIGVycm9ycy5cbiAgZnVuY3Rpb24gb25lcnJvcihlcikge1xuICAgIGNsZWFudXAoKTtcbiAgICBpZiAoRUUubGlzdGVuZXJDb3VudCh0aGlzLCAnZXJyb3InKSA9PT0gMCkge1xuICAgICAgdGhyb3cgZXI7IC8vIFVuaGFuZGxlZCBzdHJlYW0gZXJyb3IgaW4gcGlwZS5cbiAgICB9XG4gIH1cblxuICBzb3VyY2Uub24oJ2Vycm9yJywgb25lcnJvcik7XG4gIGRlc3Qub24oJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gcmVtb3ZlIGFsbCB0aGUgZXZlbnQgbGlzdGVuZXJzIHRoYXQgd2VyZSBhZGRlZC5cbiAgZnVuY3Rpb24gY2xlYW51cCgpIHtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2RhdGEnLCBvbmRhdGEpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ2RyYWluJywgb25kcmFpbik7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgb25jbG9zZSk7XG5cbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25lcnJvcik7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgY2xlYW51cCk7XG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBjbGVhbnVwKTtcbiAgfVxuXG4gIHNvdXJjZS5vbignZW5kJywgY2xlYW51cCk7XG4gIHNvdXJjZS5vbignY2xvc2UnLCBjbGVhbnVwKTtcblxuICBkZXN0Lm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3QuZW1pdCgncGlwZScsIHNvdXJjZSk7XG5cbiAgLy8gQWxsb3cgZm9yIHVuaXgtbGlrZSB1c2FnZTogQS5waXBlKEIpLnBpcGUoQylcbiAgcmV0dXJuIGRlc3Q7XG59O1xuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBOT1RFOiBUaGVzZSB0eXBlIGNoZWNraW5nIGZ1bmN0aW9ucyBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBgaW5zdGFuY2VvZmBcbi8vIGJlY2F1c2UgaXQgaXMgZnJhZ2lsZSBhbmQgY2FuIGJlIGVhc2lseSBmYWtlZCB3aXRoIGBPYmplY3QuY3JlYXRlKClgLlxuXG5mdW5jdGlvbiBpc0FycmF5KGFyZykge1xuICBpZiAoQXJyYXkuaXNBcnJheSkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KGFyZyk7XG4gIH1cbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKGFyZykgPT09ICdbb2JqZWN0IEFycmF5XSc7XG59XG5leHBvcnRzLmlzQXJyYXkgPSBpc0FycmF5O1xuXG5mdW5jdGlvbiBpc0Jvb2xlYW4oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnYm9vbGVhbic7XG59XG5leHBvcnRzLmlzQm9vbGVhbiA9IGlzQm9vbGVhbjtcblxuZnVuY3Rpb24gaXNOdWxsKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsO1xufVxuZXhwb3J0cy5pc051bGwgPSBpc051bGw7XG5cbmZ1bmN0aW9uIGlzTnVsbE9yVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbE9yVW5kZWZpbmVkID0gaXNOdWxsT3JVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzTnVtYmVyKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ251bWJlcic7XG59XG5leHBvcnRzLmlzTnVtYmVyID0gaXNOdW1iZXI7XG5cbmZ1bmN0aW9uIGlzU3RyaW5nKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N0cmluZyc7XG59XG5leHBvcnRzLmlzU3RyaW5nID0gaXNTdHJpbmc7XG5cbmZ1bmN0aW9uIGlzU3ltYm9sKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCc7XG59XG5leHBvcnRzLmlzU3ltYm9sID0gaXNTeW1ib2w7XG5cbmZ1bmN0aW9uIGlzVW5kZWZpbmVkKGFyZykge1xuICByZXR1cm4gYXJnID09PSB2b2lkIDA7XG59XG5leHBvcnRzLmlzVW5kZWZpbmVkID0gaXNVbmRlZmluZWQ7XG5cbmZ1bmN0aW9uIGlzUmVnRXhwKHJlKSB7XG4gIHJldHVybiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiAob2JqZWN0VG9TdHJpbmcoZSkgPT09ICdbb2JqZWN0IEVycm9yXScgfHwgZSBpbnN0YW5jZW9mIEVycm9yKTtcbn1cbmV4cG9ydHMuaXNFcnJvciA9IGlzRXJyb3I7XG5cbmZ1bmN0aW9uIGlzRnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0cy5pc0Z1bmN0aW9uID0gaXNGdW5jdGlvbjtcblxuZnVuY3Rpb24gaXNQcmltaXRpdmUoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGwgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ251bWJlcicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3ltYm9sJyB8fCAgLy8gRVM2IHN5bWJvbFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3VuZGVmaW5lZCc7XG59XG5leHBvcnRzLmlzUHJpbWl0aXZlID0gaXNQcmltaXRpdmU7XG5cbmV4cG9ydHMuaXNCdWZmZXIgPSBCdWZmZXIuaXNCdWZmZXI7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gY29tcGFyZSBhbmQgaXNCdWZmZXIgdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZmVyb3NzL2J1ZmZlci9ibG9iLzY4MGU5ZTVlNDg4ZjIyYWFjMjc1OTlhNTdkYzg0NGE2MzE1OTI4ZGQvaW5kZXguanNcbi8vIG9yaWdpbmFsIG5vdGljZTpcblxuLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8ZmVyb3NzQGZlcm9zcy5vcmc+IDxodHRwOi8vZmVyb3NzLm9yZz5cbiAqIEBsaWNlbnNlICBNSVRcbiAqL1xuZnVuY3Rpb24gY29tcGFyZShhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICB2YXIgeCA9IGEubGVuZ3RoO1xuICB2YXIgeSA9IGIubGVuZ3RoO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsZW4gPSBNYXRoLm1pbih4LCB5KTsgaSA8IGxlbjsgKytpKSB7XG4gICAgaWYgKGFbaV0gIT09IGJbaV0pIHtcbiAgICAgIHggPSBhW2ldO1xuICAgICAgeSA9IGJbaV07XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBpZiAoeCA8IHkpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKHkgPCB4KSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5mdW5jdGlvbiBpc0J1ZmZlcihiKSB7XG4gIGlmIChnbG9iYWwuQnVmZmVyICYmIHR5cGVvZiBnbG9iYWwuQnVmZmVyLmlzQnVmZmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGdsb2JhbC5CdWZmZXIuaXNCdWZmZXIoYik7XG4gIH1cbiAgcmV0dXJuICEhKGIgIT0gbnVsbCAmJiBiLl9pc0J1ZmZlcik7XG59XG5cbi8vIGJhc2VkIG9uIG5vZGUgYXNzZXJ0LCBvcmlnaW5hbCBub3RpY2U6XG5cbi8vIGh0dHA6Ly93aWtpLmNvbW1vbmpzLm9yZy93aWtpL1VuaXRfVGVzdGluZy8xLjBcbi8vXG4vLyBUSElTIElTIE5PVCBURVNURUQgTk9SIExJS0VMWSBUTyBXT1JLIE9VVFNJREUgVjghXG4vL1xuLy8gT3JpZ2luYWxseSBmcm9tIG5hcndoYWwuanMgKGh0dHA6Ly9uYXJ3aGFsanMub3JnKVxuLy8gQ29weXJpZ2h0IChjKSAyMDA5IFRob21hcyBSb2JpbnNvbiA8Mjgwbm9ydGguY29tPlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICdTb2Z0d2FyZScpLCB0b1xuLy8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbi8vIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuLy8gc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU5cbi8vIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT05cbi8vIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwvJyk7XG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwU2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgZnVuY3Rpb25zSGF2ZU5hbWVzID0gKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGZvbygpIHt9Lm5hbWUgPT09ICdmb28nO1xufSgpKTtcbmZ1bmN0aW9uIHBUb1N0cmluZyAob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKTtcbn1cbmZ1bmN0aW9uIGlzVmlldyhhcnJidWYpIHtcbiAgaWYgKGlzQnVmZmVyKGFycmJ1ZikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlci5pc1ZpZXcgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gQXJyYXlCdWZmZXIuaXNWaWV3KGFycmJ1Zik7XG4gIH1cbiAgaWYgKCFhcnJidWYpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKGFycmJ1ZiBpbnN0YW5jZW9mIERhdGFWaWV3KSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGFycmJ1Zi5idWZmZXIgJiYgYXJyYnVmLmJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuLy8gMS4gVGhlIGFzc2VydCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIHRoYXQgdGhyb3dcbi8vIEFzc2VydGlvbkVycm9yJ3Mgd2hlbiBwYXJ0aWN1bGFyIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuIFRoZVxuLy8gYXNzZXJ0IG1vZHVsZSBtdXN0IGNvbmZvcm0gdG8gdGhlIGZvbGxvd2luZyBpbnRlcmZhY2UuXG5cbnZhciBhc3NlcnQgPSBtb2R1bGUuZXhwb3J0cyA9IG9rO1xuXG4vLyAyLiBUaGUgQXNzZXJ0aW9uRXJyb3IgaXMgZGVmaW5lZCBpbiBhc3NlcnQuXG4vLyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHsgbWVzc2FnZTogbWVzc2FnZSxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3R1YWw6IGFjdHVhbCxcbi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZDogZXhwZWN0ZWQgfSlcblxudmFyIHJlZ2V4ID0gL1xccypmdW5jdGlvblxccysoW15cXChcXHNdKilcXHMqLztcbi8vIGJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9samhhcmIvZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUvYmxvYi9hZGVlZWVjOGJmY2M2MDY4YjE4N2Q3ZDlmYjNkNWJiMWQzYTMwODk5L2ltcGxlbWVudGF0aW9uLmpzXG5mdW5jdGlvbiBnZXROYW1lKGZ1bmMpIHtcbiAgaWYgKCF1dGlsLmlzRnVuY3Rpb24oZnVuYykpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcykge1xuICAgIHJldHVybiBmdW5jLm5hbWU7XG4gIH1cbiAgdmFyIHN0ciA9IGZ1bmMudG9TdHJpbmcoKTtcbiAgdmFyIG1hdGNoID0gc3RyLm1hdGNoKHJlZ2V4KTtcbiAgcmV0dXJuIG1hdGNoICYmIG1hdGNoWzFdO1xufVxuYXNzZXJ0LkFzc2VydGlvbkVycm9yID0gZnVuY3Rpb24gQXNzZXJ0aW9uRXJyb3Iob3B0aW9ucykge1xuICB0aGlzLm5hbWUgPSAnQXNzZXJ0aW9uRXJyb3InO1xuICB0aGlzLmFjdHVhbCA9IG9wdGlvbnMuYWN0dWFsO1xuICB0aGlzLmV4cGVjdGVkID0gb3B0aW9ucy5leHBlY3RlZDtcbiAgdGhpcy5vcGVyYXRvciA9IG9wdGlvbnMub3BlcmF0b3I7XG4gIGlmIChvcHRpb25zLm1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBvcHRpb25zLm1lc3NhZ2U7XG4gICAgdGhpcy5nZW5lcmF0ZWRNZXNzYWdlID0gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5tZXNzYWdlID0gZ2V0TWVzc2FnZSh0aGlzKTtcbiAgICB0aGlzLmdlbmVyYXRlZE1lc3NhZ2UgPSB0cnVlO1xuICB9XG4gIHZhciBzdGFja1N0YXJ0RnVuY3Rpb24gPSBvcHRpb25zLnN0YWNrU3RhcnRGdW5jdGlvbiB8fCBmYWlsO1xuICBpZiAoRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UpIHtcbiAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCBzdGFja1N0YXJ0RnVuY3Rpb24pO1xuICB9IGVsc2Uge1xuICAgIC8vIG5vbiB2OCBicm93c2VycyBzbyB3ZSBjYW4gaGF2ZSBhIHN0YWNrdHJhY2VcbiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7XG4gICAgaWYgKGVyci5zdGFjaykge1xuICAgICAgdmFyIG91dCA9IGVyci5zdGFjaztcblxuICAgICAgLy8gdHJ5IHRvIHN0cmlwIHVzZWxlc3MgZnJhbWVzXG4gICAgICB2YXIgZm5fbmFtZSA9IGdldE5hbWUoc3RhY2tTdGFydEZ1bmN0aW9uKTtcbiAgICAgIHZhciBpZHggPSBvdXQuaW5kZXhPZignXFxuJyArIGZuX25hbWUpO1xuICAgICAgaWYgKGlkeCA+PSAwKSB7XG4gICAgICAgIC8vIG9uY2Ugd2UgaGF2ZSBsb2NhdGVkIHRoZSBmdW5jdGlvbiBmcmFtZVxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHN0cmlwIG91dCBldmVyeXRoaW5nIGJlZm9yZSBpdCAoYW5kIGl0cyBsaW5lKVxuICAgICAgICB2YXIgbmV4dF9saW5lID0gb3V0LmluZGV4T2YoJ1xcbicsIGlkeCArIDEpO1xuICAgICAgICBvdXQgPSBvdXQuc3Vic3RyaW5nKG5leHRfbGluZSArIDEpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN0YWNrID0gb3V0O1xuICAgIH1cbiAgfVxufTtcblxuLy8gYXNzZXJ0LkFzc2VydGlvbkVycm9yIGluc3RhbmNlb2YgRXJyb3JcbnV0aWwuaW5oZXJpdHMoYXNzZXJ0LkFzc2VydGlvbkVycm9yLCBFcnJvcik7XG5cbmZ1bmN0aW9uIHRydW5jYXRlKHMsIG4pIHtcbiAgaWYgKHR5cGVvZiBzID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBzLmxlbmd0aCA8IG4gPyBzIDogcy5zbGljZSgwLCBuKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcztcbiAgfVxufVxuZnVuY3Rpb24gaW5zcGVjdChzb21ldGhpbmcpIHtcbiAgaWYgKGZ1bmN0aW9uc0hhdmVOYW1lcyB8fCAhdXRpbC5pc0Z1bmN0aW9uKHNvbWV0aGluZykpIHtcbiAgICByZXR1cm4gdXRpbC5pbnNwZWN0KHNvbWV0aGluZyk7XG4gIH1cbiAgdmFyIHJhd25hbWUgPSBnZXROYW1lKHNvbWV0aGluZyk7XG4gIHZhciBuYW1lID0gcmF3bmFtZSA/ICc6ICcgKyByYXduYW1lIDogJyc7XG4gIHJldHVybiAnW0Z1bmN0aW9uJyArICBuYW1lICsgJ10nO1xufVxuZnVuY3Rpb24gZ2V0TWVzc2FnZShzZWxmKSB7XG4gIHJldHVybiB0cnVuY2F0ZShpbnNwZWN0KHNlbGYuYWN0dWFsKSwgMTI4KSArICcgJyArXG4gICAgICAgICBzZWxmLm9wZXJhdG9yICsgJyAnICtcbiAgICAgICAgIHRydW5jYXRlKGluc3BlY3Qoc2VsZi5leHBlY3RlZCksIDEyOCk7XG59XG5cbi8vIEF0IHByZXNlbnQgb25seSB0aGUgdGhyZWUga2V5cyBtZW50aW9uZWQgYWJvdmUgYXJlIHVzZWQgYW5kXG4vLyB1bmRlcnN0b29kIGJ5IHRoZSBzcGVjLiBJbXBsZW1lbnRhdGlvbnMgb3Igc3ViIG1vZHVsZXMgY2FuIHBhc3Ncbi8vIG90aGVyIGtleXMgdG8gdGhlIEFzc2VydGlvbkVycm9yJ3MgY29uc3RydWN0b3IgLSB0aGV5IHdpbGwgYmVcbi8vIGlnbm9yZWQuXG5cbi8vIDMuIEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBtdXN0IHRocm93IGFuIEFzc2VydGlvbkVycm9yXG4vLyB3aGVuIGEgY29ycmVzcG9uZGluZyBjb25kaXRpb24gaXMgbm90IG1ldCwgd2l0aCBhIG1lc3NhZ2UgdGhhdFxuLy8gbWF5IGJlIHVuZGVmaW5lZCBpZiBub3QgcHJvdmlkZWQuICBBbGwgYXNzZXJ0aW9uIG1ldGhvZHMgcHJvdmlkZVxuLy8gYm90aCB0aGUgYWN0dWFsIGFuZCBleHBlY3RlZCB2YWx1ZXMgdG8gdGhlIGFzc2VydGlvbiBlcnJvciBmb3Jcbi8vIGRpc3BsYXkgcHVycG9zZXMuXG5cbmZ1bmN0aW9uIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgb3BlcmF0b3IsIHN0YWNrU3RhcnRGdW5jdGlvbikge1xuICB0aHJvdyBuZXcgYXNzZXJ0LkFzc2VydGlvbkVycm9yKHtcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIGFjdHVhbDogYWN0dWFsLFxuICAgIGV4cGVjdGVkOiBleHBlY3RlZCxcbiAgICBvcGVyYXRvcjogb3BlcmF0b3IsXG4gICAgc3RhY2tTdGFydEZ1bmN0aW9uOiBzdGFja1N0YXJ0RnVuY3Rpb25cbiAgfSk7XG59XG5cbi8vIEVYVEVOU0lPTiEgYWxsb3dzIGZvciB3ZWxsIGJlaGF2ZWQgZXJyb3JzIGRlZmluZWQgZWxzZXdoZXJlLlxuYXNzZXJ0LmZhaWwgPSBmYWlsO1xuXG4vLyA0LiBQdXJlIGFzc2VydGlvbiB0ZXN0cyB3aGV0aGVyIGEgdmFsdWUgaXMgdHJ1dGh5LCBhcyBkZXRlcm1pbmVkXG4vLyBieSAhIWd1YXJkLlxuLy8gYXNzZXJ0Lm9rKGd1YXJkLCBtZXNzYWdlX29wdCk7XG4vLyBUaGlzIHN0YXRlbWVudCBpcyBlcXVpdmFsZW50IHRvIGFzc2VydC5lcXVhbCh0cnVlLCAhIWd1YXJkLFxuLy8gbWVzc2FnZV9vcHQpOy4gVG8gdGVzdCBzdHJpY3RseSBmb3IgdGhlIHZhbHVlIHRydWUsIHVzZVxuLy8gYXNzZXJ0LnN0cmljdEVxdWFsKHRydWUsIGd1YXJkLCBtZXNzYWdlX29wdCk7LlxuXG5mdW5jdGlvbiBvayh2YWx1ZSwgbWVzc2FnZSkge1xuICBpZiAoIXZhbHVlKSBmYWlsKHZhbHVlLCB0cnVlLCBtZXNzYWdlLCAnPT0nLCBhc3NlcnQub2spO1xufVxuYXNzZXJ0Lm9rID0gb2s7XG5cbi8vIDUuIFRoZSBlcXVhbGl0eSBhc3NlcnRpb24gdGVzdHMgc2hhbGxvdywgY29lcmNpdmUgZXF1YWxpdHkgd2l0aFxuLy8gPT0uXG4vLyBhc3NlcnQuZXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuZXF1YWwgPSBmdW5jdGlvbiBlcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJz09JywgYXNzZXJ0LmVxdWFsKTtcbn07XG5cbi8vIDYuIFRoZSBub24tZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIGZvciB3aGV0aGVyIHR3byBvYmplY3RzIGFyZSBub3QgZXF1YWxcbi8vIHdpdGggIT0gYXNzZXJ0Lm5vdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2Vfb3B0KTtcblxuYXNzZXJ0Lm5vdEVxdWFsID0gZnVuY3Rpb24gbm90RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoYWN0dWFsID09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnIT0nLCBhc3NlcnQubm90RXF1YWwpO1xuICB9XG59O1xuXG4vLyA3LiBUaGUgZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGEgZGVlcCBlcXVhbGl0eSByZWxhdGlvbi5cbi8vIGFzc2VydC5kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuZGVlcEVxdWFsID0gZnVuY3Rpb24gZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIGZhbHNlKSkge1xuICAgIGZhaWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSwgJ2RlZXBFcXVhbCcsIGFzc2VydC5kZWVwRXF1YWwpO1xuICB9XG59O1xuXG5hc3NlcnQuZGVlcFN0cmljdEVxdWFsID0gZnVuY3Rpb24gZGVlcFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKCFfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnZGVlcFN0cmljdEVxdWFsJywgYXNzZXJ0LmRlZXBTdHJpY3RFcXVhbCk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9kZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgc3RyaWN0LCBtZW1vcykge1xuICAvLyA3LjEuIEFsbCBpZGVudGljYWwgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBhcyBkZXRlcm1pbmVkIGJ5ID09PS5cbiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNlIGlmIChpc0J1ZmZlcihhY3R1YWwpICYmIGlzQnVmZmVyKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBjb21wYXJlKGFjdHVhbCwgZXhwZWN0ZWQpID09PSAwO1xuXG4gIC8vIDcuMi4gSWYgdGhlIGV4cGVjdGVkIHZhbHVlIGlzIGEgRGF0ZSBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgRGF0ZSBvYmplY3QgdGhhdCByZWZlcnMgdG8gdGhlIHNhbWUgdGltZS5cbiAgfSBlbHNlIGlmICh1dGlsLmlzRGF0ZShhY3R1YWwpICYmIHV0aWwuaXNEYXRlKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBhY3R1YWwuZ2V0VGltZSgpID09PSBleHBlY3RlZC5nZXRUaW1lKCk7XG5cbiAgLy8gNy4zIElmIHRoZSBleHBlY3RlZCB2YWx1ZSBpcyBhIFJlZ0V4cCBvYmplY3QsIHRoZSBhY3R1YWwgdmFsdWUgaXNcbiAgLy8gZXF1aXZhbGVudCBpZiBpdCBpcyBhbHNvIGEgUmVnRXhwIG9iamVjdCB3aXRoIHRoZSBzYW1lIHNvdXJjZSBhbmRcbiAgLy8gcHJvcGVydGllcyAoYGdsb2JhbGAsIGBtdWx0aWxpbmVgLCBgbGFzdEluZGV4YCwgYGlnbm9yZUNhc2VgKS5cbiAgfSBlbHNlIGlmICh1dGlsLmlzUmVnRXhwKGFjdHVhbCkgJiYgdXRpbC5pc1JlZ0V4cChleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gYWN0dWFsLnNvdXJjZSA9PT0gZXhwZWN0ZWQuc291cmNlICYmXG4gICAgICAgICAgIGFjdHVhbC5nbG9iYWwgPT09IGV4cGVjdGVkLmdsb2JhbCAmJlxuICAgICAgICAgICBhY3R1YWwubXVsdGlsaW5lID09PSBleHBlY3RlZC5tdWx0aWxpbmUgJiZcbiAgICAgICAgICAgYWN0dWFsLmxhc3RJbmRleCA9PT0gZXhwZWN0ZWQubGFzdEluZGV4ICYmXG4gICAgICAgICAgIGFjdHVhbC5pZ25vcmVDYXNlID09PSBleHBlY3RlZC5pZ25vcmVDYXNlO1xuXG4gIC8vIDcuNC4gT3RoZXIgcGFpcnMgdGhhdCBkbyBub3QgYm90aCBwYXNzIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0JyxcbiAgLy8gZXF1aXZhbGVuY2UgaXMgZGV0ZXJtaW5lZCBieSA9PS5cbiAgfSBlbHNlIGlmICgoYWN0dWFsID09PSBudWxsIHx8IHR5cGVvZiBhY3R1YWwgIT09ICdvYmplY3QnKSAmJlxuICAgICAgICAgICAgIChleHBlY3RlZCA9PT0gbnVsbCB8fCB0eXBlb2YgZXhwZWN0ZWQgIT09ICdvYmplY3QnKSkge1xuICAgIHJldHVybiBzdHJpY3QgPyBhY3R1YWwgPT09IGV4cGVjdGVkIDogYWN0dWFsID09IGV4cGVjdGVkO1xuXG4gIC8vIElmIGJvdGggdmFsdWVzIGFyZSBpbnN0YW5jZXMgb2YgdHlwZWQgYXJyYXlzLCB3cmFwIHRoZWlyIHVuZGVybHlpbmdcbiAgLy8gQXJyYXlCdWZmZXJzIGluIGEgQnVmZmVyIGVhY2ggdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2VcbiAgLy8gVGhpcyBvcHRpbWl6YXRpb24gcmVxdWlyZXMgdGhlIGFycmF5cyB0byBoYXZlIHRoZSBzYW1lIHR5cGUgYXMgY2hlY2tlZCBieVxuICAvLyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nIChha2EgcFRvU3RyaW5nKS4gTmV2ZXIgcGVyZm9ybSBiaW5hcnlcbiAgLy8gY29tcGFyaXNvbnMgZm9yIEZsb2F0KkFycmF5cywgdGhvdWdoLCBzaW5jZSBlLmcuICswID09PSAtMCBidXQgdGhlaXJcbiAgLy8gYml0IHBhdHRlcm5zIGFyZSBub3QgaWRlbnRpY2FsLlxuICB9IGVsc2UgaWYgKGlzVmlldyhhY3R1YWwpICYmIGlzVmlldyhleHBlY3RlZCkgJiZcbiAgICAgICAgICAgICBwVG9TdHJpbmcoYWN0dWFsKSA9PT0gcFRvU3RyaW5nKGV4cGVjdGVkKSAmJlxuICAgICAgICAgICAgICEoYWN0dWFsIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5IHx8XG4gICAgICAgICAgICAgICBhY3R1YWwgaW5zdGFuY2VvZiBGbG9hdDY0QXJyYXkpKSB7XG4gICAgcmV0dXJuIGNvbXBhcmUobmV3IFVpbnQ4QXJyYXkoYWN0dWFsLmJ1ZmZlciksXG4gICAgICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoZXhwZWN0ZWQuYnVmZmVyKSkgPT09IDA7XG5cbiAgLy8gNy41IEZvciBhbGwgb3RoZXIgT2JqZWN0IHBhaXJzLCBpbmNsdWRpbmcgQXJyYXkgb2JqZWN0cywgZXF1aXZhbGVuY2UgaXNcbiAgLy8gZGV0ZXJtaW5lZCBieSBoYXZpbmcgdGhlIHNhbWUgbnVtYmVyIG9mIG93bmVkIHByb3BlcnRpZXMgKGFzIHZlcmlmaWVkXG4gIC8vIHdpdGggT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKSwgdGhlIHNhbWUgc2V0IG9mIGtleXNcbiAgLy8gKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksIGVxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeVxuICAvLyBjb3JyZXNwb25kaW5nIGtleSwgYW5kIGFuIGlkZW50aWNhbCAncHJvdG90eXBlJyBwcm9wZXJ0eS4gTm90ZTogdGhpc1xuICAvLyBhY2NvdW50cyBmb3IgYm90aCBuYW1lZCBhbmQgaW5kZXhlZCBwcm9wZXJ0aWVzIG9uIEFycmF5cy5cbiAgfSBlbHNlIGlmIChpc0J1ZmZlcihhY3R1YWwpICE9PSBpc0J1ZmZlcihleHBlY3RlZCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgbWVtb3MgPSBtZW1vcyB8fCB7YWN0dWFsOiBbXSwgZXhwZWN0ZWQ6IFtdfTtcblxuICAgIHZhciBhY3R1YWxJbmRleCA9IG1lbW9zLmFjdHVhbC5pbmRleE9mKGFjdHVhbCk7XG4gICAgaWYgKGFjdHVhbEluZGV4ICE9PSAtMSkge1xuICAgICAgaWYgKGFjdHVhbEluZGV4ID09PSBtZW1vcy5leHBlY3RlZC5pbmRleE9mKGV4cGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vcy5hY3R1YWwucHVzaChhY3R1YWwpO1xuICAgIG1lbW9zLmV4cGVjdGVkLnB1c2goZXhwZWN0ZWQpO1xuXG4gICAgcmV0dXJuIG9iakVxdWl2KGFjdHVhbCwgZXhwZWN0ZWQsIHN0cmljdCwgbWVtb3MpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQXJndW1lbnRzKG9iamVjdCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCkgPT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG59XG5cbmZ1bmN0aW9uIG9iakVxdWl2KGEsIGIsIHN0cmljdCwgYWN0dWFsVmlzaXRlZE9iamVjdHMpIHtcbiAgaWYgKGEgPT09IG51bGwgfHwgYSA9PT0gdW5kZWZpbmVkIHx8IGIgPT09IG51bGwgfHwgYiA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcbiAgLy8gaWYgb25lIGlzIGEgcHJpbWl0aXZlLCB0aGUgb3RoZXIgbXVzdCBiZSBzYW1lXG4gIGlmICh1dGlsLmlzUHJpbWl0aXZlKGEpIHx8IHV0aWwuaXNQcmltaXRpdmUoYikpXG4gICAgcmV0dXJuIGEgPT09IGI7XG4gIGlmIChzdHJpY3QgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGEpICE9PSBPYmplY3QuZ2V0UHJvdG90eXBlT2YoYikpXG4gICAgcmV0dXJuIGZhbHNlO1xuICB2YXIgYUlzQXJncyA9IGlzQXJndW1lbnRzKGEpO1xuICB2YXIgYklzQXJncyA9IGlzQXJndW1lbnRzKGIpO1xuICBpZiAoKGFJc0FyZ3MgJiYgIWJJc0FyZ3MpIHx8ICghYUlzQXJncyAmJiBiSXNBcmdzKSlcbiAgICByZXR1cm4gZmFsc2U7XG4gIGlmIChhSXNBcmdzKSB7XG4gICAgYSA9IHBTbGljZS5jYWxsKGEpO1xuICAgIGIgPSBwU2xpY2UuY2FsbChiKTtcbiAgICByZXR1cm4gX2RlZXBFcXVhbChhLCBiLCBzdHJpY3QpO1xuICB9XG4gIHZhciBrYSA9IG9iamVjdEtleXMoYSk7XG4gIHZhciBrYiA9IG9iamVjdEtleXMoYik7XG4gIHZhciBrZXksIGk7XG4gIC8vIGhhdmluZyB0aGUgc2FtZSBudW1iZXIgb2Ygb3duZWQgcHJvcGVydGllcyAoa2V5cyBpbmNvcnBvcmF0ZXNcbiAgLy8gaGFzT3duUHJvcGVydHkpXG4gIGlmIChrYS5sZW5ndGggIT09IGtiLmxlbmd0aClcbiAgICByZXR1cm4gZmFsc2U7XG4gIC8vdGhlIHNhbWUgc2V0IG9mIGtleXMgKGFsdGhvdWdoIG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBvcmRlciksXG4gIGthLnNvcnQoKTtcbiAga2Iuc29ydCgpO1xuICAvL35+fmNoZWFwIGtleSB0ZXN0XG4gIGZvciAoaSA9IGthLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgaWYgKGthW2ldICE9PSBrYltpXSlcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvL2VxdWl2YWxlbnQgdmFsdWVzIGZvciBldmVyeSBjb3JyZXNwb25kaW5nIGtleSwgYW5kXG4gIC8vfn5+cG9zc2libHkgZXhwZW5zaXZlIGRlZXAgdGVzdFxuICBmb3IgKGkgPSBrYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGtleSA9IGthW2ldO1xuICAgIGlmICghX2RlZXBFcXVhbChhW2tleV0sIGJba2V5XSwgc3RyaWN0LCBhY3R1YWxWaXNpdGVkT2JqZWN0cykpXG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8vIDguIFRoZSBub24tZXF1aXZhbGVuY2UgYXNzZXJ0aW9uIHRlc3RzIGZvciBhbnkgZGVlcCBpbmVxdWFsaXR5LlxuLy8gYXNzZXJ0Lm5vdERlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3REZWVwRXF1YWwgPSBmdW5jdGlvbiBub3REZWVwRXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZSkge1xuICBpZiAoX2RlZXBFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBmYWxzZSkpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICdub3REZWVwRXF1YWwnLCBhc3NlcnQubm90RGVlcEVxdWFsKTtcbiAgfVxufTtcblxuYXNzZXJ0Lm5vdERlZXBTdHJpY3RFcXVhbCA9IG5vdERlZXBTdHJpY3RFcXVhbDtcbmZ1bmN0aW9uIG5vdERlZXBTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChfZGVlcEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIHRydWUpKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnbm90RGVlcFN0cmljdEVxdWFsJywgbm90RGVlcFN0cmljdEVxdWFsKTtcbiAgfVxufVxuXG5cbi8vIDkuIFRoZSBzdHJpY3QgZXF1YWxpdHkgYXNzZXJ0aW9uIHRlc3RzIHN0cmljdCBlcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSA9PT0uXG4vLyBhc3NlcnQuc3RyaWN0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQuc3RyaWN0RXF1YWwgPSBmdW5jdGlvbiBzdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlKSB7XG4gIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKSB7XG4gICAgZmFpbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlLCAnPT09JywgYXNzZXJ0LnN0cmljdEVxdWFsKTtcbiAgfVxufTtcblxuLy8gMTAuIFRoZSBzdHJpY3Qgbm9uLWVxdWFsaXR5IGFzc2VydGlvbiB0ZXN0cyBmb3Igc3RyaWN0IGluZXF1YWxpdHksIGFzXG4vLyBkZXRlcm1pbmVkIGJ5ICE9PS4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCBtZXNzYWdlX29wdCk7XG5cbmFzc2VydC5ub3RTdHJpY3RFcXVhbCA9IGZ1bmN0aW9uIG5vdFN0cmljdEVxdWFsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgaWYgKGFjdHVhbCA9PT0gZXhwZWN0ZWQpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsIG1lc3NhZ2UsICchPT0nLCBhc3NlcnQubm90U3RyaWN0RXF1YWwpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSB7XG4gIGlmICghYWN0dWFsIHx8ICFleHBlY3RlZCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZXhwZWN0ZWQpID09ICdbb2JqZWN0IFJlZ0V4cF0nKSB7XG4gICAgcmV0dXJuIGV4cGVjdGVkLnRlc3QoYWN0dWFsKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGFjdHVhbCBpbnN0YW5jZW9mIGV4cGVjdGVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJZ25vcmUuICBUaGUgaW5zdGFuY2VvZiBjaGVjayBkb2Vzbid0IHdvcmsgZm9yIGFycm93IGZ1bmN0aW9ucy5cbiAgfVxuXG4gIGlmIChFcnJvci5pc1Byb3RvdHlwZU9mKGV4cGVjdGVkKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBleHBlY3RlZC5jYWxsKHt9LCBhY3R1YWwpID09PSB0cnVlO1xufVxuXG5mdW5jdGlvbiBfdHJ5QmxvY2soYmxvY2spIHtcbiAgdmFyIGVycm9yO1xuICB0cnkge1xuICAgIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBlcnJvciA9IGU7XG4gIH1cbiAgcmV0dXJuIGVycm9yO1xufVxuXG5mdW5jdGlvbiBfdGhyb3dzKHNob3VsZFRocm93LCBibG9jaywgZXhwZWN0ZWQsIG1lc3NhZ2UpIHtcbiAgdmFyIGFjdHVhbDtcblxuICBpZiAodHlwZW9mIGJsb2NrICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJibG9ja1wiIGFyZ3VtZW50IG11c3QgYmUgYSBmdW5jdGlvbicpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBleHBlY3RlZCA9PT0gJ3N0cmluZycpIHtcbiAgICBtZXNzYWdlID0gZXhwZWN0ZWQ7XG4gICAgZXhwZWN0ZWQgPSBudWxsO1xuICB9XG5cbiAgYWN0dWFsID0gX3RyeUJsb2NrKGJsb2NrKTtcblxuICBtZXNzYWdlID0gKGV4cGVjdGVkICYmIGV4cGVjdGVkLm5hbWUgPyAnICgnICsgZXhwZWN0ZWQubmFtZSArICcpLicgOiAnLicpICtcbiAgICAgICAgICAgIChtZXNzYWdlID8gJyAnICsgbWVzc2FnZSA6ICcuJyk7XG5cbiAgaWYgKHNob3VsZFRocm93ICYmICFhY3R1YWwpIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdNaXNzaW5nIGV4cGVjdGVkIGV4Y2VwdGlvbicgKyBtZXNzYWdlKTtcbiAgfVxuXG4gIHZhciB1c2VyUHJvdmlkZWRNZXNzYWdlID0gdHlwZW9mIG1lc3NhZ2UgPT09ICdzdHJpbmcnO1xuICB2YXIgaXNVbndhbnRlZEV4Y2VwdGlvbiA9ICFzaG91bGRUaHJvdyAmJiB1dGlsLmlzRXJyb3IoYWN0dWFsKTtcbiAgdmFyIGlzVW5leHBlY3RlZEV4Y2VwdGlvbiA9ICFzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgIWV4cGVjdGVkO1xuXG4gIGlmICgoaXNVbndhbnRlZEV4Y2VwdGlvbiAmJlxuICAgICAgdXNlclByb3ZpZGVkTWVzc2FnZSAmJlxuICAgICAgZXhwZWN0ZWRFeGNlcHRpb24oYWN0dWFsLCBleHBlY3RlZCkpIHx8XG4gICAgICBpc1VuZXhwZWN0ZWRFeGNlcHRpb24pIHtcbiAgICBmYWlsKGFjdHVhbCwgZXhwZWN0ZWQsICdHb3QgdW53YW50ZWQgZXhjZXB0aW9uJyArIG1lc3NhZ2UpO1xuICB9XG5cbiAgaWYgKChzaG91bGRUaHJvdyAmJiBhY3R1YWwgJiYgZXhwZWN0ZWQgJiZcbiAgICAgICFleHBlY3RlZEV4Y2VwdGlvbihhY3R1YWwsIGV4cGVjdGVkKSkgfHwgKCFzaG91bGRUaHJvdyAmJiBhY3R1YWwpKSB7XG4gICAgdGhyb3cgYWN0dWFsO1xuICB9XG59XG5cbi8vIDExLiBFeHBlY3RlZCB0byB0aHJvdyBhbiBlcnJvcjpcbi8vIGFzc2VydC50aHJvd3MoYmxvY2ssIEVycm9yX29wdCwgbWVzc2FnZV9vcHQpO1xuXG5hc3NlcnQudGhyb3dzID0gZnVuY3Rpb24oYmxvY2ssIC8qb3B0aW9uYWwqL2Vycm9yLCAvKm9wdGlvbmFsKi9tZXNzYWdlKSB7XG4gIF90aHJvd3ModHJ1ZSwgYmxvY2ssIGVycm9yLCBtZXNzYWdlKTtcbn07XG5cbi8vIEVYVEVOU0lPTiEgVGhpcyBpcyBhbm5veWluZyB0byB3cml0ZSBvdXRzaWRlIHRoaXMgbW9kdWxlLlxuYXNzZXJ0LmRvZXNOb3RUaHJvdyA9IGZ1bmN0aW9uKGJsb2NrLCAvKm9wdGlvbmFsKi9lcnJvciwgLypvcHRpb25hbCovbWVzc2FnZSkge1xuICBfdGhyb3dzKGZhbHNlLCBibG9jaywgZXJyb3IsIG1lc3NhZ2UpO1xufTtcblxuYXNzZXJ0LmlmRXJyb3IgPSBmdW5jdGlvbihlcnIpIHsgaWYgKGVycikgdGhyb3cgZXJyOyB9O1xuXG52YXIgb2JqZWN0S2V5cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIChvYmopIHtcbiAgdmFyIGtleXMgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgIGlmIChoYXNPd24uY2FsbChvYmosIGtleSkpIGtleXMucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiBrZXlzO1xufTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBwdW55Y29kZSA9IHJlcXVpcmUoJ3B1bnljb2RlJyk7XG52YXIgdXRpbCA9IHJlcXVpcmUoJy4vdXRpbCcpO1xuXG5leHBvcnRzLnBhcnNlID0gdXJsUGFyc2U7XG5leHBvcnRzLnJlc29sdmUgPSB1cmxSZXNvbHZlO1xuZXhwb3J0cy5yZXNvbHZlT2JqZWN0ID0gdXJsUmVzb2x2ZU9iamVjdDtcbmV4cG9ydHMuZm9ybWF0ID0gdXJsRm9ybWF0O1xuXG5leHBvcnRzLlVybCA9IFVybDtcblxuZnVuY3Rpb24gVXJsKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbDtcbiAgdGhpcy5zbGFzaGVzID0gbnVsbDtcbiAgdGhpcy5hdXRoID0gbnVsbDtcbiAgdGhpcy5ob3N0ID0gbnVsbDtcbiAgdGhpcy5wb3J0ID0gbnVsbDtcbiAgdGhpcy5ob3N0bmFtZSA9IG51bGw7XG4gIHRoaXMuaGFzaCA9IG51bGw7XG4gIHRoaXMuc2VhcmNoID0gbnVsbDtcbiAgdGhpcy5xdWVyeSA9IG51bGw7XG4gIHRoaXMucGF0aG5hbWUgPSBudWxsO1xuICB0aGlzLnBhdGggPSBudWxsO1xuICB0aGlzLmhyZWYgPSBudWxsO1xufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxudmFyIHByb3RvY29sUGF0dGVybiA9IC9eKFthLXowLTkuKy1dKzopL2ksXG4gICAgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvLFxuXG4gICAgLy8gU3BlY2lhbCBjYXNlIGZvciBhIHNpbXBsZSBwYXRoIFVSTFxuICAgIHNpbXBsZVBhdGhQYXR0ZXJuID0gL14oXFwvXFwvPyg/IVxcLylbXlxcP1xcc10qKShcXD9bXlxcc10qKT8kLyxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4gICAgLy8gV2UgYWN0dWFsbHkganVzdCBhdXRvLWVzY2FwZSB0aGVzZS5cbiAgICBkZWxpbXMgPSBbJzwnLCAnPicsICdcIicsICdgJywgJyAnLCAnXFxyJywgJ1xcbicsICdcXHQnXSxcblxuICAgIC8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIG5vdCBhbGxvd2VkIGZvciB2YXJpb3VzIHJlYXNvbnMuXG4gICAgdW53aXNlID0gWyd7JywgJ30nLCAnfCcsICdcXFxcJywgJ14nLCAnYCddLmNvbmNhdChkZWxpbXMpLFxuXG4gICAgLy8gQWxsb3dlZCBieSBSRkNzLCBidXQgY2F1c2Ugb2YgWFNTIGF0dGFja3MuICBBbHdheXMgZXNjYXBlIHRoZXNlLlxuICAgIGF1dG9Fc2NhcGUgPSBbJ1xcJyddLmNvbmNhdCh1bndpc2UpLFxuICAgIC8vIENoYXJhY3RlcnMgdGhhdCBhcmUgbmV2ZXIgZXZlciBhbGxvd2VkIGluIGEgaG9zdG5hbWUuXG4gICAgLy8gTm90ZSB0aGF0IGFueSBpbnZhbGlkIGNoYXJzIGFyZSBhbHNvIGhhbmRsZWQsIGJ1dCB0aGVzZVxuICAgIC8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuICAgIC8vIHRoZW0uXG4gICAgbm9uSG9zdENoYXJzID0gWyclJywgJy8nLCAnPycsICc7JywgJyMnXS5jb25jYXQoYXV0b0VzY2FwZSksXG4gICAgaG9zdEVuZGluZ0NoYXJzID0gWycvJywgJz8nLCAnIyddLFxuICAgIGhvc3RuYW1lTWF4TGVuID0gMjU1LFxuICAgIGhvc3RuYW1lUGFydFBhdHRlcm4gPSAvXlsrYS16MC05QS1aXy1dezAsNjN9JC8sXG4gICAgaG9zdG5hbWVQYXJ0U3RhcnQgPSAvXihbK2EtejAtOUEtWl8tXXswLDYzfSkoLiopJC8sXG4gICAgLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4gICAgdW5zYWZlUHJvdG9jb2wgPSB7XG4gICAgICAnamF2YXNjcmlwdCc6IHRydWUsXG4gICAgICAnamF2YXNjcmlwdDonOiB0cnVlXG4gICAgfSxcbiAgICAvLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG4gICAgaG9zdGxlc3NQcm90b2NvbCA9IHtcbiAgICAgICdqYXZhc2NyaXB0JzogdHJ1ZSxcbiAgICAgICdqYXZhc2NyaXB0Oic6IHRydWVcbiAgICB9LFxuICAgIC8vIHByb3RvY29scyB0aGF0IGFsd2F5cyBjb250YWluIGEgLy8gYml0LlxuICAgIHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgICAgICdodHRwJzogdHJ1ZSxcbiAgICAgICdodHRwcyc6IHRydWUsXG4gICAgICAnZnRwJzogdHJ1ZSxcbiAgICAgICdnb3BoZXInOiB0cnVlLFxuICAgICAgJ2ZpbGUnOiB0cnVlLFxuICAgICAgJ2h0dHA6JzogdHJ1ZSxcbiAgICAgICdodHRwczonOiB0cnVlLFxuICAgICAgJ2Z0cDonOiB0cnVlLFxuICAgICAgJ2dvcGhlcjonOiB0cnVlLFxuICAgICAgJ2ZpbGU6JzogdHJ1ZVxuICAgIH0sXG4gICAgcXVlcnlzdHJpbmcgPSByZXF1aXJlKCdxdWVyeXN0cmluZycpO1xuXG5mdW5jdGlvbiB1cmxQYXJzZSh1cmwsIHBhcnNlUXVlcnlTdHJpbmcsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGlmICh1cmwgJiYgdXRpbC5pc09iamVjdCh1cmwpICYmIHVybCBpbnN0YW5jZW9mIFVybCkgcmV0dXJuIHVybDtcblxuICB2YXIgdSA9IG5ldyBVcmw7XG4gIHUucGFyc2UodXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCk7XG4gIHJldHVybiB1O1xufVxuXG5VcmwucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24odXJsLCBwYXJzZVF1ZXJ5U3RyaW5nLCBzbGFzaGVzRGVub3RlSG9zdCkge1xuICBpZiAoIXV0aWwuaXNTdHJpbmcodXJsKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJQYXJhbWV0ZXIgJ3VybCcgbXVzdCBiZSBhIHN0cmluZywgbm90IFwiICsgdHlwZW9mIHVybCk7XG4gIH1cblxuICAvLyBDb3B5IGNocm9tZSwgSUUsIG9wZXJhIGJhY2tzbGFzaC1oYW5kbGluZyBiZWhhdmlvci5cbiAgLy8gQmFjayBzbGFzaGVzIGJlZm9yZSB0aGUgcXVlcnkgc3RyaW5nIGdldCBjb252ZXJ0ZWQgdG8gZm9yd2FyZCBzbGFzaGVzXG4gIC8vIFNlZTogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTI1OTE2XG4gIHZhciBxdWVyeUluZGV4ID0gdXJsLmluZGV4T2YoJz8nKSxcbiAgICAgIHNwbGl0dGVyID1cbiAgICAgICAgICAocXVlcnlJbmRleCAhPT0gLTEgJiYgcXVlcnlJbmRleCA8IHVybC5pbmRleE9mKCcjJykpID8gJz8nIDogJyMnLFxuICAgICAgdVNwbGl0ID0gdXJsLnNwbGl0KHNwbGl0dGVyKSxcbiAgICAgIHNsYXNoUmVnZXggPSAvXFxcXC9nO1xuICB1U3BsaXRbMF0gPSB1U3BsaXRbMF0ucmVwbGFjZShzbGFzaFJlZ2V4LCAnLycpO1xuICB1cmwgPSB1U3BsaXQuam9pbihzcGxpdHRlcik7XG5cbiAgdmFyIHJlc3QgPSB1cmw7XG5cbiAgLy8gdHJpbSBiZWZvcmUgcHJvY2VlZGluZy5cbiAgLy8gVGhpcyBpcyB0byBzdXBwb3J0IHBhcnNlIHN0dWZmIGxpa2UgXCIgIGh0dHA6Ly9mb28uY29tICBcXG5cIlxuICByZXN0ID0gcmVzdC50cmltKCk7XG5cbiAgaWYgKCFzbGFzaGVzRGVub3RlSG9zdCAmJiB1cmwuc3BsaXQoJyMnKS5sZW5ndGggPT09IDEpIHtcbiAgICAvLyBUcnkgZmFzdCBwYXRoIHJlZ2V4cFxuICAgIHZhciBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KTtcbiAgICBpZiAoc2ltcGxlUGF0aCkge1xuICAgICAgdGhpcy5wYXRoID0gcmVzdDtcbiAgICAgIHRoaXMuaHJlZiA9IHJlc3Q7XG4gICAgICB0aGlzLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXTtcbiAgICAgIGlmIChzaW1wbGVQYXRoWzJdKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoID0gc2ltcGxlUGF0aFsyXTtcbiAgICAgICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gcXVlcnlzdHJpbmcucGFyc2UodGhpcy5zZWFyY2guc3Vic3RyKDEpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnF1ZXJ5ID0gdGhpcy5zZWFyY2guc3Vic3RyKDEpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSAnJztcbiAgICAgICAgdGhpcy5xdWVyeSA9IHt9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgdmFyIHByb3RvID0gcHJvdG9jb2xQYXR0ZXJuLmV4ZWMocmVzdCk7XG4gIGlmIChwcm90bykge1xuICAgIHByb3RvID0gcHJvdG9bMF07XG4gICAgdmFyIGxvd2VyUHJvdG8gPSBwcm90by50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMucHJvdG9jb2wgPSBsb3dlclByb3RvO1xuICAgIHJlc3QgPSByZXN0LnN1YnN0cihwcm90by5sZW5ndGgpO1xuICB9XG5cbiAgLy8gZmlndXJlIG91dCBpZiBpdCdzIGdvdCBhIGhvc3RcbiAgLy8gdXNlckBzZXJ2ZXIgaXMgKmFsd2F5cyogaW50ZXJwcmV0ZWQgYXMgYSBob3N0bmFtZSwgYW5kIHVybFxuICAvLyByZXNvbHV0aW9uIHdpbGwgdHJlYXQgLy9mb28vYmFyIGFzIGhvc3Q9Zm9vLHBhdGg9YmFyIGJlY2F1c2UgdGhhdCdzXG4gIC8vIGhvdyB0aGUgYnJvd3NlciByZXNvbHZlcyByZWxhdGl2ZSBVUkxzLlxuICBpZiAoc2xhc2hlc0Rlbm90ZUhvc3QgfHwgcHJvdG8gfHwgcmVzdC5tYXRjaCgvXlxcL1xcL1teQFxcL10rQFteQFxcL10rLykpIHtcbiAgICB2YXIgc2xhc2hlcyA9IHJlc3Quc3Vic3RyKDAsIDIpID09PSAnLy8nO1xuICAgIGlmIChzbGFzaGVzICYmICEocHJvdG8gJiYgaG9zdGxlc3NQcm90b2NvbFtwcm90b10pKSB7XG4gICAgICByZXN0ID0gcmVzdC5zdWJzdHIoMik7XG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaG9zdGxlc3NQcm90b2NvbFtwcm90b10gJiZcbiAgICAgIChzbGFzaGVzIHx8IChwcm90byAmJiAhc2xhc2hlZFByb3RvY29sW3Byb3RvXSkpKSB7XG5cbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICB2YXIgaG9zdEVuZCA9IC0xO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaG9zdEVuZGluZ0NoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaGVjID0gcmVzdC5pbmRleE9mKGhvc3RFbmRpbmdDaGFyc1tpXSk7XG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpXG4gICAgICAgIGhvc3RFbmQgPSBoZWM7XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCwgZWl0aGVyIHdlIGhhdmUgYW4gZXhwbGljaXQgcG9pbnQgd2hlcmUgdGhlXG4gICAgLy8gYXV0aCBwb3J0aW9uIGNhbm5vdCBnbyBwYXN0LCBvciB0aGUgbGFzdCBAIGNoYXIgaXMgdGhlIGRlY2lkZXIuXG4gICAgdmFyIGF1dGgsIGF0U2lnbjtcbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIGF0U2lnbiBjYW4gYmUgYW55d2hlcmUuXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGF0U2lnbiBtdXN0IGJlIGluIGF1dGggcG9ydGlvbi5cbiAgICAgIC8vIGh0dHA6Ly9hQGIvY0BkID0+IGhvc3Q6YiBhdXRoOmEgcGF0aDovY0BkXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJywgaG9zdEVuZCk7XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGhhdmUgYSBwb3J0aW9uIHdoaWNoIGlzIGRlZmluaXRlbHkgdGhlIGF1dGguXG4gICAgLy8gUHVsbCB0aGF0IG9mZi5cbiAgICBpZiAoYXRTaWduICE9PSAtMSkge1xuICAgICAgYXV0aCA9IHJlc3Quc2xpY2UoMCwgYXRTaWduKTtcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpO1xuICAgICAgdGhpcy5hdXRoID0gZGVjb2RlVVJJQ29tcG9uZW50KGF1dGgpO1xuICAgIH1cblxuICAgIC8vIHRoZSBob3N0IGlzIHRoZSByZW1haW5pbmcgdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IG5vbi1ob3N0IGNoYXJcbiAgICBob3N0RW5kID0gLTE7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub25Ib3N0Q2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKTtcbiAgICAgIGlmIChoZWMgIT09IC0xICYmIChob3N0RW5kID09PSAtMSB8fCBoZWMgPCBob3N0RW5kKSlcbiAgICAgICAgaG9zdEVuZCA9IGhlYztcbiAgICB9XG4gICAgLy8gaWYgd2Ugc3RpbGwgaGF2ZSBub3QgaGl0IGl0LCB0aGVuIHRoZSBlbnRpcmUgdGhpbmcgaXMgYSBob3N0LlxuICAgIGlmIChob3N0RW5kID09PSAtMSlcbiAgICAgIGhvc3RFbmQgPSByZXN0Lmxlbmd0aDtcblxuICAgIHRoaXMuaG9zdCA9IHJlc3Quc2xpY2UoMCwgaG9zdEVuZCk7XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoaG9zdEVuZCk7XG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHRoaXMucGFyc2VIb3N0KCk7XG5cbiAgICAvLyB3ZSd2ZSBpbmRpY2F0ZWQgdGhhdCB0aGVyZSBpcyBhIGhvc3RuYW1lLFxuICAgIC8vIHNvIGV2ZW4gaWYgaXQncyBlbXB0eSwgaXQgaGFzIHRvIGJlIHByZXNlbnQuXG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgJyc7XG5cbiAgICAvLyBpZiBob3N0bmFtZSBiZWdpbnMgd2l0aCBbIGFuZCBlbmRzIHdpdGggXVxuICAgIC8vIGFzc3VtZSB0aGF0IGl0J3MgYW4gSVB2NiBhZGRyZXNzLlxuICAgIHZhciBpcHY2SG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lWzBdID09PSAnWycgJiZcbiAgICAgICAgdGhpcy5ob3N0bmFtZVt0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDFdID09PSAnXSc7XG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgdmFyIGhvc3RwYXJ0cyA9IHRoaXMuaG9zdG5hbWUuc3BsaXQoL1xcLi8pO1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBob3N0cGFydHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gaG9zdHBhcnRzW2ldO1xuICAgICAgICBpZiAoIXBhcnQpIGNvbnRpbnVlO1xuICAgICAgICBpZiAoIXBhcnQubWF0Y2goaG9zdG5hbWVQYXJ0UGF0dGVybikpIHtcbiAgICAgICAgICB2YXIgbmV3cGFydCA9ICcnO1xuICAgICAgICAgIGZvciAodmFyIGogPSAwLCBrID0gcGFydC5sZW5ndGg7IGogPCBrOyBqKyspIHtcbiAgICAgICAgICAgIGlmIChwYXJ0LmNoYXJDb2RlQXQoaikgPiAxMjcpIHtcbiAgICAgICAgICAgICAgLy8gd2UgcmVwbGFjZSBub24tQVNDSUkgY2hhciB3aXRoIGEgdGVtcG9yYXJ5IHBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIC8vIHdlIG5lZWQgdGhpcyB0byBtYWtlIHN1cmUgc2l6ZSBvZiBob3N0bmFtZSBpcyBub3RcbiAgICAgICAgICAgICAgLy8gYnJva2VuIGJ5IHJlcGxhY2luZyBub24tQVNDSUkgYnkgbm90aGluZ1xuICAgICAgICAgICAgICBuZXdwYXJ0ICs9ICd4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gcGFydFtqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gd2UgdGVzdCBhZ2FpbiB3aXRoIEFTQ0lJIGNoYXIgb25seVxuICAgICAgICAgIGlmICghbmV3cGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgICAgdmFyIHZhbGlkUGFydHMgPSBob3N0cGFydHMuc2xpY2UoMCwgaSk7XG4gICAgICAgICAgICB2YXIgbm90SG9zdCA9IGhvc3RwYXJ0cy5zbGljZShpICsgMSk7XG4gICAgICAgICAgICB2YXIgYml0ID0gcGFydC5tYXRjaChob3N0bmFtZVBhcnRTdGFydCk7XG4gICAgICAgICAgICBpZiAoYml0KSB7XG4gICAgICAgICAgICAgIHZhbGlkUGFydHMucHVzaChiaXRbMV0pO1xuICAgICAgICAgICAgICBub3RIb3N0LnVuc2hpZnQoYml0WzJdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub3RIb3N0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXN0ID0gJy8nICsgbm90SG9zdC5qb2luKCcuJykgKyByZXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ob3N0bmFtZSA9IHZhbGlkUGFydHMuam9pbignLicpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdG5hbWUubGVuZ3RoID4gaG9zdG5hbWVNYXhMZW4pIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaG9zdG5hbWVzIGFyZSBhbHdheXMgbG93ZXIgY2FzZS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFpcHY2SG9zdG5hbWUpIHtcbiAgICAgIC8vIElETkEgU3VwcG9ydDogUmV0dXJucyBhIHB1bnljb2RlZCByZXByZXNlbnRhdGlvbiBvZiBcImRvbWFpblwiLlxuICAgICAgLy8gSXQgb25seSBjb252ZXJ0cyBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgdGhhdFxuICAgICAgLy8gaGF2ZSBub24tQVNDSUkgY2hhcmFjdGVycywgaS5lLiBpdCBkb2Vzbid0IG1hdHRlciBpZlxuICAgICAgLy8geW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0IGFscmVhZHkgaXMgQVNDSUktb25seS5cbiAgICAgIHRoaXMuaG9zdG5hbWUgPSBwdW55Y29kZS50b0FTQ0lJKHRoaXMuaG9zdG5hbWUpO1xuICAgIH1cblxuICAgIHZhciBwID0gdGhpcy5wb3J0ID8gJzonICsgdGhpcy5wb3J0IDogJyc7XG4gICAgdmFyIGggPSB0aGlzLmhvc3RuYW1lIHx8ICcnO1xuICAgIHRoaXMuaG9zdCA9IGggKyBwO1xuICAgIHRoaXMuaHJlZiArPSB0aGlzLmhvc3Q7XG5cbiAgICAvLyBzdHJpcCBbIGFuZCBdIGZyb20gdGhlIGhvc3RuYW1lXG4gICAgLy8gdGhlIGhvc3QgZmllbGQgc3RpbGwgcmV0YWlucyB0aGVtLCB0aG91Z2hcbiAgICBpZiAoaXB2Nkhvc3RuYW1lKSB7XG4gICAgICB0aGlzLmhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZS5zdWJzdHIoMSwgdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIGlmIChyZXN0WzBdICE9PSAnLycpIHtcbiAgICAgICAgcmVzdCA9ICcvJyArIHJlc3Q7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gbm93IHJlc3QgaXMgc2V0IHRvIHRoZSBwb3N0LWhvc3Qgc3R1ZmYuXG4gIC8vIGNob3Agb2ZmIGFueSBkZWxpbSBjaGFycy5cbiAgaWYgKCF1bnNhZmVQcm90b2NvbFtsb3dlclByb3RvXSkge1xuXG4gICAgLy8gRmlyc3QsIG1ha2UgMTAwJSBzdXJlIHRoYXQgYW55IFwiYXV0b0VzY2FwZVwiIGNoYXJzIGdldFxuICAgIC8vIGVzY2FwZWQsIGV2ZW4gaWYgZW5jb2RlVVJJQ29tcG9uZW50IGRvZXNuJ3QgdGhpbmsgdGhleVxuICAgIC8vIG5lZWQgdG8gYmUuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdXRvRXNjYXBlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgdmFyIGFlID0gYXV0b0VzY2FwZVtpXTtcbiAgICAgIGlmIChyZXN0LmluZGV4T2YoYWUpID09PSAtMSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB2YXIgZXNjID0gZW5jb2RlVVJJQ29tcG9uZW50KGFlKTtcbiAgICAgIGlmIChlc2MgPT09IGFlKSB7XG4gICAgICAgIGVzYyA9IGVzY2FwZShhZSk7XG4gICAgICB9XG4gICAgICByZXN0ID0gcmVzdC5zcGxpdChhZSkuam9pbihlc2MpO1xuICAgIH1cbiAgfVxuXG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgdmFyIGhhc2ggPSByZXN0LmluZGV4T2YoJyMnKTtcbiAgaWYgKGhhc2ggIT09IC0xKSB7XG4gICAgLy8gZ290IGEgZnJhZ21lbnQgc3RyaW5nLlxuICAgIHRoaXMuaGFzaCA9IHJlc3Quc3Vic3RyKGhhc2gpO1xuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpO1xuICB9XG4gIHZhciBxbSA9IHJlc3QuaW5kZXhPZignPycpO1xuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSk7XG4gICAgdGhpcy5xdWVyeSA9IHJlc3Quc3Vic3RyKHFtICsgMSk7XG4gICAgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAgIHRoaXMucXVlcnkgPSBxdWVyeXN0cmluZy5wYXJzZSh0aGlzLnF1ZXJ5KTtcbiAgICB9XG4gICAgcmVzdCA9IHJlc3Quc2xpY2UoMCwgcW0pO1xuICB9IGVsc2UgaWYgKHBhcnNlUXVlcnlTdHJpbmcpIHtcbiAgICAvLyBubyBxdWVyeSBzdHJpbmcsIGJ1dCBwYXJzZVF1ZXJ5U3RyaW5nIHN0aWxsIHJlcXVlc3RlZFxuICAgIHRoaXMuc2VhcmNoID0gJyc7XG4gICAgdGhpcy5xdWVyeSA9IHt9O1xuICB9XG4gIGlmIChyZXN0KSB0aGlzLnBhdGhuYW1lID0gcmVzdDtcbiAgaWYgKHNsYXNoZWRQcm90b2NvbFtsb3dlclByb3RvXSAmJlxuICAgICAgdGhpcy5ob3N0bmFtZSAmJiAhdGhpcy5wYXRobmFtZSkge1xuICAgIHRoaXMucGF0aG5hbWUgPSAnLyc7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gIGlmICh0aGlzLnBhdGhuYW1lIHx8IHRoaXMuc2VhcmNoKSB7XG4gICAgdmFyIHAgPSB0aGlzLnBhdGhuYW1lIHx8ICcnO1xuICAgIHZhciBzID0gdGhpcy5zZWFyY2ggfHwgJyc7XG4gICAgdGhpcy5wYXRoID0gcCArIHM7XG4gIH1cblxuICAvLyBmaW5hbGx5LCByZWNvbnN0cnVjdCB0aGUgaHJlZiBiYXNlZCBvbiB3aGF0IGhhcyBiZWVuIHZhbGlkYXRlZC5cbiAgdGhpcy5ocmVmID0gdGhpcy5mb3JtYXQoKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBmb3JtYXQgYSBwYXJzZWQgb2JqZWN0IGludG8gYSB1cmwgc3RyaW5nXG5mdW5jdGlvbiB1cmxGb3JtYXQob2JqKSB7XG4gIC8vIGVuc3VyZSBpdCdzIGFuIG9iamVjdCwgYW5kIG5vdCBhIHN0cmluZyB1cmwuXG4gIC8vIElmIGl0J3MgYW4gb2JqLCB0aGlzIGlzIGEgbm8tb3AuXG4gIC8vIHRoaXMgd2F5LCB5b3UgY2FuIGNhbGwgdXJsX2Zvcm1hdCgpIG9uIHN0cmluZ3NcbiAgLy8gdG8gY2xlYW4gdXAgcG90ZW50aWFsbHkgd29ua3kgdXJscy5cbiAgaWYgKHV0aWwuaXNTdHJpbmcob2JqKSkgb2JqID0gdXJsUGFyc2Uob2JqKTtcbiAgaWYgKCEob2JqIGluc3RhbmNlb2YgVXJsKSkgcmV0dXJuIFVybC5wcm90b3R5cGUuZm9ybWF0LmNhbGwob2JqKTtcbiAgcmV0dXJuIG9iai5mb3JtYXQoKTtcbn1cblxuVXJsLnByb3RvdHlwZS5mb3JtYXQgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGF1dGggPSB0aGlzLmF1dGggfHwgJyc7XG4gIGlmIChhdXRoKSB7XG4gICAgYXV0aCA9IGVuY29kZVVSSUNvbXBvbmVudChhdXRoKTtcbiAgICBhdXRoID0gYXV0aC5yZXBsYWNlKC8lM0EvaSwgJzonKTtcbiAgICBhdXRoICs9ICdAJztcbiAgfVxuXG4gIHZhciBwcm90b2NvbCA9IHRoaXMucHJvdG9jb2wgfHwgJycsXG4gICAgICBwYXRobmFtZSA9IHRoaXMucGF0aG5hbWUgfHwgJycsXG4gICAgICBoYXNoID0gdGhpcy5oYXNoIHx8ICcnLFxuICAgICAgaG9zdCA9IGZhbHNlLFxuICAgICAgcXVlcnkgPSAnJztcblxuICBpZiAodGhpcy5ob3N0KSB7XG4gICAgaG9zdCA9IGF1dGggKyB0aGlzLmhvc3Q7XG4gIH0gZWxzZSBpZiAodGhpcy5ob3N0bmFtZSkge1xuICAgIGhvc3QgPSBhdXRoICsgKHRoaXMuaG9zdG5hbWUuaW5kZXhPZignOicpID09PSAtMSA/XG4gICAgICAgIHRoaXMuaG9zdG5hbWUgOlxuICAgICAgICAnWycgKyB0aGlzLmhvc3RuYW1lICsgJ10nKTtcbiAgICBpZiAodGhpcy5wb3J0KSB7XG4gICAgICBob3N0ICs9ICc6JyArIHRoaXMucG9ydDtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5xdWVyeSAmJlxuICAgICAgdXRpbC5pc09iamVjdCh0aGlzLnF1ZXJ5KSAmJlxuICAgICAgT2JqZWN0LmtleXModGhpcy5xdWVyeSkubGVuZ3RoKSB7XG4gICAgcXVlcnkgPSBxdWVyeXN0cmluZy5zdHJpbmdpZnkodGhpcy5xdWVyeSk7XG4gIH1cblxuICB2YXIgc2VhcmNoID0gdGhpcy5zZWFyY2ggfHwgKHF1ZXJ5ICYmICgnPycgKyBxdWVyeSkpIHx8ICcnO1xuXG4gIGlmIChwcm90b2NvbCAmJiBwcm90b2NvbC5zdWJzdHIoLTEpICE9PSAnOicpIHByb3RvY29sICs9ICc6JztcblxuICAvLyBvbmx5IHRoZSBzbGFzaGVkUHJvdG9jb2xzIGdldCB0aGUgLy8uICBOb3QgbWFpbHRvOiwgeG1wcDosIGV0Yy5cbiAgLy8gdW5sZXNzIHRoZXkgaGFkIHRoZW0gdG8gYmVnaW4gd2l0aC5cbiAgaWYgKHRoaXMuc2xhc2hlcyB8fFxuICAgICAgKCFwcm90b2NvbCB8fCBzbGFzaGVkUHJvdG9jb2xbcHJvdG9jb2xdKSAmJiBob3N0ICE9PSBmYWxzZSkge1xuICAgIGhvc3QgPSAnLy8nICsgKGhvc3QgfHwgJycpO1xuICAgIGlmIChwYXRobmFtZSAmJiBwYXRobmFtZS5jaGFyQXQoMCkgIT09ICcvJykgcGF0aG5hbWUgPSAnLycgKyBwYXRobmFtZTtcbiAgfSBlbHNlIGlmICghaG9zdCkge1xuICAgIGhvc3QgPSAnJztcbiAgfVxuXG4gIGlmIChoYXNoICYmIGhhc2guY2hhckF0KDApICE9PSAnIycpIGhhc2ggPSAnIycgKyBoYXNoO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaC5jaGFyQXQoMCkgIT09ICc/Jykgc2VhcmNoID0gJz8nICsgc2VhcmNoO1xuXG4gIHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgvWz8jXS9nLCBmdW5jdGlvbihtYXRjaCkge1xuICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQobWF0Y2gpO1xuICB9KTtcbiAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoJyMnLCAnJTIzJyk7XG5cbiAgcmV0dXJuIHByb3RvY29sICsgaG9zdCArIHBhdGhuYW1lICsgc2VhcmNoICsgaGFzaDtcbn07XG5cbmZ1bmN0aW9uIHVybFJlc29sdmUoc291cmNlLCByZWxhdGl2ZSkge1xuICByZXR1cm4gdXJsUGFyc2Uoc291cmNlLCBmYWxzZSwgdHJ1ZSkucmVzb2x2ZShyZWxhdGl2ZSk7XG59XG5cblVybC5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHJlbGF0aXZlKSB7XG4gIHJldHVybiB0aGlzLnJlc29sdmVPYmplY3QodXJsUGFyc2UocmVsYXRpdmUsIGZhbHNlLCB0cnVlKSkuZm9ybWF0KCk7XG59O1xuXG5mdW5jdGlvbiB1cmxSZXNvbHZlT2JqZWN0KHNvdXJjZSwgcmVsYXRpdmUpIHtcbiAgaWYgKCFzb3VyY2UpIHJldHVybiByZWxhdGl2ZTtcbiAgcmV0dXJuIHVybFBhcnNlKHNvdXJjZSwgZmFsc2UsIHRydWUpLnJlc29sdmVPYmplY3QocmVsYXRpdmUpO1xufVxuXG5VcmwucHJvdG90eXBlLnJlc29sdmVPYmplY3QgPSBmdW5jdGlvbihyZWxhdGl2ZSkge1xuICBpZiAodXRpbC5pc1N0cmluZyhyZWxhdGl2ZSkpIHtcbiAgICB2YXIgcmVsID0gbmV3IFVybCgpO1xuICAgIHJlbC5wYXJzZShyZWxhdGl2ZSwgZmFsc2UsIHRydWUpO1xuICAgIHJlbGF0aXZlID0gcmVsO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IG5ldyBVcmwoKTtcbiAgdmFyIHRrZXlzID0gT2JqZWN0LmtleXModGhpcyk7XG4gIGZvciAodmFyIHRrID0gMDsgdGsgPCB0a2V5cy5sZW5ndGg7IHRrKyspIHtcbiAgICB2YXIgdGtleSA9IHRrZXlzW3RrXTtcbiAgICByZXN1bHRbdGtleV0gPSB0aGlzW3RrZXldO1xuICB9XG5cbiAgLy8gaGFzaCBpcyBhbHdheXMgb3ZlcnJpZGRlbiwgbm8gbWF0dGVyIHdoYXQuXG4gIC8vIGV2ZW4gaHJlZj1cIlwiIHdpbGwgcmVtb3ZlIGl0LlxuICByZXN1bHQuaGFzaCA9IHJlbGF0aXZlLmhhc2g7XG5cbiAgLy8gaWYgdGhlIHJlbGF0aXZlIHVybCBpcyBlbXB0eSwgdGhlbiB0aGVyZSdzIG5vdGhpbmcgbGVmdCB0byBkbyBoZXJlLlxuICBpZiAocmVsYXRpdmUuaHJlZiA9PT0gJycpIHtcbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLy8gaHJlZnMgbGlrZSAvL2Zvby9iYXIgYWx3YXlzIGN1dCB0byB0aGUgcHJvdG9jb2wuXG4gIGlmIChyZWxhdGl2ZS5zbGFzaGVzICYmICFyZWxhdGl2ZS5wcm90b2NvbCkge1xuICAgIC8vIHRha2UgZXZlcnl0aGluZyBleGNlcHQgdGhlIHByb3RvY29sIGZyb20gcmVsYXRpdmVcbiAgICB2YXIgcmtleXMgPSBPYmplY3Qua2V5cyhyZWxhdGl2ZSk7XG4gICAgZm9yICh2YXIgcmsgPSAwOyByayA8IHJrZXlzLmxlbmd0aDsgcmsrKykge1xuICAgICAgdmFyIHJrZXkgPSBya2V5c1tya107XG4gICAgICBpZiAocmtleSAhPT0gJ3Byb3RvY29sJylcbiAgICAgICAgcmVzdWx0W3JrZXldID0gcmVsYXRpdmVbcmtleV07XG4gICAgfVxuXG4gICAgLy91cmxQYXJzZSBhcHBlbmRzIHRyYWlsaW5nIC8gdG8gdXJscyBsaWtlIGh0dHA6Ly93d3cuZXhhbXBsZS5jb21cbiAgICBpZiAoc2xhc2hlZFByb3RvY29sW3Jlc3VsdC5wcm90b2NvbF0gJiZcbiAgICAgICAgcmVzdWx0Lmhvc3RuYW1lICYmICFyZXN1bHQucGF0aG5hbWUpIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gcmVzdWx0LnBhdGhuYW1lID0gJy8nO1xuICAgIH1cblxuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBpZiAocmVsYXRpdmUucHJvdG9jb2wgJiYgcmVsYXRpdmUucHJvdG9jb2wgIT09IHJlc3VsdC5wcm90b2NvbCkge1xuICAgIC8vIGlmIGl0J3MgYSBrbm93biB1cmwgcHJvdG9jb2wsIHRoZW4gY2hhbmdpbmdcbiAgICAvLyB0aGUgcHJvdG9jb2wgZG9lcyB3ZWlyZCB0aGluZ3NcbiAgICAvLyBmaXJzdCwgaWYgaXQncyBub3QgZmlsZTosIHRoZW4gd2UgTVVTVCBoYXZlIGEgaG9zdCxcbiAgICAvLyBhbmQgaWYgdGhlcmUgd2FzIGEgcGF0aFxuICAgIC8vIHRvIGJlZ2luIHdpdGgsIHRoZW4gd2UgTVVTVCBoYXZlIGEgcGF0aC5cbiAgICAvLyBpZiBpdCBpcyBmaWxlOiwgdGhlbiB0aGUgaG9zdCBpcyBkcm9wcGVkLFxuICAgIC8vIGJlY2F1c2UgdGhhdCdzIGtub3duIHRvIGJlIGhvc3RsZXNzLlxuICAgIC8vIGFueXRoaW5nIGVsc2UgaXMgYXNzdW1lZCB0byBiZSBhYnNvbHV0ZS5cbiAgICBpZiAoIXNsYXNoZWRQcm90b2NvbFtyZWxhdGl2ZS5wcm90b2NvbF0pIHtcbiAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocmVsYXRpdmUpO1xuICAgICAgZm9yICh2YXIgdiA9IDA7IHYgPCBrZXlzLmxlbmd0aDsgdisrKSB7XG4gICAgICAgIHZhciBrID0ga2V5c1t2XTtcbiAgICAgICAgcmVzdWx0W2tdID0gcmVsYXRpdmVba107XG4gICAgICB9XG4gICAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcmVzdWx0LnByb3RvY29sID0gcmVsYXRpdmUucHJvdG9jb2w7XG4gICAgaWYgKCFyZWxhdGl2ZS5ob3N0ICYmICFob3N0bGVzc1Byb3RvY29sW3JlbGF0aXZlLnByb3RvY29sXSkge1xuICAgICAgdmFyIHJlbFBhdGggPSAocmVsYXRpdmUucGF0aG5hbWUgfHwgJycpLnNwbGl0KCcvJyk7XG4gICAgICB3aGlsZSAocmVsUGF0aC5sZW5ndGggJiYgIShyZWxhdGl2ZS5ob3N0ID0gcmVsUGF0aC5zaGlmdCgpKSk7XG4gICAgICBpZiAoIXJlbGF0aXZlLmhvc3QpIHJlbGF0aXZlLmhvc3QgPSAnJztcbiAgICAgIGlmICghcmVsYXRpdmUuaG9zdG5hbWUpIHJlbGF0aXZlLmhvc3RuYW1lID0gJyc7XG4gICAgICBpZiAocmVsUGF0aFswXSAhPT0gJycpIHJlbFBhdGgudW5zaGlmdCgnJyk7XG4gICAgICBpZiAocmVsUGF0aC5sZW5ndGggPCAyKSByZWxQYXRoLnVuc2hpZnQoJycpO1xuICAgICAgcmVzdWx0LnBhdGhuYW1lID0gcmVsUGF0aC5qb2luKCcvJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRobmFtZSA9IHJlbGF0aXZlLnBhdGhuYW1lO1xuICAgIH1cbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICAgIHJlc3VsdC5ob3N0ID0gcmVsYXRpdmUuaG9zdCB8fCAnJztcbiAgICByZXN1bHQuYXV0aCA9IHJlbGF0aXZlLmF1dGg7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gcmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdDtcbiAgICByZXN1bHQucG9ydCA9IHJlbGF0aXZlLnBvcnQ7XG4gICAgLy8gdG8gc3VwcG9ydCBodHRwLnJlcXVlc3RcbiAgICBpZiAocmVzdWx0LnBhdGhuYW1lIHx8IHJlc3VsdC5zZWFyY2gpIHtcbiAgICAgIHZhciBwID0gcmVzdWx0LnBhdGhuYW1lIHx8ICcnO1xuICAgICAgdmFyIHMgPSByZXN1bHQuc2VhcmNoIHx8ICcnO1xuICAgICAgcmVzdWx0LnBhdGggPSBwICsgcztcbiAgICB9XG4gICAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICAgIHJlc3VsdC5ocmVmID0gcmVzdWx0LmZvcm1hdCgpO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICB2YXIgaXNTb3VyY2VBYnMgPSAocmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5jaGFyQXQoMCkgPT09ICcvJyksXG4gICAgICBpc1JlbEFicyA9IChcbiAgICAgICAgICByZWxhdGl2ZS5ob3N0IHx8XG4gICAgICAgICAgcmVsYXRpdmUucGF0aG5hbWUgJiYgcmVsYXRpdmUucGF0aG5hbWUuY2hhckF0KDApID09PSAnLydcbiAgICAgICksXG4gICAgICBtdXN0RW5kQWJzID0gKGlzUmVsQWJzIHx8IGlzU291cmNlQWJzIHx8XG4gICAgICAgICAgICAgICAgICAgIChyZXN1bHQuaG9zdCAmJiByZWxhdGl2ZS5wYXRobmFtZSkpLFxuICAgICAgcmVtb3ZlQWxsRG90cyA9IG11c3RFbmRBYnMsXG4gICAgICBzcmNQYXRoID0gcmVzdWx0LnBhdGhuYW1lICYmIHJlc3VsdC5wYXRobmFtZS5zcGxpdCgnLycpIHx8IFtdLFxuICAgICAgcmVsUGF0aCA9IHJlbGF0aXZlLnBhdGhuYW1lICYmIHJlbGF0aXZlLnBhdGhuYW1lLnNwbGl0KCcvJykgfHwgW10sXG4gICAgICBwc3ljaG90aWMgPSByZXN1bHQucHJvdG9jb2wgJiYgIXNsYXNoZWRQcm90b2NvbFtyZXN1bHQucHJvdG9jb2xdO1xuXG4gIC8vIGlmIHRoZSB1cmwgaXMgYSBub24tc2xhc2hlZCB1cmwsIHRoZW4gcmVsYXRpdmVcbiAgLy8gbGlua3MgbGlrZSAuLi8uLiBzaG91bGQgYmUgYWJsZVxuICAvLyB0byBjcmF3bCB1cCB0byB0aGUgaG9zdG5hbWUsIGFzIHdlbGwuICBUaGlzIGlzIHN0cmFuZ2UuXG4gIC8vIHJlc3VsdC5wcm90b2NvbCBoYXMgYWxyZWFkeSBiZWVuIHNldCBieSBub3cuXG4gIC8vIExhdGVyIG9uLCBwdXQgdGhlIGZpcnN0IHBhdGggcGFydCBpbnRvIHRoZSBob3N0IGZpZWxkLlxuICBpZiAocHN5Y2hvdGljKSB7XG4gICAgcmVzdWx0Lmhvc3RuYW1lID0gJyc7XG4gICAgcmVzdWx0LnBvcnQgPSBudWxsO1xuICAgIGlmIChyZXN1bHQuaG9zdCkge1xuICAgICAgaWYgKHNyY1BhdGhbMF0gPT09ICcnKSBzcmNQYXRoWzBdID0gcmVzdWx0Lmhvc3Q7XG4gICAgICBlbHNlIHNyY1BhdGgudW5zaGlmdChyZXN1bHQuaG9zdCk7XG4gICAgfVxuICAgIHJlc3VsdC5ob3N0ID0gJyc7XG4gICAgaWYgKHJlbGF0aXZlLnByb3RvY29sKSB7XG4gICAgICByZWxhdGl2ZS5ob3N0bmFtZSA9IG51bGw7XG4gICAgICByZWxhdGl2ZS5wb3J0ID0gbnVsbDtcbiAgICAgIGlmIChyZWxhdGl2ZS5ob3N0KSB7XG4gICAgICAgIGlmIChyZWxQYXRoWzBdID09PSAnJykgcmVsUGF0aFswXSA9IHJlbGF0aXZlLmhvc3Q7XG4gICAgICAgIGVsc2UgcmVsUGF0aC51bnNoaWZ0KHJlbGF0aXZlLmhvc3QpO1xuICAgICAgfVxuICAgICAgcmVsYXRpdmUuaG9zdCA9IG51bGw7XG4gICAgfVxuICAgIG11c3RFbmRBYnMgPSBtdXN0RW5kQWJzICYmIChyZWxQYXRoWzBdID09PSAnJyB8fCBzcmNQYXRoWzBdID09PSAnJyk7XG4gIH1cblxuICBpZiAoaXNSZWxBYnMpIHtcbiAgICAvLyBpdCdzIGFic29sdXRlLlxuICAgIHJlc3VsdC5ob3N0ID0gKHJlbGF0aXZlLmhvc3QgfHwgcmVsYXRpdmUuaG9zdCA9PT0gJycpID9cbiAgICAgICAgICAgICAgICAgIHJlbGF0aXZlLmhvc3QgOiByZXN1bHQuaG9zdDtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSAocmVsYXRpdmUuaG9zdG5hbWUgfHwgcmVsYXRpdmUuaG9zdG5hbWUgPT09ICcnKSA/XG4gICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmUuaG9zdG5hbWUgOiByZXN1bHQuaG9zdG5hbWU7XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICBzcmNQYXRoID0gcmVsUGF0aDtcbiAgICAvLyBmYWxsIHRocm91Z2ggdG8gdGhlIGRvdC1oYW5kbGluZyBiZWxvdy5cbiAgfSBlbHNlIGlmIChyZWxQYXRoLmxlbmd0aCkge1xuICAgIC8vIGl0J3MgcmVsYXRpdmVcbiAgICAvLyB0aHJvdyBhd2F5IHRoZSBleGlzdGluZyBmaWxlLCBhbmQgdGFrZSB0aGUgbmV3IHBhdGggaW5zdGVhZC5cbiAgICBpZiAoIXNyY1BhdGgpIHNyY1BhdGggPSBbXTtcbiAgICBzcmNQYXRoLnBvcCgpO1xuICAgIHNyY1BhdGggPSBzcmNQYXRoLmNvbmNhdChyZWxQYXRoKTtcbiAgICByZXN1bHQuc2VhcmNoID0gcmVsYXRpdmUuc2VhcmNoO1xuICAgIHJlc3VsdC5xdWVyeSA9IHJlbGF0aXZlLnF1ZXJ5O1xuICB9IGVsc2UgaWYgKCF1dGlsLmlzTnVsbE9yVW5kZWZpbmVkKHJlbGF0aXZlLnNlYXJjaCkpIHtcbiAgICAvLyBqdXN0IHB1bGwgb3V0IHRoZSBzZWFyY2guXG4gICAgLy8gbGlrZSBocmVmPSc/Zm9vJy5cbiAgICAvLyBQdXQgdGhpcyBhZnRlciB0aGUgb3RoZXIgdHdvIGNhc2VzIGJlY2F1c2UgaXQgc2ltcGxpZmllcyB0aGUgYm9vbGVhbnNcbiAgICBpZiAocHN5Y2hvdGljKSB7XG4gICAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IHNyY1BhdGguc2hpZnQoKTtcbiAgICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAgIC8vdGhpcyBlc3BlY2lhbGx5IGhhcHBlbnMgaW4gY2FzZXMgbGlrZVxuICAgICAgLy91cmwucmVzb2x2ZU9iamVjdCgnbWFpbHRvOmxvY2FsMUBkb21haW4xJywgJ2xvY2FsMkBkb21haW4yJylcbiAgICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ob3N0LnNwbGl0KCdAJykgOiBmYWxzZTtcbiAgICAgIGlmIChhdXRoSW5Ib3N0KSB7XG4gICAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgICByZXN1bHQuaG9zdCA9IHJlc3VsdC5ob3N0bmFtZSA9IGF1dGhJbkhvc3Quc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmVzdWx0LnNlYXJjaCA9IHJlbGF0aXZlLnNlYXJjaDtcbiAgICByZXN1bHQucXVlcnkgPSByZWxhdGl2ZS5xdWVyeTtcbiAgICAvL3RvIHN1cHBvcnQgaHR0cC5yZXF1ZXN0XG4gICAgaWYgKCF1dGlsLmlzTnVsbChyZXN1bHQucGF0aG5hbWUpIHx8ICF1dGlsLmlzTnVsbChyZXN1bHQuc2VhcmNoKSkge1xuICAgICAgcmVzdWx0LnBhdGggPSAocmVzdWx0LnBhdGhuYW1lID8gcmVzdWx0LnBhdGhuYW1lIDogJycpICtcbiAgICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICAgIH1cbiAgICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgaWYgKCFzcmNQYXRoLmxlbmd0aCkge1xuICAgIC8vIG5vIHBhdGggYXQgYWxsLiAgZWFzeS5cbiAgICAvLyB3ZSd2ZSBhbHJlYWR5IGhhbmRsZWQgdGhlIG90aGVyIHN0dWZmIGFib3ZlLlxuICAgIHJlc3VsdC5wYXRobmFtZSA9IG51bGw7XG4gICAgLy90byBzdXBwb3J0IGh0dHAucmVxdWVzdFxuICAgIGlmIChyZXN1bHQuc2VhcmNoKSB7XG4gICAgICByZXN1bHQucGF0aCA9ICcvJyArIHJlc3VsdC5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdC5wYXRoID0gbnVsbDtcbiAgICB9XG4gICAgcmVzdWx0LmhyZWYgPSByZXN1bHQuZm9ybWF0KCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIGlmIGEgdXJsIEVORHMgaW4gLiBvciAuLiwgdGhlbiBpdCBtdXN0IGdldCBhIHRyYWlsaW5nIHNsYXNoLlxuICAvLyBob3dldmVyLCBpZiBpdCBlbmRzIGluIGFueXRoaW5nIGVsc2Ugbm9uLXNsYXNoeSxcbiAgLy8gdGhlbiBpdCBtdXN0IE5PVCBnZXQgYSB0cmFpbGluZyBzbGFzaC5cbiAgdmFyIGxhc3QgPSBzcmNQYXRoLnNsaWNlKC0xKVswXTtcbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2ggPSAoXG4gICAgICAocmVzdWx0Lmhvc3QgfHwgcmVsYXRpdmUuaG9zdCB8fCBzcmNQYXRoLmxlbmd0aCA+IDEpICYmXG4gICAgICAobGFzdCA9PT0gJy4nIHx8IGxhc3QgPT09ICcuLicpIHx8IGxhc3QgPT09ICcnKTtcblxuICAvLyBzdHJpcCBzaW5nbGUgZG90cywgcmVzb2x2ZSBkb3VibGUgZG90cyB0byBwYXJlbnQgZGlyXG4gIC8vIGlmIHRoZSBwYXRoIHRyaWVzIHRvIGdvIGFib3ZlIHRoZSByb290LCBgdXBgIGVuZHMgdXAgPiAwXG4gIHZhciB1cCA9IDA7XG4gIGZvciAodmFyIGkgPSBzcmNQYXRoLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICBsYXN0ID0gc3JjUGF0aFtpXTtcbiAgICBpZiAobGFzdCA9PT0gJy4nKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHNyY1BhdGguc3BsaWNlKGksIDEpO1xuICAgICAgdXArKztcbiAgICB9IGVsc2UgaWYgKHVwKSB7XG4gICAgICBzcmNQYXRoLnNwbGljZShpLCAxKTtcbiAgICAgIHVwLS07XG4gICAgfVxuICB9XG5cbiAgLy8gaWYgdGhlIHBhdGggaXMgYWxsb3dlZCB0byBnbyBhYm92ZSB0aGUgcm9vdCwgcmVzdG9yZSBsZWFkaW5nIC4uc1xuICBpZiAoIW11c3RFbmRBYnMgJiYgIXJlbW92ZUFsbERvdHMpIHtcbiAgICBmb3IgKDsgdXAtLTsgdXApIHtcbiAgICAgIHNyY1BhdGgudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICBpZiAobXVzdEVuZEFicyAmJiBzcmNQYXRoWzBdICE9PSAnJyAmJlxuICAgICAgKCFzcmNQYXRoWzBdIHx8IHNyY1BhdGhbMF0uY2hhckF0KDApICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC51bnNoaWZ0KCcnKTtcbiAgfVxuXG4gIGlmIChoYXNUcmFpbGluZ1NsYXNoICYmIChzcmNQYXRoLmpvaW4oJy8nKS5zdWJzdHIoLTEpICE9PSAnLycpKSB7XG4gICAgc3JjUGF0aC5wdXNoKCcnKTtcbiAgfVxuXG4gIHZhciBpc0Fic29sdXRlID0gc3JjUGF0aFswXSA9PT0gJycgfHxcbiAgICAgIChzcmNQYXRoWzBdICYmIHNyY1BhdGhbMF0uY2hhckF0KDApID09PSAnLycpO1xuXG4gIC8vIHB1dCB0aGUgaG9zdCBiYWNrXG4gIGlmIChwc3ljaG90aWMpIHtcbiAgICByZXN1bHQuaG9zdG5hbWUgPSByZXN1bHQuaG9zdCA9IGlzQWJzb2x1dGUgPyAnJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQYXRoLmxlbmd0aCA/IHNyY1BhdGguc2hpZnQoKSA6ICcnO1xuICAgIC8vb2NjYXRpb25hbHkgdGhlIGF1dGggY2FuIGdldCBzdHVjayBvbmx5IGluIGhvc3RcbiAgICAvL3RoaXMgZXNwZWNpYWxseSBoYXBwZW5zIGluIGNhc2VzIGxpa2VcbiAgICAvL3VybC5yZXNvbHZlT2JqZWN0KCdtYWlsdG86bG9jYWwxQGRvbWFpbjEnLCAnbG9jYWwyQGRvbWFpbjInKVxuICAgIHZhciBhdXRoSW5Ib3N0ID0gcmVzdWx0Lmhvc3QgJiYgcmVzdWx0Lmhvc3QuaW5kZXhPZignQCcpID4gMCA/XG4gICAgICAgICAgICAgICAgICAgICByZXN1bHQuaG9zdC5zcGxpdCgnQCcpIDogZmFsc2U7XG4gICAgaWYgKGF1dGhJbkhvc3QpIHtcbiAgICAgIHJlc3VsdC5hdXRoID0gYXV0aEluSG9zdC5zaGlmdCgpO1xuICAgICAgcmVzdWx0Lmhvc3QgPSByZXN1bHQuaG9zdG5hbWUgPSBhdXRoSW5Ib3N0LnNoaWZ0KCk7XG4gICAgfVxuICB9XG5cbiAgbXVzdEVuZEFicyA9IG11c3RFbmRBYnMgfHwgKHJlc3VsdC5ob3N0ICYmIHNyY1BhdGgubGVuZ3RoKTtcblxuICBpZiAobXVzdEVuZEFicyAmJiAhaXNBYnNvbHV0ZSkge1xuICAgIHNyY1BhdGgudW5zaGlmdCgnJyk7XG4gIH1cblxuICBpZiAoIXNyY1BhdGgubGVuZ3RoKSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gbnVsbDtcbiAgICByZXN1bHQucGF0aCA9IG51bGw7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0LnBhdGhuYW1lID0gc3JjUGF0aC5qb2luKCcvJyk7XG4gIH1cblxuICAvL3RvIHN1cHBvcnQgcmVxdWVzdC5odHRwXG4gIGlmICghdXRpbC5pc051bGwocmVzdWx0LnBhdGhuYW1lKSB8fCAhdXRpbC5pc051bGwocmVzdWx0LnNlYXJjaCkpIHtcbiAgICByZXN1bHQucGF0aCA9IChyZXN1bHQucGF0aG5hbWUgPyByZXN1bHQucGF0aG5hbWUgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgKHJlc3VsdC5zZWFyY2ggPyByZXN1bHQuc2VhcmNoIDogJycpO1xuICB9XG4gIHJlc3VsdC5hdXRoID0gcmVsYXRpdmUuYXV0aCB8fCByZXN1bHQuYXV0aDtcbiAgcmVzdWx0LnNsYXNoZXMgPSByZXN1bHQuc2xhc2hlcyB8fCByZWxhdGl2ZS5zbGFzaGVzO1xuICByZXN1bHQuaHJlZiA9IHJlc3VsdC5mb3JtYXQoKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBob3N0ID0gdGhpcy5ob3N0O1xuICB2YXIgcG9ydCA9IHBvcnRQYXR0ZXJuLmV4ZWMoaG9zdCk7XG4gIGlmIChwb3J0KSB7XG4gICAgcG9ydCA9IHBvcnRbMF07XG4gICAgaWYgKHBvcnQgIT09ICc6Jykge1xuICAgICAgdGhpcy5wb3J0ID0gcG9ydC5zdWJzdHIoMSk7XG4gICAgfVxuICAgIGhvc3QgPSBob3N0LnN1YnN0cigwLCBob3N0Lmxlbmd0aCAtIHBvcnQubGVuZ3RoKTtcbiAgfVxuICBpZiAoaG9zdCkgdGhpcy5ob3N0bmFtZSA9IGhvc3Q7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5pZiAoIXByb2Nlc3MudmVyc2lvbiB8fFxuICAgIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MC4nKSA9PT0gMCB8fFxuICAgIHByb2Nlc3MudmVyc2lvbi5pbmRleE9mKCd2MS4nKSA9PT0gMCAmJiBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuOC4nKSAhPT0gMCkge1xuICBtb2R1bGUuZXhwb3J0cyA9IHsgbmV4dFRpY2s6IG5leHRUaWNrIH07XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHByb2Nlc3Ncbn1cblxuZnVuY3Rpb24gbmV4dFRpY2soZm4sIGFyZzEsIGFyZzIsIGFyZzMpIHtcbiAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiY2FsbGJhY2tcIiBhcmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcbiAgfVxuICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgdmFyIGFyZ3MsIGk7XG4gIHN3aXRjaCAobGVuKSB7XG4gIGNhc2UgMDpcbiAgY2FzZSAxOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZuKTtcbiAgY2FzZSAyOlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja09uZSgpIHtcbiAgICAgIGZuLmNhbGwobnVsbCwgYXJnMSk7XG4gICAgfSk7XG4gIGNhc2UgMzpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tUd28oKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIpO1xuICAgIH0pO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVGhyZWUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEsIGFyZzIsIGFyZzMpO1xuICAgIH0pO1xuICBkZWZhdWx0OlxuICAgIGFyZ3MgPSBuZXcgQXJyYXkobGVuIC0gMSk7XG4gICAgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBhcmdzLmxlbmd0aCkge1xuICAgICAgYXJnc1tpKytdID0gYXJndW1lbnRzW2ldO1xuICAgIH1cbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2soKSB7XG4gICAgICBmbi5hcHBseShudWxsLCBhcmdzKTtcbiAgICB9KTtcbiAgfVxufVxuXG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIGlzRW5jb2RpbmcgPSBCdWZmZXIuaXNFbmNvZGluZyB8fCBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgZW5jb2RpbmcgPSAnJyArIGVuY29kaW5nO1xuICBzd2l0Y2ggKGVuY29kaW5nICYmIGVuY29kaW5nLnRvTG93ZXJDYXNlKCkpIHtcbiAgICBjYXNlICdoZXgnOmNhc2UgJ3V0ZjgnOmNhc2UgJ3V0Zi04JzpjYXNlICdhc2NpaSc6Y2FzZSAnYmluYXJ5JzpjYXNlICdiYXNlNjQnOmNhc2UgJ3VjczInOmNhc2UgJ3Vjcy0yJzpjYXNlICd1dGYxNmxlJzpjYXNlICd1dGYtMTZsZSc6Y2FzZSAncmF3JzpcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9ub3JtYWxpemVFbmNvZGluZyhlbmMpIHtcbiAgaWYgKCFlbmMpIHJldHVybiAndXRmOCc7XG4gIHZhciByZXRyaWVkO1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHN3aXRjaCAoZW5jKSB7XG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuICd1dGY4JztcbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiAndXRmMTZsZSc7XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuICdsYXRpbjEnO1xuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBlbmM7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAocmV0cmllZCkgcmV0dXJuOyAvLyB1bmRlZmluZWRcbiAgICAgICAgZW5jID0gKCcnICsgZW5jKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICByZXRyaWVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07XG5cbi8vIERvIG5vdCBjYWNoZSBgQnVmZmVyLmlzRW5jb2RpbmdgIHdoZW4gY2hlY2tpbmcgZW5jb2RpbmcgbmFtZXMgYXMgc29tZVxuLy8gbW9kdWxlcyBtb25rZXktcGF0Y2ggaXQgdG8gc3VwcG9ydCBhZGRpdGlvbmFsIGVuY29kaW5nc1xuZnVuY3Rpb24gbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIHZhciBuZW5jID0gX25vcm1hbGl6ZUVuY29kaW5nKGVuYyk7XG4gIGlmICh0eXBlb2YgbmVuYyAhPT0gJ3N0cmluZycgJiYgKEJ1ZmZlci5pc0VuY29kaW5nID09PSBpc0VuY29kaW5nIHx8ICFpc0VuY29kaW5nKGVuYykpKSB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmMpO1xuICByZXR1cm4gbmVuYyB8fCBlbmM7XG59XG5cbi8vIFN0cmluZ0RlY29kZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIGZvciBlZmZpY2llbnRseSBzcGxpdHRpbmcgYSBzZXJpZXMgb2Zcbi8vIGJ1ZmZlcnMgaW50byBhIHNlcmllcyBvZiBKUyBzdHJpbmdzIHdpdGhvdXQgYnJlYWtpbmcgYXBhcnQgbXVsdGktYnl0ZVxuLy8gY2hhcmFjdGVycy5cbmV4cG9ydHMuU3RyaW5nRGVjb2RlciA9IFN0cmluZ0RlY29kZXI7XG5mdW5jdGlvbiBTdHJpbmdEZWNvZGVyKGVuY29kaW5nKSB7XG4gIHRoaXMuZW5jb2RpbmcgPSBub3JtYWxpemVFbmNvZGluZyhlbmNvZGluZyk7XG4gIHZhciBuYjtcbiAgc3dpdGNoICh0aGlzLmVuY29kaW5nKSB7XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICB0aGlzLnRleHQgPSB1dGYxNlRleHQ7XG4gICAgICB0aGlzLmVuZCA9IHV0ZjE2RW5kO1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAndXRmOCc6XG4gICAgICB0aGlzLmZpbGxMYXN0ID0gdXRmOEZpbGxMYXN0O1xuICAgICAgbmIgPSA0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgIHRoaXMudGV4dCA9IGJhc2U2NFRleHQ7XG4gICAgICB0aGlzLmVuZCA9IGJhc2U2NEVuZDtcbiAgICAgIG5iID0gMztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aGlzLndyaXRlID0gc2ltcGxlV3JpdGU7XG4gICAgICB0aGlzLmVuZCA9IHNpbXBsZUVuZDtcbiAgICAgIHJldHVybjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgdGhpcy5sYXN0VG90YWwgPSAwO1xuICB0aGlzLmxhc3RDaGFyID0gQnVmZmVyLmFsbG9jVW5zYWZlKG5iKTtcbn1cblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmIChidWYubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHZhciByO1xuICB2YXIgaTtcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICByID0gdGhpcy5maWxsTGFzdChidWYpO1xuICAgIGlmIChyID09PSB1bmRlZmluZWQpIHJldHVybiAnJztcbiAgICBpID0gdGhpcy5sYXN0TmVlZDtcbiAgICB0aGlzLmxhc3ROZWVkID0gMDtcbiAgfSBlbHNlIHtcbiAgICBpID0gMDtcbiAgfVxuICBpZiAoaSA8IGJ1Zi5sZW5ndGgpIHJldHVybiByID8gciArIHRoaXMudGV4dChidWYsIGkpIDogdGhpcy50ZXh0KGJ1ZiwgaSk7XG4gIHJldHVybiByIHx8ICcnO1xufTtcblxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gdXRmOEVuZDtcblxuLy8gUmV0dXJucyBvbmx5IGNvbXBsZXRlIGNoYXJhY3RlcnMgaW4gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLnRleHQgPSB1dGY4VGV4dDtcblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBwYXJ0aWFsIG5vbi1VVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlclxuU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZmlsbExhc3QgPSBmdW5jdGlvbiAoYnVmKSB7XG4gIGlmICh0aGlzLmxhc3ROZWVkIDw9IGJ1Zi5sZW5ndGgpIHtcbiAgICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59O1xuXG4vLyBDaGVja3MgdGhlIHR5cGUgb2YgYSBVVEYtOCBieXRlLCB3aGV0aGVyIGl0J3MgQVNDSUksIGEgbGVhZGluZyBieXRlLCBvciBhXG4vLyBjb250aW51YXRpb24gYnl0ZS4gSWYgYW4gaW52YWxpZCBieXRlIGlzIGRldGVjdGVkLCAtMiBpcyByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0J5dGUoYnl0ZSkge1xuICBpZiAoYnl0ZSA8PSAweDdGKSByZXR1cm4gMDtlbHNlIGlmIChieXRlID4+IDUgPT09IDB4MDYpIHJldHVybiAyO2Vsc2UgaWYgKGJ5dGUgPj4gNCA9PT0gMHgwRSkgcmV0dXJuIDM7ZWxzZSBpZiAoYnl0ZSA+PiAzID09PSAweDFFKSByZXR1cm4gNDtcbiAgcmV0dXJuIGJ5dGUgPj4gNiA9PT0gMHgwMiA/IC0xIDogLTI7XG59XG5cbi8vIENoZWNrcyBhdCBtb3N0IDMgYnl0ZXMgYXQgdGhlIGVuZCBvZiBhIEJ1ZmZlciBpbiBvcmRlciB0byBkZXRlY3QgYW5cbi8vIGluY29tcGxldGUgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIuIFRoZSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgKDIsIDMsIG9yIDQpXG4vLyBuZWVkZWQgdG8gY29tcGxldGUgdGhlIFVURi04IGNoYXJhY3RlciAoaWYgYXBwbGljYWJsZSkgYXJlIHJldHVybmVkLlxuZnVuY3Rpb24gdXRmOENoZWNrSW5jb21wbGV0ZShzZWxmLCBidWYsIGkpIHtcbiAgdmFyIGogPSBidWYubGVuZ3RoIC0gMTtcbiAgaWYgKGogPCBpKSByZXR1cm4gMDtcbiAgdmFyIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDE7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHNlbGYubGFzdE5lZWQgPSBuYiAtIDI7XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIGlmICgtLWogPCBpIHx8IG5iID09PSAtMikgcmV0dXJuIDA7XG4gIG5iID0gdXRmOENoZWNrQnl0ZShidWZbal0pO1xuICBpZiAobmIgPj0gMCkge1xuICAgIGlmIChuYiA+IDApIHtcbiAgICAgIGlmIChuYiA9PT0gMikgbmIgPSAwO2Vsc2Ugc2VsZi5sYXN0TmVlZCA9IG5iIC0gMztcbiAgICB9XG4gICAgcmV0dXJuIG5iO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBWYWxpZGF0ZXMgYXMgbWFueSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgYXNcbi8vIG5lZWRlZCBvciBhcmUgYXZhaWxhYmxlLiBJZiB3ZSBzZWUgYSBub24tY29udGludWF0aW9uIGJ5dGUgd2hlcmUgd2UgZXhwZWN0XG4vLyBvbmUsIHdlIFwicmVwbGFjZVwiIHRoZSB2YWxpZGF0ZWQgY29udGludWF0aW9uIGJ5dGVzIHdlJ3ZlIHNlZW4gc28gZmFyIHdpdGhcbi8vIGEgc2luZ2xlIFVURi04IHJlcGxhY2VtZW50IGNoYXJhY3RlciAoJ1xcdWZmZmQnKSwgdG8gbWF0Y2ggdjgncyBVVEYtOCBkZWNvZGluZ1xuLy8gYmVoYXZpb3IuIFRoZSBjb250aW51YXRpb24gYnl0ZSBjaGVjayBpcyBpbmNsdWRlZCB0aHJlZSB0aW1lcyBpbiB0aGUgY2FzZVxuLy8gd2hlcmUgYWxsIG9mIHRoZSBjb250aW51YXRpb24gYnl0ZXMgZm9yIGEgY2hhcmFjdGVyIGV4aXN0IGluIHRoZSBzYW1lIGJ1ZmZlci5cbi8vIEl0IGlzIGFsc28gZG9uZSB0aGlzIHdheSBhcyBhIHNsaWdodCBwZXJmb3JtYW5jZSBpbmNyZWFzZSBpbnN0ZWFkIG9mIHVzaW5nIGFcbi8vIGxvb3AuXG5mdW5jdGlvbiB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHNlbGYsIGJ1ZiwgcCkge1xuICBpZiAoKGJ1ZlswXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgc2VsZi5sYXN0TmVlZCA9IDA7XG4gICAgcmV0dXJuICdcXHVmZmZkJztcbiAgfVxuICBpZiAoc2VsZi5sYXN0TmVlZCA+IDEgJiYgYnVmLmxlbmd0aCA+IDEpIHtcbiAgICBpZiAoKGJ1ZlsxXSAmIDB4QzApICE9PSAweDgwKSB7XG4gICAgICBzZWxmLmxhc3ROZWVkID0gMTtcbiAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgfVxuICAgIGlmIChzZWxmLmxhc3ROZWVkID4gMiAmJiBidWYubGVuZ3RoID4gMikge1xuICAgICAgaWYgKChidWZbMl0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgICBzZWxmLmxhc3ROZWVkID0gMjtcbiAgICAgICAgcmV0dXJuICdcXHVmZmZkJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLy8gQXR0ZW1wdHMgdG8gY29tcGxldGUgYSBtdWx0aS1ieXRlIFVURi04IGNoYXJhY3RlciB1c2luZyBieXRlcyBmcm9tIGEgQnVmZmVyLlxuZnVuY3Rpb24gdXRmOEZpbGxMYXN0KGJ1Zikge1xuICB2YXIgcCA9IHRoaXMubGFzdFRvdGFsIC0gdGhpcy5sYXN0TmVlZDtcbiAgdmFyIHIgPSB1dGY4Q2hlY2tFeHRyYUJ5dGVzKHRoaXMsIGJ1ZiwgcCk7XG4gIGlmIChyICE9PSB1bmRlZmluZWQpIHJldHVybiByO1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgcCwgMCwgdGhpcy5sYXN0TmVlZCk7XG4gICAgcmV0dXJuIHRoaXMubGFzdENoYXIudG9TdHJpbmcodGhpcy5lbmNvZGluZywgMCwgdGhpcy5sYXN0VG90YWwpO1xuICB9XG4gIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIGJ1Zi5sZW5ndGgpO1xuICB0aGlzLmxhc3ROZWVkIC09IGJ1Zi5sZW5ndGg7XG59XG5cbi8vIFJldHVybnMgYWxsIGNvbXBsZXRlIFVURi04IGNoYXJhY3RlcnMgaW4gYSBCdWZmZXIuIElmIHRoZSBCdWZmZXIgZW5kZWQgb24gYVxuLy8gcGFydGlhbCBjaGFyYWN0ZXIsIHRoZSBjaGFyYWN0ZXIncyBieXRlcyBhcmUgYnVmZmVyZWQgdW50aWwgdGhlIHJlcXVpcmVkXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXJlIGF2YWlsYWJsZS5cbmZ1bmN0aW9uIHV0ZjhUZXh0KGJ1ZiwgaSkge1xuICB2YXIgdG90YWwgPSB1dGY4Q2hlY2tJbmNvbXBsZXRlKHRoaXMsIGJ1ZiwgaSk7XG4gIGlmICghdGhpcy5sYXN0TmVlZCkgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGkpO1xuICB0aGlzLmxhc3RUb3RhbCA9IHRvdGFsO1xuICB2YXIgZW5kID0gYnVmLmxlbmd0aCAtICh0b3RhbCAtIHRoaXMubGFzdE5lZWQpO1xuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCAwLCBlbmQpO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGY4JywgaSwgZW5kKTtcbn1cblxuLy8gRm9yIFVURi04LCBhIHJlcGxhY2VtZW50IGNoYXJhY3RlciBpcyBhZGRlZCB3aGVuIGVuZGluZyBvbiBhIHBhcnRpYWxcbi8vIGNoYXJhY3Rlci5cbmZ1bmN0aW9uIHV0ZjhFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgJ1xcdWZmZmQnO1xuICByZXR1cm4gcjtcbn1cblxuLy8gVVRGLTE2TEUgdHlwaWNhbGx5IG5lZWRzIHR3byBieXRlcyBwZXIgY2hhcmFjdGVyLCBidXQgZXZlbiBpZiB3ZSBoYXZlIGFuIGV2ZW5cbi8vIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIHdlIG5lZWQgdG8gY2hlY2sgaWYgd2UgZW5kIG9uIGEgbGVhZGluZy9oaWdoXG4vLyBzdXJyb2dhdGUuIEluIHRoYXQgY2FzZSwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgbmV4dCB0d28gYnl0ZXMgaW4gb3JkZXIgdG9cbi8vIGRlY29kZSB0aGUgbGFzdCBjaGFyYWN0ZXIgcHJvcGVybHkuXG5mdW5jdGlvbiB1dGYxNlRleHQoYnVmLCBpKSB7XG4gIGlmICgoYnVmLmxlbmd0aCAtIGkpICUgMiA9PT0gMCkge1xuICAgIHZhciByID0gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHZhciBjID0gci5jaGFyQ29kZUF0KHIubGVuZ3RoIC0gMSk7XG4gICAgICBpZiAoYyA+PSAweEQ4MDAgJiYgYyA8PSAweERCRkYpIHtcbiAgICAgICAgdGhpcy5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHRoaXMubGFzdFRvdGFsID0gNDtcbiAgICAgICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgICAgIHRoaXMubGFzdENoYXJbMV0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICAgICAgICByZXR1cm4gci5zbGljZSgwLCAtMSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9XG4gIHRoaXMubGFzdE5lZWQgPSAxO1xuICB0aGlzLmxhc3RUb3RhbCA9IDI7XG4gIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDFdO1xuICByZXR1cm4gYnVmLnRvU3RyaW5nKCd1dGYxNmxlJywgaSwgYnVmLmxlbmd0aCAtIDEpO1xufVxuXG4vLyBGb3IgVVRGLTE2TEUgd2UgZG8gbm90IGV4cGxpY2l0bHkgYXBwZW5kIHNwZWNpYWwgcmVwbGFjZW1lbnQgY2hhcmFjdGVycyBpZiB3ZVxuLy8gZW5kIG9uIGEgcGFydGlhbCBjaGFyYWN0ZXIsIHdlIHNpbXBseSBsZXQgdjggaGFuZGxlIHRoYXQuXG5mdW5jdGlvbiB1dGYxNkVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkge1xuICAgIHZhciBlbmQgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gICAgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCd1dGYxNmxlJywgMCwgZW5kKTtcbiAgfVxuICByZXR1cm4gcjtcbn1cblxuZnVuY3Rpb24gYmFzZTY0VGV4dChidWYsIGkpIHtcbiAgdmFyIG4gPSAoYnVmLmxlbmd0aCAtIGkpICUgMztcbiAgaWYgKG4gPT09IDApIHJldHVybiBidWYudG9TdHJpbmcoJ2Jhc2U2NCcsIGkpO1xuICB0aGlzLmxhc3ROZWVkID0gMyAtIG47XG4gIHRoaXMubGFzdFRvdGFsID0gMztcbiAgaWYgKG4gPT09IDEpIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAyXTtcbiAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgfVxuICByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpLCBidWYubGVuZ3RoIC0gbik7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NEVuZChidWYpIHtcbiAgdmFyIHIgPSBidWYgJiYgYnVmLmxlbmd0aCA/IHRoaXMud3JpdGUoYnVmKSA6ICcnO1xuICBpZiAodGhpcy5sYXN0TmVlZCkgcmV0dXJuIHIgKyB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKCdiYXNlNjQnLCAwLCAzIC0gdGhpcy5sYXN0TmVlZCk7XG4gIHJldHVybiByO1xufVxuXG4vLyBQYXNzIGJ5dGVzIG9uIHRocm91Z2ggZm9yIHNpbmdsZS1ieXRlIGVuY29kaW5ncyAoZS5nLiBhc2NpaSwgbGF0aW4xLCBoZXgpXG5mdW5jdGlvbiBzaW1wbGVXcml0ZShidWYpIHtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZyh0aGlzLmVuY29kaW5nKTtcbn1cblxuZnVuY3Rpb24gc2ltcGxlRW5kKGJ1Zikge1xuICByZXR1cm4gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbn0iLCIndXNlIHN0cmljdCdcblxudmFyIGNyZWF0ZUhhc2ggPSByZXF1aXJlKCdjcmVhdGUtaGFzaCcpXG52YXIgYnM1OGNoZWNrQmFzZSA9IHJlcXVpcmUoJy4vYmFzZScpXG5cbi8vIFNIQTI1NihTSEEyNTYoYnVmZmVyKSlcbmZ1bmN0aW9uIHNoYTI1NngyIChidWZmZXIpIHtcbiAgdmFyIHRtcCA9IGNyZWF0ZUhhc2goJ3NoYTI1NicpLnVwZGF0ZShidWZmZXIpLmRpZ2VzdCgpXG4gIHJldHVybiBjcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUodG1wKS5kaWdlc3QoKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJzNThjaGVja0Jhc2Uoc2hhMjU2eDIpXG4iLCJ2YXIgUG9pbnQgPSByZXF1aXJlKCcuL3BvaW50JylcbnZhciBDdXJ2ZSA9IHJlcXVpcmUoJy4vY3VydmUnKVxuXG52YXIgZ2V0Q3VydmVCeU5hbWUgPSByZXF1aXJlKCcuL25hbWVzJylcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIEN1cnZlOiBDdXJ2ZSxcbiAgUG9pbnQ6IFBvaW50LFxuICBnZXRDdXJ2ZUJ5TmFtZTogZ2V0Q3VydmVCeU5hbWVcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaW1wbGVtZW50YXRpb24gPSByZXF1aXJlKCcuL2ltcGxlbWVudGF0aW9uJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQgfHwgaW1wbGVtZW50YXRpb247XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVidWdJbk91dCA9IGRlYnVnSW5PdXQ7XG5cbmZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXG4vKiAgd2VhayAqL1xuXG5mdW5jdGlvbiBkZWJ1Z0luT3V0KHRhcmdldCwgbmFtZSwgZGVzY3JpcHRvcikge1xuICB2YXIgb3JpZ2luYWwgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICBkZXNjcmlwdG9yLnZhbHVlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBkZWJ1ZyA9IHRoaXMuZGVidWcgfHwgbmFtZSA9PT0gXCJpbml0XCIgJiYgYXJndW1lbnRzWzBdO1xuICAgIHZhciBvYmpOYW1lID0gdGhpcy5uYW1lO1xuICAgIHZhciBhcmdzQXJyID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtcbiAgICBpZiAoZGVidWcpIHtcbiAgICAgIHZhciBfY29uc29sZTtcblxuICAgICAgKF9jb25zb2xlID0gY29uc29sZSkubG9nLmFwcGx5KF9jb25zb2xlLCBbXCJbdHJlem9yLWxpbmtdIENhbGxpbmcgXCIgKyBvYmpOYW1lICsgXCIuXCIgKyBuYW1lICsgXCIoXCJdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkoYXJnc0Fyci5tYXAoZnVuY3Rpb24gKGYpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBmID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgaWYgKGYubGVuZ3RoID4gMTAwMCkge1xuICAgICAgICAgICAgcmV0dXJuIGYuc3Vic3RyaW5nKDAsIDEwMDApICsgXCIuLi5cIjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGY7XG4gICAgICB9KSksIFtcIilcIl0pKTtcbiAgICB9XG4gICAgLy8gYXNzdW1pbmcgdGhhdCB0aGUgZnVuY3Rpb24gaXMgYSBwcm9taXNlXG4gICAgdmFyIHJlc1AgPSBvcmlnaW5hbC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIHJldHVybiByZXNQLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgaWYgKGRlYnVnKSB7XG4gICAgICAgIGlmIChyZXMgPT0gbnVsbCkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiW3RyZXpvci1saW5rXSBEb25lIFwiICsgb2JqTmFtZSArIFwiLlwiICsgbmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJbdHJlem9yLWxpbmtdIERvbmUgXCIgKyBvYmpOYW1lICsgXCIuXCIgKyBuYW1lICsgXCIsIHJlc3VsdCBcIiwgcmVzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHJlcztcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIlt0cmV6b3ItbGlua10gRXJyb3IgaW4gXCIgKyBvYmpOYW1lICsgXCIuXCIgKyBuYW1lLCBlcnIpO1xuICAgICAgfVxuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBkZXNjcmlwdG9yO1xufSIsIid1c2Ugc3RyaWN0JztcblxuXG52YXIgVFlQRURfT0sgPSAgKHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJykgJiZcbiAgICAgICAgICAgICAgICAodHlwZW9mIFVpbnQxNkFycmF5ICE9PSAndW5kZWZpbmVkJykgJiZcbiAgICAgICAgICAgICAgICAodHlwZW9mIEludDMyQXJyYXkgIT09ICd1bmRlZmluZWQnKTtcblxuZnVuY3Rpb24gX2hhcyhvYmosIGtleSkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KTtcbn1cblxuZXhwb3J0cy5hc3NpZ24gPSBmdW5jdGlvbiAob2JqIC8qZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uKi8pIHtcbiAgdmFyIHNvdXJjZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuICB3aGlsZSAoc291cmNlcy5sZW5ndGgpIHtcbiAgICB2YXIgc291cmNlID0gc291cmNlcy5zaGlmdCgpO1xuICAgIGlmICghc291cmNlKSB7IGNvbnRpbnVlOyB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Ioc291cmNlICsgJ211c3QgYmUgbm9uLW9iamVjdCcpO1xuICAgIH1cblxuICAgIGZvciAodmFyIHAgaW4gc291cmNlKSB7XG4gICAgICBpZiAoX2hhcyhzb3VyY2UsIHApKSB7XG4gICAgICAgIG9ialtwXSA9IHNvdXJjZVtwXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcblxuXG4vLyByZWR1Y2UgYnVmZmVyIHNpemUsIGF2b2lkaW5nIG1lbSBjb3B5XG5leHBvcnRzLnNocmlua0J1ZiA9IGZ1bmN0aW9uIChidWYsIHNpemUpIHtcbiAgaWYgKGJ1Zi5sZW5ndGggPT09IHNpemUpIHsgcmV0dXJuIGJ1ZjsgfVxuICBpZiAoYnVmLnN1YmFycmF5KSB7IHJldHVybiBidWYuc3ViYXJyYXkoMCwgc2l6ZSk7IH1cbiAgYnVmLmxlbmd0aCA9IHNpemU7XG4gIHJldHVybiBidWY7XG59O1xuXG5cbnZhciBmblR5cGVkID0ge1xuICBhcnJheVNldDogZnVuY3Rpb24gKGRlc3QsIHNyYywgc3JjX29mZnMsIGxlbiwgZGVzdF9vZmZzKSB7XG4gICAgaWYgKHNyYy5zdWJhcnJheSAmJiBkZXN0LnN1YmFycmF5KSB7XG4gICAgICBkZXN0LnNldChzcmMuc3ViYXJyYXkoc3JjX29mZnMsIHNyY19vZmZzICsgbGVuKSwgZGVzdF9vZmZzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gRmFsbGJhY2sgdG8gb3JkaW5hcnkgYXJyYXlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBkZXN0W2Rlc3Rfb2ZmcyArIGldID0gc3JjW3NyY19vZmZzICsgaV07XG4gICAgfVxuICB9LFxuICAvLyBKb2luIGFycmF5IG9mIGNodW5rcyB0byBzaW5nbGUgYXJyYXkuXG4gIGZsYXR0ZW5DaHVua3M6IGZ1bmN0aW9uIChjaHVua3MpIHtcbiAgICB2YXIgaSwgbCwgbGVuLCBwb3MsIGNodW5rLCByZXN1bHQ7XG5cbiAgICAvLyBjYWxjdWxhdGUgZGF0YSBsZW5ndGhcbiAgICBsZW4gPSAwO1xuICAgIGZvciAoaSA9IDAsIGwgPSBjaHVua3MubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBsZW4gKz0gY2h1bmtzW2ldLmxlbmd0aDtcbiAgICB9XG5cbiAgICAvLyBqb2luIGNodW5rc1xuICAgIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KGxlbik7XG4gICAgcG9zID0gMDtcbiAgICBmb3IgKGkgPSAwLCBsID0gY2h1bmtzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY2h1bmsgPSBjaHVua3NbaV07XG4gICAgICByZXN1bHQuc2V0KGNodW5rLCBwb3MpO1xuICAgICAgcG9zICs9IGNodW5rLmxlbmd0aDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59O1xuXG52YXIgZm5VbnR5cGVkID0ge1xuICBhcnJheVNldDogZnVuY3Rpb24gKGRlc3QsIHNyYywgc3JjX29mZnMsIGxlbiwgZGVzdF9vZmZzKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgZGVzdFtkZXN0X29mZnMgKyBpXSA9IHNyY1tzcmNfb2ZmcyArIGldO1xuICAgIH1cbiAgfSxcbiAgLy8gSm9pbiBhcnJheSBvZiBjaHVua3MgdG8gc2luZ2xlIGFycmF5LlxuICBmbGF0dGVuQ2h1bmtzOiBmdW5jdGlvbiAoY2h1bmtzKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdC5hcHBseShbXSwgY2h1bmtzKTtcbiAgfVxufTtcblxuXG4vLyBFbmFibGUvRGlzYWJsZSB0eXBlZCBhcnJheXMgdXNlLCBmb3IgdGVzdGluZ1xuLy9cbmV4cG9ydHMuc2V0VHlwZWQgPSBmdW5jdGlvbiAob24pIHtcbiAgaWYgKG9uKSB7XG4gICAgZXhwb3J0cy5CdWY4ICA9IFVpbnQ4QXJyYXk7XG4gICAgZXhwb3J0cy5CdWYxNiA9IFVpbnQxNkFycmF5O1xuICAgIGV4cG9ydHMuQnVmMzIgPSBJbnQzMkFycmF5O1xuICAgIGV4cG9ydHMuYXNzaWduKGV4cG9ydHMsIGZuVHlwZWQpO1xuICB9IGVsc2Uge1xuICAgIGV4cG9ydHMuQnVmOCAgPSBBcnJheTtcbiAgICBleHBvcnRzLkJ1ZjE2ID0gQXJyYXk7XG4gICAgZXhwb3J0cy5CdWYzMiA9IEFycmF5O1xuICAgIGV4cG9ydHMuYXNzaWduKGV4cG9ydHMsIGZuVW50eXBlZCk7XG4gIH1cbn07XG5cbmV4cG9ydHMuc2V0VHlwZWQoVFlQRURfT0spO1xuIiwidmFyIHR5cGVzID0ge1xuICBBcnJheTogZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLmNvbnN0cnVjdG9yID09PSBBcnJheSB9LFxuICBCb29sZWFuOiBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIH0sXG4gIEZ1bmN0aW9uOiBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyB9LFxuICBOaWw6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB9LFxuICBOdW1iZXI6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB9LFxuICBPYmplY3Q6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB9LFxuICBTdHJpbmc6IGZ1bmN0aW9uICh2YWx1ZSkgeyByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyB9LFxuICAnJzogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZSB9XG59XG5cbi8vIFRPRE86IGRlcHJlY2F0ZVxudHlwZXMuTnVsbCA9IHR5cGVzLk5pbFxuXG5mb3IgKHZhciB0eXBlTmFtZSBpbiB0eXBlcykge1xuICB0eXBlc1t0eXBlTmFtZV0udG9KU09OID0gZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdFxuICB9LmJpbmQobnVsbCwgdHlwZU5hbWUpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZXNcbiIsInZhciBkZWNvbXBpbGUgPSByZXF1aXJlKCcuLi9zY3JpcHQnKS5kZWNvbXBpbGVcbnZhciBtdWx0aXNpZyA9IHJlcXVpcmUoJy4vbXVsdGlzaWcnKVxudmFyIG51bGxEYXRhID0gcmVxdWlyZSgnLi9udWxsZGF0YScpXG52YXIgcHViS2V5ID0gcmVxdWlyZSgnLi9wdWJrZXknKVxudmFyIHB1YktleUhhc2ggPSByZXF1aXJlKCcuL3B1YmtleWhhc2gnKVxudmFyIHNjcmlwdEhhc2ggPSByZXF1aXJlKCcuL3NjcmlwdGhhc2gnKVxudmFyIHdpdG5lc3NQdWJLZXlIYXNoID0gcmVxdWlyZSgnLi93aXRuZXNzcHVia2V5aGFzaCcpXG52YXIgd2l0bmVzc1NjcmlwdEhhc2ggPSByZXF1aXJlKCcuL3dpdG5lc3NzY3JpcHRoYXNoJylcbnZhciB3aXRuZXNzQ29tbWl0bWVudCA9IHJlcXVpcmUoJy4vd2l0bmVzc2NvbW1pdG1lbnQnKVxuXG52YXIgdHlwZXMgPSB7XG4gIE1VTFRJU0lHOiAnbXVsdGlzaWcnLFxuICBOT05TVEFOREFSRDogJ25vbnN0YW5kYXJkJyxcbiAgTlVMTERBVEE6ICdudWxsZGF0YScsXG4gIFAyUEs6ICdwdWJrZXknLFxuICBQMlBLSDogJ3B1YmtleWhhc2gnLFxuICBQMlNIOiAnc2NyaXB0aGFzaCcsXG4gIFAyV1BLSDogJ3dpdG5lc3NwdWJrZXloYXNoJyxcbiAgUDJXU0g6ICd3aXRuZXNzc2NyaXB0aGFzaCcsXG4gIFdJVE5FU1NfQ09NTUlUTUVOVDogJ3dpdG5lc3Njb21taXRtZW50J1xufVxuXG5mdW5jdGlvbiBjbGFzc2lmeU91dHB1dCAoc2NyaXB0KSB7XG4gIGlmICh3aXRuZXNzUHViS2V5SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyV1BLSFxuICBpZiAod2l0bmVzc1NjcmlwdEhhc2gub3V0cHV0LmNoZWNrKHNjcmlwdCkpIHJldHVybiB0eXBlcy5QMldTSFxuICBpZiAocHViS2V5SGFzaC5vdXRwdXQuY2hlY2soc2NyaXB0KSkgcmV0dXJuIHR5cGVzLlAyUEtIXG4gIGlmIChzY3JpcHRIYXNoLm91dHB1dC5jaGVjayhzY3JpcHQpKSByZXR1cm4gdHlwZXMuUDJTSFxuXG4gIC8vIFhYWDogb3B0aW1pemF0aW9uLCBiZWxvdyBmdW5jdGlvbnMgLmRlY29tcGlsZSBiZWZvcmUgdXNlXG4gIHZhciBjaHVua3MgPSBkZWNvbXBpbGUoc2NyaXB0KVxuICBpZiAobXVsdGlzaWcub3V0cHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5NVUxUSVNJR1xuICBpZiAocHViS2V5Lm91dHB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuUDJQS1xuICBpZiAod2l0bmVzc0NvbW1pdG1lbnQub3V0cHV0LmNoZWNrKGNodW5rcykpIHJldHVybiB0eXBlcy5XSVRORVNTX0NPTU1JVE1FTlRcbiAgaWYgKG51bGxEYXRhLm91dHB1dC5jaGVjayhjaHVua3MpKSByZXR1cm4gdHlwZXMuTlVMTERBVEFcblxuICByZXR1cm4gdHlwZXMuTk9OU1RBTkRBUkRcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnlJbnB1dCAoc2NyaXB0LCBhbGxvd0luY29tcGxldGUpIHtcbiAgLy8gWFhYOiBvcHRpbWl6YXRpb24sIGJlbG93IGZ1bmN0aW9ucyAuZGVjb21waWxlIGJlZm9yZSB1c2VcbiAgdmFyIGNodW5rcyA9IGRlY29tcGlsZShzY3JpcHQpXG5cbiAgaWYgKHB1YktleUhhc2guaW5wdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyUEtIXG4gIGlmIChzY3JpcHRIYXNoLmlucHV0LmNoZWNrKGNodW5rcywgYWxsb3dJbmNvbXBsZXRlKSkgcmV0dXJuIHR5cGVzLlAyU0hcbiAgaWYgKG11bHRpc2lnLmlucHV0LmNoZWNrKGNodW5rcywgYWxsb3dJbmNvbXBsZXRlKSkgcmV0dXJuIHR5cGVzLk1VTFRJU0lHXG4gIGlmIChwdWJLZXkuaW5wdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyUEtcblxuICByZXR1cm4gdHlwZXMuTk9OU1RBTkRBUkRcbn1cblxuZnVuY3Rpb24gY2xhc3NpZnlXaXRuZXNzIChzY3JpcHQsIGFsbG93SW5jb21wbGV0ZSkge1xuICAvLyBYWFg6IG9wdGltaXphdGlvbiwgYmVsb3cgZnVuY3Rpb25zIC5kZWNvbXBpbGUgYmVmb3JlIHVzZVxuICB2YXIgY2h1bmtzID0gZGVjb21waWxlKHNjcmlwdClcblxuICBpZiAod2l0bmVzc1B1YktleUhhc2guaW5wdXQuY2hlY2soY2h1bmtzKSkgcmV0dXJuIHR5cGVzLlAyV1BLSFxuICBpZiAod2l0bmVzc1NjcmlwdEhhc2guaW5wdXQuY2hlY2soY2h1bmtzLCBhbGxvd0luY29tcGxldGUpKSByZXR1cm4gdHlwZXMuUDJXU0hcblxuICByZXR1cm4gdHlwZXMuTk9OU1RBTkRBUkRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNsYXNzaWZ5SW5wdXQ6IGNsYXNzaWZ5SW5wdXQsXG4gIGNsYXNzaWZ5T3V0cHV0OiBjbGFzc2lmeU91dHB1dCxcbiAgY2xhc3NpZnlXaXRuZXNzOiBjbGFzc2lmeVdpdG5lc3MsXG4gIG11bHRpc2lnOiBtdWx0aXNpZyxcbiAgbnVsbERhdGE6IG51bGxEYXRhLFxuICBwdWJLZXk6IHB1YktleSxcbiAgcHViS2V5SGFzaDogcHViS2V5SGFzaCxcbiAgc2NyaXB0SGFzaDogc2NyaXB0SGFzaCxcbiAgd2l0bmVzc1B1YktleUhhc2g6IHdpdG5lc3NQdWJLZXlIYXNoLFxuICB3aXRuZXNzU2NyaXB0SGFzaDogd2l0bmVzc1NjcmlwdEhhc2gsXG4gIHdpdG5lc3NDb21taXRtZW50OiB3aXRuZXNzQ29tbWl0bWVudCxcbiAgdHlwZXM6IHR5cGVzXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5wdXQ6IHJlcXVpcmUoJy4vaW5wdXQnKSxcbiAgb3V0cHV0OiByZXF1aXJlKCcuL291dHB1dCcpXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5wdXQ6IHJlcXVpcmUoJy4vaW5wdXQnKSxcbiAgb3V0cHV0OiByZXF1aXJlKCcuL291dHB1dCcpXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5wdXQ6IHJlcXVpcmUoJy4vaW5wdXQnKSxcbiAgb3V0cHV0OiByZXF1aXJlKCcuL291dHB1dCcpXG59XG4iLCIndXNlIHN0cmljdCdcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG4vLyBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxXG5cbmZ1bmN0aW9uIGNoZWNrVUludDUzIChuKSB7XG4gIGlmIChuIDwgMCB8fCBuID4gTUFYX1NBRkVfSU5URUdFUiB8fCBuICUgMSAhPT0gMCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ3ZhbHVlIG91dCBvZiByYW5nZScpXG59XG5cbmZ1bmN0aW9uIGVuY29kZSAobnVtYmVyLCBidWZmZXIsIG9mZnNldCkge1xuICBjaGVja1VJbnQ1MyhudW1iZXIpXG5cbiAgaWYgKCFidWZmZXIpIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShlbmNvZGluZ0xlbmd0aChudW1iZXIpKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihidWZmZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdidWZmZXIgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICghb2Zmc2V0KSBvZmZzZXQgPSAwXG5cbiAgLy8gOCBiaXRcbiAgaWYgKG51bWJlciA8IDB4ZmQpIHtcbiAgICBidWZmZXIud3JpdGVVSW50OChudW1iZXIsIG9mZnNldClcbiAgICBlbmNvZGUuYnl0ZXMgPSAxXG5cbiAgLy8gMTYgYml0XG4gIH0gZWxzZSBpZiAobnVtYmVyIDw9IDB4ZmZmZikge1xuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KDB4ZmQsIG9mZnNldClcbiAgICBidWZmZXIud3JpdGVVSW50MTZMRShudW1iZXIsIG9mZnNldCArIDEpXG4gICAgZW5jb2RlLmJ5dGVzID0gM1xuXG4gIC8vIDMyIGJpdFxuICB9IGVsc2UgaWYgKG51bWJlciA8PSAweGZmZmZmZmZmKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgoMHhmZSwgb2Zmc2V0KVxuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKG51bWJlciwgb2Zmc2V0ICsgMSlcbiAgICBlbmNvZGUuYnl0ZXMgPSA1XG5cbiAgLy8gNjQgYml0XG4gIH0gZWxzZSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgoMHhmZiwgb2Zmc2V0KVxuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKG51bWJlciA+Pj4gMCwgb2Zmc2V0ICsgMSlcbiAgICBidWZmZXIud3JpdGVVSW50MzJMRSgobnVtYmVyIC8gMHgxMDAwMDAwMDApIHwgMCwgb2Zmc2V0ICsgNSlcbiAgICBlbmNvZGUuYnl0ZXMgPSA5XG4gIH1cblxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyLCBvZmZzZXQpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmZmVyKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignYnVmZmVyIG11c3QgYmUgYSBCdWZmZXIgaW5zdGFuY2UnKVxuICBpZiAoIW9mZnNldCkgb2Zmc2V0ID0gMFxuXG4gIHZhciBmaXJzdCA9IGJ1ZmZlci5yZWFkVUludDgob2Zmc2V0KVxuXG4gIC8vIDggYml0XG4gIGlmIChmaXJzdCA8IDB4ZmQpIHtcbiAgICBkZWNvZGUuYnl0ZXMgPSAxXG4gICAgcmV0dXJuIGZpcnN0XG5cbiAgLy8gMTYgYml0XG4gIH0gZWxzZSBpZiAoZmlyc3QgPT09IDB4ZmQpIHtcbiAgICBkZWNvZGUuYnl0ZXMgPSAzXG4gICAgcmV0dXJuIGJ1ZmZlci5yZWFkVUludDE2TEUob2Zmc2V0ICsgMSlcblxuICAvLyAzMiBiaXRcbiAgfSBlbHNlIGlmIChmaXJzdCA9PT0gMHhmZSkge1xuICAgIGRlY29kZS5ieXRlcyA9IDVcbiAgICByZXR1cm4gYnVmZmVyLnJlYWRVSW50MzJMRShvZmZzZXQgKyAxKVxuXG4gIC8vIDY0IGJpdFxuICB9IGVsc2Uge1xuICAgIGRlY29kZS5ieXRlcyA9IDlcbiAgICB2YXIgbG8gPSBidWZmZXIucmVhZFVJbnQzMkxFKG9mZnNldCArIDEpXG4gICAgdmFyIGhpID0gYnVmZmVyLnJlYWRVSW50MzJMRShvZmZzZXQgKyA1KVxuICAgIHZhciBudW1iZXIgPSBoaSAqIDB4MDEwMDAwMDAwMCArIGxvXG4gICAgY2hlY2tVSW50NTMobnVtYmVyKVxuXG4gICAgcmV0dXJuIG51bWJlclxuICB9XG59XG5cbmZ1bmN0aW9uIGVuY29kaW5nTGVuZ3RoIChudW1iZXIpIHtcbiAgY2hlY2tVSW50NTMobnVtYmVyKVxuXG4gIHJldHVybiAoXG4gICAgbnVtYmVyIDwgMHhmZCA/IDFcbiAgOiBudW1iZXIgPD0gMHhmZmZmID8gM1xuICA6IG51bWJlciA8PSAweGZmZmZmZmZmID8gNVxuICA6IDlcbiAgKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHsgZW5jb2RlOiBlbmNvZGUsIGRlY29kZTogZGVjb2RlLCBlbmNvZGluZ0xlbmd0aDogZW5jb2RpbmdMZW5ndGggfVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIEEgYml0IHNpbXBsZXIgdGhhbiByZWFkYWJsZSBzdHJlYW1zLlxuLy8gSW1wbGVtZW50IGFuIGFzeW5jIC5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYiksIGFuZCBpdCdsbCBoYW5kbGUgYWxsXG4vLyB0aGUgZHJhaW4gZXZlbnQgZW1pc3Npb24gYW5kIGJ1ZmZlcmluZy5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdyaXRhYmxlO1xuXG4vKiA8cmVwbGFjZW1lbnQ+ICovXG5mdW5jdGlvbiBXcml0ZVJlcShjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRoaXMuY2h1bmsgPSBjaHVuaztcbiAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nO1xuICB0aGlzLmNhbGxiYWNrID0gY2I7XG4gIHRoaXMubmV4dCA9IG51bGw7XG59XG5cbi8vIEl0IHNlZW1zIGEgbGlua2VkIGxpc3QgYnV0IGl0IGlzIG5vdFxuLy8gdGhlcmUgd2lsbCBiZSBvbmx5IDIgb2YgdGhlc2UgZm9yIGVhY2ggc3RyZWFtXG5mdW5jdGlvbiBDb3JrZWRSZXF1ZXN0KHN0YXRlKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgdGhpcy5lbnRyeSA9IG51bGw7XG4gIHRoaXMuZmluaXNoID0gZnVuY3Rpb24gKCkge1xuICAgIG9uQ29ya2VkRmluaXNoKF90aGlzLCBzdGF0ZSk7XG4gIH07XG59XG4vKiA8L3JlcGxhY2VtZW50PiAqL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGFzeW5jV3JpdGUgPSAhcHJvY2Vzcy5icm93c2VyICYmIFsndjAuMTAnLCAndjAuOS4nXS5pbmRleE9mKHByb2Nlc3MudmVyc2lvbi5zbGljZSgwLCA1KSkgPiAtMSA/IHNldEltbWVkaWF0ZSA6IHBuYS5uZXh0VGljaztcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIER1cGxleDtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5Xcml0YWJsZS5Xcml0YWJsZVN0YXRlID0gV3JpdGFibGVTdGF0ZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGludGVybmFsVXRpbCA9IHtcbiAgZGVwcmVjYXRlOiByZXF1aXJlKCd1dGlsLWRlcHJlY2F0ZScpXG59O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgU3RyZWFtID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL3N0cmVhbScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciBPdXJVaW50OEFycmF5ID0gZ2xvYmFsLlVpbnQ4QXJyYXkgfHwgZnVuY3Rpb24gKCkge307XG5mdW5jdGlvbiBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKSB7XG4gIHJldHVybiBCdWZmZXIuZnJvbShjaHVuayk7XG59XG5mdW5jdGlvbiBfaXNVaW50OEFycmF5KG9iaikge1xuICByZXR1cm4gQnVmZmVyLmlzQnVmZmVyKG9iaikgfHwgb2JqIGluc3RhbmNlb2YgT3VyVWludDhBcnJheTtcbn1cblxuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBkZXN0cm95SW1wbCA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9kZXN0cm95Jyk7XG5cbnV0aWwuaW5oZXJpdHMoV3JpdGFibGUsIFN0cmVhbSk7XG5cbmZ1bmN0aW9uIG5vcCgpIHt9XG5cbmZ1bmN0aW9uIFdyaXRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IHRoaXMgc3RyZWFtXG4gIC8vIGNvbnRhaW5zIGJ1ZmZlcnMgb3Igb2JqZWN0cy5cbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLndyaXRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggd3JpdGUoKSBzdGFydHMgcmV0dXJuaW5nIGZhbHNlXG4gIC8vIE5vdGU6IDAgaXMgYSB2YWxpZCB2YWx1ZSwgbWVhbnMgdGhhdCB3ZSBhbHdheXMgcmV0dXJuIGZhbHNlIGlmXG4gIC8vIHRoZSBlbnRpcmUgYnVmZmVyIGlzIG5vdCBmbHVzaGVkIGltbWVkaWF0ZWx5IG9uIHdyaXRlKClcbiAgdmFyIGh3bSA9IG9wdGlvbnMuaGlnaFdhdGVyTWFyaztcbiAgdmFyIHdyaXRhYmxlSHdtID0gb3B0aW9ucy53cml0YWJsZUhpZ2hXYXRlck1hcms7XG4gIHZhciBkZWZhdWx0SHdtID0gdGhpcy5vYmplY3RNb2RlID8gMTYgOiAxNiAqIDEwMjQ7XG5cbiAgaWYgKGh3bSB8fCBod20gPT09IDApIHRoaXMuaGlnaFdhdGVyTWFyayA9IGh3bTtlbHNlIGlmIChpc0R1cGxleCAmJiAod3JpdGFibGVId20gfHwgd3JpdGFibGVId20gPT09IDApKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSB3cml0YWJsZUh3bTtlbHNlIHRoaXMuaGlnaFdhdGVyTWFyayA9IGRlZmF1bHRId207XG5cbiAgLy8gY2FzdCB0byBpbnRzLlxuICB0aGlzLmhpZ2hXYXRlck1hcmsgPSBNYXRoLmZsb29yKHRoaXMuaGlnaFdhdGVyTWFyayk7XG5cbiAgLy8gaWYgX2ZpbmFsIGhhcyBiZWVuIGNhbGxlZFxuICB0aGlzLmZpbmFsQ2FsbGVkID0gZmFsc2U7XG5cbiAgLy8gZHJhaW4gZXZlbnQgZmxhZy5cbiAgdGhpcy5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgLy8gYXQgdGhlIHN0YXJ0IG9mIGNhbGxpbmcgZW5kKClcbiAgdGhpcy5lbmRpbmcgPSBmYWxzZTtcbiAgLy8gd2hlbiBlbmQoKSBoYXMgYmVlbiBjYWxsZWQsIGFuZCByZXR1cm5lZFxuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIC8vIHdoZW4gJ2ZpbmlzaCcgaXMgZW1pdHRlZFxuICB0aGlzLmZpbmlzaGVkID0gZmFsc2U7XG5cbiAgLy8gaGFzIGl0IGJlZW4gZGVzdHJveWVkXG4gIHRoaXMuZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgLy8gc2hvdWxkIHdlIGRlY29kZSBzdHJpbmdzIGludG8gYnVmZmVycyBiZWZvcmUgcGFzc2luZyB0byBfd3JpdGU/XG4gIC8vIHRoaXMgaXMgaGVyZSBzbyB0aGF0IHNvbWUgbm9kZS1jb3JlIHN0cmVhbXMgY2FuIG9wdGltaXplIHN0cmluZ1xuICAvLyBoYW5kbGluZyBhdCBhIGxvd2VyIGxldmVsLlxuICB2YXIgbm9EZWNvZGUgPSBvcHRpb25zLmRlY29kZVN0cmluZ3MgPT09IGZhbHNlO1xuICB0aGlzLmRlY29kZVN0cmluZ3MgPSAhbm9EZWNvZGU7XG5cbiAgLy8gQ3J5cHRvIGlzIGtpbmQgb2Ygb2xkIGFuZCBjcnVzdHkuICBIaXN0b3JpY2FsbHksIGl0cyBkZWZhdWx0IHN0cmluZ1xuICAvLyBlbmNvZGluZyBpcyAnYmluYXJ5JyBzbyB3ZSBoYXZlIHRvIG1ha2UgdGhpcyBjb25maWd1cmFibGUuXG4gIC8vIEV2ZXJ5dGhpbmcgZWxzZSBpbiB0aGUgdW5pdmVyc2UgdXNlcyAndXRmOCcsIHRob3VnaC5cbiAgdGhpcy5kZWZhdWx0RW5jb2RpbmcgPSBvcHRpb25zLmRlZmF1bHRFbmNvZGluZyB8fCAndXRmOCc7XG5cbiAgLy8gbm90IGFuIGFjdHVhbCBidWZmZXIgd2Uga2VlcCB0cmFjayBvZiwgYnV0IGEgbWVhc3VyZW1lbnRcbiAgLy8gb2YgaG93IG11Y2ggd2UncmUgd2FpdGluZyB0byBnZXQgcHVzaGVkIHRvIHNvbWUgdW5kZXJseWluZ1xuICAvLyBzb2NrZXQgb3IgZmlsZS5cbiAgdGhpcy5sZW5ndGggPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBzZWUgd2hlbiB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUuXG4gIHRoaXMud3JpdGluZyA9IGZhbHNlO1xuXG4gIC8vIHdoZW4gdHJ1ZSBhbGwgd3JpdGVzIHdpbGwgYmUgYnVmZmVyZWQgdW50aWwgLnVuY29yaygpIGNhbGxcbiAgdGhpcy5jb3JrZWQgPSAwO1xuXG4gIC8vIGEgZmxhZyB0byBiZSBhYmxlIHRvIHRlbGwgaWYgdGhlIG9ud3JpdGUgY2IgaXMgY2FsbGVkIGltbWVkaWF0ZWx5LFxuICAvLyBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlIGFueVxuICAvLyBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCB3cml0ZSBjYWxsLlxuICB0aGlzLnN5bmMgPSB0cnVlO1xuXG4gIC8vIGEgZmxhZyB0byBrbm93IGlmIHdlJ3JlIHByb2Nlc3NpbmcgcHJldmlvdXNseSBidWZmZXJlZCBpdGVtcywgd2hpY2hcbiAgLy8gbWF5IGNhbGwgdGhlIF93cml0ZSgpIGNhbGxiYWNrIGluIHRoZSBzYW1lIHRpY2ssIHNvIHRoYXQgd2UgZG9uJ3RcbiAgLy8gZW5kIHVwIGluIGFuIG92ZXJsYXBwZWQgb253cml0ZSBzaXR1YXRpb24uXG4gIHRoaXMuYnVmZmVyUHJvY2Vzc2luZyA9IGZhbHNlO1xuXG4gIC8vIHRoZSBjYWxsYmFjayB0aGF0J3MgcGFzc2VkIHRvIF93cml0ZShjaHVuayxjYilcbiAgdGhpcy5vbndyaXRlID0gZnVuY3Rpb24gKGVyKSB7XG4gICAgb253cml0ZShzdHJlYW0sIGVyKTtcbiAgfTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCB0aGUgdXNlciBzdXBwbGllcyB0byB3cml0ZShjaHVuayxlbmNvZGluZyxjYilcbiAgdGhpcy53cml0ZWNiID0gbnVsbDtcblxuICAvLyB0aGUgYW1vdW50IHRoYXQgaXMgYmVpbmcgd3JpdHRlbiB3aGVuIF93cml0ZSBpcyBjYWxsZWQuXG4gIHRoaXMud3JpdGVsZW4gPSAwO1xuXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgdGhpcy5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcblxuICAvLyBudW1iZXIgb2YgcGVuZGluZyB1c2VyLXN1cHBsaWVkIHdyaXRlIGNhbGxiYWNrc1xuICAvLyB0aGlzIG11c3QgYmUgMCBiZWZvcmUgJ2ZpbmlzaCcgY2FuIGJlIGVtaXR0ZWRcbiAgdGhpcy5wZW5kaW5nY2IgPSAwO1xuXG4gIC8vIGVtaXQgcHJlZmluaXNoIGlmIHRoZSBvbmx5IHRoaW5nIHdlJ3JlIHdhaXRpbmcgZm9yIGlzIF93cml0ZSBjYnNcbiAgLy8gVGhpcyBpcyByZWxldmFudCBmb3Igc3luY2hyb25vdXMgVHJhbnNmb3JtIHN0cmVhbXNcbiAgdGhpcy5wcmVmaW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIFRydWUgaWYgdGhlIGVycm9yIHdhcyBhbHJlYWR5IGVtaXR0ZWQgYW5kIHNob3VsZCBub3QgYmUgdGhyb3duIGFnYWluXG4gIHRoaXMuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG5cbiAgLy8gY291bnQgYnVmZmVyZWQgcmVxdWVzdHNcbiAgdGhpcy5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG5cbiAgLy8gYWxsb2NhdGUgdGhlIGZpcnN0IENvcmtlZFJlcXVlc3QsIHRoZXJlIGlzIGFsd2F5c1xuICAvLyBvbmUgYWxsb2NhdGVkIGFuZCBmcmVlIHRvIHVzZSwgYW5kIHdlIG1haW50YWluIGF0IG1vc3QgdHdvXG4gIHRoaXMuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3QodGhpcyk7XG59XG5cbldyaXRhYmxlU3RhdGUucHJvdG90eXBlLmdldEJ1ZmZlciA9IGZ1bmN0aW9uIGdldEJ1ZmZlcigpIHtcbiAgdmFyIGN1cnJlbnQgPSB0aGlzLmJ1ZmZlcmVkUmVxdWVzdDtcbiAgdmFyIG91dCA9IFtdO1xuICB3aGlsZSAoY3VycmVudCkge1xuICAgIG91dC5wdXNoKGN1cnJlbnQpO1xuICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gIH1cbiAgcmV0dXJuIG91dDtcbn07XG5cbihmdW5jdGlvbiAoKSB7XG4gIHRyeSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFdyaXRhYmxlU3RhdGUucHJvdG90eXBlLCAnYnVmZmVyJywge1xuICAgICAgZ2V0OiBpbnRlcm5hbFV0aWwuZGVwcmVjYXRlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QnVmZmVyKCk7XG4gICAgICB9LCAnX3dyaXRhYmxlU3RhdGUuYnVmZmVyIGlzIGRlcHJlY2F0ZWQuIFVzZSBfd3JpdGFibGVTdGF0ZS5nZXRCdWZmZXIgJyArICdpbnN0ZWFkLicsICdERVAwMDAzJylcbiAgICB9KTtcbiAgfSBjYXRjaCAoXykge31cbn0pKCk7XG5cbi8vIFRlc3QgX3dyaXRhYmxlU3RhdGUgZm9yIGluaGVyaXRhbmNlIHRvIGFjY291bnQgZm9yIER1cGxleCBzdHJlYW1zLFxuLy8gd2hvc2UgcHJvdG90eXBlIGNoYWluIG9ubHkgcG9pbnRzIHRvIFJlYWRhYmxlLlxudmFyIHJlYWxIYXNJbnN0YW5jZTtcbmlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5oYXNJbnN0YW5jZSAmJiB0eXBlb2YgRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV0gPT09ICdmdW5jdGlvbicpIHtcbiAgcmVhbEhhc0luc3RhbmNlID0gRnVuY3Rpb24ucHJvdG90eXBlW1N5bWJvbC5oYXNJbnN0YW5jZV07XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZSwgU3ltYm9sLmhhc0luc3RhbmNlLCB7XG4gICAgdmFsdWU6IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICAgIGlmIChyZWFsSGFzSW5zdGFuY2UuY2FsbCh0aGlzLCBvYmplY3QpKSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmICh0aGlzICE9PSBXcml0YWJsZSkgcmV0dXJuIGZhbHNlO1xuXG4gICAgICByZXR1cm4gb2JqZWN0ICYmIG9iamVjdC5fd3JpdGFibGVTdGF0ZSBpbnN0YW5jZW9mIFdyaXRhYmxlU3RhdGU7XG4gICAgfVxuICB9KTtcbn0gZWxzZSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IGZ1bmN0aW9uIChvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0IGluc3RhbmNlb2YgdGhpcztcbiAgfTtcbn1cblxuZnVuY3Rpb24gV3JpdGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIC8vIFdyaXRhYmxlIGN0b3IgaXMgYXBwbGllZCB0byBEdXBsZXhlcywgdG9vLlxuICAvLyBgcmVhbEhhc0luc3RhbmNlYCBpcyBuZWNlc3NhcnkgYmVjYXVzZSB1c2luZyBwbGFpbiBgaW5zdGFuY2VvZmBcbiAgLy8gd291bGQgcmV0dXJuIGZhbHNlLCBhcyBubyBgX3dyaXRhYmxlU3RhdGVgIHByb3BlcnR5IGlzIGF0dGFjaGVkLlxuXG4gIC8vIFRyeWluZyB0byB1c2UgdGhlIGN1c3RvbSBgaW5zdGFuY2VvZmAgZm9yIFdyaXRhYmxlIGhlcmUgd2lsbCBhbHNvIGJyZWFrIHRoZVxuICAvLyBOb2RlLmpzIExhenlUcmFuc2Zvcm0gaW1wbGVtZW50YXRpb24sIHdoaWNoIGhhcyBhIG5vbi10cml2aWFsIGdldHRlciBmb3JcbiAgLy8gYF93cml0YWJsZVN0YXRlYCB0aGF0IHdvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLlxuICBpZiAoIXJlYWxIYXNJbnN0YW5jZS5jYWxsKFdyaXRhYmxlLCB0aGlzKSAmJiAhKHRoaXMgaW5zdGFuY2VvZiBEdXBsZXgpKSB7XG4gICAgcmV0dXJuIG5ldyBXcml0YWJsZShvcHRpb25zKTtcbiAgfVxuXG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUgPSBuZXcgV3JpdGFibGVTdGF0ZShvcHRpb25zLCB0aGlzKTtcblxuICAvLyBsZWdhY3kuXG4gIHRoaXMud3JpdGFibGUgPSB0cnVlO1xuXG4gIGlmIChvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRlID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZSA9IG9wdGlvbnMud3JpdGU7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMud3JpdGV2ID09PSAnZnVuY3Rpb24nKSB0aGlzLl93cml0ZXYgPSBvcHRpb25zLndyaXRldjtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5kZXN0cm95ID09PSAnZnVuY3Rpb24nKSB0aGlzLl9kZXN0cm95ID0gb3B0aW9ucy5kZXN0cm95O1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmZpbmFsID09PSAnZnVuY3Rpb24nKSB0aGlzLl9maW5hbCA9IG9wdGlvbnMuZmluYWw7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuLy8gT3RoZXJ3aXNlIHBlb3BsZSBjYW4gcGlwZSBXcml0YWJsZSBzdHJlYW1zLCB3aGljaCBpcyBqdXN0IHdyb25nLlxuV3JpdGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ0Nhbm5vdCBwaXBlLCBub3QgcmVhZGFibGUnKSk7XG59O1xuXG5mdW5jdGlvbiB3cml0ZUFmdGVyRW5kKHN0cmVhbSwgY2IpIHtcbiAgdmFyIGVyID0gbmV3IEVycm9yKCd3cml0ZSBhZnRlciBlbmQnKTtcbiAgLy8gVE9ETzogZGVmZXIgZXJyb3IgZXZlbnRzIGNvbnNpc3RlbnRseSBldmVyeXdoZXJlLCBub3QganVzdCB0aGUgY2JcbiAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbn1cblxuLy8gQ2hlY2tzIHRoYXQgYSB1c2VyLXN1cHBsaWVkIGNodW5rIGlzIHZhbGlkLCBlc3BlY2lhbGx5IGZvciB0aGUgcGFydGljdWxhclxuLy8gbW9kZSB0aGUgc3RyZWFtIGlzIGluLiBDdXJyZW50bHkgdGhpcyBtZWFucyB0aGF0IGBudWxsYCBpcyBuZXZlciBhY2NlcHRlZFxuLy8gYW5kIHVuZGVmaW5lZC9ub24tc3RyaW5nIHZhbHVlcyBhcmUgb25seSBhbGxvd2VkIGluIG9iamVjdCBtb2RlLlxuZnVuY3Rpb24gdmFsaWRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgY2IpIHtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcbiAgdmFyIGVyID0gZmFsc2U7XG5cbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdNYXkgbm90IHdyaXRlIG51bGwgdmFsdWVzIHRvIHN0cmVhbScpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBjaHVuayAhPT0gJ3N0cmluZycgJiYgY2h1bmsgIT09IHVuZGVmaW5lZCAmJiAhc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignSW52YWxpZCBub24tc3RyaW5nL2J1ZmZlciBjaHVuaycpO1xuICB9XG4gIGlmIChlcikge1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICBwbmEubmV4dFRpY2soY2IsIGVyKTtcbiAgICB2YWxpZCA9IGZhbHNlO1xuICB9XG4gIHJldHVybiB2YWxpZDtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHJldCA9IGZhbHNlO1xuICB2YXIgaXNCdWYgPSAhc3RhdGUub2JqZWN0TW9kZSAmJiBfaXNVaW50OEFycmF5KGNodW5rKTtcblxuICBpZiAoaXNCdWYgJiYgIUJ1ZmZlci5pc0J1ZmZlcihjaHVuaykpIHtcbiAgICBjaHVuayA9IF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGlzQnVmKSBlbmNvZGluZyA9ICdidWZmZXInO2Vsc2UgaWYgKCFlbmNvZGluZykgZW5jb2RpbmcgPSBzdGF0ZS5kZWZhdWx0RW5jb2Rpbmc7XG5cbiAgaWYgKHR5cGVvZiBjYiAhPT0gJ2Z1bmN0aW9uJykgY2IgPSBub3A7XG5cbiAgaWYgKHN0YXRlLmVuZGVkKSB3cml0ZUFmdGVyRW5kKHRoaXMsIGNiKTtlbHNlIGlmIChpc0J1ZiB8fCB2YWxpZENodW5rKHRoaXMsIHN0YXRlLCBjaHVuaywgY2IpKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgcmV0ID0gd3JpdGVPckJ1ZmZlcih0aGlzLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5jb3JrID0gZnVuY3Rpb24gKCkge1xuICB2YXIgc3RhdGUgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIHN0YXRlLmNvcmtlZCsrO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLnVuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkLS07XG5cbiAgICBpZiAoIXN0YXRlLndyaXRpbmcgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgJiYgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0KSBjbGVhckJ1ZmZlcih0aGlzLCBzdGF0ZSk7XG4gIH1cbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5zZXREZWZhdWx0RW5jb2RpbmcgPSBmdW5jdGlvbiBzZXREZWZhdWx0RW5jb2RpbmcoZW5jb2RpbmcpIHtcbiAgLy8gbm9kZTo6UGFyc2VFbmNvZGluZygpIHJlcXVpcmVzIGxvd2VyIGNhc2UuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSBlbmNvZGluZyA9IGVuY29kaW5nLnRvTG93ZXJDYXNlKCk7XG4gIGlmICghKFsnaGV4JywgJ3V0ZjgnLCAndXRmLTgnLCAnYXNjaWknLCAnYmluYXJ5JywgJ2Jhc2U2NCcsICd1Y3MyJywgJ3Vjcy0yJywgJ3V0ZjE2bGUnLCAndXRmLTE2bGUnLCAncmF3J10uaW5kZXhPZigoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKSkgPiAtMSkpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZyk7XG4gIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVmYXVsdEVuY29kaW5nID0gZW5jb2Rpbmc7XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZykge1xuICBpZiAoIXN0YXRlLm9iamVjdE1vZGUgJiYgc3RhdGUuZGVjb2RlU3RyaW5ncyAhPT0gZmFsc2UgJiYgdHlwZW9mIGNodW5rID09PSAnc3RyaW5nJykge1xuICAgIGNodW5rID0gQnVmZmVyLmZyb20oY2h1bmssIGVuY29kaW5nKTtcbiAgfVxuICByZXR1cm4gY2h1bms7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICd3cml0YWJsZUhpZ2hXYXRlck1hcmsnLCB7XG4gIC8vIG1ha2luZyBpdCBleHBsaWNpdCB0aGlzIHByb3BlcnR5IGlzIG5vdCBlbnVtZXJhYmxlXG4gIC8vIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUgcHJvdG90eXBlIG1hbmlwdWxhdGlvbiBpblxuICAvLyB1c2VybGFuZCB3aWxsIGZhaWxcbiAgZW51bWVyYWJsZTogZmFsc2UsXG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmhpZ2hXYXRlck1hcms7XG4gIH1cbn0pO1xuXG4vLyBpZiB3ZSdyZSBhbHJlYWR5IHdyaXRpbmcgc29tZXRoaW5nLCB0aGVuIGp1c3QgcHV0IHRoaXNcbi8vIGluIHRoZSBxdWV1ZSwgYW5kIHdhaXQgb3VyIHR1cm4uICBPdGhlcndpc2UsIGNhbGwgX3dyaXRlXG4vLyBJZiB3ZSByZXR1cm4gZmFsc2UsIHRoZW4gd2UgbmVlZCBhIGRyYWluIGV2ZW50LCBzbyBzZXQgdGhhdCBmbGFnLlxuZnVuY3Rpb24gd3JpdGVPckJ1ZmZlcihzdHJlYW0sIHN0YXRlLCBpc0J1ZiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBpZiAoIWlzQnVmKSB7XG4gICAgdmFyIG5ld0NodW5rID0gZGVjb2RlQ2h1bmsoc3RhdGUsIGNodW5rLCBlbmNvZGluZyk7XG4gICAgaWYgKGNodW5rICE9PSBuZXdDaHVuaykge1xuICAgICAgaXNCdWYgPSB0cnVlO1xuICAgICAgZW5jb2RpbmcgPSAnYnVmZmVyJztcbiAgICAgIGNodW5rID0gbmV3Q2h1bms7XG4gICAgfVxuICB9XG4gIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICBzdGF0ZS5sZW5ndGggKz0gbGVuO1xuXG4gIHZhciByZXQgPSBzdGF0ZS5sZW5ndGggPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICAvLyB3ZSBtdXN0IGVuc3VyZSB0aGF0IHByZXZpb3VzIG5lZWREcmFpbiB3aWxsIG5vdCBiZSByZXNldCB0byBmYWxzZS5cbiAgaWYgKCFyZXQpIHN0YXRlLm5lZWREcmFpbiA9IHRydWU7XG5cbiAgaWYgKHN0YXRlLndyaXRpbmcgfHwgc3RhdGUuY29ya2VkKSB7XG4gICAgdmFyIGxhc3QgPSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0O1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSB7XG4gICAgICBjaHVuazogY2h1bmssXG4gICAgICBlbmNvZGluZzogZW5jb2RpbmcsXG4gICAgICBpc0J1ZjogaXNCdWYsXG4gICAgICBjYWxsYmFjazogY2IsXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcbiAgICBpZiAobGFzdCkge1xuICAgICAgbGFzdC5uZXh0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgKz0gMTtcbiAgfSBlbHNlIHtcbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCB3cml0ZXYsIGxlbiwgY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBzdGF0ZS53cml0ZWxlbiA9IGxlbjtcbiAgc3RhdGUud3JpdGVjYiA9IGNiO1xuICBzdGF0ZS53cml0aW5nID0gdHJ1ZTtcbiAgc3RhdGUuc3luYyA9IHRydWU7XG4gIGlmICh3cml0ZXYpIHN0cmVhbS5fd3JpdGV2KGNodW5rLCBzdGF0ZS5vbndyaXRlKTtlbHNlIHN0cmVhbS5fd3JpdGUoY2h1bmssIGVuY29kaW5nLCBzdGF0ZS5vbndyaXRlKTtcbiAgc3RhdGUuc3luYyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKSB7XG4gIC0tc3RhdGUucGVuZGluZ2NiO1xuXG4gIGlmIChzeW5jKSB7XG4gICAgLy8gZGVmZXIgdGhlIGNhbGxiYWNrIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgc3luY2hyb25vdXNseVxuICAgIC8vIHRvIGF2b2lkIHBpbGluZyB1cCB0aGluZ3Mgb24gdGhlIHN0YWNrXG4gICAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGFuZCBpdCB3aWxsIGFsd2F5cyBoYXBwZW5cbiAgICAvLyBhZnRlciBlcnJvclxuICAgIHBuYS5uZXh0VGljayhmaW5pc2hNYXliZSwgc3RyZWFtLCBzdGF0ZSk7XG4gICAgc3RyZWFtLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9IGVsc2Uge1xuICAgIC8vIHRoZSBjYWxsZXIgZXhwZWN0IHRoaXMgdG8gaGFwcGVuIGJlZm9yZSBpZlxuICAgIC8vIGl0IGlzIGFzeW5jXG4gICAgY2IoZXIpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgICAvLyB0aGlzIGNhbiBlbWl0IGZpbmlzaCwgYnV0IGZpbmlzaCBtdXN0XG4gICAgLy8gYWx3YXlzIGZvbGxvdyBlcnJvclxuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSkge1xuICBzdGF0ZS53cml0aW5nID0gZmFsc2U7XG4gIHN0YXRlLndyaXRlY2IgPSBudWxsO1xuICBzdGF0ZS5sZW5ndGggLT0gc3RhdGUud3JpdGVsZW47XG4gIHN0YXRlLndyaXRlbGVuID0gMDtcbn1cblxuZnVuY3Rpb24gb253cml0ZShzdHJlYW0sIGVyKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIHN5bmMgPSBzdGF0ZS5zeW5jO1xuICB2YXIgY2IgPSBzdGF0ZS53cml0ZWNiO1xuXG4gIG9ud3JpdGVTdGF0ZVVwZGF0ZShzdGF0ZSk7XG5cbiAgaWYgKGVyKSBvbndyaXRlRXJyb3Ioc3RyZWFtLCBzdGF0ZSwgc3luYywgZXIsIGNiKTtlbHNlIHtcbiAgICAvLyBDaGVjayBpZiB3ZSdyZSBhY3R1YWxseSByZWFkeSB0byBmaW5pc2gsIGJ1dCBkb24ndCBlbWl0IHlldFxuICAgIHZhciBmaW5pc2hlZCA9IG5lZWRGaW5pc2goc3RhdGUpO1xuXG4gICAgaWYgKCFmaW5pc2hlZCAmJiAhc3RhdGUuY29ya2VkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkge1xuICAgICAgY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSk7XG4gICAgfVxuXG4gICAgaWYgKHN5bmMpIHtcbiAgICAgIC8qPHJlcGxhY2VtZW50PiovXG4gICAgICBhc3luY1dyaXRlKGFmdGVyV3JpdGUsIHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYik7XG4gICAgICAvKjwvcmVwbGFjZW1lbnQ+Ki9cbiAgICB9IGVsc2Uge1xuICAgICAgYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhZnRlcldyaXRlKHN0cmVhbSwgc3RhdGUsIGZpbmlzaGVkLCBjYikge1xuICBpZiAoIWZpbmlzaGVkKSBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSk7XG4gIHN0YXRlLnBlbmRpbmdjYi0tO1xuICBjYigpO1xuICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuLy8gTXVzdCBmb3JjZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgb24gbmV4dFRpY2ssIHNvIHRoYXQgd2UgZG9uJ3Rcbi8vIGVtaXQgJ2RyYWluJyBiZWZvcmUgdGhlIHdyaXRlKCkgY29uc3VtZXIgZ2V0cyB0aGUgJ2ZhbHNlJyByZXR1cm5cbi8vIHZhbHVlLCBhbmQgaGFzIGEgY2hhbmNlIHRvIGF0dGFjaCBhICdkcmFpbicgbGlzdGVuZXIuXG5mdW5jdGlvbiBvbndyaXRlRHJhaW4oc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLm5lZWREcmFpbikge1xuICAgIHN0YXRlLm5lZWREcmFpbiA9IGZhbHNlO1xuICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpO1xuICB9XG59XG5cbi8vIGlmIHRoZXJlJ3Mgc29tZXRoaW5nIGluIHRoZSBidWZmZXIgd2FpdGluZywgdGhlbiBwcm9jZXNzIGl0XG5mdW5jdGlvbiBjbGVhckJ1ZmZlcihzdHJlYW0sIHN0YXRlKSB7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSB0cnVlO1xuICB2YXIgZW50cnkgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3Q7XG5cbiAgaWYgKHN0cmVhbS5fd3JpdGV2ICYmIGVudHJ5ICYmIGVudHJ5Lm5leHQpIHtcbiAgICAvLyBGYXN0IGNhc2UsIHdyaXRlIGV2ZXJ5dGhpbmcgdXNpbmcgX3dyaXRldigpXG4gICAgdmFyIGwgPSBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudDtcbiAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5KGwpO1xuICAgIHZhciBob2xkZXIgPSBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWU7XG4gICAgaG9sZGVyLmVudHJ5ID0gZW50cnk7XG5cbiAgICB2YXIgY291bnQgPSAwO1xuICAgIHZhciBhbGxCdWZmZXJzID0gdHJ1ZTtcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIGJ1ZmZlcltjb3VudF0gPSBlbnRyeTtcbiAgICAgIGlmICghZW50cnkuaXNCdWYpIGFsbEJ1ZmZlcnMgPSBmYWxzZTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGJ1ZmZlci5hbGxCdWZmZXJzID0gYWxsQnVmZmVycztcblxuICAgIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgdHJ1ZSwgc3RhdGUubGVuZ3RoLCBidWZmZXIsICcnLCBob2xkZXIuZmluaXNoKTtcblxuICAgIC8vIGRvV3JpdGUgaXMgYWxtb3N0IGFsd2F5cyBhc3luYywgZGVmZXIgdGhlc2UgdG8gc2F2ZSBhIGJpdCBvZiB0aW1lXG4gICAgLy8gYXMgdGhlIGhvdCBwYXRoIGVuZHMgd2l0aCBkb1dyaXRlXG4gICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gICAgaWYgKGhvbGRlci5uZXh0KSB7XG4gICAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBob2xkZXIubmV4dDtcbiAgICAgIGhvbGRlci5uZXh0ID0gbnVsbDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gbmV3IENvcmtlZFJlcXVlc3Qoc3RhdGUpO1xuICAgIH1cbiAgICBzdGF0ZS5idWZmZXJlZFJlcXVlc3RDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gU2xvdyBjYXNlLCB3cml0ZSBjaHVua3Mgb25lLWJ5LW9uZVxuICAgIHdoaWxlIChlbnRyeSkge1xuICAgICAgdmFyIGNodW5rID0gZW50cnkuY2h1bms7XG4gICAgICB2YXIgZW5jb2RpbmcgPSBlbnRyeS5lbmNvZGluZztcbiAgICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgICAgdmFyIGxlbiA9IHN0YXRlLm9iamVjdE1vZGUgPyAxIDogY2h1bmsubGVuZ3RoO1xuXG4gICAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIGZhbHNlLCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpO1xuICAgICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICAgICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQtLTtcbiAgICAgIC8vIGlmIHdlIGRpZG4ndCBjYWxsIHRoZSBvbndyaXRlIGltbWVkaWF0ZWx5LCB0aGVuXG4gICAgICAvLyBpdCBtZWFucyB0aGF0IHdlIG5lZWQgdG8gd2FpdCB1bnRpbCBpdCBkb2VzLlxuICAgICAgLy8gYWxzbywgdGhhdCBtZWFucyB0aGF0IHRoZSBjaHVuayBhbmQgY2IgYXJlIGN1cnJlbnRseVxuICAgICAgLy8gYmVpbmcgcHJvY2Vzc2VkLCBzbyBtb3ZlIHRoZSBidWZmZXIgY291bnRlciBwYXN0IHRoZW0uXG4gICAgICBpZiAoc3RhdGUud3JpdGluZykge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZW50cnkgPT09IG51bGwpIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICB9XG5cbiAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0ID0gZW50cnk7XG4gIHN0YXRlLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcbn1cblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIGNiKG5ldyBFcnJvcignX3dyaXRlKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuV3JpdGFibGUucHJvdG90eXBlLl93cml0ZXYgPSBudWxsO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBpZiAodHlwZW9mIGNodW5rID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2IgPSBjaHVuaztcbiAgICBjaHVuayA9IG51bGw7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gZW5jb2Rpbmc7XG4gICAgZW5jb2RpbmcgPSBudWxsO1xuICB9XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmIGNodW5rICE9PSB1bmRlZmluZWQpIHRoaXMud3JpdGUoY2h1bmssIGVuY29kaW5nKTtcblxuICAvLyAuZW5kKCkgZnVsbHkgdW5jb3Jrc1xuICBpZiAoc3RhdGUuY29ya2VkKSB7XG4gICAgc3RhdGUuY29ya2VkID0gMTtcbiAgICB0aGlzLnVuY29yaygpO1xuICB9XG5cbiAgLy8gaWdub3JlIHVubmVjZXNzYXJ5IGVuZCgpIGNhbGxzLlxuICBpZiAoIXN0YXRlLmVuZGluZyAmJiAhc3RhdGUuZmluaXNoZWQpIGVuZFdyaXRhYmxlKHRoaXMsIHN0YXRlLCBjYik7XG59O1xuXG5mdW5jdGlvbiBuZWVkRmluaXNoKHN0YXRlKSB7XG4gIHJldHVybiBzdGF0ZS5lbmRpbmcgJiYgc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9PT0gbnVsbCAmJiAhc3RhdGUuZmluaXNoZWQgJiYgIXN0YXRlLndyaXRpbmc7XG59XG5mdW5jdGlvbiBjYWxsRmluYWwoc3RyZWFtLCBzdGF0ZSkge1xuICBzdHJlYW0uX2ZpbmFsKGZ1bmN0aW9uIChlcnIpIHtcbiAgICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgICBpZiAoZXJyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpO1xuICAgIH1cbiAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHByZWZpbmlzaChzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucHJlZmluaXNoZWQgJiYgIXN0YXRlLmZpbmFsQ2FsbGVkKSB7XG4gICAgaWYgKHR5cGVvZiBzdHJlYW0uX2ZpbmFsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBzdGF0ZS5wZW5kaW5nY2IrKztcbiAgICAgIHN0YXRlLmZpbmFsQ2FsbGVkID0gdHJ1ZTtcbiAgICAgIHBuYS5uZXh0VGljayhjYWxsRmluYWwsIHN0cmVhbSwgc3RhdGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdGF0ZS5wcmVmaW5pc2hlZCA9IHRydWU7XG4gICAgICBzdHJlYW0uZW1pdCgncHJlZmluaXNoJyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpIHtcbiAgdmFyIG5lZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcbiAgaWYgKG5lZWQpIHtcbiAgICBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSk7XG4gICAgaWYgKHN0YXRlLnBlbmRpbmdjYiA9PT0gMCkge1xuICAgICAgc3RhdGUuZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ2ZpbmlzaCcpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmVlZDtcbn1cblxuZnVuY3Rpb24gZW5kV3JpdGFibGUoc3RyZWFtLCBzdGF0ZSwgY2IpIHtcbiAgc3RhdGUuZW5kaW5nID0gdHJ1ZTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG4gIGlmIChjYikge1xuICAgIGlmIChzdGF0ZS5maW5pc2hlZCkgcG5hLm5leHRUaWNrKGNiKTtlbHNlIHN0cmVhbS5vbmNlKCdmaW5pc2gnLCBjYik7XG4gIH1cbiAgc3RhdGUuZW5kZWQgPSB0cnVlO1xuICBzdHJlYW0ud3JpdGFibGUgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb25Db3JrZWRGaW5pc2goY29ya1JlcSwgc3RhdGUsIGVycikge1xuICB2YXIgZW50cnkgPSBjb3JrUmVxLmVudHJ5O1xuICBjb3JrUmVxLmVudHJ5ID0gbnVsbDtcbiAgd2hpbGUgKGVudHJ5KSB7XG4gICAgdmFyIGNiID0gZW50cnkuY2FsbGJhY2s7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgY2IoZXJyKTtcbiAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gIH1cbiAgaWYgKHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSkge1xuICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZS5uZXh0ID0gY29ya1JlcTtcbiAgfSBlbHNlIHtcbiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUgPSBjb3JrUmVxO1xuICB9XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZS5wcm90b3R5cGUsICdkZXN0cm95ZWQnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLl93cml0YWJsZVN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkO1xuICB9LFxuICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIC8vIHdlIGlnbm9yZSB0aGUgdmFsdWUgaWYgdGhlIHN0cmVhbVxuICAgIC8vIGhhcyBub3QgYmVlbiBpbml0aWFsaXplZCB5ZXRcbiAgICBpZiAoIXRoaXMuX3dyaXRhYmxlU3RhdGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LCB0aGUgdXNlciBpcyBleHBsaWNpdGx5XG4gICAgLy8gbWFuYWdpbmcgZGVzdHJveWVkXG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbldyaXRhYmxlLnByb3RvdHlwZS5kZXN0cm95ID0gZGVzdHJveUltcGwuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fdW5kZXN0cm95ID0gZGVzdHJveUltcGwudW5kZXN0cm95O1xuV3JpdGFibGUucHJvdG90eXBlLl9kZXN0cm95ID0gZnVuY3Rpb24gKGVyciwgY2IpIHtcbiAgdGhpcy5lbmQoKTtcbiAgY2IoZXJyKTtcbn07IiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlclxudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxuXG5mdW5jdGlvbiBDaXBoZXJCYXNlIChoYXNoTW9kZSkge1xuICBUcmFuc2Zvcm0uY2FsbCh0aGlzKVxuICB0aGlzLmhhc2hNb2RlID0gdHlwZW9mIGhhc2hNb2RlID09PSAnc3RyaW5nJ1xuICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgIHRoaXNbaGFzaE1vZGVdID0gdGhpcy5fZmluYWxPckRpZ2VzdFxuICB9IGVsc2Uge1xuICAgIHRoaXMuZmluYWwgPSB0aGlzLl9maW5hbE9yRGlnZXN0XG4gIH1cbiAgaWYgKHRoaXMuX2ZpbmFsKSB7XG4gICAgdGhpcy5fX2ZpbmFsID0gdGhpcy5fZmluYWxcbiAgICB0aGlzLl9maW5hbCA9IG51bGxcbiAgfVxuICB0aGlzLl9kZWNvZGVyID0gbnVsbFxuICB0aGlzLl9lbmNvZGluZyA9IG51bGxcbn1cbmluaGVyaXRzKENpcGhlckJhc2UsIFRyYW5zZm9ybSlcblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUudXBkYXRlID0gZnVuY3Rpb24gKGRhdGEsIGlucHV0RW5jLCBvdXRwdXRFbmMpIHtcbiAgaWYgKHR5cGVvZiBkYXRhID09PSAnc3RyaW5nJykge1xuICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCBpbnB1dEVuYylcbiAgfVxuXG4gIHZhciBvdXREYXRhID0gdGhpcy5fdXBkYXRlKGRhdGEpXG4gIGlmICh0aGlzLmhhc2hNb2RlKSByZXR1cm4gdGhpc1xuXG4gIGlmIChvdXRwdXRFbmMpIHtcbiAgICBvdXREYXRhID0gdGhpcy5fdG9TdHJpbmcob3V0RGF0YSwgb3V0cHV0RW5jKVxuICB9XG5cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0b1BhZGRpbmcgPSBmdW5jdGlvbiAoKSB7fVxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuZ2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gZ2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QXV0aFRhZyA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCd0cnlpbmcgdG8gc2V0IGF1dGggdGFnIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuc2V0QUFEID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ3RyeWluZyB0byBzZXQgYWFkIGluIHVuc3VwcG9ydGVkIHN0YXRlJylcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChkYXRhLCBfLCBuZXh0KSB7XG4gIHZhciBlcnJcbiAgdHJ5IHtcbiAgICBpZiAodGhpcy5oYXNoTW9kZSkge1xuICAgICAgdGhpcy5fdXBkYXRlKGRhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHVzaCh0aGlzLl91cGRhdGUoZGF0YSkpXG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9IGZpbmFsbHkge1xuICAgIG5leHQoZXJyKVxuICB9XG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoZG9uZSkge1xuICB2YXIgZXJyXG4gIHRyeSB7XG4gICAgdGhpcy5wdXNoKHRoaXMuX19maW5hbCgpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgZXJyID0gZVxuICB9XG5cbiAgZG9uZShlcnIpXG59XG5DaXBoZXJCYXNlLnByb3RvdHlwZS5fZmluYWxPckRpZ2VzdCA9IGZ1bmN0aW9uIChvdXRwdXRFbmMpIHtcbiAgdmFyIG91dERhdGEgPSB0aGlzLl9fZmluYWwoKSB8fCBCdWZmZXIuYWxsb2MoMClcbiAgaWYgKG91dHB1dEVuYykge1xuICAgIG91dERhdGEgPSB0aGlzLl90b1N0cmluZyhvdXREYXRhLCBvdXRwdXRFbmMsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG91dERhdGFcbn1cblxuQ2lwaGVyQmFzZS5wcm90b3R5cGUuX3RvU3RyaW5nID0gZnVuY3Rpb24gKHZhbHVlLCBlbmMsIGZpbikge1xuICBpZiAoIXRoaXMuX2RlY29kZXIpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoZW5jKVxuICAgIHRoaXMuX2VuY29kaW5nID0gZW5jXG4gIH1cblxuICBpZiAodGhpcy5fZW5jb2RpbmcgIT09IGVuYykgdGhyb3cgbmV3IEVycm9yKCdjYW5cXCd0IHN3aXRjaCBlbmNvZGluZ3MnKVxuXG4gIHZhciBvdXQgPSB0aGlzLl9kZWNvZGVyLndyaXRlKHZhbHVlKVxuICBpZiAoZmluKSB7XG4gICAgb3V0ICs9IHRoaXMuX2RlY29kZXIuZW5kKClcbiAgfVxuXG4gIHJldHVybiBvdXRcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBDaXBoZXJCYXNlXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBiY3J5cHRvID0gcmVxdWlyZSgnLi9jcnlwdG8nKVxudmFyIGJsYWtlMmIgPSByZXF1aXJlKCdibGFrZTJiJylcbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi9zY3JpcHQnKVxudmFyIGJ1ZmZlcnV0aWxzID0gcmVxdWlyZSgnLi9idWZmZXJ1dGlscycpXG52YXIgb3Bjb2RlcyA9IHJlcXVpcmUoJ2JpdGNvaW4tb3BzJylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpXG52YXIgdmFydWludCA9IHJlcXVpcmUoJ3ZhcnVpbnQtYml0Y29pbicpXG52YXIgbmV0d29ya3MgPSByZXF1aXJlKCcuL25ldHdvcmtzJylcbnZhciBjb2lucyA9IHJlcXVpcmUoJy4vY29pbnMnKVxuXG5mdW5jdGlvbiB2YXJTbGljZVNpemUgKHNvbWVTY3JpcHQpIHtcbiAgdmFyIGxlbmd0aCA9IHNvbWVTY3JpcHQubGVuZ3RoXG5cbiAgcmV0dXJuIHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgobGVuZ3RoKSArIGxlbmd0aFxufVxuXG5mdW5jdGlvbiB2ZWN0b3JTaXplIChzb21lVmVjdG9yKSB7XG4gIHZhciBsZW5ndGggPSBzb21lVmVjdG9yLmxlbmd0aFxuXG4gIHJldHVybiB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKGxlbmd0aCkgKyBzb21lVmVjdG9yLnJlZHVjZShmdW5jdGlvbiAoc3VtLCB3aXRuZXNzKSB7XG4gICAgcmV0dXJuIHN1bSArIHZhclNsaWNlU2l6ZSh3aXRuZXNzKVxuICB9LCAwKVxufVxuXG5mdW5jdGlvbiBUcmFuc2FjdGlvbiAobmV0d29yaykge1xuICB0aGlzLnZlcnNpb24gPSAzXG4gIHRoaXMubG9ja3RpbWUgPSAwXG4gIHRoaXMudGltZXN0YW1wID0gMCAvLyBjYXByaWNvaW4gc3BlY2lmaWNcbiAgdGhpcy5uZXR3b3JrID0gbmV0d29yayB8fCBuZXR3b3Jrcy56Y2FzaFxuICB0aGlzLmlucyA9IFtdXG4gIHRoaXMub3V0cyA9IFtdXG4gIHRoaXMuam9pbnNwbGl0cyA9IFtdIC8vIHpjYXNoIHNwZWNpZmljXG4gIHRoaXMudmVyc2lvbkdyb3VwSWQgPSAnMHgwM2M0ODI3MCcgLy8gemNhc2ggc3BlY2lmaWNcbiAgdGhpcy5leHBpcnkgPSAwIC8vIHpjYXNoIHNwZWNpZmljXG4gIHRoaXMuc3BlbmREZXNjcyA9IFtdOyAvLyB6Y2FzaCBzcGVjaWZpY1xuICB0aGlzLm91dHB1dERlc2NzID0gW107IC8vIHpjYXNoIHNwZWNpZmljXG4gIHRoaXMuZGFzaFR5cGUgPSAwIC8vIGRhc2ggc3BlY2lmaWNcbiAgdGhpcy5kYXNoUGF5bG9hZCA9IDAgLy8gZGFzaCBzcGVjaWZpY1xuICB0aGlzLmludmFsaWRUcmFuc2FjdGlvbiA9IGZhbHNlO1xufVxuXG5UcmFuc2FjdGlvbi5ERUZBVUxUX1NFUVVFTkNFID0gMHhmZmZmZmZmZlxuVHJhbnNhY3Rpb24uU0lHSEFTSF9BTEwgPSAweDAxXG5UcmFuc2FjdGlvbi5TSUdIQVNIX05PTkUgPSAweDAyXG5UcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSA9IDB4MDNcblRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZID0gMHg4MFxuVHJhbnNhY3Rpb24uQURWQU5DRURfVFJBTlNBQ1RJT05fTUFSS0VSID0gMHgwMFxuVHJhbnNhY3Rpb24uQURWQU5DRURfVFJBTlNBQ1RJT05fRkxBRyA9IDB4MDFcblxudmFyIEVNUFRZX1NDUklQVCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxudmFyIEVNUFRZX1dJVE5FU1MgPSBbXVxudmFyIFpFUk8gPSBCdWZmZXIuZnJvbSgnMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsICdoZXgnKVxudmFyIE9ORSA9IEJ1ZmZlci5mcm9tKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxJywgJ2hleCcpXG52YXIgVkFMVUVfVUlOVDY0X01BWCA9IEJ1ZmZlci5mcm9tKCdmZmZmZmZmZmZmZmZmZmZmJywgJ2hleCcpXG52YXIgQkxBTktfT1VUUFVUID0ge1xuICBzY3JpcHQ6IEVNUFRZX1NDUklQVCxcbiAgdmFsdWVCdWZmZXI6IFZBTFVFX1VJTlQ2NF9NQVhcbn1cblxuVHJhbnNhY3Rpb24uWkNBU0hfT1ZFUldJTlRFUl9WRVJTSU9OID0gM1xuVHJhbnNhY3Rpb24uWkNBU0hfU0FQTElOR19WRVJTSU9OID0gNFxuVHJhbnNhY3Rpb24uWkNBU0hfSk9JTlNQTElUU19TVVBQT1JUX1ZFUlNJT04gPSAyXG5UcmFuc2FjdGlvbi5aQ0FTSF9OVU1fSlNfSU5QVVRTID0gMlxuVHJhbnNhY3Rpb24uWkNBU0hfTlVNX0pTX09VVFBVVFMgPSAyXG5UcmFuc2FjdGlvbi5aQ0FTSF9OT1RFQ0lQSEVSVEVYVF9TSVpFID0gMSArIDggKyAzMiArIDMyICsgNTEyICsgMTZcblxuVHJhbnNhY3Rpb24uWkNBU0hfRzFfUFJFRklYX01BU0sgPSAweDAyXG5UcmFuc2FjdGlvbi5aQ0FTSF9HMl9QUkVGSVhfTUFTSyA9IDB4MGFcblxuVHJhbnNhY3Rpb24uREFTSF9OT1JNQUwgPSAwXG5UcmFuc2FjdGlvbi5EQVNIX1BST1ZJREVSX1JFR0lTVEVSID0gMVxuVHJhbnNhY3Rpb24uREFTSF9QUk9WSURFUl9VUERBVEVfU0VSVklDRSA9IDJcblRyYW5zYWN0aW9uLkRBU0hfUFJPVklERVJfVVBEQVRFX1JFR0lTVFJBUiA9IDNcblRyYW5zYWN0aW9uLkRBU0hfUFJPVklERVJfVVBEQVRFX1JFVk9LRSA9IDRcblRyYW5zYWN0aW9uLkRBU0hfQ09JTkJBU0UgPSA1XG5UcmFuc2FjdGlvbi5EQVNIX1FVT1JVTV9DT01NSVRNRU5UID0gNlxuXG5UcmFuc2FjdGlvbi5QUkVWT1VUU19IQVNIX1BFUlNPTiA9IG5ldyBCdWZmZXIoJ1pjYXNoUHJldm91dEhhc2gnKVxuVHJhbnNhY3Rpb24uU0VRVUVOQ0VfSEFTSF9QRVJTT04gPSBuZXcgQnVmZmVyKCdaY2FzaFNlcXVlbmNIYXNoJylcblRyYW5zYWN0aW9uLk9VVFBVVFNfSEFTSF9QRVJTT04gPSBuZXcgQnVmZmVyKCdaY2FzaE91dHB1dHNIYXNoJylcblRyYW5zYWN0aW9uLkpPSU5TUExJVFNfSEFTSF9QRVJTT04gPSBuZXcgQnVmZmVyKCdaY2FzaEpTcGxpdHNIYXNoJylcblRyYW5zYWN0aW9uLk9WRVJXSU5URVJfSEFTSF9QRVJTT04gPSBCdWZmZXIuY29uY2F0KFtuZXcgQnVmZmVyKCdaY2FzaFNpZ0hhc2gnKSwgQnVmZmVyLmZyb20oJzE5MWJhODViJywgJ2hleCcpXSlcblxuLy8gU2FwbGluZyBub3RlIG1hZ2ljIHZhbHVlcywgY29waWVkIGZyb20gc3JjL3pjYXNoL1pjYXNoLmhcbnZhciBOT1RFRU5DUllQVElPTl9BVVRIX0JZVEVTID0gMTY7XG52YXIgWkNfTk9URVBMQUlOVEVYVF9MRUFESU5HID0gMTtcbnZhciBaQ19WX1NJWkUgPSA4O1xudmFyIFpDX1JIT19TSVpFID0gMzI7XG52YXIgWkNfUl9TSVpFID0gMzI7XG52YXIgWkNfTUVNT19TSVpFID0gNTEyO1xudmFyIFpDX0RJVkVSU0lGSUVSX1NJWkUgPSAxMTtcbnZhciBaQ19KVUJKVUJfUE9JTlRfU0laRSA9IDMyO1xudmFyIFpDX0pVQkpVQl9TQ0FMQVJfU0laRSA9IDMyO1xudmFyIFpDX05PVEVQTEFJTlRFWFRfU0laRSA9IFpDX05PVEVQTEFJTlRFWFRfTEVBRElORyArIFpDX1ZfU0laRSArIFpDX1JIT19TSVpFICsgWkNfUl9TSVpFICsgWkNfTUVNT19TSVpFO1xudmFyIFpDX1NBUExJTkdfRU5DUExBSU5URVhUX1NJWkUgPSBaQ19OT1RFUExBSU5URVhUX0xFQURJTkcgKyBaQ19ESVZFUlNJRklFUl9TSVpFICsgWkNfVl9TSVpFICsgWkNfUl9TSVpFICsgWkNfTUVNT19TSVpFO1xudmFyIFpDX1NBUExJTkdfT1VUUExBSU5URVhUX1NJWkUgPSBaQ19KVUJKVUJfUE9JTlRfU0laRSArIFpDX0pVQkpVQl9TQ0FMQVJfU0laRTtcbnZhciBaQ19TQVBMSU5HX0VOQ0NJUEhFUlRFWFRfU0laRSA9IFpDX1NBUExJTkdfRU5DUExBSU5URVhUX1NJWkUgKyBOT1RFRU5DUllQVElPTl9BVVRIX0JZVEVTO1xudmFyIFpDX1NBUExJTkdfT1VUQ0lQSEVSVEVYVF9TSVpFID0gWkNfU0FQTElOR19PVVRQTEFJTlRFWFRfU0laRSArIE5PVEVFTkNSWVBUSU9OX0FVVEhfQllURVM7XG5cblRyYW5zYWN0aW9uLmZyb21CdWZmZXIgPSBmdW5jdGlvbiAoYnVmZmVyLCBuZXR3b3JrLCBfX25vU3RyaWN0KSB7XG4gIHZhciBvZmZzZXQgPSAwXG4gIGZ1bmN0aW9uIHJlYWRTbGljZSAobikge1xuICAgIG9mZnNldCArPSBuXG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZShvZmZzZXQgLSBuLCBvZmZzZXQpXG4gIH1cblxuICBmdW5jdGlvbiByZWFkVUludDggKCkge1xuICAgIHZhciBpID0gYnVmZmVyLnJlYWRVSW50OChvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDFcbiAgICByZXR1cm4gaVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZFVJbnQzMiAoKSB7XG4gICAgdmFyIGkgPSBidWZmZXIucmVhZFVJbnQzMkxFKG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIHJldHVybiBpXG4gIH1cblxuICBmdW5jdGlvbiByZWFkSW50MzIgKCkge1xuICAgIHZhciBpID0gYnVmZmVyLnJlYWRJbnQzMkxFKG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICAgIHJldHVybiBpXG4gIH1cblxuICBmdW5jdGlvbiByZWFkVUludDY0ICgpIHtcbiAgICB2YXIgaSA9IGJ1ZmZlcnV0aWxzLnJlYWRVSW50NjRMRShidWZmZXIsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gOFxuICAgIHJldHVybiBpXG4gIH1cblxuICBmdW5jdGlvbiByZWFkVmFySW50ICgpIHtcbiAgICB2YXIgdmkgPSB2YXJ1aW50LmRlY29kZShidWZmZXIsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gdmFydWludC5kZWNvZGUuYnl0ZXNcbiAgICByZXR1cm4gdmlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRWYXJTbGljZSAoKSB7XG4gICAgcmV0dXJuIHJlYWRTbGljZShyZWFkVmFySW50KCkpXG4gIH1cblxuICBmdW5jdGlvbiByZWFkVmVjdG9yICgpIHtcbiAgICB2YXIgY291bnQgPSByZWFkVmFySW50KClcbiAgICB2YXIgdmVjdG9yID0gW11cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHZlY3Rvci5wdXNoKHJlYWRWYXJTbGljZSgpKVxuICAgIHJldHVybiB2ZWN0b3JcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRDb21wcmVzc2VkRzEgKCkge1xuICAgIHZhciB5THNiID0gcmVhZFVJbnQ4KCkgJiAxXG4gICAgdmFyIHggPSByZWFkU2xpY2UoMzIpXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHgsXG4gICAgICB5THNiOiB5THNiXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZENvbXByZXNzZWRHMiAoKSB7XG4gICAgdmFyIHlMc2IgPSByZWFkVUludDgoKSAmIDFcbiAgICB2YXIgeCA9IHJlYWRTbGljZSg2NClcbiAgICByZXR1cm4ge1xuICAgICAgeDogeCxcbiAgICAgIHlMc2I6IHlMc2JcbiAgICB9XG4gIH1cblxuICAvLyB6Y2FzaCBzYXBsaW5nXG4gIGZ1bmN0aW9uIHJlYWRTcGVudERlc2MgKCkge1xuICAgIHZhciByZXMgPSB7fTtcbiAgICByZXMuY3YgPSByZWFkU2xpY2UoMzIpO1xuICAgIHJlcy5hbmNob3IgPSByZWFkU2xpY2UoMzIpO1xuICAgIHJlcy5udWxsaWZpZXIgPSByZWFkU2xpY2UoMzIpO1xuICAgIHJlcy5yayA9IHJlYWRTbGljZSgzMik7XG4gICAgcmVzLnByb29mID0gcmVhZFNsaWNlKDQ4ICsgOTYgKyA0OCk7XG4gICAgcmVzLnNwZW5kQXV0aFNpZyA9IHJlYWRTbGljZSg2NCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRPdXRwdXREZXNjICgpIHtcbiAgICB2YXIgcmVzID0ge307XG4gICAgcmVzLmN2ID0gcmVhZFNsaWNlKDMyKTtcbiAgICByZXMuY211ID0gcmVhZFNsaWNlKDMyKTtcbiAgICByZXMuZXBoZW1lcmFsS2V5ID0gcmVhZFNsaWNlKDMyKTtcbiAgICByZXMuZW5jQ2lwaGVyVGV4dCA9IHJlYWRTbGljZShaQ19TQVBMSU5HX0VOQ0NJUEhFUlRFWFRfU0laRSk7XG4gICAgcmVzLm91dENpcGhlclRleHQgPSByZWFkU2xpY2UoWkNfU0FQTElOR19PVVRDSVBIRVJURVhUX1NJWkUpO1xuICAgIHJlcy5wcm9vZiA9IHJlYWRTbGljZSg0OCArIDk2ICsgNDgpO1xuICAgIHJldHVybiByZXM7XG4gIH1cblxuICB2YXIgdHggPSBuZXcgVHJhbnNhY3Rpb24oKVxuICB0eC5uZXR3b3JrID0gbmV0d29yayB8fCBuZXR3b3Jrcy5iaXRjb2luXG4gIHR4LnZlcnNpb24gPSByZWFkSW50MzIoKVxuXG4gIGlmIChjb2lucy5pc1pjYXNoKHR4Lm5ldHdvcmspKSB7XG4gICAgdmFyIG92ZXJ3aW50ZXJlZCA9IHR4LnZlcnNpb24gPj4+IDMxXG4gICAgdHgudmVyc2lvbiA9IHR4LnZlcnNpb24gJiAweDdmZmZmZmZmXG4gICAgaWYgKHR4LnZlcnNpb24gPj0gMykge1xuICAgICAgaWYgKCFvdmVyd2ludGVyZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd6Y2FzaCB0eCB2Mysgbm90IG92ZXJ3aW50ZXJlZCcpXG4gICAgICB9XG4gICAgICB0eC52ZXJzaW9uR3JvdXBJZCA9IHJlYWRVSW50MzIoKVxuICAgIH1cbiAgfSBlbHNlIGlmKGNvaW5zLmlzRGFzaCh0eC5uZXR3b3JrKSkge1xuICAgIHR4LmRhc2hUeXBlID0gdHgudmVyc2lvbiA+PiAxNlxuICAgIHR4LnZlcnNpb24gPSB0eC52ZXJzaW9uICYgMHhmZmZmXG4gICAgaWYgKHR4LnZlcnNpb24gPT09IDMgJiYgKHR4LmRhc2hUeXBlIDwgVHJhbnNhY3Rpb24uREFTSF9OT1JNQUwgfHwgdHguZGFzaFR5cGUgPiBUcmFuc2FjdGlvbi5EQVNIX1FVT1JVTV9DT01NSVRNRU5UKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBEYXNoIHRyYW5zYWN0aW9uIHR5cGUnKVxuICAgIH1cbiAgfVxuXG4gIHZhciBtYXJrZXIgPSBidWZmZXIucmVhZFVJbnQ4KG9mZnNldClcbiAgdmFyIGZsYWcgPSBidWZmZXIucmVhZFVJbnQ4KG9mZnNldCArIDEpXG5cbiAgdmFyIGhhc1dpdG5lc3NlcyA9IGZhbHNlXG4gIGlmICghY29pbnMuaXNaY2FzaCh0eC5uZXR3b3JrKSkge1xuICAgIGlmIChtYXJrZXIgPT09IFRyYW5zYWN0aW9uLkFEVkFOQ0VEX1RSQU5TQUNUSU9OX01BUktFUiAmJlxuICAgICAgICBmbGFnID09PSBUcmFuc2FjdGlvbi5BRFZBTkNFRF9UUkFOU0FDVElPTl9GTEFHKSB7XG4gICAgICBvZmZzZXQgKz0gMlxuICAgICAgaGFzV2l0bmVzc2VzID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIGlmIChjb2lucy5pc0NhcHJpY29pbih0eC5uZXR3b3JrKSkge1xuICAgIHR4LnRpbWVzdGFtcCA9IHJlYWRVSW50MzIoKVxuICB9XG5cbiAgdmFyIHZpbkxlbiA9IHJlYWRWYXJJbnQoKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpbkxlbjsgKytpKSB7XG4gICAgdHguaW5zLnB1c2goe1xuICAgICAgaGFzaDogcmVhZFNsaWNlKDMyKSxcbiAgICAgIGluZGV4OiByZWFkVUludDMyKCksXG4gICAgICBzY3JpcHQ6IHJlYWRWYXJTbGljZSgpLFxuICAgICAgc2VxdWVuY2U6IHJlYWRVSW50MzIoKSxcbiAgICAgIHdpdG5lc3M6IEVNUFRZX1dJVE5FU1NcbiAgICB9KVxuICB9XG5cbiAgdmFyIHZvdXRMZW4gPSByZWFkVmFySW50KClcbiAgZm9yIChpID0gMDsgaSA8IHZvdXRMZW47ICsraSkge1xuICAgIHR4Lm91dHMucHVzaCh7XG4gICAgICB2YWx1ZTogcmVhZFVJbnQ2NCgpLFxuICAgICAgc2NyaXB0OiByZWFkVmFyU2xpY2UoKVxuICAgIH0pXG4gIH1cblxuICBpZiAoaGFzV2l0bmVzc2VzKSB7XG4gICAgZm9yIChpID0gMDsgaSA8IHZpbkxlbjsgKytpKSB7XG4gICAgICB0eC5pbnNbaV0ud2l0bmVzcyA9IHJlYWRWZWN0b3IoKVxuICAgIH1cblxuICAgIC8vIHdhcyB0aGlzIHBvaW50bGVzcz9cbiAgICBpZiAoIXR4Lmhhc1dpdG5lc3NlcygpKSB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGhhcyBzdXBlcmZsdW91cyB3aXRuZXNzIGRhdGEnKVxuICB9XG5cbiAgdHgubG9ja3RpbWUgPSByZWFkVUludDMyKClcblxuICBpZiAodHguaXNPdmVyd2ludGVyQ29tcGF0aWJsZSgpKSB7XG4gICAgdHguZXhwaXJ5ID0gcmVhZFVJbnQzMigpXG4gIH1cblxuICBpZiAodHguaXNTYXBsaW5nQ29tcGF0aWJsZSgpKSB7XG4gICAgdHgudmFsdWVCYWxhbmNlID0gcmVhZFVJbnQ2NCgpO1xuICAgIHZhciBzaXplU3BlbmREZXNjcyA9IHJlYWRWYXJJbnQoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemVTcGVuZERlc2NzOyBpKyspIHtcbiAgICAgIHZhciBzcGVuZCA9IHJlYWRTcGVudERlc2MoKTtcbiAgICAgIHR4LnNwZW5kRGVzY3MucHVzaChzcGVuZCk7XG4gICAgfVxuXG4gICAgdmFyIHNpemVPdXRwdXREZXNjcyA9IHJlYWRWYXJJbnQoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpemVPdXRwdXREZXNjczsgaSsrKSB7XG4gICAgICB2YXIgb3V0cHV0ID0gcmVhZE91dHB1dERlc2MoKTtcbiAgICAgIHR4Lm91dHB1dERlc2NzLnB1c2gob3V0cHV0KTtcbiAgICB9XG4gIH1cblxuICBpZiAodHguc3VwcG9ydHNKb2luU3BsaXRzKCkpIHtcbiAgICB2YXIganNMZW4gPSByZWFkVmFySW50KClcbiAgICBmb3IgKGkgPSAwOyBpIDwganNMZW47ICsraSkge1xuICAgICAgdmFyIHZwdWJPbGQgPSByZWFkVUludDY0KClcbiAgICAgIHZhciB2cHViTmV3ID0gcmVhZFVJbnQ2NCgpXG4gICAgICB2YXIgYW5jaG9yID0gcmVhZFNsaWNlKDMyKVxuICAgICAgdmFyIG51bGxpZmllcnMgPSBbXVxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBUcmFuc2FjdGlvbi5aQ0FTSF9OVU1fSlNfSU5QVVRTOyBqKyspIHtcbiAgICAgICAgbnVsbGlmaWVycy5wdXNoKHJlYWRTbGljZSgzMikpXG4gICAgICB9XG4gICAgICB2YXIgY29tbWl0bWVudHMgPSBbXVxuICAgICAgZm9yIChqID0gMDsgaiA8IFRyYW5zYWN0aW9uLlpDQVNIX05VTV9KU19PVVRQVVRTOyBqKyspIHtcbiAgICAgICAgY29tbWl0bWVudHMucHVzaChyZWFkU2xpY2UoMzIpKVxuICAgICAgfVxuICAgICAgdmFyIGVwaGVtZXJhbEtleSA9IHJlYWRTbGljZSgzMilcbiAgICAgIHZhciByYW5kb21TZWVkID0gcmVhZFNsaWNlKDMyKVxuICAgICAgdmFyIG1hY3MgPSBbXVxuICAgICAgZm9yIChqID0gMDsgaiA8IFRyYW5zYWN0aW9uLlpDQVNIX05VTV9KU19JTlBVVFM7IGorKykge1xuICAgICAgICBtYWNzLnB1c2gocmVhZFNsaWNlKDMyKSlcbiAgICAgIH1cbiAgICAgIHZhciB6cHJvb2YgPSB7fTtcbiAgICAgIGlmICh0eC52ZXJzaW9uIDw9IDMpIHtcbiAgICAgICAgenByb29mID0ge1xuICAgICAgICAgIGdBOiByZWFkQ29tcHJlc3NlZEcxKCksXG4gICAgICAgICAgZ0FQcmltZTogcmVhZENvbXByZXNzZWRHMSgpLFxuICAgICAgICAgIGdCOiByZWFkQ29tcHJlc3NlZEcyKCksXG4gICAgICAgICAgZ0JQcmltZTogcmVhZENvbXByZXNzZWRHMSgpLFxuICAgICAgICAgIGdDOiByZWFkQ29tcHJlc3NlZEcxKCksXG4gICAgICAgICAgZ0NQcmltZTogcmVhZENvbXByZXNzZWRHMSgpLFxuICAgICAgICAgIGdLOiByZWFkQ29tcHJlc3NlZEcxKCksXG4gICAgICAgICAgZ0g6IHJlYWRDb21wcmVzc2VkRzEoKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB6cHJvb2YgPSB7XG4gICAgICAgICAgc0E6IHJlYWRTbGljZSg0OCksXG4gICAgICAgICAgc0I6IHJlYWRTbGljZSg5NiksXG4gICAgICAgICAgc0M6IHJlYWRTbGljZSg0OClcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNpcGhlcnRleHRzID0gW11cbiAgICAgIGZvciAoaiA9IDA7IGogPCBUcmFuc2FjdGlvbi5aQ0FTSF9OVU1fSlNfT1VUUFVUUzsgaisrKSB7XG4gICAgICAgIGNpcGhlcnRleHRzLnB1c2gocmVhZFNsaWNlKFRyYW5zYWN0aW9uLlpDQVNIX05PVEVDSVBIRVJURVhUX1NJWkUpKVxuICAgICAgfVxuXG4gICAgICB0eC5qb2luc3BsaXRzLnB1c2goe1xuICAgICAgICB2cHViT2xkOiB2cHViT2xkLFxuICAgICAgICB2cHViTmV3OiB2cHViTmV3LFxuICAgICAgICBhbmNob3I6IGFuY2hvcixcbiAgICAgICAgbnVsbGlmaWVyczogbnVsbGlmaWVycyxcbiAgICAgICAgY29tbWl0bWVudHM6IGNvbW1pdG1lbnRzLFxuICAgICAgICBlcGhlbWVyYWxLZXk6IGVwaGVtZXJhbEtleSxcbiAgICAgICAgcmFuZG9tU2VlZDogcmFuZG9tU2VlZCxcbiAgICAgICAgbWFjczogbWFjcyxcbiAgICAgICAgenByb29mOiB6cHJvb2YsXG4gICAgICAgIGNpcGhlcnRleHRzOiBjaXBoZXJ0ZXh0c1xuICAgICAgfSlcbiAgICB9XG4gICAgaWYgKGpzTGVuID4gMCkge1xuICAgICAgdHguam9pbnNwbGl0UHVia2V5ID0gcmVhZFNsaWNlKDMyKVxuICAgICAgdHguam9pbnNwbGl0U2lnID0gcmVhZFNsaWNlKDY0KVxuICAgIH1cbiAgICBpZiAodHguaXNTYXBsaW5nQ29tcGF0aWJsZSgpICYmICgodHguc3BlbmREZXNjcy5sZW5ndGggKyB0eC5vdXRwdXREZXNjcy5sZW5ndGgpID4gMCkpIHtcbiAgICAgIHR4LmJpbmRpbmdTaWcgPSByZWFkU2xpY2UoNjQpO1xuICAgIH1cbiAgfVxuICBcblxuICBpZiAodHguaXNEYXNoU3BlY2lhbFRyYW5zYWN0aW9uKCkpIHtcbiAgICB0eC5kYXNoUGF5bG9hZCA9IHJlYWRWYXJTbGljZSgpXG4gIH1cblxuICBpZiAoX19ub1N0cmljdCkgcmV0dXJuIHR4XG4gIGlmIChvZmZzZXQgIT09IGJ1ZmZlci5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gaGFzIHVuZXhwZWN0ZWQgZGF0YScpXG5cbiAgcmV0dXJuIHR4XG59XG5cblRyYW5zYWN0aW9uLmZyb21IZXggPSBmdW5jdGlvbiAoaGV4LCBuZXR3b3JrKSB7XG4gIHJldHVybiBUcmFuc2FjdGlvbi5mcm9tQnVmZmVyKG5ldyBCdWZmZXIoaGV4LCAnaGV4JyksIG5ldHdvcmspXG59XG5cblRyYW5zYWN0aW9uLmlzQ29pbmJhc2VIYXNoID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICB0eXBlZm9yY2UodHlwZXMuSGFzaDI1NmJpdCwgYnVmZmVyKVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDMyOyArK2kpIHtcbiAgICBpZiAoYnVmZmVyW2ldICE9PSAwKSByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuaXNDb2luYmFzZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaW5zLmxlbmd0aCA9PT0gMSAmJiBUcmFuc2FjdGlvbi5pc0NvaW5iYXNlSGFzaCh0aGlzLmluc1swXS5oYXNoKVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuYWRkSW5wdXQgPSBmdW5jdGlvbiAoaGFzaCwgaW5kZXgsIHNlcXVlbmNlLCBzY3JpcHRTaWcpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKFxuICAgIHR5cGVzLkhhc2gyNTZiaXQsXG4gICAgdHlwZXMuVUludDMyLFxuICAgIHR5cGVzLm1heWJlKHR5cGVzLlVJbnQzMiksXG4gICAgdHlwZXMubWF5YmUodHlwZXMuQnVmZmVyKVxuICApLCBhcmd1bWVudHMpXG5cbiAgaWYgKHR5cGVzLk51bGwoc2VxdWVuY2UpKSB7XG4gICAgc2VxdWVuY2UgPSBUcmFuc2FjdGlvbi5ERUZBVUxUX1NFUVVFTkNFXG4gIH1cblxuICAvLyBBZGQgdGhlIGlucHV0IGFuZCByZXR1cm4gdGhlIGlucHV0J3MgaW5kZXhcbiAgcmV0dXJuICh0aGlzLmlucy5wdXNoKHtcbiAgICBoYXNoOiBoYXNoLFxuICAgIGluZGV4OiBpbmRleCxcbiAgICBzY3JpcHQ6IHNjcmlwdFNpZyB8fCBFTVBUWV9TQ1JJUFQsXG4gICAgc2VxdWVuY2U6IHNlcXVlbmNlLFxuICAgIHdpdG5lc3M6IEVNUFRZX1dJVE5FU1NcbiAgfSkgLSAxKVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuYWRkT3V0cHV0ID0gZnVuY3Rpb24gKHNjcmlwdFB1YktleSwgdmFsdWUpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKHR5cGVzLkJ1ZmZlciwgdHlwZXMuU2F0b3NoaSksIGFyZ3VtZW50cylcblxuICAvLyBBZGQgdGhlIG91dHB1dCBhbmQgcmV0dXJuIHRoZSBvdXRwdXQncyBpbmRleFxuICByZXR1cm4gKHRoaXMub3V0cy5wdXNoKHtcbiAgICBzY3JpcHQ6IHNjcmlwdFB1YktleSxcbiAgICB2YWx1ZTogdmFsdWVcbiAgfSkgLSAxKVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuaGFzV2l0bmVzc2VzID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5pbnMuc29tZShmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4LndpdG5lc3MubGVuZ3RoICE9PSAwXG4gIH0pXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS53ZWlnaHQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBiYXNlID0gdGhpcy5fX2J5dGVMZW5ndGgoZmFsc2UpXG4gIHZhciB0b3RhbCA9IHRoaXMuX19ieXRlTGVuZ3RoKHRydWUpXG4gIHJldHVybiBiYXNlICogMyArIHRvdGFsXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS52aXJ0dWFsU2l6ZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE1hdGguY2VpbCh0aGlzLndlaWdodCgpIC8gNClcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmJ5dGVMZW5ndGggPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9fYnl0ZUxlbmd0aCh0cnVlKVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuam9pbnNwbGl0Qnl0ZUxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcblxuICB2YXIgam9pblNwbGl0c0xlbiA9IHRoaXMuam9pbnNwbGl0cy5sZW5ndGhcbiAgdmFyIGJ5dGVMZW5ndGggPSAwXG4gIGJ5dGVMZW5ndGggKz0gYnVmZmVydXRpbHMudmFySW50U2l6ZShqb2luU3BsaXRzTGVuKSAgLy8gdkpvaW5TcGxpdFxuXG4gIGlmIChqb2luU3BsaXRzTGVuID4gMCkge1xuICAgIC8vIEJvdGggcHJlIGFuZCBwb3N0IFNhcGxpbmcgSm9pblNwbGl0cyBhcmUgZW5jb2RlZCB3aXRoIHRoZSBmb2xsb3dpbmcgZGF0YTpcbiAgICAvLyA4IHZwdWJfb2xkLCA4IHZwdWJfbmV3LCAzMiBhbmNob3IsIGpvaW5TcGxpdHNMZW4gKiAzMiBudWxsaWZpZXJzLCBqb2luU3BsaXRzTGVuICogMzIgY29tbWl0bWVudHMsIDMyIGVwaGVtZXJhbEtleVxuICAgIC8vIDMyIGVwaGVtZXJhbEtleSwgMzIgcmFuZG9tU2VlZCwgam9pbnNwbGl0Lm1hY3MubGVuZ3RoICogMzIgdm1hY3NcbiAgICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkpIHtcbiAgICAgIGJ5dGVMZW5ndGggKz0gMTY5OCAqIGpvaW5TcGxpdHNMZW4gIC8vIHZKb2luU3BsaXQgdXNpbmcgSlNEZXNjcmlwdGlvbkdyb3RoMTZcbiAgICB9IGVsc2Uge1xuICAgICAgYnl0ZUxlbmd0aCArPSAxODAyICogam9pblNwbGl0c0xlbiAgLy8gdkpvaW5TcGxpdCB1c2luZyBKU0Rlc2NyaXB0aW9uUEhHUjEzXG4gICAgfVxuICAgIGJ5dGVMZW5ndGggKz0gMzIgIC8vIGpvaW5TcGxpdFB1YktleVxuICAgIGJ5dGVMZW5ndGggKz0gNjQgIC8vIGpvaW5TcGxpdFNpZ1xuICB9XG5cbiAgcmV0dXJuIGJ5dGVMZW5ndGhcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLnNwZW5kRGVzY3NCeXRlTGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgYnl0ZUxlbmd0aCA9IDBcbiAgYnl0ZUxlbmd0aCArPSB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMuc3BlbmREZXNjcy5sZW5ndGgpICAvLyBuU2hpZWxkZWRTcGVuZFxuICBieXRlTGVuZ3RoICs9ICgzODQgKiB0aGlzLnNwZW5kRGVzY3MubGVuZ3RoKSAgLy8gdlNoaWVsZGVkU3BlbmRcbiAgcmV0dXJuIGJ5dGVMZW5ndGhcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLm91dHB1dERlc2NzQnl0ZUxlbmd0aCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGJ5dGVMZW5ndGggPSAwXG4gIGJ5dGVMZW5ndGggKz0gdmFydWludC5lbmNvZGluZ0xlbmd0aCh0aGlzLm91dHB1dERlc2NzLmxlbmd0aCkgIC8vIG5TaGllbGRlZE91dHB1dFxuICBieXRlTGVuZ3RoICs9ICg5NDggKiB0aGlzLm91dHB1dERlc2NzLmxlbmd0aCkgIC8vIHZTaGllbGRlZE91dHB1dFxuICByZXR1cm4gYnl0ZUxlbmd0aFxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuemNhc2hUcmFuc2FjdGlvbkJ5dGVMZW5ndGggPSBmdW5jdGlvbigpIHtcbiAgaWYgKCFjb2lucy5pc1pjYXNoKHRoaXMubmV0d29yaykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3pjYXNoVHJhbnNhY3Rpb25CeXRlTGVuZ3RoIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHVzaW5nIFpjYXNoIG5ldHdvcmsnKVxuICB9XG4gIHZhciBieXRlTGVuZ3RoID0gMFxuICBieXRlTGVuZ3RoICs9IDQgIC8vIEhlYWRlclxuICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICBieXRlTGVuZ3RoICs9IDQgIC8vIG5WZXJzaW9uR3JvdXBJZFxuICB9XG4gIGJ5dGVMZW5ndGggKz0gdmFydWludC5lbmNvZGluZ0xlbmd0aCh0aGlzLmlucy5sZW5ndGgpICAvLyB0eF9pbl9jb3VudFxuICBieXRlTGVuZ3RoICs9IHRoaXMuaW5zLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBpbnB1dCkgeyByZXR1cm4gc3VtICsgNDAgKyB2YXJTbGljZVNpemUoaW5wdXQuc2NyaXB0KSB9LCAwKSAgLy8gdHhfaW5cbiAgYnl0ZUxlbmd0aCArPSB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMub3V0cy5sZW5ndGgpICAvLyB0eF9vdXRfY291bnRcbiAgYnl0ZUxlbmd0aCArPSB0aGlzLm91dHMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIG91dHB1dCkgeyByZXR1cm4gc3VtICsgOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSB9LCAwKSAgLy8gdHhfb3V0XG4gIGJ5dGVMZW5ndGggKz0gNCAgLy8gbG9ja190aW1lXG4gIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgIGJ5dGVMZW5ndGggKz0gNCAgLy8gbkV4cGlyeUhlaWdodFxuICB9XG4gIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgIGJ5dGVMZW5ndGggKz0gOCAgLy8gdmFsdWVCYWxhbmNlXG4gICAgYnl0ZUxlbmd0aCArPSB0aGlzLnNwZW5kRGVzY3NCeXRlTGVuZ3RoKClcbiAgICBieXRlTGVuZ3RoICs9IHRoaXMub3V0cHV0RGVzY3NCeXRlTGVuZ3RoKClcbiAgfVxuICBpZiAodGhpcy5zdXBwb3J0c0pvaW5TcGxpdHMoKSkge1xuICAgIGJ5dGVMZW5ndGggKz0gdGhpcy5qb2luc3BsaXRCeXRlTGVuZ3RoKClcbiAgfVxuICBpZiAodGhpcy5pc1NhcGxpbmdDb21wYXRpYmxlKCkgJiZcbiAgICB0aGlzLnNwZW5kRGVzY3MubGVuZ3RoICsgdGhpcy5vdXRwdXREZXNjcy5sZW5ndGggPiAwKSB7XG4gICAgYnl0ZUxlbmd0aCArPSA2NCAgLy8gYmluZGluZ1NpZ1xuICB9XG4gIHJldHVybiBieXRlTGVuZ3RoXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS5fX2J5dGVMZW5ndGggPSBmdW5jdGlvbiAoX19hbGxvd1dpdG5lc3MpIHtcbiAgaWYgKGNvaW5zLmlzWmNhc2godGhpcy5uZXR3b3JrKSkge1xuICAgIHJldHVybiB0aGlzLnpjYXNoVHJhbnNhY3Rpb25CeXRlTGVuZ3RoKCk7XG4gIH1cblxuICB2YXIgaGFzV2l0bmVzc2VzID0gX19hbGxvd1dpdG5lc3MgJiYgdGhpcy5oYXNXaXRuZXNzZXMoKVxuXG4gIHJldHVybiAoXG4gICAgKGhhc1dpdG5lc3NlcyA/IDEwIDogOCkgK1xuICAgICh0aGlzLnRpbWVzdGFtcCA/IDQgOiAwKSArXG4gICAgdmFydWludC5lbmNvZGluZ0xlbmd0aCh0aGlzLmlucy5sZW5ndGgpICtcbiAgICB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMub3V0cy5sZW5ndGgpICtcbiAgICB0aGlzLmlucy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgaW5wdXQpIHsgcmV0dXJuIHN1bSArIDQwICsgdmFyU2xpY2VTaXplKGlucHV0LnNjcmlwdCkgfSwgMCkgK1xuICAgIHRoaXMub3V0cy5yZWR1Y2UoZnVuY3Rpb24gKHN1bSwgb3V0cHV0KSB7IHJldHVybiBzdW0gKyA4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpIH0sIDApICtcbiAgICAodGhpcy5pc0Rhc2hTcGVjaWFsVHJhbnNhY3Rpb24oKSA/IHZhclNsaWNlU2l6ZSh0aGlzLmRhc2hQYXlsb2FkKSA6IDApICtcbiAgICAoaGFzV2l0bmVzc2VzID8gdGhpcy5pbnMucmVkdWNlKGZ1bmN0aW9uIChzdW0sIGlucHV0KSB7IHJldHVybiBzdW0gKyB2ZWN0b3JTaXplKGlucHV0LndpdG5lc3MpIH0sIDApIDogMClcbiAgKVxufVxuXG4vLyBub3RlIC0gdGhpcyBpcyBub3QgdXBkYXRlZCBmb3Igc2FwbGluZyBhbmQgb3ZlcndpbnRlciwgZG8gbm90IHVzZSBhbnl3aGVyZVxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24gKCkge1xuICB2YXIgbmV3VHggPSBuZXcgVHJhbnNhY3Rpb24oKVxuICBuZXdUeC52ZXJzaW9uID0gdGhpcy52ZXJzaW9uXG4gIG5ld1R4LmxvY2t0aW1lID0gdGhpcy5sb2NrdGltZVxuICBuZXdUeC50aW1lc3RhbXAgPSB0aGlzLnRpbWVzdGFtcFxuICBuZXdUeC5uZXR3b3JrID0gdGhpcy5uZXR3b3JrXG4gIG5ld1R4LmRhc2hUeXBlID0gdGhpcy5kYXNoVHlwZVxuICBuZXdUeC5kYXNoUGF5bG9hZCA9IHRoaXMuZGFzaFBheWxvYWRcbiAgbmV3VHguaW52YWxpZFRyYW5zYWN0aW9uID0gdGhpcy5pbnZhbGlkVHJhbnNhY3Rpb25cbiAgaWYgKGNvaW5zLmlzWmNhc2gobmV3VHgubmV0d29yaykpIHtcbiAgICBuZXdUeC52ZXJzaW9uR3JvdXBJZCA9IHRoaXMudmVyc2lvbkdyb3VwSWRcbiAgICBuZXdUeC5leHBpcnkgPSB0aGlzLmV4cGlyeVxuICB9XG4gIG5ld1R4LmlucyA9IHRoaXMuaW5zLm1hcChmdW5jdGlvbiAodHhJbikge1xuICAgIHJldHVybiB7XG4gICAgICBoYXNoOiB0eEluLmhhc2gsXG4gICAgICBpbmRleDogdHhJbi5pbmRleCxcbiAgICAgIHNjcmlwdDogdHhJbi5zY3JpcHQsXG4gICAgICBzZXF1ZW5jZTogdHhJbi5zZXF1ZW5jZSxcbiAgICAgIHdpdG5lc3M6IHR4SW4ud2l0bmVzc1xuICAgIH1cbiAgfSlcblxuICBuZXdUeC5vdXRzID0gdGhpcy5vdXRzLm1hcChmdW5jdGlvbiAodHhPdXQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2NyaXB0OiB0eE91dC5zY3JpcHQsXG4gICAgICB2YWx1ZTogdHhPdXQudmFsdWVcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG5ld1R4XG59XG5cbi8qKlxuICogSGFzaCB0cmFuc2FjdGlvbiBmb3Igc2lnbmluZyBhIHNwZWNpZmljIGlucHV0LlxuICpcbiAqIEJpdGNvaW4gdXNlcyBhIGRpZmZlcmVudCBoYXNoIGZvciBlYWNoIHNpZ25lZCB0cmFuc2FjdGlvbiBpbnB1dC5cbiAqIFRoaXMgbWV0aG9kIGNvcGllcyB0aGUgdHJhbnNhY3Rpb24sIG1ha2VzIHRoZSBuZWNlc3NhcnkgY2hhbmdlcyBiYXNlZCBvbiB0aGVcbiAqIGhhc2hUeXBlLCBhbmQgdGhlbiBoYXNoZXMgdGhlIHJlc3VsdC5cbiAqIFRoaXMgaGFzaCBjYW4gdGhlbiBiZSB1c2VkIHRvIHNpZ24gdGhlIHByb3ZpZGVkIHRyYW5zYWN0aW9uIGlucHV0LlxuICovXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuaGFzaEZvclNpZ25hdHVyZSA9IGZ1bmN0aW9uIChpbkluZGV4LCBwcmV2T3V0U2NyaXB0LCBoYXNoVHlwZSkge1xuICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuVUludDMyLCB0eXBlcy5CdWZmZXIsIC8qIHR5cGVzLlVJbnQ4ICovIHR5cGVzLk51bWJlciksIGFyZ3VtZW50cylcblxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvbWFzdGVyL3NyYy90ZXN0L3NpZ2hhc2hfdGVzdHMuY3BwI0wyOVxuICBpZiAoaW5JbmRleCA+PSB0aGlzLmlucy5sZW5ndGgpIHJldHVybiBPTkVcblxuICAvLyBpZ25vcmUgT1BfQ09ERVNFUEFSQVRPUlxuICB2YXIgb3VyU2NyaXB0ID0gYnNjcmlwdC5jb21waWxlKGJzY3JpcHQuZGVjb21waWxlKHByZXZPdXRTY3JpcHQpLmZpbHRlcihmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB4ICE9PSBvcGNvZGVzLk9QX0NPREVTRVBBUkFUT1JcbiAgfSkpXG5cbiAgdmFyIHR4VG1wID0gdGhpcy5jbG9uZSgpXG5cbiAgLy8gU0lHSEFTSF9OT05FOiBpZ25vcmUgYWxsIG91dHB1dHM/ICh3aWxkY2FyZCBwYXllZSlcbiAgaWYgKChoYXNoVHlwZSAmIDB4MWYpID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX05PTkUpIHtcbiAgICB0eFRtcC5vdXRzID0gW11cblxuICAgIC8vIGlnbm9yZSBzZXF1ZW5jZSBudW1iZXJzIChleGNlcHQgYXQgaW5JbmRleClcbiAgICB0eFRtcC5pbnMuZm9yRWFjaChmdW5jdGlvbiAoaW5wdXQsIGkpIHtcbiAgICAgIGlmIChpID09PSBpbkluZGV4KSByZXR1cm5cblxuICAgICAgaW5wdXQuc2VxdWVuY2UgPSAwXG4gICAgfSlcblxuICAvLyBTSUdIQVNIX1NJTkdMRTogaWdub3JlIGFsbCBvdXRwdXRzLCBleGNlcHQgYXQgdGhlIHNhbWUgaW5kZXg/XG4gIH0gZWxzZSBpZiAoKGhhc2hUeXBlICYgMHgxZikgPT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfU0lOR0xFKSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL21hc3Rlci9zcmMvdGVzdC9zaWdoYXNoX3Rlc3RzLmNwcCNMNjBcbiAgICBpZiAoaW5JbmRleCA+PSB0aGlzLm91dHMubGVuZ3RoKSByZXR1cm4gT05FXG5cbiAgICAvLyB0cnVuY2F0ZSBvdXRwdXRzIGFmdGVyXG4gICAgdHhUbXAub3V0cy5sZW5ndGggPSBpbkluZGV4ICsgMVxuXG4gICAgLy8gXCJibGFua1wiIG91dHB1dHMgYmVmb3JlXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbkluZGV4OyBpKyspIHtcbiAgICAgIHR4VG1wLm91dHNbaV0gPSBCTEFOS19PVVRQVVRcbiAgICB9XG5cbiAgICAvLyBpZ25vcmUgc2VxdWVuY2UgbnVtYmVycyAoZXhjZXB0IGF0IGluSW5kZXgpXG4gICAgdHhUbXAuaW5zLmZvckVhY2goZnVuY3Rpb24gKGlucHV0LCB5KSB7XG4gICAgICBpZiAoeSA9PT0gaW5JbmRleCkgcmV0dXJuXG5cbiAgICAgIGlucHV0LnNlcXVlbmNlID0gMFxuICAgIH0pXG4gIH1cblxuICAvLyBTSUdIQVNIX0FOWU9ORUNBTlBBWTogaWdub3JlIGlucHV0cyBlbnRpcmVseT9cbiAgaWYgKGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkpIHtcbiAgICB0eFRtcC5pbnMgPSBbdHhUbXAuaW5zW2luSW5kZXhdXVxuICAgIHR4VG1wLmluc1swXS5zY3JpcHQgPSBvdXJTY3JpcHRcblxuICAvLyBTSUdIQVNIX0FMTDogb25seSBpZ25vcmUgaW5wdXQgc2NyaXB0c1xuICB9IGVsc2Uge1xuICAgIC8vIFwiYmxhbmtcIiBvdGhlcnMgaW5wdXQgc2NyaXB0c1xuICAgIHR4VG1wLmlucy5mb3JFYWNoKGZ1bmN0aW9uIChpbnB1dCkgeyBpbnB1dC5zY3JpcHQgPSBFTVBUWV9TQ1JJUFQgfSlcbiAgICB0eFRtcC5pbnNbaW5JbmRleF0uc2NyaXB0ID0gb3VyU2NyaXB0XG4gIH1cblxuICAvLyBzZXJpYWxpemUgYW5kIGhhc2hcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0eFRtcC5fX2J5dGVMZW5ndGgoZmFsc2UpICsgNClcbiAgYnVmZmVyLndyaXRlSW50MzJMRShoYXNoVHlwZSwgYnVmZmVyLmxlbmd0aCAtIDQpXG4gIHR4VG1wLl9fdG9CdWZmZXIoYnVmZmVyLCAwLCBmYWxzZSlcblxuICByZXR1cm4gYmNyeXB0by5oYXNoMjU2KGJ1ZmZlcilcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmhhc2hGb3JaSVAxNDMgPSBmdW5jdGlvbiAoaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIGhhc2hUeXBlKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy50dXBsZSh0eXBlcy5VSW50MzIsIHR5cGVzLkJ1ZmZlciwgdHlwZXMuU2F0b3NoaSwgdHlwZXMuVUludDMyKSwgYXJndW1lbnRzKVxuXG4gIHZhciB0YnVmZmVyLCB0b2Zmc2V0XG4gIGZ1bmN0aW9uIHdyaXRlU2xpY2UgKHNsaWNlKSB7IHRvZmZzZXQgKz0gc2xpY2UuY29weSh0YnVmZmVyLCB0b2Zmc2V0KSB9XG4gIGZ1bmN0aW9uIHdyaXRlVUludDMyIChpKSB7IHRvZmZzZXQgPSB0YnVmZmVyLndyaXRlVUludDMyTEUoaSwgdG9mZnNldCkgfVxuICBmdW5jdGlvbiB3cml0ZVVJbnQ2NCAoaSkgeyB0b2Zmc2V0ID0gYnVmZmVydXRpbHMud3JpdGVVSW50NjRMRSh0YnVmZmVyLCBpLCB0b2Zmc2V0KSB9XG4gIGZ1bmN0aW9uIHdyaXRlVmFySW50IChpKSB7XG4gICAgdmFydWludC5lbmNvZGUoaSwgdGJ1ZmZlciwgdG9mZnNldClcbiAgICB0b2Zmc2V0ICs9IHZhcnVpbnQuZW5jb2RlLmJ5dGVzXG4gIH1cbiAgZnVuY3Rpb24gd3JpdGVWYXJTbGljZSAoc2xpY2UpIHsgd3JpdGVWYXJJbnQoc2xpY2UubGVuZ3RoKTsgd3JpdGVTbGljZShzbGljZSkgfVxuXG4gIHZhciBoYXNoT3V0cHV0cyA9IFpFUk9cbiAgdmFyIGhhc2hQcmV2b3V0cyA9IFpFUk9cbiAgdmFyIGhhc2hTZXF1ZW5jZSA9IFpFUk9cbiAgdmFyIGhhc2hKb2luc3BsaXRzID0gWkVST1xuICB2YXIgaFxuXG4gIGlmICghKGhhc2hUeXBlICYgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTllPTkVDQU5QQVkpKSB7XG4gICAgdGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgzNiAqIHRoaXMuaW5zLmxlbmd0aClcbiAgICB0b2Zmc2V0ID0gMFxuXG4gICAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgICAgd3JpdGVTbGljZSh0eEluLmhhc2gpXG4gICAgICB3cml0ZVVJbnQzMih0eEluLmluZGV4KVxuICAgIH0pXG5cbiAgICBoID0gYmxha2UyYigzMiwgbnVsbCwgbnVsbCwgVHJhbnNhY3Rpb24uUFJFVk9VVFNfSEFTSF9QRVJTT04pXG4gICAgaC51cGRhdGUodGJ1ZmZlcilcbiAgICBoYXNoUHJldm91dHMgPSBCdWZmZXIuZnJvbShoLmRpZ2VzdCgpKVxuICB9XG5cbiAgaWYgKCEoaGFzaFR5cGUgJiBUcmFuc2FjdGlvbi5TSUdIQVNIX0FOWU9ORUNBTlBBWSkgJiZcbiAgICAgICAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiZcbiAgICAgICAoaGFzaFR5cGUgJiAweDFmKSAhPT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FKSB7XG4gICAgdGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg0ICogdGhpcy5pbnMubGVuZ3RoKVxuICAgIHRvZmZzZXQgPSAwXG5cbiAgICB0aGlzLmlucy5mb3JFYWNoKGZ1bmN0aW9uICh0eEluKSB7XG4gICAgICB3cml0ZVVJbnQzMih0eEluLnNlcXVlbmNlKVxuICAgIH0pXG5cbiAgICBoID0gYmxha2UyYigzMiwgbnVsbCwgbnVsbCwgVHJhbnNhY3Rpb24uU0VRVUVOQ0VfSEFTSF9QRVJTT04pXG4gICAgaC51cGRhdGUodGJ1ZmZlcilcbiAgICBoYXNoU2VxdWVuY2UgPSBCdWZmZXIuZnJvbShoLmRpZ2VzdCgpKVxuICB9XG5cbiAgaWYgKChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJlxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORSkge1xuICAgIHZhciB0eE91dHNTaXplID0gdGhpcy5vdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHtcbiAgICAgIHJldHVybiBzdW0gKyA4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpXG4gICAgfSwgMClcblxuICAgIHRidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUodHhPdXRzU2l6ZSlcbiAgICB0b2Zmc2V0ID0gMFxuXG4gICAgdGhpcy5vdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgICAgd3JpdGVVSW50NjQob3V0LnZhbHVlKVxuICAgICAgd3JpdGVWYXJTbGljZShvdXQuc2NyaXB0KVxuICAgIH0pXG5cbiAgICBoID0gYmxha2UyYigzMiwgbnVsbCwgbnVsbCwgVHJhbnNhY3Rpb24uT1VUUFVUU19IQVNIX1BFUlNPTilcbiAgICBoLnVwZGF0ZSh0YnVmZmVyKVxuICAgIGhhc2hPdXRwdXRzID0gQnVmZmVyLmZyb20oaC5kaWdlc3QoKSlcbiAgfSBlbHNlIGlmICgoaGFzaFR5cGUgJiAweDFmKSA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9TSU5HTEUgJiYgaW5JbmRleCA8IHRoaXMub3V0cy5sZW5ndGgpIHtcbiAgICB2YXIgb3V0cHV0ID0gdGhpcy5vdXRzW2luSW5kZXhdXG5cbiAgICB0YnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDggKyB2YXJTbGljZVNpemUob3V0cHV0LnNjcmlwdCkpXG4gICAgdG9mZnNldCA9IDBcbiAgICB3cml0ZVVJbnQ2NChvdXRwdXQudmFsdWUpXG4gICAgd3JpdGVWYXJTbGljZShvdXRwdXQuc2NyaXB0KVxuXG4gICAgaCA9IGJsYWtlMmIoMzIsIG51bGwsIG51bGwsIFRyYW5zYWN0aW9uLk9VVFBVVFNfSEFTSF9QRVJTT04pXG4gICAgaC51cGRhdGUodGJ1ZmZlcilcbiAgICBoYXNoT3V0cHV0cyA9IEJ1ZmZlci5mcm9tKGguZGlnZXN0KCkpXG4gIH1cblxuICB0YnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDE5NiArIHZhclNsaWNlU2l6ZShwcmV2T3V0U2NyaXB0KSlcbiAgdG9mZnNldCA9IDBcblxuICB2YXIgaW5wdXQgPSB0aGlzLmluc1tpbkluZGV4XVxuICB3cml0ZVVJbnQzMih0aGlzLnZlcnNpb24gKyAweDgwMDAwMDAwKVxuICB3cml0ZVVJbnQzMih0aGlzLnZlcnNpb25Hcm91cElkKVxuICB3cml0ZVNsaWNlKGhhc2hQcmV2b3V0cylcbiAgd3JpdGVTbGljZShoYXNoU2VxdWVuY2UpXG4gIHdyaXRlU2xpY2UoaGFzaE91dHB1dHMpXG4gIHdyaXRlU2xpY2UoaGFzaEpvaW5zcGxpdHMpXG4gIHdyaXRlVUludDMyKHRoaXMubG9ja3RpbWUpXG4gIHdyaXRlVUludDMyKHRoaXMuZXhwaXJ5KVxuICB3cml0ZVVJbnQzMihoYXNoVHlwZSlcbiAgd3JpdGVTbGljZShpbnB1dC5oYXNoKVxuICB3cml0ZVVJbnQzMihpbnB1dC5pbmRleClcbiAgd3JpdGVWYXJTbGljZShwcmV2T3V0U2NyaXB0KVxuICB3cml0ZVVJbnQ2NCh2YWx1ZSlcbiAgd3JpdGVVSW50MzIoaW5wdXQuc2VxdWVuY2UpXG4gIGggPSBibGFrZTJiKDMyLCBudWxsLCBudWxsLCBUcmFuc2FjdGlvbi5PVkVSV0lOVEVSX0hBU0hfUEVSU09OKVxuICBoLnVwZGF0ZSh0YnVmZmVyKVxuICByZXR1cm4gQnVmZmVyLmZyb20oaC5kaWdlc3QoJ2hleCcpLCAnaGV4Jylcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmhhc2hGb3JXaXRuZXNzVjAgPSBmdW5jdGlvbiAoaW5JbmRleCwgcHJldk91dFNjcmlwdCwgdmFsdWUsIGhhc2hUeXBlKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy50dXBsZSh0eXBlcy5VSW50MzIsIHR5cGVzLkJ1ZmZlciwgdHlwZXMuU2F0b3NoaSwgdHlwZXMuVUludDMyKSwgYXJndW1lbnRzKVxuXG4gIHZhciB0YnVmZmVyLCB0b2Zmc2V0XG4gIGZ1bmN0aW9uIHdyaXRlU2xpY2UgKHNsaWNlKSB7IHRvZmZzZXQgKz0gc2xpY2UuY29weSh0YnVmZmVyLCB0b2Zmc2V0KSB9XG4gIGZ1bmN0aW9uIHdyaXRlVUludDMyIChpKSB7IHRvZmZzZXQgPSB0YnVmZmVyLndyaXRlVUludDMyTEUoaSwgdG9mZnNldCkgfVxuICBmdW5jdGlvbiB3cml0ZVVJbnQ2NCAoaSkgeyB0b2Zmc2V0ID0gYnVmZmVydXRpbHMud3JpdGVVSW50NjRMRSh0YnVmZmVyLCBpLCB0b2Zmc2V0KSB9XG4gIGZ1bmN0aW9uIHdyaXRlVmFySW50IChpKSB7XG4gICAgdmFydWludC5lbmNvZGUoaSwgdGJ1ZmZlciwgdG9mZnNldClcbiAgICB0b2Zmc2V0ICs9IHZhcnVpbnQuZW5jb2RlLmJ5dGVzXG4gIH1cbiAgZnVuY3Rpb24gd3JpdGVWYXJTbGljZSAoc2xpY2UpIHsgd3JpdGVWYXJJbnQoc2xpY2UubGVuZ3RoKTsgd3JpdGVTbGljZShzbGljZSkgfVxuXG4gIHZhciBoYXNoT3V0cHV0cyA9IFpFUk9cbiAgdmFyIGhhc2hQcmV2b3V0cyA9IFpFUk9cbiAgdmFyIGhhc2hTZXF1ZW5jZSA9IFpFUk9cblxuICBpZiAoIShoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSkge1xuICAgIHRidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMzYgKiB0aGlzLmlucy5sZW5ndGgpXG4gICAgdG9mZnNldCA9IDBcblxuICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgIHdyaXRlU2xpY2UodHhJbi5oYXNoKVxuICAgICAgd3JpdGVVSW50MzIodHhJbi5pbmRleClcbiAgICB9KVxuXG4gICAgaGFzaFByZXZvdXRzID0gYmNyeXB0by5oYXNoMjU2KHRidWZmZXIpXG4gIH1cblxuICBpZiAoIShoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZKSAmJlxuICAgICAgIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJlxuICAgICAgIChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX05PTkUpIHtcbiAgICB0YnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDQgKiB0aGlzLmlucy5sZW5ndGgpXG4gICAgdG9mZnNldCA9IDBcblxuICAgIHRoaXMuaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICAgIHdyaXRlVUludDMyKHR4SW4uc2VxdWVuY2UpXG4gICAgfSlcblxuICAgIGhhc2hTZXF1ZW5jZSA9IGJjcnlwdG8uaGFzaDI1Nih0YnVmZmVyKVxuICB9XG5cbiAgaWYgKChoYXNoVHlwZSAmIDB4MWYpICE9PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJlxuICAgICAgKGhhc2hUeXBlICYgMHgxZikgIT09IFRyYW5zYWN0aW9uLlNJR0hBU0hfTk9ORSkge1xuICAgIHZhciB0eE91dHNTaXplID0gdGhpcy5vdXRzLnJlZHVjZShmdW5jdGlvbiAoc3VtLCBvdXRwdXQpIHtcbiAgICAgIHJldHVybiBzdW0gKyA4ICsgdmFyU2xpY2VTaXplKG91dHB1dC5zY3JpcHQpXG4gICAgfSwgMClcblxuICAgIHRidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUodHhPdXRzU2l6ZSlcbiAgICB0b2Zmc2V0ID0gMFxuXG4gICAgdGhpcy5vdXRzLmZvckVhY2goZnVuY3Rpb24gKG91dCkge1xuICAgICAgd3JpdGVVSW50NjQob3V0LnZhbHVlKVxuICAgICAgd3JpdGVWYXJTbGljZShvdXQuc2NyaXB0KVxuICAgIH0pXG5cbiAgICBoYXNoT3V0cHV0cyA9IGJjcnlwdG8uaGFzaDI1Nih0YnVmZmVyKVxuICB9IGVsc2UgaWYgKChoYXNoVHlwZSAmIDB4MWYpID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSAmJiBpbkluZGV4IDwgdGhpcy5vdXRzLmxlbmd0aCkge1xuICAgIHZhciBvdXRwdXQgPSB0aGlzLm91dHNbaW5JbmRleF1cblxuICAgIHRidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoOCArIHZhclNsaWNlU2l6ZShvdXRwdXQuc2NyaXB0KSlcbiAgICB0b2Zmc2V0ID0gMFxuICAgIHdyaXRlVUludDY0KG91dHB1dC52YWx1ZSlcbiAgICB3cml0ZVZhclNsaWNlKG91dHB1dC5zY3JpcHQpXG5cbiAgICBoYXNoT3V0cHV0cyA9IGJjcnlwdG8uaGFzaDI1Nih0YnVmZmVyKVxuICB9XG5cbiAgdGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNTYgKyB2YXJTbGljZVNpemUocHJldk91dFNjcmlwdCkpXG4gIHRvZmZzZXQgPSAwXG5cbiAgdmFyIGlucHV0ID0gdGhpcy5pbnNbaW5JbmRleF1cbiAgd3JpdGVVSW50MzIodGhpcy52ZXJzaW9uKVxuICB3cml0ZVNsaWNlKGhhc2hQcmV2b3V0cylcbiAgd3JpdGVTbGljZShoYXNoU2VxdWVuY2UpXG4gIHdyaXRlU2xpY2UoaW5wdXQuaGFzaClcbiAgd3JpdGVVSW50MzIoaW5wdXQuaW5kZXgpXG4gIHdyaXRlVmFyU2xpY2UocHJldk91dFNjcmlwdClcbiAgd3JpdGVVSW50NjQodmFsdWUpXG4gIHdyaXRlVUludDMyKGlucHV0LnNlcXVlbmNlKVxuICB3cml0ZVNsaWNlKGhhc2hPdXRwdXRzKVxuICB3cml0ZVVJbnQzMih0aGlzLmxvY2t0aW1lKVxuICB3cml0ZVVJbnQzMihoYXNoVHlwZSlcbiAgcmV0dXJuIGJjcnlwdG8uaGFzaDI1Nih0YnVmZmVyKVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuZ2V0SGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGJjcnlwdG8uaGFzaDI1Nih0aGlzLl9fdG9CdWZmZXIodW5kZWZpbmVkLCB1bmRlZmluZWQsIGZhbHNlKSlcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmdldElkID0gZnVuY3Rpb24gKCkge1xuICAvLyB0cmFuc2FjdGlvbiBoYXNoJ3MgYXJlIGRpc3BsYXllZCBpbiByZXZlcnNlIG9yZGVyXG4gIHJldHVybiB0aGlzLmdldEhhc2goKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS50b0J1ZmZlciA9IGZ1bmN0aW9uIChidWZmZXIsIGluaXRpYWxPZmZzZXQpIHtcbiAgcmV0dXJuIHRoaXMuX190b0J1ZmZlcihidWZmZXIsIGluaXRpYWxPZmZzZXQsIHRydWUpXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS5fX3RvQnVmZmVyID0gZnVuY3Rpb24gKGJ1ZmZlciwgaW5pdGlhbE9mZnNldCwgX19hbGxvd1dpdG5lc3MpIHtcbiAgaWYgKCFidWZmZXIpIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLl9fYnl0ZUxlbmd0aChfX2FsbG93V2l0bmVzcykpXG5cbiAgdmFyIG9mZnNldCA9IGluaXRpYWxPZmZzZXQgfHwgMFxuICBmdW5jdGlvbiB3cml0ZVNsaWNlIChzbGljZSkgeyBvZmZzZXQgKz0gc2xpY2UuY29weShidWZmZXIsIG9mZnNldCkgfVxuICBmdW5jdGlvbiB3cml0ZVVJbnQ4IChpKSB7IG9mZnNldCA9IGJ1ZmZlci53cml0ZVVJbnQ4KGksIG9mZnNldCkgfVxuICBmdW5jdGlvbiB3cml0ZVVJbnQzMiAoaSkgeyBvZmZzZXQgPSBidWZmZXIud3JpdGVVSW50MzJMRShpLCBvZmZzZXQpIH1cbiAgZnVuY3Rpb24gd3JpdGVJbnQxNiAoaSkgeyBvZmZzZXQgPSBidWZmZXIud3JpdGVJbnQxNkxFKGksIG9mZnNldCkgfVxuICBmdW5jdGlvbiB3cml0ZUludDMyIChpKSB7IG9mZnNldCA9IGJ1ZmZlci53cml0ZUludDMyTEUoaSwgb2Zmc2V0KSB9XG4gIGZ1bmN0aW9uIHdyaXRlVUludDY0IChpKSB7IG9mZnNldCA9IGJ1ZmZlcnV0aWxzLndyaXRlVUludDY0TEUoYnVmZmVyLCBpLCBvZmZzZXQpIH1cbiAgZnVuY3Rpb24gd3JpdGVWYXJJbnQgKGkpIHtcbiAgICB2YXJ1aW50LmVuY29kZShpLCBidWZmZXIsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gdmFydWludC5lbmNvZGUuYnl0ZXNcbiAgfVxuICBmdW5jdGlvbiB3cml0ZVZhclNsaWNlIChzbGljZSkgeyB3cml0ZVZhckludChzbGljZS5sZW5ndGgpOyB3cml0ZVNsaWNlKHNsaWNlKSB9XG4gIGZ1bmN0aW9uIHdyaXRlVmVjdG9yICh2ZWN0b3IpIHsgd3JpdGVWYXJJbnQodmVjdG9yLmxlbmd0aCk7IHZlY3Rvci5mb3JFYWNoKHdyaXRlVmFyU2xpY2UpIH1cblxuICBmdW5jdGlvbiB3cml0ZUNvbXByZXNzZWRHMSAoaSkge1xuICAgIHdyaXRlVUludDgoVHJhbnNhY3Rpb24uWkNBU0hfRzFfUFJFRklYX01BU0sgfCBpLnlMc2IpXG4gICAgd3JpdGVTbGljZShpLngpXG4gIH1cblxuICBmdW5jdGlvbiB3cml0ZUNvbXByZXNzZWRHMiAoaSkge1xuICAgIHdyaXRlVUludDgoVHJhbnNhY3Rpb24uWkNBU0hfRzJfUFJFRklYX01BU0sgfCBpLnlMc2IpXG4gICAgd3JpdGVTbGljZShpLngpXG4gIH1cblxuICAvLyB6Y2FzaCBzYXBsaW5nXG4gIGZ1bmN0aW9uIHdyaXRlU3BlbnREZXNjIChpKSB7XG4gICAgd3JpdGVTbGljZShpLmN2KTtcbiAgICB3cml0ZVNsaWNlKGkuYW5jaG9yKTtcbiAgICB3cml0ZVNsaWNlKGkubnVsbGlmaWVyKTtcbiAgICB3cml0ZVNsaWNlKGkucmspO1xuICAgIHdyaXRlU2xpY2UoaS5wcm9vZik7XG4gICAgd3JpdGVTbGljZShpLnNwZW5kQXV0aFNpZyk7XG4gIH1cblxuICBmdW5jdGlvbiB3cml0ZU91dHB1dERlc2MgKGkpIHtcbiAgICB3cml0ZVNsaWNlKGkuY3YpO1xuICAgIHdyaXRlU2xpY2UoaS5jbXUpO1xuICAgIHdyaXRlU2xpY2UoaS5lcGhlbWVyYWxLZXkpO1xuICAgIHdyaXRlU2xpY2UoaS5lbmNDaXBoZXJUZXh0KTtcbiAgICB3cml0ZVNsaWNlKGkub3V0Q2lwaGVyVGV4dCk7XG4gICAgd3JpdGVTbGljZShpLnByb29mKTtcbiAgfVxuXG4gIGlmICh0aGlzLmlzT3ZlcndpbnRlckNvbXBhdGlibGUoKSkge1xuICAgIHdyaXRlSW50MzIodGhpcy52ZXJzaW9uIHwgKDEgPDwgMzEpKVxuICAgIHdyaXRlVUludDMyKHRoaXMudmVyc2lvbkdyb3VwSWQpXG4gIH0gZWxzZSBpZih0aGlzLmlzRGFzaFNwZWNpYWxUcmFuc2FjdGlvbigpKSB7XG4gICAgd3JpdGVJbnQxNih0aGlzLnZlcnNpb24pXG4gICAgd3JpdGVJbnQxNih0aGlzLmRhc2hUeXBlKVxuICB9IGVsc2Uge1xuICAgIHdyaXRlSW50MzIodGhpcy52ZXJzaW9uKVxuICB9XG5cbiAgdmFyIGhhc1dpdG5lc3NlcyA9IF9fYWxsb3dXaXRuZXNzICYmIHRoaXMuaGFzV2l0bmVzc2VzKClcblxuICBpZiAoaGFzV2l0bmVzc2VzKSB7XG4gICAgd3JpdGVVSW50OChUcmFuc2FjdGlvbi5BRFZBTkNFRF9UUkFOU0FDVElPTl9NQVJLRVIpXG4gICAgd3JpdGVVSW50OChUcmFuc2FjdGlvbi5BRFZBTkNFRF9UUkFOU0FDVElPTl9GTEFHKVxuICB9XG5cbiAgaWYgKHRoaXMudGltZXN0YW1wKSB7XG4gICAgd3JpdGVVSW50MzIodGhpcy50aW1lc3RhbXApXG4gIH1cblxuICB3cml0ZVZhckludCh0aGlzLmlucy5sZW5ndGgpXG5cbiAgdGhpcy5pbnMuZm9yRWFjaChmdW5jdGlvbiAodHhJbikge1xuICAgIHdyaXRlU2xpY2UodHhJbi5oYXNoKVxuICAgIHdyaXRlVUludDMyKHR4SW4uaW5kZXgpXG4gICAgd3JpdGVWYXJTbGljZSh0eEluLnNjcmlwdClcbiAgICB3cml0ZVVJbnQzMih0eEluLnNlcXVlbmNlKVxuICB9KVxuXG4gIHdyaXRlVmFySW50KHRoaXMub3V0cy5sZW5ndGgpXG4gIHRoaXMub3V0cy5mb3JFYWNoKGZ1bmN0aW9uICh0eE91dCkge1xuICAgIGlmICghdHhPdXQudmFsdWVCdWZmZXIpIHtcbiAgICAgIHdyaXRlVUludDY0KHR4T3V0LnZhbHVlKVxuICAgIH0gZWxzZSB7XG4gICAgICB3cml0ZVNsaWNlKHR4T3V0LnZhbHVlQnVmZmVyKVxuICAgIH1cblxuICAgIHdyaXRlVmFyU2xpY2UodHhPdXQuc2NyaXB0KVxuICB9KVxuXG4gIGlmIChoYXNXaXRuZXNzZXMpIHtcbiAgICB0aGlzLmlucy5mb3JFYWNoKGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgd3JpdGVWZWN0b3IoaW5wdXQud2l0bmVzcylcbiAgICB9KVxuICB9XG5cbiAgd3JpdGVVSW50MzIodGhpcy5sb2NrdGltZSlcblxuICBpZiAodGhpcy5pc092ZXJ3aW50ZXJDb21wYXRpYmxlKCkpIHtcbiAgICB3cml0ZVVJbnQzMih0aGlzLmV4cGlyeSlcbiAgfVxuXG4gIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSkge1xuICAgIHdyaXRlVUludDY0KHRoaXMudmFsdWVCYWxhbmNlKTtcbiAgICB3cml0ZVZhckludCh0aGlzLnNwZW5kRGVzY3MubGVuZ3RoKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuc3BlbmREZXNjcy5sZW5ndGg7IGkrKykge1xuICAgICAgd3JpdGVTcGVudERlc2ModGhpcy5zcGVuZERlc2NzW2ldKTtcbiAgICB9XG4gICAgd3JpdGVWYXJJbnQodGhpcy5vdXRwdXREZXNjcy5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vdXRwdXREZXNjcy5sZW5ndGg7IGkrKykge1xuICAgICAgd3JpdGVPdXRwdXREZXNjKHRoaXMub3V0cHV0RGVzY3NbaV0pO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLnN1cHBvcnRzSm9pblNwbGl0cygpKSB7XG4gICAgd3JpdGVWYXJJbnQodGhpcy5qb2luc3BsaXRzLmxlbmd0aClcbiAgICB2YXIgdmVyc2lvbiA9IHRoaXMudmVyc2lvbjtcbiAgICB0aGlzLmpvaW5zcGxpdHMuZm9yRWFjaChmdW5jdGlvbiAoam9pbnNwbGl0KSB7XG4gICAgICB3cml0ZVVJbnQ2NChqb2luc3BsaXQudnB1Yk9sZClcbiAgICAgIHdyaXRlVUludDY0KGpvaW5zcGxpdC52cHViTmV3KVxuICAgICAgd3JpdGVTbGljZShqb2luc3BsaXQuYW5jaG9yKVxuICAgICAgam9pbnNwbGl0Lm51bGxpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobnVsbGlmaWVyKSB7XG4gICAgICAgIHdyaXRlU2xpY2UobnVsbGlmaWVyKVxuICAgICAgfSlcbiAgICAgIGpvaW5zcGxpdC5jb21taXRtZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChudWxsaWZpZXIpIHtcbiAgICAgICAgd3JpdGVTbGljZShudWxsaWZpZXIpXG4gICAgICB9KVxuICAgICAgd3JpdGVTbGljZShqb2luc3BsaXQuZXBoZW1lcmFsS2V5KVxuICAgICAgd3JpdGVTbGljZShqb2luc3BsaXQucmFuZG9tU2VlZClcbiAgICAgIGpvaW5zcGxpdC5tYWNzLmZvckVhY2goZnVuY3Rpb24gKG51bGxpZmllcikge1xuICAgICAgICB3cml0ZVNsaWNlKG51bGxpZmllcilcbiAgICAgIH0pXG4gICAgICBpZiAodmVyc2lvbiA8PSAzKSB7XG4gICAgICAgIHdyaXRlQ29tcHJlc3NlZEcxKGpvaW5zcGxpdC56cHJvb2YuZ0EpXG4gICAgICAgIHdyaXRlQ29tcHJlc3NlZEcxKGpvaW5zcGxpdC56cHJvb2YuZ0FQcmltZSlcbiAgICAgICAgd3JpdGVDb21wcmVzc2VkRzIoam9pbnNwbGl0Lnpwcm9vZi5nQilcbiAgICAgICAgd3JpdGVDb21wcmVzc2VkRzEoam9pbnNwbGl0Lnpwcm9vZi5nQlByaW1lKVxuICAgICAgICB3cml0ZUNvbXByZXNzZWRHMShqb2luc3BsaXQuenByb29mLmdDKVxuICAgICAgICB3cml0ZUNvbXByZXNzZWRHMShqb2luc3BsaXQuenByb29mLmdDUHJpbWUpXG4gICAgICAgIHdyaXRlQ29tcHJlc3NlZEcxKGpvaW5zcGxpdC56cHJvb2YuZ0spXG4gICAgICAgIHdyaXRlQ29tcHJlc3NlZEcxKGpvaW5zcGxpdC56cHJvb2YuZ0gpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3cml0ZVNsaWNlKGpvaW5zcGxpdC56cHJvb2Yuc0EpXG4gICAgICAgIHdyaXRlU2xpY2Uoam9pbnNwbGl0Lnpwcm9vZi5zQilcbiAgICAgICAgd3JpdGVTbGljZShqb2luc3BsaXQuenByb29mLnNDKVxuICAgICAgfVxuICAgICAgam9pbnNwbGl0LmNpcGhlcnRleHRzLmZvckVhY2goZnVuY3Rpb24gKGNpcGhlcnRleHQpIHtcbiAgICAgICAgd3JpdGVTbGljZShjaXBoZXJ0ZXh0KVxuICAgICAgfSlcbiAgICB9KVxuICAgIGlmICh0aGlzLmpvaW5zcGxpdHMubGVuZ3RoID4gMCkge1xuICAgICAgd3JpdGVTbGljZSh0aGlzLmpvaW5zcGxpdFB1YmtleSlcbiAgICAgIHdyaXRlU2xpY2UodGhpcy5qb2luc3BsaXRTaWcpXG4gICAgfVxuICAgIGlmICh0aGlzLmlzU2FwbGluZ0NvbXBhdGlibGUoKSAmJiAoKHRoaXMuc3BlbmREZXNjcy5sZW5ndGggKyB0aGlzLm91dHB1dERlc2NzLmxlbmd0aCkgPiAwKSkge1xuICAgICAgd3JpdGVTbGljZSh0aGlzLmJpbmRpbmdTaWcpO1xuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLmlzRGFzaFNwZWNpYWxUcmFuc2FjdGlvbigpKSB7XG4gICAgd3JpdGVWYXJTbGljZSh0aGlzLmRhc2hQYXlsb2FkKVxuICB9XG5cbiAgLy8gYXZvaWQgc2xpY2luZyB1bmxlc3MgbmVjZXNzYXJ5XG4gIGlmIChpbml0aWFsT2Zmc2V0ICE9PSB1bmRlZmluZWQpIHJldHVybiBidWZmZXIuc2xpY2UoaW5pdGlhbE9mZnNldCwgb2Zmc2V0KVxuICByZXR1cm4gYnVmZmVyXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS50b0hleCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMudG9CdWZmZXIoKS50b1N0cmluZygnaGV4Jylcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLnNldElucHV0U2NyaXB0ID0gZnVuY3Rpb24gKGluZGV4LCBzY3JpcHRTaWcpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKHR5cGVzLk51bWJlciwgdHlwZXMuQnVmZmVyKSwgYXJndW1lbnRzKVxuXG4gIHRoaXMuaW5zW2luZGV4XS5zY3JpcHQgPSBzY3JpcHRTaWdcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLnNldFdpdG5lc3MgPSBmdW5jdGlvbiAoaW5kZXgsIHdpdG5lc3MpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKHR5cGVzLk51bWJlciwgW3R5cGVzLkJ1ZmZlcl0pLCBhcmd1bWVudHMpXG5cbiAgdGhpcy5pbnNbaW5kZXhdLndpdG5lc3MgPSB3aXRuZXNzXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS5nZXRFeHRyYURhdGEgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLnN1cHBvcnRzSm9pblNwbGl0cygpKSB7XG4gICAgdmFyIGJ1ZmZlciA9IHRoaXMudG9CdWZmZXIoKVxuICAgIHZhciBqb2luc3BsaXRCeXRlTGVuZ3RoID0gdGhpcy5qb2luc3BsaXRCeXRlTGVuZ3RoKClcbiAgICB2YXIgcmVzID0gYnVmZmVyLnNsaWNlKGJ1ZmZlci5sZW5ndGggLSBqb2luc3BsaXRCeXRlTGVuZ3RoKVxuICAgIHJldHVybiByZXNcbiAgfVxuICAvLyBpZiAoY29pbnMuaXNEYXNoKHRoaXMubmV0d29yaykgJiYgdGhpcy5kYXNoUGF5bG9hZCkge1xuICBpZiAodGhpcy5pc0Rhc2hTcGVjaWFsVHJhbnNhY3Rpb24oKSkge1xuICAgIHZhciBleHRyYURhdGFMZW5ndGggPSB2YXJ1aW50LmVuY29kZSh0aGlzLmRhc2hQYXlsb2FkLmxlbmd0aClcbiAgICByZXR1cm4gQnVmZmVyLmNvbmNhdChbZXh0cmFEYXRhTGVuZ3RoLCB0aGlzLmRhc2hQYXlsb2FkXSk7XG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmlzWmNhc2hUcmFuc2FjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNvaW5zLmlzWmNhc2godGhpcy5uZXR3b3JrKVxufVxuXG5UcmFuc2FjdGlvbi5wcm90b3R5cGUuaXNTYXBsaW5nQ29tcGF0aWJsZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNvaW5zLmlzWmNhc2godGhpcy5uZXR3b3JrKSAmJiB0aGlzLnZlcnNpb24gPj0gVHJhbnNhY3Rpb24uWkNBU0hfU0FQTElOR19WRVJTSU9OXG59XG5cblRyYW5zYWN0aW9uLnByb3RvdHlwZS5pc092ZXJ3aW50ZXJDb21wYXRpYmxlID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY29pbnMuaXNaY2FzaCh0aGlzLm5ldHdvcmspICYmIHRoaXMudmVyc2lvbiA+PSBUcmFuc2FjdGlvbi5aQ0FTSF9PVkVSV0lOVEVSX1ZFUlNJT05cbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLnN1cHBvcnRzSm9pblNwbGl0cyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNvaW5zLmlzWmNhc2godGhpcy5uZXR3b3JrKSAmJiB0aGlzLnZlcnNpb24gPj0gVHJhbnNhY3Rpb24uWkNBU0hfSk9JTlNQTElUU19TVVBQT1JUX1ZFUlNJT05cbn1cblxuVHJhbnNhY3Rpb24ucHJvdG90eXBlLmlzRGFzaFNwZWNpYWxUcmFuc2FjdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGNvaW5zLmlzRGFzaCh0aGlzLm5ldHdvcmspICYmIHRoaXMudmVyc2lvbiA9PT0gMyAmJiB0aGlzLmRhc2hUeXBlICE9PSBUcmFuc2FjdGlvbi5EQVNIX05PUk1BTFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zYWN0aW9uXG4iLCJ2YXIgYmFkZHJlc3MgPSByZXF1aXJlKCcuL2FkZHJlc3MnKVxudmFyIGJjcnlwdG8gPSByZXF1aXJlKCcuL2NyeXB0bycpXG52YXIgZWNkc2EgPSByZXF1aXJlKCcuL2VjZHNhJylcbnZhciByYW5kb21CeXRlcyA9IHJlcXVpcmUoJ3JhbmRvbWJ5dGVzJylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpXG52YXIgd2lmID0gcmVxdWlyZSgnd2lmJylcblxudmFyIE5FVFdPUktTID0gcmVxdWlyZSgnLi9uZXR3b3JrcycpXG52YXIgQmlnSW50ZWdlciA9IHJlcXVpcmUoJ2JpZ2knKVxuXG52YXIgZWN1cnZlID0gcmVxdWlyZSgnZWN1cnZlJylcbnZhciBzZWNwMjU2azEgPSBlY2RzYS5fX2N1cnZlXG5cbmZ1bmN0aW9uIEVDUGFpciAoZCwgUSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIHR5cGVmb3JjZSh7XG4gICAgICBjb21wcmVzc2VkOiB0eXBlcy5tYXliZSh0eXBlcy5Cb29sZWFuKSxcbiAgICAgIG5ldHdvcms6IHR5cGVzLm1heWJlKHR5cGVzLk5ldHdvcmspXG4gICAgfSwgb3B0aW9ucylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cbiAgaWYgKGQpIHtcbiAgICBpZiAoZC5zaWdudW0oKSA8PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ1ByaXZhdGUga2V5IG11c3QgYmUgZ3JlYXRlciB0aGFuIDAnKVxuICAgIGlmIChkLmNvbXBhcmVUbyhzZWNwMjU2azEubikgPj0gMCkgdGhyb3cgbmV3IEVycm9yKCdQcml2YXRlIGtleSBtdXN0IGJlIGxlc3MgdGhhbiB0aGUgY3VydmUgb3JkZXInKVxuICAgIGlmIChRKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmV4cGVjdGVkIHB1YmxpY0tleSBwYXJhbWV0ZXInKVxuXG4gICAgdGhpcy5kID0gZFxuICB9IGVsc2Uge1xuICAgIHR5cGVmb3JjZSh0eXBlcy5FQ1BvaW50LCBRKVxuXG4gICAgdGhpcy5fX1EgPSBRXG4gIH1cblxuICB0aGlzLmNvbXByZXNzZWQgPSBvcHRpb25zLmNvbXByZXNzZWQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBvcHRpb25zLmNvbXByZXNzZWRcbiAgdGhpcy5uZXR3b3JrID0gb3B0aW9ucy5uZXR3b3JrIHx8IE5FVFdPUktTLmJpdGNvaW5cbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KEVDUGFpci5wcm90b3R5cGUsICdRJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIXRoaXMuX19RICYmIHRoaXMuZCkge1xuICAgICAgdGhpcy5fX1EgPSBzZWNwMjU2azEuRy5tdWx0aXBseSh0aGlzLmQpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX19RXG4gIH1cbn0pXG5cbkVDUGFpci5mcm9tUHVibGljS2V5QnVmZmVyID0gZnVuY3Rpb24gKGJ1ZmZlciwgbmV0d29yaykge1xuICB2YXIgUSA9IGVjdXJ2ZS5Qb2ludC5kZWNvZGVGcm9tKHNlY3AyNTZrMSwgYnVmZmVyKVxuXG4gIHJldHVybiBuZXcgRUNQYWlyKG51bGwsIFEsIHtcbiAgICBjb21wcmVzc2VkOiBRLmNvbXByZXNzZWQsXG4gICAgbmV0d29yazogbmV0d29ya1xuICB9KVxufVxuXG5FQ1BhaXIuZnJvbVdJRiA9IGZ1bmN0aW9uIChzdHJpbmcsIG5ldHdvcmspIHtcbiAgdmFyIGRlY29kZWQgPSB3aWYuZGVjb2RlKHN0cmluZylcbiAgdmFyIHZlcnNpb24gPSBkZWNvZGVkLnZlcnNpb25cblxuICAvLyBsaXN0IG9mIG5ldHdvcmtzP1xuICBpZiAodHlwZXMuQXJyYXkobmV0d29yaykpIHtcbiAgICBuZXR3b3JrID0gbmV0d29yay5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiB2ZXJzaW9uID09PSB4LndpZlxuICAgIH0pLnBvcCgpXG5cbiAgICBpZiAoIW5ldHdvcmspIHRocm93IG5ldyBFcnJvcignVW5rbm93biBuZXR3b3JrIHZlcnNpb24nKVxuXG4gIC8vIG90aGVyd2lzZSwgYXNzdW1lIGEgbmV0d29yayBvYmplY3QgKG9yIGRlZmF1bHQgdG8gYml0Y29pbilcbiAgfSBlbHNlIHtcbiAgICBuZXR3b3JrID0gbmV0d29yayB8fCBORVRXT1JLUy5iaXRjb2luXG5cbiAgICBpZiAodmVyc2lvbiAhPT0gbmV0d29yay53aWYpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBuZXR3b3JrIHZlcnNpb24nKVxuICB9XG5cbiAgdmFyIGQgPSBCaWdJbnRlZ2VyLmZyb21CdWZmZXIoZGVjb2RlZC5wcml2YXRlS2V5KVxuXG4gIHJldHVybiBuZXcgRUNQYWlyKGQsIG51bGwsIHtcbiAgICBjb21wcmVzc2VkOiBkZWNvZGVkLmNvbXByZXNzZWQsXG4gICAgbmV0d29yazogbmV0d29ya1xuICB9KVxufVxuXG5FQ1BhaXIubWFrZVJhbmRvbSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cbiAgdmFyIHJuZyA9IG9wdGlvbnMucm5nIHx8IHJhbmRvbUJ5dGVzXG5cbiAgdmFyIGRcbiAgZG8ge1xuICAgIHZhciBidWZmZXIgPSBybmcoMzIpXG4gICAgdHlwZWZvcmNlKHR5cGVzLkJ1ZmZlcjI1NmJpdCwgYnVmZmVyKVxuXG4gICAgZCA9IEJpZ0ludGVnZXIuZnJvbUJ1ZmZlcihidWZmZXIpXG4gIH0gd2hpbGUgKGQuc2lnbnVtKCkgPD0gMCB8fCBkLmNvbXBhcmVUbyhzZWNwMjU2azEubikgPj0gMClcblxuICByZXR1cm4gbmV3IEVDUGFpcihkLCBudWxsLCBvcHRpb25zKVxufVxuXG5FQ1BhaXIucHJvdG90eXBlLmdldEFkZHJlc3MgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBiYWRkcmVzcy50b0Jhc2U1OENoZWNrKGJjcnlwdG8uaGFzaDE2MCh0aGlzLmdldFB1YmxpY0tleUJ1ZmZlcigpKSwgdGhpcy5nZXROZXR3b3JrKCkucHViS2V5SGFzaClcbn1cblxuRUNQYWlyLnByb3RvdHlwZS5nZXROZXR3b3JrID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5uZXR3b3JrXG59XG5cbkVDUGFpci5wcm90b3R5cGUuZ2V0UHVibGljS2V5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5RLmdldEVuY29kZWQodGhpcy5jb21wcmVzc2VkKVxufVxuXG5FQ1BhaXIucHJvdG90eXBlLnNpZ24gPSBmdW5jdGlvbiAoaGFzaCkge1xuICBpZiAoIXRoaXMuZCkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5JylcblxuICByZXR1cm4gZWNkc2Euc2lnbihoYXNoLCB0aGlzLmQpXG59XG5cbkVDUGFpci5wcm90b3R5cGUudG9XSUYgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICghdGhpcy5kKSB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJpdmF0ZSBrZXknKVxuXG4gIHJldHVybiB3aWYuZW5jb2RlKHRoaXMubmV0d29yay53aWYsIHRoaXMuZC50b0J1ZmZlcigzMiksIHRoaXMuY29tcHJlc3NlZClcbn1cblxuRUNQYWlyLnByb3RvdHlwZS52ZXJpZnkgPSBmdW5jdGlvbiAoaGFzaCwgc2lnbmF0dXJlKSB7XG4gIHJldHVybiBlY2RzYS52ZXJpZnkoaGFzaCwgc2lnbmF0dXJlLCB0aGlzLlEpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gRUNQYWlyXG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBiZWNoMzIgPSByZXF1aXJlKCdiZWNoMzInKVxudmFyIGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpXG52YXIgYnNjcmlwdCA9IHJlcXVpcmUoJy4vc2NyaXB0JylcbnZhciBidGVtcGxhdGVzID0gcmVxdWlyZSgnLi90ZW1wbGF0ZXMnKVxudmFyIG5ldHdvcmtzID0gcmVxdWlyZSgnLi9uZXR3b3JrcycpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKVxuXG5mdW5jdGlvbiBmcm9tQmFzZTU4Q2hlY2sgKGFkZHJlc3MpIHtcbiAgdmFyIHBheWxvYWQgPSBiczU4Y2hlY2suZGVjb2RlKGFkZHJlc3MpXG5cbiAgLy8gVE9ETzogNC4wLjAsIG1vdmUgdG8gXCJ0b091dHB1dFNjcmlwdFwiXG4gIGlmIChwYXlsb2FkLmxlbmd0aCA8IDIxKSB0aHJvdyBuZXcgVHlwZUVycm9yKGFkZHJlc3MgKyAnIGlzIHRvbyBzaG9ydCcpXG4gIGlmIChwYXlsb2FkLmxlbmd0aCA+IDIyKSB0aHJvdyBuZXcgVHlwZUVycm9yKGFkZHJlc3MgKyAnIGlzIHRvbyBsb25nJylcblxuICB2YXIgbXVsdGlieXRlID0gcGF5bG9hZC5sZW5ndGggPT09IDIyXG4gIHZhciBvZmZzZXQgPSBtdWx0aWJ5dGUgPyAyIDogMVxuXG4gIHZhciB2ZXJzaW9uID0gbXVsdGlieXRlID8gcGF5bG9hZC5yZWFkVUludDE2QkUoMCkgOiBwYXlsb2FkLnJlYWRVSW50OCgwKVxuICB2YXIgaGFzaCA9IHBheWxvYWQuc2xpY2Uob2Zmc2V0KVxuXG4gIHJldHVybiB7IHZlcnNpb246IHZlcnNpb24sIGhhc2g6IGhhc2ggfVxufVxuXG5mdW5jdGlvbiBmcm9tQmVjaDMyIChhZGRyZXNzKSB7XG4gIHZhciByZXN1bHQgPSBiZWNoMzIuZGVjb2RlKGFkZHJlc3MpXG4gIHZhciBkYXRhID0gYmVjaDMyLmZyb21Xb3JkcyhyZXN1bHQud29yZHMuc2xpY2UoMSkpXG5cbiAgcmV0dXJuIHtcbiAgICB2ZXJzaW9uOiByZXN1bHQud29yZHNbMF0sXG4gICAgcHJlZml4OiByZXN1bHQucHJlZml4LFxuICAgIGRhdGE6IEJ1ZmZlci5mcm9tKGRhdGEpXG4gIH1cbn1cblxuZnVuY3Rpb24gdG9CYXNlNThDaGVjayAoaGFzaCwgdmVyc2lvbikge1xuICB0eXBlZm9yY2UodHlwZXMudHVwbGUodHlwZXMuSGFzaDE2MGJpdCwgdHlwZXMuVUludDE2KSwgYXJndW1lbnRzKVxuXG4gIHZhciBtdWx0aWJ5dGUgPSB2ZXJzaW9uID4gMHhmZlxuICB2YXIgc2l6ZSA9IG11bHRpYnl0ZSA/IDIyIDogMjFcbiAgdmFyIG9mZnNldCA9IG11bHRpYnl0ZSA/IDIgOiAxXG5cbiAgdmFyIHBheWxvYWQgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSlcbiAgbXVsdGlieXRlID8gcGF5bG9hZC53cml0ZVVJbnQxNkJFKHZlcnNpb24sIDApIDogcGF5bG9hZC53cml0ZVVJbnQ4KHZlcnNpb24sIDApXG4gIGhhc2guY29weShwYXlsb2FkLCBvZmZzZXQpXG5cbiAgcmV0dXJuIGJzNThjaGVjay5lbmNvZGUocGF5bG9hZClcbn1cblxuZnVuY3Rpb24gdG9CZWNoMzIgKGRhdGEsIHZlcnNpb24sIHByZWZpeCkge1xuICB2YXIgd29yZHMgPSBiZWNoMzIudG9Xb3JkcyhkYXRhKVxuICB3b3Jkcy51bnNoaWZ0KHZlcnNpb24pXG5cbiAgcmV0dXJuIGJlY2gzMi5lbmNvZGUocHJlZml4LCB3b3Jkcylcbn1cblxuZnVuY3Rpb24gZnJvbU91dHB1dFNjcmlwdCAob3V0cHV0U2NyaXB0LCBuZXR3b3JrKSB7XG4gIG5ldHdvcmsgPSBuZXR3b3JrIHx8IG5ldHdvcmtzLmJpdGNvaW5cblxuICBpZiAoYnRlbXBsYXRlcy5wdWJLZXlIYXNoLm91dHB1dC5jaGVjayhvdXRwdXRTY3JpcHQpKSByZXR1cm4gdG9CYXNlNThDaGVjayhic2NyaXB0LmNvbXBpbGUob3V0cHV0U2NyaXB0KS5zbGljZSgzLCAyMyksIG5ldHdvcmsucHViS2V5SGFzaClcbiAgaWYgKGJ0ZW1wbGF0ZXMuc2NyaXB0SGFzaC5vdXRwdXQuY2hlY2sob3V0cHV0U2NyaXB0KSkgcmV0dXJuIHRvQmFzZTU4Q2hlY2soYnNjcmlwdC5jb21waWxlKG91dHB1dFNjcmlwdCkuc2xpY2UoMiwgMjIpLCBuZXR3b3JrLnNjcmlwdEhhc2gpXG4gIGlmIChidGVtcGxhdGVzLndpdG5lc3NQdWJLZXlIYXNoLm91dHB1dC5jaGVjayhvdXRwdXRTY3JpcHQpKSByZXR1cm4gdG9CZWNoMzIoYnNjcmlwdC5jb21waWxlKG91dHB1dFNjcmlwdCkuc2xpY2UoMiwgMjIpLCAwLCBuZXR3b3JrLmJlY2gzMilcbiAgaWYgKGJ0ZW1wbGF0ZXMud2l0bmVzc1NjcmlwdEhhc2gub3V0cHV0LmNoZWNrKG91dHB1dFNjcmlwdCkpIHJldHVybiB0b0JlY2gzMihic2NyaXB0LmNvbXBpbGUob3V0cHV0U2NyaXB0KS5zbGljZSgyLCAzNCksIDAsIG5ldHdvcmsuYmVjaDMyKVxuXG4gIHRocm93IG5ldyBFcnJvcihic2NyaXB0LnRvQVNNKG91dHB1dFNjcmlwdCkgKyAnIGhhcyBubyBtYXRjaGluZyBBZGRyZXNzJylcbn1cblxuZnVuY3Rpb24gdG9PdXRwdXRTY3JpcHQgKGFkZHJlc3MsIG5ldHdvcmspIHtcbiAgbmV0d29yayA9IG5ldHdvcmsgfHwgbmV0d29ya3MuYml0Y29pblxuXG4gIHZhciBkZWNvZGVcbiAgdHJ5IHtcbiAgICBkZWNvZGUgPSBmcm9tQmFzZTU4Q2hlY2soYWRkcmVzcylcbiAgfSBjYXRjaCAoZSkge31cblxuICBpZiAoZGVjb2RlKSB7XG4gICAgaWYgKGRlY29kZS52ZXJzaW9uID09PSBuZXR3b3JrLnB1YktleUhhc2gpIHJldHVybiBidGVtcGxhdGVzLnB1YktleUhhc2gub3V0cHV0LmVuY29kZShkZWNvZGUuaGFzaClcbiAgICBpZiAoZGVjb2RlLnZlcnNpb24gPT09IG5ldHdvcmsuc2NyaXB0SGFzaCkgcmV0dXJuIGJ0ZW1wbGF0ZXMuc2NyaXB0SGFzaC5vdXRwdXQuZW5jb2RlKGRlY29kZS5oYXNoKVxuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICBkZWNvZGUgPSBmcm9tQmVjaDMyKGFkZHJlc3MpXG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIGlmIChkZWNvZGUpIHtcbiAgICAgIGlmIChkZWNvZGUucHJlZml4ICE9PSBuZXR3b3JrLmJlY2gzMikgdGhyb3cgbmV3IEVycm9yKGFkZHJlc3MgKyAnIGhhcyBhbiBpbnZhbGlkIHByZWZpeCcpXG4gICAgICBpZiAoZGVjb2RlLnZlcnNpb24gPT09IDApIHtcbiAgICAgICAgaWYgKGRlY29kZS5kYXRhLmxlbmd0aCA9PT0gMjApIHJldHVybiBidGVtcGxhdGVzLndpdG5lc3NQdWJLZXlIYXNoLm91dHB1dC5lbmNvZGUoZGVjb2RlLmRhdGEpXG4gICAgICAgIGlmIChkZWNvZGUuZGF0YS5sZW5ndGggPT09IDMyKSByZXR1cm4gYnRlbXBsYXRlcy53aXRuZXNzU2NyaXB0SGFzaC5vdXRwdXQuZW5jb2RlKGRlY29kZS5kYXRhKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihhZGRyZXNzICsgJyBoYXMgbm8gbWF0Y2hpbmcgU2NyaXB0Jylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGZyb21CYXNlNThDaGVjazogZnJvbUJhc2U1OENoZWNrLFxuICBmcm9tQmVjaDMyOiBmcm9tQmVjaDMyLFxuICBmcm9tT3V0cHV0U2NyaXB0OiBmcm9tT3V0cHV0U2NyaXB0LFxuICB0b0Jhc2U1OENoZWNrOiB0b0Jhc2U1OENoZWNrLFxuICB0b0JlY2gzMjogdG9CZWNoMzIsXG4gIHRvT3V0cHV0U2NyaXB0OiB0b091dHB1dFNjcmlwdFxufVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbnZhciBmb3JtYXRSZWdFeHAgPSAvJVtzZGolXS9nO1xuZXhwb3J0cy5mb3JtYXQgPSBmdW5jdGlvbihmKSB7XG4gIGlmICghaXNTdHJpbmcoZikpIHtcbiAgICB2YXIgb2JqZWN0cyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBvYmplY3RzLnB1c2goaW5zcGVjdChhcmd1bWVudHNbaV0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdHMuam9pbignICcpO1xuICB9XG5cbiAgdmFyIGkgPSAxO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIGxlbiA9IGFyZ3MubGVuZ3RoO1xuICB2YXIgc3RyID0gU3RyaW5nKGYpLnJlcGxhY2UoZm9ybWF0UmVnRXhwLCBmdW5jdGlvbih4KSB7XG4gICAgaWYgKHggPT09ICclJScpIHJldHVybiAnJSc7XG4gICAgaWYgKGkgPj0gbGVuKSByZXR1cm4geDtcbiAgICBzd2l0Y2ggKHgpIHtcbiAgICAgIGNhc2UgJyVzJzogcmV0dXJuIFN0cmluZyhhcmdzW2krK10pO1xuICAgICAgY2FzZSAnJWQnOiByZXR1cm4gTnVtYmVyKGFyZ3NbaSsrXSk7XG4gICAgICBjYXNlICclaic6XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyZ3NbaSsrXSk7XG4gICAgICAgIH0gY2F0Y2ggKF8pIHtcbiAgICAgICAgICByZXR1cm4gJ1tDaXJjdWxhcl0nO1xuICAgICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gIH0pO1xuICBmb3IgKHZhciB4ID0gYXJnc1tpXTsgaSA8IGxlbjsgeCA9IGFyZ3NbKytpXSkge1xuICAgIGlmIChpc051bGwoeCkgfHwgIWlzT2JqZWN0KHgpKSB7XG4gICAgICBzdHIgKz0gJyAnICsgeDtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyICs9ICcgJyArIGluc3BlY3QoeCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHI7XG59O1xuXG5cbi8vIE1hcmsgdGhhdCBhIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4vLyBSZXR1cm5zIGEgbW9kaWZpZWQgZnVuY3Rpb24gd2hpY2ggd2FybnMgb25jZSBieSBkZWZhdWx0LlxuLy8gSWYgLS1uby1kZXByZWNhdGlvbiBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbmV4cG9ydHMuZGVwcmVjYXRlID0gZnVuY3Rpb24oZm4sIG1zZykge1xuICAvLyBBbGxvdyBmb3IgZGVwcmVjYXRpbmcgdGhpbmdzIGluIHRoZSBwcm9jZXNzIG9mIHN0YXJ0aW5nIHVwLlxuICBpZiAoaXNVbmRlZmluZWQoZ2xvYmFsLnByb2Nlc3MpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGV4cG9ydHMuZGVwcmVjYXRlKGZuLCBtc2cpLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfVxuXG4gIGlmIChwcm9jZXNzLm5vRGVwcmVjYXRpb24gPT09IHRydWUpIHtcbiAgICByZXR1cm4gZm47XG4gIH1cblxuICB2YXIgd2FybmVkID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGRlcHJlY2F0ZWQoKSB7XG4gICAgaWYgKCF3YXJuZWQpIHtcbiAgICAgIGlmIChwcm9jZXNzLnRocm93RGVwcmVjYXRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKHByb2Nlc3MudHJhY2VEZXByZWNhdGlvbikge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmVycm9yKG1zZyk7XG4gICAgICB9XG4gICAgICB3YXJuZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIHJldHVybiBkZXByZWNhdGVkO1xufTtcblxuXG52YXIgZGVidWdzID0ge307XG52YXIgZGVidWdFbnZpcm9uO1xuZXhwb3J0cy5kZWJ1Z2xvZyA9IGZ1bmN0aW9uKHNldCkge1xuICBpZiAoaXNVbmRlZmluZWQoZGVidWdFbnZpcm9uKSlcbiAgICBkZWJ1Z0Vudmlyb24gPSBwcm9jZXNzLmVudi5OT0RFX0RFQlVHIHx8ICcnO1xuICBzZXQgPSBzZXQudG9VcHBlckNhc2UoKTtcbiAgaWYgKCFkZWJ1Z3Nbc2V0XSkge1xuICAgIGlmIChuZXcgUmVnRXhwKCdcXFxcYicgKyBzZXQgKyAnXFxcXGInLCAnaScpLnRlc3QoZGVidWdFbnZpcm9uKSkge1xuICAgICAgdmFyIHBpZCA9IHByb2Nlc3MucGlkO1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG1zZyA9IGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cyk7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJyVzICVkOiAlcycsIHNldCwgcGlkLCBtc2cpO1xuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGVidWdzW3NldF0gPSBmdW5jdGlvbigpIHt9O1xuICAgIH1cbiAgfVxuICByZXR1cm4gZGVidWdzW3NldF07XG59O1xuXG5cbi8qKlxuICogRWNob3MgdGhlIHZhbHVlIG9mIGEgdmFsdWUuIFRyeXMgdG8gcHJpbnQgdGhlIHZhbHVlIG91dFxuICogaW4gdGhlIGJlc3Qgd2F5IHBvc3NpYmxlIGdpdmVuIHRoZSBkaWZmZXJlbnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG9iaiBUaGUgb2JqZWN0IHRvIHByaW50IG91dC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIE9wdGlvbmFsIG9wdGlvbnMgb2JqZWN0IHRoYXQgYWx0ZXJzIHRoZSBvdXRwdXQuXG4gKi9cbi8qIGxlZ2FjeTogb2JqLCBzaG93SGlkZGVuLCBkZXB0aCwgY29sb3JzKi9cbmZ1bmN0aW9uIGluc3BlY3Qob2JqLCBvcHRzKSB7XG4gIC8vIGRlZmF1bHQgb3B0aW9uc1xuICB2YXIgY3R4ID0ge1xuICAgIHNlZW46IFtdLFxuICAgIHN0eWxpemU6IHN0eWxpemVOb0NvbG9yXG4gIH07XG4gIC8vIGxlZ2FjeS4uLlxuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+PSAzKSBjdHguZGVwdGggPSBhcmd1bWVudHNbMl07XG4gIGlmIChhcmd1bWVudHMubGVuZ3RoID49IDQpIGN0eC5jb2xvcnMgPSBhcmd1bWVudHNbM107XG4gIGlmIChpc0Jvb2xlYW4ob3B0cykpIHtcbiAgICAvLyBsZWdhY3kuLi5cbiAgICBjdHguc2hvd0hpZGRlbiA9IG9wdHM7XG4gIH0gZWxzZSBpZiAob3B0cykge1xuICAgIC8vIGdvdCBhbiBcIm9wdGlvbnNcIiBvYmplY3RcbiAgICBleHBvcnRzLl9leHRlbmQoY3R4LCBvcHRzKTtcbiAgfVxuICAvLyBzZXQgZGVmYXVsdCBvcHRpb25zXG4gIGlmIChpc1VuZGVmaW5lZChjdHguc2hvd0hpZGRlbikpIGN0eC5zaG93SGlkZGVuID0gZmFsc2U7XG4gIGlmIChpc1VuZGVmaW5lZChjdHguZGVwdGgpKSBjdHguZGVwdGggPSAyO1xuICBpZiAoaXNVbmRlZmluZWQoY3R4LmNvbG9ycykpIGN0eC5jb2xvcnMgPSBmYWxzZTtcbiAgaWYgKGlzVW5kZWZpbmVkKGN0eC5jdXN0b21JbnNwZWN0KSkgY3R4LmN1c3RvbUluc3BlY3QgPSB0cnVlO1xuICBpZiAoY3R4LmNvbG9ycykgY3R4LnN0eWxpemUgPSBzdHlsaXplV2l0aENvbG9yO1xuICByZXR1cm4gZm9ybWF0VmFsdWUoY3R4LCBvYmosIGN0eC5kZXB0aCk7XG59XG5leHBvcnRzLmluc3BlY3QgPSBpbnNwZWN0O1xuXG5cbi8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQU5TSV9lc2NhcGVfY29kZSNncmFwaGljc1xuaW5zcGVjdC5jb2xvcnMgPSB7XG4gICdib2xkJyA6IFsxLCAyMl0sXG4gICdpdGFsaWMnIDogWzMsIDIzXSxcbiAgJ3VuZGVybGluZScgOiBbNCwgMjRdLFxuICAnaW52ZXJzZScgOiBbNywgMjddLFxuICAnd2hpdGUnIDogWzM3LCAzOV0sXG4gICdncmV5JyA6IFs5MCwgMzldLFxuICAnYmxhY2snIDogWzMwLCAzOV0sXG4gICdibHVlJyA6IFszNCwgMzldLFxuICAnY3lhbicgOiBbMzYsIDM5XSxcbiAgJ2dyZWVuJyA6IFszMiwgMzldLFxuICAnbWFnZW50YScgOiBbMzUsIDM5XSxcbiAgJ3JlZCcgOiBbMzEsIDM5XSxcbiAgJ3llbGxvdycgOiBbMzMsIDM5XVxufTtcblxuLy8gRG9uJ3QgdXNlICdibHVlJyBub3QgdmlzaWJsZSBvbiBjbWQuZXhlXG5pbnNwZWN0LnN0eWxlcyA9IHtcbiAgJ3NwZWNpYWwnOiAnY3lhbicsXG4gICdudW1iZXInOiAneWVsbG93JyxcbiAgJ2Jvb2xlYW4nOiAneWVsbG93JyxcbiAgJ3VuZGVmaW5lZCc6ICdncmV5JyxcbiAgJ251bGwnOiAnYm9sZCcsXG4gICdzdHJpbmcnOiAnZ3JlZW4nLFxuICAnZGF0ZSc6ICdtYWdlbnRhJyxcbiAgLy8gXCJuYW1lXCI6IGludGVudGlvbmFsbHkgbm90IHN0eWxpbmdcbiAgJ3JlZ2V4cCc6ICdyZWQnXG59O1xuXG5cbmZ1bmN0aW9uIHN0eWxpemVXaXRoQ29sb3Ioc3RyLCBzdHlsZVR5cGUpIHtcbiAgdmFyIHN0eWxlID0gaW5zcGVjdC5zdHlsZXNbc3R5bGVUeXBlXTtcblxuICBpZiAoc3R5bGUpIHtcbiAgICByZXR1cm4gJ1xcdTAwMWJbJyArIGluc3BlY3QuY29sb3JzW3N0eWxlXVswXSArICdtJyArIHN0ciArXG4gICAgICAgICAgICdcXHUwMDFiWycgKyBpbnNwZWN0LmNvbG9yc1tzdHlsZV1bMV0gKyAnbSc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIHN0eWxpemVOb0NvbG9yKHN0ciwgc3R5bGVUeXBlKSB7XG4gIHJldHVybiBzdHI7XG59XG5cblxuZnVuY3Rpb24gYXJyYXlUb0hhc2goYXJyYXkpIHtcbiAgdmFyIGhhc2ggPSB7fTtcblxuICBhcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHZhbCwgaWR4KSB7XG4gICAgaGFzaFt2YWxdID0gdHJ1ZTtcbiAgfSk7XG5cbiAgcmV0dXJuIGhhc2g7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0VmFsdWUoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzKSB7XG4gIC8vIFByb3ZpZGUgYSBob29rIGZvciB1c2VyLXNwZWNpZmllZCBpbnNwZWN0IGZ1bmN0aW9ucy5cbiAgLy8gQ2hlY2sgdGhhdCB2YWx1ZSBpcyBhbiBvYmplY3Qgd2l0aCBhbiBpbnNwZWN0IGZ1bmN0aW9uIG9uIGl0XG4gIGlmIChjdHguY3VzdG9tSW5zcGVjdCAmJlxuICAgICAgdmFsdWUgJiZcbiAgICAgIGlzRnVuY3Rpb24odmFsdWUuaW5zcGVjdCkgJiZcbiAgICAgIC8vIEZpbHRlciBvdXQgdGhlIHV0aWwgbW9kdWxlLCBpdCdzIGluc3BlY3QgZnVuY3Rpb24gaXMgc3BlY2lhbFxuICAgICAgdmFsdWUuaW5zcGVjdCAhPT0gZXhwb3J0cy5pbnNwZWN0ICYmXG4gICAgICAvLyBBbHNvIGZpbHRlciBvdXQgYW55IHByb3RvdHlwZSBvYmplY3RzIHVzaW5nIHRoZSBjaXJjdWxhciBjaGVjay5cbiAgICAgICEodmFsdWUuY29uc3RydWN0b3IgJiYgdmFsdWUuY29uc3RydWN0b3IucHJvdG90eXBlID09PSB2YWx1ZSkpIHtcbiAgICB2YXIgcmV0ID0gdmFsdWUuaW5zcGVjdChyZWN1cnNlVGltZXMsIGN0eCk7XG4gICAgaWYgKCFpc1N0cmluZyhyZXQpKSB7XG4gICAgICByZXQgPSBmb3JtYXRWYWx1ZShjdHgsIHJldCwgcmVjdXJzZVRpbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8vIFByaW1pdGl2ZSB0eXBlcyBjYW5ub3QgaGF2ZSBwcm9wZXJ0aWVzXG4gIHZhciBwcmltaXRpdmUgPSBmb3JtYXRQcmltaXRpdmUoY3R4LCB2YWx1ZSk7XG4gIGlmIChwcmltaXRpdmUpIHtcbiAgICByZXR1cm4gcHJpbWl0aXZlO1xuICB9XG5cbiAgLy8gTG9vayB1cCB0aGUga2V5cyBvZiB0aGUgb2JqZWN0LlxuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHZhbHVlKTtcbiAgdmFyIHZpc2libGVLZXlzID0gYXJyYXlUb0hhc2goa2V5cyk7XG5cbiAgaWYgKGN0eC5zaG93SGlkZGVuKSB7XG4gICAga2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHZhbHVlKTtcbiAgfVxuXG4gIC8vIElFIGRvZXNuJ3QgbWFrZSBlcnJvciBmaWVsZHMgbm9uLWVudW1lcmFibGVcbiAgLy8gaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2llL2R3dzUyc2J0KHY9dnMuOTQpLmFzcHhcbiAgaWYgKGlzRXJyb3IodmFsdWUpXG4gICAgICAmJiAoa2V5cy5pbmRleE9mKCdtZXNzYWdlJykgPj0gMCB8fCBrZXlzLmluZGV4T2YoJ2Rlc2NyaXB0aW9uJykgPj0gMCkpIHtcbiAgICByZXR1cm4gZm9ybWF0RXJyb3IodmFsdWUpO1xuICB9XG5cbiAgLy8gU29tZSB0eXBlIG9mIG9iamVjdCB3aXRob3V0IHByb3BlcnRpZXMgY2FuIGJlIHNob3J0Y3V0dGVkLlxuICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICBpZiAoaXNGdW5jdGlvbih2YWx1ZSkpIHtcbiAgICAgIHZhciBuYW1lID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoJ1tGdW5jdGlvbicgKyBuYW1lICsgJ10nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgICByZXR1cm4gY3R4LnN0eWxpemUoUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSwgJ3JlZ2V4cCcpO1xuICAgIH1cbiAgICBpZiAoaXNEYXRlKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKERhdGUucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpLCAnZGF0ZScpO1xuICAgIH1cbiAgICBpZiAoaXNFcnJvcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGJhc2UgPSAnJywgYXJyYXkgPSBmYWxzZSwgYnJhY2VzID0gWyd7JywgJ30nXTtcblxuICAvLyBNYWtlIEFycmF5IHNheSB0aGF0IHRoZXkgYXJlIEFycmF5XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIGFycmF5ID0gdHJ1ZTtcbiAgICBicmFjZXMgPSBbJ1snLCAnXSddO1xuICB9XG5cbiAgLy8gTWFrZSBmdW5jdGlvbnMgc2F5IHRoYXQgdGhleSBhcmUgZnVuY3Rpb25zXG4gIGlmIChpc0Z1bmN0aW9uKHZhbHVlKSkge1xuICAgIHZhciBuID0gdmFsdWUubmFtZSA/ICc6ICcgKyB2YWx1ZS5uYW1lIDogJyc7XG4gICAgYmFzZSA9ICcgW0Z1bmN0aW9uJyArIG4gKyAnXSc7XG4gIH1cblxuICAvLyBNYWtlIFJlZ0V4cHMgc2F5IHRoYXQgdGhleSBhcmUgUmVnRXhwc1xuICBpZiAoaXNSZWdFeHAodmFsdWUpKSB7XG4gICAgYmFzZSA9ICcgJyArIFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIH1cblxuICAvLyBNYWtlIGRhdGVzIHdpdGggcHJvcGVydGllcyBmaXJzdCBzYXkgdGhlIGRhdGVcbiAgaWYgKGlzRGF0ZSh2YWx1ZSkpIHtcbiAgICBiYXNlID0gJyAnICsgRGF0ZS5wcm90b3R5cGUudG9VVENTdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIH1cblxuICAvLyBNYWtlIGVycm9yIHdpdGggbWVzc2FnZSBmaXJzdCBzYXkgdGhlIGVycm9yXG4gIGlmIChpc0Vycm9yKHZhbHVlKSkge1xuICAgIGJhc2UgPSAnICcgKyBmb3JtYXRFcnJvcih2YWx1ZSk7XG4gIH1cblxuICBpZiAoa2V5cy5sZW5ndGggPT09IDAgJiYgKCFhcnJheSB8fCB2YWx1ZS5sZW5ndGggPT0gMCkpIHtcbiAgICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArIGJyYWNlc1sxXTtcbiAgfVxuXG4gIGlmIChyZWN1cnNlVGltZXMgPCAwKSB7XG4gICAgaWYgKGlzUmVnRXhwKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSksICdyZWdleHAnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGN0eC5zdHlsaXplKCdbT2JqZWN0XScsICdzcGVjaWFsJyk7XG4gICAgfVxuICB9XG5cbiAgY3R4LnNlZW4ucHVzaCh2YWx1ZSk7XG5cbiAgdmFyIG91dHB1dDtcbiAgaWYgKGFycmF5KSB7XG4gICAgb3V0cHV0ID0gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5cyk7XG4gIH0gZWxzZSB7XG4gICAgb3V0cHV0ID0ga2V5cy5tYXAoZnVuY3Rpb24oa2V5KSB7XG4gICAgICByZXR1cm4gZm9ybWF0UHJvcGVydHkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5LCBhcnJheSk7XG4gICAgfSk7XG4gIH1cblxuICBjdHguc2Vlbi5wb3AoKTtcblxuICByZXR1cm4gcmVkdWNlVG9TaW5nbGVTdHJpbmcob3V0cHV0LCBiYXNlLCBicmFjZXMpO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdFByaW1pdGl2ZShjdHgsIHZhbHVlKSB7XG4gIGlmIChpc1VuZGVmaW5lZCh2YWx1ZSkpXG4gICAgcmV0dXJuIGN0eC5zdHlsaXplKCd1bmRlZmluZWQnLCAndW5kZWZpbmVkJyk7XG4gIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICB2YXIgc2ltcGxlID0gJ1xcJycgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkucmVwbGFjZSgvXlwifFwiJC9nLCAnJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcXCIvZywgJ1wiJykgKyAnXFwnJztcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoc2ltcGxlLCAnc3RyaW5nJyk7XG4gIH1cbiAgaWYgKGlzTnVtYmVyKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ251bWJlcicpO1xuICBpZiAoaXNCb29sZWFuKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJycgKyB2YWx1ZSwgJ2Jvb2xlYW4nKTtcbiAgLy8gRm9yIHNvbWUgcmVhc29uIHR5cGVvZiBudWxsIGlzIFwib2JqZWN0XCIsIHNvIHNwZWNpYWwgY2FzZSBoZXJlLlxuICBpZiAoaXNOdWxsKHZhbHVlKSlcbiAgICByZXR1cm4gY3R4LnN0eWxpemUoJ251bGwnLCAnbnVsbCcpO1xufVxuXG5cbmZ1bmN0aW9uIGZvcm1hdEVycm9yKHZhbHVlKSB7XG4gIHJldHVybiAnWycgKyBFcnJvci5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh2YWx1ZSkgKyAnXSc7XG59XG5cblxuZnVuY3Rpb24gZm9ybWF0QXJyYXkoY3R4LCB2YWx1ZSwgcmVjdXJzZVRpbWVzLCB2aXNpYmxlS2V5cywga2V5cykge1xuICB2YXIgb3V0cHV0ID0gW107XG4gIGZvciAodmFyIGkgPSAwLCBsID0gdmFsdWUubGVuZ3RoOyBpIDwgbDsgKytpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5KHZhbHVlLCBTdHJpbmcoaSkpKSB7XG4gICAgICBvdXRwdXQucHVzaChmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLFxuICAgICAgICAgIFN0cmluZyhpKSwgdHJ1ZSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICB9XG4gIGtleXMuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICBpZiAoIWtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIG91dHB1dC5wdXNoKGZvcm1hdFByb3BlcnR5KGN0eCwgdmFsdWUsIHJlY3Vyc2VUaW1lcywgdmlzaWJsZUtleXMsXG4gICAgICAgICAga2V5LCB0cnVlKSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIG91dHB1dDtcbn1cblxuXG5mdW5jdGlvbiBmb3JtYXRQcm9wZXJ0eShjdHgsIHZhbHVlLCByZWN1cnNlVGltZXMsIHZpc2libGVLZXlzLCBrZXksIGFycmF5KSB7XG4gIHZhciBuYW1lLCBzdHIsIGRlc2M7XG4gIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHZhbHVlLCBrZXkpIHx8IHsgdmFsdWU6IHZhbHVlW2tleV0gfTtcbiAgaWYgKGRlc2MuZ2V0KSB7XG4gICAgaWYgKGRlc2Muc2V0KSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW0dldHRlci9TZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RyID0gY3R4LnN0eWxpemUoJ1tHZXR0ZXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKGRlc2Muc2V0KSB7XG4gICAgICBzdHIgPSBjdHguc3R5bGl6ZSgnW1NldHRlcl0nLCAnc3BlY2lhbCcpO1xuICAgIH1cbiAgfVxuICBpZiAoIWhhc093blByb3BlcnR5KHZpc2libGVLZXlzLCBrZXkpKSB7XG4gICAgbmFtZSA9ICdbJyArIGtleSArICddJztcbiAgfVxuICBpZiAoIXN0cikge1xuICAgIGlmIChjdHguc2Vlbi5pbmRleE9mKGRlc2MudmFsdWUpIDwgMCkge1xuICAgICAgaWYgKGlzTnVsbChyZWN1cnNlVGltZXMpKSB7XG4gICAgICAgIHN0ciA9IGZvcm1hdFZhbHVlKGN0eCwgZGVzYy52YWx1ZSwgbnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdHIgPSBmb3JtYXRWYWx1ZShjdHgsIGRlc2MudmFsdWUsIHJlY3Vyc2VUaW1lcyAtIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHN0ci5pbmRleE9mKCdcXG4nKSA+IC0xKSB7XG4gICAgICAgIGlmIChhcnJheSkge1xuICAgICAgICAgIHN0ciA9IHN0ci5zcGxpdCgnXFxuJykubWFwKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgICAgICAgIHJldHVybiAnICAnICsgbGluZTtcbiAgICAgICAgICB9KS5qb2luKCdcXG4nKS5zdWJzdHIoMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RyID0gJ1xcbicgKyBzdHIuc3BsaXQoJ1xcbicpLm1hcChmdW5jdGlvbihsaW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gJyAgICcgKyBsaW5lO1xuICAgICAgICAgIH0pLmpvaW4oJ1xcbicpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0ciA9IGN0eC5zdHlsaXplKCdbQ2lyY3VsYXJdJywgJ3NwZWNpYWwnKTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzVW5kZWZpbmVkKG5hbWUpKSB7XG4gICAgaWYgKGFycmF5ICYmIGtleS5tYXRjaCgvXlxcZCskLykpIHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICAgIG5hbWUgPSBKU09OLnN0cmluZ2lmeSgnJyArIGtleSk7XG4gICAgaWYgKG5hbWUubWF0Y2goL15cIihbYS16QS1aX11bYS16QS1aXzAtOV0qKVwiJC8pKSB7XG4gICAgICBuYW1lID0gbmFtZS5zdWJzdHIoMSwgbmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnbmFtZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC8nL2csIFwiXFxcXCdcIilcbiAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxcIi9nLCAnXCInKVxuICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKF5cInxcIiQpL2csIFwiJ1wiKTtcbiAgICAgIG5hbWUgPSBjdHguc3R5bGl6ZShuYW1lLCAnc3RyaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG5hbWUgKyAnOiAnICsgc3RyO1xufVxuXG5cbmZ1bmN0aW9uIHJlZHVjZVRvU2luZ2xlU3RyaW5nKG91dHB1dCwgYmFzZSwgYnJhY2VzKSB7XG4gIHZhciBudW1MaW5lc0VzdCA9IDA7XG4gIHZhciBsZW5ndGggPSBvdXRwdXQucmVkdWNlKGZ1bmN0aW9uKHByZXYsIGN1cikge1xuICAgIG51bUxpbmVzRXN0Kys7XG4gICAgaWYgKGN1ci5pbmRleE9mKCdcXG4nKSA+PSAwKSBudW1MaW5lc0VzdCsrO1xuICAgIHJldHVybiBwcmV2ICsgY3VyLnJlcGxhY2UoL1xcdTAwMWJcXFtcXGRcXGQ/bS9nLCAnJykubGVuZ3RoICsgMTtcbiAgfSwgMCk7XG5cbiAgaWYgKGxlbmd0aCA+IDYwKSB7XG4gICAgcmV0dXJuIGJyYWNlc1swXSArXG4gICAgICAgICAgIChiYXNlID09PSAnJyA/ICcnIDogYmFzZSArICdcXG4gJykgK1xuICAgICAgICAgICAnICcgK1xuICAgICAgICAgICBvdXRwdXQuam9pbignLFxcbiAgJykgK1xuICAgICAgICAgICAnICcgK1xuICAgICAgICAgICBicmFjZXNbMV07XG4gIH1cblxuICByZXR1cm4gYnJhY2VzWzBdICsgYmFzZSArICcgJyArIG91dHB1dC5qb2luKCcsICcpICsgJyAnICsgYnJhY2VzWzFdO1xufVxuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5mdW5jdGlvbiBpc0FycmF5KGFyKSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KGFyKTtcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KHJlKSAmJiBvYmplY3RUb1N0cmluZyhyZSkgPT09ICdbb2JqZWN0IFJlZ0V4cF0nO1xufVxuZXhwb3J0cy5pc1JlZ0V4cCA9IGlzUmVnRXhwO1xuXG5mdW5jdGlvbiBpc09iamVjdChhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmIGFyZyAhPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNPYmplY3QgPSBpc09iamVjdDtcblxuZnVuY3Rpb24gaXNEYXRlKGQpIHtcbiAgcmV0dXJuIGlzT2JqZWN0KGQpICYmIG9iamVjdFRvU3RyaW5nKGQpID09PSAnW29iamVjdCBEYXRlXSc7XG59XG5leHBvcnRzLmlzRGF0ZSA9IGlzRGF0ZTtcblxuZnVuY3Rpb24gaXNFcnJvcihlKSB7XG4gIHJldHVybiBpc09iamVjdChlKSAmJlxuICAgICAgKG9iamVjdFRvU3RyaW5nKGUpID09PSAnW29iamVjdCBFcnJvcl0nIHx8IGUgaW5zdGFuY2VvZiBFcnJvcik7XG59XG5leHBvcnRzLmlzRXJyb3IgPSBpc0Vycm9yO1xuXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlKGFyZykge1xuICByZXR1cm4gYXJnID09PSBudWxsIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N5bWJvbCcgfHwgIC8vIEVTNiBzeW1ib2xcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICd1bmRlZmluZWQnO1xufVxuZXhwb3J0cy5pc1ByaW1pdGl2ZSA9IGlzUHJpbWl0aXZlO1xuXG5leHBvcnRzLmlzQnVmZmVyID0gcmVxdWlyZSgnLi9zdXBwb3J0L2lzQnVmZmVyJyk7XG5cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKG8pIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKTtcbn1cblxuXG5mdW5jdGlvbiBwYWQobikge1xuICByZXR1cm4gbiA8IDEwID8gJzAnICsgbi50b1N0cmluZygxMCkgOiBuLnRvU3RyaW5nKDEwKTtcbn1cblxuXG52YXIgbW9udGhzID0gWydKYW4nLCAnRmViJywgJ01hcicsICdBcHInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQXVnJywgJ1NlcCcsXG4gICAgICAgICAgICAgICdPY3QnLCAnTm92JywgJ0RlYyddO1xuXG4vLyAyNiBGZWIgMTY6MTk6MzRcbmZ1bmN0aW9uIHRpbWVzdGFtcCgpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xuICB2YXIgdGltZSA9IFtwYWQoZC5nZXRIb3VycygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0TWludXRlcygpKSxcbiAgICAgICAgICAgICAgcGFkKGQuZ2V0U2Vjb25kcygpKV0uam9pbignOicpO1xuICByZXR1cm4gW2QuZ2V0RGF0ZSgpLCBtb250aHNbZC5nZXRNb250aCgpXSwgdGltZV0uam9pbignICcpO1xufVxuXG5cbi8vIGxvZyBpcyBqdXN0IGEgdGhpbiB3cmFwcGVyIHRvIGNvbnNvbGUubG9nIHRoYXQgcHJlcGVuZHMgYSB0aW1lc3RhbXBcbmV4cG9ydHMubG9nID0gZnVuY3Rpb24oKSB7XG4gIGNvbnNvbGUubG9nKCclcyAtICVzJywgdGltZXN0YW1wKCksIGV4cG9ydHMuZm9ybWF0LmFwcGx5KGV4cG9ydHMsIGFyZ3VtZW50cykpO1xufTtcblxuXG4vKipcbiAqIEluaGVyaXQgdGhlIHByb3RvdHlwZSBtZXRob2RzIGZyb20gb25lIGNvbnN0cnVjdG9yIGludG8gYW5vdGhlci5cbiAqXG4gKiBUaGUgRnVuY3Rpb24ucHJvdG90eXBlLmluaGVyaXRzIGZyb20gbGFuZy5qcyByZXdyaXR0ZW4gYXMgYSBzdGFuZGFsb25lXG4gKiBmdW5jdGlvbiAobm90IG9uIEZ1bmN0aW9uLnByb3RvdHlwZSkuIE5PVEU6IElmIHRoaXMgZmlsZSBpcyB0byBiZSBsb2FkZWRcbiAqIGR1cmluZyBib290c3RyYXBwaW5nIHRoaXMgZnVuY3Rpb24gbmVlZHMgdG8gYmUgcmV3cml0dGVuIHVzaW5nIHNvbWUgbmF0aXZlXG4gKiBmdW5jdGlvbnMgYXMgcHJvdG90eXBlIHNldHVwIHVzaW5nIG5vcm1hbCBKYXZhU2NyaXB0IGRvZXMgbm90IHdvcmsgYXNcbiAqIGV4cGVjdGVkIGR1cmluZyBib290c3RyYXBwaW5nIChzZWUgbWlycm9yLmpzIGluIHIxMTQ5MDMpLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gd2hpY2ggbmVlZHMgdG8gaW5oZXJpdCB0aGVcbiAqICAgICBwcm90b3R5cGUuXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBzdXBlckN0b3IgQ29uc3RydWN0b3IgZnVuY3Rpb24gdG8gaW5oZXJpdCBwcm90b3R5cGUgZnJvbS5cbiAqL1xuZXhwb3J0cy5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG5cbmV4cG9ydHMuX2V4dGVuZCA9IGZ1bmN0aW9uKG9yaWdpbiwgYWRkKSB7XG4gIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGFkZCBpc24ndCBhbiBvYmplY3RcbiAgaWYgKCFhZGQgfHwgIWlzT2JqZWN0KGFkZCkpIHJldHVybiBvcmlnaW47XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhZGQpO1xuICB2YXIgaSA9IGtleXMubGVuZ3RoO1xuICB3aGlsZSAoaS0tKSB7XG4gICAgb3JpZ2luW2tleXNbaV1dID0gYWRkW2tleXNbaV1dO1xuICB9XG4gIHJldHVybiBvcmlnaW47XG59O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIHByb3ApIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApO1xufVxuIiwidmFyIGJpcDY2ID0gcmVxdWlyZSgnYmlwNjYnKVxudmFyIHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJylcblxudmFyIEJpZ0ludGVnZXIgPSByZXF1aXJlKCdiaWdpJylcblxuZnVuY3Rpb24gRUNTaWduYXR1cmUgKHIsIHMpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKHR5cGVzLkJpZ0ludCwgdHlwZXMuQmlnSW50KSwgYXJndW1lbnRzKVxuXG4gIHRoaXMuciA9IHJcbiAgdGhpcy5zID0gc1xufVxuXG5FQ1NpZ25hdHVyZS5wYXJzZUNvbXBhY3QgPSBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5CdWZmZXJOKDY1KSwgYnVmZmVyKVxuXG4gIHZhciBmbGFnQnl0ZSA9IGJ1ZmZlci5yZWFkVUludDgoMCkgLSAyN1xuICBpZiAoZmxhZ0J5dGUgIT09IChmbGFnQnl0ZSAmIDcpKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgc2lnbmF0dXJlIHBhcmFtZXRlcicpXG5cbiAgdmFyIGNvbXByZXNzZWQgPSAhIShmbGFnQnl0ZSAmIDQpXG4gIHZhciByZWNvdmVyeVBhcmFtID0gZmxhZ0J5dGUgJiAzXG4gIHZhciBzaWduYXR1cmUgPSBFQ1NpZ25hdHVyZS5mcm9tUlNCdWZmZXIoYnVmZmVyLnNsaWNlKDEpKVxuXG4gIHJldHVybiB7XG4gICAgY29tcHJlc3NlZDogY29tcHJlc3NlZCxcbiAgICBpOiByZWNvdmVyeVBhcmFtLFxuICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlXG4gIH1cbn1cblxuRUNTaWduYXR1cmUuZnJvbVJTQnVmZmVyID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICB0eXBlZm9yY2UodHlwZXMuQnVmZmVyTig2NCksIGJ1ZmZlcilcblxuICB2YXIgciA9IEJpZ0ludGVnZXIuZnJvbUJ1ZmZlcihidWZmZXIuc2xpY2UoMCwgMzIpKVxuICB2YXIgcyA9IEJpZ0ludGVnZXIuZnJvbUJ1ZmZlcihidWZmZXIuc2xpY2UoMzIsIDY0KSlcbiAgcmV0dXJuIG5ldyBFQ1NpZ25hdHVyZShyLCBzKVxufVxuXG5FQ1NpZ25hdHVyZS5mcm9tREVSID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICB2YXIgZGVjb2RlID0gYmlwNjYuZGVjb2RlKGJ1ZmZlcilcbiAgdmFyIHIgPSBCaWdJbnRlZ2VyLmZyb21ERVJJbnRlZ2VyKGRlY29kZS5yKVxuICB2YXIgcyA9IEJpZ0ludGVnZXIuZnJvbURFUkludGVnZXIoZGVjb2RlLnMpXG5cbiAgcmV0dXJuIG5ldyBFQ1NpZ25hdHVyZShyLCBzKVxufVxuXG4vLyBCSVA2MjogMSBieXRlIGhhc2hUeXBlIGZsYWcgKG9ubHkgMHgwMSwgMHgwMiwgMHgwMywgMHg4MSwgMHg4MiBhbmQgMHg4MyBhcmUgYWxsb3dlZClcbkVDU2lnbmF0dXJlLnBhcnNlU2NyaXB0U2lnbmF0dXJlID0gZnVuY3Rpb24gKGJ1ZmZlcikge1xuICB2YXIgaGFzaFR5cGUgPSBidWZmZXIucmVhZFVJbnQ4KGJ1ZmZlci5sZW5ndGggLSAxKVxuICB2YXIgaGFzaFR5cGVNb2QgPSBoYXNoVHlwZSAmIH4weDgwXG5cbiAgaWYgKGhhc2hUeXBlTW9kIDw9IDB4MDAgfHwgaGFzaFR5cGVNb2QgPj0gMHgwNCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGhhc2hUeXBlICcgKyBoYXNoVHlwZSlcblxuICByZXR1cm4ge1xuICAgIHNpZ25hdHVyZTogRUNTaWduYXR1cmUuZnJvbURFUihidWZmZXIuc2xpY2UoMCwgLTEpKSxcbiAgICBoYXNoVHlwZTogaGFzaFR5cGVcbiAgfVxufVxuXG5FQ1NpZ25hdHVyZS5wcm90b3R5cGUudG9Db21wYWN0ID0gZnVuY3Rpb24gKGksIGNvbXByZXNzZWQpIHtcbiAgaWYgKGNvbXByZXNzZWQpIHtcbiAgICBpICs9IDRcbiAgfVxuXG4gIGkgKz0gMjdcblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDY1KVxuICBidWZmZXIud3JpdGVVSW50OChpLCAwKVxuICB0aGlzLnRvUlNCdWZmZXIoYnVmZmVyLCAxKVxuICByZXR1cm4gYnVmZmVyXG59XG5cbkVDU2lnbmF0dXJlLnByb3RvdHlwZS50b0RFUiA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHIgPSBCdWZmZXIuZnJvbSh0aGlzLnIudG9ERVJJbnRlZ2VyKCkpXG4gIHZhciBzID0gQnVmZmVyLmZyb20odGhpcy5zLnRvREVSSW50ZWdlcigpKVxuXG4gIHJldHVybiBiaXA2Ni5lbmNvZGUociwgcylcbn1cblxuRUNTaWduYXR1cmUucHJvdG90eXBlLnRvUlNCdWZmZXIgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQpIHtcbiAgYnVmZmVyID0gYnVmZmVyIHx8IEJ1ZmZlci5hbGxvYyg2NClcbiAgdGhpcy5yLnRvQnVmZmVyKDMyKS5jb3B5KGJ1ZmZlciwgb2Zmc2V0KVxuICB0aGlzLnMudG9CdWZmZXIoMzIpLmNvcHkoYnVmZmVyLCBvZmZzZXQgKyAzMilcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5FQ1NpZ25hdHVyZS5wcm90b3R5cGUudG9TY3JpcHRTaWduYXR1cmUgPSBmdW5jdGlvbiAoaGFzaFR5cGUpIHtcbiAgdmFyIGhhc2hUeXBlTW9kID0gaGFzaFR5cGUgJiB+MHg4MFxuICBpZiAoaGFzaFR5cGVNb2QgPD0gMCB8fCBoYXNoVHlwZU1vZCA+PSA0KSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaGFzaFR5cGUgJyArIGhhc2hUeXBlKVxuXG4gIHZhciBoYXNoVHlwZUJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygxKVxuICBoYXNoVHlwZUJ1ZmZlci53cml0ZVVJbnQ4KGhhc2hUeXBlLCAwKVxuXG4gIHJldHVybiBCdWZmZXIuY29uY2F0KFt0aGlzLnRvREVSKCksIGhhc2hUeXBlQnVmZmVyXSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBFQ1NpZ25hdHVyZVxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkJJVENPSU5fQ09JTl9JTkZPID0gdW5kZWZpbmVkO1xuZXhwb3J0cy5ianNOb2RlMnByaXZOb2RlID0gYmpzTm9kZTJwcml2Tm9kZTtcbmV4cG9ydHMucHViTm9kZTJianNOb2RlID0gcHViTm9kZTJianNOb2RlO1xuZXhwb3J0cy5wdWJLZXkyYmpzTm9kZSA9IHB1YktleTJianNOb2RlO1xuZXhwb3J0cy5kZXJpdmVQdWJLZXlIYXNoID0gZGVyaXZlUHViS2V5SGFzaDtcbmV4cG9ydHMuZ2V0SEROb2RlID0gZ2V0SEROb2RlO1xuZXhwb3J0cy5oYXJkZW4gPSBoYXJkZW47XG5cbnZhciBfYml0Y29pbmpzTGliWmNhc2ggPSByZXF1aXJlKCdiaXRjb2luanMtbGliLXpjYXNoJyk7XG5cbnZhciBiaXRjb2luID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2JpdGNvaW5qc0xpYlpjYXNoKTtcblxudmFyIF9lY3VydmUgPSByZXF1aXJlKCdlY3VydmUnKTtcblxudmFyIGVjdXJ2ZSA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9lY3VydmUpO1xuXG52YXIgX3RyZXpvcnR5cGVzID0gcmVxdWlyZSgnLi4vdHJlem9ydHlwZXMnKTtcblxudmFyIHRyZXpvciA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF90cmV6b3J0eXBlcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbnZhciBjdXJ2ZSA9IGVjdXJ2ZS5nZXRDdXJ2ZUJ5TmFtZSgnc2VjcDI1NmsxJyk7XG5cbi8vIHNpbXBsaWZpZWQgQ29pbkluZm8gb2JqZWN0IHBhc3NlZCBmcm9tIG15dHJlem9yXG52YXIgQklUQ09JTl9DT0lOX0lORk8gPSBleHBvcnRzLkJJVENPSU5fQ09JTl9JTkZPID0ge1xuICAgIG5hbWU6ICdCaXRjb2luJyxcbiAgICBuZXR3b3JrOiBiaXRjb2luLm5ldHdvcmtzLmJpdGNvaW4sXG4gICAgc2Vnd2l0UHViTWFnaWM6IDc3NDI5OTM4XG59O1xuXG5mdW5jdGlvbiBianNOb2RlMnByaXZOb2RlKG5vZGUpIHtcbiAgICB2YXIgZCA9IG5vZGUua2V5UGFpci5kO1xuICAgIGlmICghZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vdCBhIHByaXZhdGUgbm9kZS4nKTtcbiAgICB9XG4gICAgdmFyIGRlcHRoID0gbm9kZS5kZXB0aDtcbiAgICB2YXIgZmluZ2VycHJpbnQgPSBub2RlLnBhcmVudEZpbmdlcnByaW50O1xuICAgIHZhciBjaGlsZF9udW0gPSBub2RlLmluZGV4O1xuICAgIHZhciBwcml2YXRlX2tleSA9IGQudG9TdHJpbmcoMTYpO1xuICAgIHZhciBjaGFpbl9jb2RlID0gbm9kZS5jaGFpbkNvZGUudG9TdHJpbmcoJ2hleCcpO1xuICAgIHJldHVybiB7IGRlcHRoOiBkZXB0aCwgZmluZ2VycHJpbnQ6IGZpbmdlcnByaW50LCBjaGlsZF9udW06IGNoaWxkX251bSwgY2hhaW5fY29kZTogY2hhaW5fY29kZSwgcHJpdmF0ZV9rZXk6IHByaXZhdGVfa2V5IH07XG59XG5cbmZ1bmN0aW9uIHB1Yk5vZGUyYmpzTm9kZShub2RlLCBuZXR3b3JrKSB7XG4gICAgdmFyIGNoYWluQ29kZSA9IG5ldyBCdWZmZXIobm9kZS5jaGFpbl9jb2RlLCAnaGV4Jyk7XG4gICAgdmFyIHB1YmxpY0tleSA9IG5ldyBCdWZmZXIobm9kZS5wdWJsaWNfa2V5LCAnaGV4Jyk7XG5cbiAgICBpZiAoY3VydmUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3NlY3AyNTZrMSBpcyBudWxsJyk7XG4gICAgfVxuICAgIHZhciBRID0gZWN1cnZlLlBvaW50LmRlY29kZUZyb20oY3VydmUsIHB1YmxpY0tleSk7XG4gICAgdmFyIHJlcyA9IG5ldyBiaXRjb2luLkhETm9kZShuZXcgYml0Y29pbi5FQ1BhaXIobnVsbCwgUSwgeyBuZXR3b3JrOiBuZXR3b3JrIH0pLCBjaGFpbkNvZGUpO1xuXG4gICAgcmVzLmRlcHRoID0gK25vZGUuZGVwdGg7XG4gICAgcmVzLmluZGV4ID0gK25vZGUuY2hpbGRfbnVtO1xuICAgIHJlcy5wYXJlbnRGaW5nZXJwcmludCA9IG5vZGUuZmluZ2VycHJpbnQ7XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBzdHVwaWQgaGFjaywgYmVjYXVzZSB0cmV6b3Igc2VyaWFsaXplcyBhbGwgeHB1YnMgd2l0aCBiaXRjb2luIG1hZ2ljXG5mdW5jdGlvbiBjb252ZXJ0WHB1YihvcmlnaW5hbCwgbmV0d29yaykge1xuICAgIGlmIChuZXR3b3JrLmJpcDMyLnB1YmxpYyA9PT0gMHgwNDg4YjIxZSkge1xuICAgICAgICAvLyBpdCdzIGJpdGNvaW4tbGlrZSA9PiByZXR1cm4geHB1YlxuICAgICAgICByZXR1cm4gb3JpZ2luYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIG5vZGUgPSBiaXRjb2luLkhETm9kZS5mcm9tQmFzZTU4KG9yaWdpbmFsKTsgLy8gdXNlIGJpdGNvaW4gbWFnaWNcblxuICAgICAgICAvLyBcImhhcmQtZml4XCIgdGhlIG5ldyBuZXR3b3JrIGludG8gdGhlIEhETm9kZSBrZXlwYWlyXG4gICAgICAgIG5vZGUua2V5UGFpci5uZXR3b3JrID0gbmV0d29yaztcbiAgICAgICAgcmV0dXJuIG5vZGUudG9CYXNlNTgoKTtcbiAgICB9XG59XG5cbi8vIGNvbnZlcnRzIGZyb20gaW50ZXJuYWwgUHVibGljS2V5IGZvcm1hdCB0byBiaXRjb2luLmpzIEhETm9kZVxuLy8gbmV0d29yayBpbmZvIGlzIG5lY2Vzc2FyeS4gdGhyb3dzIGVycm9yIG9uIHdyb25nIHhwdWJcbmZ1bmN0aW9uIHB1YktleTJianNOb2RlKGtleSwgbmV0d29yaykge1xuICAgIHZhciBjb252ZXJ0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgJiYgYXJndW1lbnRzWzJdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMl0gOiB0cnVlO1xuXG4gICAgdmFyIGtleU5vZGUgPSBrZXkubWVzc2FnZS5ub2RlO1xuICAgIHZhciBianNOb2RlID0gcHViTm9kZTJianNOb2RlKGtleU5vZGUsIG5ldHdvcmspO1xuXG4gICAgdmFyIGJqc1hwdWIgPSBianNOb2RlLnRvQmFzZTU4KCk7XG4gICAgLy8gY29uc3Qga2V5WHB1Yjogc3RyaW5nID0gY29udmVydFhwdWIoa2V5Lm1lc3NhZ2UueHB1YiwgbmV0d29yayk7XG4gICAgdmFyIGtleVhwdWIgPSBjb252ZXJ0ID8gY29udmVydFhwdWIoa2V5Lm1lc3NhZ2UueHB1YiwgbmV0d29yaykgOiBiaXRjb2luLkhETm9kZS5mcm9tQmFzZTU4KGtleS5tZXNzYWdlLnhwdWIsIG5ldHdvcmspLnRvQmFzZTU4KCk7XG5cbiAgICBpZiAoYmpzWHB1YiAhPT0ga2V5WHB1Yikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleSB0cmFuc21pc3Npb24gZGV0ZWN0ZWQgLSAnICsgJ2ludmFsaWQgeHB1YiBjaGVjay4gJyArICdLZXk6ICcgKyBianNYcHViICsgJywgJyArICdSZWNlaXZlZDogJyArIGtleVhwdWIpO1xuICAgIH1cblxuICAgIHJldHVybiBianNOb2RlO1xufVxuXG4vKiBleHBvcnQgZnVuY3Rpb24gY2hlY2tEZXJpdmF0aW9uKFxuICAgIHBhckJqc05vZGU6IGJpdGNvaW4uSEROb2RlLFxuICAgIGNoaWxkQmpzTm9kZTogYml0Y29pbi5IRE5vZGUsXG4gICAgc3VmZml4OiBudW1iZXJcbik6IHZvaWQge1xuICAgIGNvbnN0IGRlcml2ZWRDaGlsZEJqc05vZGUgPSBwYXJCanNOb2RlLmRlcml2ZShzdWZmaXgpO1xuXG4gICAgY29uc3QgZGVyaXZlZFhwdWIgPSBkZXJpdmVkQ2hpbGRCanNOb2RlLnRvQmFzZTU4KCk7XG4gICAgY29uc3QgY29tcFhwdWIgPSBjaGlsZEJqc05vZGUudG9CYXNlNTgoKTtcblxuICAgIGlmIChkZXJpdmVkWHB1YiAhPT0gY29tcFhwdWIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHB1YmxpYyBrZXkgdHJhbnNtaXNzaW9uIGRldGVjdGVkIC0gJyArXG4gICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGNoaWxkIGNyb3NzLWNoZWNrLiAnICtcbiAgICAgICAgICAgICAgICAgICAgJ0NvbXB1dGVkIGRlcml2ZWQ6ICcgKyBkZXJpdmVkWHB1YiArICcsICcgK1xuICAgICAgICAgICAgICAgICAgICAnQ29tcHV0ZWQgcmVjZWl2ZWQ6ICcgKyBjb21wWHB1Yik7XG4gICAgfVxufSovXG5cbmZ1bmN0aW9uIGRlcml2ZVB1YktleUhhc2gobm9kZXMsIG5vZGVJeCwgYWRkcmVzc0l4KSB7XG4gICAgdmFyIG5vZGUgPSBub2Rlc1tub2RlSXhdLmRlcml2ZShhZGRyZXNzSXgpO1xuICAgIHZhciBwa2ggPSBub2RlLmdldElkZW50aWZpZXIoKTtcbiAgICByZXR1cm4gcGtoO1xufVxuXG4vLyBQcm94eVxuLy8gR2VuZXJhdGUgeHB1YiB3aXRoIG9yIHdpdGhvdXQgc2NyaXB0X3R5cGVcbmZ1bmN0aW9uIGdldEhETm9kZShzZXNzaW9uLCBwYXRoLCBuZXR3b3JrT3JDb2luSW5mbywgeHB1YkRlcml2ZSkge1xuICAgIHZhciBkZXZpY2UgPSBzZXNzaW9uLmRldmljZTtcbiAgICB2YXIgY2FuVXNlU2NyaXB0VHlwZSA9IGRldmljZSAmJiAoZGV2aWNlLmZlYXR1cmVzLm1ham9yX3ZlcnNpb24gPT09IDIgJiYgZGV2aWNlLmF0TGVhc3QoJzIuMC4xMCcpIHx8IGRldmljZS5mZWF0dXJlcy5tYWpvcl92ZXJzaW9uID09PSAxICYmIGRldmljZS5hdExlYXN0KCcxLjcuMicpKTtcbiAgICB2YXIgY29pbkluZm8gPSB0eXBlb2YgbmV0d29ya09yQ29pbkluZm8ubmFtZSA9PT0gJ3N0cmluZycgPyBuZXR3b3JrT3JDb2luSW5mbyA6IG51bGw7XG4gICAgaWYgKGNhblVzZVNjcmlwdFR5cGUgJiYgY29pbkluZm8pIHtcbiAgICAgICAgcmV0dXJuIGdldFNjcmlwdFR5cGVIRE5vZGUoc2Vzc2lvbiwgcGF0aCwgY29pbkluZm8sIHhwdWJEZXJpdmUpO1xuICAgIH1cbiAgICB2YXIgbmV0d29yayA9IGNvaW5JbmZvID8gY29pbkluZm8ubmV0d29yayA6IG5ldHdvcmtPckNvaW5JbmZvO1xuICAgIHJldHVybiBnZXRCaXRjb2luSEROb2RlKHNlc3Npb24sIHBhdGgsIG5ldHdvcmssIHhwdWJEZXJpdmUpO1xufVxuXG5mdW5jdGlvbiBnZXRTY3JpcHRUeXBlKHBhdGgsIGNvaW5JbmZvKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpIHx8IHBhdGgubGVuZ3RoIDwgMSkgcmV0dXJuO1xuICAgIHZhciBzID0gKHBhdGhbMF0gJiB+MHg4MDAwMDAwMCkgPj4+IDA7XG4gICAgc3dpdGNoIChzKSB7XG4gICAgICAgIGNhc2UgNDQ6XG4gICAgICAgICAgICByZXR1cm4gJ1NQRU5EQUREUkVTUyc7XG4gICAgICAgIGNhc2UgNDg6XG4gICAgICAgICAgICByZXR1cm4gJ1NQRU5ETVVMVElTSUcnO1xuICAgICAgICBjYXNlIDQ5OlxuICAgICAgICAgICAgcmV0dXJuIGNvaW5JbmZvLnNlZ3dpdFB1Yk1hZ2ljID8gJ1NQRU5EUDJTSFdJVE5FU1MnIDogdW5kZWZpbmVkO1xuICAgICAgICBjYXNlIDg0OlxuICAgICAgICAgICAgcmV0dXJuIGNvaW5JbmZvLnNlZ3dpdE5hdGl2ZVB1Yk1hZ2ljID8gJ1NQRU5EV0lUTkVTUycgOiB1bmRlZmluZWQ7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm47XG4gICAgfVxufVxuXG5mdW5jdGlvbiBnZXRTY3JpcHRUeXBlTmV0d29yayhzY3JpcHRUeXBlLCBjb2luSW5mbykge1xuICAgIHZhciBjbG9uZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29pbkluZm8pKTtcbiAgICBpZiAoc2NyaXB0VHlwZSA9PT0gJ1NQRU5EUDJTSFdJVE5FU1MnICYmIGNvaW5JbmZvLnNlZ3dpdFB1Yk1hZ2ljKSB7XG4gICAgICAgIGNsb25lLm5ldHdvcmsuYmlwMzIucHVibGljID0gY29pbkluZm8uc2Vnd2l0UHViTWFnaWM7XG4gICAgfVxuICAgIGlmIChzY3JpcHRUeXBlID09PSAnU1BFTkRXSVRORVNTJyAmJiBjb2luSW5mby5zZWd3aXROYXRpdmVQdWJNYWdpYykge1xuICAgICAgICBjbG9uZS5uZXR3b3JrLmJpcDMyLnB1YmxpYyA9IGNvaW5JbmZvLnNlZ3dpdE5hdGl2ZVB1Yk1hZ2ljO1xuICAgIH1cbiAgICByZXR1cm4gY2xvbmUubmV0d29yaztcbn1cblxuLy8gY2FsbGluZyBHZXRQdWJsaWNLZXkgbWVzc2FnZSB3aXRoIHNjcmlwdF90eXBlIGZpZWxkXG4vLyB0byBtYWtlIGl0IHdvcmsgd2UgbmVlZCB0byBoYXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbmV0d29yayAoc2Vnd2l0UHViTWFnaWMgYW5kIHNlZ3dpdE5hdGl2ZVB1Yk1hZ2ljKVxuLy8gdGhhdCdzIHdoeSB0aGlzIG1ldGhvZCBzaG91bGQgYWNjZXB0IENvaW5JbmZvIG9iamVjdCBvbmx5LCBhbiBleHRlbmRlZCBjb2luIGRlZmluaXRpb24gZnJvbSBcIm15dHJlem9yXCJcbi8vIGNvbnNpZGVyIHRvIGFkZCBzY3JpcHRfdHlwZSB2YWx1ZXMgd2l0Y2ggc2Vnd2l0IGFuZCBiZWNoMzIgbWFnaWMgZmllbGRzIHRvIGJpdGNvaW5qcy10cmV6b3IgbGliXG5mdW5jdGlvbiBnZXRTY3JpcHRUeXBlSEROb2RlKHNlc3Npb24sIHBhdGgsIGNvaW5JbmZvLCB4cHViRGVyaXZlKSB7XG4gICAgdmFyIHN1ZmZpeCA9IDA7XG4gICAgdmFyIGNoaWxkUGF0aCA9IHBhdGguY29uY2F0KFtzdWZmaXhdKTtcbiAgICB2YXIgc2NyaXB0VHlwZSA9IGdldFNjcmlwdFR5cGUocGF0aCwgY29pbkluZm8pO1xuICAgIHZhciBuZXR3b3JrID0gZ2V0U2NyaXB0VHlwZU5ldHdvcmsoc2NyaXB0VHlwZSwgY29pbkluZm8pO1xuXG4gICAgcmV0dXJuIHNlc3Npb24uX2dldFB1YmxpY0tleUludGVybmFsKHBhdGgsIGNvaW5JbmZvLm5hbWUsIHNjcmlwdFR5cGUpLnRoZW4oZnVuY3Rpb24gKHJlc0tleSkge1xuICAgICAgICB2YXIgcmVzTm9kZSA9IHB1YktleTJianNOb2RlKHJlc0tleSwgbmV0d29yaywgZmFsc2UpO1xuICAgICAgICB2YXIgcmVzWHB1YiA9IHJlc0tleS5tZXNzYWdlLnhwdWI7XG5cbiAgICAgICAgcmV0dXJuIHNlc3Npb24uX2dldFB1YmxpY0tleUludGVybmFsKGNoaWxkUGF0aCwgY29pbkluZm8ubmFtZSwgc2NyaXB0VHlwZSkudGhlbihmdW5jdGlvbiAoY2hpbGRLZXkpIHtcbiAgICAgICAgICAgIC8vIGNvbnN0IGNoaWxkTm9kZSA9IHB1YktleTJianNOb2RlKGNoaWxkS2V5LCBuZXR3b3JrKTtcbiAgICAgICAgICAgIHZhciBjaGlsZFhwdWIgPSBjaGlsZEtleS5tZXNzYWdlLnhwdWI7XG4gICAgICAgICAgICByZXR1cm4geHB1YkRlcml2ZShyZXNYcHViLCBuZXR3b3JrLCBzdWZmaXgpLnRoZW4oZnVuY3Rpb24gKGFjdHVhbENoaWxkWHB1Yikge1xuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxDaGlsZFhwdWIgIT09IGNoaWxkWHB1Yikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleSB0cmFuc21pc3Npb24gZGV0ZWN0ZWQgLSAnICsgJ2ludmFsaWQgY2hpbGQgY3Jvc3MtY2hlY2suICcgKyAnQ29tcHV0ZWQgZGVyaXZlZDogJyArIGFjdHVhbENoaWxkWHB1YiArICcsICcgKyAnQ29tcHV0ZWQgcmVjZWl2ZWQ6ICcgKyBjaGlsZFhwdWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBteXRyZXpvciB3YWxsZXQgaXMgc3RpbGwgZXhwZWN0aW5nIHhwdWJzIHRvIGJlIGluIGxlZ2FjeSBmb3JtYXRcbiAgICAgICAgICAgICAgICAvLyBuZXR3b3JrLnB1YmxpYyBzaG91bGQgYmUgc2V0IHRvIGRlZmF1bHQgKENvaW5JbmZvLnhwdWJfbWFnaWMpXG4gICAgICAgICAgICAgICAgLy8gU2luY2UgbmV0d29yayBpcyBhbHJlYWR5IGNvbnZlcnRlZCBpbiBcImdldFNjcmlwdFR5cGVOZXR3b3JrXCIgbWV0aG9kIHhwdWJfbWFnaWNfc2Vnd2l0X3Ayc2ggbWF5IGJlIHVzZWQgYXQgdGhpcyBwb2ludFxuICAgICAgICAgICAgICAgIC8vIHNldCBiYWNrIG5ldHdvcmsgdG8gZGVmYXVsdFxuICAgICAgICAgICAgICAgIC8vIGl0IHNob3VsZCBiZSBmaXhlZCBpbiBteXRyZXpvciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBjb252ZXJzaW9uIGJhY2sgYW5kIGZvcnRoXG4gICAgICAgICAgICAgICAgcmVzTm9kZS5rZXlQYWlyLm5ldHdvcmsgPSBjb2luSW5mby5uZXR3b3JrO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXNOb2RlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG4vLyBmdyBiZWxvdyAxLjcuMSBhbmQgMi4wLjggZG9lcyBub3QgcmV0dXJuIHhwdWJzIGluIHByb3BlciBmb3JtYXRcbmZ1bmN0aW9uIGdldEJpdGNvaW5IRE5vZGUoc2Vzc2lvbiwgcGF0aCwgbmV0d29yaywgeHB1YkRlcml2ZSkge1xuICAgIHZhciBzdWZmaXggPSAwO1xuICAgIHZhciBjaGlsZFBhdGggPSBwYXRoLmNvbmNhdChbc3VmZml4XSk7XG5cbiAgICByZXR1cm4gc2Vzc2lvbi5fZ2V0UHVibGljS2V5SW50ZXJuYWwocGF0aCkudGhlbihmdW5jdGlvbiAocmVzS2V5KSB7XG4gICAgICAgIHZhciByZXNOb2RlID0gcHViS2V5MmJqc05vZGUocmVzS2V5LCBuZXR3b3JrKTtcbiAgICAgICAgdmFyIHJlc1hwdWIgPSByZXNLZXkubWVzc2FnZS54cHViO1xuXG4gICAgICAgIHJldHVybiBzZXNzaW9uLl9nZXRQdWJsaWNLZXlJbnRlcm5hbChjaGlsZFBhdGgpLnRoZW4oZnVuY3Rpb24gKGNoaWxkS2V5KSB7XG4gICAgICAgICAgICAvLyBjb25zdCBjaGlsZE5vZGUgPSBwdWJLZXkyYmpzTm9kZShjaGlsZEtleSwgbmV0d29yayk7XG4gICAgICAgICAgICB2YXIgY2hpbGRYcHViID0gY2hpbGRLZXkubWVzc2FnZS54cHViO1xuICAgICAgICAgICAgcmV0dXJuIHhwdWJEZXJpdmUocmVzWHB1YiwgYml0Y29pbi5uZXR3b3Jrcy5iaXRjb2luLCBzdWZmaXgpLnRoZW4oZnVuY3Rpb24gKGFjdHVhbENoaWxkWHB1Yikge1xuICAgICAgICAgICAgICAgIGlmIChhY3R1YWxDaGlsZFhwdWIgIT09IGNoaWxkWHB1Yikge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHVibGljIGtleSB0cmFuc21pc3Npb24gZGV0ZWN0ZWQgLSAnICsgJ2ludmFsaWQgY2hpbGQgY3Jvc3MtY2hlY2suICcgKyAnQ29tcHV0ZWQgZGVyaXZlZDogJyArIGFjdHVhbENoaWxkWHB1YiArICcsICcgKyAnQ29tcHV0ZWQgcmVjZWl2ZWQ6ICcgKyBjaGlsZFhwdWIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzTm9kZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxudmFyIEhBUkRFTklORyA9IDB4ODAwMDAwMDA7XG5cbmZ1bmN0aW9uIGhhcmRlbihudW1iZXIpIHtcbiAgICByZXR1cm4gKG51bWJlciB8IEhBUkRFTklORykgPj4+IDA7XG59IiwiLyoqXG4gKiBAbGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5jYXNoanMvY2FzaGFkZHJcbiAqIENvcHlyaWdodCAoYykgMjAxNy0yMDE4IEVtaWxpbyBBbG1hbnNpXG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIHNvZnR3YXJlIGxpY2Vuc2UsIHNlZSB0aGUgYWNjb21wYW55aW5nXG4gKiBmaWxlIExJQ0VOU0Ugb3IgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gdXRpbGl0eS5cbiAqXG4gKiBAbW9kdWxlIHZhbGlkYXRpb25cbiAqL1xuXG4vKipcbiAqIEVycm9yIHRocm93biB3aGVuIGVuY29kaW5nIG9yIGRlY29kaW5nIGZhaWwgZHVlIHRvIGludmFsaWQgaW5wdXQuXG4gKlxuICogQGNvbnN0cnVjdG9yIFZhbGlkYXRpb25FcnJvclxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgRXJyb3IgZGVzY3JpcHRpb24uXG4gKi9cbmZ1bmN0aW9uIFZhbGlkYXRpb25FcnJvcihtZXNzYWdlKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcigpO1xuICB0aGlzLm5hbWUgPSBlcnJvci5uYW1lID0gJ1ZhbGlkYXRpb25FcnJvcic7XG4gIHRoaXMubWVzc2FnZSA9IGVycm9yLm1lc3NhZ2UgPSBtZXNzYWdlO1xuICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2s7XG59XG5cblZhbGlkYXRpb25FcnJvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSk7XG5cbi8qKlxuICogVmFsaWRhdGVzIGEgZ2l2ZW4gY29uZGl0aW9uLCB0aHJvd2luZyBhIHtAbGluayBWYWxpZGF0aW9uRXJyb3J9IGlmXG4gKiB0aGUgZ2l2ZW4gY29uZGl0aW9uIGRvZXMgbm90IGhvbGQuXG4gKlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtib29sZWFufSBjb25kaXRpb24gQ29uZGl0aW9uIHRvIHZhbGlkYXRlLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgRXJyb3IgbWVzc2FnZSBpbiBjYXNlIHRoZSBjb25kaXRpb24gZG9lcyBub3QgaG9sZC5cbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGUoY29uZGl0aW9uLCBtZXNzYWdlKSB7XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihtZXNzYWdlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgVmFsaWRhdGlvbkVycm9yOiBWYWxpZGF0aW9uRXJyb3IsXG4gIHZhbGlkYXRlOiB2YWxpZGF0ZSxcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHVuZGVmaW5lZDtcblxudmFyIF9yZWdlbmVyYXRvciA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvcmVnZW5lcmF0b3InKTtcblxudmFyIF9yZWdlbmVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWdlbmVyYXRvcik7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbnZhciBfc2VtdmVyQ29tcGFyZSA9IHJlcXVpcmUoJ3NlbXZlci1jb21wYXJlJyk7XG5cbnZhciBfc2VtdmVyQ29tcGFyZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZW12ZXJDb21wYXJlKTtcblxudmFyIF9ldmVudHMgPSByZXF1aXJlKCcuL2V2ZW50cycpO1xuXG52YXIgX2Zsb3dFdmVudHMgPSByZXF1aXJlKCcuL2Zsb3ctZXZlbnRzJyk7XG5cbnZhciBfc2Vzc2lvbiA9IHJlcXVpcmUoJy4vc2Vzc2lvbicpO1xuXG52YXIgX3Nlc3Npb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2Vzc2lvbik7XG5cbnZhciBfY29ubmVjdGlvbkxvY2sgPSByZXF1aXJlKCcuL3V0aWxzL2Nvbm5lY3Rpb25Mb2NrJyk7XG5cbnZhciBfaGRub2RlID0gcmVxdWlyZSgnLi91dGlscy9oZG5vZGUnKTtcblxudmFyIF9iaXRjb2luanNMaWJaY2FzaCA9IHJlcXVpcmUoJ2JpdGNvaW5qcy1saWItemNhc2gnKTtcblxudmFyIGJpdGNvaW4gPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfYml0Y29pbmpzTGliWmNhc2gpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfdG9Db25zdW1hYmxlQXJyYXkoYXJyKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBBcnJheShhcnIubGVuZ3RoKTsgaSA8IGFyci5sZW5ndGg7IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9IGVsc2UgeyByZXR1cm4gQXJyYXkuZnJvbShhcnIpOyB9IH1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IGZ1bmN0aW9uIHN0ZXAoa2V5LCBhcmcpIHsgdHJ5IHsgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpOyB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyByZXR1cm47IH0gaWYgKGluZm8uZG9uZSkgeyByZXNvbHZlKHZhbHVlKTsgfSBlbHNlIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHsgc3RlcChcIm5leHRcIiwgdmFsdWUpOyB9LCBmdW5jdGlvbiAoZXJyKSB7IHN0ZXAoXCJ0aHJvd1wiLCBlcnIpOyB9KTsgfSB9IHJldHVybiBzdGVwKFwibmV4dFwiKTsgfSk7IH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG4vLyBhIHNsaWdodCBoYWNrXG4vLyB0aGlzIGVycm9yIHN0cmluZyBpcyBoYXJkLWNvZGVkXG4vLyBpbiBib3RoIGJyaWRnZSBhbmQgZXh0ZW5zaW9uXG52YXIgV1JPTkdfUFJFVklPVVNfU0VTU0lPTl9FUlJPUl9NRVNTQUdFID0gJ3dyb25nIHByZXZpb3VzIHNlc3Npb24nO1xuXG52YXIgRGV2aWNlID0gZnVuY3Rpb24gKF9FdmVudEVtaXR0ZXIpIHtcbiAgICBfaW5oZXJpdHMoRGV2aWNlLCBfRXZlbnRFbWl0dGVyKTtcblxuICAgIC8vIEZpcnN0IG9mIHR3byBcImFkdmFuY2VkXCIgaW50ZWdyaXR5IGNoZWNrc1xuICAgIC8vIFdlIGNoZWNrIHdoZXRoZXIgdGhlIHhwdWIgdGhhdCB3ZSBnZXQgZnJvbSB0aGUgdHJlem9yIGlzXG4gICAgLy8gdGhlIHNhbWUgdGhhdCAqdGhlIGFwcGxpY2F0aW9uKiByZW1lbWJlcnMuXG4gICAgLy8gKlRoZSBhcHBsaWNhdGlvbiogc2V0cyB0aGlzIGJhc2VkIG9uIHdoYXQgaXQgcmVtZW1iZXJzLlxuICAgIC8vIFRoZW4sIGJlZm9yZSBzb21lIGFjdGlvbnMgKHNlZSBAaW50ZWdyaXR5Q2hlY2sgaW4gc2Vzc2lvbi5qcylcbiAgICAvLyB3ZSBmaXJzdCBsb29rIGZvciB4cHViIHdpdGggdGhpcyBwYXRoIGFuZCBjb21wYXJlLlxuICAgIC8vIElmIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IHNldCB0aGlzLCB3ZSBhcmUgc3RpbGwgYXQgbGVhc3RcbiAgICAvLyBjb21wYXJpbmcgZGlmZmVyZW50IGNhbGxzIHdpdGggZWFjaCBvdGhlciwgc2luY2UgdGhpcyBpcyBzZXQgb24gZmlyc3QgY2FsbC5cbiAgICBmdW5jdGlvbiBEZXZpY2UodHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBmZWF0dXJlcywgZGV2aWNlTGlzdCwgaGFzRGVidWdMaW5rKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEZXZpY2UpO1xuXG4gICAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChEZXZpY2UuX19wcm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihEZXZpY2UpKS5jYWxsKHRoaXMpKTtcblxuICAgICAgICBfdGhpcy5hY3Rpdml0eUluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuY29ubmVjdGVkID0gdHJ1ZTtcbiAgICAgICAgX3RoaXMuY2xlYXJTZXNzaW9uID0gZmFsc2U7XG4gICAgICAgIF90aGlzLmNsZWFyU2Vzc2lvblRpbWUgPSAxMCAqIDYwICogMTAwMDtcbiAgICAgICAgX3RoaXMuY2xlYXJTZXNzaW9uVGltZW91dCA9IG51bGw7XG4gICAgICAgIF90aGlzLmNsZWFyU2Vzc2lvbkZ1dHVyZSA9IDA7XG4gICAgICAgIF90aGlzLnJlbWVtYmVyUGxhaW50ZXh0UGFzc3BocmFzZSA9IGZhbHNlO1xuICAgICAgICBfdGhpcy5yZW1lbWJlcmVkUGxhaW50ZXh0UGFzc2hwcmFzZSA9IG51bGw7XG4gICAgICAgIF90aGlzLnBhc3NwaHJhc2VTdGF0ZSA9IG51bGw7XG4gICAgICAgIF90aGlzLmludGVncml0eUNoZWNraW5nWHB1YlBhdGggPSBbKDAsIF9oZG5vZGUuaGFyZGVuKSg0OSksICgwLCBfaGRub2RlLmhhcmRlbikoMCksICgwLCBfaGRub2RlLmhhcmRlbikoMCldO1xuICAgICAgICBfdGhpcy5pbnRlZ3JpdHlDaGVja2luZ1hwdWJOZXR3b3JrID0gX2hkbm9kZS5CSVRDT0lOX0NPSU5fSU5GTztcbiAgICAgICAgX3RoaXMuZGlzY29ubmVjdEV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MCgnZGlzY29ubmVjdCcsIF90aGlzKTtcbiAgICAgICAgX3RoaXMuYnV0dG9uRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdidXR0b24nLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmVycm9yRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdlcnJvcicsIF90aGlzKTtcbiAgICAgICAgX3RoaXMucGFzc3BocmFzZUV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgncGFzc3BocmFzZScsIF90aGlzKTtcbiAgICAgICAgX3RoaXMud29yZEV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnd29yZCcsIF90aGlzKTtcbiAgICAgICAgX3RoaXMuY2hhbmdlZFNlc3Npb25zRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQyKCdjaGFuZ2VkU2Vzc2lvbnMnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnBpbkV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MigncGluJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5yZWNlaXZlRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQyKCdyZWNlaXZlJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5zZW5kRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQyKCdzZW5kJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5fc3RvbGVuRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQwKCdzdG9sZW4nLCBfdGhpcyk7XG4gICAgICAgIHZhciBtYWpvcl92ZXJzaW9uID0gZmVhdHVyZXMubWFqb3JfdmVyc2lvbixcbiAgICAgICAgICAgIG1pbm9yX3ZlcnNpb24gPSBmZWF0dXJlcy5taW5vcl92ZXJzaW9uLFxuICAgICAgICAgICAgcGF0Y2hfdmVyc2lvbiA9IGZlYXR1cmVzLnBhdGNoX3ZlcnNpb24sXG4gICAgICAgICAgICBib290bG9hZGVyX21vZGUgPSBmZWF0dXJlcy5ib290bG9hZGVyX21vZGU7XG4gICAgICAgIC8vID09PSBpbW11dGFibGUgcHJvcGVydGllc1xuXG4gICAgICAgIF90aGlzLnRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiAgICAgICAgX3RoaXMub3JpZ2luYWxEZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgX3RoaXMuZGV2aWNlTGlzdCA9IGRldmljZUxpc3Q7XG5cbiAgICAgICAgaWYgKF90aGlzLmRldmljZUxpc3Qub3B0aW9ucy5jbGVhclNlc3Npb24pIHtcbiAgICAgICAgICAgIF90aGlzLmNsZWFyU2Vzc2lvbiA9IHRydWU7XG4gICAgICAgICAgICBpZiAoX3RoaXMuZGV2aWNlTGlzdC5vcHRpb25zLmNsZWFyU2Vzc2lvblRpbWUpIHtcbiAgICAgICAgICAgICAgICBfdGhpcy5jbGVhclNlc3Npb25UaW1lID0gX3RoaXMuZGV2aWNlTGlzdC5vcHRpb25zLmNsZWFyU2Vzc2lvblRpbWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF90aGlzLmRldmljZUxpc3Qub3B0aW9ucy5yZW1lbWJlckRldmljZVBhc3NwaHJhc2UpIHtcbiAgICAgICAgICAgIF90aGlzLnJlbWVtYmVyUGxhaW50ZXh0UGFzc3BocmFzZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyA9PT0gbXV0YWJsZSBwcm9wZXJ0aWVzXG4gICAgICAgIC8vIGZlYXR1cmVzIGdldCByZWxvYWRlZCBhZnRlciBldmVyeSBpbml0aWFsaXphdGlvblxuICAgICAgICBfdGhpcy5mZWF0dXJlcyA9IF9leHRlbmRzKHt9LCBmZWF0dXJlcywgX3RoaXMuZ2V0VmVyc2lvbnMobWFqb3JfdmVyc2lvbiwgbWlub3JfdmVyc2lvbiwgcGF0Y2hfdmVyc2lvbiwgYm9vdGxvYWRlcl9tb2RlKSk7XG4gICAgICAgIF90aGlzLmNvbm5lY3RlZCA9IHRydWU7XG5cbiAgICAgICAgX3RoaXMuaGFzRGVidWdMaW5rID0gaGFzRGVidWdMaW5rO1xuXG4gICAgICAgIF90aGlzLl93YXRjaCgpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgLy8gSW5pdGlhbGl6ZXMgZGV2aWNlIHdpdGggdGhlIGdpdmVuIGRlc2NyaXB0b3IsXG4gICAgLy8gcnVucyBhIGdpdmVuIGZ1bmN0aW9uIGFuZCB0aGVuIHJlbGVhc2VzIHRoZSBzZXNzaW9uLlxuICAgIC8vIFJldHVybiBwcm9taXNlIHdpdGggdGhlIHJlc3VsdCBvZiB0aGUgZnVuY3Rpb24uXG4gICAgLy8gRmlyc3QgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBoYXMgdHdvIHBhcmFtZXRlcnNcbiAgICAvLyAtIGZpcnN0IHRoZSBzZXNzaW9uIGFuZCBzZWNvbmQgdGhlIGZyZXNoIGRldmljZSBmZWF0dXJlcy5cbiAgICAvLyBOb3RlIC0gd2hlbiBkZXNjcmlwdG9yLnBhdGggIT0gbnVsbCwgdGhpcyB3aWxsIHN0ZWFsIHRoZSBkZXZpY2UgZnJvbSBzb21lb25lIGVsc2VcbiAgICAvLyBpbiBtaWxpc2Vjb25kc1xuXG5cbiAgICBfY3JlYXRlQ2xhc3MoRGV2aWNlLCBbe1xuICAgICAgICBrZXk6ICd3YWl0Rm9yU2Vzc2lvbkFuZFJ1bicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB3YWl0Rm9yU2Vzc2lvbkFuZFJ1bihmbiwgb3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnNfID0gb3B0aW9ucyA9PSBudWxsID8ge30gOiBvcHRpb25zO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVuKGZuLCBfZXh0ZW5kcyh7fSwgb3B0aW9uc18sIHsgd2FpdGluZzogdHJ1ZSB9KSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3J1bkFnZ3Jlc3NpdmUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcnVuQWdncmVzc2l2ZShmbiwgb3B0aW9ucykge1xuICAgICAgICAgICAgdmFyIG9wdGlvbnNfID0gb3B0aW9ucyA9PSBudWxsID8ge30gOiBvcHRpb25zO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucnVuKGZuLCBfZXh0ZW5kcyh7fSwgb3B0aW9uc18sIHsgYWdncmVzc2l2ZTogdHJ1ZSB9KSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2dldFZlcnNpb25zJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldFZlcnNpb25zKG1ham9yX3ZlcnNpb24sIG1pbm9yX3ZlcnNpb24sIHBhdGNoX3ZlcnNpb24sIGlzQm9vdGxvYWRlcikge1xuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgICAgICAgICAgaWYgKGlzQm9vdGxvYWRlcikge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgYm9vdGxvYWRlcl9tYWpvcl92ZXJzaW9uOiBtYWpvcl92ZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICBib290bG9hZGVyX21pbm9yX3ZlcnNpb246IG1pbm9yX3ZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIGJvb3Rsb2FkZXJfcGF0Y2hfdmVyc2lvbjogcGF0Y2hfdmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfbWFqb3JfdmVyc2lvbjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfbWlub3JfdmVyc2lvbjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfcGF0Y2hfdmVyc2lvbjogbnVsbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHtcbiAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfbWFqb3JfdmVyc2lvbjogbWFqb3JfdmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfbWlub3JfdmVyc2lvbjogbWlub3JfdmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgZmlybXdhcmVfcGF0Y2hfdmVyc2lvbjogcGF0Y2hfdmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgYm9vdGxvYWRlcl9tYWpvcl92ZXJzaW9uOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBib290bG9hZGVyX21pbm9yX3ZlcnNpb246IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIGJvb3Rsb2FkZXJfcGF0Y2hfdmVyc2lvbjogbnVsbFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbml0aWFsaXplcyBkZXZpY2Ugd2l0aCB0aGUgZ2l2ZW4gZGVzY3JpcHRvcixcbiAgICAgICAgLy8gcnVucyBhIGdpdmVuIGZ1bmN0aW9uIGFuZCB0aGVuIHJlbGVhc2VzIHRoZSBzZXNzaW9uLlxuICAgICAgICAvLyBSZXR1cm4gcHJvbWlzZSB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uLlxuICAgICAgICAvLyBGaXJzdCBwYXJhbWV0ZXIgaXMgYSBmdW5jdGlvbiB0aGF0IGhhcyBzZXNzaW9uIGFzIGEgcGFyYW1ldGVyXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3J1bicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBydW4oZm4sIG9wdGlvbnMpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgICAgICBpZiAoIXRoaXMuY29ubmVjdGVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignRGV2aWNlIGRpc2Nvbm5lY3RlZC4nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb3B0aW9uc18gPSBvcHRpb25zID09IG51bGwgPyB7fSA6IG9wdGlvbnM7XG4gICAgICAgICAgICB2YXIgYWdncmVzc2l2ZSA9ICEhb3B0aW9uc18uYWdncmVzc2l2ZTtcbiAgICAgICAgICAgIHZhciB3YWl0aW5nID0gISFvcHRpb25zXy53YWl0aW5nO1xuXG4gICAgICAgICAgICB2YXIgZGVidWdMaW5rID0gISFvcHRpb25zXy5kZWJ1Z0xpbms7XG4gICAgICAgICAgICB2YXIgc2tpcEZpbmFsUmVsb2FkID0gISFvcHRpb25zXy5za2lwRmluYWxSZWxvYWQgfHwgZGVidWdMaW5rO1xuICAgICAgICAgICAgdmFyIG9ubHlPbmVBY3Rpdml0eSA9ICEhb3B0aW9uc18ub25seU9uZUFjdGl2aXR5O1xuICAgICAgICAgICAgaWYgKG9ubHlPbmVBY3Rpdml0eSAmJiB0aGlzLmFjdGl2aXR5SW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ09uZSBhY3Rpdml0eSBhbHJlYWR5IHJ1bm5pbmcuJykpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFjdGl2aXR5SW5Qcm9ncmVzcyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLl9zdG9wQ2xlYXJTZXNzaW9uVGltZW91dCgpO1xuXG4gICAgICAgICAgICB2YXIgY3VycmVudFNlc3Npb24gPSB0aGlzLmRldmljZUxpc3QuZ2V0U2Vzc2lvbih0aGlzLm9yaWdpbmFsRGVzY3JpcHRvci5wYXRoLCBkZWJ1Z0xpbmspO1xuICAgICAgICAgICAgaWYgKCFhZ2dyZXNzaXZlICYmICF3YWl0aW5nICYmIGN1cnJlbnRTZXNzaW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdEZXZpY2UgdXNlZCBpbiBhbm90aGVyIHdpbmRvdy4nKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYWdncmVzc2l2ZSAmJiB3YWl0aW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQ29tYmluYXRpb24gb2YgYWdncmVzc2l2ZSBhbmQgd2FpdGluZyBkb2VzblxcJ3QgbWFrZSBzZW5zZS4nKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciB3YWl0aW5nUHJvbWlzZSA9IFByb21pc2UucmVzb2x2ZShjdXJyZW50U2Vzc2lvbik7XG4gICAgICAgICAgICBpZiAod2FpdGluZyAmJiBjdXJyZW50U2Vzc2lvbiAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgd2FpdGluZ1Byb21pc2UgPSB0aGlzLl93YWl0Rm9yTnVsbFNlc3Npb24oZGVidWdMaW5rKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdmFyIHJ1bkZpbmFsID0gZnVuY3Rpb24gcnVuRmluYWwocmVzLCBlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmICghKGVycm9yICYmIGVycm9yLm1lc3NhZ2UgPT09IFdST05HX1BSRVZJT1VTX1NFU1NJT05fRVJST1JfTUVTU0FHRSAmJiB3YWl0aW5nKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMyLmNsZWFyU2Vzc2lvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLl9zdGFydENsZWFyU2Vzc2lvblRpbWVvdXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gd2FpdGluZ1Byb21pc2UudGhlbihmdW5jdGlvbiAocmVzb2x2ZWRTZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBfZXh0ZW5kcyh7fSwgX3RoaXMyLm9yaWdpbmFsRGVzY3JpcHRvciwgeyBzZXNzaW9uOiByZXNvbHZlZFNlc3Npb24gfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgYml0IG92ZXJlbmdpbmVlcmVkLCBidXQgSSBhbSBub3Qgc3VyZSBob3cgdG8gZG8gaXQgb3RoZXJ3aXNlXG4gICAgICAgICAgICAgICAgLy8gSSB3YW50IHRoZSBhY3Rpb24gdG8gc3RvcCB3aGVuIHRoZSBkZXZpY2UgaXMgc3RvbGVuLFxuICAgICAgICAgICAgICAgIC8vIGJ1dCBJIGRvbid0IHdhbnQgdG8gYWRkIGxpc3RlbmVyIGV2ZW50cyB0aGF0IGFyZSBuZXZlciByZW1vdmVkLi4uXG4gICAgICAgICAgICAgICAgLy8gU28gSSBjb21iaW5lIGVtaXR0ZXJzIGFuZCBwcm9taXNlc1xuICAgICAgICAgICAgICAgIHZhciBlID0gbmV3IF9ldmVudHMuRXZlbnRFbWl0dGVyKCk7XG4gICAgICAgICAgICAgICAgdmFyIHN0b2xlblAgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvbmNlU3RvbGVuID0gZnVuY3Rpb24gb25jZVN0b2xlbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUucmVtb3ZlQWxsTGlzdGVuZXJzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdUaGUgYWN0aW9uIHdhcyBpbnRlcnJ1cHRlZCBieSBhbm90aGVyIGFwcGxpY2F0aW9uLicpKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMyLl9zdG9sZW5FdmVudC5vbmNlKG9uY2VTdG9sZW4pO1xuICAgICAgICAgICAgICAgICAgICBlLm9uY2UoJ2RvbmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuX3N0b2xlbkV2ZW50LnJlbW92ZUxpc3RlbmVyKG9uY2VTdG9sZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIHZhciByZXMgPSBEZXZpY2UuX3J1bihmdW5jdGlvbiAoc2Vzc2lvbiwgZmVhdHVyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5fcnVuSW5zaWRlKGZuLCBzZXNzaW9uLCBmZWF0dXJlcywgc2tpcEZpbmFsUmVsb2FkKTtcbiAgICAgICAgICAgICAgICB9LCBfdGhpczIudHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBfdGhpczIuZGV2aWNlTGlzdCwgZnVuY3Rpb24gKHNlc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRlYnVnTGluaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmN1cnJlbnREZWJ1Z1Nlc3Npb25PYmplY3QgPSBzZXNzaW9uO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmN1cnJlbnRTZXNzaW9uT2JqZWN0ID0gc2Vzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWdMaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuY3VycmVudERlYnVnU2Vzc2lvbk9iamVjdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuY3VycmVudFNlc3Npb25PYmplY3QgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghZGVidWdMaW5rKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuYWN0aXZpdHlJblByb2dyZXNzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IG51bGwgJiYgX3RoaXMyLmNvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgPT09ICdBY3Rpb24gd2FzIGludGVycnVwdGVkLicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuX3N0b2xlbkV2ZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvbkRpc2Nvbm5lY3QgPSBmdW5jdGlvbiBvbkRpc2Nvbm5lY3QoKSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9uQ2hhbmdlZCA9IGZ1bmN0aW9uIG9uQ2hhbmdlZCgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfdGhpczIuaXNTdG9sZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi5fc3RvbGVuRXZlbnQuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmRpc2Nvbm5lY3RFdmVudC5yZW1vdmVMaXN0ZW5lcihvbkRpc2Nvbm5lY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkRpc2Nvbm5lY3QgPSBmdW5jdGlvbiBvbkRpc2Nvbm5lY3QoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczIuY2hhbmdlZFNlc3Npb25zRXZlbnQucmVtb3ZlTGlzdGVuZXIob25DaGFuZ2VkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmNoYW5nZWRTZXNzaW9uc0V2ZW50Lm9uY2Uob25DaGFuZ2VkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmRpc2Nvbm5lY3RFdmVudC5vbmNlKG9uRGlzY29ubmVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBfdGhpczIsIGRlYnVnTGluayk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZUZpbmFsbHkoUHJvbWlzZS5hbGwoW3Byb21pc2VGaW5hbGx5KHJlcywgZnVuY3Rpb24gKG9rLCBlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5lbWl0KCdkb25lJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KSwgc3RvbGVuUF0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgICAgIH0pLCBmdW5jdGlvbiAocmVzLCBlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcnVuRmluYWwocmVzLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghX3RoaXMyLmNvbm5lY3RlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdEZXZpY2Ugd2FzIGRpc2Nvbm5lY3RlZCBkdXJpbmcgYWN0aW9uLicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvci5tZXNzYWdlID09PSBXUk9OR19QUkVWSU9VU19TRVNTSU9OX0VSUk9SX01FU1NBR0UgJiYgd2FpdGluZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHJ5aW5nIGFnYWluISEhXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLl93YWl0Rm9yTnVsbFNlc3Npb24oZGVidWdMaW5rKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMyLnJ1bihmbiwgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlZSB0aGUgY29tbWVudCBvbiB0b3Agb24gaW50ZWdyaXR5Q2hlY2tpbmdYcHViLlxuICAgICAgICAvLyBUaGlzIHNldHMgdGhlIHhwdWIgdGhhdCB3ZSB3aWxsIHJlLWNoZWNrIHdoZW4gcG9zc2libGUgKGJlZm9yZSBpbXBvcnRhbnQgYWN0aW9ucywgYW5kXG4gICAgICAgIC8vIGFmdGVyIGFsbCBhY3Rpb24gd2hlbiBpdCBtYWtlcyBzZW5zZSlcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2V0Q2hlY2tpbmdYcHViJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNldENoZWNraW5nWHB1YihpbnRlZ3JpdHlDaGVja2luZ1hwdWJQYXRoLCBpbnRlZ3JpdHlDaGVja2luZ1hwdWIsIGludGVncml0eUNoZWNraW5nWHB1Yk5ldHdvcmspIHtcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyaXR5Q2hlY2tpbmdYcHViUGF0aCA9IGludGVncml0eUNoZWNraW5nWHB1YlBhdGg7XG4gICAgICAgICAgICB0aGlzLmludGVncml0eUNoZWNraW5nWHB1YiA9IGludGVncml0eUNoZWNraW5nWHB1YjtcbiAgICAgICAgICAgIHRoaXMuaW50ZWdyaXR5Q2hlY2tpbmdYcHViTmV0d29yayA9IGludGVncml0eUNoZWNraW5nWHB1Yk5ldHdvcms7XG4gICAgICAgICAgICB0aGlzLmludGVncml0eUNoZWNraW5nUGFzc3BocmFzZSA9IHRoaXMucmVtZW1iZXJlZFBsYWludGV4dFBhc3NocHJhc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBXaGVuIHdlIGFyZSBkb2luZyBpbnRlZ3JpdHkgY2hlY2tpbmcgQUZURVIgZnVuY3Rpb25zLCB3ZSBkbyBpdCBvbmx5IHdoZW4gd2UgY2FuXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2NhblNheVhwdWInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY2FuU2F5WHB1YihvbGRGZWF0dXJlcykge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuYm9vdGxvYWRlcl9tb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmZlYXR1cmVzLmluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG5vUGFzc3BocmFzZSA9IHRoaXMuZmVhdHVyZXMucGFzc3BocmFzZV9wcm90ZWN0aW9uID8gdGhpcy5mZWF0dXJlcy5wYXNzcGhyYXNlX2NhY2hlZCB8fCB0aGlzLnJlbWVtYmVyZWRQbGFpbnRleHRQYXNzaHByYXNlICE9IG51bGwgOiB0cnVlO1xuXG4gICAgICAgICAgICB2YXIgcGFzc3BocmFzZURpc2FibGVkID0gdGhpcy5mZWF0dXJlcy5wYXNzcGhyYXNlX3Byb3RlY3Rpb24gPT09IGZhbHNlICYmIG9sZEZlYXR1cmVzLnBhc3NwaHJhc2VfcHJvdGVjdGlvbiA9PT0gZmFsc2UgJiYgdGhpcy5pbnRlZ3JpdHlDaGVja2luZ1Bhc3NwaHJhc2UgPT0gbnVsbDtcbiAgICAgICAgICAgIHZhciBwYXNzcGhyYXNlRW5hYmxlZFJlbWVtYmVyZWQgPSB0aGlzLmZlYXR1cmVzLnBhc3NwaHJhc2VfcHJvdGVjdGlvbiA9PT0gdHJ1ZSAmJiBvbGRGZWF0dXJlcy5wYXNzcGhyYXNlX3Byb3RlY3Rpb24gPT09IHRydWUgJiYgdGhpcy5yZW1lbWJlcmVkUGxhaW50ZXh0UGFzc2hwcmFzZSAhPSBudWxsICYmIHRoaXMucmVtZW1iZXJlZFBsYWludGV4dFBhc3NocHJhc2UgPT09IHRoaXMuaW50ZWdyaXR5Q2hlY2tpbmdQYXNzcGhyYXNlO1xuICAgICAgICAgICAgdmFyIHNhbWVQYXNzaHByYXNlID0gcGFzc3BocmFzZURpc2FibGVkIHx8IHBhc3NwaHJhc2VFbmFibGVkUmVtZW1iZXJlZDtcblxuICAgICAgICAgICAgdmFyIG5vUGluID0gdGhpcy5mZWF0dXJlcy5waW5fcHJvdGVjdGlvbiA/IHRoaXMuZmVhdHVyZXMucGluX2NhY2hlZCA6IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gbm9QYXNzcGhyYXNlICYmIHNhbWVQYXNzaHByYXNlICYmIG5vUGluO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2VlIHRoZSBjb21tZW50IG9uIHRvcCBvbiBpbnRlZ3JpdHlDaGVja2luZ1hwdWIuXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3hwdWJJbnRlZ3JpdHlDaGVjaycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZShzZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhkbm9kZSwgeHB1YjtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbi5fZ2V0SEROb2RlSW50ZXJuYWwodGhpcy5pbnRlZ3JpdHlDaGVja2luZ1hwdWJQYXRoLCB0aGlzLmludGVncml0eUNoZWNraW5nWHB1Yk5ldHdvcmspO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZG5vZGUgPSBfY29udGV4dC5zZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cHViID0gaGRub2RlLnRvQmFzZTU4KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEodGhpcy5pbnRlZ3JpdHlDaGVja2luZ1hwdWIgPT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmludGVncml0eUNoZWNraW5nWHB1YiA9IHhwdWI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZWdyaXR5Q2hlY2tpbmdQYXNzcGhyYXNlID0gdGhpcy5yZW1lbWJlcmVkUGxhaW50ZXh0UGFzc2hwcmFzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoeHB1YiAhPT0gdGhpcy5pbnRlZ3JpdHlDaGVja2luZ1hwdWIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW5jb25zaXN0ZW50IHN0YXRlJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCBfY2FsbGVlLCB0aGlzKTtcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24geHB1YkludGVncml0eUNoZWNrKF94KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHhwdWJJbnRlZ3JpdHlDaGVjaztcbiAgICAgICAgfSgpXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfcmVsb2FkRmVhdHVyZXNPckluaXRpYWxpemUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3JlbG9hZEZlYXR1cmVzT3JJbml0aWFsaXplKHNlc3Npb24pIHtcbiAgICAgICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAgICAgICB2YXIgZmVhdHVyZXNQcm9taXNlID0gdm9pZCAwO1xuICAgICAgICAgICAgaWYgKHRoaXMuYXRMZWFzdCgnMS4zLjMnKSkge1xuICAgICAgICAgICAgICAgIGZlYXR1cmVzUHJvbWlzZSA9IHNlc3Npb24uZ2V0RmVhdHVyZXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmVhdHVyZXNQcm9taXNlID0gc2Vzc2lvbi5pbml0aWFsaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmVhdHVyZXNQcm9taXNlLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIF90aGlzMy5mZWF0dXJlcyA9IHJlcy5tZXNzYWdlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfc3RhcnRDbGVhclNlc3Npb25UaW1lb3V0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9zdGFydENsZWFyU2Vzc2lvblRpbWVvdXQoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKHRoaXMuZmVhdHVyZXMuYm9vdGxvYWRlcl9tb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jbGVhclNlc3Npb25UaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHZhciBvcHRpb25zID0geyBvbmx5T25lQWN0aXZpdHk6IHRydWUgfTtcbiAgICAgICAgICAgICAgICBfdGhpczQucnVuKGZ1bmN0aW9uIChzZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLmNsZWFyU2Vzc2lvbigpO1xuICAgICAgICAgICAgICAgIH0sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgX3RoaXM0LmNsZWFyU2Vzc2lvblRpbWVvdXQgPSBudWxsO1xuICAgICAgICAgICAgfSwgdGhpcy5jbGVhclNlc3Npb25UaW1lKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZXNzaW9uRnV0dXJlID0gRGF0ZS5ub3coKSArIHRoaXMuY2xlYXJTZXNzaW9uVGltZTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnY2xlYXJTZXNzaW9uUmVzdCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhclNlc3Npb25SZXN0KCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xlYXJTZXNzaW9uVGltZW91dCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsZWFyU2Vzc2lvbkZ1dHVyZSAtIERhdGUubm93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19zdG9wQ2xlYXJTZXNzaW9uVGltZW91dCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfc3RvcENsZWFyU2Vzc2lvblRpbWVvdXQoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jbGVhclNlc3Npb25UaW1lb3V0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRoaXMuY2xlYXJTZXNzaW9uVGltZW91dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclNlc3Npb25UaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlZSBjb21tZW50IG9uIGRldmljZS1saXN0IG9wdGlvbiBnZXRQYXNzcGhyYXNlSGFzaFxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdjaGVja1Bhc3NwaHJhc2VIYXNoJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNoZWNrUGFzc3BocmFzZUhhc2gocGFzc3BocmFzZSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGV2aWNlTGlzdC5vcHRpb25zLmdldFBhc3NwaHJhc2VIYXNoICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB2YXIgd2Vic2l0ZUhhc2ggPSB0aGlzLmRldmljZUxpc3Qub3B0aW9ucy5nZXRQYXNzcGhyYXNlSGFzaCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAod2Vic2l0ZUhhc2ggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGlkID0gdGhpcy5mZWF0dXJlcy5kZXZpY2VfaWQ7XG4gICAgICAgICAgICAgICAgdmFyIHNlY3JldCA9ICdUUkVaT1IjJyArIGlkICsgJyMnICsgcGFzc3BocmFzZTtcbiAgICAgICAgICAgICAgICB2YXIgaGFzaGVkID0gc2hhMjU2eDIoc2VjcmV0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoW10uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShoYXNoZWQpKSkgPT09IEpTT04uc3RyaW5naWZ5KFtdLmNvbmNhdChfdG9Db25zdW1hYmxlQXJyYXkod2Vic2l0ZUhhc2gpKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNlZSBjb21tZW50IG9uIGRldmljZS1saXN0IG9wdGlvbiBnZXRQYXNzcGhyYXNlSGFzaFxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdmb3J3YXJkUGFzc3BocmFzZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBmb3J3YXJkUGFzc3BocmFzZShzb3VyY2UpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczUgPSB0aGlzO1xuXG4gICAgICAgICAgICBzb3VyY2Uub24oZnVuY3Rpb24gKGFyZykge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpczUucmVtZW1iZXJlZFBsYWludGV4dFBhc3NocHJhc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcCA9IF90aGlzNS5yZW1lbWJlcmVkUGxhaW50ZXh0UGFzc2hwcmFzZTtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgY2hlY2tQYXNzaHByYXNlID0gX3RoaXM1LmNoZWNrUGFzc3BocmFzZUhhc2gocCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1Bhc3NocHJhc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyhudWxsLCBwKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZyhuZXcgRXJyb3IoJ0luY29uc2lzdGVudCBzdGF0ZScpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFyIGFyZ0FuZFJlbWVtYmVyID0gZnVuY3Rpb24gYXJnQW5kUmVtZW1iZXIoZSwgcGFzc3BocmFzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXM1LnJlbWVtYmVyUGxhaW50ZXh0UGFzc3BocmFzZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhc3NwaHJhc2UgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfY2hlY2tQYXNzaHByYXNlID0gX3RoaXM1LmNoZWNrUGFzc3BocmFzZUhhc2gocGFzc3BocmFzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFfY2hlY2tQYXNzaHByYXNlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZyhuZXcgRXJyb3IoJ0luY29uc2lzdGVudCBzdGF0ZScpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM1LnJlbWVtYmVyZWRQbGFpbnRleHRQYXNzaHByYXNlID0gcGFzc3BocmFzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmcoZSwgcGFzc3BocmFzZSk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBfdGhpczUucGFzc3BocmFzZUV2ZW50LmVtaXQoYXJnQW5kUmVtZW1iZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19ydW5JbnNpZGUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMihmbiwgYWN0aXZlU2Vzc2lvbiwgZmVhdHVyZXMsIHNraXBGaW5hbFJlbG9hZCkge1xuICAgICAgICAgICAgICAgIHZhciByZXMsIG9sZEZlYXR1cmVzO1xuICAgICAgICAgICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmVhdHVyZXMgPSBmZWF0dXJlcztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkMihhY3RpdmVTZXNzaW9uLnNlbmRFdmVudCwgdGhpcy5zZW5kRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkMihhY3RpdmVTZXNzaW9uLnJlY2VpdmVFdmVudCwgdGhpcy5yZWNlaXZlRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkRXJyb3IoYWN0aXZlU2Vzc2lvbi5lcnJvckV2ZW50LCB0aGlzLmVycm9yRXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcndhcmQxKGFjdGl2ZVNlc3Npb24uYnV0dG9uRXZlbnQsIHRoaXMuYnV0dG9uRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkQ2FsbGJhY2syKGFjdGl2ZVNlc3Npb24ucGluRXZlbnQsIHRoaXMucGluRXZlbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkQ2FsbGJhY2sxKGFjdGl2ZVNlc3Npb24ud29yZEV2ZW50LCB0aGlzLndvcmRFdmVudCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9yd2FyZFBhc3NwaHJhc2UoYWN0aXZlU2Vzc2lvbi5wYXNzcGhyYXNlRXZlbnQpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmbihhY3RpdmVTZXNzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDExO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChza2lwRmluYWxSZWxvYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZEZlYXR1cmVzID0gZmVhdHVyZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZWxvYWRGZWF0dXJlc09ySW5pdGlhbGl6ZShhY3RpdmVTZXNzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTY6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jYW5TYXlYcHViKG9sZEZlYXR1cmVzKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMueHB1YkludGVncml0eUNoZWNrKGFjdGl2ZVNlc3Npb24pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAxOTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVTZXNzaW9uLmRlYWN0aXZhdGVFdmVudHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5maW5pc2goMTkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoJ3JldHVybicsIHJlcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbMTEsLCAxOSwgMjJdXSk7XG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIF9ydW5JbnNpZGUoX3gyLCBfeDMsIF94NCwgX3g1KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfcnVuSW5zaWRlO1xuICAgICAgICB9KClcbiAgICB9LCB7XG4gICAgICAgIGtleTogJ193YWl0Rm9yTnVsbFNlc3Npb24nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3dhaXRGb3JOdWxsU2Vzc2lvbihkZWJ1Z0xpbmspIHtcbiAgICAgICAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgIHZhciBfb25EaXNjb25uZWN0ID0gZnVuY3Rpb24gb25EaXNjb25uZWN0KCkge307XG4gICAgICAgICAgICAgICAgdmFyIG9uVXBkYXRlID0gZnVuY3Rpb24gb25VcGRhdGUoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB1cGRhdGVkU2Vzc2lvbiA9IF90aGlzNi5kZXZpY2VMaXN0LmdldFNlc3Npb24oX3RoaXM2Lm9yaWdpbmFsRGVzY3JpcHRvci5wYXRoLCBkZWJ1Z0xpbmspO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGV2aWNlID0gX3RoaXM2LmRldmljZUxpc3QuZGV2aWNlc1tfdGhpczYub3JpZ2luYWxEZXNjcmlwdG9yLnBhdGgudG9TdHJpbmcoKV07XG4gICAgICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkU2Vzc2lvbiA9PSBudWxsICYmIGRldmljZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZGV2aWNlTGlzdC5kaXNjb25uZWN0RXZlbnQucmVtb3ZlTGlzdGVuZXIoX29uRGlzY29ubmVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZGV2aWNlTGlzdC51cGRhdGVFdmVudC5yZW1vdmVMaXN0ZW5lcihvblVwZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHVwZGF0ZWRTZXNzaW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgX29uRGlzY29ubmVjdCA9IGZ1bmN0aW9uIG9uRGlzY29ubmVjdChkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRldmljZSA9PT0gX3RoaXM2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZGV2aWNlTGlzdC5kaXNjb25uZWN0RXZlbnQucmVtb3ZlTGlzdGVuZXIoX29uRGlzY29ubmVjdCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZGV2aWNlTGlzdC51cGRhdGVFdmVudC5yZW1vdmVMaXN0ZW5lcihvblVwZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdEZXZpY2UgZGlzY29ubmVjdGVkJykpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBvblVwZGF0ZSgpO1xuICAgICAgICAgICAgICAgIF90aGlzNi5kZXZpY2VMaXN0LnVwZGF0ZUV2ZW50Lm9uKG9uVXBkYXRlKTtcbiAgICAgICAgICAgICAgICBfdGhpczYuZGV2aWNlTGlzdC5vbkRpc2Nvbm5lY3QoX3RoaXM2LCBfb25EaXNjb25uZWN0KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdyZWxvYWRGZWF0dXJlcycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByZWxvYWRGZWF0dXJlcygpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJ1bihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHdoYXQgc3RlYWwoKSBkb2VzIGlzIHRoYXQgaXQgZG9lcyBub3QgYWN0dWFsbHkga2VlcCB0aGUgc2Vzc2lvbiBmb3IgaXRzZWxmXG4gICAgICAgIC8vIGJlY2F1c2UgaXQgaW1tZWRpYXRlbHkgcmVsZWFzZXMgaXQgYWdhaW47XG4gICAgICAgIC8vIGhvd2V2ZXIsIGl0IG1pZ2h0IHN0b3Agc29tZSBvdGhlciBwcm9jZXNzIGluIGFub3RoZXIgYXBwLFxuICAgICAgICAvLyBzbyB0aGUgZGV2aWNlIHdpbGwgYmVjb21lIFwidXNhYmxlXCJcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc3RlYWwnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc3RlYWwoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ydW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSwgeyBhZ2dyZXNzaXZlOiB0cnVlIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdpc0Jvb3Rsb2FkZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaXNCb290bG9hZGVyKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZmVhdHVyZXMuYm9vdGxvYWRlcl9tb2RlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdpc0luaXRpYWxpemVkJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGlzSW5pdGlhbGl6ZWQoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mZWF0dXJlcy5pbml0aWFsaXplZDtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnZ2V0VmVyc2lvbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRWZXJzaW9uKCkge1xuICAgICAgICAgICAgcmV0dXJuIFt0aGlzLmZlYXR1cmVzLm1ham9yX3ZlcnNpb24sIHRoaXMuZmVhdHVyZXMubWlub3JfdmVyc2lvbiwgdGhpcy5mZWF0dXJlcy5wYXRjaF92ZXJzaW9uXS5qb2luKCcuJyk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2F0TGVhc3QnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYXRMZWFzdCh2ZXJzaW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gKDAsIF9zZW12ZXJDb21wYXJlMi5kZWZhdWx0KSh0aGlzLmdldFZlcnNpb24oKSwgdmVyc2lvbikgPj0gMDtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3dhdGNoJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF93YXRjaCgpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgICAgICAgICB2YXIgb25DaGFuZ2VkU2Vzc2lvbnMgPSBmdW5jdGlvbiBvbkNoYW5nZWRTZXNzaW9ucyhkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGV2aWNlID09PSBfdGhpczcpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmNoYW5nZWRTZXNzaW9uc0V2ZW50LmVtaXQoX3RoaXM3LmlzVXNlZCgpLCBfdGhpczcuaXNVc2VkSGVyZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzNy5pc1N0b2xlbigpICYmIF90aGlzNy5jdXJyZW50U2Vzc2lvbk9iamVjdCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczcuX3N0b2xlbkV2ZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgb25EaXNjb25uZWN0ID0gZnVuY3Rpb24gb25EaXNjb25uZWN0KGRldmljZSkge1xuICAgICAgICAgICAgICAgIGlmIChkZXZpY2UgPT09IF90aGlzNykge1xuICAgICAgICAgICAgICAgICAgICBfdGhpczcuZGlzY29ubmVjdEV2ZW50LmVtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmRldmljZUxpc3QuZGlzY29ubmVjdEV2ZW50LnJlbW92ZUxpc3RlbmVyKG9uRGlzY29ubmVjdCk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzNy5kZXZpY2VMaXN0LmNoYW5nZWRTZXNzaW9uc0V2ZW50LnJlbW92ZUxpc3RlbmVyKG9uQ2hhbmdlZFNlc3Npb25zKTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXM3LmNvbm5lY3RlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgICAgIHZhciBldmVudHMgPSBbX3RoaXM3LmNoYW5nZWRTZXNzaW9uc0V2ZW50LCBfdGhpczcuc2VuZEV2ZW50LCBfdGhpczcucmVjZWl2ZUV2ZW50LCBfdGhpczcuZXJyb3JFdmVudCwgX3RoaXM3LmJ1dHRvbkV2ZW50LCBfdGhpczcucGluRXZlbnQsIF90aGlzNy53b3JkRXZlbnRdO1xuICAgICAgICAgICAgICAgICAgICBldmVudHMuZm9yRWFjaChmdW5jdGlvbiAoZXYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBldi5yZW1vdmVBbGxMaXN0ZW5lcnMoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG9uQ2hhbmdlZFNlc3Npb25zKHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5kZXZpY2VMaXN0LmNoYW5nZWRTZXNzaW9uc0V2ZW50Lm9uKG9uQ2hhbmdlZFNlc3Npb25zKTtcbiAgICAgICAgICAgIHRoaXMuZGV2aWNlTGlzdC5vbkRpc2Nvbm5lY3QodGhpcywgb25EaXNjb25uZWN0KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnaXNVc2VkJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGlzVXNlZCgpIHtcbiAgICAgICAgICAgIHZhciBzZXNzaW9uID0gdGhpcy5kZXZpY2VMaXN0LmdldFNlc3Npb24odGhpcy5vcmlnaW5hbERlc2NyaXB0b3IucGF0aCwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHNlc3Npb24gIT0gbnVsbDtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnaXNVc2VkSGVyZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBpc1VzZWRIZXJlKCkge1xuICAgICAgICAgICAgdmFyIHNlc3Npb24gPSB0aGlzLmRldmljZUxpc3QuZ2V0U2Vzc2lvbih0aGlzLm9yaWdpbmFsRGVzY3JpcHRvci5wYXRoLCBmYWxzZSk7XG4gICAgICAgICAgICB2YXIgbXlTZXNzaW9uID0gdGhpcy5jdXJyZW50U2Vzc2lvbk9iamVjdCAhPSBudWxsID8gdGhpcy5jdXJyZW50U2Vzc2lvbk9iamVjdC5nZXRJZCgpIDogbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBzZXNzaW9uICE9IG51bGwgJiYgbXlTZXNzaW9uID09PSBzZXNzaW9uO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdpc1VzZWRFbHNld2hlcmUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaXNVc2VkRWxzZXdoZXJlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VkKCkgJiYgIXRoaXMuaXNVc2VkSGVyZSgpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdpc1N0b2xlbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBpc1N0b2xlbigpIHtcbiAgICAgICAgICAgIHZhciBzaG91bGRCZVVzZWRIZXJlID0gdGhpcy5jdXJyZW50U2Vzc2lvbk9iamVjdCAhPSBudWxsO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1VzZWQoKSkge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRCZVVzZWRIZXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlzIHVzZWQgYW5kIHNob3VsZCBiZSB1c2VkIGhlcmUgPT4gcmV0dXJucyB0cnVlIGlmIGl0J3MgdXNlZCBlbHNld2hlcmVcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNVc2VkRWxzZXdoZXJlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gaXMgdXNlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkID0+IHJldHVybnMgdHJ1ZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzaG91bGRCZVVzZWRIZXJlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlzbid0IHVzZWQgYW5kIHNob3VsZCBiZSB1c2VkID0+IHN0b2xlbiAoPz8pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGlzbid0IHVzZWQgYW5kIHNob3VsZG4ndCBiZSB1c2VkID0+IG5vdGhpbmdcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnb25iZWZvcmV1bmxvYWQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gb25iZWZvcmV1bmxvYWQoKSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudFNlc3Npb24gPSB0aGlzLmN1cnJlbnRTZXNzaW9uT2JqZWN0O1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTZXNzaW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAvLyBjYW5ub3QgcnVuIC50aGVuKCkgaW4gYnJvd3Nlcjsgc28gbGV0J3MganVzdCBmaXJlIGFuZCBob3BlIGZvciB0aGUgYmVzdFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsZWFyU2Vzc2lvbikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbW9kZWwgPSB0aGlzLmZlYXR1cmVzLm1vZGVsO1xuICAgICAgICAgICAgICAgICAgICBpZiAobW9kZWwgPT0gbnVsbCB8fCBtb2RlbCAhPT0gJ1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2Vzc2lvbi5jbGVhclNlc3Npb24oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjdXJyZW50U2Vzc2lvbi5yZWxlYXNlKHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfV0sIFt7XG4gICAgICAgIGtleTogJ19ydW4nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMyhmbiwgdHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBkZXZpY2VMaXN0LCBvbkFjcXVpcmUsIG9uUmVsZWFzZSwgZGV2aWNlLCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgICAgICAgICB2YXIgc2Vzc2lvbiwgX2ZlYXR1cmVzO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUzJChfY29udGV4dDMpIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGV2aWNlLl9hY3F1aXJlKHRyYW5zcG9ydCwgZGVzY3JpcHRvciwgZGV2aWNlTGlzdCwgb25BY3F1aXJlLCBkZXZpY2UsIGRlYnVnTGluayk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24gPSBfY29udGV4dDMuc2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLnByZXYgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZmVhdHVyZXMgPSB2b2lkIDA7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWJ1Z0xpbmspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGRldmljZSA9PSBudWxsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSA4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RlYnVnIGxpbmsgY2Fubm90IGxvYWQgZmlyc3QnKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZlYXR1cmVzID0gZGV2aWNlLmZlYXR1cmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLmluaXRpYWxpemUoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9mZWF0dXJlcyA9IF9jb250ZXh0My5zZW50Lm1lc3NhZ2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShfZmVhdHVyZXMgPT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMTY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRmVhdHVyZXMgdW5leHBlY3RlZCBudWxsJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDE4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZm4oc2Vzc2lvbiwgX2ZlYXR1cmVzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KCdyZXR1cm4nLCBfY29udGV4dDMuc2VudCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDMucHJldiA9IDE5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRGV2aWNlLl9yZWxlYXNlKGRlc2NyaXB0b3IsIHNlc3Npb24sIGRldmljZUxpc3QsIG9uUmVsZWFzZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmZpbmlzaCgxOSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgX2NhbGxlZTMsIHRoaXMsIFtbMywsIDE5LCAyM11dKTtcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gX3J1bihfeDYsIF94NywgX3g4LCBfeDksIF94MTAsIF94MTEsIF94MTIsIF94MTMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF9ydW47XG4gICAgICAgIH0oKVxuXG4gICAgICAgIC8vIFJlbGVhc2UgYW5kIGFjcXVpcmUgYXJlIHF1aXRlIGNvbXBsZXgsXG4gICAgICAgIC8vIGJlY2F1c2Ugd2UgaGF2ZSB0byBkZWFsIHdpdGggdmFyaW91cyByYWNlIGNvbmRpdGlvbnNcbiAgICAgICAgLy8gZm9yIG11bHRpdGFza2luZ1xuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfcmVsZWFzZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfcmVsZWFzZShvcmlnaW5hbERlc2NyaXB0b3IsIHNlc3Npb24sIGRldmljZUxpc3QsIG9uUmVsZWFzZSkge1xuICAgICAgICAgICAgdmFyIHJlbGVhc2VkID0gKDAsIF9jb25uZWN0aW9uTG9jay5sb2NrKShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb21pc2VGaW5hbGx5KHNlc3Npb24ucmVsZWFzZShmYWxzZSksIGZ1bmN0aW9uIChyZXMsIGVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvciA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2VMaXN0LnNldEhhcmQob3JpZ2luYWxEZXNjcmlwdG9yLnBhdGgsIG51bGwsIHNlc3Npb24uZGVidWdMaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBwcm9taXNlRmluYWxseShyZWxlYXNlZCwgZnVuY3Rpb24gKHJlcywgZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBpZiAob25SZWxlYXNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9uUmVsZWFzZShlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfYWNxdWlyZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfYWNxdWlyZSh0cmFuc3BvcnQsIGRlc2NyaXB0b3IsIGRldmljZUxpc3QsIG9uQWNxdWlyZSwgZGV2aWNlLCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgICAgIHJldHVybiAoMCwgX2Nvbm5lY3Rpb25Mb2NrLmxvY2spKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwb3J0LmFjcXVpcmUoe1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiBkZXNjcmlwdG9yLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgIHByZXZpb3VzOiBkZXNjcmlwdG9yLnNlc3Npb25cbiAgICAgICAgICAgICAgICB9LCBkZWJ1Z0xpbmspLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBkZXZpY2VMaXN0LnNldEhhcmQoZGVzY3JpcHRvci5wYXRoLCByZXMsIGRlYnVnTGluayk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICB2YXIgc2Vzc2lvbiA9IG5ldyBfc2Vzc2lvbjIuZGVmYXVsdCh0cmFuc3BvcnQsIHJlc3VsdCwgZGVzY3JpcHRvciwgISFkZXZpY2VMaXN0Lm9wdGlvbnMuZGVidWdJbmZvLCBkZXZpY2UsIGRldmljZUxpc3QueHB1YkRlcml2ZSwgZGVidWdMaW5rKTtcbiAgICAgICAgICAgICAgICBpZiAob25BY3F1aXJlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgb25BY3F1aXJlKHNlc3Npb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc2Vzc2lvbjtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdmcm9tRGVzY3JpcHRvcicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBmcm9tRGVzY3JpcHRvcih0cmFuc3BvcnQsIG9yaWdpbmFsRGVzY3JpcHRvciwgZGV2aWNlTGlzdCkge1xuICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludCBJIGFtIGFzc3VtaW5nIG5vYm9keSBlbHNlIGhhcyB0aGUgZGV2aWNlXG4gICAgICAgICAgICB2YXIgZGVzY3JpcHRvciA9IF9leHRlbmRzKHt9LCBvcmlnaW5hbERlc2NyaXB0b3IsIHsgc2Vzc2lvbjogbnVsbCB9KTtcbiAgICAgICAgICAgIHJldHVybiBEZXZpY2UuX3J1bihmdW5jdGlvbiAoc2Vzc2lvbiwgZmVhdHVyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERldmljZSh0cmFuc3BvcnQsIGRlc2NyaXB0b3IsIGZlYXR1cmVzLCBkZXZpY2VMaXN0LCAhIWRlc2NyaXB0b3IuZGVidWcpO1xuICAgICAgICAgICAgfSwgdHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBkZXZpY2VMaXN0LCBudWxsLCBudWxsLCBudWxsLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gRGV2aWNlO1xufShfZXZlbnRzLkV2ZW50RW1pdHRlcik7XG5cbi8vIEZvcndhcmRzIGV2ZW50cyBmcm9tIHNvdXJjZSB0byB0YXJnZXRcblxuZXhwb3J0cy5kZWZhdWx0ID0gRGV2aWNlO1xuZnVuY3Rpb24gZm9yd2FyZEVycm9yKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgc291cmNlLm9uKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgaWYgKHRhcmdldC5saXN0ZW5lckNvdW50KCkgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQuZW1pdChhcmcpO1xuICAgIH0pO1xufVxuXG5mdW5jdGlvbiBmb3J3YXJkQ2FsbGJhY2sxKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgc291cmNlLm9uKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgdGFyZ2V0LmVtaXQoYXJnKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZm9yd2FyZENhbGxiYWNrMihzb3VyY2UsIHRhcmdldCkge1xuICAgIHNvdXJjZS5vbihmdW5jdGlvbiAoYXJnLCBhcmcyKSB7XG4gICAgICAgIHRhcmdldC5lbWl0KGFyZywgYXJnMik7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGZvcndhcmQxKHNvdXJjZSwgdGFyZ2V0KSB7XG4gICAgc291cmNlLm9uKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgdGFyZ2V0LmVtaXQoYXJnKTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZm9yd2FyZDIoc291cmNlLCB0YXJnZXQpIHtcbiAgICBzb3VyY2Uub24oZnVuY3Rpb24gKGFyZzEsIGFyZzIpIHtcbiAgICAgICAgdGFyZ2V0LmVtaXQoYXJnMSwgYXJnMik7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHByb21pc2VGaW5hbGx5KHAsIGZ1bikge1xuICAgIHJldHVybiBwLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICByZXR1cm4gZnVuKHJlcywgbnVsbCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICB9KTtcbiAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgIHJldHVybiBmdW4obnVsbCwgZXJyKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gc2hhMjU2eDIodmFsdWUpIHtcbiAgICB2YXIgcmVhbEJ1ZmZlciA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyBuZXcgQnVmZmVyKHZhbHVlLCAnYmluYXJ5JykgOiB2YWx1ZTtcbiAgICByZXR1cm4gYml0Y29pbi5jcnlwdG8uaGFzaDI1NihyZWFsQnVmZmVyKTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIid1c2Ugc3RyaWN0JztcblxudmFyIGZuVG9TdHIgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cbnZhciBjb25zdHJ1Y3RvclJlZ2V4ID0gL15cXHMqY2xhc3NcXGIvO1xudmFyIGlzRVM2Q2xhc3NGbiA9IGZ1bmN0aW9uIGlzRVM2Q2xhc3NGdW5jdGlvbih2YWx1ZSkge1xuXHR0cnkge1xuXHRcdHZhciBmblN0ciA9IGZuVG9TdHIuY2FsbCh2YWx1ZSk7XG5cdFx0cmV0dXJuIGNvbnN0cnVjdG9yUmVnZXgudGVzdChmblN0cik7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7IC8vIG5vdCBhIGZ1bmN0aW9uXG5cdH1cbn07XG5cbnZhciB0cnlGdW5jdGlvbk9iamVjdCA9IGZ1bmN0aW9uIHRyeUZ1bmN0aW9uVG9TdHIodmFsdWUpIHtcblx0dHJ5IHtcblx0XHRpZiAoaXNFUzZDbGFzc0ZuKHZhbHVlKSkgeyByZXR1cm4gZmFsc2U7IH1cblx0XHRmblRvU3RyLmNhbGwodmFsdWUpO1xuXHRcdHJldHVybiB0cnVlO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBmbkNsYXNzID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcbnZhciBnZW5DbGFzcyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXSc7XG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcgPT09ICdzeW1ib2wnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQ2FsbGFibGUodmFsdWUpIHtcblx0aWYgKCF2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmICF2YWx1ZS5wcm90b3R5cGUpIHsgcmV0dXJuIHRydWU7IH1cblx0aWYgKGhhc1RvU3RyaW5nVGFnKSB7IHJldHVybiB0cnlGdW5jdGlvbk9iamVjdCh2YWx1ZSk7IH1cblx0aWYgKGlzRVM2Q2xhc3NGbih2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdHZhciBzdHJDbGFzcyA9IHRvU3RyLmNhbGwodmFsdWUpO1xuXHRyZXR1cm4gc3RyQ2xhc3MgPT09IGZuQ2xhc3MgfHwgc3RyQ2xhc3MgPT09IGdlbkNsYXNzO1xufTtcbiIsInZhciBDbGllbnRSZXF1ZXN0ID0gcmVxdWlyZSgnLi9saWIvcmVxdWVzdCcpXG52YXIgcmVzcG9uc2UgPSByZXF1aXJlKCcuL2xpYi9yZXNwb25zZScpXG52YXIgZXh0ZW5kID0gcmVxdWlyZSgneHRlbmQnKVxudmFyIHN0YXR1c0NvZGVzID0gcmVxdWlyZSgnYnVpbHRpbi1zdGF0dXMtY29kZXMnKVxudmFyIHVybCA9IHJlcXVpcmUoJ3VybCcpXG5cbnZhciBodHRwID0gZXhwb3J0c1xuXG5odHRwLnJlcXVlc3QgPSBmdW5jdGlvbiAob3B0cywgY2IpIHtcblx0aWYgKHR5cGVvZiBvcHRzID09PSAnc3RyaW5nJylcblx0XHRvcHRzID0gdXJsLnBhcnNlKG9wdHMpXG5cdGVsc2Vcblx0XHRvcHRzID0gZXh0ZW5kKG9wdHMpXG5cblx0Ly8gTm9ybWFsbHksIHRoZSBwYWdlIGlzIGxvYWRlZCBmcm9tIGh0dHAgb3IgaHR0cHMsIHNvIG5vdCBzcGVjaWZ5aW5nIGEgcHJvdG9jb2xcblx0Ly8gd2lsbCByZXN1bHQgaW4gYSAodmFsaWQpIHByb3RvY29sLXJlbGF0aXZlIHVybC4gSG93ZXZlciwgdGhpcyB3b24ndCB3b3JrIGlmXG5cdC8vIHRoZSBwcm90b2NvbCBpcyBzb21ldGhpbmcgZWxzZSwgbGlrZSAnZmlsZTonXG5cdHZhciBkZWZhdWx0UHJvdG9jb2wgPSBnbG9iYWwubG9jYXRpb24ucHJvdG9jb2wuc2VhcmNoKC9eaHR0cHM/OiQvKSA9PT0gLTEgPyAnaHR0cDonIDogJydcblxuXHR2YXIgcHJvdG9jb2wgPSBvcHRzLnByb3RvY29sIHx8IGRlZmF1bHRQcm90b2NvbFxuXHR2YXIgaG9zdCA9IG9wdHMuaG9zdG5hbWUgfHwgb3B0cy5ob3N0XG5cdHZhciBwb3J0ID0gb3B0cy5wb3J0XG5cdHZhciBwYXRoID0gb3B0cy5wYXRoIHx8ICcvJ1xuXG5cdC8vIE5lY2Vzc2FyeSBmb3IgSVB2NiBhZGRyZXNzZXNcblx0aWYgKGhvc3QgJiYgaG9zdC5pbmRleE9mKCc6JykgIT09IC0xKVxuXHRcdGhvc3QgPSAnWycgKyBob3N0ICsgJ10nXG5cblx0Ly8gVGhpcyBtYXkgYmUgYSByZWxhdGl2ZSB1cmwuIFRoZSBicm93c2VyIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBpbnRlcnByZXQgaXQgY29ycmVjdGx5LlxuXHRvcHRzLnVybCA9IChob3N0ID8gKHByb3RvY29sICsgJy8vJyArIGhvc3QpIDogJycpICsgKHBvcnQgPyAnOicgKyBwb3J0IDogJycpICsgcGF0aFxuXHRvcHRzLm1ldGhvZCA9IChvcHRzLm1ldGhvZCB8fCAnR0VUJykudG9VcHBlckNhc2UoKVxuXHRvcHRzLmhlYWRlcnMgPSBvcHRzLmhlYWRlcnMgfHwge31cblxuXHQvLyBBbHNvIHZhbGlkIG9wdHMuYXV0aCwgb3B0cy5tb2RlXG5cblx0dmFyIHJlcSA9IG5ldyBDbGllbnRSZXF1ZXN0KG9wdHMpXG5cdGlmIChjYilcblx0XHRyZXEub24oJ3Jlc3BvbnNlJywgY2IpXG5cdHJldHVybiByZXFcbn1cblxuaHR0cC5nZXQgPSBmdW5jdGlvbiBnZXQgKG9wdHMsIGNiKSB7XG5cdHZhciByZXEgPSBodHRwLnJlcXVlc3Qob3B0cywgY2IpXG5cdHJlcS5lbmQoKVxuXHRyZXR1cm4gcmVxXG59XG5cbmh0dHAuQ2xpZW50UmVxdWVzdCA9IENsaWVudFJlcXVlc3Rcbmh0dHAuSW5jb21pbmdNZXNzYWdlID0gcmVzcG9uc2UuSW5jb21pbmdNZXNzYWdlXG5cbmh0dHAuQWdlbnQgPSBmdW5jdGlvbiAoKSB7fVxuaHR0cC5BZ2VudC5kZWZhdWx0TWF4U29ja2V0cyA9IDRcblxuaHR0cC5nbG9iYWxBZ2VudCA9IG5ldyBodHRwLkFnZW50KClcblxuaHR0cC5TVEFUVVNfQ09ERVMgPSBzdGF0dXNDb2Rlc1xuXG5odHRwLk1FVEhPRFMgPSBbXG5cdCdDSEVDS09VVCcsXG5cdCdDT05ORUNUJyxcblx0J0NPUFknLFxuXHQnREVMRVRFJyxcblx0J0dFVCcsXG5cdCdIRUFEJyxcblx0J0xPQ0snLFxuXHQnTS1TRUFSQ0gnLFxuXHQnTUVSR0UnLFxuXHQnTUtBQ1RJVklUWScsXG5cdCdNS0NPTCcsXG5cdCdNT1ZFJyxcblx0J05PVElGWScsXG5cdCdPUFRJT05TJyxcblx0J1BBVENIJyxcblx0J1BPU1QnLFxuXHQnUFJPUEZJTkQnLFxuXHQnUFJPUFBBVENIJyxcblx0J1BVUkdFJyxcblx0J1BVVCcsXG5cdCdSRVBPUlQnLFxuXHQnU0VBUkNIJyxcblx0J1NVQlNDUklCRScsXG5cdCdUUkFDRScsXG5cdCdVTkxPQ0snLFxuXHQnVU5TVUJTQ1JJQkUnXG5dIiwiXG4vKipcbiAqIGJvZHkuanNcbiAqXG4gKiBCb2R5IGludGVyZmFjZSBwcm92aWRlcyBjb21tb24gbWV0aG9kcyBmb3IgUmVxdWVzdCBhbmQgUmVzcG9uc2VcbiAqL1xuXG52YXIgY29udmVydCA9IHJlcXVpcmUoJ2VuY29kaW5nJykuY29udmVydDtcbnZhciBib2R5U3RyZWFtID0gcmVxdWlyZSgnaXMtc3RyZWFtJyk7XG52YXIgUGFzc1Rocm91Z2ggPSByZXF1aXJlKCdzdHJlYW0nKS5QYXNzVGhyb3VnaDtcbnZhciBGZXRjaEVycm9yID0gcmVxdWlyZSgnLi9mZXRjaC1lcnJvcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEJvZHk7XG5cbi8qKlxuICogQm9keSBjbGFzc1xuICpcbiAqIEBwYXJhbSAgIFN0cmVhbSAgYm9keSAgUmVhZGFibGUgc3RyZWFtXG4gKiBAcGFyYW0gICBPYmplY3QgIG9wdHMgIFJlc3BvbnNlIG9wdGlvbnNcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuZnVuY3Rpb24gQm9keShib2R5LCBvcHRzKSB7XG5cblx0b3B0cyA9IG9wdHMgfHwge307XG5cblx0dGhpcy5ib2R5ID0gYm9keTtcblx0dGhpcy5ib2R5VXNlZCA9IGZhbHNlO1xuXHR0aGlzLnNpemUgPSBvcHRzLnNpemUgfHwgMDtcblx0dGhpcy50aW1lb3V0ID0gb3B0cy50aW1lb3V0IHx8IDA7XG5cdHRoaXMuX3JhdyA9IFtdO1xuXHR0aGlzLl9hYm9ydCA9IGZhbHNlO1xuXG59XG5cbi8qKlxuICogRGVjb2RlIHJlc3BvbnNlIGFzIGpzb25cbiAqXG4gKiBAcmV0dXJuICBQcm9taXNlXG4gKi9cbkJvZHkucHJvdG90eXBlLmpzb24gPSBmdW5jdGlvbigpIHtcblxuXHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0cmV0dXJuIHRoaXMuX2RlY29kZSgpLnRoZW4oZnVuY3Rpb24oYnVmZmVyKSB7XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBKU09OLnBhcnNlKGJ1ZmZlci50b1N0cmluZygpKTtcblx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdHJldHVybiBCb2R5LlByb21pc2UucmVqZWN0KG5ldyBGZXRjaEVycm9yKCdpbnZhbGlkIGpzb24gcmVzcG9uc2UgYm9keSBhdCAnICsgc2VsZi51cmwgKyAnIHJlYXNvbjogJyArIGVyci5tZXNzYWdlLCAnaW52YWxpZC1qc29uJykpO1xuXHRcdH1cblx0fSk7XG5cbn07XG5cbi8qKlxuICogRGVjb2RlIHJlc3BvbnNlIGFzIHRleHRcbiAqXG4gKiBAcmV0dXJuICBQcm9taXNlXG4gKi9cbkJvZHkucHJvdG90eXBlLnRleHQgPSBmdW5jdGlvbigpIHtcblxuXHRyZXR1cm4gdGhpcy5fZGVjb2RlKCkudGhlbihmdW5jdGlvbihidWZmZXIpIHtcblx0XHRyZXR1cm4gYnVmZmVyLnRvU3RyaW5nKCk7XG5cdH0pO1xuXG59O1xuXG4vKipcbiAqIERlY29kZSByZXNwb25zZSBhcyBidWZmZXIgKG5vbi1zcGVjIGFwaSlcbiAqXG4gKiBAcmV0dXJuICBQcm9taXNlXG4gKi9cbkJvZHkucHJvdG90eXBlLmJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuXG5cdHJldHVybiB0aGlzLl9kZWNvZGUoKTtcblxufTtcblxuLyoqXG4gKiBEZWNvZGUgYnVmZmVycyBpbnRvIHV0Zi04IHN0cmluZ1xuICpcbiAqIEByZXR1cm4gIFByb21pc2VcbiAqL1xuQm9keS5wcm90b3R5cGUuX2RlY29kZSA9IGZ1bmN0aW9uKCkge1xuXG5cdHZhciBzZWxmID0gdGhpcztcblxuXHRpZiAodGhpcy5ib2R5VXNlZCkge1xuXHRcdHJldHVybiBCb2R5LlByb21pc2UucmVqZWN0KG5ldyBFcnJvcignYm9keSB1c2VkIGFscmVhZHkgZm9yOiAnICsgdGhpcy51cmwpKTtcblx0fVxuXG5cdHRoaXMuYm9keVVzZWQgPSB0cnVlO1xuXHR0aGlzLl9ieXRlcyA9IDA7XG5cdHRoaXMuX2Fib3J0ID0gZmFsc2U7XG5cdHRoaXMuX3JhdyA9IFtdO1xuXG5cdHJldHVybiBuZXcgQm9keS5Qcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuXHRcdHZhciByZXNUaW1lb3V0O1xuXG5cdFx0Ly8gYm9keSBpcyBzdHJpbmdcblx0XHRpZiAodHlwZW9mIHNlbGYuYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHNlbGYuX2J5dGVzID0gc2VsZi5ib2R5Lmxlbmd0aDtcblx0XHRcdHNlbGYuX3JhdyA9IFtuZXcgQnVmZmVyKHNlbGYuYm9keSldO1xuXHRcdFx0cmV0dXJuIHJlc29sdmUoc2VsZi5fY29udmVydCgpKTtcblx0XHR9XG5cblx0XHQvLyBib2R5IGlzIGJ1ZmZlclxuXHRcdGlmIChzZWxmLmJvZHkgaW5zdGFuY2VvZiBCdWZmZXIpIHtcblx0XHRcdHNlbGYuX2J5dGVzID0gc2VsZi5ib2R5Lmxlbmd0aDtcblx0XHRcdHNlbGYuX3JhdyA9IFtzZWxmLmJvZHldO1xuXHRcdFx0cmV0dXJuIHJlc29sdmUoc2VsZi5fY29udmVydCgpKTtcblx0XHR9XG5cblx0XHQvLyBhbGxvdyB0aW1lb3V0IG9uIHNsb3cgcmVzcG9uc2UgYm9keVxuXHRcdGlmIChzZWxmLnRpbWVvdXQpIHtcblx0XHRcdHJlc1RpbWVvdXQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRzZWxmLl9hYm9ydCA9IHRydWU7XG5cdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcigncmVzcG9uc2UgdGltZW91dCBhdCAnICsgc2VsZi51cmwgKyAnIG92ZXIgbGltaXQ6ICcgKyBzZWxmLnRpbWVvdXQsICdib2R5LXRpbWVvdXQnKSk7XG5cdFx0XHR9LCBzZWxmLnRpbWVvdXQpO1xuXHRcdH1cblxuXHRcdC8vIGhhbmRsZSBzdHJlYW0gZXJyb3IsIHN1Y2ggYXMgaW5jb3JyZWN0IGNvbnRlbnQtZW5jb2Rpbmdcblx0XHRzZWxmLmJvZHkub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG5cdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoJ2ludmFsaWQgcmVzcG9uc2UgYm9keSBhdDogJyArIHNlbGYudXJsICsgJyByZWFzb246ICcgKyBlcnIubWVzc2FnZSwgJ3N5c3RlbScsIGVycikpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gYm9keSBpcyBzdHJlYW1cblx0XHRzZWxmLmJvZHkub24oJ2RhdGEnLCBmdW5jdGlvbihjaHVuaykge1xuXHRcdFx0aWYgKHNlbGYuX2Fib3J0IHx8IGNodW5rID09PSBudWxsKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKHNlbGYuc2l6ZSAmJiBzZWxmLl9ieXRlcyArIGNodW5rLmxlbmd0aCA+IHNlbGYuc2l6ZSkge1xuXHRcdFx0XHRzZWxmLl9hYm9ydCA9IHRydWU7XG5cdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcignY29udGVudCBzaXplIGF0ICcgKyBzZWxmLnVybCArICcgb3ZlciBsaW1pdDogJyArIHNlbGYuc2l6ZSwgJ21heC1zaXplJykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHNlbGYuX2J5dGVzICs9IGNodW5rLmxlbmd0aDtcblx0XHRcdHNlbGYuX3Jhdy5wdXNoKGNodW5rKTtcblx0XHR9KTtcblxuXHRcdHNlbGYuYm9keS5vbignZW5kJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRpZiAoc2VsZi5fYWJvcnQpIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXG5cdFx0XHRjbGVhclRpbWVvdXQocmVzVGltZW91dCk7XG5cdFx0XHRyZXNvbHZlKHNlbGYuX2NvbnZlcnQoKSk7XG5cdFx0fSk7XG5cdH0pO1xuXG59O1xuXG4vKipcbiAqIERldGVjdCBidWZmZXIgZW5jb2RpbmcgYW5kIGNvbnZlcnQgdG8gdGFyZ2V0IGVuY29kaW5nXG4gKiByZWY6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTEvV0QtaHRtbDUtMjAxMTAxMTMvcGFyc2luZy5odG1sI2RldGVybWluaW5nLXRoZS1jaGFyYWN0ZXItZW5jb2RpbmdcbiAqXG4gKiBAcGFyYW0gICBTdHJpbmcgIGVuY29kaW5nICBUYXJnZXQgZW5jb2RpbmdcbiAqIEByZXR1cm4gIFN0cmluZ1xuICovXG5Cb2R5LnByb3RvdHlwZS5fY29udmVydCA9IGZ1bmN0aW9uKGVuY29kaW5nKSB7XG5cblx0ZW5jb2RpbmcgPSBlbmNvZGluZyB8fCAndXRmLTgnO1xuXG5cdHZhciBjdCA9IHRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpO1xuXHR2YXIgY2hhcnNldCA9ICd1dGYtOCc7XG5cdHZhciByZXMsIHN0cjtcblxuXHQvLyBoZWFkZXJcblx0aWYgKGN0KSB7XG5cdFx0Ly8gc2tpcCBlbmNvZGluZyBkZXRlY3Rpb24gYWx0b2dldGhlciBpZiBub3QgaHRtbC94bWwvcGxhaW4gdGV4dFxuXHRcdGlmICghL3RleHRcXC9odG1sfHRleHRcXC9wbGFpbnxcXCt4bWx8XFwveG1sL2kudGVzdChjdCkpIHtcblx0XHRcdHJldHVybiBCdWZmZXIuY29uY2F0KHRoaXMuX3Jhdyk7XG5cdFx0fVxuXG5cdFx0cmVzID0gL2NoYXJzZXQ9KFteO10qKS9pLmV4ZWMoY3QpO1xuXHR9XG5cblx0Ly8gbm8gY2hhcnNldCBpbiBjb250ZW50IHR5cGUsIHBlZWsgYXQgcmVzcG9uc2UgYm9keSBmb3IgYXQgbW9zdCAxMDI0IGJ5dGVzXG5cdGlmICghcmVzICYmIHRoaXMuX3Jhdy5sZW5ndGggPiAwKSB7XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9yYXcubGVuZ3RoOyBpKyspIHtcblx0XHRcdHN0ciArPSB0aGlzLl9yYXdbaV0udG9TdHJpbmcoKVxuXHRcdFx0aWYgKHN0ci5sZW5ndGggPiAxMDI0KSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRzdHIgPSBzdHIuc3Vic3RyKDAsIDEwMjQpO1xuXHR9XG5cblx0Ly8gaHRtbDVcblx0aWYgKCFyZXMgJiYgc3RyKSB7XG5cdFx0cmVzID0gLzxtZXRhLis/Y2hhcnNldD0oWydcIl0pKC4rPylcXDEvaS5leGVjKHN0cik7XG5cdH1cblxuXHQvLyBodG1sNFxuXHRpZiAoIXJlcyAmJiBzdHIpIHtcblx0XHRyZXMgPSAvPG1ldGFbXFxzXSs/aHR0cC1lcXVpdj0oWydcIl0pY29udGVudC10eXBlXFwxW1xcc10rP2NvbnRlbnQ9KFsnXCJdKSguKz8pXFwyL2kuZXhlYyhzdHIpO1xuXG5cdFx0aWYgKHJlcykge1xuXHRcdFx0cmVzID0gL2NoYXJzZXQ9KC4qKS9pLmV4ZWMocmVzLnBvcCgpKTtcblx0XHR9XG5cdH1cblxuXHQvLyB4bWxcblx0aWYgKCFyZXMgJiYgc3RyKSB7XG5cdFx0cmVzID0gLzxcXD94bWwuKz9lbmNvZGluZz0oWydcIl0pKC4rPylcXDEvaS5leGVjKHN0cik7XG5cdH1cblxuXHQvLyBmb3VuZCBjaGFyc2V0XG5cdGlmIChyZXMpIHtcblx0XHRjaGFyc2V0ID0gcmVzLnBvcCgpO1xuXG5cdFx0Ly8gcHJldmVudCBkZWNvZGUgaXNzdWVzIHdoZW4gc2l0ZXMgdXNlIGluY29ycmVjdCBlbmNvZGluZ1xuXHRcdC8vIHJlZjogaHR0cHM6Ly9oc2l2b25lbi5maS9lbmNvZGluZy1tZW51L1xuXHRcdGlmIChjaGFyc2V0ID09PSAnZ2IyMzEyJyB8fCBjaGFyc2V0ID09PSAnZ2JrJykge1xuXHRcdFx0Y2hhcnNldCA9ICdnYjE4MDMwJztcblx0XHR9XG5cdH1cblxuXHQvLyB0dXJuIHJhdyBidWZmZXJzIGludG8gYSBzaW5nbGUgdXRmLTggYnVmZmVyXG5cdHJldHVybiBjb252ZXJ0KFxuXHRcdEJ1ZmZlci5jb25jYXQodGhpcy5fcmF3KVxuXHRcdCwgZW5jb2Rpbmdcblx0XHQsIGNoYXJzZXRcblx0KTtcblxufTtcblxuLyoqXG4gKiBDbG9uZSBib2R5IGdpdmVuIFJlcy9SZXEgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgaW5zdGFuY2UgIFJlc3BvbnNlIG9yIFJlcXVlc3QgaW5zdGFuY2VcbiAqIEByZXR1cm4gIE1peGVkXG4gKi9cbkJvZHkucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG5cdHZhciBwMSwgcDI7XG5cdHZhciBib2R5ID0gaW5zdGFuY2UuYm9keTtcblxuXHQvLyBkb24ndCBhbGxvdyBjbG9uaW5nIGEgdXNlZCBib2R5XG5cdGlmIChpbnN0YW5jZS5ib2R5VXNlZCkge1xuXHRcdHRocm93IG5ldyBFcnJvcignY2Fubm90IGNsb25lIGJvZHkgYWZ0ZXIgaXQgaXMgdXNlZCcpO1xuXHR9XG5cblx0Ly8gY2hlY2sgdGhhdCBib2R5IGlzIGEgc3RyZWFtIGFuZCBub3QgZm9ybS1kYXRhIG9iamVjdFxuXHQvLyBub3RlOiB3ZSBjYW4ndCBjbG9uZSB0aGUgZm9ybS1kYXRhIG9iamVjdCB3aXRob3V0IGhhdmluZyBpdCBhcyBhIGRlcGVuZGVuY3lcblx0aWYgKGJvZHlTdHJlYW0oYm9keSkgJiYgdHlwZW9mIGJvZHkuZ2V0Qm91bmRhcnkgIT09ICdmdW5jdGlvbicpIHtcblx0XHQvLyB0ZWUgaW5zdGFuY2UgYm9keVxuXHRcdHAxID0gbmV3IFBhc3NUaHJvdWdoKCk7XG5cdFx0cDIgPSBuZXcgUGFzc1Rocm91Z2goKTtcblx0XHRib2R5LnBpcGUocDEpO1xuXHRcdGJvZHkucGlwZShwMik7XG5cdFx0Ly8gc2V0IGluc3RhbmNlIGJvZHkgdG8gdGVlZCBib2R5IGFuZCByZXR1cm4gdGhlIG90aGVyIHRlZWQgYm9keVxuXHRcdGluc3RhbmNlLmJvZHkgPSBwMTtcblx0XHRib2R5ID0gcDI7XG5cdH1cblxuXHRyZXR1cm4gYm9keTtcbn1cblxuLy8gZXhwb3NlIFByb21pc2VcbkJvZHkuUHJvbWlzZSA9IGdsb2JhbC5Qcm9taXNlO1xuIiwiXG4vKipcbiAqIGhlYWRlcnMuanNcbiAqXG4gKiBIZWFkZXJzIGNsYXNzIG9mZmVycyBjb252ZW5pZW50IGhlbHBlcnNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhlYWRlcnM7XG5cbi8qKlxuICogSGVhZGVycyBjbGFzc1xuICpcbiAqIEBwYXJhbSAgIE9iamVjdCAgaGVhZGVycyAgUmVzcG9uc2UgaGVhZGVyc1xuICogQHJldHVybiAgVm9pZFxuICovXG5mdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcblxuXHR2YXIgc2VsZiA9IHRoaXM7XG5cdHRoaXMuX2hlYWRlcnMgPSB7fTtcblxuXHQvLyBIZWFkZXJzXG5cdGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuXHRcdGhlYWRlcnMgPSBoZWFkZXJzLnJhdygpO1xuXHR9XG5cblx0Ly8gcGxhaW4gb2JqZWN0XG5cdGZvciAodmFyIHByb3AgaW4gaGVhZGVycykge1xuXHRcdGlmICghaGVhZGVycy5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0aWYgKHR5cGVvZiBoZWFkZXJzW3Byb3BdID09PSAnc3RyaW5nJykge1xuXHRcdFx0dGhpcy5zZXQocHJvcCwgaGVhZGVyc1twcm9wXSk7XG5cblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBoZWFkZXJzW3Byb3BdID09PSAnbnVtYmVyJyAmJiAhaXNOYU4oaGVhZGVyc1twcm9wXSkpIHtcblx0XHRcdHRoaXMuc2V0KHByb3AsIGhlYWRlcnNbcHJvcF0udG9TdHJpbmcoKSk7XG5cblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVyc1twcm9wXSkpIHtcblx0XHRcdGhlYWRlcnNbcHJvcF0uZm9yRWFjaChmdW5jdGlvbihpdGVtKSB7XG5cdFx0XHRcdHNlbGYuYXBwZW5kKHByb3AsIGl0ZW0udG9TdHJpbmcoKSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblxufVxuXG4vKipcbiAqIFJldHVybiBmaXJzdCBoZWFkZXIgdmFsdWUgZ2l2ZW4gbmFtZVxuICpcbiAqIEBwYXJhbSAgIFN0cmluZyAgbmFtZSAgSGVhZGVyIG5hbWVcbiAqIEByZXR1cm4gIE1peGVkXG4gKi9cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0dmFyIGxpc3QgPSB0aGlzLl9oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV07XG5cdHJldHVybiBsaXN0ID8gbGlzdFswXSA6IG51bGw7XG59O1xuXG4vKipcbiAqIFJldHVybiBhbGwgaGVhZGVyIHZhbHVlcyBnaXZlbiBuYW1lXG4gKlxuICogQHBhcmFtICAgU3RyaW5nICBuYW1lICBIZWFkZXIgbmFtZVxuICogQHJldHVybiAgQXJyYXlcbiAqL1xuSGVhZGVycy5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24obmFtZSkge1xuXHRpZiAoIXRoaXMuaGFzKG5hbWUpKSB7XG5cdFx0cmV0dXJuIFtdO1xuXHR9XG5cblx0cmV0dXJuIHRoaXMuX2hlYWRlcnNbbmFtZS50b0xvd2VyQ2FzZSgpXTtcbn07XG5cbi8qKlxuICogSXRlcmF0ZSBvdmVyIGFsbCBoZWFkZXJzXG4gKlxuICogQHBhcmFtICAgRnVuY3Rpb24gIGNhbGxiYWNrICBFeGVjdXRlZCBmb3IgZWFjaCBpdGVtIHdpdGggcGFyYW1ldGVycyAodmFsdWUsIG5hbWUsIHRoaXNBcmcpXG4gKiBAcGFyYW0gICBCb29sZWFuICAgdGhpc0FyZyAgIGB0aGlzYCBjb250ZXh0IGZvciBjYWxsYmFjayBmdW5jdGlvblxuICogQHJldHVybiAgVm9pZFxuICovXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcblx0T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5faGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG5cdFx0dGhpcy5faGVhZGVyc1tuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG5cdFx0XHRjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKVxuXHRcdH0sIHRoaXMpXG5cdH0sIHRoaXMpXG59XG5cbi8qKlxuICogT3ZlcndyaXRlIGhlYWRlciB2YWx1ZXMgZ2l2ZW4gbmFtZVxuICpcbiAqIEBwYXJhbSAgIFN0cmluZyAgbmFtZSAgIEhlYWRlciBuYW1lXG4gKiBAcGFyYW0gICBTdHJpbmcgIHZhbHVlICBIZWFkZXIgdmFsdWVcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcblx0dGhpcy5faGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldID0gW3ZhbHVlXTtcbn07XG5cbi8qKlxuICogQXBwZW5kIGEgdmFsdWUgb250byBleGlzdGluZyBoZWFkZXJcbiAqXG4gKiBAcGFyYW0gICBTdHJpbmcgIG5hbWUgICBIZWFkZXIgbmFtZVxuICogQHBhcmFtICAgU3RyaW5nICB2YWx1ZSAgSGVhZGVyIHZhbHVlXG4gKiBAcmV0dXJuICBWb2lkXG4gKi9cbkhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG5cdGlmICghdGhpcy5oYXMobmFtZSkpIHtcblx0XHR0aGlzLnNldChuYW1lLCB2YWx1ZSk7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0dGhpcy5faGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldLnB1c2godmFsdWUpO1xufTtcblxuLyoqXG4gKiBDaGVjayBmb3IgaGVhZGVyIG5hbWUgZXhpc3RlbmNlXG4gKlxuICogQHBhcmFtICAgU3RyaW5nICAgbmFtZSAgSGVhZGVyIG5hbWVcbiAqIEByZXR1cm4gIEJvb2xlYW5cbiAqL1xuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuXHRyZXR1cm4gdGhpcy5faGVhZGVycy5oYXNPd25Qcm9wZXJ0eShuYW1lLnRvTG93ZXJDYXNlKCkpO1xufTtcblxuLyoqXG4gKiBEZWxldGUgYWxsIGhlYWRlciB2YWx1ZXMgZ2l2ZW4gbmFtZVxuICpcbiAqIEBwYXJhbSAgIFN0cmluZyAgbmFtZSAgSGVhZGVyIG5hbWVcbiAqIEByZXR1cm4gIFZvaWRcbiAqL1xuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuXHRkZWxldGUgdGhpcy5faGVhZGVyc1tuYW1lLnRvTG93ZXJDYXNlKCldO1xufTtcblxuLyoqXG4gKiBSZXR1cm4gcmF3IGhlYWRlcnMgKG5vbi1zcGVjIGFwaSlcbiAqXG4gKiBAcmV0dXJuICBPYmplY3RcbiAqL1xuSGVhZGVycy5wcm90b3R5cGUucmF3ID0gZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzLl9oZWFkZXJzO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdW5kZWZpbmVkO1xuXG52YXIgX3JlZ2VuZXJhdG9yID0gcmVxdWlyZSgnYmFiZWwtcnVudGltZS9yZWdlbmVyYXRvcicpO1xuXG52YXIgX3JlZ2VuZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlZ2VuZXJhdG9yKTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxudmFyIF9kZXNjLCBfdmFsdWUsIF9jbGFzcywgX2NsYXNzMiwgX3RlbXA7XG5cbmV4cG9ydHMuY29pbk5hbWUgPSBjb2luTmFtZTtcbmV4cG9ydHMuY29pbk5ldHdvcmsgPSBjb2luTmV0d29yaztcblxudmFyIF9ldmVudHMgPSByZXF1aXJlKCcuL2V2ZW50cycpO1xuXG52YXIgX2Zsb3dFdmVudHMgPSByZXF1aXJlKCcuL2Zsb3ctZXZlbnRzJyk7XG5cbnZhciBfYml0Y29pbmpzTGliWmNhc2ggPSByZXF1aXJlKCdiaXRjb2luanMtbGliLXpjYXNoJyk7XG5cbnZhciBiaXRjb2luID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2JpdGNvaW5qc0xpYlpjYXNoKTtcblxudmFyIF9oZG5vZGUgPSByZXF1aXJlKCcuL3V0aWxzL2hkbm9kZScpO1xuXG52YXIgaGRub2RlVXRpbHMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGRub2RlKTtcblxudmFyIF9zaWdudHggPSByZXF1aXJlKCcuL3V0aWxzL3NpZ250eCcpO1xuXG52YXIgc2lnblR4SGVscGVyID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3NpZ250eCk7XG5cbnZhciBfc2lnbmJqc3R4ID0gcmVxdWlyZSgnLi91dGlscy9zaWduYmpzdHgnKTtcblxudmFyIHNpZ25CanNUeEhlbHBlciA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9zaWduYmpzdHgpO1xuXG52YXIgX3NpZ25ldGh0eCA9IHJlcXVpcmUoJy4vdXRpbHMvc2lnbmV0aHR4Jyk7XG5cbnZhciBzaWduRXRoVHhIZWxwZXIgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfc2lnbmV0aHR4KTtcblxudmFyIF9jYWxsID0gcmVxdWlyZSgnLi91dGlscy9jYWxsJyk7XG5cbnZhciBfdHJlem9ydHlwZXMgPSByZXF1aXJlKCcuL3RyZXpvcnR5cGVzJyk7XG5cbnZhciB0cmV6b3IgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdHJlem9ydHlwZXMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikgeyByZXR1cm4gZnVuY3Rpb24gKCkgeyB2YXIgZ2VuID0gZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgZnVuY3Rpb24gc3RlcChrZXksIGFyZykgeyB0cnkgeyB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7IHZhciB2YWx1ZSA9IGluZm8udmFsdWU7IH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IHJldHVybjsgfSBpZiAoaW5mby5kb25lKSB7IHJlc29sdmUodmFsdWUpOyB9IGVsc2UgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uICh2YWx1ZSkgeyBzdGVwKFwibmV4dFwiLCB2YWx1ZSk7IH0sIGZ1bmN0aW9uIChlcnIpIHsgc3RlcChcInRocm93XCIsIGVycik7IH0pOyB9IH0gcmV0dXJuIHN0ZXAoXCJuZXh0XCIpOyB9KTsgfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVjb3JhdG9ycywgZGVzY3JpcHRvciwgY29udGV4dCkge1xuICAgIHZhciBkZXNjID0ge307XG4gICAgT2JqZWN0WydrZScgKyAneXMnXShkZXNjcmlwdG9yKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldO1xuICAgIH0pO1xuICAgIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlO1xuICAgIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTtcblxuICAgIGlmICgndmFsdWUnIGluIGRlc2MgfHwgZGVzYy5pbml0aWFsaXplcikge1xuICAgICAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBkZXNjID0gZGVjb3JhdG9ycy5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24gKGRlc2MsIGRlY29yYXRvcikge1xuICAgICAgICByZXR1cm4gZGVjb3JhdG9yKHRhcmdldCwgcHJvcGVydHksIGRlc2MpIHx8IGRlc2M7XG4gICAgfSwgZGVzYyk7XG5cbiAgICBpZiAoY29udGV4dCAmJiBkZXNjLmluaXRpYWxpemVyICE9PSB2b2lkIDApIHtcbiAgICAgICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7XG4gICAgICAgIGRlc2MuaW5pdGlhbGl6ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkge1xuICAgICAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTtcbiAgICAgICAgZGVzYyA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlc2M7XG59XG5cbi8qIGVzbGludC1lbmFibGUgbm8tcmVkZWNsYXJlICovXG5cbi8vXG4vLyBUcmV6b3IgZGV2aWNlIHNlc3Npb24gaGFuZGxlLiBBY3RzIGFzIGEgZXZlbnQgZW1pdHRlci5cbi8vXG4vLyBFdmVudHM6XG4vL1xuLy8gIHNlbmQ6IHR5cGUsIG1lc3NhZ2Vcbi8vICByZWNlaXZlOiB0eXBlLCBtZXNzYWdlXG4vLyAgZXJyb3I6IGVycm9yXG4vL1xuLy8gIGJ1dHRvbjogY29kZVxuLy8gIHBpbjogdHlwZSwgY2FsbGJhY2soZXJyb3IsIHBpbilcbi8vICB3b3JkOiBjYWxsYmFjayhlcnJvciwgd29yZClcbi8vICBwYXNzcGhyYXNlOiBjYWxsYmFjayhlcnJvciwgcGFzc3BocmFzZSlcbi8vXG5cblxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXG52YXIgU2Vzc2lvbiA9IChfY2xhc3MgPSAoX3RlbXAgPSBfY2xhc3MyID0gZnVuY3Rpb24gKF9FdmVudEVtaXR0ZXIpIHtcbiAgICBfaW5oZXJpdHMoU2Vzc2lvbiwgX0V2ZW50RW1pdHRlcik7XG5cbiAgICBmdW5jdGlvbiBTZXNzaW9uKHRyYW5zcG9ydCwgc2Vzc2lvbklkLCBkZXNjcmlwdG9yLCBkZWJ1ZywgZGV2aWNlLCB4cHViRGVyaXZlLCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFNlc3Npb24pO1xuXG4gICAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChTZXNzaW9uLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoU2Vzc2lvbikpLmNhbGwodGhpcykpO1xuXG4gICAgICAgIF90aGlzLnNlbmRFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDIoJ3NlbmQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnJlY2VpdmVFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDIoJ3JlY2VpdmUnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmVycm9yRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdlcnJvcicsIF90aGlzKTtcbiAgICAgICAgX3RoaXMuYnV0dG9uRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdidXR0b24nLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnBpbkV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MigncGluJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5wYXNzcGhyYXNlRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdwYXNzcGhyYXNlJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy53b3JkRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCd3b3JkJywgX3RoaXMpO1xuXG4gICAgICAgIF90aGlzLl90cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG4gICAgICAgIF90aGlzLl9zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gICAgICAgIF90aGlzLl9kZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgX3RoaXMuZGV2aWNlID0gZGV2aWNlO1xuICAgICAgICBfdGhpcy5jYWxsSGVscGVyID0gbmV3IF9jYWxsLkNhbGxIZWxwZXIodHJhbnNwb3J0LCBzZXNzaW9uSWQsIF90aGlzKTtcbiAgICAgICAgX3RoaXMuZGVidWcgPSBkZWJ1ZztcbiAgICAgICAgX3RoaXMueHB1YkRlcml2ZSA9IHhwdWJEZXJpdmU7XG4gICAgICAgIF90aGlzLmRlYnVnTGluayA9IGRlYnVnTGluaztcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIF9jcmVhdGVDbGFzcyhTZXNzaW9uLCBbe1xuICAgICAgICBrZXk6ICdkZWFjdGl2YXRlRXZlbnRzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGRlYWN0aXZhdGVFdmVudHMoKSB7XG4gICAgICAgICAgICB2YXIgZXZlbnRzID0gW3RoaXMuc2VuZEV2ZW50LCB0aGlzLnJlY2VpdmVFdmVudCwgdGhpcy5lcnJvckV2ZW50LCB0aGlzLmJ1dHRvbkV2ZW50LCB0aGlzLnBpbkV2ZW50LCB0aGlzLnBhc3NwaHJhc2VFdmVudCwgdGhpcy53b3JkRXZlbnRdO1xuICAgICAgICAgICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKGV2KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGV2LnJlbW92ZUFsbExpc3RlbmVycygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2dldElkJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldElkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Nlc3Npb25JZDtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnZ2V0UGF0aCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQYXRoKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Rlc2NyaXB0b3IucGF0aDtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnaXNEZXNjcmlwdG9yJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGlzRGVzY3JpcHRvcihkZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRvci5wYXRoID09PSBkZXNjcmlwdG9yLnBhdGg7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3JlbGVhc2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVsZWFzZShvbmNsb3NlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdHJlem9yLmpzXSBbc2Vzc2lvbl0gcmVsZWFzaW5nJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJhbnNwb3J0LnJlbGVhc2UodGhpcy5fc2Vzc2lvbklkLCBvbmNsb3NlLCB0aGlzLmRlYnVnTGluayk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2luaXRpYWxpemUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRldmljZSAmJiB0aGlzLmRldmljZS5wYXNzcGhyYXNlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0luaXRpYWxpemUnLCAnRmVhdHVyZXMnLCB7IHN0YXRlOiB0aGlzLmRldmljZS5wYXNzcGhyYXNlU3RhdGUgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0luaXRpYWxpemUnLCAnRmVhdHVyZXMnLCB7fSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2dldEZlYXR1cmVzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEZlYXR1cmVzKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdHZXRGZWF0dXJlcycsICdGZWF0dXJlcycsIHt9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnZ2V0RW50cm9weScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRFbnRyb3B5KHNpemUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnR2V0RW50cm9weScsICdFbnRyb3B5Jywge1xuICAgICAgICAgICAgICAgIHNpemU6IHNpemVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdnZXRBZGRyZXNzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEFkZHJlc3MoYWRkcmVzc19uLCBjb2luLCBzaG93X2Rpc3BsYXksIHNlZ3dpdCkge1xuICAgICAgICAgICAgdmFyIGNvaW5fbmFtZSA9IGNvaW5OYW1lKGNvaW4pO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdHZXRBZGRyZXNzJywgJ0FkZHJlc3MnLCB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc19uOiBhZGRyZXNzX24sXG4gICAgICAgICAgICAgICAgY29pbl9uYW1lOiBjb2luX25hbWUsXG4gICAgICAgICAgICAgICAgc2hvd19kaXNwbGF5OiAhIXNob3dfZGlzcGxheSxcbiAgICAgICAgICAgICAgICBzY3JpcHRfdHlwZTogc2Vnd2l0ID8gJ1NQRU5EUDJTSFdJVE5FU1MnIDogJ1NQRU5EQUREUkVTUydcbiAgICAgICAgICAgIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHJlcy5tZXNzYWdlLnBhdGggPSBhZGRyZXNzX24gfHwgW107XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdldGhlcmV1bUdldEFkZHJlc3MnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gZXRoZXJldW1HZXRBZGRyZXNzKGFkZHJlc3Nfbiwgc2hvd19kaXNwbGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0V0aGVyZXVtR2V0QWRkcmVzcycsICdFdGhlcmV1bUFkZHJlc3MnLCB7XG4gICAgICAgICAgICAgICAgYWRkcmVzc19uOiBhZGRyZXNzX24sXG4gICAgICAgICAgICAgICAgc2hvd19kaXNwbGF5OiAhIXNob3dfZGlzcGxheVxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmVzLm1lc3NhZ2UucGF0aCA9IGFkZHJlc3NfbiB8fCBbXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2dldFB1YmxpY0tleScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRQdWJsaWNLZXkoYWRkcmVzc19uLCBjb2luKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0UHVibGljS2V5SW50ZXJuYWwoYWRkcmVzc19uLCBjb2luKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2dldFB1YmxpY0tleUludGVybmFsJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9nZXRQdWJsaWNLZXlJbnRlcm5hbChhZGRyZXNzX24sIGNvaW4sIHNjcmlwdF90eXBlKSB7XG4gICAgICAgICAgICB2YXIgY29pbl9uYW1lID0gY29pbiA/IGNvaW5OYW1lKGNvaW4pIDogJ0JpdGNvaW4nO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdHZXRQdWJsaWNLZXknLCAnUHVibGljS2V5Jywge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NfbjogYWRkcmVzc19uLFxuICAgICAgICAgICAgICAgIGNvaW5fbmFtZTogY29pbl9uYW1lLFxuICAgICAgICAgICAgICAgIHNjcmlwdF90eXBlOiBzY3JpcHRfdHlwZVxuICAgICAgICAgICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgICAgICAgICAgcmVzLm1lc3NhZ2Uubm9kZS5wYXRoID0gYWRkcmVzc19uIHx8IFtdO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnd2lwZURldmljZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB3aXBlRGV2aWNlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdXaXBlRGV2aWNlJywgJ1N1Y2Nlc3MnLCB7fSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3Jlc2V0RGV2aWNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJlc2V0RGV2aWNlKHNldHRpbmdzKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ1Jlc2V0RGV2aWNlJywgJ1N1Y2Nlc3MnLCBzZXR0aW5ncyk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2xvYWREZXZpY2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gbG9hZERldmljZShzZXR0aW5ncywgbmV0d29yaykge1xuICAgICAgICAgICAgdmFyIGNvbnZlcnRlZE5ldHdvcmsgPSBuZXR3b3JrID09IG51bGwgPyBudWxsIDogY29pbk5ldHdvcmsobmV0d29yayk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0xvYWREZXZpY2UnLCAnU3VjY2VzcycsIHdyYXBMb2FkRGV2aWNlKHNldHRpbmdzLCBjb252ZXJ0ZWROZXR3b3JrKSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3JlY292ZXJEZXZpY2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVjb3ZlckRldmljZShzZXR0aW5ncykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdSZWNvdmVyeURldmljZScsICdTdWNjZXNzJywgX2V4dGVuZHMoe30sIHNldHRpbmdzLCB7XG4gICAgICAgICAgICAgICAgZW5mb3JjZV93b3JkbGlzdDogdHJ1ZVxuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdhcHBseVNldHRpbmdzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5U2V0dGluZ3Moc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnQXBwbHlTZXR0aW5ncycsICdTdWNjZXNzJywgc2V0dGluZ3MpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdhcHBseUZsYWdzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGFwcGx5RmxhZ3MoZmxhZ3MpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnQXBwbHlGbGFncycsICdTdWNjZXNzJywgeyBmbGFnczogZmxhZ3MgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2NsZWFyU2Vzc2lvbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjbGVhclNlc3Npb24oc2V0dGluZ3MpIHtcbiAgICAgICAgICAgIHZhciBzID0gc2V0dGluZ3MgPT0gbnVsbCA/IHt9IDogc2V0dGluZ3M7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0NsZWFyU2Vzc2lvbicsICdTdWNjZXNzJywgcyk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2NoYW5nZVBpbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjaGFuZ2VQaW4ocmVtb3ZlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0NoYW5nZVBpbicsICdTdWNjZXNzJywge1xuICAgICAgICAgICAgICAgIHJlbW92ZTogcmVtb3ZlIHx8IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAndXBkYXRlRmlybXdhcmUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdXBkYXRlRmlybXdhcmUocGF5bG9hZCkge1xuICAgICAgICAgICAgdmFyIGRldmljZSA9IHRoaXMuZGV2aWNlO1xuICAgICAgICAgICAgaWYgKGRldmljZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQ2Fubm90IGRldGVybWluZSBib290bG9hZGVyIHZlcnNpb24uJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFkZXZpY2UuZmVhdHVyZXMuYm9vdGxvYWRlcl9tb2RlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignRGV2aWNlIGlzIG5vdCBpbiBib290bG9hZGVyIG1vZGUuJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGRldmljZS5mZWF0dXJlcy5tYWpvcl92ZXJzaW9uID09PSAyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3VwZGF0ZUZpcm13YXJlVjIocGF5bG9hZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl91cGRhdGVGaXJtd2FyZVYxKHBheWxvYWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfdXBkYXRlRmlybXdhcmVWMScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZShwYXlsb2FkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdGaXJtd2FyZUVyYXNlJywgJ1N1Y2Nlc3MnLCB7fSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0Zpcm13YXJlVXBsb2FkJywgJ1N1Y2Nlc3MnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCdyZXR1cm4nLCBfY29udGV4dC5zZW50KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgX2NhbGxlZSwgdGhpcyk7XG4gICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgIGZ1bmN0aW9uIF91cGRhdGVGaXJtd2FyZVYxKF94KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIF91cGRhdGVGaXJtd2FyZVYxO1xuICAgICAgICB9KClcbiAgICB9LCB7XG4gICAgICAgIGtleTogJ191cGRhdGVGaXJtd2FyZVYyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIocGF5bG9hZCkge1xuICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0LCBzdGFydCwgZW5kLCBjaHVuaztcbiAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnRmlybXdhcmVFcmFzZScsICdGaXJtd2FyZVJlcXVlc3QnLCB7IGxlbmd0aDogcGF5bG9hZC5ieXRlTGVuZ3RoIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gX2NvbnRleHQyLnNlbnQ7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKHJlcXVlc3QudHlwZSAhPT0gJ1N1Y2Nlc3MnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSByZXF1ZXN0Lm1lc3NhZ2Uub2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSByZXF1ZXN0Lm1lc3NhZ2Uub2Zmc2V0ICsgcmVxdWVzdC5tZXNzYWdlLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2h1bmsgPSBwYXlsb2FkLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnRmlybXdhcmVVcGxvYWQnLCAnRmlybXdhcmVSZXF1ZXN0fFN1Y2Nlc3MnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXlsb2FkOiBjaHVua1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IF9jb250ZXh0Mi5zZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoJ3JldHVybicsIHJlcXVlc3QpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gX3VwZGF0ZUZpcm13YXJlVjIoX3gyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfdXBkYXRlRmlybXdhcmVWMjtcbiAgICAgICAgfSgpXG5cbiAgICAgICAgLy8gZmFpbHVyZSB0byB2ZXJpZnkgcmVqZWN0cyByZXR1cm5lZCBwcm9taXNlXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3ZlcmlmeU1lc3NhZ2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdmVyaWZ5TWVzc2FnZShhZGRyZXNzLCBzaWduYXR1cmUsIG1lc3NhZ2UsIGNvaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnVmVyaWZ5TWVzc2FnZScsICdTdWNjZXNzJywge1xuICAgICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3MsXG4gICAgICAgICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBjb2luX25hbWU6IGNvaW5OYW1lKGNvaW4pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAndmVyaWZ5RXRoTWVzc2FnZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB2ZXJpZnlFdGhNZXNzYWdlKGFkZHJlc3MsIHNpZ25hdHVyZSwgbWVzc2FnZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdFdGhlcmV1bVZlcmlmeU1lc3NhZ2UnLCAnU3VjY2VzcycsIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLFxuICAgICAgICAgICAgICAgIHNpZ25hdHVyZTogc2lnbmF0dXJlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzaWduTWVzc2FnZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzaWduTWVzc2FnZShhZGRyZXNzX24sIG1lc3NhZ2UsIGNvaW4sIHNlZ3dpdCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHlwZWRDYWxsKCdTaWduTWVzc2FnZScsICdNZXNzYWdlU2lnbmF0dXJlJywge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NfbjogYWRkcmVzc19uLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgY29pbl9uYW1lOiBjb2luTmFtZShjb2luKSxcbiAgICAgICAgICAgICAgICBzY3JpcHRfdHlwZTogc2Vnd2l0ID8gJ1NQRU5EUDJTSFdJVE5FU1MnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2lnbkV0aE1lc3NhZ2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2lnbkV0aE1lc3NhZ2UoYWRkcmVzc19uLCBtZXNzYWdlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0V0aGVyZXVtU2lnbk1lc3NhZ2UnLCAnRXRoZXJldW1NZXNzYWdlU2lnbmF0dXJlJywge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NfbjogYWRkcmVzc19uLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzaWduSWRlbnRpdHknLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2lnbklkZW50aXR5KGlkZW50aXR5LCBjaGFsbGVuZ2VfaGlkZGVuLCBjaGFsbGVuZ2VfdmlzdWFsKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ1NpZ25JZGVudGl0eScsICdTaWduZWRJZGVudGl0eScsIHtcbiAgICAgICAgICAgICAgICBpZGVudGl0eTogaWRlbnRpdHksXG4gICAgICAgICAgICAgICAgY2hhbGxlbmdlX2hpZGRlbjogY2hhbGxlbmdlX2hpZGRlbixcbiAgICAgICAgICAgICAgICBjaGFsbGVuZ2VfdmlzdWFsOiBjaGFsbGVuZ2VfdmlzdWFsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnY2lwaGVyS2V5VmFsdWUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY2lwaGVyS2V5VmFsdWUoYWRkcmVzc19uLCBrZXksIHZhbHVlLCBlbmNyeXB0LCBhc2tfb25fZW5jcnlwdCwgYXNrX29uX2RlY3J5cHQsIGl2IC8vIGluIGhleGFkZWNpbWFsXG4gICAgICAgICkge1xuICAgICAgICAgICAgdmFyIHZhbHVlU3RyaW5nID0gdmFsdWUudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICAgICAgdmFyIGl2U3RyaW5nID0gaXYgPT0gbnVsbCA/IG51bGwgOiBpdi50b1N0cmluZygnaGV4Jyk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnQ2lwaGVyS2V5VmFsdWUnLCAnQ2lwaGVyZWRLZXlWYWx1ZScsIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzX246IGFkZHJlc3NfbixcbiAgICAgICAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWVTdHJpbmcsXG4gICAgICAgICAgICAgICAgZW5jcnlwdDogZW5jcnlwdCxcbiAgICAgICAgICAgICAgICBhc2tfb25fZW5jcnlwdDogYXNrX29uX2VuY3J5cHQsXG4gICAgICAgICAgICAgICAgYXNrX29uX2RlY3J5cHQ6IGFza19vbl9kZWNyeXB0LFxuICAgICAgICAgICAgICAgIGl2OiBpdlN0cmluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2NpcGhlcktleVZhbHVlQnVmZmVyJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNpcGhlcktleVZhbHVlQnVmZmVyKGFkZHJlc3Nfbiwga2V5LCB2YWx1ZSwgZW5jcnlwdCwgYXNrX29uX2VuY3J5cHQsIGFza19vbl9kZWNyeXB0LCBpdiAvLyBpbiBoZXhhZGVjaW1hbFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNpcGhlcktleVZhbHVlKGFkZHJlc3Nfbiwga2V5LCB2YWx1ZSwgZW5jcnlwdCwgYXNrX29uX2VuY3J5cHQsIGFza19vbl9kZWNyeXB0LCBpdikudGhlbihmdW5jdGlvbiAocikge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSByLm1lc3NhZ2UudmFsdWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCdWZmZXIodmFsLCAnaGV4Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnbWVhc3VyZVR4JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIG1lYXN1cmVUeChpbnB1dHMsIG91dHB1dHMsIGNvaW4pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnRXN0aW1hdGVUeFNpemUnLCAnVHhTaXplJywge1xuICAgICAgICAgICAgICAgIGlucHV0c19jb3VudDogaW5wdXRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBvdXRwdXRzX2NvdW50OiBvdXRwdXRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBjb2luX25hbWU6IGNvaW5OYW1lKGNvaW4pXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc2lnblR4JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHNpZ25UeChpbnB1dHMsIG91dHB1dHMsIHR4cywgY29pbiwgbG9ja3RpbWUsIG92ZXJ3aW50ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBzaWduVHhIZWxwZXIuc2lnblR4KHRoaXMsIGlucHV0cywgb3V0cHV0cywgdHhzLCBjb2luLCBsb2NrdGltZSwgb3ZlcndpbnRlcik7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3NpZ25CanNUeCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzaWduQmpzVHgoaW5mbywgcmVmVHhzLCBub2RlcywgY29pbk5hbWUsIG5ldHdvcmssIGxvY2t0aW1lLCBpc0Nhc2hhZGRyZXNzLCBvdmVyd2ludGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gc2lnbkJqc1R4SGVscGVyLnNpZ25CanNUeCh0aGlzLCBpbmZvLCByZWZUeHMsIG5vZGVzLCBjb2luTmFtZSwgbmV0d29yaywgbG9ja3RpbWUsIGlzQ2FzaGFkZHJlc3MsIG92ZXJ3aW50ZXIpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzaWduRXRoVHgnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2lnbkV0aFR4KGFkZHJlc3Nfbiwgbm9uY2UsIGdhc19wcmljZSwgZ2FzX2xpbWl0LCB0bywgdmFsdWUsIGRhdGEsIGNoYWluX2lkKSB7XG4gICAgICAgICAgICByZXR1cm4gc2lnbkV0aFR4SGVscGVyLnNpZ25FdGhUeCh0aGlzLCBhZGRyZXNzX24sIG5vbmNlLCBnYXNfcHJpY2UsIGdhc19saW1pdCwgdG8sIHZhbHVlLCBkYXRhLCBjaGFpbl9pZCk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3R5cGVkQ2FsbCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0eXBlZENhbGwodHlwZSwgcmVzVHlwZSwgbXNnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsSGVscGVyLnR5cGVkQ2FsbCh0eXBlLCByZXNUeXBlLCBtc2cpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdyYXdQb3N0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHJhd1Bvc3QodHlwZSwgbXNnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsSGVscGVyLnBvc3QodHlwZSwgbXNnKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAncmF3UmVhZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByYXdSZWFkKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEhlbHBlci5yZWFkKCk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3Jhd0NhbGwnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmF3Q2FsbCh0eXBlLCBtc2cpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxIZWxwZXIuY2FsbCh0eXBlLCBtc2cpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd2ZXJpZnlBZGRyZXNzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHZlcmlmeUFkZHJlc3MocGF0aCwgYWRkcmVzcywgY29pbiwgc2Vnd2l0KSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWRkcmVzcyhwYXRoLCBjb2luLCB0cnVlLCBzZWd3aXQpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciB2ZXJpZmllZCA9IHJlcy5tZXNzYWdlLmFkZHJlc3MgPT09IGFkZHJlc3M7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXZlcmlmaWVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpczIuZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignW3RyZXpvci5qc10gW3Nlc3Npb25dIEFkZHJlc3MgdmVyaWZpY2F0aW9uIGZhaWxlZCcsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzQWRkcmVzczogYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmV6b3JBZGRyZXNzOiByZXMubWVzc2FnZS5hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB2ZXJpZmllZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdjaGFuZ2VMYWJlbCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBjaGFuZ2VMYWJlbChsYWJlbCkge1xuICAgICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCA+IFNlc3Npb24uTEFCRUxfTUFYX0xFTkdUSCkge1xuICAgICAgICAgICAgICAgIGxhYmVsID0gbGFiZWwuc2xpY2UoMCwgU2Vzc2lvbi5MQUJFTF9NQVhfTEVOR1RIKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlTZXR0aW5ncyh7XG4gICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAndG9nZ2xlUGFzc3BocmFzZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0b2dnbGVQYXNzcGhyYXNlKGVuYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHlTZXR0aW5ncyh7XG4gICAgICAgICAgICAgICAgdXNlX3Bhc3NwaHJhc2U6IGVuYWJsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2NoYW5nZUhvbWVzY3JlZW4nLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gY2hhbmdlSG9tZXNjcmVlbihoZXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFwcGx5U2V0dGluZ3Moe1xuICAgICAgICAgICAgICAgIGhvbWVzY3JlZW46IGhleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19nZXRIRE5vZGVJbnRlcm5hbCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfZ2V0SEROb2RlSW50ZXJuYWwocGF0aCwgbmV0d29yaykge1xuICAgICAgICAgICAgcmV0dXJuIGhkbm9kZVV0aWxzLmdldEhETm9kZSh0aGlzLCBwYXRoLCBjb2luTmV0d29yayhuZXR3b3JrKSwgdGhpcy54cHViRGVyaXZlKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnZ2V0SEROb2RlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGdldEhETm9kZShwYXRoLCBuZXR3b3JrKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZ2V0SEROb2RlSW50ZXJuYWwocGF0aCwgbmV0d29yayk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3NldFUyRkNvdW50ZXInLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0VTJGQ291bnRlcihjb3VudGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ1NldFUyRkNvdW50ZXInLCAnU3VjY2VzcycsIHtcbiAgICAgICAgICAgICAgICB1MmZfY291bnRlcjogY291bnRlclxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2JhY2t1cERldmljZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBiYWNrdXBEZXZpY2UoKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50eXBlZENhbGwoJ0JhY2t1cERldmljZScsICdTdWNjZXNzJywge30pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICduZW1HZXRBZGRyZXNzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIG5lbUdldEFkZHJlc3MoYWRkcmVzc19uLCBuZXR3b3JrLCBzaG93X2Rpc3BsYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnTkVNR2V0QWRkcmVzcycsICdORU1BZGRyZXNzJywge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NfbjogYWRkcmVzc19uLFxuICAgICAgICAgICAgICAgIG5ldHdvcms6IG5ldHdvcmssXG4gICAgICAgICAgICAgICAgc2hvd19kaXNwbGF5OiAhIXNob3dfZGlzcGxheVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ25lbVNpZ25UeCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBuZW1TaWduVHgodHJhbnNhY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnTkVNU2lnblR4JywgJ05FTVNpZ25lZFR4JywgdHJhbnNhY3Rpb24pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICduZW1EZWNyeXB0TWVzc2FnZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBuZW1EZWNyeXB0TWVzc2FnZShhZGRyZXNzX24sIG5ldHdvcmssIHB1YmxpY19rZXksIHBheWxvYWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnR5cGVkQ2FsbCgnTkVNRGVjcnlwdE1lc3NhZ2UnLCAnTkVNRGVjcnlwdGVkTWVzc2FnZScsIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzX246IGFkZHJlc3NfbixcbiAgICAgICAgICAgICAgICBuZXR3b3JrOiBuZXR3b3JrLFxuICAgICAgICAgICAgICAgIHB1YmxpY19rZXk6IHB1YmxpY19rZXksXG4gICAgICAgICAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gU2Vzc2lvbjtcbn0oX2V2ZW50cy5FdmVudEVtaXR0ZXIpLCBfY2xhc3MyLkxBQkVMX01BWF9MRU5HVEggPSAxNiwgX3RlbXApLCAoX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnZ2V0QWRkcmVzcycsIFtpbnRlZ3JpdHlDaGVja10sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2dldEFkZHJlc3MnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2V0aGVyZXVtR2V0QWRkcmVzcycsIFtpbnRlZ3JpdHlDaGVja10sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2V0aGVyZXVtR2V0QWRkcmVzcycpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnZ2V0UHVibGljS2V5JywgW2ludGVncml0eUNoZWNrXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnZ2V0UHVibGljS2V5JyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdzaWduVHgnLCBbaW50ZWdyaXR5Q2hlY2tdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdzaWduVHgnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3NpZ25CanNUeCcsIFtpbnRlZ3JpdHlDaGVja10sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3NpZ25CanNUeCcpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnc2lnbkV0aFR4JywgW2ludGVncml0eUNoZWNrXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnc2lnbkV0aFR4JyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICd2ZXJpZnlBZGRyZXNzJywgW2ludGVncml0eUNoZWNrXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAndmVyaWZ5QWRkcmVzcycpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnZ2V0SEROb2RlJywgW2ludGVncml0eUNoZWNrXSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnZ2V0SEROb2RlJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICduZW1TaWduVHgnLCBbaW50ZWdyaXR5Q2hlY2tdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICduZW1TaWduVHgnKSwgX2NsYXNzLnByb3RvdHlwZSkpLCBfY2xhc3MpO1xuZXhwb3J0cy5kZWZhdWx0ID0gU2Vzc2lvbjtcbmZ1bmN0aW9uIGNvaW5OYW1lKGNvaW4pIHtcbiAgICByZXR1cm4gY29pbi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGNvaW4uc2xpY2UoMSk7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXJlZGVjbGFyZSAqL1xuZnVuY3Rpb24gY29pbk5ldHdvcmsoY29pbikge1xuICAgIGlmICh0eXBlb2YgY29pbiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuIGNvaW47XG4gICAgfVxuXG4gICAgdmFyIG5hbWUgPSBjb2luTmFtZShjb2luKS50b0xvd2VyQ2FzZSgpO1xuICAgIHZhciBuZXR3b3JrID0gYml0Y29pbi5uZXR3b3Jrc1tuYW1lXTtcbiAgICBpZiAobmV0d29yayA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gbmV0d29yayB3aXRoIHRoZSBuYW1lICcgKyBuYW1lICsgJy4nKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldHdvcms7XG59XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXJlZGVjbGFyZSAqL1xuXG5mdW5jdGlvbiB3cmFwTG9hZERldmljZShzZXR0aW5ncywgbmV0d29ya18pIHtcbiAgICB2YXIgbmV0d29yayA9IG5ldHdvcmtfID09IG51bGwgPyBiaXRjb2luLm5ldHdvcmtzLmJpdGNvaW4gOiBuZXR3b3JrXztcbiAgICBpZiAoc2V0dGluZ3Mubm9kZSA9PSBudWxsICYmIHNldHRpbmdzLm1uZW1vbmljID09IG51bGwpIHtcbiAgICAgICAgaWYgKHNldHRpbmdzLnBheWxvYWQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdQYXlsb2FkLCBtbmVtb25pYyBvciBub2RlIG5lY2Vzc2FyeS4nKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gdHJ5IHRvIGRlY29kZSBhcyB4cHJ2XG4gICAgICAgICAgICB2YXIgYmpzTm9kZSA9IGJpdGNvaW4uSEROb2RlLmZyb21CYXNlNTgoc2V0dGluZ3MucGF5bG9hZCwgbmV0d29yayk7XG4gICAgICAgICAgICBzZXR0aW5ncyA9IF9leHRlbmRzKHt9LCBzZXR0aW5ncywgeyBub2RlOiBoZG5vZGVVdGlscy5ianNOb2RlMnByaXZOb2RlKGJqc05vZGUpIH0pO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAvLyB1c2UgYXMgbW5lbW9uaWNcbiAgICAgICAgICAgIHNldHRpbmdzID0gX2V4dGVuZHMoe30sIHNldHRpbmdzLCB7IG1uZW1vbmljOiBzZXR0aW5ncy5wYXlsb2FkIH0pO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBzZXR0aW5ncy5wYXlsb2FkO1xuICAgIH1cbiAgICByZXR1cm4gc2V0dGluZ3M7XG59XG5cbi8vIFNlZSB0aGUgY29tbWVudCBpbiBkZXZpY2UuanMgb24gaW50ZWdyaXR5Q2hlY2tpbmdYcHViLlxuLy8gVGhlIGNoZWNrIGlzIG5vdCBkb25lIGhlcmUgYnV0IG9uIGRldmljZS5qcywgc2luY2UgU2Vzc2lvbiBvYmplY3Rcbi8vIGRpc2FwcGVhcnMgYW5kIGRvZXNuJ3QgcmVtZW1iZXIgdGhlIHhwdWJzXG5mdW5jdGlvbiBpbnRlZ3JpdHlDaGVjayh0YXJnZXQsIG5hbWUsIGRlc2NyaXB0b3IpIHtcbiAgICB2YXIgb3JpZ2luYWwgPSBkZXNjcmlwdG9yLnZhbHVlO1xuICAgIGRlc2NyaXB0b3IudmFsdWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpczMgPSB0aGlzLFxuICAgICAgICAgICAgX2FyZ3VtZW50cyA9IGFyZ3VtZW50cztcblxuICAgICAgICB2YXIgY2hlY2tQcm9taXNlID0gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgIGlmICh0aGlzLmRldmljZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBjaGVja1Byb21pc2UgPSB0aGlzLmRldmljZS54cHViSW50ZWdyaXR5Q2hlY2sodGhpcyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gY2hlY2tQcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsLmFwcGx5KF90aGlzMywgX2FyZ3VtZW50cyk7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZGVzY3JpcHRvcjtcbn0iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uIChhcnIpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoYXJyKSA9PSAnW29iamVjdCBBcnJheV0nO1xufTtcbiIsIi8vIFJlZmVyZW5jZSBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMDY2Lm1lZGlhd2lraVxuLy8gRm9ybWF0OiAweDMwIFt0b3RhbC1sZW5ndGhdIDB4MDIgW1ItbGVuZ3RoXSBbUl0gMHgwMiBbUy1sZW5ndGhdIFtTXVxuLy8gTk9URTogU0lHSEFTSCBieXRlIGlnbm9yZWQgQU5EIHJlc3RyaWN0ZWQsIHRydW5jYXRlIGJlZm9yZSB1c2VcblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbmZ1bmN0aW9uIGNoZWNrIChidWZmZXIpIHtcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPCA4KSByZXR1cm4gZmFsc2VcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPiA3MikgcmV0dXJuIGZhbHNlXG4gIGlmIChidWZmZXJbMF0gIT09IDB4MzApIHJldHVybiBmYWxzZVxuICBpZiAoYnVmZmVyWzFdICE9PSBidWZmZXIubGVuZ3RoIC0gMikgcmV0dXJuIGZhbHNlXG4gIGlmIChidWZmZXJbMl0gIT09IDB4MDIpIHJldHVybiBmYWxzZVxuXG4gIHZhciBsZW5SID0gYnVmZmVyWzNdXG4gIGlmIChsZW5SID09PSAwKSByZXR1cm4gZmFsc2VcbiAgaWYgKDUgKyBsZW5SID49IGJ1ZmZlci5sZW5ndGgpIHJldHVybiBmYWxzZVxuICBpZiAoYnVmZmVyWzQgKyBsZW5SXSAhPT0gMHgwMikgcmV0dXJuIGZhbHNlXG5cbiAgdmFyIGxlblMgPSBidWZmZXJbNSArIGxlblJdXG4gIGlmIChsZW5TID09PSAwKSByZXR1cm4gZmFsc2VcbiAgaWYgKCg2ICsgbGVuUiArIGxlblMpICE9PSBidWZmZXIubGVuZ3RoKSByZXR1cm4gZmFsc2VcblxuICBpZiAoYnVmZmVyWzRdICYgMHg4MCkgcmV0dXJuIGZhbHNlXG4gIGlmIChsZW5SID4gMSAmJiAoYnVmZmVyWzRdID09PSAweDAwKSAmJiAhKGJ1ZmZlcls1XSAmIDB4ODApKSByZXR1cm4gZmFsc2VcblxuICBpZiAoYnVmZmVyW2xlblIgKyA2XSAmIDB4ODApIHJldHVybiBmYWxzZVxuICBpZiAobGVuUyA+IDEgJiYgKGJ1ZmZlcltsZW5SICsgNl0gPT09IDB4MDApICYmICEoYnVmZmVyW2xlblIgKyA3XSAmIDB4ODApKSByZXR1cm4gZmFsc2VcbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gZGVjb2RlIChidWZmZXIpIHtcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPCA4KSB0aHJvdyBuZXcgRXJyb3IoJ0RFUiBzZXF1ZW5jZSBsZW5ndGggaXMgdG9vIHNob3J0JylcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPiA3MikgdGhyb3cgbmV3IEVycm9yKCdERVIgc2VxdWVuY2UgbGVuZ3RoIGlzIHRvbyBsb25nJylcbiAgaWYgKGJ1ZmZlclswXSAhPT0gMHgzMCkgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBERVIgc2VxdWVuY2UnKVxuICBpZiAoYnVmZmVyWzFdICE9PSBidWZmZXIubGVuZ3RoIC0gMikgdGhyb3cgbmV3IEVycm9yKCdERVIgc2VxdWVuY2UgbGVuZ3RoIGlzIGludmFsaWQnKVxuICBpZiAoYnVmZmVyWzJdICE9PSAweDAyKSB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIERFUiBpbnRlZ2VyJylcblxuICB2YXIgbGVuUiA9IGJ1ZmZlclszXVxuICBpZiAobGVuUiA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdSIGxlbmd0aCBpcyB6ZXJvJylcbiAgaWYgKDUgKyBsZW5SID49IGJ1ZmZlci5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignUiBsZW5ndGggaXMgdG9vIGxvbmcnKVxuICBpZiAoYnVmZmVyWzQgKyBsZW5SXSAhPT0gMHgwMikgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCBERVIgaW50ZWdlciAoMiknKVxuXG4gIHZhciBsZW5TID0gYnVmZmVyWzUgKyBsZW5SXVxuICBpZiAobGVuUyA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdTIGxlbmd0aCBpcyB6ZXJvJylcbiAgaWYgKCg2ICsgbGVuUiArIGxlblMpICE9PSBidWZmZXIubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ1MgbGVuZ3RoIGlzIGludmFsaWQnKVxuXG4gIGlmIChidWZmZXJbNF0gJiAweDgwKSB0aHJvdyBuZXcgRXJyb3IoJ1IgdmFsdWUgaXMgbmVnYXRpdmUnKVxuICBpZiAobGVuUiA+IDEgJiYgKGJ1ZmZlcls0XSA9PT0gMHgwMCkgJiYgIShidWZmZXJbNV0gJiAweDgwKSkgdGhyb3cgbmV3IEVycm9yKCdSIHZhbHVlIGV4Y2Vzc2l2ZWx5IHBhZGRlZCcpXG5cbiAgaWYgKGJ1ZmZlcltsZW5SICsgNl0gJiAweDgwKSB0aHJvdyBuZXcgRXJyb3IoJ1MgdmFsdWUgaXMgbmVnYXRpdmUnKVxuICBpZiAobGVuUyA+IDEgJiYgKGJ1ZmZlcltsZW5SICsgNl0gPT09IDB4MDApICYmICEoYnVmZmVyW2xlblIgKyA3XSAmIDB4ODApKSB0aHJvdyBuZXcgRXJyb3IoJ1MgdmFsdWUgZXhjZXNzaXZlbHkgcGFkZGVkJylcblxuICAvLyBub24tQklQNjYgLSBleHRyYWN0IFIsIFMgdmFsdWVzXG4gIHJldHVybiB7XG4gICAgcjogYnVmZmVyLnNsaWNlKDQsIDQgKyBsZW5SKSxcbiAgICBzOiBidWZmZXIuc2xpY2UoNiArIGxlblIpXG4gIH1cbn1cblxuLypcbiAqIEV4cGVjdHMgciBhbmQgcyB0byBiZSBwb3NpdGl2ZSBERVIgaW50ZWdlcnMuXG4gKlxuICogVGhlIERFUiBmb3JtYXQgdXNlcyB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgYXMgYSBzaWduIGJpdCAoJiAweDgwKS5cbiAqIElmIHRoZSBzaWduaWZpY2FudCBiaXQgaXMgc2V0IEFORCB0aGUgaW50ZWdlciBpcyBwb3NpdGl2ZSwgYSAweDAwIGlzIHByZXBlbmRlZC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIDAgPT4gICAgIDB4MDBcbiAqICAgICAgMSA9PiAgICAgMHgwMVxuICogICAgIC0xID0+ICAgICAweGZmXG4gKiAgICAxMjcgPT4gICAgIDB4N2ZcbiAqICAgLTEyNyA9PiAgICAgMHg4MVxuICogICAgMTI4ID0+ICAgMHgwMDgwXG4gKiAgIC0xMjggPT4gICAgIDB4ODBcbiAqICAgIDI1NSA9PiAgIDB4MDBmZlxuICogICAtMjU1ID0+ICAgMHhmZjAxXG4gKiAgMTYzMDAgPT4gICAweDNmYWNcbiAqIC0xNjMwMCA9PiAgIDB4YzA1NFxuICogIDYyMzAwID0+IDB4MDBmMzVjXG4gKiAtNjIzMDAgPT4gMHhmZjBjYTRcbiovXG5mdW5jdGlvbiBlbmNvZGUgKHIsIHMpIHtcbiAgdmFyIGxlblIgPSByLmxlbmd0aFxuICB2YXIgbGVuUyA9IHMubGVuZ3RoXG4gIGlmIChsZW5SID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ1IgbGVuZ3RoIGlzIHplcm8nKVxuICBpZiAobGVuUyA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdTIGxlbmd0aCBpcyB6ZXJvJylcbiAgaWYgKGxlblIgPiAzMykgdGhyb3cgbmV3IEVycm9yKCdSIGxlbmd0aCBpcyB0b28gbG9uZycpXG4gIGlmIChsZW5TID4gMzMpIHRocm93IG5ldyBFcnJvcignUyBsZW5ndGggaXMgdG9vIGxvbmcnKVxuICBpZiAoclswXSAmIDB4ODApIHRocm93IG5ldyBFcnJvcignUiB2YWx1ZSBpcyBuZWdhdGl2ZScpXG4gIGlmIChzWzBdICYgMHg4MCkgdGhyb3cgbmV3IEVycm9yKCdTIHZhbHVlIGlzIG5lZ2F0aXZlJylcbiAgaWYgKGxlblIgPiAxICYmIChyWzBdID09PSAweDAwKSAmJiAhKHJbMV0gJiAweDgwKSkgdGhyb3cgbmV3IEVycm9yKCdSIHZhbHVlIGV4Y2Vzc2l2ZWx5IHBhZGRlZCcpXG4gIGlmIChsZW5TID4gMSAmJiAoc1swXSA9PT0gMHgwMCkgJiYgIShzWzFdICYgMHg4MCkpIHRocm93IG5ldyBFcnJvcignUyB2YWx1ZSBleGNlc3NpdmVseSBwYWRkZWQnKVxuXG4gIHZhciBzaWduYXR1cmUgPSBCdWZmZXIuYWxsb2NVbnNhZmUoNiArIGxlblIgKyBsZW5TKVxuXG4gIC8vIDB4MzAgW3RvdGFsLWxlbmd0aF0gMHgwMiBbUi1sZW5ndGhdIFtSXSAweDAyIFtTLWxlbmd0aF0gW1NdXG4gIHNpZ25hdHVyZVswXSA9IDB4MzBcbiAgc2lnbmF0dXJlWzFdID0gc2lnbmF0dXJlLmxlbmd0aCAtIDJcbiAgc2lnbmF0dXJlWzJdID0gMHgwMlxuICBzaWduYXR1cmVbM10gPSByLmxlbmd0aFxuICByLmNvcHkoc2lnbmF0dXJlLCA0KVxuICBzaWduYXR1cmVbNCArIGxlblJdID0gMHgwMlxuICBzaWduYXR1cmVbNSArIGxlblJdID0gcy5sZW5ndGhcbiAgcy5jb3B5KHNpZ25hdHVyZSwgNiArIGxlblIpXG5cbiAgcmV0dXJuIHNpZ25hdHVyZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY2hlY2s6IGNoZWNrLFxuICBkZWNvZGU6IGRlY29kZSxcbiAgZW5jb2RlOiBlbmNvZGVcbn1cbiIsInZhciBPUFMgPSByZXF1aXJlKCdiaXRjb2luLW9wcycpXG5cbmZ1bmN0aW9uIGVuY29kaW5nTGVuZ3RoIChpKSB7XG4gIHJldHVybiBpIDwgT1BTLk9QX1BVU0hEQVRBMSA/IDFcbiAgOiBpIDw9IDB4ZmYgPyAyXG4gIDogaSA8PSAweGZmZmYgPyAzXG4gIDogNVxufVxuXG5mdW5jdGlvbiBlbmNvZGUgKGJ1ZmZlciwgbnVtYmVyLCBvZmZzZXQpIHtcbiAgdmFyIHNpemUgPSBlbmNvZGluZ0xlbmd0aChudW1iZXIpXG5cbiAgLy8gfjYgYml0XG4gIGlmIChzaXplID09PSAxKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgobnVtYmVyLCBvZmZzZXQpXG5cbiAgLy8gOCBiaXRcbiAgfSBlbHNlIGlmIChzaXplID09PSAyKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgoT1BTLk9QX1BVU0hEQVRBMSwgb2Zmc2V0KVxuICAgIGJ1ZmZlci53cml0ZVVJbnQ4KG51bWJlciwgb2Zmc2V0ICsgMSlcblxuICAvLyAxNiBiaXRcbiAgfSBlbHNlIGlmIChzaXplID09PSAzKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgoT1BTLk9QX1BVU0hEQVRBMiwgb2Zmc2V0KVxuICAgIGJ1ZmZlci53cml0ZVVJbnQxNkxFKG51bWJlciwgb2Zmc2V0ICsgMSlcblxuICAvLyAzMiBiaXRcbiAgfSBlbHNlIHtcbiAgICBidWZmZXIud3JpdGVVSW50OChPUFMuT1BfUFVTSERBVEE0LCBvZmZzZXQpXG4gICAgYnVmZmVyLndyaXRlVUludDMyTEUobnVtYmVyLCBvZmZzZXQgKyAxKVxuICB9XG5cbiAgcmV0dXJuIHNpemVcbn1cblxuZnVuY3Rpb24gZGVjb2RlIChidWZmZXIsIG9mZnNldCkge1xuICB2YXIgb3Bjb2RlID0gYnVmZmVyLnJlYWRVSW50OChvZmZzZXQpXG4gIHZhciBudW1iZXIsIHNpemVcblxuICAvLyB+NiBiaXRcbiAgaWYgKG9wY29kZSA8IE9QUy5PUF9QVVNIREFUQTEpIHtcbiAgICBudW1iZXIgPSBvcGNvZGVcbiAgICBzaXplID0gMVxuXG4gIC8vIDggYml0XG4gIH0gZWxzZSBpZiAob3Bjb2RlID09PSBPUFMuT1BfUFVTSERBVEExKSB7XG4gICAgaWYgKG9mZnNldCArIDIgPiBidWZmZXIubGVuZ3RoKSByZXR1cm4gbnVsbFxuICAgIG51bWJlciA9IGJ1ZmZlci5yZWFkVUludDgob2Zmc2V0ICsgMSlcbiAgICBzaXplID0gMlxuXG4gIC8vIDE2IGJpdFxuICB9IGVsc2UgaWYgKG9wY29kZSA9PT0gT1BTLk9QX1BVU0hEQVRBMikge1xuICAgIGlmIChvZmZzZXQgKyAzID4gYnVmZmVyLmxlbmd0aCkgcmV0dXJuIG51bGxcbiAgICBudW1iZXIgPSBidWZmZXIucmVhZFVJbnQxNkxFKG9mZnNldCArIDEpXG4gICAgc2l6ZSA9IDNcblxuICAvLyAzMiBiaXRcbiAgfSBlbHNlIHtcbiAgICBpZiAob2Zmc2V0ICsgNSA+IGJ1ZmZlci5sZW5ndGgpIHJldHVybiBudWxsXG4gICAgaWYgKG9wY29kZSAhPT0gT1BTLk9QX1BVU0hEQVRBNCkgdGhyb3cgbmV3IEVycm9yKCdVbmV4cGVjdGVkIG9wY29kZScpXG5cbiAgICBudW1iZXIgPSBidWZmZXIucmVhZFVJbnQzMkxFKG9mZnNldCArIDEpXG4gICAgc2l6ZSA9IDVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb3Bjb2RlOiBvcGNvZGUsXG4gICAgbnVtYmVyOiBudW1iZXIsXG4gICAgc2l6ZTogc2l6ZVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBlbmNvZGluZ0xlbmd0aDogZW5jb2RpbmdMZW5ndGgsXG4gIGVuY29kZTogZW5jb2RlLFxuICBkZWNvZGU6IGRlY29kZVxufVxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIG5hdGl2ZSA9IHJlcXVpcmUoJy4vbmF0aXZlJylcblxuZnVuY3Rpb24gVGZUeXBlRXJyb3IgKHR5cGUsIHZhbHVlLCB2YWx1ZVR5cGVOYW1lKSB7XG4gIHRoaXMuX19lcnJvciA9IEVycm9yLmNhbGwodGhpcylcbiAgdGhpcy5fX3R5cGUgPSB0eXBlXG4gIHRoaXMuX192YWx1ZSA9IHZhbHVlXG4gIHRoaXMuX192YWx1ZVR5cGVOYW1lID0gdmFsdWVUeXBlTmFtZVxuXG4gIHZhciBtZXNzYWdlXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbWVzc2FnZScsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG1lc3NhZ2UpIHJldHVybiBtZXNzYWdlXG5cbiAgICAgIHZhbHVlVHlwZU5hbWUgPSB2YWx1ZVR5cGVOYW1lIHx8IGdldFZhbHVlVHlwZU5hbWUodmFsdWUpXG4gICAgICBtZXNzYWdlID0gdGZFcnJvclN0cmluZyh0eXBlLCB2YWx1ZSwgdmFsdWVUeXBlTmFtZSlcblxuICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIFRmUHJvcGVydHlUeXBlRXJyb3IgKHR5cGUsIHByb3BlcnR5LCBsYWJlbCwgdmFsdWUsIGVycm9yLCB2YWx1ZVR5cGVOYW1lKSB7XG4gIHRoaXMuX19lcnJvciA9IGVycm9yIHx8IEVycm9yLmNhbGwodGhpcylcbiAgdGhpcy5fX2xhYmVsID0gbGFiZWxcbiAgdGhpcy5fX3Byb3BlcnR5ID0gcHJvcGVydHlcbiAgdGhpcy5fX3R5cGUgPSB0eXBlXG4gIHRoaXMuX192YWx1ZSA9IHZhbHVlXG4gIHRoaXMuX192YWx1ZVR5cGVOYW1lID0gdmFsdWVUeXBlTmFtZVxuXG4gIHZhciBtZXNzYWdlXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbWVzc2FnZScsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKG1lc3NhZ2UpIHJldHVybiBtZXNzYWdlXG4gICAgICBpZiAodHlwZSkge1xuICAgICAgICB2YWx1ZVR5cGVOYW1lID0gdmFsdWVUeXBlTmFtZSB8fCBnZXRWYWx1ZVR5cGVOYW1lKHZhbHVlKVxuICAgICAgICBtZXNzYWdlID0gdGZQcm9wZXJ0eUVycm9yU3RyaW5nKHR5cGUsIGxhYmVsLCBwcm9wZXJ0eSwgdmFsdWUsIHZhbHVlVHlwZU5hbWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlID0gJ1VuZXhwZWN0ZWQgcHJvcGVydHkgXCInICsgcHJvcGVydHkgKyAnXCInXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXNzYWdlXG4gICAgfVxuICB9KVxuXG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnc3RhY2snLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fX2Vycm9yLnN0YWNrXG4gICAgfVxuICB9KVxufVxuXG4vLyBpbmhlcml0IGZyb20gRXJyb3JcbltUZlR5cGVFcnJvciwgVGZQcm9wZXJ0eVR5cGVFcnJvcl0uZm9yRWFjaChmdW5jdGlvbiAodGZFcnJvclR5cGUpIHtcbiAgaW5oZXJpdHModGZFcnJvclR5cGUsIEVycm9yKVxufSlcblxuZnVuY3Rpb24gdGZDdXN0b21FcnJvciAoZXhwZWN0ZWQsIGFjdHVhbCkge1xuICByZXR1cm4gbmV3IFRmVHlwZUVycm9yKGV4cGVjdGVkLCB7fSwgYWN0dWFsKVxufVxuXG5mdW5jdGlvbiB0ZlN1YkVycm9yIChlLCBwcm9wZXJ0eSwgbGFiZWwpIHtcbiAgLy8gc3ViIGNoaWxkP1xuICBpZiAoZSBpbnN0YW5jZW9mIFRmUHJvcGVydHlUeXBlRXJyb3IpIHtcbiAgICBwcm9wZXJ0eSA9IHByb3BlcnR5ICsgJy4nICsgZS5fX3Byb3BlcnR5XG4gICAgbGFiZWwgPSBlLl9fbGFiZWxcblxuICAgIHJldHVybiBuZXcgVGZQcm9wZXJ0eVR5cGVFcnJvcihcbiAgICAgIGUuX190eXBlLCBwcm9wZXJ0eSwgbGFiZWwsIGUuX192YWx1ZSwgZS5fX2Vycm9yLCBlLl9fdmFsdWVUeXBlTmFtZVxuICAgIClcbiAgfVxuXG4gIC8vIGNoaWxkP1xuICBpZiAoZSBpbnN0YW5jZW9mIFRmVHlwZUVycm9yKSB7XG4gICAgcmV0dXJuIG5ldyBUZlByb3BlcnR5VHlwZUVycm9yKFxuICAgICAgZS5fX3R5cGUsIHByb3BlcnR5LCBsYWJlbCwgZS5fX3ZhbHVlLCBlLl9fZXJyb3IsIGUuX192YWx1ZVR5cGVOYW1lXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGVcbn1cblxuZnVuY3Rpb24gZ2V0VHlwZU5hbWUgKGZuKSB7XG4gIHJldHVybiBmbi5uYW1lIHx8IGZuLnRvU3RyaW5nKCkubWF0Y2goL2Z1bmN0aW9uICguKj8pXFxzKlxcKC8pWzFdXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlVHlwZU5hbWUgKHZhbHVlKSB7XG4gIHJldHVybiBuYXRpdmUuTmlsKHZhbHVlKSA/ICcnIDogZ2V0VHlwZU5hbWUodmFsdWUuY29uc3RydWN0b3IpXG59XG5cbmZ1bmN0aW9uIGdldFZhbHVlICh2YWx1ZSkge1xuICBpZiAobmF0aXZlLkZ1bmN0aW9uKHZhbHVlKSkgcmV0dXJuICcnXG4gIGlmIChuYXRpdmUuU3RyaW5nKHZhbHVlKSkgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKVxuICBpZiAodmFsdWUgJiYgbmF0aXZlLk9iamVjdCh2YWx1ZSkpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWVcbn1cblxuZnVuY3Rpb24gdGZKU09OICh0eXBlKSB7XG4gIGlmIChuYXRpdmUuRnVuY3Rpb24odHlwZSkpIHJldHVybiB0eXBlLnRvSlNPTiA/IHR5cGUudG9KU09OKCkgOiBnZXRUeXBlTmFtZSh0eXBlKVxuICBpZiAobmF0aXZlLkFycmF5KHR5cGUpKSByZXR1cm4gJ0FycmF5J1xuICBpZiAodHlwZSAmJiBuYXRpdmUuT2JqZWN0KHR5cGUpKSByZXR1cm4gJ09iamVjdCdcblxuICByZXR1cm4gdHlwZSAhPT0gdW5kZWZpbmVkID8gdHlwZSA6ICcnXG59XG5cbmZ1bmN0aW9uIHRmRXJyb3JTdHJpbmcgKHR5cGUsIHZhbHVlLCB2YWx1ZVR5cGVOYW1lKSB7XG4gIHZhciB2YWx1ZUpzb24gPSBnZXRWYWx1ZSh2YWx1ZSlcblxuICByZXR1cm4gJ0V4cGVjdGVkICcgKyB0ZkpTT04odHlwZSkgKyAnLCBnb3QnICtcbiAgICAodmFsdWVUeXBlTmFtZSAhPT0gJycgPyAnICcgKyB2YWx1ZVR5cGVOYW1lIDogJycpICtcbiAgICAodmFsdWVKc29uICE9PSAnJyA/ICcgJyArIHZhbHVlSnNvbiA6ICcnKVxufVxuXG5mdW5jdGlvbiB0ZlByb3BlcnR5RXJyb3JTdHJpbmcgKHR5cGUsIGxhYmVsLCBuYW1lLCB2YWx1ZSwgdmFsdWVUeXBlTmFtZSkge1xuICB2YXIgZGVzY3JpcHRpb24gPSAnXCIgb2YgdHlwZSAnXG4gIGlmIChsYWJlbCA9PT0gJ2tleScpIGRlc2NyaXB0aW9uID0gJ1wiIHdpdGgga2V5IHR5cGUgJ1xuXG4gIHJldHVybiB0ZkVycm9yU3RyaW5nKCdwcm9wZXJ0eSBcIicgKyB0ZkpTT04obmFtZSkgKyBkZXNjcmlwdGlvbiArIHRmSlNPTih0eXBlKSwgdmFsdWUsIHZhbHVlVHlwZU5hbWUpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBUZlR5cGVFcnJvcjogVGZUeXBlRXJyb3IsXG4gIFRmUHJvcGVydHlUeXBlRXJyb3I6IFRmUHJvcGVydHlUeXBlRXJyb3IsXG4gIHRmQ3VzdG9tRXJyb3I6IHRmQ3VzdG9tRXJyb3IsXG4gIHRmU3ViRXJyb3I6IHRmU3ViRXJyb3IsXG4gIHRmSlNPTjogdGZKU09OLFxuICBnZXRWYWx1ZVR5cGVOYW1lOiBnZXRWYWx1ZVR5cGVOYW1lXG59XG4iLCJ2YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxuZnVuY3Rpb24gZGVjb2RlIChidWZmZXIsIG1heExlbmd0aCwgbWluaW1hbCkge1xuICBtYXhMZW5ndGggPSBtYXhMZW5ndGggfHwgNFxuICBtaW5pbWFsID0gbWluaW1hbCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IG1pbmltYWxcblxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gMFxuICBpZiAobGVuZ3RoID4gbWF4TGVuZ3RoKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdTY3JpcHQgbnVtYmVyIG92ZXJmbG93JylcbiAgaWYgKG1pbmltYWwpIHtcbiAgICBpZiAoKGJ1ZmZlcltsZW5ndGggLSAxXSAmIDB4N2YpID09PSAwKSB7XG4gICAgICBpZiAobGVuZ3RoIDw9IDEgfHwgKGJ1ZmZlcltsZW5ndGggLSAyXSAmIDB4ODApID09PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ05vbi1taW5pbWFsbHkgZW5jb2RlZCBzY3JpcHQgbnVtYmVyJylcbiAgICB9XG4gIH1cblxuICAvLyA0MC1iaXRcbiAgaWYgKGxlbmd0aCA9PT0gNSkge1xuICAgIHZhciBhID0gYnVmZmVyLnJlYWRVSW50MzJMRSgwKVxuICAgIHZhciBiID0gYnVmZmVyLnJlYWRVSW50OCg0KVxuXG4gICAgaWYgKGIgJiAweDgwKSByZXR1cm4gLSgoKGIgJiB+MHg4MCkgKiAweDEwMDAwMDAwMCkgKyBhKVxuICAgIHJldHVybiAoYiAqIDB4MTAwMDAwMDAwKSArIGFcbiAgfVxuXG4gIHZhciByZXN1bHQgPSAwXG5cbiAgLy8gMzItYml0IC8gMjQtYml0IC8gMTYtYml0IC8gOC1iaXRcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuICAgIHJlc3VsdCB8PSBidWZmZXJbaV0gPDwgKDggKiBpKVxuICB9XG5cbiAgaWYgKGJ1ZmZlcltsZW5ndGggLSAxXSAmIDB4ODApIHJldHVybiAtKHJlc3VsdCAmIH4oMHg4MCA8PCAoOCAqIChsZW5ndGggLSAxKSkpKVxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHNjcmlwdE51bVNpemUgKGkpIHtcbiAgcmV0dXJuIGkgPiAweDdmZmZmZmZmID8gNVxuICA6IGkgPiAweDdmZmZmZiA/IDRcbiAgOiBpID4gMHg3ZmZmID8gM1xuICA6IGkgPiAweDdmID8gMlxuICA6IGkgPiAweDAwID8gMVxuICA6IDBcbn1cblxuZnVuY3Rpb24gZW5jb2RlIChudW1iZXIpIHtcbiAgdmFyIHZhbHVlID0gTWF0aC5hYnMobnVtYmVyKVxuICB2YXIgc2l6ZSA9IHNjcmlwdE51bVNpemUodmFsdWUpXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2l6ZSlcbiAgdmFyIG5lZ2F0aXZlID0gbnVtYmVyIDwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7XG4gICAgYnVmZmVyLndyaXRlVUludDgodmFsdWUgJiAweGZmLCBpKVxuICAgIHZhbHVlID4+PSA4XG4gIH1cblxuICBpZiAoYnVmZmVyW3NpemUgLSAxXSAmIDB4ODApIHtcbiAgICBidWZmZXIud3JpdGVVSW50OChuZWdhdGl2ZSA/IDB4ODAgOiAweDAwLCBzaXplIC0gMSlcbiAgfSBlbHNlIGlmIChuZWdhdGl2ZSkge1xuICAgIGJ1ZmZlcltzaXplIC0gMV0gfD0gMHg4MFxuICB9XG5cbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGVuY29kZTogZW5jb2RlXG59XG4iLCIvLyBtIFtwdWJLZXlzIC4uLl0gbiBPUF9DSEVDS01VTFRJU0lHXG5cbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4uLy4uL3R5cGVzJylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIE9QUyA9IHJlcXVpcmUoJ2JpdGNvaW4tb3BzJylcbnZhciBPUF9JTlRfQkFTRSA9IE9QUy5PUF9SRVNFUlZFRCAvLyBPUF8xIC0gMVxuXG5mdW5jdGlvbiBjaGVjayAoc2NyaXB0LCBhbGxvd0luY29tcGxldGUpIHtcbiAgdmFyIGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdClcblxuICBpZiAoY2h1bmtzLmxlbmd0aCA8IDQpIHJldHVybiBmYWxzZVxuICBpZiAoY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXSAhPT0gT1BTLk9QX0NIRUNLTVVMVElTSUcpIHJldHVybiBmYWxzZVxuICBpZiAoIXR5cGVzLk51bWJlcihjaHVua3NbMF0pKSByZXR1cm4gZmFsc2VcbiAgaWYgKCF0eXBlcy5OdW1iZXIoY2h1bmtzW2NodW5rcy5sZW5ndGggLSAyXSkpIHJldHVybiBmYWxzZVxuICB2YXIgbSA9IGNodW5rc1swXSAtIE9QX0lOVF9CQVNFXG4gIHZhciBuID0gY2h1bmtzW2NodW5rcy5sZW5ndGggLSAyXSAtIE9QX0lOVF9CQVNFXG5cbiAgaWYgKG0gPD0gMCkgcmV0dXJuIGZhbHNlXG4gIGlmIChuID4gMTYpIHJldHVybiBmYWxzZVxuICBpZiAobSA+IG4pIHJldHVybiBmYWxzZVxuICBpZiAobiAhPT0gY2h1bmtzLmxlbmd0aCAtIDMpIHJldHVybiBmYWxzZVxuICBpZiAoYWxsb3dJbmNvbXBsZXRlKSByZXR1cm4gdHJ1ZVxuXG4gIHZhciBrZXlzID0gY2h1bmtzLnNsaWNlKDEsIC0yKVxuICByZXR1cm4ga2V5cy5ldmVyeShic2NyaXB0LmlzQ2Fub25pY2FsUHViS2V5KVxufVxuY2hlY2sudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ211bHRpLXNpZyBvdXRwdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlIChtLCBwdWJLZXlzKSB7XG4gIHR5cGVmb3JjZSh7XG4gICAgbTogdHlwZXMuTnVtYmVyLFxuICAgIHB1YktleXM6IFtic2NyaXB0LmlzQ2Fub25pY2FsUHViS2V5XVxuICB9LCB7XG4gICAgbTogbSxcbiAgICBwdWJLZXlzOiBwdWJLZXlzXG4gIH0pXG5cbiAgdmFyIG4gPSBwdWJLZXlzLmxlbmd0aFxuICBpZiAobiA8IG0pIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vdCBlbm91Z2ggcHViS2V5cyBwcm92aWRlZCcpXG5cbiAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbXS5jb25jYXQoXG4gICAgT1BfSU5UX0JBU0UgKyBtLFxuICAgIHB1YktleXMsXG4gICAgT1BfSU5UX0JBU0UgKyBuLFxuICAgIE9QUy5PUF9DSEVDS01VTFRJU0lHXG4gICkpXG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyLCBhbGxvd0luY29tcGxldGUpIHtcbiAgdmFyIGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKGJ1ZmZlcilcbiAgdHlwZWZvcmNlKGNoZWNrLCBjaHVua3MsIGFsbG93SW5jb21wbGV0ZSlcblxuICByZXR1cm4ge1xuICAgIG06IGNodW5rc1swXSAtIE9QX0lOVF9CQVNFLFxuICAgIHB1YktleXM6IGNodW5rcy5zbGljZSgxLCAtMilcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY2hlY2s6IGNoZWNrLFxuICBkZWNvZGU6IGRlY29kZSxcbiAgZW5jb2RlOiBlbmNvZGVcbn1cbiIsIi8vIE9QXzAge3B1YktleUhhc2h9XG5cbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4uLy4uL3R5cGVzJylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIE9QUyA9IHJlcXVpcmUoJ2JpdGNvaW4tb3BzJylcblxuZnVuY3Rpb24gY2hlY2sgKHNjcmlwdCkge1xuICB2YXIgYnVmZmVyID0gYnNjcmlwdC5jb21waWxlKHNjcmlwdClcblxuICByZXR1cm4gYnVmZmVyLmxlbmd0aCA9PT0gMjIgJiZcbiAgICBidWZmZXJbMF0gPT09IE9QUy5PUF8wICYmXG4gICAgYnVmZmVyWzFdID09PSAweDE0XG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnV2l0bmVzcyBwdWJLZXlIYXNoIG91dHB1dCcgfVxuXG5mdW5jdGlvbiBlbmNvZGUgKHB1YktleUhhc2gpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLkhhc2gxNjBiaXQsIHB1YktleUhhc2gpXG5cbiAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbT1BTLk9QXzAsIHB1YktleUhhc2hdKVxufVxuXG5mdW5jdGlvbiBkZWNvZGUgKGJ1ZmZlcikge1xuICB0eXBlZm9yY2UoY2hlY2ssIGJ1ZmZlcilcblxuICByZXR1cm4gYnVmZmVyLnNsaWNlKDIpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjaGVjazogY2hlY2ssXG4gIGRlY29kZTogZGVjb2RlLFxuICBlbmNvZGU6IGVuY29kZVxufVxuIiwiLy8gT1BfMCB7c2NyaXB0SGFzaH1cblxudmFyIGJzY3JpcHQgPSByZXF1aXJlKCcuLi8uLi9zY3JpcHQnKVxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi4vLi4vdHlwZXMnKVxudmFyIHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpXG52YXIgT1BTID0gcmVxdWlyZSgnYml0Y29pbi1vcHMnKVxuXG5mdW5jdGlvbiBjaGVjayAoc2NyaXB0KSB7XG4gIHZhciBidWZmZXIgPSBic2NyaXB0LmNvbXBpbGUoc2NyaXB0KVxuXG4gIHJldHVybiBidWZmZXIubGVuZ3RoID09PSAzNCAmJlxuICAgIGJ1ZmZlclswXSA9PT0gT1BTLk9QXzAgJiZcbiAgICBidWZmZXJbMV0gPT09IDB4MjBcbn1cbmNoZWNrLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdXaXRuZXNzIHNjcmlwdEhhc2ggb3V0cHV0JyB9XG5cbmZ1bmN0aW9uIGVuY29kZSAoc2NyaXB0SGFzaCkge1xuICB0eXBlZm9yY2UodHlwZXMuSGFzaDI1NmJpdCwgc2NyaXB0SGFzaClcblxuICByZXR1cm4gYnNjcmlwdC5jb21waWxlKFtPUFMuT1BfMCwgc2NyaXB0SGFzaF0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyKSB7XG4gIHR5cGVmb3JjZShjaGVjaywgYnVmZmVyKVxuXG4gIHJldHVybiBidWZmZXIuc2xpY2UoMilcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNoZWNrOiBjaGVjayxcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGVuY29kZTogZW5jb2RlXG59XG4iLCJ2YXIgcHVzaGRhdGEgPSByZXF1aXJlKCdwdXNoZGF0YS1iaXRjb2luJylcbnZhciB2YXJ1aW50ID0gcmVxdWlyZSgndmFydWludC1iaXRjb2luJylcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvYmxvYi9tYXN0ZXIvaW5kZXguanMjTDExMjdcbmZ1bmN0aW9uIHZlcmlmdWludCAodmFsdWUsIG1heCkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJykgdGhyb3cgbmV3IEVycm9yKCdjYW5ub3Qgd3JpdGUgYSBub24tbnVtYmVyIGFzIGEgbnVtYmVyJylcbiAgaWYgKHZhbHVlIDwgMCkgdGhyb3cgbmV3IEVycm9yKCdzcGVjaWZpZWQgYSBuZWdhdGl2ZSB2YWx1ZSBmb3Igd3JpdGluZyBhbiB1bnNpZ25lZCB2YWx1ZScpXG4gIGlmICh2YWx1ZSA+IG1heCkgdGhyb3cgbmV3IEVycm9yKCdSYW5nZUVycm9yOiB2YWx1ZSBvdXQgb2YgcmFuZ2UnKVxuICBpZiAoTWF0aC5mbG9vcih2YWx1ZSkgIT09IHZhbHVlKSB0aHJvdyBuZXcgRXJyb3IoJ3ZhbHVlIGhhcyBhIGZyYWN0aW9uYWwgY29tcG9uZW50Jylcbn1cblxuZnVuY3Rpb24gcmVhZFVJbnQ2NExFIChidWZmZXIsIG9mZnNldCkge1xuICB2YXIgYSA9IGJ1ZmZlci5yZWFkVUludDMyTEUob2Zmc2V0KVxuICB2YXIgYiA9IGJ1ZmZlci5yZWFkVUludDMyTEUob2Zmc2V0ICsgNClcbiAgYiAqPSAweDEwMDAwMDAwMFxuXG4gIHZlcmlmdWludChiICsgYSwgMHgwMDFmZmZmZmZmZmZmZmZmKVxuXG4gIHJldHVybiBiICsgYVxufVxuXG5mdW5jdGlvbiB3cml0ZVVJbnQ2NExFIChidWZmZXIsIHZhbHVlLCBvZmZzZXQpIHtcbiAgdmVyaWZ1aW50KHZhbHVlLCAweDAwMWZmZmZmZmZmZmZmZmYpXG5cbiAgYnVmZmVyLndyaXRlSW50MzJMRSh2YWx1ZSAmIC0xLCBvZmZzZXQpXG4gIGJ1ZmZlci53cml0ZVVJbnQzMkxFKE1hdGguZmxvb3IodmFsdWUgLyAweDEwMDAwMDAwMCksIG9mZnNldCArIDQpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbi8vIFRPRE86IHJlbW92ZSBpbiA0LjAuMD9cbmZ1bmN0aW9uIHJlYWRWYXJJbnQgKGJ1ZmZlciwgb2Zmc2V0KSB7XG4gIHZhciByZXN1bHQgPSB2YXJ1aW50LmRlY29kZShidWZmZXIsIG9mZnNldClcblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcmVzdWx0LFxuICAgIHNpemU6IHZhcnVpbnQuZGVjb2RlLmJ5dGVzXG4gIH1cbn1cblxuLy8gVE9ETzogcmVtb3ZlIGluIDQuMC4wP1xuZnVuY3Rpb24gd3JpdGVWYXJJbnQgKGJ1ZmZlciwgbnVtYmVyLCBvZmZzZXQpIHtcbiAgdmFydWludC5lbmNvZGUobnVtYmVyLCBidWZmZXIsIG9mZnNldClcbiAgcmV0dXJuIHZhcnVpbnQuZW5jb2RlLmJ5dGVzXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwdXNoRGF0YVNpemU6IHB1c2hkYXRhLmVuY29kaW5nTGVuZ3RoLFxuICByZWFkUHVzaERhdGFJbnQ6IHB1c2hkYXRhLmRlY29kZSxcbiAgcmVhZFVJbnQ2NExFOiByZWFkVUludDY0TEUsXG4gIHJlYWRWYXJJbnQ6IHJlYWRWYXJJbnQsXG4gIHZhckludEJ1ZmZlcjogdmFydWludC5lbmNvZGUsXG4gIHZhckludFNpemU6IHZhcnVpbnQuZW5jb2RpbmdMZW5ndGgsXG4gIHdyaXRlUHVzaERhdGFJbnQ6IHB1c2hkYXRhLmVuY29kZSxcbiAgd3JpdGVVSW50NjRMRTogd3JpdGVVSW50NjRMRSxcbiAgd3JpdGVWYXJJbnQ6IHdyaXRlVmFySW50XG59XG4iLCIndXNlIHN0cmljdCdcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxudmFyIFJJUEVNRDE2MCA9IHJlcXVpcmUoJ3JpcGVtZDE2MCcpXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxuXG5mdW5jdGlvbiBIYXNoIChoYXNoKSB7XG4gIEJhc2UuY2FsbCh0aGlzLCAnZGlnZXN0JylcblxuICB0aGlzLl9oYXNoID0gaGFzaFxufVxuXG5pbmhlcml0cyhIYXNoLCBCYXNlKVxuXG5IYXNoLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5faGFzaC51cGRhdGUoZGF0YSlcbn1cblxuSGFzaC5wcm90b3R5cGUuX2ZpbmFsID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5faGFzaC5kaWdlc3QoKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUhhc2ggKGFsZykge1xuICBhbGcgPSBhbGcudG9Mb3dlckNhc2UoKVxuICBpZiAoYWxnID09PSAnbWQ1JykgcmV0dXJuIG5ldyBNRDUoKVxuICBpZiAoYWxnID09PSAncm1kMTYwJyB8fCBhbGcgPT09ICdyaXBlbWQxNjAnKSByZXR1cm4gbmV3IFJJUEVNRDE2MCgpXG5cbiAgcmV0dXJuIG5ldyBIYXNoKHNoYShhbGcpKVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaEJhc2UgPSByZXF1aXJlKCdoYXNoLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG5mdW5jdGlvbiBNRDUgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG59XG5cbmluaGVyaXRzKE1ENSwgSGFzaEJhc2UpXG5cbk1ENS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIE0gPSBBUlJBWTE2XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgTVtpXSA9IHRoaXMuX2Jsb2NrLnJlYWRJbnQzMkxFKGkgKiA0KVxuXG4gIHZhciBhID0gdGhpcy5fYVxuICB2YXIgYiA9IHRoaXMuX2JcbiAgdmFyIGMgPSB0aGlzLl9jXG4gIHZhciBkID0gdGhpcy5fZFxuXG4gIGEgPSBmbkYoYSwgYiwgYywgZCwgTVswXSwgMHhkNzZhYTQ3OCwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzFdLCAweGU4YzdiNzU2LCAxMilcbiAgYyA9IGZuRihjLCBkLCBhLCBiLCBNWzJdLCAweDI0MjA3MGRiLCAxNylcbiAgYiA9IGZuRihiLCBjLCBkLCBhLCBNWzNdLCAweGMxYmRjZWVlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzRdLCAweGY1N2MwZmFmLCA3KVxuICBkID0gZm5GKGQsIGEsIGIsIGMsIE1bNV0sIDB4NDc4N2M2MmEsIDEyKVxuICBjID0gZm5GKGMsIGQsIGEsIGIsIE1bNl0sIDB4YTgzMDQ2MTMsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bN10sIDB4ZmQ0Njk1MDEsIDIyKVxuICBhID0gZm5GKGEsIGIsIGMsIGQsIE1bOF0sIDB4Njk4MDk4ZDgsIDcpXG4gIGQgPSBmbkYoZCwgYSwgYiwgYywgTVs5XSwgMHg4YjQ0ZjdhZiwgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxMF0sIDB4ZmZmZjViYjEsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTFdLCAweDg5NWNkN2JlLCAyMilcbiAgYSA9IGZuRihhLCBiLCBjLCBkLCBNWzEyXSwgMHg2YjkwMTEyMiwgNylcbiAgZCA9IGZuRihkLCBhLCBiLCBjLCBNWzEzXSwgMHhmZDk4NzE5MywgMTIpXG4gIGMgPSBmbkYoYywgZCwgYSwgYiwgTVsxNF0sIDB4YTY3OTQzOGUsIDE3KVxuICBiID0gZm5GKGIsIGMsIGQsIGEsIE1bMTVdLCAweDQ5YjQwODIxLCAyMilcblxuICBhID0gZm5HKGEsIGIsIGMsIGQsIE1bMV0sIDB4ZjYxZTI1NjIsIDUpXG4gIGQgPSBmbkcoZCwgYSwgYiwgYywgTVs2XSwgMHhjMDQwYjM0MCwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzExXSwgMHgyNjVlNWE1MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVswXSwgMHhlOWI2YzdhYSwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs1XSwgMHhkNjJmMTA1ZCwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzEwXSwgMHgwMjQ0MTQ1MywgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzE1XSwgMHhkOGExZTY4MSwgMTQpXG4gIGIgPSBmbkcoYiwgYywgZCwgYSwgTVs0XSwgMHhlN2QzZmJjOCwgMjApXG4gIGEgPSBmbkcoYSwgYiwgYywgZCwgTVs5XSwgMHgyMWUxY2RlNiwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzE0XSwgMHhjMzM3MDdkNiwgOSlcbiAgYyA9IGZuRyhjLCBkLCBhLCBiLCBNWzNdLCAweGY0ZDUwZDg3LCAxNClcbiAgYiA9IGZuRyhiLCBjLCBkLCBhLCBNWzhdLCAweDQ1NWExNGVkLCAyMClcbiAgYSA9IGZuRyhhLCBiLCBjLCBkLCBNWzEzXSwgMHhhOWUzZTkwNSwgNSlcbiAgZCA9IGZuRyhkLCBhLCBiLCBjLCBNWzJdLCAweGZjZWZhM2Y4LCA5KVxuICBjID0gZm5HKGMsIGQsIGEsIGIsIE1bN10sIDB4Njc2ZjAyZDksIDE0KVxuICBiID0gZm5HKGIsIGMsIGQsIGEsIE1bMTJdLCAweDhkMmE0YzhhLCAyMClcblxuICBhID0gZm5IKGEsIGIsIGMsIGQsIE1bNV0sIDB4ZmZmYTM5NDIsIDQpXG4gIGQgPSBmbkgoZCwgYSwgYiwgYywgTVs4XSwgMHg4NzcxZjY4MSwgMTEpXG4gIGMgPSBmbkgoYywgZCwgYSwgYiwgTVsxMV0sIDB4NmQ5ZDYxMjIsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTRdLCAweGZkZTUzODBjLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzFdLCAweGE0YmVlYTQ0LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bNF0sIDB4NGJkZWNmYTksIDExKVxuICBjID0gZm5IKGMsIGQsIGEsIGIsIE1bN10sIDB4ZjZiYjRiNjAsIDE2KVxuICBiID0gZm5IKGIsIGMsIGQsIGEsIE1bMTBdLCAweGJlYmZiYzcwLCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzEzXSwgMHgyODliN2VjNiwgNClcbiAgZCA9IGZuSChkLCBhLCBiLCBjLCBNWzBdLCAweGVhYTEyN2ZhLCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzNdLCAweGQ0ZWYzMDg1LCAxNilcbiAgYiA9IGZuSChiLCBjLCBkLCBhLCBNWzZdLCAweDA0ODgxZDA1LCAyMylcbiAgYSA9IGZuSChhLCBiLCBjLCBkLCBNWzldLCAweGQ5ZDRkMDM5LCA0KVxuICBkID0gZm5IKGQsIGEsIGIsIGMsIE1bMTJdLCAweGU2ZGI5OWU1LCAxMSlcbiAgYyA9IGZuSChjLCBkLCBhLCBiLCBNWzE1XSwgMHgxZmEyN2NmOCwgMTYpXG4gIGIgPSBmbkgoYiwgYywgZCwgYSwgTVsyXSwgMHhjNGFjNTY2NSwgMjMpXG5cbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzBdLCAweGY0MjkyMjQ0LCA2KVxuICBkID0gZm5JKGQsIGEsIGIsIGMsIE1bN10sIDB4NDMyYWZmOTcsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMTRdLCAweGFiOTQyM2E3LCAxNSlcbiAgYiA9IGZuSShiLCBjLCBkLCBhLCBNWzVdLCAweGZjOTNhMDM5LCAyMSlcbiAgYSA9IGZuSShhLCBiLCBjLCBkLCBNWzEyXSwgMHg2NTViNTljMywgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzNdLCAweDhmMGNjYzkyLCAxMClcbiAgYyA9IGZuSShjLCBkLCBhLCBiLCBNWzEwXSwgMHhmZmVmZjQ3ZCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxXSwgMHg4NTg0NWRkMSwgMjEpXG4gIGEgPSBmbkkoYSwgYiwgYywgZCwgTVs4XSwgMHg2ZmE4N2U0ZiwgNilcbiAgZCA9IGZuSShkLCBhLCBiLCBjLCBNWzE1XSwgMHhmZTJjZTZlMCwgMTApXG4gIGMgPSBmbkkoYywgZCwgYSwgYiwgTVs2XSwgMHhhMzAxNDMxNCwgMTUpXG4gIGIgPSBmbkkoYiwgYywgZCwgYSwgTVsxM10sIDB4NGUwODExYTEsIDIxKVxuICBhID0gZm5JKGEsIGIsIGMsIGQsIE1bNF0sIDB4Zjc1MzdlODIsIDYpXG4gIGQgPSBmbkkoZCwgYSwgYiwgYywgTVsxMV0sIDB4YmQzYWYyMzUsIDEwKVxuICBjID0gZm5JKGMsIGQsIGEsIGIsIE1bMl0sIDB4MmFkN2QyYmIsIDE1KVxuICBiID0gZm5JKGIsIGMsIGQsIGEsIE1bOV0sIDB4ZWI4NmQzOTEsIDIxKVxuXG4gIHRoaXMuX2EgPSAodGhpcy5fYSArIGEpIHwgMFxuICB0aGlzLl9iID0gKHRoaXMuX2IgKyBiKSB8IDBcbiAgdGhpcy5fYyA9ICh0aGlzLl9jICsgYykgfCAwXG4gIHRoaXMuX2QgPSAodGhpcy5fZCArIGQpIHwgMFxufVxuXG5NRDUucHJvdG90eXBlLl9kaWdlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIGNyZWF0ZSBwYWRkaW5nIGFuZCBoYW5kbGUgYmxvY2tzXG4gIHRoaXMuX2Jsb2NrW3RoaXMuX2Jsb2NrT2Zmc2V0KytdID0gMHg4MFxuICBpZiAodGhpcy5fYmxvY2tPZmZzZXQgPiA1Nikge1xuICAgIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDY0KVxuICAgIHRoaXMuX3VwZGF0ZSgpXG4gICAgdGhpcy5fYmxvY2tPZmZzZXQgPSAwXG4gIH1cblxuICB0aGlzLl9ibG9jay5maWxsKDAsIHRoaXMuX2Jsb2NrT2Zmc2V0LCA1NilcbiAgdGhpcy5fYmxvY2sud3JpdGVVSW50MzJMRSh0aGlzLl9sZW5ndGhbMF0sIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFsxXSwgNjApXG4gIHRoaXMuX3VwZGF0ZSgpXG5cbiAgLy8gcHJvZHVjZSByZXN1bHRcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxNilcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9hLCAwKVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2IsIDQpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYywgOClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9kLCAxMilcbiAgcmV0dXJuIGJ1ZmZlclxufVxuXG5mdW5jdGlvbiByb3RsICh4LCBuKSB7XG4gIHJldHVybiAoeCA8PCBuKSB8ICh4ID4+PiAoMzIgLSBuKSlcbn1cblxuZnVuY3Rpb24gZm5GIChhLCBiLCBjLCBkLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiAmIGMpIHwgKCh+YikgJiBkKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5mdW5jdGlvbiBmbkcgKGEsIGIsIGMsIGQsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSCAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgYikgfCAwXG59XG5cbmZ1bmN0aW9uIGZuSSAoYSwgYiwgYywgZCwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGMgXiAoYiB8ICh+ZCkpKSkgKyBtICsgaykgfCAwLCBzKSArIGIpIHwgMFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IE1ENVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBUcmFuc2Zvcm0gPSByZXF1aXJlKCdzdHJlYW0nKS5UcmFuc2Zvcm1cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcblxuZnVuY3Rpb24gdGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyICh2YWwsIHByZWZpeCkge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih2YWwpICYmIHR5cGVvZiB2YWwgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihwcmVmaXggKyAnIG11c3QgYmUgYSBzdHJpbmcgb3IgYSBidWZmZXInKVxuICB9XG59XG5cbmZ1bmN0aW9uIEhhc2hCYXNlIChibG9ja1NpemUpIHtcbiAgVHJhbnNmb3JtLmNhbGwodGhpcylcblxuICB0aGlzLl9ibG9jayA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja1NpemUpXG4gIHRoaXMuX2Jsb2NrU2l6ZSA9IGJsb2NrU2l6ZVxuICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgdGhpcy5fbGVuZ3RoID0gWzAsIDAsIDAsIDBdXG5cbiAgdGhpcy5fZmluYWxpemVkID0gZmFsc2Vcbn1cblxuaW5oZXJpdHMoSGFzaEJhc2UsIFRyYW5zZm9ybSlcblxuSGFzaEJhc2UucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuICB2YXIgZXJyb3IgPSBudWxsXG4gIHRyeSB7XG4gICAgdGhpcy51cGRhdGUoY2h1bmssIGVuY29kaW5nKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvciA9IGVyclxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3IpXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fZmx1c2ggPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIGVycm9yID0gbnVsbFxuICB0cnkge1xuICAgIHRoaXMucHVzaCh0aGlzLmRpZ2VzdCgpKVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBlcnJvciA9IGVyclxuICB9XG5cbiAgY2FsbGJhY2soZXJyb3IpXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSwgZW5jb2RpbmcpIHtcbiAgdGhyb3dJZk5vdFN0cmluZ09yQnVmZmVyKGRhdGEsICdEYXRhJylcbiAgaWYgKHRoaXMuX2ZpbmFsaXplZCkgdGhyb3cgbmV3IEVycm9yKCdEaWdlc3QgYWxyZWFkeSBjYWxsZWQnKVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihkYXRhKSkgZGF0YSA9IEJ1ZmZlci5mcm9tKGRhdGEsIGVuY29kaW5nKVxuXG4gIC8vIGNvbnN1bWUgZGF0YVxuICB2YXIgYmxvY2sgPSB0aGlzLl9ibG9ja1xuICB2YXIgb2Zmc2V0ID0gMFxuICB3aGlsZSAodGhpcy5fYmxvY2tPZmZzZXQgKyBkYXRhLmxlbmd0aCAtIG9mZnNldCA+PSB0aGlzLl9ibG9ja1NpemUpIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5fYmxvY2tPZmZzZXQ7IGkgPCB0aGlzLl9ibG9ja1NpemU7KSBibG9ja1tpKytdID0gZGF0YVtvZmZzZXQrK11cbiAgICB0aGlzLl91cGRhdGUoKVxuICAgIHRoaXMuX2Jsb2NrT2Zmc2V0ID0gMFxuICB9XG4gIHdoaWxlIChvZmZzZXQgPCBkYXRhLmxlbmd0aCkgYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK10gPSBkYXRhW29mZnNldCsrXVxuXG4gIC8vIHVwZGF0ZSBsZW5ndGhcbiAgZm9yICh2YXIgaiA9IDAsIGNhcnJ5ID0gZGF0YS5sZW5ndGggKiA4OyBjYXJyeSA+IDA7ICsraikge1xuICAgIHRoaXMuX2xlbmd0aFtqXSArPSBjYXJyeVxuICAgIGNhcnJ5ID0gKHRoaXMuX2xlbmd0aFtqXSAvIDB4MDEwMDAwMDAwMCkgfCAwXG4gICAgaWYgKGNhcnJ5ID4gMCkgdGhpcy5fbGVuZ3RoW2pdIC09IDB4MDEwMDAwMDAwMCAqIGNhcnJ5XG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG5IYXNoQmFzZS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdfdXBkYXRlIGlzIG5vdCBpbXBsZW1lbnRlZCcpXG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAoZW5jb2RpbmcpIHtcbiAgaWYgKHRoaXMuX2ZpbmFsaXplZCkgdGhyb3cgbmV3IEVycm9yKCdEaWdlc3QgYWxyZWFkeSBjYWxsZWQnKVxuICB0aGlzLl9maW5hbGl6ZWQgPSB0cnVlXG5cbiAgdmFyIGRpZ2VzdCA9IHRoaXMuX2RpZ2VzdCgpXG4gIGlmIChlbmNvZGluZyAhPT0gdW5kZWZpbmVkKSBkaWdlc3QgPSBkaWdlc3QudG9TdHJpbmcoZW5jb2RpbmcpXG5cbiAgLy8gcmVzZXQgc3RhdGVcbiAgdGhpcy5fYmxvY2suZmlsbCgwKVxuICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCA0OyArK2kpIHRoaXMuX2xlbmd0aFtpXSA9IDBcblxuICByZXR1cm4gZGlnZXN0XG59XG5cbkhhc2hCYXNlLnByb3RvdHlwZS5fZGlnZXN0ID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ19kaWdlc3QgaXMgbm90IGltcGxlbWVudGVkJylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIYXNoQmFzZVxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblJlYWRhYmxlLlJlYWRhYmxlU3RhdGUgPSBSZWFkYWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuXG52YXIgRUVsaXN0ZW5lckNvdW50ID0gZnVuY3Rpb24gKGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aDtcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCcpO1xudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcbnZhciBTdHJpbmdEZWNvZGVyO1xuXG51dGlsLmluaGVyaXRzKFJlYWRhYmxlLCBTdHJlYW0pO1xuXG52YXIga1Byb3h5RXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuXG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChpc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggaXQgc3RvcHMgY2FsbGluZyBfcmVhZCgpIHRvIGZpbGwgdGhlIGJ1ZmZlclxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIFwiZG9uJ3QgY2FsbCBfcmVhZCBwcmVlbXB0aXZlbHkgZXZlclwiXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciByZWFkYWJsZUh3bSA9IG9wdGlvbnMucmVhZGFibGVIaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuXG4gIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHJlYWRhYmxlSHdtIHx8IHJlYWRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gcmVhZGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGVMaXN0ZW5pbmcgPSBmYWxzZTtcbiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuUmVhZGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5SZWFkYWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIGNiKGVycik7XG59O1xuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHNraXBDaHVua0NoZWNrO1xuXG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgICBlbmNvZGluZyA9ICcnO1xuICAgICAgfVxuICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIG51bGwsIHRydWUsIGZhbHNlKTtcbn07XG5cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVyO1xuICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gICAgaWYgKGVyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihjaHVuaykgIT09IEJ1ZmZlci5wcm90b3R5cGUpIHtcbiAgICAgICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZFRvRnJvbnQpIHtcbiAgICAgICAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKSk7ZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZGVkKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFlbmNvZGluZykge1xuICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO2Vsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgYWRkVG9Gcm9udCkge1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH1cbiAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuaykge1xuICB2YXIgZXI7XG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgcmV0dXJuIGVyO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLmlzUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTtcbn07XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyIHRvIHByZXZlbnQgaW5jcmVhc2luZyBod20gZXhjZXNzaXZlbHkgaW5cbiAgICAvLyB0aW55IGFtb3VudHNcbiAgICBuLS07XG4gICAgbiB8PSBuID4+PiAxO1xuICAgIG4gfD0gbiA+Pj4gMjtcbiAgICBuIHw9IG4gPj4+IDQ7XG4gICAgbiB8PSBuID4+PiA4O1xuICAgIG4gfD0gbiA+Pj4gMTY7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBuO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGhvd011Y2hUb1JlYWQobiwgc3RhdGUpIHtcbiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwO1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIDE7XG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9XG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuICBpZiAobiA+IHN0YXRlLmhpZ2hXYXRlck1hcmspIHN0YXRlLmhpZ2hXYXRlck1hcmsgPSBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKTtcbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gbjtcbiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2hcbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn1cblxuLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcblxuICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmxlbmd0aCAtPSBuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vd1xuICAgIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgICBpZiAoIXN0YXRlLmVuZGVkKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmVuZGVkKSByZXR1cm47XG4gIGlmIChzdGF0ZS5kZWNvZGVyKSB7XG4gICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSB7XG4gICAgICBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG4gICAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgfVxuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcblxuICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC5cbiAgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG59XG5cbi8vIERvbid0IGVtaXQgcmVhZGFibGUgcmlnaHQgYXdheSBpbiBzeW5jIG1vZGUsIGJlY2F1c2UgdGhpcyBjYW4gdHJpZ2dlclxuLy8gYW5vdGhlciByZWFkKCkgY2FsbCA9PiBzdGFjayBvdmVyZmxvdy4gIFRoaXMgd2F5LCBpdCBtaWdodCB0cmlnZ2VyXG4vLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgaWYgKHN0YXRlLnN5bmMpIHBuYS5uZXh0VGljayhlbWl0UmVhZGFibGVfLCBzdHJlYW0pO2Vsc2UgZW1pdFJlYWRhYmxlXyhzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIGRlYnVnKCdlbWl0IHJlYWRhYmxlJyk7XG4gIHN0cmVhbS5lbWl0KCdyZWFkYWJsZScpO1xuICBmbG93KHN0cmVhbSk7XG59XG5cbi8vIGF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIHdoaWxlICghc3RhdGUucmVhZGluZyAmJiAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aClcbiAgICAgIC8vIGRpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuXG4gICAgICBicmVhaztlbHNlIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgfVxuICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlO1xufVxuXG4vLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyBjYWxsIGNiKGVyLCBkYXRhKSB3aGVyZSBkYXRhIGlzIDw9IG4gaW4gbGVuZ3RoLlxuLy8gZm9yIHZpcnR1YWwgKG5vbi1zdHJpbmcsIG5vbi1idWZmZXIpIHN0cmVhbXMsIFwibGVuZ3RoXCIgaXMgc29tZXdoYXRcbi8vIGFyYml0cmFyeSwgYW5kIHBlcmhhcHMgbm90IHZlcnkgbWVhbmluZ2Z1bC5cblJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ19yZWFkKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhdGUucGlwZXMgPSBbc3RhdGUucGlwZXMsIGRlc3RdO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG5cbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcblxuICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcG5hLm5leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBpZiAodW5waXBlSW5mbyAmJiB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHVucGlwZUluZm8uaGFzVW5waXBlZCA9IHRydWU7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKTtcbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICB2YXIgY2xlYW5lZFVwID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTtcbiAgICAvLyBjbGVhbnVwIGV2ZW50IGhhbmRsZXJzIG9uY2UgdGhlIHBpcGUgaXMgYnJva2VuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcblxuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIC8vIElmIHRoZSB1c2VyIHB1c2hlcyBtb3JlIGRhdGEgd2hpbGUgd2UncmUgd3JpdGluZyB0byBkZXN0IHRoZW4gd2UnbGwgZW5kIHVwXG4gIC8vIGluIG9uZGF0YSBhZ2Fpbi4gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGluY3JlYXNlIGF3YWl0RHJhaW4gb25jZSBiZWNhdXNlXG4gIC8vIGRlc3Qgd2lsbCBvbmx5IGVtaXQgb25lICdkcmFpbicgZXZlbnQgZm9yIHRoZSBtdWx0aXBsZSB3cml0ZXMuXG4gIC8vID0+IEludHJvZHVjZSBhIGd1YXJkIG9uIGluY3JlYXNpbmcgYXdhaXREcmFpbi5cbiAgdmFyIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTtcbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgZGVidWcoJ29uZGF0YScpO1xuICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgICB2YXIgcmV0ID0gZGVzdC53cml0ZShjaHVuayk7XG4gICAgaWYgKGZhbHNlID09PSByZXQgJiYgIWluY3JlYXNlZEF3YWl0RHJhaW4pIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAgIC8vIGFsc28gcmV0dXJuZWQgZmFsc2UuXG4gICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi5cbiAgICAgIGlmICgoc3RhdGUucGlwZXNDb3VudCA9PT0gMSAmJiBzdGF0ZS5waXBlcyA9PT0gZGVzdCB8fCBzdGF0ZS5waXBlc0NvdW50ID4gMSAmJiBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KSAhPT0gLTEpICYmICFjbGVhbmVkVXApIHtcbiAgICAgICAgZGVidWcoJ2ZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZScsIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IHRydWU7XG4gICAgICB9XG4gICAgICBzcmMucGF1c2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgZGVzdCBoYXMgYW4gZXJyb3IsIHRoZW4gc3RvcCBwaXBpbmcgaW50byBpdC5cbiAgLy8gaG93ZXZlciwgZG9uJ3Qgc3VwcHJlc3MgdGhlIHRocm93aW5nIGJlaGF2aW9yIGZvciB0aGlzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgZGVidWcoJ29uZXJyb3InLCBlcik7XG4gICAgdW5waXBlKCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBpZiAoRUVsaXN0ZW5lckNvdW50KGRlc3QsICdlcnJvcicpID09PSAwKSBkZXN0LmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSB1c2VybGFuZCBvbmVzLlxuICBwcmVwZW5kTGlzdGVuZXIoZGVzdCwgJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gQm90aCBjbG9zZSBhbmQgZmluaXNoIHNob3VsZCB0cmlnZ2VyIHVucGlwZSwgYnV0IG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuICBmdW5jdGlvbiBvbmZpbmlzaCgpIHtcbiAgICBkZWJ1Zygnb25maW5pc2gnKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpO1xuXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJyk7XG4gICAgc3JjLnVucGlwZShkZXN0KTtcbiAgfVxuXG4gIC8vIHRlbGwgdGhlIGRlc3QgdGhhdCBpdCdzIGJlaW5nIHBpcGVkIHRvXG4gIGRlc3QuZW1pdCgncGlwZScsIHNyYyk7XG5cbiAgLy8gc3RhcnQgdGhlIGZsb3cgaWYgaXQgaGFzbid0IGJlZW4gc3RhcnRlZCBhbHJlYWR5LlxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTtcbiAgICBzcmMucmVzdW1lKCk7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTtcbiAgICBkZWJ1ZygncGlwZU9uRHJhaW4nLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbikgc3RhdGUuYXdhaXREcmFpbi0tO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgICAgZmxvdyhzcmMpO1xuICAgIH1cbiAgfTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0geyBoYXNVbnBpcGVkOiBmYWxzZSB9O1xuXG4gIC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzO1xuXG4gIC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHtcbiAgICAvLyBwYXNzZWQgaW4gb25lLCBidXQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZS5cbiAgICBpZiAoZGVzdCAmJiBkZXN0ICE9PSBzdGF0ZS5waXBlcykgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIH1yZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuXG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yXG4vLyBFbnN1cmUgcmVhZGFibGUgbGlzdGVuZXJzIGV2ZW50dWFsbHkgZ2V0IHNvbWV0aGluZ1xuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcG5hLm5leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssIHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcbiAgaWYgKGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcblxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBfdGhpcy5wdXNoKG51bGwpO1xuICB9KTtcblxuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG5cbiAgICAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcbiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47XG5cbiAgICB2YXIgcmV0ID0gX3RoaXMucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCBrUHJveHlFdmVudHMubGVuZ3RoOyBuKyspIHtcbiAgICBzdHJlYW0ub24oa1Byb3h5RXZlbnRzW25dLCB0aGlzLmVtaXQuYmluZCh0aGlzLCBrUHJveHlFdmVudHNbbl0pKTtcbiAgfVxuXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGNvbnN1bWUgc29tZSBtb3JlIGJ5dGVzLCBzaW1wbHkgdW5wYXVzZSB0aGVcbiAgLy8gdW5kZXJseWluZyBzdHJlYW0uXG4gIHRoaXMuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG4gICAgaWYgKHBhdXNlZCkge1xuICAgICAgcGF1c2VkID0gZmFsc2U7XG4gICAgICBzdHJlYW0ucmVzdW1lKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblJlYWRhYmxlLl9mcm9tTGlzdCA9IGZyb21MaXN0O1xuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHZhciByZXQ7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdFxuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IGZyb21MaXN0UGFydGlhbChuLCBzdGF0ZS5idWZmZXIsIHN0YXRlLmRlY29kZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gRXh0cmFjdHMgb25seSBlbm91Z2ggYnVmZmVyZWQgZGF0YSB0byBzYXRpc2Z5IHRoZSBhbW91bnQgcmVxdWVzdGVkLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdFBhcnRpYWwobiwgbGlzdCwgaGFzU3RyaW5ncykge1xuICB2YXIgcmV0O1xuICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzXG4gICAgcmV0ID0gbGlzdC5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTtcbiAgfSBlbHNlIGlmIChuID09PSBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBmaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2hcbiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyXG4gICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YVxuLy8gY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHZhciByZXQgPSBwLmRhdGE7XG4gIG4gLT0gcmV0Lmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBzdHIubGVuZ3RoID8gc3RyLmxlbmd0aCA6IG47XG4gICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEgY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KSB7XG4gIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobik7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHAuZGF0YS5jb3B5KHJldCk7XG4gIG4gLT0gcC5kYXRhLmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBidWYubGVuZ3RoID8gYnVmLmxlbmd0aCA6IG47XG4gICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gYnVmLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIElmIHdlIGdldCBoZXJlIGJlZm9yZSBjb25zdW1pbmcgYWxsIHRoZSBieXRlcywgdGhlbiB0aGF0IGlzIGFcbiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLlxuICBpZiAoc3RhdGUubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKCdcImVuZFJlYWRhYmxlKClcIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgc3RhdGUuZW5kRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn0iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSVxuZnVuY3Rpb24gZGVzdHJveShlcnIsIGNiKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHJlYWRhYmxlRGVzdHJveWVkID0gdGhpcy5fcmVhZGFibGVTdGF0ZSAmJiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgdmFyIHdyaXRhYmxlRGVzdHJveWVkID0gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcblxuICBpZiAocmVhZGFibGVEZXN0cm95ZWQgfHwgd3JpdGFibGVEZXN0cm95ZWQpIHtcbiAgICBpZiAoY2IpIHtcbiAgICAgIGNiKGVycik7XG4gICAgfSBlbHNlIGlmIChlcnIgJiYgKCF0aGlzLl93cml0YWJsZVN0YXRlIHx8ICF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkpIHtcbiAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB3ZSBzZXQgZGVzdHJveWVkIHRvIHRydWUgYmVmb3JlIGZpcmluZyBlcnJvciBjYWxsYmFja3MgaW4gb3JkZXJcbiAgLy8gdG8gbWFrZSBpdCByZS1lbnRyYW5jZSBzYWZlIGluIGNhc2UgZGVzdHJveSgpIGlzIGNhbGxlZCB3aXRoaW4gY2FsbGJhY2tzXG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICAvLyBpZiB0aGlzIGlzIGEgZHVwbGV4IHN0cmVhbSBtYXJrIHRoZSB3cml0YWJsZSBwYXJ0IGFzIGRlc3Ryb3llZCBhcyB3ZWxsXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgdGhpcy5fZGVzdHJveShlcnIgfHwgbnVsbCwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmICghY2IgJiYgZXJyKSB7XG4gICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpO1xuICAgICAgaWYgKF90aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdEVycm9yTlQoc2VsZiwgZXJyKSB7XG4gIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVzdHJveTogZGVzdHJveSxcbiAgdW5kZXN0cm95OiB1bmRlc3Ryb3lcbn07IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCd3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMnKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTtcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAoc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCIndXNlIHN0cmljdCdcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoQmFzZSA9IHJlcXVpcmUoJ2hhc2gtYmFzZScpXG5cbnZhciBBUlJBWTE2ID0gbmV3IEFycmF5KDE2KVxuXG52YXIgemwgPSBbXG4gIDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsXG4gIDcsIDQsIDEzLCAxLCAxMCwgNiwgMTUsIDMsIDEyLCAwLCA5LCA1LCAyLCAxNCwgMTEsIDgsXG4gIDMsIDEwLCAxNCwgNCwgOSwgMTUsIDgsIDEsIDIsIDcsIDAsIDYsIDEzLCAxMSwgNSwgMTIsXG4gIDEsIDksIDExLCAxMCwgMCwgOCwgMTIsIDQsIDEzLCAzLCA3LCAxNSwgMTQsIDUsIDYsIDIsXG4gIDQsIDAsIDUsIDksIDcsIDEyLCAyLCAxMCwgMTQsIDEsIDMsIDgsIDExLCA2LCAxNSwgMTNcbl1cblxudmFyIHpyID0gW1xuICA1LCAxNCwgNywgMCwgOSwgMiwgMTEsIDQsIDEzLCA2LCAxNSwgOCwgMSwgMTAsIDMsIDEyLFxuICA2LCAxMSwgMywgNywgMCwgMTMsIDUsIDEwLCAxNCwgMTUsIDgsIDEyLCA0LCA5LCAxLCAyLFxuICAxNSwgNSwgMSwgMywgNywgMTQsIDYsIDksIDExLCA4LCAxMiwgMiwgMTAsIDAsIDQsIDEzLFxuICA4LCA2LCA0LCAxLCAzLCAxMSwgMTUsIDAsIDUsIDEyLCAyLCAxMywgOSwgNywgMTAsIDE0LFxuICAxMiwgMTUsIDEwLCA0LCAxLCA1LCA4LCA3LCA2LCAyLCAxMywgMTQsIDAsIDMsIDksIDExXG5dXG5cbnZhciBzbCA9IFtcbiAgMTEsIDE0LCAxNSwgMTIsIDUsIDgsIDcsIDksIDExLCAxMywgMTQsIDE1LCA2LCA3LCA5LCA4LFxuICA3LCA2LCA4LCAxMywgMTEsIDksIDcsIDE1LCA3LCAxMiwgMTUsIDksIDExLCA3LCAxMywgMTIsXG4gIDExLCAxMywgNiwgNywgMTQsIDksIDEzLCAxNSwgMTQsIDgsIDEzLCA2LCA1LCAxMiwgNywgNSxcbiAgMTEsIDEyLCAxNCwgMTUsIDE0LCAxNSwgOSwgOCwgOSwgMTQsIDUsIDYsIDgsIDYsIDUsIDEyLFxuICA5LCAxNSwgNSwgMTEsIDYsIDgsIDEzLCAxMiwgNSwgMTIsIDEzLCAxNCwgMTEsIDgsIDUsIDZcbl1cblxudmFyIHNyID0gW1xuICA4LCA5LCA5LCAxMSwgMTMsIDE1LCAxNSwgNSwgNywgNywgOCwgMTEsIDE0LCAxNCwgMTIsIDYsXG4gIDksIDEzLCAxNSwgNywgMTIsIDgsIDksIDExLCA3LCA3LCAxMiwgNywgNiwgMTUsIDEzLCAxMSxcbiAgOSwgNywgMTUsIDExLCA4LCA2LCA2LCAxNCwgMTIsIDEzLCA1LCAxNCwgMTMsIDEzLCA3LCA1LFxuICAxNSwgNSwgOCwgMTEsIDE0LCAxNCwgNiwgMTQsIDYsIDksIDEyLCA5LCAxMiwgNSwgMTUsIDgsXG4gIDgsIDUsIDEyLCA5LCAxMiwgNSwgMTQsIDYsIDgsIDEzLCA2LCA1LCAxNSwgMTMsIDExLCAxMVxuXVxuXG52YXIgaGwgPSBbMHgwMDAwMDAwMCwgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYywgMHhhOTUzZmQ0ZV1cbnZhciBociA9IFsweDUwYTI4YmU2LCAweDVjNGRkMTI0LCAweDZkNzAzZWYzLCAweDdhNmQ3NmU5LCAweDAwMDAwMDAwXVxuXG5mdW5jdGlvbiBSSVBFTUQxNjAgKCkge1xuICBIYXNoQmFzZS5jYWxsKHRoaXMsIDY0KVxuXG4gIC8vIHN0YXRlXG4gIHRoaXMuX2EgPSAweDY3NDUyMzAxXG4gIHRoaXMuX2IgPSAweGVmY2RhYjg5XG4gIHRoaXMuX2MgPSAweDk4YmFkY2ZlXG4gIHRoaXMuX2QgPSAweDEwMzI1NDc2XG4gIHRoaXMuX2UgPSAweGMzZDJlMWYwXG59XG5cbmluaGVyaXRzKFJJUEVNRDE2MCwgSGFzaEJhc2UpXG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHdvcmRzID0gQVJSQVkxNlxuICBmb3IgKHZhciBqID0gMDsgaiA8IDE2OyArK2opIHdvcmRzW2pdID0gdGhpcy5fYmxvY2sucmVhZEludDMyTEUoaiAqIDQpXG5cbiAgdmFyIGFsID0gdGhpcy5fYSB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYiB8IDBcbiAgdmFyIGNsID0gdGhpcy5fYyB8IDBcbiAgdmFyIGRsID0gdGhpcy5fZCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZSB8IDBcblxuICB2YXIgYXIgPSB0aGlzLl9hIHwgMFxuICB2YXIgYnIgPSB0aGlzLl9iIHwgMFxuICB2YXIgY3IgPSB0aGlzLl9jIHwgMFxuICB2YXIgZHIgPSB0aGlzLl9kIHwgMFxuICB2YXIgZXIgPSB0aGlzLl9lIHwgMFxuXG4gIC8vIGNvbXB1dGF0aW9uXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgODA7IGkgKz0gMSkge1xuICAgIHZhciB0bFxuICAgIHZhciB0clxuICAgIGlmIChpIDwgMTYpIHtcbiAgICAgIHRsID0gZm4xKGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFswXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuNShhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbMF0sIHNyW2ldKVxuICAgIH0gZWxzZSBpZiAoaSA8IDMyKSB7XG4gICAgICB0bCA9IGZuMihhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbMV0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjQoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzFdLCBzcltpXSlcbiAgICB9IGVsc2UgaWYgKGkgPCA0OCkge1xuICAgICAgdGwgPSBmbjMoYWwsIGJsLCBjbCwgZGwsIGVsLCB3b3Jkc1t6bFtpXV0sIGhsWzJdLCBzbFtpXSlcbiAgICAgIHRyID0gZm4zKGFyLCBiciwgY3IsIGRyLCBlciwgd29yZHNbenJbaV1dLCBoclsyXSwgc3JbaV0pXG4gICAgfSBlbHNlIGlmIChpIDwgNjQpIHtcbiAgICAgIHRsID0gZm40KGFsLCBibCwgY2wsIGRsLCBlbCwgd29yZHNbemxbaV1dLCBobFszXSwgc2xbaV0pXG4gICAgICB0ciA9IGZuMihhciwgYnIsIGNyLCBkciwgZXIsIHdvcmRzW3pyW2ldXSwgaHJbM10sIHNyW2ldKVxuICAgIH0gZWxzZSB7IC8vIGlmIChpPDgwKSB7XG4gICAgICB0bCA9IGZuNShhbCwgYmwsIGNsLCBkbCwgZWwsIHdvcmRzW3psW2ldXSwgaGxbNF0sIHNsW2ldKVxuICAgICAgdHIgPSBmbjEoYXIsIGJyLCBjciwgZHIsIGVyLCB3b3Jkc1t6cltpXV0sIGhyWzRdLCBzcltpXSlcbiAgICB9XG5cbiAgICBhbCA9IGVsXG4gICAgZWwgPSBkbFxuICAgIGRsID0gcm90bChjbCwgMTApXG4gICAgY2wgPSBibFxuICAgIGJsID0gdGxcblxuICAgIGFyID0gZXJcbiAgICBlciA9IGRyXG4gICAgZHIgPSByb3RsKGNyLCAxMClcbiAgICBjciA9IGJyXG4gICAgYnIgPSB0clxuICB9XG5cbiAgLy8gdXBkYXRlIHN0YXRlXG4gIHZhciB0ID0gKHRoaXMuX2IgKyBjbCArIGRyKSB8IDBcbiAgdGhpcy5fYiA9ICh0aGlzLl9jICsgZGwgKyBlcikgfCAwXG4gIHRoaXMuX2MgPSAodGhpcy5fZCArIGVsICsgYXIpIHwgMFxuICB0aGlzLl9kID0gKHRoaXMuX2UgKyBhbCArIGJyKSB8IDBcbiAgdGhpcy5fZSA9ICh0aGlzLl9hICsgYmwgKyBjcikgfCAwXG4gIHRoaXMuX2EgPSB0XG59XG5cblJJUEVNRDE2MC5wcm90b3R5cGUuX2RpZ2VzdCA9IGZ1bmN0aW9uICgpIHtcbiAgLy8gY3JlYXRlIHBhZGRpbmcgYW5kIGhhbmRsZSBibG9ja3NcbiAgdGhpcy5fYmxvY2tbdGhpcy5fYmxvY2tPZmZzZXQrK10gPSAweDgwXG4gIGlmICh0aGlzLl9ibG9ja09mZnNldCA+IDU2KSB7XG4gICAgdGhpcy5fYmxvY2suZmlsbCgwLCB0aGlzLl9ibG9ja09mZnNldCwgNjQpXG4gICAgdGhpcy5fdXBkYXRlKClcbiAgICB0aGlzLl9ibG9ja09mZnNldCA9IDBcbiAgfVxuXG4gIHRoaXMuX2Jsb2NrLmZpbGwoMCwgdGhpcy5fYmxvY2tPZmZzZXQsIDU2KVxuICB0aGlzLl9ibG9jay53cml0ZVVJbnQzMkxFKHRoaXMuX2xlbmd0aFswXSwgNTYpXG4gIHRoaXMuX2Jsb2NrLndyaXRlVUludDMyTEUodGhpcy5fbGVuZ3RoWzFdLCA2MClcbiAgdGhpcy5fdXBkYXRlKClcblxuICAvLyBwcm9kdWNlIHJlc3VsdFxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jID8gQnVmZmVyLmFsbG9jKDIwKSA6IG5ldyBCdWZmZXIoMjApXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fYSwgMClcbiAgYnVmZmVyLndyaXRlSW50MzJMRSh0aGlzLl9iLCA0KVxuICBidWZmZXIud3JpdGVJbnQzMkxFKHRoaXMuX2MsIDgpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZCwgMTIpXG4gIGJ1ZmZlci53cml0ZUludDMyTEUodGhpcy5fZSwgMTYpXG4gIHJldHVybiBidWZmZXJcbn1cblxuZnVuY3Rpb24gcm90bCAoeCwgbikge1xuICByZXR1cm4gKHggPDwgbikgfCAoeCA+Pj4gKDMyIC0gbikpXG59XG5cbmZ1bmN0aW9uIGZuMSAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIGMgXiBkKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuMiAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoKGIgJiBjKSB8ICgofmIpICYgZCkpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxuZnVuY3Rpb24gZm4zIChhLCBiLCBjLCBkLCBlLCBtLCBrLCBzKSB7XG4gIHJldHVybiAocm90bCgoYSArICgoYiB8ICh+YykpIF4gZCkgKyBtICsgaykgfCAwLCBzKSArIGUpIHwgMFxufVxuXG5mdW5jdGlvbiBmbjQgKGEsIGIsIGMsIGQsIGUsIG0sIGssIHMpIHtcbiAgcmV0dXJuIChyb3RsKChhICsgKChiICYgZCkgfCAoYyAmICh+ZCkpKSArIG0gKyBrKSB8IDAsIHMpICsgZSkgfCAwXG59XG5cbmZ1bmN0aW9uIGZuNSAoYSwgYiwgYywgZCwgZSwgbSwgaywgcykge1xuICByZXR1cm4gKHJvdGwoKGEgKyAoYiBeIChjIHwgKH5kKSkpICsgbSArIGspIHwgMCwgcykgKyBlKSB8IDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSSVBFTUQxNjBcbiIsInZhciBleHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBTSEEgKGFsZ29yaXRobSkge1xuICBhbGdvcml0aG0gPSBhbGdvcml0aG0udG9Mb3dlckNhc2UoKVxuXG4gIHZhciBBbGdvcml0aG0gPSBleHBvcnRzW2FsZ29yaXRobV1cbiAgaWYgKCFBbGdvcml0aG0pIHRocm93IG5ldyBFcnJvcihhbGdvcml0aG0gKyAnIGlzIG5vdCBzdXBwb3J0ZWQgKHdlIGFjY2VwdCBwdWxsIHJlcXVlc3RzKScpXG5cbiAgcmV0dXJuIG5ldyBBbGdvcml0aG0oKVxufVxuXG5leHBvcnRzLnNoYSA9IHJlcXVpcmUoJy4vc2hhJylcbmV4cG9ydHMuc2hhMSA9IHJlcXVpcmUoJy4vc2hhMScpXG5leHBvcnRzLnNoYTIyNCA9IHJlcXVpcmUoJy4vc2hhMjI0JylcbmV4cG9ydHMuc2hhMjU2ID0gcmVxdWlyZSgnLi9zaGEyNTYnKVxuZXhwb3J0cy5zaGEzODQgPSByZXF1aXJlKCcuL3NoYTM4NCcpXG5leHBvcnRzLnNoYTUxMiA9IHJlcXVpcmUoJy4vc2hhNTEyJylcbiIsIi8qKlxuICogQSBKYXZhU2NyaXB0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgSGFzaCBBbGdvcml0aG0sIFNIQS0yNTYsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgMTgwLTJcbiAqIFZlcnNpb24gMi4yLWJldGEgQ29weXJpZ2h0IEFuZ2VsIE1hcmluLCBQYXVsIEpvaG5zdG9uIDIwMDAgLSAyMDA5LlxuICogT3RoZXIgY29udHJpYnV0b3JzOiBHcmVnIEhvbHQsIEFuZHJldyBLZXBlcnQsIFlkbmFyLCBMb3N0aW5ldFxuICpcbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NDI4QTJGOTgsIDB4NzEzNzQ0OTEsIDB4QjVDMEZCQ0YsIDB4RTlCNURCQTUsXG4gIDB4Mzk1NkMyNUIsIDB4NTlGMTExRjEsIDB4OTIzRjgyQTQsIDB4QUIxQzVFRDUsXG4gIDB4RDgwN0FBOTgsIDB4MTI4MzVCMDEsIDB4MjQzMTg1QkUsIDB4NTUwQzdEQzMsXG4gIDB4NzJCRTVENzQsIDB4ODBERUIxRkUsIDB4OUJEQzA2QTcsIDB4QzE5QkYxNzQsXG4gIDB4RTQ5QjY5QzEsIDB4RUZCRTQ3ODYsIDB4MEZDMTlEQzYsIDB4MjQwQ0ExQ0MsXG4gIDB4MkRFOTJDNkYsIDB4NEE3NDg0QUEsIDB4NUNCMEE5REMsIDB4NzZGOTg4REEsXG4gIDB4OTgzRTUxNTIsIDB4QTgzMUM2NkQsIDB4QjAwMzI3QzgsIDB4QkY1OTdGQzcsXG4gIDB4QzZFMDBCRjMsIDB4RDVBNzkxNDcsIDB4MDZDQTYzNTEsIDB4MTQyOTI5NjcsXG4gIDB4MjdCNzBBODUsIDB4MkUxQjIxMzgsIDB4NEQyQzZERkMsIDB4NTMzODBEMTMsXG4gIDB4NjUwQTczNTQsIDB4NzY2QTBBQkIsIDB4ODFDMkM5MkUsIDB4OTI3MjJDODUsXG4gIDB4QTJCRkU4QTEsIDB4QTgxQTY2NEIsIDB4QzI0QjhCNzAsIDB4Qzc2QzUxQTMsXG4gIDB4RDE5MkU4MTksIDB4RDY5OTA2MjQsIDB4RjQwRTM1ODUsIDB4MTA2QUEwNzAsXG4gIDB4MTlBNEMxMTYsIDB4MUUzNzZDMDgsIDB4Mjc0ODc3NEMsIDB4MzRCMEJDQjUsXG4gIDB4MzkxQzBDQjMsIDB4NEVEOEFBNEEsIDB4NUI5Q0NBNEYsIDB4NjgyRTZGRjMsXG4gIDB4NzQ4RjgyRUUsIDB4NzhBNTYzNkYsIDB4ODRDODc4MTQsIDB4OENDNzAyMDgsXG4gIDB4OTBCRUZGRkEsIDB4QTQ1MDZDRUIsIDB4QkVGOUEzRjcsIDB4QzY3MTc4RjJcbl1cblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTI1NiAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTI1NiwgSGFzaClcblxuU2hhMjU2LnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2YTA5ZTY2N1xuICB0aGlzLl9iID0gMHhiYjY3YWU4NVxuICB0aGlzLl9jID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kID0gMHhhNTRmZjUzYVxuICB0aGlzLl9lID0gMHg1MTBlNTI3ZlxuICB0aGlzLl9mID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9nID0gMHgxZjgzZDlhYlxuICB0aGlzLl9oID0gMHg1YmUwY2QxOVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIGNoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDIgfCB4IDw8IDMwKSBeICh4ID4+PiAxMyB8IHggPDwgMTkpIF4gKHggPj4+IDIyIHwgeCA8PCAxMClcbn1cblxuZnVuY3Rpb24gc2lnbWExICh4KSB7XG4gIHJldHVybiAoeCA+Pj4gNiB8IHggPDwgMjYpIF4gKHggPj4+IDExIHwgeCA8PCAyMSkgXiAoeCA+Pj4gMjUgfCB4IDw8IDcpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMCAoeCkge1xuICByZXR1cm4gKHggPj4+IDcgfCB4IDw8IDI1KSBeICh4ID4+PiAxOCB8IHggPDwgMTQpIF4gKHggPj4+IDMpXG59XG5cbmZ1bmN0aW9uIGdhbW1hMSAoeCkge1xuICByZXR1cm4gKHggPj4+IDE3IHwgeCA8PCAxNSkgXiAoeCA+Pj4gMTkgfCB4IDw8IDEzKSBeICh4ID4+PiAxMClcbn1cblxuU2hhMjU2LnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKE0pIHtcbiAgdmFyIFcgPSB0aGlzLl93XG5cbiAgdmFyIGEgPSB0aGlzLl9hIHwgMFxuICB2YXIgYiA9IHRoaXMuX2IgfCAwXG4gIHZhciBjID0gdGhpcy5fYyB8IDBcbiAgdmFyIGQgPSB0aGlzLl9kIHwgMFxuICB2YXIgZSA9IHRoaXMuX2UgfCAwXG4gIHZhciBmID0gdGhpcy5fZiB8IDBcbiAgdmFyIGcgPSB0aGlzLl9nIHwgMFxuICB2YXIgaCA9IHRoaXMuX2ggfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAxNjsgKytpKSBXW2ldID0gTS5yZWFkSW50MzJCRShpICogNClcbiAgZm9yICg7IGkgPCA2NDsgKytpKSBXW2ldID0gKGdhbW1hMShXW2kgLSAyXSkgKyBXW2kgLSA3XSArIGdhbW1hMChXW2kgLSAxNV0pICsgV1tpIC0gMTZdKSB8IDBcblxuICBmb3IgKHZhciBqID0gMDsgaiA8IDY0OyArK2opIHtcbiAgICB2YXIgVDEgPSAoaCArIHNpZ21hMShlKSArIGNoKGUsIGYsIGcpICsgS1tqXSArIFdbal0pIHwgMFxuICAgIHZhciBUMiA9IChzaWdtYTAoYSkgKyBtYWooYSwgYiwgYykpIHwgMFxuXG4gICAgaCA9IGdcbiAgICBnID0gZlxuICAgIGYgPSBlXG4gICAgZSA9IChkICsgVDEpIHwgMFxuICAgIGQgPSBjXG4gICAgYyA9IGJcbiAgICBiID0gYVxuICAgIGEgPSAoVDEgKyBUMikgfCAwXG4gIH1cblxuICB0aGlzLl9hID0gKGEgKyB0aGlzLl9hKSB8IDBcbiAgdGhpcy5fYiA9IChiICsgdGhpcy5fYikgfCAwXG4gIHRoaXMuX2MgPSAoYyArIHRoaXMuX2MpIHwgMFxuICB0aGlzLl9kID0gKGQgKyB0aGlzLl9kKSB8IDBcbiAgdGhpcy5fZSA9IChlICsgdGhpcy5fZSkgfCAwXG4gIHRoaXMuX2YgPSAoZiArIHRoaXMuX2YpIHwgMFxuICB0aGlzLl9nID0gKGcgKyB0aGlzLl9nKSB8IDBcbiAgdGhpcy5faCA9IChoICsgdGhpcy5faCkgfCAwXG59XG5cblNoYTI1Ni5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDMyKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IsIDQpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2MsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lLCAxNilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZiwgMjApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2csIDI0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9oLCAyOClcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTI1NlxuIiwidmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIEhhc2ggPSByZXF1aXJlKCcuL2hhc2gnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG5cbnZhciBLID0gW1xuICAweDQyOGEyZjk4LCAweGQ3MjhhZTIyLCAweDcxMzc0NDkxLCAweDIzZWY2NWNkLFxuICAweGI1YzBmYmNmLCAweGVjNGQzYjJmLCAweGU5YjVkYmE1LCAweDgxODlkYmJjLFxuICAweDM5NTZjMjViLCAweGYzNDhiNTM4LCAweDU5ZjExMWYxLCAweGI2MDVkMDE5LFxuICAweDkyM2Y4MmE0LCAweGFmMTk0ZjliLCAweGFiMWM1ZWQ1LCAweGRhNmQ4MTE4LFxuICAweGQ4MDdhYTk4LCAweGEzMDMwMjQyLCAweDEyODM1YjAxLCAweDQ1NzA2ZmJlLFxuICAweDI0MzE4NWJlLCAweDRlZTRiMjhjLCAweDU1MGM3ZGMzLCAweGQ1ZmZiNGUyLFxuICAweDcyYmU1ZDc0LCAweGYyN2I4OTZmLCAweDgwZGViMWZlLCAweDNiMTY5NmIxLFxuICAweDliZGMwNmE3LCAweDI1YzcxMjM1LCAweGMxOWJmMTc0LCAweGNmNjkyNjk0LFxuICAweGU0OWI2OWMxLCAweDllZjE0YWQyLCAweGVmYmU0Nzg2LCAweDM4NGYyNWUzLFxuICAweDBmYzE5ZGM2LCAweDhiOGNkNWI1LCAweDI0MGNhMWNjLCAweDc3YWM5YzY1LFxuICAweDJkZTkyYzZmLCAweDU5MmIwMjc1LCAweDRhNzQ4NGFhLCAweDZlYTZlNDgzLFxuICAweDVjYjBhOWRjLCAweGJkNDFmYmQ0LCAweDc2Zjk4OGRhLCAweDgzMTE1M2I1LFxuICAweDk4M2U1MTUyLCAweGVlNjZkZmFiLCAweGE4MzFjNjZkLCAweDJkYjQzMjEwLFxuICAweGIwMDMyN2M4LCAweDk4ZmIyMTNmLCAweGJmNTk3ZmM3LCAweGJlZWYwZWU0LFxuICAweGM2ZTAwYmYzLCAweDNkYTg4ZmMyLCAweGQ1YTc5MTQ3LCAweDkzMGFhNzI1LFxuICAweDA2Y2E2MzUxLCAweGUwMDM4MjZmLCAweDE0MjkyOTY3LCAweDBhMGU2ZTcwLFxuICAweDI3YjcwYTg1LCAweDQ2ZDIyZmZjLCAweDJlMWIyMTM4LCAweDVjMjZjOTI2LFxuICAweDRkMmM2ZGZjLCAweDVhYzQyYWVkLCAweDUzMzgwZDEzLCAweDlkOTViM2RmLFxuICAweDY1MGE3MzU0LCAweDhiYWY2M2RlLCAweDc2NmEwYWJiLCAweDNjNzdiMmE4LFxuICAweDgxYzJjOTJlLCAweDQ3ZWRhZWU2LCAweDkyNzIyYzg1LCAweDE0ODIzNTNiLFxuICAweGEyYmZlOGExLCAweDRjZjEwMzY0LCAweGE4MWE2NjRiLCAweGJjNDIzMDAxLFxuICAweGMyNGI4YjcwLCAweGQwZjg5NzkxLCAweGM3NmM1MWEzLCAweDA2NTRiZTMwLFxuICAweGQxOTJlODE5LCAweGQ2ZWY1MjE4LCAweGQ2OTkwNjI0LCAweDU1NjVhOTEwLFxuICAweGY0MGUzNTg1LCAweDU3NzEyMDJhLCAweDEwNmFhMDcwLCAweDMyYmJkMWI4LFxuICAweDE5YTRjMTE2LCAweGI4ZDJkMGM4LCAweDFlMzc2YzA4LCAweDUxNDFhYjUzLFxuICAweDI3NDg3NzRjLCAweGRmOGVlYjk5LCAweDM0YjBiY2I1LCAweGUxOWI0OGE4LFxuICAweDM5MWMwY2IzLCAweGM1Yzk1YTYzLCAweDRlZDhhYTRhLCAweGUzNDE4YWNiLFxuICAweDViOWNjYTRmLCAweDc3NjNlMzczLCAweDY4MmU2ZmYzLCAweGQ2YjJiOGEzLFxuICAweDc0OGY4MmVlLCAweDVkZWZiMmZjLCAweDc4YTU2MzZmLCAweDQzMTcyZjYwLFxuICAweDg0Yzg3ODE0LCAweGExZjBhYjcyLCAweDhjYzcwMjA4LCAweDFhNjQzOWVjLFxuICAweDkwYmVmZmZhLCAweDIzNjMxZTI4LCAweGE0NTA2Y2ViLCAweGRlODJiZGU5LFxuICAweGJlZjlhM2Y3LCAweGIyYzY3OTE1LCAweGM2NzE3OGYyLCAweGUzNzI1MzJiLFxuICAweGNhMjczZWNlLCAweGVhMjY2MTljLCAweGQxODZiOGM3LCAweDIxYzBjMjA3LFxuICAweGVhZGE3ZGQ2LCAweGNkZTBlYjFlLCAweGY1N2Q0ZjdmLCAweGVlNmVkMTc4LFxuICAweDA2ZjA2N2FhLCAweDcyMTc2ZmJhLCAweDBhNjM3ZGM1LCAweGEyYzg5OGE2LFxuICAweDExM2Y5ODA0LCAweGJlZjkwZGFlLCAweDFiNzEwYjM1LCAweDEzMWM0NzFiLFxuICAweDI4ZGI3N2Y1LCAweDIzMDQ3ZDg0LCAweDMyY2FhYjdiLCAweDQwYzcyNDkzLFxuICAweDNjOWViZTBhLCAweDE1YzliZWJjLCAweDQzMWQ2N2M0LCAweDljMTAwZDRjLFxuICAweDRjYzVkNGJlLCAweGNiM2U0MmI2LCAweDU5N2YyOTljLCAweGZjNjU3ZTJhLFxuICAweDVmY2I2ZmFiLCAweDNhZDZmYWVjLCAweDZjNDQxOThjLCAweDRhNDc1ODE3XG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDE2MClcblxuZnVuY3Rpb24gU2hhNTEyICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgMTI4LCAxMTIpXG59XG5cbmluaGVyaXRzKFNoYTUxMiwgSGFzaClcblxuU2hhNTEyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9haCA9IDB4NmEwOWU2NjdcbiAgdGhpcy5fYmggPSAweGJiNjdhZTg1XG4gIHRoaXMuX2NoID0gMHgzYzZlZjM3MlxuICB0aGlzLl9kaCA9IDB4YTU0ZmY1M2FcbiAgdGhpcy5fZWggPSAweDUxMGU1MjdmXG4gIHRoaXMuX2ZoID0gMHg5YjA1Njg4Y1xuICB0aGlzLl9naCA9IDB4MWY4M2Q5YWJcbiAgdGhpcy5faGggPSAweDViZTBjZDE5XG5cbiAgdGhpcy5fYWwgPSAweGYzYmNjOTA4XG4gIHRoaXMuX2JsID0gMHg4NGNhYTczYlxuICB0aGlzLl9jbCA9IDB4ZmU5NGY4MmJcbiAgdGhpcy5fZGwgPSAweDVmMWQzNmYxXG4gIHRoaXMuX2VsID0gMHhhZGU2ODJkMVxuICB0aGlzLl9mbCA9IDB4MmIzZTZjMWZcbiAgdGhpcy5fZ2wgPSAweGZiNDFiZDZiXG4gIHRoaXMuX2hsID0gMHgxMzdlMjE3OVxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIENoICh4LCB5LCB6KSB7XG4gIHJldHVybiB6IF4gKHggJiAoeSBeIHopKVxufVxuXG5mdW5jdGlvbiBtYWogKHgsIHksIHopIHtcbiAgcmV0dXJuICh4ICYgeSkgfCAoeiAmICh4IHwgeSkpXG59XG5cbmZ1bmN0aW9uIHNpZ21hMCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAyOCB8IHhsIDw8IDQpIF4gKHhsID4+PiAyIHwgeCA8PCAzMCkgXiAoeGwgPj4+IDcgfCB4IDw8IDI1KVxufVxuXG5mdW5jdGlvbiBzaWdtYTEgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMTQgfCB4bCA8PCAxOCkgXiAoeCA+Pj4gMTggfCB4bCA8PCAxNCkgXiAoeGwgPj4+IDkgfCB4IDw8IDIzKVxufVxuXG5mdW5jdGlvbiBHYW1tYTAgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcpXG59XG5cbmZ1bmN0aW9uIEdhbW1hMGwgKHgsIHhsKSB7XG4gIHJldHVybiAoeCA+Pj4gMSB8IHhsIDw8IDMxKSBeICh4ID4+PiA4IHwgeGwgPDwgMjQpIF4gKHggPj4+IDcgfCB4bCA8PCAyNSlcbn1cblxuZnVuY3Rpb24gR2FtbWExICh4LCB4bCkge1xuICByZXR1cm4gKHggPj4+IDE5IHwgeGwgPDwgMTMpIF4gKHhsID4+PiAyOSB8IHggPDwgMykgXiAoeCA+Pj4gNilcbn1cblxuZnVuY3Rpb24gR2FtbWExbCAoeCwgeGwpIHtcbiAgcmV0dXJuICh4ID4+PiAxOSB8IHhsIDw8IDEzKSBeICh4bCA+Pj4gMjkgfCB4IDw8IDMpIF4gKHggPj4+IDYgfCB4bCA8PCAyNilcbn1cblxuZnVuY3Rpb24gZ2V0Q2FycnkgKGEsIGIpIHtcbiAgcmV0dXJuIChhID4+PiAwKSA8IChiID4+PiAwKSA/IDEgOiAwXG59XG5cblNoYTUxMi5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhaCA9IHRoaXMuX2FoIHwgMFxuICB2YXIgYmggPSB0aGlzLl9iaCB8IDBcbiAgdmFyIGNoID0gdGhpcy5fY2ggfCAwXG4gIHZhciBkaCA9IHRoaXMuX2RoIHwgMFxuICB2YXIgZWggPSB0aGlzLl9laCB8IDBcbiAgdmFyIGZoID0gdGhpcy5fZmggfCAwXG4gIHZhciBnaCA9IHRoaXMuX2doIHwgMFxuICB2YXIgaGggPSB0aGlzLl9oaCB8IDBcblxuICB2YXIgYWwgPSB0aGlzLl9hbCB8IDBcbiAgdmFyIGJsID0gdGhpcy5fYmwgfCAwXG4gIHZhciBjbCA9IHRoaXMuX2NsIHwgMFxuICB2YXIgZGwgPSB0aGlzLl9kbCB8IDBcbiAgdmFyIGVsID0gdGhpcy5fZWwgfCAwXG4gIHZhciBmbCA9IHRoaXMuX2ZsIHwgMFxuICB2YXIgZ2wgPSB0aGlzLl9nbCB8IDBcbiAgdmFyIGhsID0gdGhpcy5faGwgfCAwXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCAzMjsgaSArPSAyKSB7XG4gICAgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gICAgV1tpICsgMV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0ICsgNClcbiAgfVxuICBmb3IgKDsgaSA8IDE2MDsgaSArPSAyKSB7XG4gICAgdmFyIHhoID0gV1tpIC0gMTUgKiAyXVxuICAgIHZhciB4bCA9IFdbaSAtIDE1ICogMiArIDFdXG4gICAgdmFyIGdhbW1hMCA9IEdhbW1hMCh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMGwgPSBHYW1tYTBsKHhsLCB4aClcblxuICAgIHhoID0gV1tpIC0gMiAqIDJdXG4gICAgeGwgPSBXW2kgLSAyICogMiArIDFdXG4gICAgdmFyIGdhbW1hMSA9IEdhbW1hMSh4aCwgeGwpXG4gICAgdmFyIGdhbW1hMWwgPSBHYW1tYTFsKHhsLCB4aClcblxuICAgIC8vIFdbaV0gPSBnYW1tYTAgKyBXW2kgLSA3XSArIGdhbW1hMSArIFdbaSAtIDE2XVxuICAgIHZhciBXaTdoID0gV1tpIC0gNyAqIDJdXG4gICAgdmFyIFdpN2wgPSBXW2kgLSA3ICogMiArIDFdXG5cbiAgICB2YXIgV2kxNmggPSBXW2kgLSAxNiAqIDJdXG4gICAgdmFyIFdpMTZsID0gV1tpIC0gMTYgKiAyICsgMV1cblxuICAgIHZhciBXaWwgPSAoZ2FtbWEwbCArIFdpN2wpIHwgMFxuICAgIHZhciBXaWggPSAoZ2FtbWEwICsgV2k3aCArIGdldENhcnJ5KFdpbCwgZ2FtbWEwbCkpIHwgMFxuICAgIFdpbCA9IChXaWwgKyBnYW1tYTFsKSB8IDBcbiAgICBXaWggPSAoV2loICsgZ2FtbWExICsgZ2V0Q2FycnkoV2lsLCBnYW1tYTFsKSkgfCAwXG4gICAgV2lsID0gKFdpbCArIFdpMTZsKSB8IDBcbiAgICBXaWggPSAoV2loICsgV2kxNmggKyBnZXRDYXJyeShXaWwsIFdpMTZsKSkgfCAwXG5cbiAgICBXW2ldID0gV2loXG4gICAgV1tpICsgMV0gPSBXaWxcbiAgfVxuXG4gIGZvciAodmFyIGogPSAwOyBqIDwgMTYwOyBqICs9IDIpIHtcbiAgICBXaWggPSBXW2pdXG4gICAgV2lsID0gV1tqICsgMV1cblxuICAgIHZhciBtYWpoID0gbWFqKGFoLCBiaCwgY2gpXG4gICAgdmFyIG1hamwgPSBtYWooYWwsIGJsLCBjbClcblxuICAgIHZhciBzaWdtYTBoID0gc2lnbWEwKGFoLCBhbClcbiAgICB2YXIgc2lnbWEwbCA9IHNpZ21hMChhbCwgYWgpXG4gICAgdmFyIHNpZ21hMWggPSBzaWdtYTEoZWgsIGVsKVxuICAgIHZhciBzaWdtYTFsID0gc2lnbWExKGVsLCBlaClcblxuICAgIC8vIHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tqXSArIFdbal1cbiAgICB2YXIgS2loID0gS1tqXVxuICAgIHZhciBLaWwgPSBLW2ogKyAxXVxuXG4gICAgdmFyIGNoaCA9IENoKGVoLCBmaCwgZ2gpXG4gICAgdmFyIGNobCA9IENoKGVsLCBmbCwgZ2wpXG5cbiAgICB2YXIgdDFsID0gKGhsICsgc2lnbWExbCkgfCAwXG4gICAgdmFyIHQxaCA9IChoaCArIHNpZ21hMWggKyBnZXRDYXJyeSh0MWwsIGhsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIGNobCkgfCAwXG4gICAgdDFoID0gKHQxaCArIGNoaCArIGdldENhcnJ5KHQxbCwgY2hsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIEtpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIEtpaCArIGdldENhcnJ5KHQxbCwgS2lsKSkgfCAwXG4gICAgdDFsID0gKHQxbCArIFdpbCkgfCAwXG4gICAgdDFoID0gKHQxaCArIFdpaCArIGdldENhcnJ5KHQxbCwgV2lsKSkgfCAwXG5cbiAgICAvLyB0MiA9IHNpZ21hMCArIG1halxuICAgIHZhciB0MmwgPSAoc2lnbWEwbCArIG1hamwpIHwgMFxuICAgIHZhciB0MmggPSAoc2lnbWEwaCArIG1hamggKyBnZXRDYXJyeSh0MmwsIHNpZ21hMGwpKSB8IDBcblxuICAgIGhoID0gZ2hcbiAgICBobCA9IGdsXG4gICAgZ2ggPSBmaFxuICAgIGdsID0gZmxcbiAgICBmaCA9IGVoXG4gICAgZmwgPSBlbFxuICAgIGVsID0gKGRsICsgdDFsKSB8IDBcbiAgICBlaCA9IChkaCArIHQxaCArIGdldENhcnJ5KGVsLCBkbCkpIHwgMFxuICAgIGRoID0gY2hcbiAgICBkbCA9IGNsXG4gICAgY2ggPSBiaFxuICAgIGNsID0gYmxcbiAgICBiaCA9IGFoXG4gICAgYmwgPSBhbFxuICAgIGFsID0gKHQxbCArIHQybCkgfCAwXG4gICAgYWggPSAodDFoICsgdDJoICsgZ2V0Q2FycnkoYWwsIHQxbCkpIHwgMFxuICB9XG5cbiAgdGhpcy5fYWwgPSAodGhpcy5fYWwgKyBhbCkgfCAwXG4gIHRoaXMuX2JsID0gKHRoaXMuX2JsICsgYmwpIHwgMFxuICB0aGlzLl9jbCA9ICh0aGlzLl9jbCArIGNsKSB8IDBcbiAgdGhpcy5fZGwgPSAodGhpcy5fZGwgKyBkbCkgfCAwXG4gIHRoaXMuX2VsID0gKHRoaXMuX2VsICsgZWwpIHwgMFxuICB0aGlzLl9mbCA9ICh0aGlzLl9mbCArIGZsKSB8IDBcbiAgdGhpcy5fZ2wgPSAodGhpcy5fZ2wgKyBnbCkgfCAwXG4gIHRoaXMuX2hsID0gKHRoaXMuX2hsICsgaGwpIHwgMFxuXG4gIHRoaXMuX2FoID0gKHRoaXMuX2FoICsgYWggKyBnZXRDYXJyeSh0aGlzLl9hbCwgYWwpKSB8IDBcbiAgdGhpcy5fYmggPSAodGhpcy5fYmggKyBiaCArIGdldENhcnJ5KHRoaXMuX2JsLCBibCkpIHwgMFxuICB0aGlzLl9jaCA9ICh0aGlzLl9jaCArIGNoICsgZ2V0Q2FycnkodGhpcy5fY2wsIGNsKSkgfCAwXG4gIHRoaXMuX2RoID0gKHRoaXMuX2RoICsgZGggKyBnZXRDYXJyeSh0aGlzLl9kbCwgZGwpKSB8IDBcbiAgdGhpcy5fZWggPSAodGhpcy5fZWggKyBlaCArIGdldENhcnJ5KHRoaXMuX2VsLCBlbCkpIHwgMFxuICB0aGlzLl9maCA9ICh0aGlzLl9maCArIGZoICsgZ2V0Q2FycnkodGhpcy5fZmwsIGZsKSkgfCAwXG4gIHRoaXMuX2doID0gKHRoaXMuX2doICsgZ2ggKyBnZXRDYXJyeSh0aGlzLl9nbCwgZ2wpKSB8IDBcbiAgdGhpcy5faGggPSAodGhpcy5faGggKyBoaCArIGdldENhcnJ5KHRoaXMuX2hsLCBobCkpIHwgMFxufVxuXG5TaGE1MTIucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg2NClcblxuICBmdW5jdGlvbiB3cml0ZUludDY0QkUgKGgsIGwsIG9mZnNldCkge1xuICAgIEgud3JpdGVJbnQzMkJFKGgsIG9mZnNldClcbiAgICBILndyaXRlSW50MzJCRShsLCBvZmZzZXQgKyA0KVxuICB9XG5cbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2FoLCB0aGlzLl9hbCwgMClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2JoLCB0aGlzLl9ibCwgOClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2NoLCB0aGlzLl9jbCwgMTYpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9kaCwgdGhpcy5fZGwsIDI0KVxuICB3cml0ZUludDY0QkUodGhpcy5fZWgsIHRoaXMuX2VsLCAzMilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2ZoLCB0aGlzLl9mbCwgNDApXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9naCwgdGhpcy5fZ2wsIDQ4KVxuICB3cml0ZUludDY0QkUodGhpcy5faGgsIHRoaXMuX2hsLCA1NilcblxuICByZXR1cm4gSFxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFNoYTUxMlxuIiwiYXNzZXJ0Lm5vdEVxdWFsID0gbm90RXF1YWxcbmFzc2VydC5ub3RPayA9IG5vdE9rXG5hc3NlcnQuZXF1YWwgPSBlcXVhbFxuYXNzZXJ0Lm9rID0gYXNzZXJ0XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzZXJ0XG5cbmZ1bmN0aW9uIGVxdWFsIChhLCBiLCBtKSB7XG4gIGFzc2VydChhID09IGIsIG0pIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG59XG5cbmZ1bmN0aW9uIG5vdEVxdWFsIChhLCBiLCBtKSB7XG4gIGFzc2VydChhICE9IGIsIG0pIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgZXFlcWVxXG59XG5cbmZ1bmN0aW9uIG5vdE9rICh0LCBtKSB7XG4gIGFzc2VydCghdCwgbSlcbn1cblxuZnVuY3Rpb24gYXNzZXJ0ICh0LCBtKSB7XG4gIGlmICghdCkgdGhyb3cgbmV3IEVycm9yKG0gfHwgJ0Fzc2VydGlvbkVycm9yJylcbn1cbiIsIi8vIENvaW5zIHN1cHBvcnRlZCBieSBiaXRnby1iaXRjb2luanMtbGliXG5jb25zdCB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxuXG5jb25zdCBjb2lucyA9IHtcbiAgQkNIOiAnYmNoJyxcbiAgQlNWOiAnYnN2JyxcbiAgQlRDOiAnYnRjJyxcbiAgQlRHOiAnYnRnJyxcbiAgTFRDOiAnbHRjJyxcbiAgWkVDOiAnemVjJyxcbiAgREFTSDogJ2Rhc2gnLFxuICBESUdJQllURTogJ2RnYicsXG4gIERPR0VDT0lOOiAnZG9nZScsXG4gIE5BTUVDT0lOOiAnbm1jJyxcbiAgVkVSVENPSU46ICd2dGMnLFxuICBDQVBSSUNPSU46ICdjcGMnXG59XG5cbmNvaW5zLmlzQml0Y29pbiA9IGZ1bmN0aW9uIChuZXR3b3JrKSB7XG4gIHJldHVybiB0eXBlZm9yY2UudmFsdWUoY29pbnMuQlRDKShuZXR3b3JrLmNvaW4pXG59XG5cbmNvaW5zLmlzQml0Y29pbkNhc2ggPSBmdW5jdGlvbiAobmV0d29yaykge1xuICByZXR1cm4gdHlwZWZvcmNlLnZhbHVlKGNvaW5zLkJDSCkobmV0d29yay5jb2luKVxufVxuXG5jb2lucy5pc0JpdGNvaW5TViA9IGZ1bmN0aW9uIChuZXR3b3JrKSB7XG4gIHJldHVybiB0eXBlZm9yY2UudmFsdWUoY29pbnMuQlNWKShuZXR3b3JrLmNvaW4pXG59XG5cbmNvaW5zLmlzQml0Y29pbkdvbGQgPSBmdW5jdGlvbiAobmV0d29yaykge1xuICByZXR1cm4gdHlwZWZvcmNlLnZhbHVlKGNvaW5zLkJURykobmV0d29yay5jb2luKVxufVxuXG5jb2lucy5pc0xpdGVjb2luID0gZnVuY3Rpb24gKG5ldHdvcmspIHtcbiAgcmV0dXJuIHR5cGVmb3JjZS52YWx1ZShjb2lucy5MVEMpKG5ldHdvcmsuY29pbilcbn1cblxuY29pbnMuaXNaY2FzaCA9IGZ1bmN0aW9uIChuZXR3b3JrKSB7XG4gIHJldHVybiB0eXBlZm9yY2UudmFsdWUoY29pbnMuWkVDKShuZXR3b3JrLmNvaW4pXG59XG5cbmNvaW5zLmlzRGFzaCA9IGZ1bmN0aW9uIChuZXR3b3JrKSB7XG4gIHJldHVybiB0eXBlZm9yY2UudmFsdWUoY29pbnMuREFTSCkobmV0d29yay5jb2luKVxufVxuXG5jb2lucy5pc0NhcHJpY29pbiA9IGZ1bmN0aW9uIChuZXR3b3JrKSB7XG4gIHJldHVybiB0eXBlZm9yY2UudmFsdWUoY29pbnMuQ0FQUklDT0lOKShuZXR3b3JrLmNvaW4pXG59XG5cbmNvaW5zLmlzVmFsaWRDb2luID0gdHlwZWZvcmNlLm9uZU9mKFxuICBjb2lucy5pc0JpdGNvaW4sXG4gIGNvaW5zLmlzQml0Y29pbkNhc2gsXG4gIGNvaW5zLmlzQml0Y29pblNWLFxuICBjb2lucy5pc0JpdGNvaW5Hb2xkLFxuICBjb2lucy5pc0xpdGVjb2luLFxuICBjb2lucy5pc1pjYXNoLFxuICBjb2lucy5pc0Rhc2gsXG4gIGNvaW5zLmlzQ2Fwcmljb2luXG4pXG5cbm1vZHVsZS5leHBvcnRzID0gY29pbnNcbiIsIid1c2Ugc3RyaWN0J1xudmFyIGluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKVxudmFyIExlZ2FjeSA9IHJlcXVpcmUoJy4vbGVnYWN5JylcbnZhciBCYXNlID0gcmVxdWlyZSgnY2lwaGVyLWJhc2UnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgbWQ1ID0gcmVxdWlyZSgnY3JlYXRlLWhhc2gvbWQ1JylcbnZhciBSSVBFTUQxNjAgPSByZXF1aXJlKCdyaXBlbWQxNjAnKVxuXG52YXIgc2hhID0gcmVxdWlyZSgnc2hhLmpzJylcblxudmFyIFpFUk9TID0gQnVmZmVyLmFsbG9jKDEyOClcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB2YXIgYmxvY2tzaXplID0gKGFsZyA9PT0gJ3NoYTUxMicgfHwgYWxnID09PSAnc2hhMzg0JykgPyAxMjggOiA2NFxuXG4gIHRoaXMuX2FsZyA9IGFsZ1xuICB0aGlzLl9rZXkgPSBrZXlcbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICB2YXIgaGFzaCA9IGFsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEoYWxnKVxuICAgIGtleSA9IGhhc2gudXBkYXRlKGtleSkuZGlnZXN0KClcbiAgfSBlbHNlIGlmIChrZXkubGVuZ3RoIDwgYmxvY2tzaXplKSB7XG4gICAga2V5ID0gQnVmZmVyLmNvbmNhdChba2V5LCBaRVJPU10sIGJsb2Nrc2l6ZSlcbiAgfVxuXG4gIHZhciBpcGFkID0gdGhpcy5faXBhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG4gIHZhciBvcGFkID0gdGhpcy5fb3BhZCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShibG9ja3NpemUpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBibG9ja3NpemU7IGkrKykge1xuICAgIGlwYWRbaV0gPSBrZXlbaV0gXiAweDM2XG4gICAgb3BhZFtpXSA9IGtleVtpXSBeIDB4NUNcbiAgfVxuICB0aGlzLl9oYXNoID0gYWxnID09PSAncm1kMTYwJyA/IG5ldyBSSVBFTUQxNjAoKSA6IHNoYShhbGcpXG4gIHRoaXMuX2hhc2gudXBkYXRlKGlwYWQpXG59XG5cbmluaGVyaXRzKEhtYWMsIEJhc2UpXG5cbkhtYWMucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICB0aGlzLl9oYXNoLnVwZGF0ZShkYXRhKVxufVxuXG5IbWFjLnByb3RvdHlwZS5fZmluYWwgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBoID0gdGhpcy5faGFzaC5kaWdlc3QoKVxuICB2YXIgaGFzaCA9IHRoaXMuX2FsZyA9PT0gJ3JtZDE2MCcgPyBuZXcgUklQRU1EMTYwKCkgOiBzaGEodGhpcy5fYWxnKVxuICByZXR1cm4gaGFzaC51cGRhdGUodGhpcy5fb3BhZCkudXBkYXRlKGgpLmRpZ2VzdCgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gY3JlYXRlSG1hYyAoYWxnLCBrZXkpIHtcbiAgYWxnID0gYWxnLnRvTG93ZXJDYXNlKClcbiAgaWYgKGFsZyA9PT0gJ3JtZDE2MCcgfHwgYWxnID09PSAncmlwZW1kMTYwJykge1xuICAgIHJldHVybiBuZXcgSG1hYygncm1kMTYwJywga2V5KVxuICB9XG4gIGlmIChhbGcgPT09ICdtZDUnKSB7XG4gICAgcmV0dXJuIG5ldyBMZWdhY3kobWQ1LCBrZXkpXG4gIH1cbiAgcmV0dXJuIG5ldyBIbWFjKGFsZywga2V5KVxufVxuIiwiLy8gKHB1YmxpYykgQ29uc3RydWN0b3JcbmZ1bmN0aW9uIEJpZ0ludGVnZXIoYSwgYiwgYykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQmlnSW50ZWdlcikpXG4gICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGEsIGIsIGMpXG5cbiAgaWYgKGEgIT0gbnVsbCkge1xuICAgIGlmIChcIm51bWJlclwiID09IHR5cGVvZiBhKSB0aGlzLmZyb21OdW1iZXIoYSwgYiwgYylcbiAgICBlbHNlIGlmIChiID09IG51bGwgJiYgXCJzdHJpbmdcIiAhPSB0eXBlb2YgYSkgdGhpcy5mcm9tU3RyaW5nKGEsIDI1NilcbiAgICBlbHNlIHRoaXMuZnJvbVN0cmluZyhhLCBiKVxuICB9XG59XG5cbnZhciBwcm90byA9IEJpZ0ludGVnZXIucHJvdG90eXBlXG5cbi8vIGR1Y2stdHlwZWQgaXNCaWdJbnRlZ2VyXG5wcm90by5fX2JpZ2kgPSByZXF1aXJlKCcuLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uXG5CaWdJbnRlZ2VyLmlzQmlnSW50ZWdlciA9IGZ1bmN0aW9uIChvYmosIGNoZWNrX3Zlcikge1xuICByZXR1cm4gb2JqICYmIG9iai5fX2JpZ2kgJiYgKCFjaGVja192ZXIgfHwgb2JqLl9fYmlnaSA9PT0gcHJvdG8uX19iaWdpKVxufVxuXG4vLyBCaXRzIHBlciBkaWdpdFxudmFyIGRiaXRzXG5cbi8vIGFtOiBDb21wdXRlIHdfaiArPSAoeCp0aGlzX2kpLCBwcm9wYWdhdGUgY2Fycmllcyxcbi8vIGMgaXMgaW5pdGlhbCBjYXJyeSwgcmV0dXJucyBmaW5hbCBjYXJyeS5cbi8vIGMgPCAzKmR2YWx1ZSwgeCA8IDIqZHZhbHVlLCB0aGlzX2kgPCBkdmFsdWVcbi8vIFdlIG5lZWQgdG8gc2VsZWN0IHRoZSBmYXN0ZXN0IG9uZSB0aGF0IHdvcmtzIGluIHRoaXMgZW52aXJvbm1lbnQuXG5cbi8vIGFtMTogdXNlIGEgc2luZ2xlIG11bHQgYW5kIGRpdmlkZSB0byBnZXQgdGhlIGhpZ2ggYml0cyxcbi8vIG1heCBkaWdpdCBiaXRzIHNob3VsZCBiZSAyNiBiZWNhdXNlXG4vLyBtYXggaW50ZXJuYWwgdmFsdWUgPSAyKmR2YWx1ZV4yLTIqZHZhbHVlICg8IDJeNTMpXG5mdW5jdGlvbiBhbTEoaSwgeCwgdywgaiwgYywgbikge1xuICB3aGlsZSAoLS1uID49IDApIHtcbiAgICB2YXIgdiA9IHggKiB0aGlzW2krK10gKyB3W2pdICsgY1xuICAgIGMgPSBNYXRoLmZsb29yKHYgLyAweDQwMDAwMDApXG4gICAgd1tqKytdID0gdiAmIDB4M2ZmZmZmZlxuICB9XG4gIHJldHVybiBjXG59XG4vLyBhbTIgYXZvaWRzIGEgYmlnIG11bHQtYW5kLWV4dHJhY3QgY29tcGxldGVseS5cbi8vIE1heCBkaWdpdCBiaXRzIHNob3VsZCBiZSA8PSAzMCBiZWNhdXNlIHdlIGRvIGJpdHdpc2Ugb3BzXG4vLyBvbiB2YWx1ZXMgdXAgdG8gMipoZHZhbHVlXjItaGR2YWx1ZS0xICg8IDJeMzEpXG5mdW5jdGlvbiBhbTIoaSwgeCwgdywgaiwgYywgbikge1xuICB2YXIgeGwgPSB4ICYgMHg3ZmZmLFxuICAgIHhoID0geCA+PiAxNVxuICB3aGlsZSAoLS1uID49IDApIHtcbiAgICB2YXIgbCA9IHRoaXNbaV0gJiAweDdmZmZcbiAgICB2YXIgaCA9IHRoaXNbaSsrXSA+PiAxNVxuICAgIHZhciBtID0geGggKiBsICsgaCAqIHhsXG4gICAgbCA9IHhsICogbCArICgobSAmIDB4N2ZmZikgPDwgMTUpICsgd1tqXSArIChjICYgMHgzZmZmZmZmZilcbiAgICBjID0gKGwgPj4+IDMwKSArIChtID4+PiAxNSkgKyB4aCAqIGggKyAoYyA+Pj4gMzApXG4gICAgd1tqKytdID0gbCAmIDB4M2ZmZmZmZmZcbiAgfVxuICByZXR1cm4gY1xufVxuLy8gQWx0ZXJuYXRlbHksIHNldCBtYXggZGlnaXQgYml0cyB0byAyOCBzaW5jZSBzb21lXG4vLyBicm93c2VycyBzbG93IGRvd24gd2hlbiBkZWFsaW5nIHdpdGggMzItYml0IG51bWJlcnMuXG5mdW5jdGlvbiBhbTMoaSwgeCwgdywgaiwgYywgbikge1xuICB2YXIgeGwgPSB4ICYgMHgzZmZmLFxuICAgIHhoID0geCA+PiAxNFxuICB3aGlsZSAoLS1uID49IDApIHtcbiAgICB2YXIgbCA9IHRoaXNbaV0gJiAweDNmZmZcbiAgICB2YXIgaCA9IHRoaXNbaSsrXSA+PiAxNFxuICAgIHZhciBtID0geGggKiBsICsgaCAqIHhsXG4gICAgbCA9IHhsICogbCArICgobSAmIDB4M2ZmZikgPDwgMTQpICsgd1tqXSArIGNcbiAgICBjID0gKGwgPj4gMjgpICsgKG0gPj4gMTQpICsgeGggKiBoXG4gICAgd1tqKytdID0gbCAmIDB4ZmZmZmZmZlxuICB9XG4gIHJldHVybiBjXG59XG5cbi8vIHd0Zj9cbkJpZ0ludGVnZXIucHJvdG90eXBlLmFtID0gYW0xXG5kYml0cyA9IDI2XG5cbkJpZ0ludGVnZXIucHJvdG90eXBlLkRCID0gZGJpdHNcbkJpZ0ludGVnZXIucHJvdG90eXBlLkRNID0gKCgxIDw8IGRiaXRzKSAtIDEpXG52YXIgRFYgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5EViA9ICgxIDw8IGRiaXRzKVxuXG52YXIgQklfRlAgPSA1MlxuQmlnSW50ZWdlci5wcm90b3R5cGUuRlYgPSBNYXRoLnBvdygyLCBCSV9GUClcbkJpZ0ludGVnZXIucHJvdG90eXBlLkYxID0gQklfRlAgLSBkYml0c1xuQmlnSW50ZWdlci5wcm90b3R5cGUuRjIgPSAyICogZGJpdHMgLSBCSV9GUFxuXG4vLyBEaWdpdCBjb252ZXJzaW9uc1xudmFyIEJJX1JNID0gXCIwMTIzNDU2Nzg5YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpcIlxudmFyIEJJX1JDID0gbmV3IEFycmF5KClcbnZhciByciwgdnZcbnJyID0gXCIwXCIuY2hhckNvZGVBdCgwKVxuZm9yICh2diA9IDA7IHZ2IDw9IDk7ICsrdnYpIEJJX1JDW3JyKytdID0gdnZcbnJyID0gXCJhXCIuY2hhckNvZGVBdCgwKVxuZm9yICh2diA9IDEwOyB2diA8IDM2OyArK3Z2KSBCSV9SQ1tycisrXSA9IHZ2XG5yciA9IFwiQVwiLmNoYXJDb2RlQXQoMClcbmZvciAodnYgPSAxMDsgdnYgPCAzNjsgKyt2dikgQklfUkNbcnIrK10gPSB2dlxuXG5mdW5jdGlvbiBpbnQyY2hhcihuKSB7XG4gIHJldHVybiBCSV9STS5jaGFyQXQobilcbn1cblxuZnVuY3Rpb24gaW50QXQocywgaSkge1xuICB2YXIgYyA9IEJJX1JDW3MuY2hhckNvZGVBdChpKV1cbiAgcmV0dXJuIChjID09IG51bGwpID8gLTEgOiBjXG59XG5cbi8vIChwcm90ZWN0ZWQpIGNvcHkgdGhpcyB0byByXG5mdW5jdGlvbiBibnBDb3B5VG8ocikge1xuICBmb3IgKHZhciBpID0gdGhpcy50IC0gMTsgaSA+PSAwOyAtLWkpIHJbaV0gPSB0aGlzW2ldXG4gIHIudCA9IHRoaXMudFxuICByLnMgPSB0aGlzLnNcbn1cblxuLy8gKHByb3RlY3RlZCkgc2V0IGZyb20gaW50ZWdlciB2YWx1ZSB4LCAtRFYgPD0geCA8IERWXG5mdW5jdGlvbiBibnBGcm9tSW50KHgpIHtcbiAgdGhpcy50ID0gMVxuICB0aGlzLnMgPSAoeCA8IDApID8gLTEgOiAwXG4gIGlmICh4ID4gMCkgdGhpc1swXSA9IHhcbiAgZWxzZSBpZiAoeCA8IC0xKSB0aGlzWzBdID0geCArIERWXG4gIGVsc2UgdGhpcy50ID0gMFxufVxuXG4vLyByZXR1cm4gYmlnaW50IGluaXRpYWxpemVkIHRvIHZhbHVlXG5mdW5jdGlvbiBuYnYoaSkge1xuICB2YXIgciA9IG5ldyBCaWdJbnRlZ2VyKClcbiAgci5mcm9tSW50KGkpXG4gIHJldHVybiByXG59XG5cbi8vIChwcm90ZWN0ZWQpIHNldCBmcm9tIHN0cmluZyBhbmQgcmFkaXhcbmZ1bmN0aW9uIGJucEZyb21TdHJpbmcocywgYikge1xuICB2YXIgc2VsZiA9IHRoaXNcblxuICB2YXIga1xuICBpZiAoYiA9PSAxNikgayA9IDRcbiAgZWxzZSBpZiAoYiA9PSA4KSBrID0gM1xuICBlbHNlIGlmIChiID09IDI1NikgayA9IDg7IC8vIGJ5dGUgYXJyYXlcbiAgZWxzZSBpZiAoYiA9PSAyKSBrID0gMVxuICBlbHNlIGlmIChiID09IDMyKSBrID0gNVxuICBlbHNlIGlmIChiID09IDQpIGsgPSAyXG4gIGVsc2Uge1xuICAgIHNlbGYuZnJvbVJhZGl4KHMsIGIpXG4gICAgcmV0dXJuXG4gIH1cbiAgc2VsZi50ID0gMFxuICBzZWxmLnMgPSAwXG4gIHZhciBpID0gcy5sZW5ndGgsXG4gICAgbWkgPSBmYWxzZSxcbiAgICBzaCA9IDBcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgdmFyIHggPSAoayA9PSA4KSA/IHNbaV0gJiAweGZmIDogaW50QXQocywgaSlcbiAgICBpZiAoeCA8IDApIHtcbiAgICAgIGlmIChzLmNoYXJBdChpKSA9PSBcIi1cIikgbWkgPSB0cnVlXG4gICAgICBjb250aW51ZVxuICAgIH1cbiAgICBtaSA9IGZhbHNlXG4gICAgaWYgKHNoID09IDApXG4gICAgICBzZWxmW3NlbGYudCsrXSA9IHhcbiAgICBlbHNlIGlmIChzaCArIGsgPiBzZWxmLkRCKSB7XG4gICAgICBzZWxmW3NlbGYudCAtIDFdIHw9ICh4ICYgKCgxIDw8IChzZWxmLkRCIC0gc2gpKSAtIDEpKSA8PCBzaFxuICAgICAgc2VsZltzZWxmLnQrK10gPSAoeCA+PiAoc2VsZi5EQiAtIHNoKSlcbiAgICB9IGVsc2VcbiAgICAgIHNlbGZbc2VsZi50IC0gMV0gfD0geCA8PCBzaFxuICAgIHNoICs9IGtcbiAgICBpZiAoc2ggPj0gc2VsZi5EQikgc2ggLT0gc2VsZi5EQlxuICB9XG4gIGlmIChrID09IDggJiYgKHNbMF0gJiAweDgwKSAhPSAwKSB7XG4gICAgc2VsZi5zID0gLTFcbiAgICBpZiAoc2ggPiAwKSBzZWxmW3NlbGYudCAtIDFdIHw9ICgoMSA8PCAoc2VsZi5EQiAtIHNoKSkgLSAxKSA8PCBzaFxuICB9XG4gIHNlbGYuY2xhbXAoKVxuICBpZiAobWkpIEJpZ0ludGVnZXIuWkVSTy5zdWJUbyhzZWxmLCBzZWxmKVxufVxuXG4vLyAocHJvdGVjdGVkKSBjbGFtcCBvZmYgZXhjZXNzIGhpZ2ggd29yZHNcbmZ1bmN0aW9uIGJucENsYW1wKCkge1xuICB2YXIgYyA9IHRoaXMucyAmIHRoaXMuRE1cbiAgd2hpbGUgKHRoaXMudCA+IDAgJiYgdGhpc1t0aGlzLnQgLSAxXSA9PSBjKS0tdGhpcy50XG59XG5cbi8vIChwdWJsaWMpIHJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gaW4gZ2l2ZW4gcmFkaXhcbmZ1bmN0aW9uIGJuVG9TdHJpbmcoYikge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgaWYgKHNlbGYucyA8IDApIHJldHVybiBcIi1cIiArIHNlbGYubmVnYXRlKClcbiAgICAudG9TdHJpbmcoYilcbiAgdmFyIGtcbiAgaWYgKGIgPT0gMTYpIGsgPSA0XG4gIGVsc2UgaWYgKGIgPT0gOCkgayA9IDNcbiAgZWxzZSBpZiAoYiA9PSAyKSBrID0gMVxuICBlbHNlIGlmIChiID09IDMyKSBrID0gNVxuICBlbHNlIGlmIChiID09IDQpIGsgPSAyXG4gIGVsc2UgcmV0dXJuIHNlbGYudG9SYWRpeChiKVxuICB2YXIga20gPSAoMSA8PCBrKSAtIDEsXG4gICAgZCwgbSA9IGZhbHNlLFxuICAgIHIgPSBcIlwiLFxuICAgIGkgPSBzZWxmLnRcbiAgdmFyIHAgPSBzZWxmLkRCIC0gKGkgKiBzZWxmLkRCKSAlIGtcbiAgaWYgKGktLSA+IDApIHtcbiAgICBpZiAocCA8IHNlbGYuREIgJiYgKGQgPSBzZWxmW2ldID4+IHApID4gMCkge1xuICAgICAgbSA9IHRydWVcbiAgICAgIHIgPSBpbnQyY2hhcihkKVxuICAgIH1cbiAgICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgICBpZiAocCA8IGspIHtcbiAgICAgICAgZCA9IChzZWxmW2ldICYgKCgxIDw8IHApIC0gMSkpIDw8IChrIC0gcClcbiAgICAgICAgZCB8PSBzZWxmWy0taV0gPj4gKHAgKz0gc2VsZi5EQiAtIGspXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkID0gKHNlbGZbaV0gPj4gKHAgLT0gaykpICYga21cbiAgICAgICAgaWYgKHAgPD0gMCkge1xuICAgICAgICAgIHAgKz0gc2VsZi5EQlxuICAgICAgICAgIC0taVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZCA+IDApIG0gPSB0cnVlXG4gICAgICBpZiAobSkgciArPSBpbnQyY2hhcihkKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbSA/IHIgOiBcIjBcIlxufVxuXG4vLyAocHVibGljKSAtdGhpc1xuZnVuY3Rpb24gYm5OZWdhdGUoKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8odGhpcywgcilcbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgfHRoaXN8XG5mdW5jdGlvbiBibkFicygpIHtcbiAgcmV0dXJuICh0aGlzLnMgPCAwKSA/IHRoaXMubmVnYXRlKCkgOiB0aGlzXG59XG5cbi8vIChwdWJsaWMpIHJldHVybiArIGlmIHRoaXMgPiBhLCAtIGlmIHRoaXMgPCBhLCAwIGlmIGVxdWFsXG5mdW5jdGlvbiBibkNvbXBhcmVUbyhhKSB7XG4gIHZhciByID0gdGhpcy5zIC0gYS5zXG4gIGlmIChyICE9IDApIHJldHVybiByXG4gIHZhciBpID0gdGhpcy50XG4gIHIgPSBpIC0gYS50XG4gIGlmIChyICE9IDApIHJldHVybiAodGhpcy5zIDwgMCkgPyAtciA6IHJcbiAgd2hpbGUgKC0taSA+PSAwKVxuICAgIGlmICgociA9IHRoaXNbaV0gLSBhW2ldKSAhPSAwKSByZXR1cm4gclxuICByZXR1cm4gMFxufVxuXG4vLyByZXR1cm5zIGJpdCBsZW5ndGggb2YgdGhlIGludGVnZXIgeFxuZnVuY3Rpb24gbmJpdHMoeCkge1xuICB2YXIgciA9IDEsXG4gICAgdFxuICBpZiAoKHQgPSB4ID4+PiAxNikgIT0gMCkge1xuICAgIHggPSB0XG4gICAgciArPSAxNlxuICB9XG4gIGlmICgodCA9IHggPj4gOCkgIT0gMCkge1xuICAgIHggPSB0XG4gICAgciArPSA4XG4gIH1cbiAgaWYgKCh0ID0geCA+PiA0KSAhPSAwKSB7XG4gICAgeCA9IHRcbiAgICByICs9IDRcbiAgfVxuICBpZiAoKHQgPSB4ID4+IDIpICE9IDApIHtcbiAgICB4ID0gdFxuICAgIHIgKz0gMlxuICB9XG4gIGlmICgodCA9IHggPj4gMSkgIT0gMCkge1xuICAgIHggPSB0XG4gICAgciArPSAxXG4gIH1cbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgcmV0dXJuIHRoZSBudW1iZXIgb2YgYml0cyBpbiBcInRoaXNcIlxuZnVuY3Rpb24gYm5CaXRMZW5ndGgoKSB7XG4gIGlmICh0aGlzLnQgPD0gMCkgcmV0dXJuIDBcbiAgcmV0dXJuIHRoaXMuREIgKiAodGhpcy50IC0gMSkgKyBuYml0cyh0aGlzW3RoaXMudCAtIDFdIF4gKHRoaXMucyAmIHRoaXMuRE0pKVxufVxuXG4vLyAocHVibGljKSByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBpbiBcInRoaXNcIlxuZnVuY3Rpb24gYm5CeXRlTGVuZ3RoKCkge1xuICByZXR1cm4gdGhpcy5iaXRMZW5ndGgoKSA+PiAzXG59XG5cbi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIDw8IG4qREJcbmZ1bmN0aW9uIGJucERMU2hpZnRUbyhuLCByKSB7XG4gIHZhciBpXG4gIGZvciAoaSA9IHRoaXMudCAtIDE7IGkgPj0gMDsgLS1pKSByW2kgKyBuXSA9IHRoaXNbaV1cbiAgZm9yIChpID0gbiAtIDE7IGkgPj0gMDsgLS1pKSByW2ldID0gMFxuICByLnQgPSB0aGlzLnQgKyBuXG4gIHIucyA9IHRoaXMuc1xufVxuXG4vLyAocHJvdGVjdGVkKSByID0gdGhpcyA+PiBuKkRCXG5mdW5jdGlvbiBibnBEUlNoaWZ0VG8obiwgcikge1xuICBmb3IgKHZhciBpID0gbjsgaSA8IHRoaXMudDsgKytpKSByW2kgLSBuXSA9IHRoaXNbaV1cbiAgci50ID0gTWF0aC5tYXgodGhpcy50IC0gbiwgMClcbiAgci5zID0gdGhpcy5zXG59XG5cbi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIDw8IG5cbmZ1bmN0aW9uIGJucExTaGlmdFRvKG4sIHIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBicyA9IG4gJSBzZWxmLkRCXG4gIHZhciBjYnMgPSBzZWxmLkRCIC0gYnNcbiAgdmFyIGJtID0gKDEgPDwgY2JzKSAtIDFcbiAgdmFyIGRzID0gTWF0aC5mbG9vcihuIC8gc2VsZi5EQiksXG4gICAgYyA9IChzZWxmLnMgPDwgYnMpICYgc2VsZi5ETSxcbiAgICBpXG4gIGZvciAoaSA9IHNlbGYudCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgcltpICsgZHMgKyAxXSA9IChzZWxmW2ldID4+IGNicykgfCBjXG4gICAgYyA9IChzZWxmW2ldICYgYm0pIDw8IGJzXG4gIH1cbiAgZm9yIChpID0gZHMgLSAxOyBpID49IDA7IC0taSkgcltpXSA9IDBcbiAgcltkc10gPSBjXG4gIHIudCA9IHNlbGYudCArIGRzICsgMVxuICByLnMgPSBzZWxmLnNcbiAgci5jbGFtcCgpXG59XG5cbi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzID4+IG5cbmZ1bmN0aW9uIGJucFJTaGlmdFRvKG4sIHIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHIucyA9IHNlbGYuc1xuICB2YXIgZHMgPSBNYXRoLmZsb29yKG4gLyBzZWxmLkRCKVxuICBpZiAoZHMgPj0gc2VsZi50KSB7XG4gICAgci50ID0gMFxuICAgIHJldHVyblxuICB9XG4gIHZhciBicyA9IG4gJSBzZWxmLkRCXG4gIHZhciBjYnMgPSBzZWxmLkRCIC0gYnNcbiAgdmFyIGJtID0gKDEgPDwgYnMpIC0gMVxuICByWzBdID0gc2VsZltkc10gPj4gYnNcbiAgZm9yICh2YXIgaSA9IGRzICsgMTsgaSA8IHNlbGYudDsgKytpKSB7XG4gICAgcltpIC0gZHMgLSAxXSB8PSAoc2VsZltpXSAmIGJtKSA8PCBjYnNcbiAgICByW2kgLSBkc10gPSBzZWxmW2ldID4+IGJzXG4gIH1cbiAgaWYgKGJzID4gMCkgcltzZWxmLnQgLSBkcyAtIDFdIHw9IChzZWxmLnMgJiBibSkgPDwgY2JzXG4gIHIudCA9IHNlbGYudCAtIGRzXG4gIHIuY2xhbXAoKVxufVxuXG4vLyAocHJvdGVjdGVkKSByID0gdGhpcyAtIGFcbmZ1bmN0aW9uIGJucFN1YlRvKGEsIHIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBpID0gMCxcbiAgICBjID0gMCxcbiAgICBtID0gTWF0aC5taW4oYS50LCBzZWxmLnQpXG4gIHdoaWxlIChpIDwgbSkge1xuICAgIGMgKz0gc2VsZltpXSAtIGFbaV1cbiAgICByW2krK10gPSBjICYgc2VsZi5ETVxuICAgIGMgPj49IHNlbGYuREJcbiAgfVxuICBpZiAoYS50IDwgc2VsZi50KSB7XG4gICAgYyAtPSBhLnNcbiAgICB3aGlsZSAoaSA8IHNlbGYudCkge1xuICAgICAgYyArPSBzZWxmW2ldXG4gICAgICByW2krK10gPSBjICYgc2VsZi5ETVxuICAgICAgYyA+Pj0gc2VsZi5EQlxuICAgIH1cbiAgICBjICs9IHNlbGYuc1xuICB9IGVsc2Uge1xuICAgIGMgKz0gc2VsZi5zXG4gICAgd2hpbGUgKGkgPCBhLnQpIHtcbiAgICAgIGMgLT0gYVtpXVxuICAgICAgcltpKytdID0gYyAmIHNlbGYuRE1cbiAgICAgIGMgPj49IHNlbGYuREJcbiAgICB9XG4gICAgYyAtPSBhLnNcbiAgfVxuICByLnMgPSAoYyA8IDApID8gLTEgOiAwXG4gIGlmIChjIDwgLTEpIHJbaSsrXSA9IHNlbGYuRFYgKyBjXG4gIGVsc2UgaWYgKGMgPiAwKSByW2krK10gPSBjXG4gIHIudCA9IGlcbiAgci5jbGFtcCgpXG59XG5cbi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzICogYSwgciAhPSB0aGlzLGEgKEhBQyAxNC4xMilcbi8vIFwidGhpc1wiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS5cbmZ1bmN0aW9uIGJucE11bHRpcGx5VG8oYSwgcikge1xuICB2YXIgeCA9IHRoaXMuYWJzKCksXG4gICAgeSA9IGEuYWJzKClcbiAgdmFyIGkgPSB4LnRcbiAgci50ID0gaSArIHkudFxuICB3aGlsZSAoLS1pID49IDApIHJbaV0gPSAwXG4gIGZvciAoaSA9IDA7IGkgPCB5LnQ7ICsraSkgcltpICsgeC50XSA9IHguYW0oMCwgeVtpXSwgciwgaSwgMCwgeC50KVxuICByLnMgPSAwXG4gIHIuY2xhbXAoKVxuICBpZiAodGhpcy5zICE9IGEucykgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHIsIHIpXG59XG5cbi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzXjIsIHIgIT0gdGhpcyAoSEFDIDE0LjE2KVxuZnVuY3Rpb24gYm5wU3F1YXJlVG8ocikge1xuICB2YXIgeCA9IHRoaXMuYWJzKClcbiAgdmFyIGkgPSByLnQgPSAyICogeC50XG4gIHdoaWxlICgtLWkgPj0gMCkgcltpXSA9IDBcbiAgZm9yIChpID0gMDsgaSA8IHgudCAtIDE7ICsraSkge1xuICAgIHZhciBjID0geC5hbShpLCB4W2ldLCByLCAyICogaSwgMCwgMSlcbiAgICBpZiAoKHJbaSArIHgudF0gKz0geC5hbShpICsgMSwgMiAqIHhbaV0sIHIsIDIgKiBpICsgMSwgYywgeC50IC0gaSAtIDEpKSA+PSB4LkRWKSB7XG4gICAgICByW2kgKyB4LnRdIC09IHguRFZcbiAgICAgIHJbaSArIHgudCArIDFdID0gMVxuICAgIH1cbiAgfVxuICBpZiAoci50ID4gMCkgcltyLnQgLSAxXSArPSB4LmFtKGksIHhbaV0sIHIsIDIgKiBpLCAwLCAxKVxuICByLnMgPSAwXG4gIHIuY2xhbXAoKVxufVxuXG4vLyAocHJvdGVjdGVkKSBkaXZpZGUgdGhpcyBieSBtLCBxdW90aWVudCBhbmQgcmVtYWluZGVyIHRvIHEsIHIgKEhBQyAxNC4yMClcbi8vIHIgIT0gcSwgdGhpcyAhPSBtLiAgcSBvciByIG1heSBiZSBudWxsLlxuZnVuY3Rpb24gYm5wRGl2UmVtVG8obSwgcSwgcikge1xuICB2YXIgc2VsZiA9IHRoaXNcbiAgdmFyIHBtID0gbS5hYnMoKVxuICBpZiAocG0udCA8PSAwKSByZXR1cm5cbiAgdmFyIHB0ID0gc2VsZi5hYnMoKVxuICBpZiAocHQudCA8IHBtLnQpIHtcbiAgICBpZiAocSAhPSBudWxsKSBxLmZyb21JbnQoMClcbiAgICBpZiAociAhPSBudWxsKSBzZWxmLmNvcHlUbyhyKVxuICAgIHJldHVyblxuICB9XG4gIGlmIChyID09IG51bGwpIHIgPSBuZXcgQmlnSW50ZWdlcigpXG4gIHZhciB5ID0gbmV3IEJpZ0ludGVnZXIoKSxcbiAgICB0cyA9IHNlbGYucyxcbiAgICBtcyA9IG0uc1xuICB2YXIgbnNoID0gc2VsZi5EQiAtIG5iaXRzKHBtW3BtLnQgLSAxXSk7IC8vIG5vcm1hbGl6ZSBtb2R1bHVzXG4gIGlmIChuc2ggPiAwKSB7XG4gICAgcG0ubFNoaWZ0VG8obnNoLCB5KVxuICAgIHB0LmxTaGlmdFRvKG5zaCwgcilcbiAgfSBlbHNlIHtcbiAgICBwbS5jb3B5VG8oeSlcbiAgICBwdC5jb3B5VG8ocilcbiAgfVxuICB2YXIgeXMgPSB5LnRcbiAgdmFyIHkwID0geVt5cyAtIDFdXG4gIGlmICh5MCA9PSAwKSByZXR1cm5cbiAgdmFyIHl0ID0geTAgKiAoMSA8PCBzZWxmLkYxKSArICgoeXMgPiAxKSA/IHlbeXMgLSAyXSA+PiBzZWxmLkYyIDogMClcbiAgdmFyIGQxID0gc2VsZi5GViAvIHl0LFxuICAgIGQyID0gKDEgPDwgc2VsZi5GMSkgLyB5dCxcbiAgICBlID0gMSA8PCBzZWxmLkYyXG4gIHZhciBpID0gci50LFxuICAgIGogPSBpIC0geXMsXG4gICAgdCA9IChxID09IG51bGwpID8gbmV3IEJpZ0ludGVnZXIoKSA6IHFcbiAgeS5kbFNoaWZ0VG8oaiwgdClcbiAgaWYgKHIuY29tcGFyZVRvKHQpID49IDApIHtcbiAgICByW3IudCsrXSA9IDFcbiAgICByLnN1YlRvKHQsIHIpXG4gIH1cbiAgQmlnSW50ZWdlci5PTkUuZGxTaGlmdFRvKHlzLCB0KVxuICB0LnN1YlRvKHksIHkpOyAvLyBcIm5lZ2F0aXZlXCIgeSBzbyB3ZSBjYW4gcmVwbGFjZSBzdWIgd2l0aCBhbSBsYXRlclxuICB3aGlsZSAoeS50IDwgeXMpIHlbeS50KytdID0gMFxuICB3aGlsZSAoLS1qID49IDApIHtcbiAgICAvLyBFc3RpbWF0ZSBxdW90aWVudCBkaWdpdFxuICAgIHZhciBxZCA9IChyWy0taV0gPT0geTApID8gc2VsZi5ETSA6IE1hdGguZmxvb3IocltpXSAqIGQxICsgKHJbaSAtIDFdICsgZSkgKiBkMilcbiAgICBpZiAoKHJbaV0gKz0geS5hbSgwLCBxZCwgciwgaiwgMCwgeXMpKSA8IHFkKSB7IC8vIFRyeSBpdCBvdXRcbiAgICAgIHkuZGxTaGlmdFRvKGosIHQpXG4gICAgICByLnN1YlRvKHQsIHIpXG4gICAgICB3aGlsZSAocltpXSA8IC0tcWQpIHIuc3ViVG8odCwgcilcbiAgICB9XG4gIH1cbiAgaWYgKHEgIT0gbnVsbCkge1xuICAgIHIuZHJTaGlmdFRvKHlzLCBxKVxuICAgIGlmICh0cyAhPSBtcykgQmlnSW50ZWdlci5aRVJPLnN1YlRvKHEsIHEpXG4gIH1cbiAgci50ID0geXNcbiAgci5jbGFtcCgpXG4gIGlmIChuc2ggPiAwKSByLnJTaGlmdFRvKG5zaCwgcik7IC8vIERlbm9ybWFsaXplIHJlbWFpbmRlclxuICBpZiAodHMgPCAwKSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8ociwgcilcbn1cblxuLy8gKHB1YmxpYykgdGhpcyBtb2QgYVxuZnVuY3Rpb24gYm5Nb2QoYSkge1xuICB2YXIgciA9IG5ldyBCaWdJbnRlZ2VyKClcbiAgdGhpcy5hYnMoKVxuICAgIC5kaXZSZW1UbyhhLCBudWxsLCByKVxuICBpZiAodGhpcy5zIDwgMCAmJiByLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pID4gMCkgYS5zdWJUbyhyLCByKVxuICByZXR1cm4gclxufVxuXG4vLyBNb2R1bGFyIHJlZHVjdGlvbiB1c2luZyBcImNsYXNzaWNcIiBhbGdvcml0aG1cbmZ1bmN0aW9uIENsYXNzaWMobSkge1xuICB0aGlzLm0gPSBtXG59XG5cbmZ1bmN0aW9uIGNDb252ZXJ0KHgpIHtcbiAgaWYgKHgucyA8IDAgfHwgeC5jb21wYXJlVG8odGhpcy5tKSA+PSAwKSByZXR1cm4geC5tb2QodGhpcy5tKVxuICBlbHNlIHJldHVybiB4XG59XG5cbmZ1bmN0aW9uIGNSZXZlcnQoeCkge1xuICByZXR1cm4geFxufVxuXG5mdW5jdGlvbiBjUmVkdWNlKHgpIHtcbiAgeC5kaXZSZW1Ubyh0aGlzLm0sIG51bGwsIHgpXG59XG5cbmZ1bmN0aW9uIGNNdWxUbyh4LCB5LCByKSB7XG4gIHgubXVsdGlwbHlUbyh5LCByKVxuICB0aGlzLnJlZHVjZShyKVxufVxuXG5mdW5jdGlvbiBjU3FyVG8oeCwgcikge1xuICB4LnNxdWFyZVRvKHIpXG4gIHRoaXMucmVkdWNlKHIpXG59XG5cbkNsYXNzaWMucHJvdG90eXBlLmNvbnZlcnQgPSBjQ29udmVydFxuQ2xhc3NpYy5wcm90b3R5cGUucmV2ZXJ0ID0gY1JldmVydFxuQ2xhc3NpYy5wcm90b3R5cGUucmVkdWNlID0gY1JlZHVjZVxuQ2xhc3NpYy5wcm90b3R5cGUubXVsVG8gPSBjTXVsVG9cbkNsYXNzaWMucHJvdG90eXBlLnNxclRvID0gY1NxclRvXG5cbi8vIChwcm90ZWN0ZWQpIHJldHVybiBcIi0xL3RoaXMgJSAyXkRCXCI7IHVzZWZ1bCBmb3IgTW9udC4gcmVkdWN0aW9uXG4vLyBqdXN0aWZpY2F0aW9uOlxuLy8gICAgICAgICB4eSA9PSAxIChtb2QgbSlcbi8vICAgICAgICAgeHkgPSAgMStrbVxuLy8gICB4eSgyLXh5KSA9ICgxK2ttKSgxLWttKVxuLy8geFt5KDIteHkpXSA9IDEta14ybV4yXG4vLyB4W3koMi14eSldID09IDEgKG1vZCBtXjIpXG4vLyBpZiB5IGlzIDEveCBtb2QgbSwgdGhlbiB5KDIteHkpIGlzIDEveCBtb2QgbV4yXG4vLyBzaG91bGQgcmVkdWNlIHggYW5kIHkoMi14eSkgYnkgbV4yIGF0IGVhY2ggc3RlcCB0byBrZWVwIHNpemUgYm91bmRlZC5cbi8vIEpTIG11bHRpcGx5IFwib3ZlcmZsb3dzXCIgZGlmZmVyZW50bHkgZnJvbSBDL0MrKywgc28gY2FyZSBpcyBuZWVkZWQgaGVyZS5cbmZ1bmN0aW9uIGJucEludkRpZ2l0KCkge1xuICBpZiAodGhpcy50IDwgMSkgcmV0dXJuIDBcbiAgdmFyIHggPSB0aGlzWzBdXG4gIGlmICgoeCAmIDEpID09IDApIHJldHVybiAwXG4gIHZhciB5ID0geCAmIDM7IC8vIHkgPT0gMS94IG1vZCAyXjJcbiAgeSA9ICh5ICogKDIgLSAoeCAmIDB4ZikgKiB5KSkgJiAweGY7IC8vIHkgPT0gMS94IG1vZCAyXjRcbiAgeSA9ICh5ICogKDIgLSAoeCAmIDB4ZmYpICogeSkpICYgMHhmZjsgLy8geSA9PSAxL3ggbW9kIDJeOFxuICB5ID0gKHkgKiAoMiAtICgoKHggJiAweGZmZmYpICogeSkgJiAweGZmZmYpKSkgJiAweGZmZmY7IC8vIHkgPT0gMS94IG1vZCAyXjE2XG4gIC8vIGxhc3Qgc3RlcCAtIGNhbGN1bGF0ZSBpbnZlcnNlIG1vZCBEViBkaXJlY3RseVxuICAvLyBhc3N1bWVzIDE2IDwgREIgPD0gMzIgYW5kIGFzc3VtZXMgYWJpbGl0eSB0byBoYW5kbGUgNDgtYml0IGludHNcbiAgeSA9ICh5ICogKDIgLSB4ICogeSAlIHRoaXMuRFYpKSAlIHRoaXMuRFY7IC8vIHkgPT0gMS94IG1vZCAyXmRiaXRzXG4gIC8vIHdlIHJlYWxseSB3YW50IHRoZSBuZWdhdGl2ZSBpbnZlcnNlLCBhbmQgLURWIDwgeSA8IERWXG4gIHJldHVybiAoeSA+IDApID8gdGhpcy5EViAtIHkgOiAteVxufVxuXG4vLyBNb250Z29tZXJ5IHJlZHVjdGlvblxuZnVuY3Rpb24gTW9udGdvbWVyeShtKSB7XG4gIHRoaXMubSA9IG1cbiAgdGhpcy5tcCA9IG0uaW52RGlnaXQoKVxuICB0aGlzLm1wbCA9IHRoaXMubXAgJiAweDdmZmZcbiAgdGhpcy5tcGggPSB0aGlzLm1wID4+IDE1XG4gIHRoaXMudW0gPSAoMSA8PCAobS5EQiAtIDE1KSkgLSAxXG4gIHRoaXMubXQyID0gMiAqIG0udFxufVxuXG4vLyB4UiBtb2QgbVxuZnVuY3Rpb24gbW9udENvbnZlcnQoeCkge1xuICB2YXIgciA9IG5ldyBCaWdJbnRlZ2VyKClcbiAgeC5hYnMoKVxuICAgIC5kbFNoaWZ0VG8odGhpcy5tLnQsIHIpXG4gIHIuZGl2UmVtVG8odGhpcy5tLCBudWxsLCByKVxuICBpZiAoeC5zIDwgMCAmJiByLmNvbXBhcmVUbyhCaWdJbnRlZ2VyLlpFUk8pID4gMCkgdGhpcy5tLnN1YlRvKHIsIHIpXG4gIHJldHVybiByXG59XG5cbi8vIHgvUiBtb2QgbVxuZnVuY3Rpb24gbW9udFJldmVydCh4KSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB4LmNvcHlUbyhyKVxuICB0aGlzLnJlZHVjZShyKVxuICByZXR1cm4gclxufVxuXG4vLyB4ID0geC9SIG1vZCBtIChIQUMgMTQuMzIpXG5mdW5jdGlvbiBtb250UmVkdWNlKHgpIHtcbiAgd2hpbGUgKHgudCA8PSB0aGlzLm10MikgLy8gcGFkIHggc28gYW0gaGFzIGVub3VnaCByb29tIGxhdGVyXG4gICAgeFt4LnQrK10gPSAwXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5tLnQ7ICsraSkge1xuICAgIC8vIGZhc3RlciB3YXkgb2YgY2FsY3VsYXRpbmcgdTAgPSB4W2ldKm1wIG1vZCBEVlxuICAgIHZhciBqID0geFtpXSAmIDB4N2ZmZlxuICAgIHZhciB1MCA9IChqICogdGhpcy5tcGwgKyAoKChqICogdGhpcy5tcGggKyAoeFtpXSA+PiAxNSkgKiB0aGlzLm1wbCkgJiB0aGlzLnVtKSA8PCAxNSkpICYgeC5ETVxuICAgIC8vIHVzZSBhbSB0byBjb21iaW5lIHRoZSBtdWx0aXBseS1zaGlmdC1hZGQgaW50byBvbmUgY2FsbFxuICAgIGogPSBpICsgdGhpcy5tLnRcbiAgICB4W2pdICs9IHRoaXMubS5hbSgwLCB1MCwgeCwgaSwgMCwgdGhpcy5tLnQpXG4gICAgLy8gcHJvcGFnYXRlIGNhcnJ5XG4gICAgd2hpbGUgKHhbal0gPj0geC5EVikge1xuICAgICAgeFtqXSAtPSB4LkRWXG4gICAgICB4Wysral0rK1xuICAgIH1cbiAgfVxuICB4LmNsYW1wKClcbiAgeC5kclNoaWZ0VG8odGhpcy5tLnQsIHgpXG4gIGlmICh4LmNvbXBhcmVUbyh0aGlzLm0pID49IDApIHguc3ViVG8odGhpcy5tLCB4KVxufVxuXG4vLyByID0gXCJ4XjIvUiBtb2QgbVwiOyB4ICE9IHJcbmZ1bmN0aW9uIG1vbnRTcXJUbyh4LCByKSB7XG4gIHguc3F1YXJlVG8ocilcbiAgdGhpcy5yZWR1Y2Uocilcbn1cblxuLy8gciA9IFwieHkvUiBtb2QgbVwiOyB4LHkgIT0gclxuZnVuY3Rpb24gbW9udE11bFRvKHgsIHksIHIpIHtcbiAgeC5tdWx0aXBseVRvKHksIHIpXG4gIHRoaXMucmVkdWNlKHIpXG59XG5cbk1vbnRnb21lcnkucHJvdG90eXBlLmNvbnZlcnQgPSBtb250Q29udmVydFxuTW9udGdvbWVyeS5wcm90b3R5cGUucmV2ZXJ0ID0gbW9udFJldmVydFxuTW9udGdvbWVyeS5wcm90b3R5cGUucmVkdWNlID0gbW9udFJlZHVjZVxuTW9udGdvbWVyeS5wcm90b3R5cGUubXVsVG8gPSBtb250TXVsVG9cbk1vbnRnb21lcnkucHJvdG90eXBlLnNxclRvID0gbW9udFNxclRvXG5cbi8vIChwcm90ZWN0ZWQpIHRydWUgaWZmIHRoaXMgaXMgZXZlblxuZnVuY3Rpb24gYm5wSXNFdmVuKCkge1xuICByZXR1cm4gKCh0aGlzLnQgPiAwKSA/ICh0aGlzWzBdICYgMSkgOiB0aGlzLnMpID09IDBcbn1cblxuLy8gKHByb3RlY3RlZCkgdGhpc15lLCBlIDwgMl4zMiwgZG9pbmcgc3FyIGFuZCBtdWwgd2l0aCBcInJcIiAoSEFDIDE0Ljc5KVxuZnVuY3Rpb24gYm5wRXhwKGUsIHopIHtcbiAgaWYgKGUgPiAweGZmZmZmZmZmIHx8IGUgPCAxKSByZXR1cm4gQmlnSW50ZWdlci5PTkVcbiAgdmFyIHIgPSBuZXcgQmlnSW50ZWdlcigpLFxuICAgIHIyID0gbmV3IEJpZ0ludGVnZXIoKSxcbiAgICBnID0gei5jb252ZXJ0KHRoaXMpLFxuICAgIGkgPSBuYml0cyhlKSAtIDFcbiAgZy5jb3B5VG8ocilcbiAgd2hpbGUgKC0taSA+PSAwKSB7XG4gICAgei5zcXJUbyhyLCByMilcbiAgICBpZiAoKGUgJiAoMSA8PCBpKSkgPiAwKSB6Lm11bFRvKHIyLCBnLCByKVxuICAgIGVsc2Uge1xuICAgICAgdmFyIHQgPSByXG4gICAgICByID0gcjJcbiAgICAgIHIyID0gdFxuICAgIH1cbiAgfVxuICByZXR1cm4gei5yZXZlcnQocilcbn1cblxuLy8gKHB1YmxpYykgdGhpc15lICUgbSwgMCA8PSBlIDwgMl4zMlxuZnVuY3Rpb24gYm5Nb2RQb3dJbnQoZSwgbSkge1xuICB2YXIgelxuICBpZiAoZSA8IDI1NiB8fCBtLmlzRXZlbigpKSB6ID0gbmV3IENsYXNzaWMobSlcbiAgZWxzZSB6ID0gbmV3IE1vbnRnb21lcnkobSlcbiAgcmV0dXJuIHRoaXMuZXhwKGUsIHopXG59XG5cbi8vIHByb3RlY3RlZFxucHJvdG8uY29weVRvID0gYm5wQ29weVRvXG5wcm90by5mcm9tSW50ID0gYm5wRnJvbUludFxucHJvdG8uZnJvbVN0cmluZyA9IGJucEZyb21TdHJpbmdcbnByb3RvLmNsYW1wID0gYm5wQ2xhbXBcbnByb3RvLmRsU2hpZnRUbyA9IGJucERMU2hpZnRUb1xucHJvdG8uZHJTaGlmdFRvID0gYm5wRFJTaGlmdFRvXG5wcm90by5sU2hpZnRUbyA9IGJucExTaGlmdFRvXG5wcm90by5yU2hpZnRUbyA9IGJucFJTaGlmdFRvXG5wcm90by5zdWJUbyA9IGJucFN1YlRvXG5wcm90by5tdWx0aXBseVRvID0gYm5wTXVsdGlwbHlUb1xucHJvdG8uc3F1YXJlVG8gPSBibnBTcXVhcmVUb1xucHJvdG8uZGl2UmVtVG8gPSBibnBEaXZSZW1Ub1xucHJvdG8uaW52RGlnaXQgPSBibnBJbnZEaWdpdFxucHJvdG8uaXNFdmVuID0gYm5wSXNFdmVuXG5wcm90by5leHAgPSBibnBFeHBcblxuLy8gcHVibGljXG5wcm90by50b1N0cmluZyA9IGJuVG9TdHJpbmdcbnByb3RvLm5lZ2F0ZSA9IGJuTmVnYXRlXG5wcm90by5hYnMgPSBibkFic1xucHJvdG8uY29tcGFyZVRvID0gYm5Db21wYXJlVG9cbnByb3RvLmJpdExlbmd0aCA9IGJuQml0TGVuZ3RoXG5wcm90by5ieXRlTGVuZ3RoID0gYm5CeXRlTGVuZ3RoXG5wcm90by5tb2QgPSBibk1vZFxucHJvdG8ubW9kUG93SW50ID0gYm5Nb2RQb3dJbnRcblxuLy8gKHB1YmxpYylcbmZ1bmN0aW9uIGJuQ2xvbmUoKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmNvcHlUbyhyKVxuICByZXR1cm4gclxufVxuXG4vLyAocHVibGljKSByZXR1cm4gdmFsdWUgYXMgaW50ZWdlclxuZnVuY3Rpb24gYm5JbnRWYWx1ZSgpIHtcbiAgaWYgKHRoaXMucyA8IDApIHtcbiAgICBpZiAodGhpcy50ID09IDEpIHJldHVybiB0aGlzWzBdIC0gdGhpcy5EVlxuICAgIGVsc2UgaWYgKHRoaXMudCA9PSAwKSByZXR1cm4gLTFcbiAgfSBlbHNlIGlmICh0aGlzLnQgPT0gMSkgcmV0dXJuIHRoaXNbMF1cbiAgZWxzZSBpZiAodGhpcy50ID09IDApIHJldHVybiAwXG4gIC8vIGFzc3VtZXMgMTYgPCBEQiA8IDMyXG4gIHJldHVybiAoKHRoaXNbMV0gJiAoKDEgPDwgKDMyIC0gdGhpcy5EQikpIC0gMSkpIDw8IHRoaXMuREIpIHwgdGhpc1swXVxufVxuXG4vLyAocHVibGljKSByZXR1cm4gdmFsdWUgYXMgYnl0ZVxuZnVuY3Rpb24gYm5CeXRlVmFsdWUoKSB7XG4gIHJldHVybiAodGhpcy50ID09IDApID8gdGhpcy5zIDogKHRoaXNbMF0gPDwgMjQpID4+IDI0XG59XG5cbi8vIChwdWJsaWMpIHJldHVybiB2YWx1ZSBhcyBzaG9ydCAoYXNzdW1lcyBEQj49MTYpXG5mdW5jdGlvbiBiblNob3J0VmFsdWUoKSB7XG4gIHJldHVybiAodGhpcy50ID09IDApID8gdGhpcy5zIDogKHRoaXNbMF0gPDwgMTYpID4+IDE2XG59XG5cbi8vIChwcm90ZWN0ZWQpIHJldHVybiB4IHMudC4gcl54IDwgRFZcbmZ1bmN0aW9uIGJucENodW5rU2l6ZShyKSB7XG4gIHJldHVybiBNYXRoLmZsb29yKE1hdGguTE4yICogdGhpcy5EQiAvIE1hdGgubG9nKHIpKVxufVxuXG4vLyAocHVibGljKSAwIGlmIHRoaXMgPT0gMCwgMSBpZiB0aGlzID4gMFxuZnVuY3Rpb24gYm5TaWdOdW0oKSB7XG4gIGlmICh0aGlzLnMgPCAwKSByZXR1cm4gLTFcbiAgZWxzZSBpZiAodGhpcy50IDw9IDAgfHwgKHRoaXMudCA9PSAxICYmIHRoaXNbMF0gPD0gMCkpIHJldHVybiAwXG4gIGVsc2UgcmV0dXJuIDFcbn1cblxuLy8gKHByb3RlY3RlZCkgY29udmVydCB0byByYWRpeCBzdHJpbmdcbmZ1bmN0aW9uIGJucFRvUmFkaXgoYikge1xuICBpZiAoYiA9PSBudWxsKSBiID0gMTBcbiAgaWYgKHRoaXMuc2lnbnVtKCkgPT0gMCB8fCBiIDwgMiB8fCBiID4gMzYpIHJldHVybiBcIjBcIlxuICB2YXIgY3MgPSB0aGlzLmNodW5rU2l6ZShiKVxuICB2YXIgYSA9IE1hdGgucG93KGIsIGNzKVxuICB2YXIgZCA9IG5idihhKSxcbiAgICB5ID0gbmV3IEJpZ0ludGVnZXIoKSxcbiAgICB6ID0gbmV3IEJpZ0ludGVnZXIoKSxcbiAgICByID0gXCJcIlxuICB0aGlzLmRpdlJlbVRvKGQsIHksIHopXG4gIHdoaWxlICh5LnNpZ251bSgpID4gMCkge1xuICAgIHIgPSAoYSArIHouaW50VmFsdWUoKSlcbiAgICAgIC50b1N0cmluZyhiKVxuICAgICAgLnN1YnN0cigxKSArIHJcbiAgICB5LmRpdlJlbVRvKGQsIHksIHopXG4gIH1cbiAgcmV0dXJuIHouaW50VmFsdWUoKVxuICAgIC50b1N0cmluZyhiKSArIHJcbn1cblxuLy8gKHByb3RlY3RlZCkgY29udmVydCBmcm9tIHJhZGl4IHN0cmluZ1xuZnVuY3Rpb24gYm5wRnJvbVJhZGl4KHMsIGIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHNlbGYuZnJvbUludCgwKVxuICBpZiAoYiA9PSBudWxsKSBiID0gMTBcbiAgdmFyIGNzID0gc2VsZi5jaHVua1NpemUoYilcbiAgdmFyIGQgPSBNYXRoLnBvdyhiLCBjcyksXG4gICAgbWkgPSBmYWxzZSxcbiAgICBqID0gMCxcbiAgICB3ID0gMFxuICBmb3IgKHZhciBpID0gMDsgaSA8IHMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgeCA9IGludEF0KHMsIGkpXG4gICAgaWYgKHggPCAwKSB7XG4gICAgICBpZiAocy5jaGFyQXQoaSkgPT0gXCItXCIgJiYgc2VsZi5zaWdudW0oKSA9PSAwKSBtaSA9IHRydWVcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuICAgIHcgPSBiICogdyArIHhcbiAgICBpZiAoKytqID49IGNzKSB7XG4gICAgICBzZWxmLmRNdWx0aXBseShkKVxuICAgICAgc2VsZi5kQWRkT2Zmc2V0KHcsIDApXG4gICAgICBqID0gMFxuICAgICAgdyA9IDBcbiAgICB9XG4gIH1cbiAgaWYgKGogPiAwKSB7XG4gICAgc2VsZi5kTXVsdGlwbHkoTWF0aC5wb3coYiwgaikpXG4gICAgc2VsZi5kQWRkT2Zmc2V0KHcsIDApXG4gIH1cbiAgaWYgKG1pKSBCaWdJbnRlZ2VyLlpFUk8uc3ViVG8oc2VsZiwgc2VsZilcbn1cblxuLy8gKHByb3RlY3RlZCkgYWx0ZXJuYXRlIGNvbnN0cnVjdG9yXG5mdW5jdGlvbiBibnBGcm9tTnVtYmVyKGEsIGIsIGMpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIGlmIChcIm51bWJlclwiID09IHR5cGVvZiBiKSB7XG4gICAgLy8gbmV3IEJpZ0ludGVnZXIoaW50LGludCxSTkcpXG4gICAgaWYgKGEgPCAyKSBzZWxmLmZyb21JbnQoMSlcbiAgICBlbHNlIHtcbiAgICAgIHNlbGYuZnJvbU51bWJlcihhLCBjKVxuICAgICAgaWYgKCFzZWxmLnRlc3RCaXQoYSAtIDEpKSAvLyBmb3JjZSBNU0Igc2V0XG4gICAgICAgIHNlbGYuYml0d2lzZVRvKEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChhIC0gMSksIG9wX29yLCBzZWxmKVxuICAgICAgaWYgKHNlbGYuaXNFdmVuKCkpIHNlbGYuZEFkZE9mZnNldCgxLCAwKTsgLy8gZm9yY2Ugb2RkXG4gICAgICB3aGlsZSAoIXNlbGYuaXNQcm9iYWJsZVByaW1lKGIpKSB7XG4gICAgICAgIHNlbGYuZEFkZE9mZnNldCgyLCAwKVxuICAgICAgICBpZiAoc2VsZi5iaXRMZW5ndGgoKSA+IGEpIHNlbGYuc3ViVG8oQmlnSW50ZWdlci5PTkUuc2hpZnRMZWZ0KGEgLSAxKSwgc2VsZilcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gbmV3IEJpZ0ludGVnZXIoaW50LFJORylcbiAgICB2YXIgeCA9IG5ldyBBcnJheSgpLFxuICAgICAgdCA9IGEgJiA3XG4gICAgeC5sZW5ndGggPSAoYSA+PiAzKSArIDFcbiAgICBiLm5leHRCeXRlcyh4KVxuICAgIGlmICh0ID4gMCkgeFswXSAmPSAoKDEgPDwgdCkgLSAxKVxuICAgIGVsc2UgeFswXSA9IDBcbiAgICBzZWxmLmZyb21TdHJpbmcoeCwgMjU2KVxuICB9XG59XG5cbi8vIChwdWJsaWMpIGNvbnZlcnQgdG8gYmlnZW5kaWFuIGJ5dGUgYXJyYXlcbmZ1bmN0aW9uIGJuVG9CeXRlQXJyYXkoKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB2YXIgaSA9IHNlbGYudCxcbiAgICByID0gbmV3IEFycmF5KClcbiAgclswXSA9IHNlbGYuc1xuICB2YXIgcCA9IHNlbGYuREIgLSAoaSAqIHNlbGYuREIpICUgOCxcbiAgICBkLCBrID0gMFxuICBpZiAoaS0tID4gMCkge1xuICAgIGlmIChwIDwgc2VsZi5EQiAmJiAoZCA9IHNlbGZbaV0gPj4gcCkgIT0gKHNlbGYucyAmIHNlbGYuRE0pID4+IHApXG4gICAgICByW2srK10gPSBkIHwgKHNlbGYucyA8PCAoc2VsZi5EQiAtIHApKVxuICAgIHdoaWxlIChpID49IDApIHtcbiAgICAgIGlmIChwIDwgOCkge1xuICAgICAgICBkID0gKHNlbGZbaV0gJiAoKDEgPDwgcCkgLSAxKSkgPDwgKDggLSBwKVxuICAgICAgICBkIHw9IHNlbGZbLS1pXSA+PiAocCArPSBzZWxmLkRCIC0gOClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGQgPSAoc2VsZltpXSA+PiAocCAtPSA4KSkgJiAweGZmXG4gICAgICAgIGlmIChwIDw9IDApIHtcbiAgICAgICAgICBwICs9IHNlbGYuREJcbiAgICAgICAgICAtLWlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKChkICYgMHg4MCkgIT0gMCkgZCB8PSAtMjU2XG4gICAgICBpZiAoayA9PT0gMCAmJiAoc2VsZi5zICYgMHg4MCkgIT0gKGQgJiAweDgwKSkrK2tcbiAgICAgIGlmIChrID4gMCB8fCBkICE9IHNlbGYucykgcltrKytdID0gZFxuICAgIH1cbiAgfVxuICByZXR1cm4gclxufVxuXG5mdW5jdGlvbiBibkVxdWFscyhhKSB7XG4gIHJldHVybiAodGhpcy5jb21wYXJlVG8oYSkgPT0gMClcbn1cblxuZnVuY3Rpb24gYm5NaW4oYSkge1xuICByZXR1cm4gKHRoaXMuY29tcGFyZVRvKGEpIDwgMCkgPyB0aGlzIDogYVxufVxuXG5mdW5jdGlvbiBibk1heChhKSB7XG4gIHJldHVybiAodGhpcy5jb21wYXJlVG8oYSkgPiAwKSA/IHRoaXMgOiBhXG59XG5cbi8vIChwcm90ZWN0ZWQpIHIgPSB0aGlzIG9wIGEgKGJpdHdpc2UpXG5mdW5jdGlvbiBibnBCaXR3aXNlVG8oYSwgb3AsIHIpIHtcbiAgdmFyIHNlbGYgPSB0aGlzXG4gIHZhciBpLCBmLCBtID0gTWF0aC5taW4oYS50LCBzZWxmLnQpXG4gIGZvciAoaSA9IDA7IGkgPCBtOyArK2kpIHJbaV0gPSBvcChzZWxmW2ldLCBhW2ldKVxuICBpZiAoYS50IDwgc2VsZi50KSB7XG4gICAgZiA9IGEucyAmIHNlbGYuRE1cbiAgICBmb3IgKGkgPSBtOyBpIDwgc2VsZi50OyArK2kpIHJbaV0gPSBvcChzZWxmW2ldLCBmKVxuICAgIHIudCA9IHNlbGYudFxuICB9IGVsc2Uge1xuICAgIGYgPSBzZWxmLnMgJiBzZWxmLkRNXG4gICAgZm9yIChpID0gbTsgaSA8IGEudDsgKytpKSByW2ldID0gb3AoZiwgYVtpXSlcbiAgICByLnQgPSBhLnRcbiAgfVxuICByLnMgPSBvcChzZWxmLnMsIGEucylcbiAgci5jbGFtcCgpXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgJiBhXG5mdW5jdGlvbiBvcF9hbmQoeCwgeSkge1xuICByZXR1cm4geCAmIHlcbn1cblxuZnVuY3Rpb24gYm5BbmQoYSkge1xuICB2YXIgciA9IG5ldyBCaWdJbnRlZ2VyKClcbiAgdGhpcy5iaXR3aXNlVG8oYSwgb3BfYW5kLCByKVxuICByZXR1cm4gclxufVxuXG4vLyAocHVibGljKSB0aGlzIHwgYVxuZnVuY3Rpb24gb3Bfb3IoeCwgeSkge1xuICByZXR1cm4geCB8IHlcbn1cblxuZnVuY3Rpb24gYm5PcihhKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmJpdHdpc2VUbyhhLCBvcF9vciwgcilcbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgdGhpcyBeIGFcbmZ1bmN0aW9uIG9wX3hvcih4LCB5KSB7XG4gIHJldHVybiB4IF4geVxufVxuXG5mdW5jdGlvbiBiblhvcihhKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmJpdHdpc2VUbyhhLCBvcF94b3IsIHIpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgJiB+YVxuZnVuY3Rpb24gb3BfYW5kbm90KHgsIHkpIHtcbiAgcmV0dXJuIHggJiB+eVxufVxuXG5mdW5jdGlvbiBibkFuZE5vdChhKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmJpdHdpc2VUbyhhLCBvcF9hbmRub3QsIHIpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIH50aGlzXG5mdW5jdGlvbiBibk5vdCgpIHtcbiAgdmFyIHIgPSBuZXcgQmlnSW50ZWdlcigpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpIHJbaV0gPSB0aGlzLkRNICYgfnRoaXNbaV1cbiAgci50ID0gdGhpcy50XG4gIHIucyA9IH50aGlzLnNcbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgdGhpcyA8PCBuXG5mdW5jdGlvbiBiblNoaWZ0TGVmdChuKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICBpZiAobiA8IDApIHRoaXMuclNoaWZ0VG8oLW4sIHIpXG4gIGVsc2UgdGhpcy5sU2hpZnRUbyhuLCByKVxuICByZXR1cm4gclxufVxuXG4vLyAocHVibGljKSB0aGlzID4+IG5cbmZ1bmN0aW9uIGJuU2hpZnRSaWdodChuKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICBpZiAobiA8IDApIHRoaXMubFNoaWZ0VG8oLW4sIHIpXG4gIGVsc2UgdGhpcy5yU2hpZnRUbyhuLCByKVxuICByZXR1cm4gclxufVxuXG4vLyByZXR1cm4gaW5kZXggb2YgbG93ZXN0IDEtYml0IGluIHgsIHggPCAyXjMxXG5mdW5jdGlvbiBsYml0KHgpIHtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC0xXG4gIHZhciByID0gMFxuICBpZiAoKHggJiAweGZmZmYpID09IDApIHtcbiAgICB4ID4+PSAxNlxuICAgIHIgKz0gMTZcbiAgfVxuICBpZiAoKHggJiAweGZmKSA9PSAwKSB7XG4gICAgeCA+Pj0gOFxuICAgIHIgKz0gOFxuICB9XG4gIGlmICgoeCAmIDB4ZikgPT0gMCkge1xuICAgIHggPj49IDRcbiAgICByICs9IDRcbiAgfVxuICBpZiAoKHggJiAzKSA9PSAwKSB7XG4gICAgeCA+Pj0gMlxuICAgIHIgKz0gMlxuICB9XG4gIGlmICgoeCAmIDEpID09IDApKytyXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIHJldHVybnMgaW5kZXggb2YgbG93ZXN0IDEtYml0IChvciAtMSBpZiBub25lKVxuZnVuY3Rpb24gYm5HZXRMb3dlc3RTZXRCaXQoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy50OyArK2kpXG4gICAgaWYgKHRoaXNbaV0gIT0gMCkgcmV0dXJuIGkgKiB0aGlzLkRCICsgbGJpdCh0aGlzW2ldKVxuICBpZiAodGhpcy5zIDwgMCkgcmV0dXJuIHRoaXMudCAqIHRoaXMuREJcbiAgcmV0dXJuIC0xXG59XG5cbi8vIHJldHVybiBudW1iZXIgb2YgMSBiaXRzIGluIHhcbmZ1bmN0aW9uIGNiaXQoeCkge1xuICB2YXIgciA9IDBcbiAgd2hpbGUgKHggIT0gMCkge1xuICAgIHggJj0geCAtIDFcbiAgICArK3JcbiAgfVxuICByZXR1cm4gclxufVxuXG4vLyAocHVibGljKSByZXR1cm4gbnVtYmVyIG9mIHNldCBiaXRzXG5mdW5jdGlvbiBibkJpdENvdW50KCkge1xuICB2YXIgciA9IDAsXG4gICAgeCA9IHRoaXMucyAmIHRoaXMuRE1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnQ7ICsraSkgciArPSBjYml0KHRoaXNbaV0gXiB4KVxuICByZXR1cm4gclxufVxuXG4vLyAocHVibGljKSB0cnVlIGlmZiBudGggYml0IGlzIHNldFxuZnVuY3Rpb24gYm5UZXN0Qml0KG4pIHtcbiAgdmFyIGogPSBNYXRoLmZsb29yKG4gLyB0aGlzLkRCKVxuICBpZiAoaiA+PSB0aGlzLnQpIHJldHVybiAodGhpcy5zICE9IDApXG4gIHJldHVybiAoKHRoaXNbal0gJiAoMSA8PCAobiAlIHRoaXMuREIpKSkgIT0gMClcbn1cblxuLy8gKHByb3RlY3RlZCkgdGhpcyBvcCAoMTw8bilcbmZ1bmN0aW9uIGJucENoYW5nZUJpdChuLCBvcCkge1xuICB2YXIgciA9IEJpZ0ludGVnZXIuT05FLnNoaWZ0TGVmdChuKVxuICB0aGlzLmJpdHdpc2VUbyhyLCBvcCwgcilcbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgdGhpcyB8ICgxPDxuKVxuZnVuY3Rpb24gYm5TZXRCaXQobikge1xuICByZXR1cm4gdGhpcy5jaGFuZ2VCaXQobiwgb3Bfb3IpXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgJiB+KDE8PG4pXG5mdW5jdGlvbiBibkNsZWFyQml0KG4pIHtcbiAgcmV0dXJuIHRoaXMuY2hhbmdlQml0KG4sIG9wX2FuZG5vdClcbn1cblxuLy8gKHB1YmxpYykgdGhpcyBeICgxPDxuKVxuZnVuY3Rpb24gYm5GbGlwQml0KG4pIHtcbiAgcmV0dXJuIHRoaXMuY2hhbmdlQml0KG4sIG9wX3hvcilcbn1cblxuLy8gKHByb3RlY3RlZCkgciA9IHRoaXMgKyBhXG5mdW5jdGlvbiBibnBBZGRUbyhhLCByKSB7XG4gIHZhciBzZWxmID0gdGhpc1xuXG4gIHZhciBpID0gMCxcbiAgICBjID0gMCxcbiAgICBtID0gTWF0aC5taW4oYS50LCBzZWxmLnQpXG4gIHdoaWxlIChpIDwgbSkge1xuICAgIGMgKz0gc2VsZltpXSArIGFbaV1cbiAgICByW2krK10gPSBjICYgc2VsZi5ETVxuICAgIGMgPj49IHNlbGYuREJcbiAgfVxuICBpZiAoYS50IDwgc2VsZi50KSB7XG4gICAgYyArPSBhLnNcbiAgICB3aGlsZSAoaSA8IHNlbGYudCkge1xuICAgICAgYyArPSBzZWxmW2ldXG4gICAgICByW2krK10gPSBjICYgc2VsZi5ETVxuICAgICAgYyA+Pj0gc2VsZi5EQlxuICAgIH1cbiAgICBjICs9IHNlbGYuc1xuICB9IGVsc2Uge1xuICAgIGMgKz0gc2VsZi5zXG4gICAgd2hpbGUgKGkgPCBhLnQpIHtcbiAgICAgIGMgKz0gYVtpXVxuICAgICAgcltpKytdID0gYyAmIHNlbGYuRE1cbiAgICAgIGMgPj49IHNlbGYuREJcbiAgICB9XG4gICAgYyArPSBhLnNcbiAgfVxuICByLnMgPSAoYyA8IDApID8gLTEgOiAwXG4gIGlmIChjID4gMCkgcltpKytdID0gY1xuICBlbHNlIGlmIChjIDwgLTEpIHJbaSsrXSA9IHNlbGYuRFYgKyBjXG4gIHIudCA9IGlcbiAgci5jbGFtcCgpXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgKyBhXG5mdW5jdGlvbiBibkFkZChhKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmFkZFRvKGEsIHIpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgLSBhXG5mdW5jdGlvbiBiblN1YnRyYWN0KGEpIHtcbiAgdmFyIHIgPSBuZXcgQmlnSW50ZWdlcigpXG4gIHRoaXMuc3ViVG8oYSwgcilcbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgdGhpcyAqIGFcbmZ1bmN0aW9uIGJuTXVsdGlwbHkoYSkge1xuICB2YXIgciA9IG5ldyBCaWdJbnRlZ2VyKClcbiAgdGhpcy5tdWx0aXBseVRvKGEsIHIpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIHRoaXNeMlxuZnVuY3Rpb24gYm5TcXVhcmUoKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLnNxdWFyZVRvKHIpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgLyBhXG5mdW5jdGlvbiBibkRpdmlkZShhKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmRpdlJlbVRvKGEsIHIsIG51bGwpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIHRoaXMgJSBhXG5mdW5jdGlvbiBiblJlbWFpbmRlcihhKSB7XG4gIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICB0aGlzLmRpdlJlbVRvKGEsIG51bGwsIHIpXG4gIHJldHVybiByXG59XG5cbi8vIChwdWJsaWMpIFt0aGlzL2EsdGhpcyVhXVxuZnVuY3Rpb24gYm5EaXZpZGVBbmRSZW1haW5kZXIoYSkge1xuICB2YXIgcSA9IG5ldyBCaWdJbnRlZ2VyKCksXG4gICAgciA9IG5ldyBCaWdJbnRlZ2VyKClcbiAgdGhpcy5kaXZSZW1UbyhhLCBxLCByKVxuICByZXR1cm4gbmV3IEFycmF5KHEsIHIpXG59XG5cbi8vIChwcm90ZWN0ZWQpIHRoaXMgKj0gbiwgdGhpcyA+PSAwLCAxIDwgbiA8IERWXG5mdW5jdGlvbiBibnBETXVsdGlwbHkobikge1xuICB0aGlzW3RoaXMudF0gPSB0aGlzLmFtKDAsIG4gLSAxLCB0aGlzLCAwLCAwLCB0aGlzLnQpXG4gICsrdGhpcy50XG4gIHRoaXMuY2xhbXAoKVxufVxuXG4vLyAocHJvdGVjdGVkKSB0aGlzICs9IG4gPDwgdyB3b3JkcywgdGhpcyA+PSAwXG5mdW5jdGlvbiBibnBEQWRkT2Zmc2V0KG4sIHcpIHtcbiAgaWYgKG4gPT0gMCkgcmV0dXJuXG4gIHdoaWxlICh0aGlzLnQgPD0gdykgdGhpc1t0aGlzLnQrK10gPSAwXG4gIHRoaXNbd10gKz0gblxuICB3aGlsZSAodGhpc1t3XSA+PSB0aGlzLkRWKSB7XG4gICAgdGhpc1t3XSAtPSB0aGlzLkRWXG4gICAgaWYgKCsrdyA+PSB0aGlzLnQpIHRoaXNbdGhpcy50KytdID0gMFxuICAgICsrdGhpc1t3XVxuICB9XG59XG5cbi8vIEEgXCJudWxsXCIgcmVkdWNlclxuZnVuY3Rpb24gTnVsbEV4cCgpIHt9XG5cbmZ1bmN0aW9uIG5Ob3AoeCkge1xuICByZXR1cm4geFxufVxuXG5mdW5jdGlvbiBuTXVsVG8oeCwgeSwgcikge1xuICB4Lm11bHRpcGx5VG8oeSwgcilcbn1cblxuZnVuY3Rpb24gblNxclRvKHgsIHIpIHtcbiAgeC5zcXVhcmVUbyhyKVxufVxuXG5OdWxsRXhwLnByb3RvdHlwZS5jb252ZXJ0ID0gbk5vcFxuTnVsbEV4cC5wcm90b3R5cGUucmV2ZXJ0ID0gbk5vcFxuTnVsbEV4cC5wcm90b3R5cGUubXVsVG8gPSBuTXVsVG9cbk51bGxFeHAucHJvdG90eXBlLnNxclRvID0gblNxclRvXG5cbi8vIChwdWJsaWMpIHRoaXNeZVxuZnVuY3Rpb24gYm5Qb3coZSkge1xuICByZXR1cm4gdGhpcy5leHAoZSwgbmV3IE51bGxFeHAoKSlcbn1cblxuLy8gKHByb3RlY3RlZCkgciA9IGxvd2VyIG4gd29yZHMgb2YgXCJ0aGlzICogYVwiLCBhLnQgPD0gblxuLy8gXCJ0aGlzXCIgc2hvdWxkIGJlIHRoZSBsYXJnZXIgb25lIGlmIGFwcHJvcHJpYXRlLlxuZnVuY3Rpb24gYm5wTXVsdGlwbHlMb3dlclRvKGEsIG4sIHIpIHtcbiAgdmFyIGkgPSBNYXRoLm1pbih0aGlzLnQgKyBhLnQsIG4pXG4gIHIucyA9IDA7IC8vIGFzc3VtZXMgYSx0aGlzID49IDBcbiAgci50ID0gaVxuICB3aGlsZSAoaSA+IDApIHJbLS1pXSA9IDBcbiAgdmFyIGpcbiAgZm9yIChqID0gci50IC0gdGhpcy50OyBpIDwgajsgKytpKSByW2kgKyB0aGlzLnRdID0gdGhpcy5hbSgwLCBhW2ldLCByLCBpLCAwLCB0aGlzLnQpXG4gIGZvciAoaiA9IE1hdGgubWluKGEudCwgbik7IGkgPCBqOyArK2kpIHRoaXMuYW0oMCwgYVtpXSwgciwgaSwgMCwgbiAtIGkpXG4gIHIuY2xhbXAoKVxufVxuXG4vLyAocHJvdGVjdGVkKSByID0gXCJ0aGlzICogYVwiIHdpdGhvdXQgbG93ZXIgbiB3b3JkcywgbiA+IDBcbi8vIFwidGhpc1wiIHNob3VsZCBiZSB0aGUgbGFyZ2VyIG9uZSBpZiBhcHByb3ByaWF0ZS5cbmZ1bmN0aW9uIGJucE11bHRpcGx5VXBwZXJUbyhhLCBuLCByKSB7XG4gIC0tblxuICB2YXIgaSA9IHIudCA9IHRoaXMudCArIGEudCAtIG5cbiAgci5zID0gMDsgLy8gYXNzdW1lcyBhLHRoaXMgPj0gMFxuICB3aGlsZSAoLS1pID49IDApIHJbaV0gPSAwXG4gIGZvciAoaSA9IE1hdGgubWF4KG4gLSB0aGlzLnQsIDApOyBpIDwgYS50OyArK2kpXG4gICAgclt0aGlzLnQgKyBpIC0gbl0gPSB0aGlzLmFtKG4gLSBpLCBhW2ldLCByLCAwLCAwLCB0aGlzLnQgKyBpIC0gbilcbiAgci5jbGFtcCgpXG4gIHIuZHJTaGlmdFRvKDEsIHIpXG59XG5cbi8vIEJhcnJldHQgbW9kdWxhciByZWR1Y3Rpb25cbmZ1bmN0aW9uIEJhcnJldHQobSkge1xuICAvLyBzZXR1cCBCYXJyZXR0XG4gIHRoaXMucjIgPSBuZXcgQmlnSW50ZWdlcigpXG4gIHRoaXMucTMgPSBuZXcgQmlnSW50ZWdlcigpXG4gIEJpZ0ludGVnZXIuT05FLmRsU2hpZnRUbygyICogbS50LCB0aGlzLnIyKVxuICB0aGlzLm11ID0gdGhpcy5yMi5kaXZpZGUobSlcbiAgdGhpcy5tID0gbVxufVxuXG5mdW5jdGlvbiBiYXJyZXR0Q29udmVydCh4KSB7XG4gIGlmICh4LnMgPCAwIHx8IHgudCA+IDIgKiB0aGlzLm0udCkgcmV0dXJuIHgubW9kKHRoaXMubSlcbiAgZWxzZSBpZiAoeC5jb21wYXJlVG8odGhpcy5tKSA8IDApIHJldHVybiB4XG4gIGVsc2Uge1xuICAgIHZhciByID0gbmV3IEJpZ0ludGVnZXIoKVxuICAgIHguY29weVRvKHIpXG4gICAgdGhpcy5yZWR1Y2UocilcbiAgICByZXR1cm4gclxuICB9XG59XG5cbmZ1bmN0aW9uIGJhcnJldHRSZXZlcnQoeCkge1xuICByZXR1cm4geFxufVxuXG4vLyB4ID0geCBtb2QgbSAoSEFDIDE0LjQyKVxuZnVuY3Rpb24gYmFycmV0dFJlZHVjZSh4KSB7XG4gIHZhciBzZWxmID0gdGhpc1xuICB4LmRyU2hpZnRUbyhzZWxmLm0udCAtIDEsIHNlbGYucjIpXG4gIGlmICh4LnQgPiBzZWxmLm0udCArIDEpIHtcbiAgICB4LnQgPSBzZWxmLm0udCArIDFcbiAgICB4LmNsYW1wKClcbiAgfVxuICBzZWxmLm11Lm11bHRpcGx5VXBwZXJUbyhzZWxmLnIyLCBzZWxmLm0udCArIDEsIHNlbGYucTMpXG4gIHNlbGYubS5tdWx0aXBseUxvd2VyVG8oc2VsZi5xMywgc2VsZi5tLnQgKyAxLCBzZWxmLnIyKVxuICB3aGlsZSAoeC5jb21wYXJlVG8oc2VsZi5yMikgPCAwKSB4LmRBZGRPZmZzZXQoMSwgc2VsZi5tLnQgKyAxKVxuICB4LnN1YlRvKHNlbGYucjIsIHgpXG4gIHdoaWxlICh4LmNvbXBhcmVUbyhzZWxmLm0pID49IDApIHguc3ViVG8oc2VsZi5tLCB4KVxufVxuXG4vLyByID0geF4yIG1vZCBtOyB4ICE9IHJcbmZ1bmN0aW9uIGJhcnJldHRTcXJUbyh4LCByKSB7XG4gIHguc3F1YXJlVG8ocilcbiAgdGhpcy5yZWR1Y2Uocilcbn1cblxuLy8gciA9IHgqeSBtb2QgbTsgeCx5ICE9IHJcbmZ1bmN0aW9uIGJhcnJldHRNdWxUbyh4LCB5LCByKSB7XG4gIHgubXVsdGlwbHlUbyh5LCByKVxuICB0aGlzLnJlZHVjZShyKVxufVxuXG5CYXJyZXR0LnByb3RvdHlwZS5jb252ZXJ0ID0gYmFycmV0dENvbnZlcnRcbkJhcnJldHQucHJvdG90eXBlLnJldmVydCA9IGJhcnJldHRSZXZlcnRcbkJhcnJldHQucHJvdG90eXBlLnJlZHVjZSA9IGJhcnJldHRSZWR1Y2VcbkJhcnJldHQucHJvdG90eXBlLm11bFRvID0gYmFycmV0dE11bFRvXG5CYXJyZXR0LnByb3RvdHlwZS5zcXJUbyA9IGJhcnJldHRTcXJUb1xuXG4vLyAocHVibGljKSB0aGlzXmUgJSBtIChIQUMgMTQuODUpXG5mdW5jdGlvbiBibk1vZFBvdyhlLCBtKSB7XG4gIHZhciBpID0gZS5iaXRMZW5ndGgoKSxcbiAgICBrLCByID0gbmJ2KDEpLFxuICAgIHpcbiAgaWYgKGkgPD0gMCkgcmV0dXJuIHJcbiAgZWxzZSBpZiAoaSA8IDE4KSBrID0gMVxuICBlbHNlIGlmIChpIDwgNDgpIGsgPSAzXG4gIGVsc2UgaWYgKGkgPCAxNDQpIGsgPSA0XG4gIGVsc2UgaWYgKGkgPCA3NjgpIGsgPSA1XG4gIGVsc2UgayA9IDZcbiAgaWYgKGkgPCA4KVxuICAgIHogPSBuZXcgQ2xhc3NpYyhtKVxuICBlbHNlIGlmIChtLmlzRXZlbigpKVxuICAgIHogPSBuZXcgQmFycmV0dChtKVxuICBlbHNlXG4gICAgeiA9IG5ldyBNb250Z29tZXJ5KG0pXG5cbiAgLy8gcHJlY29tcHV0YXRpb25cbiAgdmFyIGcgPSBuZXcgQXJyYXkoKSxcbiAgICBuID0gMyxcbiAgICBrMSA9IGsgLSAxLFxuICAgIGttID0gKDEgPDwgaykgLSAxXG4gIGdbMV0gPSB6LmNvbnZlcnQodGhpcylcbiAgaWYgKGsgPiAxKSB7XG4gICAgdmFyIGcyID0gbmV3IEJpZ0ludGVnZXIoKVxuICAgIHouc3FyVG8oZ1sxXSwgZzIpXG4gICAgd2hpbGUgKG4gPD0ga20pIHtcbiAgICAgIGdbbl0gPSBuZXcgQmlnSW50ZWdlcigpXG4gICAgICB6Lm11bFRvKGcyLCBnW24gLSAyXSwgZ1tuXSlcbiAgICAgIG4gKz0gMlxuICAgIH1cbiAgfVxuXG4gIHZhciBqID0gZS50IC0gMSxcbiAgICB3LCBpczEgPSB0cnVlLFxuICAgIHIyID0gbmV3IEJpZ0ludGVnZXIoKSxcbiAgICB0XG4gIGkgPSBuYml0cyhlW2pdKSAtIDFcbiAgd2hpbGUgKGogPj0gMCkge1xuICAgIGlmIChpID49IGsxKSB3ID0gKGVbal0gPj4gKGkgLSBrMSkpICYga21cbiAgICBlbHNlIHtcbiAgICAgIHcgPSAoZVtqXSAmICgoMSA8PCAoaSArIDEpKSAtIDEpKSA8PCAoazEgLSBpKVxuICAgICAgaWYgKGogPiAwKSB3IHw9IGVbaiAtIDFdID4+ICh0aGlzLkRCICsgaSAtIGsxKVxuICAgIH1cblxuICAgIG4gPSBrXG4gICAgd2hpbGUgKCh3ICYgMSkgPT0gMCkge1xuICAgICAgdyA+Pj0gMVxuICAgICAgLS1uXG4gICAgfVxuICAgIGlmICgoaSAtPSBuKSA8IDApIHtcbiAgICAgIGkgKz0gdGhpcy5EQlxuICAgICAgLS1qXG4gICAgfVxuICAgIGlmIChpczEpIHsgLy8gcmV0ID09IDEsIGRvbid0IGJvdGhlciBzcXVhcmluZyBvciBtdWx0aXBseWluZyBpdFxuICAgICAgZ1t3XS5jb3B5VG8ocilcbiAgICAgIGlzMSA9IGZhbHNlXG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChuID4gMSkge1xuICAgICAgICB6LnNxclRvKHIsIHIyKVxuICAgICAgICB6LnNxclRvKHIyLCByKVxuICAgICAgICBuIC09IDJcbiAgICAgIH1cbiAgICAgIGlmIChuID4gMCkgei5zcXJUbyhyLCByMilcbiAgICAgIGVsc2Uge1xuICAgICAgICB0ID0gclxuICAgICAgICByID0gcjJcbiAgICAgICAgcjIgPSB0XG4gICAgICB9XG4gICAgICB6Lm11bFRvKHIyLCBnW3ddLCByKVxuICAgIH1cblxuICAgIHdoaWxlIChqID49IDAgJiYgKGVbal0gJiAoMSA8PCBpKSkgPT0gMCkge1xuICAgICAgei5zcXJUbyhyLCByMilcbiAgICAgIHQgPSByXG4gICAgICByID0gcjJcbiAgICAgIHIyID0gdFxuICAgICAgaWYgKC0taSA8IDApIHtcbiAgICAgICAgaSA9IHRoaXMuREIgLSAxXG4gICAgICAgIC0talxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gei5yZXZlcnQocilcbn1cblxuLy8gKHB1YmxpYykgZ2NkKHRoaXMsYSkgKEhBQyAxNC41NClcbmZ1bmN0aW9uIGJuR0NEKGEpIHtcbiAgdmFyIHggPSAodGhpcy5zIDwgMCkgPyB0aGlzLm5lZ2F0ZSgpIDogdGhpcy5jbG9uZSgpXG4gIHZhciB5ID0gKGEucyA8IDApID8gYS5uZWdhdGUoKSA6IGEuY2xvbmUoKVxuICBpZiAoeC5jb21wYXJlVG8oeSkgPCAwKSB7XG4gICAgdmFyIHQgPSB4XG4gICAgeCA9IHlcbiAgICB5ID0gdFxuICB9XG4gIHZhciBpID0geC5nZXRMb3dlc3RTZXRCaXQoKSxcbiAgICBnID0geS5nZXRMb3dlc3RTZXRCaXQoKVxuICBpZiAoZyA8IDApIHJldHVybiB4XG4gIGlmIChpIDwgZykgZyA9IGlcbiAgaWYgKGcgPiAwKSB7XG4gICAgeC5yU2hpZnRUbyhnLCB4KVxuICAgIHkuclNoaWZ0VG8oZywgeSlcbiAgfVxuICB3aGlsZSAoeC5zaWdudW0oKSA+IDApIHtcbiAgICBpZiAoKGkgPSB4LmdldExvd2VzdFNldEJpdCgpKSA+IDApIHguclNoaWZ0VG8oaSwgeClcbiAgICBpZiAoKGkgPSB5LmdldExvd2VzdFNldEJpdCgpKSA+IDApIHkuclNoaWZ0VG8oaSwgeSlcbiAgICBpZiAoeC5jb21wYXJlVG8oeSkgPj0gMCkge1xuICAgICAgeC5zdWJUbyh5LCB4KVxuICAgICAgeC5yU2hpZnRUbygxLCB4KVxuICAgIH0gZWxzZSB7XG4gICAgICB5LnN1YlRvKHgsIHkpXG4gICAgICB5LnJTaGlmdFRvKDEsIHkpXG4gICAgfVxuICB9XG4gIGlmIChnID4gMCkgeS5sU2hpZnRUbyhnLCB5KVxuICByZXR1cm4geVxufVxuXG4vLyAocHJvdGVjdGVkKSB0aGlzICUgbiwgbiA8IDJeMjZcbmZ1bmN0aW9uIGJucE1vZEludChuKSB7XG4gIGlmIChuIDw9IDApIHJldHVybiAwXG4gIHZhciBkID0gdGhpcy5EViAlIG4sXG4gICAgciA9ICh0aGlzLnMgPCAwKSA/IG4gLSAxIDogMFxuICBpZiAodGhpcy50ID4gMClcbiAgICBpZiAoZCA9PSAwKSByID0gdGhpc1swXSAlIG5cbiAgICBlbHNlXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50IC0gMTsgaSA+PSAwOyAtLWkpIHIgPSAoZCAqIHIgKyB0aGlzW2ldKSAlIG5cbiAgcmV0dXJuIHJcbn1cblxuLy8gKHB1YmxpYykgMS90aGlzICUgbSAoSEFDIDE0LjYxKVxuZnVuY3Rpb24gYm5Nb2RJbnZlcnNlKG0pIHtcbiAgdmFyIGFjID0gbS5pc0V2ZW4oKVxuICBpZiAodGhpcy5zaWdudW0oKSA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdkaXZpc2lvbiBieSB6ZXJvJylcbiAgaWYgKCh0aGlzLmlzRXZlbigpICYmIGFjKSB8fCBtLnNpZ251bSgpID09IDApIHJldHVybiBCaWdJbnRlZ2VyLlpFUk9cbiAgdmFyIHUgPSBtLmNsb25lKCksXG4gICAgdiA9IHRoaXMuY2xvbmUoKVxuICB2YXIgYSA9IG5idigxKSxcbiAgICBiID0gbmJ2KDApLFxuICAgIGMgPSBuYnYoMCksXG4gICAgZCA9IG5idigxKVxuICB3aGlsZSAodS5zaWdudW0oKSAhPSAwKSB7XG4gICAgd2hpbGUgKHUuaXNFdmVuKCkpIHtcbiAgICAgIHUuclNoaWZ0VG8oMSwgdSlcbiAgICAgIGlmIChhYykge1xuICAgICAgICBpZiAoIWEuaXNFdmVuKCkgfHwgIWIuaXNFdmVuKCkpIHtcbiAgICAgICAgICBhLmFkZFRvKHRoaXMsIGEpXG4gICAgICAgICAgYi5zdWJUbyhtLCBiKVxuICAgICAgICB9XG4gICAgICAgIGEuclNoaWZ0VG8oMSwgYSlcbiAgICAgIH0gZWxzZSBpZiAoIWIuaXNFdmVuKCkpIGIuc3ViVG8obSwgYilcbiAgICAgIGIuclNoaWZ0VG8oMSwgYilcbiAgICB9XG4gICAgd2hpbGUgKHYuaXNFdmVuKCkpIHtcbiAgICAgIHYuclNoaWZ0VG8oMSwgdilcbiAgICAgIGlmIChhYykge1xuICAgICAgICBpZiAoIWMuaXNFdmVuKCkgfHwgIWQuaXNFdmVuKCkpIHtcbiAgICAgICAgICBjLmFkZFRvKHRoaXMsIGMpXG4gICAgICAgICAgZC5zdWJUbyhtLCBkKVxuICAgICAgICB9XG4gICAgICAgIGMuclNoaWZ0VG8oMSwgYylcbiAgICAgIH0gZWxzZSBpZiAoIWQuaXNFdmVuKCkpIGQuc3ViVG8obSwgZClcbiAgICAgIGQuclNoaWZ0VG8oMSwgZClcbiAgICB9XG4gICAgaWYgKHUuY29tcGFyZVRvKHYpID49IDApIHtcbiAgICAgIHUuc3ViVG8odiwgdSlcbiAgICAgIGlmIChhYykgYS5zdWJUbyhjLCBhKVxuICAgICAgYi5zdWJUbyhkLCBiKVxuICAgIH0gZWxzZSB7XG4gICAgICB2LnN1YlRvKHUsIHYpXG4gICAgICBpZiAoYWMpIGMuc3ViVG8oYSwgYylcbiAgICAgIGQuc3ViVG8oYiwgZClcbiAgICB9XG4gIH1cbiAgaWYgKHYuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSAhPSAwKSByZXR1cm4gQmlnSW50ZWdlci5aRVJPXG4gIHdoaWxlIChkLmNvbXBhcmVUbyhtKSA+PSAwKSBkLnN1YlRvKG0sIGQpXG4gIHdoaWxlIChkLnNpZ251bSgpIDwgMCkgZC5hZGRUbyhtLCBkKVxuICByZXR1cm4gZFxufVxuXG52YXIgbG93cHJpbWVzID0gW1xuICAyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzcsIDQxLCA0MywgNDcsIDUzLCA1OSwgNjEsIDY3LCA3MSxcbiAgNzMsIDc5LCA4MywgODksIDk3LCAxMDEsIDEwMywgMTA3LCAxMDksIDExMywgMTI3LCAxMzEsIDEzNywgMTM5LCAxNDksIDE1MSxcbiAgMTU3LCAxNjMsIDE2NywgMTczLCAxNzksIDE4MSwgMTkxLCAxOTMsIDE5NywgMTk5LCAyMTEsIDIyMywgMjI3LCAyMjksIDIzMyxcbiAgMjM5LCAyNDEsIDI1MSwgMjU3LCAyNjMsIDI2OSwgMjcxLCAyNzcsIDI4MSwgMjgzLCAyOTMsIDMwNywgMzExLCAzMTMsIDMxNyxcbiAgMzMxLCAzMzcsIDM0NywgMzQ5LCAzNTMsIDM1OSwgMzY3LCAzNzMsIDM3OSwgMzgzLCAzODksIDM5NywgNDAxLCA0MDksIDQxOSxcbiAgNDIxLCA0MzEsIDQzMywgNDM5LCA0NDMsIDQ0OSwgNDU3LCA0NjEsIDQ2MywgNDY3LCA0NzksIDQ4NywgNDkxLCA0OTksIDUwMyxcbiAgNTA5LCA1MjEsIDUyMywgNTQxLCA1NDcsIDU1NywgNTYzLCA1NjksIDU3MSwgNTc3LCA1ODcsIDU5MywgNTk5LCA2MDEsIDYwNyxcbiAgNjEzLCA2MTcsIDYxOSwgNjMxLCA2NDEsIDY0MywgNjQ3LCA2NTMsIDY1OSwgNjYxLCA2NzMsIDY3NywgNjgzLCA2OTEsIDcwMSxcbiAgNzA5LCA3MTksIDcyNywgNzMzLCA3MzksIDc0MywgNzUxLCA3NTcsIDc2MSwgNzY5LCA3NzMsIDc4NywgNzk3LCA4MDksIDgxMSxcbiAgODIxLCA4MjMsIDgyNywgODI5LCA4MzksIDg1MywgODU3LCA4NTksIDg2MywgODc3LCA4ODEsIDg4MywgODg3LCA5MDcsIDkxMSxcbiAgOTE5LCA5MjksIDkzNywgOTQxLCA5NDcsIDk1MywgOTY3LCA5NzEsIDk3NywgOTgzLCA5OTEsIDk5N1xuXVxuXG52YXIgbHBsaW0gPSAoMSA8PCAyNikgLyBsb3dwcmltZXNbbG93cHJpbWVzLmxlbmd0aCAtIDFdXG5cbi8vIChwdWJsaWMpIHRlc3QgcHJpbWFsaXR5IHdpdGggY2VydGFpbnR5ID49IDEtLjVedFxuZnVuY3Rpb24gYm5Jc1Byb2JhYmxlUHJpbWUodCkge1xuICB2YXIgaSwgeCA9IHRoaXMuYWJzKClcbiAgaWYgKHgudCA9PSAxICYmIHhbMF0gPD0gbG93cHJpbWVzW2xvd3ByaW1lcy5sZW5ndGggLSAxXSkge1xuICAgIGZvciAoaSA9IDA7IGkgPCBsb3dwcmltZXMubGVuZ3RoOyArK2kpXG4gICAgICBpZiAoeFswXSA9PSBsb3dwcmltZXNbaV0pIHJldHVybiB0cnVlXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHguaXNFdmVuKCkpIHJldHVybiBmYWxzZVxuICBpID0gMVxuICB3aGlsZSAoaSA8IGxvd3ByaW1lcy5sZW5ndGgpIHtcbiAgICB2YXIgbSA9IGxvd3ByaW1lc1tpXSxcbiAgICAgIGogPSBpICsgMVxuICAgIHdoaWxlIChqIDwgbG93cHJpbWVzLmxlbmd0aCAmJiBtIDwgbHBsaW0pIG0gKj0gbG93cHJpbWVzW2orK11cbiAgICBtID0geC5tb2RJbnQobSlcbiAgICB3aGlsZSAoaSA8IGopIGlmIChtICUgbG93cHJpbWVzW2krK10gPT0gMCkgcmV0dXJuIGZhbHNlXG4gIH1cbiAgcmV0dXJuIHgubWlsbGVyUmFiaW4odClcbn1cblxuLy8gKHByb3RlY3RlZCkgdHJ1ZSBpZiBwcm9iYWJseSBwcmltZSAoSEFDIDQuMjQsIE1pbGxlci1SYWJpbilcbmZ1bmN0aW9uIGJucE1pbGxlclJhYmluKHQpIHtcbiAgdmFyIG4xID0gdGhpcy5zdWJ0cmFjdChCaWdJbnRlZ2VyLk9ORSlcbiAgdmFyIGsgPSBuMS5nZXRMb3dlc3RTZXRCaXQoKVxuICBpZiAoayA8PSAwKSByZXR1cm4gZmFsc2VcbiAgdmFyIHIgPSBuMS5zaGlmdFJpZ2h0KGspXG4gIHQgPSAodCArIDEpID4+IDFcbiAgaWYgKHQgPiBsb3dwcmltZXMubGVuZ3RoKSB0ID0gbG93cHJpbWVzLmxlbmd0aFxuICB2YXIgYSA9IG5ldyBCaWdJbnRlZ2VyKG51bGwpXG4gIHZhciBqLCBiYXNlcyA9IFtdXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdDsgKytpKSB7XG4gICAgZm9yICg7Oykge1xuICAgICAgaiA9IGxvd3ByaW1lc1tNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBsb3dwcmltZXMubGVuZ3RoKV1cbiAgICAgIGlmIChiYXNlcy5pbmRleE9mKGopID09IC0xKSBicmVha1xuICAgIH1cbiAgICBiYXNlcy5wdXNoKGopXG4gICAgYS5mcm9tSW50KGopXG4gICAgdmFyIHkgPSBhLm1vZFBvdyhyLCB0aGlzKVxuICAgIGlmICh5LmNvbXBhcmVUbyhCaWdJbnRlZ2VyLk9ORSkgIT0gMCAmJiB5LmNvbXBhcmVUbyhuMSkgIT0gMCkge1xuICAgICAgdmFyIGogPSAxXG4gICAgICB3aGlsZSAoaisrIDwgayAmJiB5LmNvbXBhcmVUbyhuMSkgIT0gMCkge1xuICAgICAgICB5ID0geS5tb2RQb3dJbnQoMiwgdGhpcylcbiAgICAgICAgaWYgKHkuY29tcGFyZVRvKEJpZ0ludGVnZXIuT05FKSA9PSAwKSByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICAgIGlmICh5LmNvbXBhcmVUbyhuMSkgIT0gMCkgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8vIHByb3RlY3RlZFxucHJvdG8uY2h1bmtTaXplID0gYm5wQ2h1bmtTaXplXG5wcm90by50b1JhZGl4ID0gYm5wVG9SYWRpeFxucHJvdG8uZnJvbVJhZGl4ID0gYm5wRnJvbVJhZGl4XG5wcm90by5mcm9tTnVtYmVyID0gYm5wRnJvbU51bWJlclxucHJvdG8uYml0d2lzZVRvID0gYm5wQml0d2lzZVRvXG5wcm90by5jaGFuZ2VCaXQgPSBibnBDaGFuZ2VCaXRcbnByb3RvLmFkZFRvID0gYm5wQWRkVG9cbnByb3RvLmRNdWx0aXBseSA9IGJucERNdWx0aXBseVxucHJvdG8uZEFkZE9mZnNldCA9IGJucERBZGRPZmZzZXRcbnByb3RvLm11bHRpcGx5TG93ZXJUbyA9IGJucE11bHRpcGx5TG93ZXJUb1xucHJvdG8ubXVsdGlwbHlVcHBlclRvID0gYm5wTXVsdGlwbHlVcHBlclRvXG5wcm90by5tb2RJbnQgPSBibnBNb2RJbnRcbnByb3RvLm1pbGxlclJhYmluID0gYm5wTWlsbGVyUmFiaW5cblxuLy8gcHVibGljXG5wcm90by5jbG9uZSA9IGJuQ2xvbmVcbnByb3RvLmludFZhbHVlID0gYm5JbnRWYWx1ZVxucHJvdG8uYnl0ZVZhbHVlID0gYm5CeXRlVmFsdWVcbnByb3RvLnNob3J0VmFsdWUgPSBiblNob3J0VmFsdWVcbnByb3RvLnNpZ251bSA9IGJuU2lnTnVtXG5wcm90by50b0J5dGVBcnJheSA9IGJuVG9CeXRlQXJyYXlcbnByb3RvLmVxdWFscyA9IGJuRXF1YWxzXG5wcm90by5taW4gPSBibk1pblxucHJvdG8ubWF4ID0gYm5NYXhcbnByb3RvLmFuZCA9IGJuQW5kXG5wcm90by5vciA9IGJuT3JcbnByb3RvLnhvciA9IGJuWG9yXG5wcm90by5hbmROb3QgPSBibkFuZE5vdFxucHJvdG8ubm90ID0gYm5Ob3RcbnByb3RvLnNoaWZ0TGVmdCA9IGJuU2hpZnRMZWZ0XG5wcm90by5zaGlmdFJpZ2h0ID0gYm5TaGlmdFJpZ2h0XG5wcm90by5nZXRMb3dlc3RTZXRCaXQgPSBibkdldExvd2VzdFNldEJpdFxucHJvdG8uYml0Q291bnQgPSBibkJpdENvdW50XG5wcm90by50ZXN0Qml0ID0gYm5UZXN0Qml0XG5wcm90by5zZXRCaXQgPSBiblNldEJpdFxucHJvdG8uY2xlYXJCaXQgPSBibkNsZWFyQml0XG5wcm90by5mbGlwQml0ID0gYm5GbGlwQml0XG5wcm90by5hZGQgPSBibkFkZFxucHJvdG8uc3VidHJhY3QgPSBiblN1YnRyYWN0XG5wcm90by5tdWx0aXBseSA9IGJuTXVsdGlwbHlcbnByb3RvLmRpdmlkZSA9IGJuRGl2aWRlXG5wcm90by5yZW1haW5kZXIgPSBiblJlbWFpbmRlclxucHJvdG8uZGl2aWRlQW5kUmVtYWluZGVyID0gYm5EaXZpZGVBbmRSZW1haW5kZXJcbnByb3RvLm1vZFBvdyA9IGJuTW9kUG93XG5wcm90by5tb2RJbnZlcnNlID0gYm5Nb2RJbnZlcnNlXG5wcm90by5wb3cgPSBiblBvd1xucHJvdG8uZ2NkID0gYm5HQ0RcbnByb3RvLmlzUHJvYmFibGVQcmltZSA9IGJuSXNQcm9iYWJsZVByaW1lXG5cbi8vIEpTQk4tc3BlY2lmaWMgZXh0ZW5zaW9uXG5wcm90by5zcXVhcmUgPSBiblNxdWFyZVxuXG4vLyBjb25zdGFudHNcbkJpZ0ludGVnZXIuWkVSTyA9IG5idigwKVxuQmlnSW50ZWdlci5PTkUgPSBuYnYoMSlcbkJpZ0ludGVnZXIudmFsdWVPZiA9IG5idlxuXG5tb2R1bGUuZXhwb3J0cyA9IEJpZ0ludGVnZXJcbiIsInZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgQmlnSW50ZWdlciA9IHJlcXVpcmUoJ2JpZ2knKVxuXG52YXIgVEhSRUUgPSBCaWdJbnRlZ2VyLnZhbHVlT2YoMylcblxuZnVuY3Rpb24gUG9pbnQgKGN1cnZlLCB4LCB5LCB6KSB7XG4gIGFzc2VydC5ub3RTdHJpY3RFcXVhbCh6LCB1bmRlZmluZWQsICdNaXNzaW5nIFogY29vcmRpbmF0ZScpXG5cbiAgdGhpcy5jdXJ2ZSA9IGN1cnZlXG4gIHRoaXMueCA9IHhcbiAgdGhpcy55ID0geVxuICB0aGlzLnogPSB6XG4gIHRoaXMuX3pJbnYgPSBudWxsXG5cbiAgdGhpcy5jb21wcmVzc2VkID0gdHJ1ZVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUG9pbnQucHJvdG90eXBlLCAnekludicsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3pJbnYgPT09IG51bGwpIHtcbiAgICAgIHRoaXMuX3pJbnYgPSB0aGlzLnoubW9kSW52ZXJzZSh0aGlzLmN1cnZlLnApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3pJbnZcbiAgfVxufSlcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFBvaW50LnByb3RvdHlwZSwgJ2FmZmluZVgnLCB7XG4gIGdldDogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLngubXVsdGlwbHkodGhpcy56SW52KS5tb2QodGhpcy5jdXJ2ZS5wKVxuICB9XG59KVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoUG9pbnQucHJvdG90eXBlLCAnYWZmaW5lWScsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMueS5tdWx0aXBseSh0aGlzLnpJbnYpLm1vZCh0aGlzLmN1cnZlLnApXG4gIH1cbn0pXG5cblBvaW50LmZyb21BZmZpbmUgPSBmdW5jdGlvbiAoY3VydmUsIHgsIHkpIHtcbiAgcmV0dXJuIG5ldyBQb2ludChjdXJ2ZSwgeCwgeSwgQmlnSW50ZWdlci5PTkUpXG59XG5cblBvaW50LnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAob3RoZXIpIHtcbiAgaWYgKG90aGVyID09PSB0aGlzKSByZXR1cm4gdHJ1ZVxuICBpZiAodGhpcy5jdXJ2ZS5pc0luZmluaXR5KHRoaXMpKSByZXR1cm4gdGhpcy5jdXJ2ZS5pc0luZmluaXR5KG90aGVyKVxuICBpZiAodGhpcy5jdXJ2ZS5pc0luZmluaXR5KG90aGVyKSkgcmV0dXJuIHRoaXMuY3VydmUuaXNJbmZpbml0eSh0aGlzKVxuXG4gIC8vIHUgPSBZMiAqIFoxIC0gWTEgKiBaMlxuICB2YXIgdSA9IG90aGVyLnkubXVsdGlwbHkodGhpcy56KS5zdWJ0cmFjdCh0aGlzLnkubXVsdGlwbHkob3RoZXIueikpLm1vZCh0aGlzLmN1cnZlLnApXG5cbiAgaWYgKHUuc2lnbnVtKCkgIT09IDApIHJldHVybiBmYWxzZVxuXG4gIC8vIHYgPSBYMiAqIFoxIC0gWDEgKiBaMlxuICB2YXIgdiA9IG90aGVyLngubXVsdGlwbHkodGhpcy56KS5zdWJ0cmFjdCh0aGlzLngubXVsdGlwbHkob3RoZXIueikpLm1vZCh0aGlzLmN1cnZlLnApXG5cbiAgcmV0dXJuIHYuc2lnbnVtKCkgPT09IDBcbn1cblxuUG9pbnQucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHkgPSB0aGlzLmN1cnZlLnAuc3VidHJhY3QodGhpcy55KVxuXG4gIHJldHVybiBuZXcgUG9pbnQodGhpcy5jdXJ2ZSwgdGhpcy54LCB5LCB0aGlzLnopXG59XG5cblBvaW50LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiAoYikge1xuICBpZiAodGhpcy5jdXJ2ZS5pc0luZmluaXR5KHRoaXMpKSByZXR1cm4gYlxuICBpZiAodGhpcy5jdXJ2ZS5pc0luZmluaXR5KGIpKSByZXR1cm4gdGhpc1xuXG4gIHZhciB4MSA9IHRoaXMueFxuICB2YXIgeTEgPSB0aGlzLnlcbiAgdmFyIHgyID0gYi54XG4gIHZhciB5MiA9IGIueVxuXG4gIC8vIHUgPSBZMiAqIFoxIC0gWTEgKiBaMlxuICB2YXIgdSA9IHkyLm11bHRpcGx5KHRoaXMueikuc3VidHJhY3QoeTEubXVsdGlwbHkoYi56KSkubW9kKHRoaXMuY3VydmUucClcbiAgLy8gdiA9IFgyICogWjEgLSBYMSAqIFoyXG4gIHZhciB2ID0geDIubXVsdGlwbHkodGhpcy56KS5zdWJ0cmFjdCh4MS5tdWx0aXBseShiLnopKS5tb2QodGhpcy5jdXJ2ZS5wKVxuXG4gIGlmICh2LnNpZ251bSgpID09PSAwKSB7XG4gICAgaWYgKHUuc2lnbnVtKCkgPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLnR3aWNlKCkgLy8gdGhpcyA9PSBiLCBzbyBkb3VibGVcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXJ2ZS5pbmZpbml0eSAvLyB0aGlzID0gLWIsIHNvIGluZmluaXR5XG4gIH1cblxuICB2YXIgdjIgPSB2LnNxdWFyZSgpXG4gIHZhciB2MyA9IHYyLm11bHRpcGx5KHYpXG4gIHZhciB4MXYyID0geDEubXVsdGlwbHkodjIpXG4gIHZhciB6dTIgPSB1LnNxdWFyZSgpLm11bHRpcGx5KHRoaXMueilcblxuICAvLyB4MyA9IHYgKiAoejIgKiAoejEgKiB1XjIgLSAyICogeDEgKiB2XjIpIC0gdl4zKVxuICB2YXIgeDMgPSB6dTIuc3VidHJhY3QoeDF2Mi5zaGlmdExlZnQoMSkpLm11bHRpcGx5KGIueikuc3VidHJhY3QodjMpLm11bHRpcGx5KHYpLm1vZCh0aGlzLmN1cnZlLnApXG4gIC8vIHkzID0gejIgKiAoMyAqIHgxICogdSAqIHZeMiAtIHkxICogdl4zIC0gejEgKiB1XjMpICsgdSAqIHZeM1xuICB2YXIgeTMgPSB4MXYyLm11bHRpcGx5KFRIUkVFKS5tdWx0aXBseSh1KS5zdWJ0cmFjdCh5MS5tdWx0aXBseSh2MykpLnN1YnRyYWN0KHp1Mi5tdWx0aXBseSh1KSkubXVsdGlwbHkoYi56KS5hZGQodS5tdWx0aXBseSh2MykpLm1vZCh0aGlzLmN1cnZlLnApXG4gIC8vIHozID0gdl4zICogejEgKiB6MlxuICB2YXIgejMgPSB2My5tdWx0aXBseSh0aGlzLnopLm11bHRpcGx5KGIueikubW9kKHRoaXMuY3VydmUucClcblxuICByZXR1cm4gbmV3IFBvaW50KHRoaXMuY3VydmUsIHgzLCB5MywgejMpXG59XG5cblBvaW50LnByb3RvdHlwZS50d2ljZSA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKHRoaXMuY3VydmUuaXNJbmZpbml0eSh0aGlzKSkgcmV0dXJuIHRoaXNcbiAgaWYgKHRoaXMueS5zaWdudW0oKSA9PT0gMCkgcmV0dXJuIHRoaXMuY3VydmUuaW5maW5pdHlcblxuICB2YXIgeDEgPSB0aGlzLnhcbiAgdmFyIHkxID0gdGhpcy55XG5cbiAgdmFyIHkxejEgPSB5MS5tdWx0aXBseSh0aGlzLnopLm1vZCh0aGlzLmN1cnZlLnApXG4gIHZhciB5MXNxejEgPSB5MXoxLm11bHRpcGx5KHkxKS5tb2QodGhpcy5jdXJ2ZS5wKVxuICB2YXIgYSA9IHRoaXMuY3VydmUuYVxuXG4gIC8vIHcgPSAzICogeDFeMiArIGEgKiB6MV4yXG4gIHZhciB3ID0geDEuc3F1YXJlKCkubXVsdGlwbHkoVEhSRUUpXG5cbiAgaWYgKGEuc2lnbnVtKCkgIT09IDApIHtcbiAgICB3ID0gdy5hZGQodGhpcy56LnNxdWFyZSgpLm11bHRpcGx5KGEpKVxuICB9XG5cbiAgdyA9IHcubW9kKHRoaXMuY3VydmUucClcbiAgLy8geDMgPSAyICogeTEgKiB6MSAqICh3XjIgLSA4ICogeDEgKiB5MV4yICogejEpXG4gIHZhciB4MyA9IHcuc3F1YXJlKCkuc3VidHJhY3QoeDEuc2hpZnRMZWZ0KDMpLm11bHRpcGx5KHkxc3F6MSkpLnNoaWZ0TGVmdCgxKS5tdWx0aXBseSh5MXoxKS5tb2QodGhpcy5jdXJ2ZS5wKVxuICAvLyB5MyA9IDQgKiB5MV4yICogejEgKiAoMyAqIHcgKiB4MSAtIDIgKiB5MV4yICogejEpIC0gd14zXG4gIHZhciB5MyA9IHcubXVsdGlwbHkoVEhSRUUpLm11bHRpcGx5KHgxKS5zdWJ0cmFjdCh5MXNxejEuc2hpZnRMZWZ0KDEpKS5zaGlmdExlZnQoMikubXVsdGlwbHkoeTFzcXoxKS5zdWJ0cmFjdCh3LnBvdygzKSkubW9kKHRoaXMuY3VydmUucClcbiAgLy8gejMgPSA4ICogKHkxICogejEpXjNcbiAgdmFyIHozID0geTF6MS5wb3coMykuc2hpZnRMZWZ0KDMpLm1vZCh0aGlzLmN1cnZlLnApXG5cbiAgcmV0dXJuIG5ldyBQb2ludCh0aGlzLmN1cnZlLCB4MywgeTMsIHozKVxufVxuXG4vLyBTaW1wbGUgTkFGIChOb24tQWRqYWNlbnQgRm9ybSkgbXVsdGlwbGljYXRpb24gYWxnb3JpdGhtXG4vLyBUT0RPOiBtb2R1bGFyaXplIHRoZSBtdWx0aXBsaWNhdGlvbiBhbGdvcml0aG1cblBvaW50LnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIChrKSB7XG4gIGlmICh0aGlzLmN1cnZlLmlzSW5maW5pdHkodGhpcykpIHJldHVybiB0aGlzXG4gIGlmIChrLnNpZ251bSgpID09PSAwKSByZXR1cm4gdGhpcy5jdXJ2ZS5pbmZpbml0eVxuXG4gIHZhciBlID0ga1xuICB2YXIgaCA9IGUubXVsdGlwbHkoVEhSRUUpXG5cbiAgdmFyIG5lZyA9IHRoaXMubmVnYXRlKClcbiAgdmFyIFIgPSB0aGlzXG5cbiAgZm9yICh2YXIgaSA9IGguYml0TGVuZ3RoKCkgLSAyOyBpID4gMDsgLS1pKSB7XG4gICAgdmFyIGhCaXQgPSBoLnRlc3RCaXQoaSlcbiAgICB2YXIgZUJpdCA9IGUudGVzdEJpdChpKVxuXG4gICAgUiA9IFIudHdpY2UoKVxuXG4gICAgaWYgKGhCaXQgIT09IGVCaXQpIHtcbiAgICAgIFIgPSBSLmFkZChoQml0ID8gdGhpcyA6IG5lZylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gUlxufVxuXG4vLyBDb21wdXRlIHRoaXMqaiArIHgqayAoc2ltdWx0YW5lb3VzIG11bHRpcGxpY2F0aW9uKVxuUG9pbnQucHJvdG90eXBlLm11bHRpcGx5VHdvID0gZnVuY3Rpb24gKGosIHgsIGspIHtcbiAgdmFyIGkgPSBNYXRoLm1heChqLmJpdExlbmd0aCgpLCBrLmJpdExlbmd0aCgpKSAtIDFcbiAgdmFyIFIgPSB0aGlzLmN1cnZlLmluZmluaXR5XG4gIHZhciBib3RoID0gdGhpcy5hZGQoeClcblxuICB3aGlsZSAoaSA+PSAwKSB7XG4gICAgdmFyIGpCaXQgPSBqLnRlc3RCaXQoaSlcbiAgICB2YXIga0JpdCA9IGsudGVzdEJpdChpKVxuXG4gICAgUiA9IFIudHdpY2UoKVxuXG4gICAgaWYgKGpCaXQpIHtcbiAgICAgIGlmIChrQml0KSB7XG4gICAgICAgIFIgPSBSLmFkZChib3RoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUiA9IFIuYWRkKHRoaXMpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChrQml0KSB7XG4gICAgICBSID0gUi5hZGQoeClcbiAgICB9XG4gICAgLS1pXG4gIH1cblxuICByZXR1cm4gUlxufVxuXG5Qb2ludC5wcm90b3R5cGUuZ2V0RW5jb2RlZCA9IGZ1bmN0aW9uIChjb21wcmVzc2VkKSB7XG4gIGlmIChjb21wcmVzc2VkID09IG51bGwpIGNvbXByZXNzZWQgPSB0aGlzLmNvbXByZXNzZWRcbiAgaWYgKHRoaXMuY3VydmUuaXNJbmZpbml0eSh0aGlzKSkgcmV0dXJuIEJ1ZmZlci5hbGxvYygxLCAwKSAvLyBJbmZpbml0eSBwb2ludCBlbmNvZGVkIGlzIHNpbXBseSAnMDAnXG5cbiAgdmFyIHggPSB0aGlzLmFmZmluZVhcbiAgdmFyIHkgPSB0aGlzLmFmZmluZVlcbiAgdmFyIGJ5dGVMZW5ndGggPSB0aGlzLmN1cnZlLnBMZW5ndGhcbiAgdmFyIGJ1ZmZlclxuXG4gIC8vIDB4MDIvMHgwMyB8IFhcbiAgaWYgKGNvbXByZXNzZWQpIHtcbiAgICBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoMSArIGJ5dGVMZW5ndGgpXG4gICAgYnVmZmVyLndyaXRlVUludDgoeS5pc0V2ZW4oKSA/IDB4MDIgOiAweDAzLCAwKVxuXG4gIC8vIDB4MDQgfCBYIHwgWVxuICB9IGVsc2Uge1xuICAgIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgxICsgYnl0ZUxlbmd0aCArIGJ5dGVMZW5ndGgpXG4gICAgYnVmZmVyLndyaXRlVUludDgoMHgwNCwgMClcblxuICAgIHkudG9CdWZmZXIoYnl0ZUxlbmd0aCkuY29weShidWZmZXIsIDEgKyBieXRlTGVuZ3RoKVxuICB9XG5cbiAgeC50b0J1ZmZlcihieXRlTGVuZ3RoKS5jb3B5KGJ1ZmZlciwgMSlcblxuICByZXR1cm4gYnVmZmVyXG59XG5cblBvaW50LmRlY29kZUZyb20gPSBmdW5jdGlvbiAoY3VydmUsIGJ1ZmZlcikge1xuICB2YXIgdHlwZSA9IGJ1ZmZlci5yZWFkVUludDgoMClcbiAgdmFyIGNvbXByZXNzZWQgPSAodHlwZSAhPT0gNClcblxuICB2YXIgYnl0ZUxlbmd0aCA9IE1hdGguZmxvb3IoKGN1cnZlLnAuYml0TGVuZ3RoKCkgKyA3KSAvIDgpXG4gIHZhciB4ID0gQmlnSW50ZWdlci5mcm9tQnVmZmVyKGJ1ZmZlci5zbGljZSgxLCAxICsgYnl0ZUxlbmd0aCkpXG5cbiAgdmFyIFFcbiAgaWYgKGNvbXByZXNzZWQpIHtcbiAgICBhc3NlcnQuZXF1YWwoYnVmZmVyLmxlbmd0aCwgYnl0ZUxlbmd0aCArIDEsICdJbnZhbGlkIHNlcXVlbmNlIGxlbmd0aCcpXG4gICAgYXNzZXJ0KHR5cGUgPT09IDB4MDIgfHwgdHlwZSA9PT0gMHgwMywgJ0ludmFsaWQgc2VxdWVuY2UgdGFnJylcblxuICAgIHZhciBpc09kZCA9ICh0eXBlID09PSAweDAzKVxuICAgIFEgPSBjdXJ2ZS5wb2ludEZyb21YKGlzT2RkLCB4KVxuICB9IGVsc2Uge1xuICAgIGFzc2VydC5lcXVhbChidWZmZXIubGVuZ3RoLCAxICsgYnl0ZUxlbmd0aCArIGJ5dGVMZW5ndGgsICdJbnZhbGlkIHNlcXVlbmNlIGxlbmd0aCcpXG5cbiAgICB2YXIgeSA9IEJpZ0ludGVnZXIuZnJvbUJ1ZmZlcihidWZmZXIuc2xpY2UoMSArIGJ5dGVMZW5ndGgpKVxuICAgIFEgPSBQb2ludC5mcm9tQWZmaW5lKGN1cnZlLCB4LCB5KVxuICB9XG5cbiAgUS5jb21wcmVzc2VkID0gY29tcHJlc3NlZFxuICByZXR1cm4gUVxufVxuXG5Qb2ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLmN1cnZlLmlzSW5maW5pdHkodGhpcykpIHJldHVybiAnKElORklOSVRZKSdcblxuICByZXR1cm4gJygnICsgdGhpcy5hZmZpbmVYLnRvU3RyaW5nKCkgKyAnLCcgKyB0aGlzLmFmZmluZVkudG9TdHJpbmcoKSArICcpJ1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFBvaW50XG4iLCJ2YXIgYXNzZXJ0ID0gcmVxdWlyZSgnYXNzZXJ0JylcbnZhciBCaWdJbnRlZ2VyID0gcmVxdWlyZSgnYmlnaScpXG5cbnZhciBQb2ludCA9IHJlcXVpcmUoJy4vcG9pbnQnKVxuXG5mdW5jdGlvbiBDdXJ2ZSAocCwgYSwgYiwgR3gsIEd5LCBuLCBoKSB7XG4gIHRoaXMucCA9IHBcbiAgdGhpcy5hID0gYVxuICB0aGlzLmIgPSBiXG4gIHRoaXMuRyA9IFBvaW50LmZyb21BZmZpbmUodGhpcywgR3gsIEd5KVxuICB0aGlzLm4gPSBuXG4gIHRoaXMuaCA9IGhcblxuICB0aGlzLmluZmluaXR5ID0gbmV3IFBvaW50KHRoaXMsIG51bGwsIG51bGwsIEJpZ0ludGVnZXIuWkVSTylcblxuICAvLyByZXN1bHQgY2FjaGluZ1xuICB0aGlzLnBPdmVyRm91ciA9IHAuYWRkKEJpZ0ludGVnZXIuT05FKS5zaGlmdFJpZ2h0KDIpXG5cbiAgLy8gZGV0ZXJtaW5lIHNpemUgb2YgcCBpbiBieXRlc1xuICB0aGlzLnBMZW5ndGggPSBNYXRoLmZsb29yKCh0aGlzLnAuYml0TGVuZ3RoKCkgKyA3KSAvIDgpXG59XG5cbkN1cnZlLnByb3RvdHlwZS5wb2ludEZyb21YID0gZnVuY3Rpb24gKGlzT2RkLCB4KSB7XG4gIHZhciBhbHBoYSA9IHgucG93KDMpLmFkZCh0aGlzLmEubXVsdGlwbHkoeCkpLmFkZCh0aGlzLmIpLm1vZCh0aGlzLnApXG4gIHZhciBiZXRhID0gYWxwaGEubW9kUG93KHRoaXMucE92ZXJGb3VyLCB0aGlzLnApIC8vIFhYWDogbm90IGNvbXBhdGlibGUgd2l0aCBhbGwgY3VydmVzXG5cbiAgdmFyIHkgPSBiZXRhXG4gIGlmIChiZXRhLmlzRXZlbigpIF4gIWlzT2RkKSB7XG4gICAgeSA9IHRoaXMucC5zdWJ0cmFjdCh5KSAvLyAteSAlIHBcbiAgfVxuXG4gIHJldHVybiBQb2ludC5mcm9tQWZmaW5lKHRoaXMsIHgsIHkpXG59XG5cbkN1cnZlLnByb3RvdHlwZS5pc0luZmluaXR5ID0gZnVuY3Rpb24gKFEpIHtcbiAgaWYgKFEgPT09IHRoaXMuaW5maW5pdHkpIHJldHVybiB0cnVlXG5cbiAgcmV0dXJuIFEuei5zaWdudW0oKSA9PT0gMCAmJiBRLnkuc2lnbnVtKCkgIT09IDBcbn1cblxuQ3VydmUucHJvdG90eXBlLmlzT25DdXJ2ZSA9IGZ1bmN0aW9uIChRKSB7XG4gIGlmICh0aGlzLmlzSW5maW5pdHkoUSkpIHJldHVybiB0cnVlXG5cbiAgdmFyIHggPSBRLmFmZmluZVhcbiAgdmFyIHkgPSBRLmFmZmluZVlcbiAgdmFyIGEgPSB0aGlzLmFcbiAgdmFyIGIgPSB0aGlzLmJcbiAgdmFyIHAgPSB0aGlzLnBcblxuICAvLyBDaGVjayB0aGF0IHhRIGFuZCB5USBhcmUgaW50ZWdlcnMgaW4gdGhlIGludGVydmFsIFswLCBwIC0gMV1cbiAgaWYgKHguc2lnbnVtKCkgPCAwIHx8IHguY29tcGFyZVRvKHApID49IDApIHJldHVybiBmYWxzZVxuICBpZiAoeS5zaWdudW0oKSA8IDAgfHwgeS5jb21wYXJlVG8ocCkgPj0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgLy8gYW5kIGNoZWNrIHRoYXQgeV4yID0geF4zICsgYXggKyBiIChtb2QgcClcbiAgdmFyIGxocyA9IHkuc3F1YXJlKCkubW9kKHApXG4gIHZhciByaHMgPSB4LnBvdygzKS5hZGQoYS5tdWx0aXBseSh4KSkuYWRkKGIpLm1vZChwKVxuICByZXR1cm4gbGhzLmVxdWFscyhyaHMpXG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW4gZWxsaXB0aWMgY3VydmUgcG9pbnQuXG4gKlxuICogU2VlIFNFQyAxLCBzZWN0aW9uIDMuMi4yLjE6IEVsbGlwdGljIEN1cnZlIFB1YmxpYyBLZXkgVmFsaWRhdGlvbiBQcmltaXRpdmVcbiAqL1xuQ3VydmUucHJvdG90eXBlLnZhbGlkYXRlID0gZnVuY3Rpb24gKFEpIHtcbiAgLy8gQ2hlY2sgUSAhPSBPXG4gIGFzc2VydCghdGhpcy5pc0luZmluaXR5KFEpLCAnUG9pbnQgaXMgYXQgaW5maW5pdHknKVxuICBhc3NlcnQodGhpcy5pc09uQ3VydmUoUSksICdQb2ludCBpcyBub3Qgb24gdGhlIGN1cnZlJylcblxuICAvLyBDaGVjayBuUSA9IE8gKHdoZXJlIFEgaXMgYSBzY2FsYXIgbXVsdGlwbGUgb2YgRylcbiAgdmFyIG5RID0gUS5tdWx0aXBseSh0aGlzLm4pXG4gIGFzc2VydCh0aGlzLmlzSW5maW5pdHkoblEpLCAnUG9pbnQgaXMgbm90IGEgc2NhbGFyIG11bHRpcGxlIG9mIEcnKVxuXG4gIHJldHVybiB0cnVlXG59XG5cbm1vZHVsZS5leHBvcnRzID0gQ3VydmVcbiIsIid1c2Ugc3RyaWN0J1xuXG5mdW5jdGlvbiBvbGRCcm93c2VyICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdTZWN1cmUgcmFuZG9tIG51bWJlciBnZW5lcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBicm93c2VyLlxcblVzZSBDaHJvbWUsIEZpcmVmb3ggb3IgSW50ZXJuZXQgRXhwbG9yZXIgMTEnKVxufVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBjcnlwdG8gPSBnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0b1xuXG5pZiAoY3J5cHRvICYmIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByYW5kb21CeXRlc1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBvbGRCcm93c2VyXG59XG5cbmZ1bmN0aW9uIHJhbmRvbUJ5dGVzIChzaXplLCBjYikge1xuICAvLyBwaGFudG9tanMgbmVlZHMgdG8gdGhyb3dcbiAgaWYgKHNpemUgPiA2NTUzNikgdGhyb3cgbmV3IEVycm9yKCdyZXF1ZXN0ZWQgdG9vIG1hbnkgcmFuZG9tIGJ5dGVzJylcbiAgLy8gaW4gY2FzZSBicm93c2VyaWZ5ICBpc24ndCB1c2luZyB0aGUgVWludDhBcnJheSB2ZXJzaW9uXG4gIHZhciByYXdCeXRlcyA9IG5ldyBnbG9iYWwuVWludDhBcnJheShzaXplKVxuXG4gIC8vIFRoaXMgd2lsbCBub3Qgd29yayBpbiBvbGRlciBicm93c2Vycy5cbiAgLy8gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS93aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlc1xuICBpZiAoc2l6ZSA+IDApIHsgIC8vIGdldFJhbmRvbVZhbHVlcyBmYWlscyBvbiBJRSBpZiBzaXplID09IDBcbiAgICBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKHJhd0J5dGVzKVxuICB9XG5cbiAgLy8gWFhYOiBwaGFudG9tanMgZG9lc24ndCBsaWtlIGEgYnVmZmVyIGJlaW5nIHBhc3NlZCBoZXJlXG4gIHZhciBieXRlcyA9IEJ1ZmZlci5mcm9tKHJhd0J5dGVzLmJ1ZmZlcilcblxuICBpZiAodHlwZW9mIGNiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgICAgY2IobnVsbCwgYnl0ZXMpXG4gICAgfSlcbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0aWYgKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XG5cdFx0bW9kdWxlLnBhdGhzID0gW107XG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XG5cdFx0aWYgKCFtb2R1bGUuY2hpbGRyZW4pIG1vZHVsZS5jaGlsZHJlbiA9IFtdO1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsIFwibG9hZGVkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmw7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJpZFwiLCB7XG5cdFx0XHRlbnVtZXJhYmxlOiB0cnVlLFxuXHRcdFx0Z2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdFx0cmV0dXJuIG1vZHVsZS5pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwgPSAxO1xuXHR9XG5cdHJldHVybiBtb2R1bGU7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB1bmRlZmluZWQ7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbnZhciBfZGV2aWNlID0gcmVxdWlyZSgnLi9kZXZpY2UnKTtcblxudmFyIF9kZXZpY2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGV2aWNlKTtcblxudmFyIF9ldmVudHMgPSByZXF1aXJlKCcuL2V2ZW50cycpO1xuXG52YXIgX2Zsb3dFdmVudHMgPSByZXF1aXJlKCcuL2Zsb3ctZXZlbnRzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIFVuYWNxdWlyZWREZXZpY2UgPSBmdW5jdGlvbiAoX0V2ZW50RW1pdHRlcikge1xuICAgIF9pbmhlcml0cyhVbmFjcXVpcmVkRGV2aWNlLCBfRXZlbnRFbWl0dGVyKTtcblxuICAgIC8vIG5vdGUgLSBpZiB0aGUgZGV2aWNlIGlzIGNoYW5nZWQgdG8gRGV2aWNlLCB0aGlzIGlzIGFsc28gZmFsc2VcblxuICAgIGZ1bmN0aW9uIFVuYWNxdWlyZWREZXZpY2UodHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBkZXZpY2VMaXN0KSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBVbmFjcXVpcmVkRGV2aWNlKTtcblxuICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoVW5hY3F1aXJlZERldmljZS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKFVuYWNxdWlyZWREZXZpY2UpKS5jYWxsKHRoaXMpKTtcblxuICAgICAgICBfdGhpcy5jb25uZWN0ZWQgPSB0cnVlO1xuICAgICAgICBfdGhpcy5jb25uZWN0RXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdjb25uZWN0JywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5kaXNjb25uZWN0RXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQwKCdkaXNjb25uZWN0JywgX3RoaXMpO1xuXG4gICAgICAgIF90aGlzLnRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiAgICAgICAgX3RoaXMub3JpZ2luYWxEZXNjcmlwdG9yID0gZGVzY3JpcHRvcjtcbiAgICAgICAgX3RoaXMuZGV2aWNlTGlzdCA9IGRldmljZUxpc3Q7XG4gICAgICAgIF90aGlzLl93YXRjaCgpO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKFVuYWNxdWlyZWREZXZpY2UsIFt7XG4gICAgICAgIGtleTogJ193YXRjaENvbm5lY3REaXNjb25uZWN0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF93YXRjaENvbm5lY3REaXNjb25uZWN0KG9uQ29ubmVjdCwgb25EaXNjb25uZWN0KSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgdmFyIF9kaXNjb25uZWN0TGlzdGVuZXIgPSBmdW5jdGlvbiBkaXNjb25uZWN0TGlzdGVuZXIoZGV2KSB7fTtcbiAgICAgICAgICAgIHZhciBjb25uZWN0TGlzdGVuZXIgPSBmdW5jdGlvbiBjb25uZWN0TGlzdGVuZXIoZGV2aWNlLCB1bmFjcXVpcmVkRGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzMiA9PT0gdW5hY3F1aXJlZERldmljZSkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpczIuZGV2aWNlTGlzdC5jb25uZWN0RXZlbnQucmVtb3ZlTGlzdGVuZXIoY29ubmVjdExpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmRldmljZUxpc3QuZGlzY29ubmVjdFVuYWNxdWlyZWRFdmVudC5yZW1vdmVMaXN0ZW5lcihfZGlzY29ubmVjdExpc3RlbmVyKTtcbiAgICAgICAgICAgICAgICAgICAgb25Db25uZWN0KGRldmljZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIF9kaXNjb25uZWN0TGlzdGVuZXIgPSBmdW5jdGlvbiBkaXNjb25uZWN0TGlzdGVuZXIodW5hY3F1aXJlZERldmljZSkge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpczIgPT09IHVuYWNxdWlyZWREZXZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmRldmljZUxpc3QuY29ubmVjdEV2ZW50LnJlbW92ZUxpc3RlbmVyKGNvbm5lY3RMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzMi5kZXZpY2VMaXN0LmRpc2Nvbm5lY3RVbmFjcXVpcmVkRXZlbnQucmVtb3ZlTGlzdGVuZXIoX2Rpc2Nvbm5lY3RMaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgICAgIG9uRGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLmRldmljZUxpc3Qub25VbmFjcXVpcmVkQ29ubmVjdCh0aGlzLCBjb25uZWN0TGlzdGVuZXIpO1xuICAgICAgICAgICAgdGhpcy5kZXZpY2VMaXN0Lm9uVW5hY3F1aXJlZERpc2Nvbm5lY3QodGhpcywgX2Rpc2Nvbm5lY3RMaXN0ZW5lcik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyByZXR1cm5zIFByb21pc2UganVzdCB0byBiZSBzaW1pbGFyIHRvIERldmljZS5mcm9tUGF0aFxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzdGVhbCcsXG5cblxuICAgICAgICAvLyB3aGF0IHN0ZWFsKCkgZG9lcyBpcyB0aGF0IGl0IGRvZXMgbm90IGFjdHVhbGx5IGtlZXAgdGhlIHNlc3Npb24gZm9yIGl0c2VsZlxuICAgICAgICAvLyBiZWNhdXNlIGl0IGltbWVkaWF0ZWx5IHJlbGVhc2VzIGl0IGFnYWluO1xuICAgICAgICAvLyBob3dldmVyLCBpdCBtaWdodCBzdG9wIHNvbWUgb3RoZXIgcHJvY2VzcyBpbiBhbm90aGVyIGFwcCxcbiAgICAgICAgLy8gc28gdGhlIGRldmljZSB3aWxsIGJlY29tZSBcInVzYWJsZVwiLlxuICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGFjdHVhbGx5IHJldHVybnMgdGhlIG5ldyBEZXZpY2Ugb2JqZWN0XG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzdGVhbCgpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICAgICAgICAvLyBJIHdpbGwgc2ltdWx0YW5pb3VzbHkgcnVuIGluaXRpYWxpemF0aW9uIGFuZCB3YWl0IGZvciBkZXZpY2VsaXN0IHRvIHJldHVybiBkZXZpY2UgdG8gbWVcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgX3RoaXMzLl93YXRjaENvbm5lY3REaXNjb25uZWN0KGZ1bmN0aW9uIChkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZGV2aWNlKTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdEZXZpY2UgZGlzY29ubmVjdGVkIGJlZm9yZSBncmFiYmluZycpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGN1cnJlbnRTZXNzaW9uID0gdGhpcy5kZXZpY2VMaXN0LmdldFNlc3Npb24odGhpcy5vcmlnaW5hbERlc2NyaXB0b3IucGF0aCwgZmFsc2UpO1xuICAgICAgICAgICAgdmFyIGRlc2NyaXB0b3IgPSBfZXh0ZW5kcyh7fSwgdGhpcy5vcmlnaW5hbERlc2NyaXB0b3IsIHsgc2Vzc2lvbjogY3VycmVudFNlc3Npb24gfSk7XG5cbiAgICAgICAgICAgIC8vIGlmIHRoZSBydW4gZmFpbHMsIEkgd2FudCB0byByZXR1cm4gdGhhdCBlcnJvciwgSSBndWVzc1xuICAgICAgICAgICAgdmFyIGFnZ3Jlc3NpdmVSdW5SZXN1bHQgPSBfZGV2aWNlMi5kZWZhdWx0Ll9ydW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSwgdGhpcy50cmFuc3BvcnQsIGRlc2NyaXB0b3IsIHRoaXMuZGV2aWNlTGlzdCwgbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIGFnZ3Jlc3NpdmVSdW5SZXN1bHQudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfd2F0Y2gnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3dhdGNoKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHRoaXMuX3dhdGNoQ29ubmVjdERpc2Nvbm5lY3QoZnVuY3Rpb24gKGRldmljZSkge1xuICAgICAgICAgICAgICAgIF90aGlzNC5jb25uZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfdGhpczQuY29ubmVjdEV2ZW50LmVtaXQoZGV2aWNlKTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBfdGhpczQuY29ubmVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgX3RoaXM0LmRpc2Nvbm5lY3RFdmVudC5lbWl0KCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1dLCBbe1xuICAgICAgICBrZXk6ICdmcm9tRGVzY3JpcHRvcicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBmcm9tRGVzY3JpcHRvcih0cmFuc3BvcnQsIGRlc2NyaXB0b3IsIGRldmljZUxpc3QpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IFVuYWNxdWlyZWREZXZpY2UodHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBkZXZpY2VMaXN0KSk7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gVW5hY3F1aXJlZERldmljZTtcbn0oX2V2ZW50cy5FdmVudEVtaXR0ZXIpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBVbmFjcXVpcmVkRGV2aWNlO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBjbXAgKGEsIGIpIHtcbiAgICB2YXIgcGEgPSBhLnNwbGl0KCcuJyk7XG4gICAgdmFyIHBiID0gYi5zcGxpdCgnLicpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICAgIHZhciBuYSA9IE51bWJlcihwYVtpXSk7XG4gICAgICAgIHZhciBuYiA9IE51bWJlcihwYltpXSk7XG4gICAgICAgIGlmIChuYSA+IG5iKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKG5iID4gbmEpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKCFpc05hTihuYSkgJiYgaXNOYU4obmIpKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGlzTmFOKG5hKSAmJiAhaXNOYU4obmIpKSByZXR1cm4gLTE7XG4gICAgfVxuICAgIHJldHVybiAwO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmxvY2sgPSBsb2NrO1xudmFyIGN1cnJlbnRQID0gUHJvbWlzZS5yZXNvbHZlKCk7XG5cbmZ1bmN0aW9uIGxvY2soZm4pIHtcbiAgICB2YXIgcmVzID0gY3VycmVudFAudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmbigpO1xuICAgIH0pO1xuICAgIGN1cnJlbnRQID0gcmVzLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHVuZGVmaW5lZDtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxudmFyIF9ldmVudHMgPSByZXF1aXJlKCcuL2V2ZW50cycpO1xuXG52YXIgX2Zsb3dFdmVudHMgPSByZXF1aXJlKCcuL2Zsb3ctZXZlbnRzJyk7XG5cbnZhciBfY29ubmVjdGlvbkxvY2sgPSByZXF1aXJlKCcuL3V0aWxzL2Nvbm5lY3Rpb25Mb2NrJyk7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIERlc2NyaXB0b3JTdHJlYW0gPSBmdW5jdGlvbiAoX0V2ZW50RW1pdHRlcikge1xuICAgIF9pbmhlcml0cyhEZXNjcmlwdG9yU3RyZWFtLCBfRXZlbnRFbWl0dGVyKTtcblxuICAgIGZ1bmN0aW9uIERlc2NyaXB0b3JTdHJlYW0odHJhbnNwb3J0KSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBEZXNjcmlwdG9yU3RyZWFtKTtcblxuICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoRGVzY3JpcHRvclN0cmVhbS5fX3Byb3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKERlc2NyaXB0b3JTdHJlYW0pKS5jYWxsKHRoaXMpKTtcblxuICAgICAgICBfdGhpcy5saXN0ZW5pbmcgPSBmYWxzZTtcbiAgICAgICAgX3RoaXMuZmFpbGVkVG9GZXRjaFRpbWVzdGFtcCA9IDA7XG4gICAgICAgIF90aGlzLnByZXZpb3VzID0gbnVsbDtcbiAgICAgICAgX3RoaXMuY3VycmVudCA9IFtdO1xuICAgICAgICBfdGhpcy5lcnJvckV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnZXJyb3InLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmNvbm5lY3RFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ2Nvbm5lY3QnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmRpc2Nvbm5lY3RFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ2Rpc2Nvbm5lY3QnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmFjcXVpcmVkRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdhY3F1aXJlZCcsIF90aGlzKTtcbiAgICAgICAgX3RoaXMucmVsZWFzZWRFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ3JlbGVhc2VkJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5jaGFuZ2VkU2Vzc2lvbnNFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ2NoYW5nZWRTZXNzaW9ucycsIF90aGlzKTtcbiAgICAgICAgX3RoaXMudXBkYXRlRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCd1cGRhdGUnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmRlYnVnQWNxdWlyZWRFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ2RlYnVnQWNxdWlyZWQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmRlYnVnUmVsZWFzZWRFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ2RlYnVnUmVsZWFzZWQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmRlYnVnQ2hhbmdlZFNlc3Npb25zRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdkZWJ1Z0NoYW5nZWRTZXNzaW9ucycsIF90aGlzKTtcblxuICAgICAgICBfdGhpcy50cmFuc3BvcnQgPSB0cmFuc3BvcnQ7XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoRGVzY3JpcHRvclN0cmVhbSwgW3tcbiAgICAgICAga2V5OiAnc2V0SGFyZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzZXRIYXJkKHBhdGgsIHNlc3Npb24sIGRlYnVnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2aW91cyAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvcHkgPSB0aGlzLnByZXZpb3VzLm1hcChmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZC5wYXRoID09PSBwYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVidWdTZXNzaW9uID0gc2Vzc2lvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGQsIHsgZGVidWdTZXNzaW9uOiBkZWJ1Z1Nlc3Npb24gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGQsIHsgc2Vzc2lvbjogc2Vzc2lvbiB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gY29weTtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZXBvcnRDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2xpc3RlbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBsaXN0ZW4oKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgLy8gaWYgd2UgYXJlIG5vdCBlbnVtZXJhdGluZyBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIGNhbiBsZXRcbiAgICAgICAgICAgIC8vIHRoZSB0cmFuc3BvcnQgdG8gYmxvY2sgdW50aWwgc29tZXRoaW5nIGhhcHBlbnNcbiAgICAgICAgICAgIHZhciB3YWl0Rm9yRXZlbnQgPSB0aGlzLnByZXZpb3VzICE9PSBudWxsO1xuXG4gICAgICAgICAgICB0aGlzLmxpc3RlbmluZyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcHJldmlvdXMgPSB0aGlzLnByZXZpb3VzIHx8IFtdO1xuICAgICAgICAgICAgdmFyIHByb21pc2UgPSB3YWl0Rm9yRXZlbnQgPyB0aGlzLnRyYW5zcG9ydC5saXN0ZW4ocHJldmlvdXMpIDogdGhpcy50cmFuc3BvcnQuZW51bWVyYXRlKCk7XG4gICAgICAgICAgICBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKGRlc2NyaXB0b3JzKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpczIubGlzdGVuaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBjb250aW51ZSBpZiBzdG9wKCkgd2FzIGNhbGxlZFxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX3RoaXMyLmZhaWxlZFRvRmV0Y2hUaW1lc3RhbXAgPSAwO1xuXG4gICAgICAgICAgICAgICAgX3RoaXMyLmN1cnJlbnQgPSBkZXNjcmlwdG9ycztcbiAgICAgICAgICAgICAgICBfdGhpczIuX3JlcG9ydENoYW5nZXMoKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzMi5saXN0ZW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZXJzIG1pZ2h0IGhhdmUgY2FsbGVkIHN0b3AoKVxuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmxpc3RlbigpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3IubWVzc2FnZSA9PT0gJ0ZhaWxlZCB0byBmZXRjaCcgJiYgdHMgLSBfdGhpczIuZmFpbGVkVG9GZXRjaFRpbWVzdGFtcCA+IDUwMCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBUcnkgYWdhaW4uIFRoaXMgZXJyb3IgY291bGQgYmUgdGhyb3duIGJ5IGZldGNoIEFQSSB3aGVuIGNvbXB1dGVyIGdvZXMgdG8gc2xlZXAgYW5kIHBlbmRpbmcgcmVxdWVzdCBpcyBjYW5jZWxsZWRcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMyLmZhaWxlZFRvRmV0Y2hUaW1lc3RhbXAgPSB0cztcbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzMi5saXN0ZW5pbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMi5saXN0ZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzMi5lcnJvckV2ZW50LmVtaXQoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdzdG9wJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICAgICAgICB0aGlzLmxpc3RlbmluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfZGlmZicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfZGlmZihwcmV2aW91c04sIGRlc2NyaXB0b3JzKSB7XG4gICAgICAgICAgICB2YXIgcHJldmlvdXMgPSBwcmV2aW91c04gfHwgW107XG4gICAgICAgICAgICB2YXIgY29ubmVjdGVkID0gZGVzY3JpcHRvcnMuZmlsdGVyKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzLmZpbmQoZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHgucGF0aCA9PT0gZC5wYXRoO1xuICAgICAgICAgICAgICAgIH0pID09PSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHZhciBkaXNjb25uZWN0ZWQgPSBwcmV2aW91cy5maWx0ZXIoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRvcnMuZmluZChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5wYXRoID09PSBkLnBhdGg7XG4gICAgICAgICAgICAgICAgfSkgPT09IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGNoYW5nZWRTZXNzaW9ucyA9IGRlc2NyaXB0b3JzLmZpbHRlcihmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c0Rlc2NyaXB0b3IgPSBwcmV2aW91cy5maW5kKGZ1bmN0aW9uICh4KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB4LnBhdGggPT09IGQucGF0aDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNEZXNjcmlwdG9yICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzRGVzY3JpcHRvci5zZXNzaW9uICE9PSBkLnNlc3Npb247XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGFjcXVpcmVkID0gY2hhbmdlZFNlc3Npb25zLmZpbHRlcihmdW5jdGlvbiAoZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLnNlc3Npb24gIT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIHJlbGVhc2VkID0gY2hhbmdlZFNlc3Npb25zLmZpbHRlcihmdW5jdGlvbiAoZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLnNlc3Npb24gPT0gbnVsbDtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB2YXIgZGVidWdDaGFuZ2VkU2Vzc2lvbnMgPSBkZXNjcmlwdG9ycy5maWx0ZXIoZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcHJldmlvdXNEZXNjcmlwdG9yID0gcHJldmlvdXMuZmluZChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geC5wYXRoID09PSBkLnBhdGg7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzRGVzY3JpcHRvciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2aW91c0Rlc2NyaXB0b3IuZGVidWdTZXNzaW9uICE9PSBkLmRlYnVnU2Vzc2lvbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgZGVidWdBY3F1aXJlZCA9IGRlYnVnQ2hhbmdlZFNlc3Npb25zLmZpbHRlcihmdW5jdGlvbiAoZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLmRlYnVnU2Vzc2lvbiAhPSBudWxsO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgZGVidWdSZWxlYXNlZCA9IGRlYnVnQ2hhbmdlZFNlc3Npb25zLmZpbHRlcihmdW5jdGlvbiAoZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdG9yLmRlYnVnU2Vzc2lvbiA9PSBudWxsO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHZhciBkaWRVcGRhdGUgPSBjb25uZWN0ZWQubGVuZ3RoICsgZGlzY29ubmVjdGVkLmxlbmd0aCArIGNoYW5nZWRTZXNzaW9ucy5sZW5ndGggKyBkZWJ1Z0NoYW5nZWRTZXNzaW9ucy5sZW5ndGggPiAwO1xuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGNvbm5lY3RlZDogY29ubmVjdGVkLFxuICAgICAgICAgICAgICAgIGRpc2Nvbm5lY3RlZDogZGlzY29ubmVjdGVkLFxuICAgICAgICAgICAgICAgIGNoYW5nZWRTZXNzaW9uczogY2hhbmdlZFNlc3Npb25zLFxuICAgICAgICAgICAgICAgIGFjcXVpcmVkOiBhY3F1aXJlZCxcbiAgICAgICAgICAgICAgICByZWxlYXNlZDogcmVsZWFzZWQsXG4gICAgICAgICAgICAgICAgZGlkVXBkYXRlOiBkaWRVcGRhdGUsXG4gICAgICAgICAgICAgICAgZGVzY3JpcHRvcnM6IGRlc2NyaXB0b3JzLFxuICAgICAgICAgICAgICAgIGRlYnVnQ2hhbmdlZFNlc3Npb25zOiBkZWJ1Z0NoYW5nZWRTZXNzaW9ucyxcbiAgICAgICAgICAgICAgICBkZWJ1Z0FjcXVpcmVkOiBkZWJ1Z0FjcXVpcmVkLFxuICAgICAgICAgICAgICAgIGRlYnVnUmVsZWFzZWQ6IGRlYnVnUmVsZWFzZWRcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19yZXBvcnRDaGFuZ2VzJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9yZXBvcnRDaGFuZ2VzKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJldHVybiAoMCwgX2Nvbm5lY3Rpb25Mb2NrLmxvY2spKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB2YXIgZGlmZiA9IF90aGlzMy5fZGlmZihfdGhpczMucHJldmlvdXMsIF90aGlzMy5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICBfdGhpczMucHJldmlvdXMgPSBfdGhpczMuY3VycmVudDtcblxuICAgICAgICAgICAgICAgIGlmIChkaWZmLmRpZFVwZGF0ZSAmJiBfdGhpczMubGlzdGVuaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYuY29ubmVjdGVkLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy5jb25uZWN0RXZlbnQuZW1pdChkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYuZGlzY29ubmVjdGVkLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy5kaXNjb25uZWN0RXZlbnQuZW1pdChkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGRpZmYuZGVidWdBY3F1aXJlZC5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczMuZGVidWdBY3F1aXJlZEV2ZW50LmVtaXQoZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBkaWZmLmRlYnVnUmVsZWFzZWQuZm9yRWFjaChmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmRlYnVnUmVsZWFzZWRFdmVudC5lbWl0KGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgZGlmZi5kZWJ1Z0NoYW5nZWRTZXNzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczMuZGVidWdDaGFuZ2VkU2Vzc2lvbnNFdmVudC5lbWl0KGQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICBkaWZmLmFjcXVpcmVkLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy5hY3F1aXJlZEV2ZW50LmVtaXQoZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBkaWZmLnJlbGVhc2VkLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzMy5yZWxlYXNlZEV2ZW50LmVtaXQoZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBkaWZmLmNoYW5nZWRTZXNzaW9ucy5mb3JFYWNoKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczMuY2hhbmdlZFNlc3Npb25zRXZlbnQuZW1pdChkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzMy51cGRhdGVFdmVudC5lbWl0KGRpZmYpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBEZXNjcmlwdG9yU3RyZWFtO1xufShfZXZlbnRzLkV2ZW50RW1pdHRlcik7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IERlc2NyaXB0b3JTdHJlYW07XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIoZnVuY3Rpb24oc2VsZikge1xuICAndXNlIHN0cmljdCc7XG5cbiAgaWYgKHNlbGYuZmV0Y2gpIHtcbiAgICByZXR1cm5cbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgICB9XG4gICAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZScpXG4gICAgfVxuICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICAgIHRoaXMubWFwID0ge31cblxuICAgIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgICAgfSwgdGhpcylcblxuICAgIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgICB9LCB0aGlzKVxuICAgIH1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gICAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICAgIHZhciBsaXN0ID0gdGhpcy5tYXBbbmFtZV1cbiAgICBpZiAoIWxpc3QpIHtcbiAgICAgIGxpc3QgPSBbXVxuICAgICAgdGhpcy5tYXBbbmFtZV0gPSBsaXN0XG4gICAgfVxuICAgIGxpc3QucHVzaCh2YWx1ZSlcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICB2YXIgdmFsdWVzID0gdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbiAgICByZXR1cm4gdmFsdWVzID8gdmFsdWVzWzBdIDogbnVsbFxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuZ2V0QWxsID0gZnVuY3Rpb24obmFtZSkge1xuICAgIHJldHVybiB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSB8fCBbXVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICAgIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IFtub3JtYWxpemVWYWx1ZSh2YWx1ZSldXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCkuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLm1hcFtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWUsIG5hbWUsIHRoaXMpXG4gICAgICB9LCB0aGlzKVxuICAgIH0sIHRoaXMpXG4gIH1cblxuICBmdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gICAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgICB9XG4gICAgYm9keS5ib2R5VXNlZCA9IHRydWVcbiAgfVxuXG4gIGZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICAgIH1cbiAgICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICAgIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IpXG4gICAgcmV0dXJuIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIH1cblxuICB2YXIgc3VwcG9ydCA9IHtcbiAgICBibG9iOiAnRmlsZVJlYWRlcicgaW4gc2VsZiAmJiAnQmxvYicgaW4gc2VsZiAmJiAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpO1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gICAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gc2VsZixcbiAgICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBzZWxmXG4gIH1cblxuICBmdW5jdGlvbiBCb2R5KCkge1xuICAgIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG5cbiAgICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgICAgfSBlbHNlIGlmICghYm9keSkge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgLy8gT25seSBzdXBwb3J0IEFycmF5QnVmZmVycyBmb3IgUE9TVCBtZXRob2QuXG4gICAgICAgIC8vIFJlY2VpdmluZyBBcnJheUJ1ZmZlcnMgaGFwcGVucyB2aWEgQmxvYnMsIGluc3RlYWQuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIEJvZHlJbml0IHR5cGUnKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgICB9XG5cbiAgICAgIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkID8gcmVqZWN0ZWQgOiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQT1NUJywgJ1BVVCddXG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICByZXR1cm4gKG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxuXG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG4gICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpKSB7XG4gICAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICAgIH1cbiAgICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgICB9XG4gICAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgICAgaWYgKCFib2R5KSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudXJsID0gaW5wdXRcbiAgICB9XG5cbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdvbWl0J1xuICAgIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gICAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICAgIH1cbiAgICB0aGlzLl9pbml0Qm9keShib2R5KVxuICB9XG5cbiAgUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcylcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICAgIGJvZHkudHJpbSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZm9ybVxuICB9XG5cbiAgZnVuY3Rpb24gaGVhZGVycyh4aHIpIHtcbiAgICB2YXIgaGVhZCA9IG5ldyBIZWFkZXJzKClcbiAgICB2YXIgcGFpcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkudHJpbSgpLnNwbGl0KCdcXG4nKVxuICAgIHBhaXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICB2YXIgc3BsaXQgPSBoZWFkZXIudHJpbSgpLnNwbGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBzcGxpdC5zaGlmdCgpLnRyaW0oKVxuICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignOicpLnRyaW0oKVxuICAgICAgaGVhZC5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICB9KVxuICAgIHJldHVybiBoZWFkXG4gIH1cblxuICBCb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbiAgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgIH1cblxuICAgIHRoaXMudHlwZSA9ICdkZWZhdWx0J1xuICAgIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXNcbiAgICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gICAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0XG4gICAgdGhpcy5oZWFkZXJzID0gb3B0aW9ucy5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyA/IG9wdGlvbnMuaGVhZGVycyA6IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gICAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG4gIH1cblxuICBCb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG4gIFJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgICAgdXJsOiB0aGlzLnVybFxuICAgIH0pXG4gIH1cblxuICBSZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gICAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfVxuXG4gIHZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG4gIFJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG4gIH1cblxuICBzZWxmLkhlYWRlcnMgPSBIZWFkZXJzO1xuICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0O1xuICBzZWxmLlJlc3BvbnNlID0gUmVzcG9uc2U7XG5cbiAgc2VsZi5mZXRjaCA9IGZ1bmN0aW9uKGlucHV0LCBpbml0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlcXVlc3RcbiAgICAgIGlmIChSZXF1ZXN0LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGlucHV0KSAmJiAhaW5pdCkge1xuICAgICAgICByZXF1ZXN0ID0gaW5wdXRcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcbiAgICAgIH1cblxuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICAgIGZ1bmN0aW9uIHJlc3BvbnNlVVJMKCkge1xuICAgICAgICBpZiAoJ3Jlc3BvbnNlVVJMJyBpbiB4aHIpIHtcbiAgICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVVJMXG4gICAgICAgIH1cblxuICAgICAgICAvLyBBdm9pZCBzZWN1cml0eSB3YXJuaW5ncyBvbiBnZXRSZXNwb25zZUhlYWRlciB3aGVuIG5vdCBhbGxvd2VkIGJ5IENPUlNcbiAgICAgICAgaWYgKC9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcbiAgICAgICAgICByZXR1cm4geGhyLmdldFJlc3BvbnNlSGVhZGVyKCdYLVJlcXVlc3QtVVJMJylcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgc3RhdHVzID0gKHhoci5zdGF0dXMgPT09IDEyMjMpID8gMjA0IDogeGhyLnN0YXR1c1xuICAgICAgICBpZiAoc3RhdHVzIDwgMTAwIHx8IHN0YXR1cyA+IDU5OSkge1xuICAgICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgICAgaGVhZGVyczogaGVhZGVycyh4aHIpLFxuICAgICAgICAgIHVybDogcmVzcG9uc2VVUkwoKVxuICAgICAgICB9XG4gICAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0O1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QudXJsLCB0cnVlKVxuXG4gICAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH1cblxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuXG4gICAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICAgIH0pXG4gIH1cbiAgc2VsZi5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcbn0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNlbGYgOiB0aGlzKTtcbiIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF92ID0gcmVxdWlyZSgnLi9icmlkZ2UvdjInKTtcblxudmFyIF92MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3YpO1xuXG52YXIgX3dpdGhTaGFyZWRDb25uZWN0aW9ucyA9IHJlcXVpcmUoJy4vbG93bGV2ZWwvd2l0aFNoYXJlZENvbm5lY3Rpb25zJyk7XG5cbnZhciBfd2l0aFNoYXJlZENvbm5lY3Rpb25zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dpdGhTaGFyZWRDb25uZWN0aW9ucyk7XG5cbnZhciBfZmFsbGJhY2sgPSByZXF1aXJlKCcuL2ZhbGxiYWNrJyk7XG5cbnZhciBfZmFsbGJhY2syID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZmFsbGJhY2spO1xuXG52YXIgX3dlYnVzYiA9IHJlcXVpcmUoJy4vbG93bGV2ZWwvd2VidXNiJyk7XG5cbnZhciBfd2VidXNiMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dlYnVzYik7XG5cbnJlcXVpcmUoJ3doYXR3Zy1mZXRjaCcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG4vLyBleHBvcnQgaXMgZW1wdHksIHlvdSBjYW4gaW1wb3J0IGJ5IFwidHJlem9yLWxpbmsvcGFyYWxsZWxcIiwgXCJ0cmV6b3ItbGluay9sb3dsZXZlbFwiLCBcInRyZXpvci1saW5rL2JyaWRnZVwiXG5cbmlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcXVvdGVzXG4gIHZhciBfZmV0Y2ggPSByZXF1aXJlKCdub2RlLWZldGNoJyk7XG4gIF92Mi5kZWZhdWx0LnNldEZldGNoKF9mZXRjaCwgdHJ1ZSk7XG59IGVsc2Uge1xuICBfdjIuZGVmYXVsdC5zZXRGZXRjaChmZXRjaCwgZmFsc2UpO1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gIEJyaWRnZVYyOiBfdjIuZGVmYXVsdCxcbiAgRmFsbGJhY2s6IF9mYWxsYmFjazIuZGVmYXVsdCxcbiAgTG93bGV2ZWw6IF93aXRoU2hhcmVkQ29ubmVjdGlvbnMyLmRlZmF1bHQsXG4gIFdlYlVzYjogX3dlYnVzYjIuZGVmYXVsdFxufTtcbm1vZHVsZS5leHBvcnRzID0gZXhwb3J0c1snZGVmYXVsdCddOyIsIlwidXNlIHN0cmljdFwiO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5idWlsZEFuZFNlbmQgPSB1bmRlZmluZWQ7XG5cbnZhciBfcmVnZW5lcmF0b3IgPSByZXF1aXJlKFwiYmFiZWwtcnVudGltZS9yZWdlbmVyYXRvclwiKTtcblxudmFyIF9yZWdlbmVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWdlbmVyYXRvcik7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbi8vIFNlbmRzIG1vcmUgYnVmZmVycyB0byBkZXZpY2UuXG52YXIgc2VuZEJ1ZmZlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlKHNlbmRlciwgYnVmZmVycykge1xuICAgIHZhciBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uLCBfZGlkSXRlcmF0b3JFcnJvciwgX2l0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvciwgX3N0ZXAsIGJ1ZmZlcjtcblxuICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItY29uc3RcbiAgICAgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIF9pdGVyYXRvckVycm9yID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDM7XG4gICAgICAgICAgICBfaXRlcmF0b3IgPSBidWZmZXJzW1N5bWJvbC5pdGVyYXRvcl0oKTtcblxuICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGlmIChfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gKF9zdGVwID0gX2l0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBidWZmZXIgPSBfc3RlcC52YWx1ZTtcbiAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA5O1xuICAgICAgICAgICAgcmV0dXJuIHNlbmRlcihidWZmZXIpO1xuXG4gICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG4gICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxODtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxNDtcbiAgICAgICAgICAgIF9jb250ZXh0LnQwID0gX2NvbnRleHRbXCJjYXRjaFwiXSgzKTtcbiAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIF9pdGVyYXRvckVycm9yID0gX2NvbnRleHQudDA7XG5cbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE4O1xuICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDE5O1xuXG4gICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24gJiYgX2l0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgICAgICBfaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDIxO1xuXG4gICAgICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yKSB7XG4gICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yO1xuXG4gICAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMjEpO1xuXG4gICAgICAgICAgY2FzZSAyNTpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMTgpO1xuXG4gICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZSwgdGhpcywgW1szLCAxNCwgMTgsIDI2XSwgWzE5LCwgMjEsIDI1XV0pO1xuICB9KSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHNlbmRCdWZmZXJzKF94LCBfeDIpIHtcbiAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuXG4vLyBhbHJlYWR5IGJ1aWx0IFBCIG1lc3NhZ2VcblxuXG4vLyBTZW5kcyBtZXNzYWdlIHRvIGRldmljZS5cbi8vIFJlc29sdmVzIGlmZiBldmVyeXRoaW5nIGdldHMgc2VudFxudmFyIGJ1aWxkQW5kU2VuZCA9IGV4cG9ydHMuYnVpbGRBbmRTZW5kID0gZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG1lc3NhZ2VzLCBzZW5kZXIsIG5hbWUsIGRhdGEpIHtcbiAgICB2YXIgYnVmZmVycztcbiAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgYnVmZmVycyA9IGJ1aWxkQnVmZmVycyhtZXNzYWdlcywgbmFtZSwgZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdChcInJldHVyblwiLCBzZW5kQnVmZmVycyhzZW5kZXIsIGJ1ZmZlcnMpKTtcblxuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgfSkpO1xuXG4gIHJldHVybiBmdW5jdGlvbiBidWlsZEFuZFNlbmQoX3gzLCBfeDQsIF94NSwgX3g2KSB7XG4gICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH07XG59KCk7XG5cbmV4cG9ydHMuYnVpbGRPbmUgPSBidWlsZE9uZTtcblxudmFyIF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrID0gcmVxdWlyZShcInByb3RvYnVmanMtb2xkLWZpeGVkLXdlYnBhY2tcIik7XG5cbnZhciBQcm90b0J1ZiA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX3RvQ29uc3VtYWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltpXSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJyKTsgfSB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBnZW4gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyBmdW5jdGlvbiBzdGVwKGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHN0ZXAoXCJuZXh0XCIsIHZhbHVlKTsgfSwgZnVuY3Rpb24gKGVycikgeyBzdGVwKFwidGhyb3dcIiwgZXJyKTsgfSk7IH0gfSByZXR1cm4gc3RlcChcIm5leHRcIik7IH0pOyB9OyB9XG5cbi8vIExvZ2ljIG9mIHNlbmRpbmcgZGF0YSB0byB0cmV6b3Jcbi8vXG4vLyBMb2dpYyBvZiBcImNhbGxcIiBpcyBicm9rZW4gdG8gdHdvIHBhcnRzIC0gc2VuZGluZyBhbmQgcmVjaWV2aW5nXG5cbnZhciBIRUFERVJfU0laRSA9IDEgKyAxICsgNCArIDI7XG52YXIgTUVTU0FHRV9IRUFERVJfQllURSA9IDB4MjM7XG52YXIgQlVGRkVSX1NJWkUgPSA2MztcbnZhciBCdWlsdE1lc3NhZ2UgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1aWx0TWVzc2FnZShtZXNzYWdlcywgLy8gQnVpbGRlcnMsIGdlbmVyYXRlZCBieSByZWFkaW5nIGNvbmZpZ1xuICBuYW1lLCAvLyBOYW1lIG9mIHRoZSBtZXNzYWdlXG4gIGRhdGEgLy8gZGF0YSBhcyBcInB1cmVcIiBvYmplY3QsIGZyb20gdHJlem9yLmpzXG4gICkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBCdWlsdE1lc3NhZ2UpO1xuXG4gICAgdmFyIEJ1aWxkZXIgPSBtZXNzYWdlcy5tZXNzYWdlc0J5TmFtZVtuYW1lXTtcbiAgICBpZiAoQnVpbGRlciA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgbWVzc2FnZSBuYW1lIFwiICsgbmFtZSArIFwiIGlzIG5vdCBmb3VuZC5cIik7XG4gICAgfVxuXG4gICAgLy8gY2xlYW5zIHVwIHN0dWZmIGZyb20gYW5ndWxhciBhbmQgcmVtb3ZlIFwibnVsbFwiIHRoYXQgY3Jhc2hlcyBpbiBidWlsZGVyXG4gICAgY2xlYW51cElucHV0KGRhdGEpO1xuXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHRoaXMubWVzc2FnZSA9IG5ldyBCdWlsZGVyKGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSBuZXcgQnVpbGRlcigpO1xuICAgIH1cblxuICAgIHRoaXMudHlwZSA9IG1lc3NhZ2VzLm1lc3NhZ2VUeXBlc1tcIk1lc3NhZ2VUeXBlX1wiICsgbmFtZV07XG4gIH1cblxuICAvLyBlbmNvZGVzIGludG8gXCJyYXdcIiBkYXRhLCBidXQgaXQgY2FuIGJlIHRvbyBsb25nIGFuZCBuZWVkcyB0byBiZSBzcGxpdCBpbnRvXG4gIC8vIHNtYWxsZXIgYnVmZmVyc1xuXG5cbiAgX2NyZWF0ZUNsYXNzKEJ1aWx0TWVzc2FnZSwgW3tcbiAgICBrZXk6IFwiX2VuY29kZUxvbmdcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX2VuY29kZUxvbmcoYWRkVHJlem9ySGVhZGVycykge1xuICAgICAgdmFyIGhlYWRlclNpemUgPSBIRUFERVJfU0laRTsgLy8gc2hvdWxkIGJlIDhcbiAgICAgIHZhciBieXRlcyA9IG5ldyBVaW50OEFycmF5KHRoaXMubWVzc2FnZS5lbmNvZGVBQigpKTtcbiAgICAgIHZhciBmdWxsU2l6ZSA9IChhZGRUcmV6b3JIZWFkZXJzID8gaGVhZGVyU2l6ZSA6IGhlYWRlclNpemUgLSAyKSArIGJ5dGVzLmxlbmd0aDtcblxuICAgICAgdmFyIGVuY29kZWRCeXRlQnVmZmVyID0gbmV3IF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrLkJ5dGVCdWZmZXIoZnVsbFNpemUpO1xuXG4gICAgICAvLyBmaXJzdCBlbmNvZGUgaGVhZGVyXG5cbiAgICAgIGlmIChhZGRUcmV6b3JIZWFkZXJzKSB7XG4gICAgICAgIC8vIDIqMSBieXRlXG4gICAgICAgIGVuY29kZWRCeXRlQnVmZmVyLndyaXRlQnl0ZShNRVNTQUdFX0hFQURFUl9CWVRFKTtcbiAgICAgICAgZW5jb2RlZEJ5dGVCdWZmZXIud3JpdGVCeXRlKE1FU1NBR0VfSEVBREVSX0JZVEUpO1xuICAgICAgfVxuXG4gICAgICAvLyAyIGJ5dGVzXG4gICAgICBlbmNvZGVkQnl0ZUJ1ZmZlci53cml0ZVVpbnQxNih0aGlzLnR5cGUpO1xuXG4gICAgICAvLyA0IGJ5dGVzIChzbyA4IGluIHRvdGFsKVxuICAgICAgZW5jb2RlZEJ5dGVCdWZmZXIud3JpdGVVaW50MzIoYnl0ZXMubGVuZ3RoKTtcblxuICAgICAgLy8gdGhlbiBwdXQgaW4gdGhlIGFjdHVhbCBtZXNzYWdlXG4gICAgICBlbmNvZGVkQnl0ZUJ1ZmZlci5hcHBlbmQoYnl0ZXMpO1xuXG4gICAgICAvLyBhbmQgY29udmVydCB0byB1aW50OCBhcnJheVxuICAgICAgLy8gKGl0IGNhbiBzdGlsbCBiZSB0b28gbG9uZyB0byBzZW5kIHRob3VnaClcbiAgICAgIHZhciBlbmNvZGVkID0gbmV3IFVpbnQ4QXJyYXkoZW5jb2RlZEJ5dGVCdWZmZXIuYnVmZmVyKTtcblxuICAgICAgcmV0dXJuIGVuY29kZWQ7XG4gICAgfVxuXG4gICAgLy8gZW5jb2RlcyBpdHNlbGYgYW5kIHNwbGl0cyBpbnRvIFwibmljZVwiIGNodW5rc1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZW5jb2RlXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGVuY29kZSgpIHtcbiAgICAgIHZhciBieXRlcyA9IHRoaXMuX2VuY29kZUxvbmcodHJ1ZSk7XG5cbiAgICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICAgIHZhciBzaXplID0gQlVGRkVSX1NJWkU7XG5cbiAgICAgIC8vIEhvdyBtYW55IHBpZWNlcyB3aWxsIHRoZXJlIGFjdHVhbGx5IGJlXG4gICAgICB2YXIgY291bnQgPSBNYXRoLmZsb29yKChieXRlcy5sZW5ndGggLSAxKSAvIHNpemUpICsgMTtcblxuICAgICAgLy8gc2xpY2UgYW5kIGRpY2VcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICB2YXIgc2xpY2UgPSBieXRlcy5zdWJhcnJheShpICogc2l6ZSwgKGkgKyAxKSAqIHNpemUpO1xuICAgICAgICB2YXIgbmV3QXJyYXkgPSBuZXcgVWludDhBcnJheShzaXplKTtcbiAgICAgICAgbmV3QXJyYXkuc2V0KHNsaWNlKTtcbiAgICAgICAgcmVzdWx0LnB1c2gobmV3QXJyYXkuYnVmZmVyKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICAvLyBlbmNvZGVzIGl0c2VsZiBpbnRvIG9uZSBsb25nIGFycmF5YnVmZmVyXG5cbiAgfSwge1xuICAgIGtleTogXCJlbmNvZGVPbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZW5jb2RlT25lKCkge1xuICAgICAgdmFyIGJ5dGVzID0gdGhpcy5fZW5jb2RlTG9uZyhmYWxzZSk7XG4gICAgICByZXR1cm4gbmV3IEJ1ZmZlcihbXS5jb25jYXQoX3RvQ29uc3VtYWJsZUFycmF5KGJ5dGVzKSkpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBCdWlsdE1lc3NhZ2U7XG59KCk7XG5cbi8vIFJlbW92ZXMgJCRoYXNoa2V5IGZyb20gYW5ndWxhciBhbmQgcmVtb3ZlIG51bGxzXG5cblxuZnVuY3Rpb24gY2xlYW51cElucHV0KG1lc3NhZ2UpIHtcbiAgZGVsZXRlIG1lc3NhZ2UuJCRoYXNoS2V5O1xuXG4gIGZvciAodmFyIGtleSBpbiBtZXNzYWdlKSB7XG4gICAgdmFyIHZhbHVlID0gbWVzc2FnZVtrZXldO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICBkZWxldGUgbWVzc2FnZVtrZXldO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbiAoaSkge1xuICAgICAgICAgIGlmICh0eXBlb2YgaSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgY2xlYW51cElucHV0KGkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIGNsZWFudXBJbnB1dCh2YWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEJ1aWxkcyBidWZmZXJzIHRvIHNlbmQuXG4vLyBtZXNzYWdlczogQnVpbGRlcnMsIGdlbmVyYXRlZCBieSByZWFkaW5nIGNvbmZpZ1xuLy8gbmFtZTogTmFtZSBvZiB0aGUgbWVzc2FnZVxuLy8gZGF0YTogRGF0YSB0byBzZXJpYWxpemUsIGV4YWN0bHkgYXMgZ2l2ZW4gYnkgdHJlem9yLmpzXG4vLyBSZXR1cm5pbmcgYnVmZmVycyB0aGF0IHdpbGwgYmUgc2VudCB0byBUcmV6b3JcbmZ1bmN0aW9uIGJ1aWxkQnVmZmVycyhtZXNzYWdlcywgbmFtZSwgZGF0YSkge1xuICB2YXIgbWVzc2FnZSA9IG5ldyBCdWlsdE1lc3NhZ2UobWVzc2FnZXMsIG5hbWUsIGRhdGEpO1xuICB2YXIgZW5jb2RlZCA9IG1lc3NhZ2UuZW5jb2RlKCk7XG4gIHJldHVybiBlbmNvZGVkO1xufVxuXG4vLyBTZW5kcyBtZXNzYWdlIHRvIGRldmljZS5cbi8vIFJlc29sdmVzIGlmZiBldmVyeXRoaW5nIGdldHMgc2VudFxuZnVuY3Rpb24gYnVpbGRPbmUobWVzc2FnZXMsIG5hbWUsIGRhdGEpIHtcbiAgdmFyIG1lc3NhZ2UgPSBuZXcgQnVpbHRNZXNzYWdlKG1lc3NhZ2VzLCBuYW1lLCBkYXRhKTtcbiAgcmV0dXJuIG1lc3NhZ2UuZW5jb2RlT25lKCk7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIE1vZHVsZSBmb3IgbG9hZGluZyB0aGUgcHJvdG9idWYgZGVzY3JpcHRpb24gZnJvbSBzZXJpYWxpemVkIGRlc2NyaXB0aW9uXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnBhcnNlQ29uZmlndXJlID0gcGFyc2VDb25maWd1cmU7XG5cbnZhciBfcHJvdG9idWZqc09sZEZpeGVkV2VicGFjayA9IHJlcXVpcmUoXCJwcm90b2J1ZmpzLW9sZC1maXhlZC13ZWJwYWNrXCIpO1xuXG52YXIgUHJvdG9CdWYgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfcHJvdG9idWZqc09sZEZpeGVkV2VicGFjayk7XG5cbnZhciBfbWVzc2FnZXMgPSByZXF1aXJlKFwiLi9tZXNzYWdlcy5qc1wiKTtcblxudmFyIF90b19qc29uID0gcmVxdWlyZShcIi4vdG9fanNvbi5qc1wiKTtcblxudmFyIF9jb25maWdfcHJvdG9fY29tcGlsZWQgPSByZXF1aXJlKFwiLi9jb25maWdfcHJvdG9fY29tcGlsZWQuanNcIik7XG5cbnZhciBjb21waWxlZENvbmZpZ1Byb3RvID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX2NvbmZpZ19wcm90b19jb21waWxlZCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbi8vIFBhcnNlIGNvbmZpZ3VyZSBkYXRhIChpdCBoYXMgdG8gYmUgYWxyZWFkeSB2ZXJpZmllZClcbmZ1bmN0aW9uIHBhcnNlQ29uZmlndXJlKGRhdGEpIHtcbiAgLy8gaW5jb21pbmcgZGF0YSBhcmUgaW4gSlNPTiBmb3JtYXRcbiAgaWYgKGRhdGEubWF0Y2goL15cXHsuKlxcfSQvKSkge1xuICAgIHZhciBfcHJvdG9idWZNZXNzYWdlcyA9IFByb3RvQnVmLm5ld0J1aWxkZXIoe30pW1wiaW1wb3J0XCJdKEpTT04ucGFyc2UoZGF0YSkpLmJ1aWxkKCk7XG4gICAgcmV0dXJuIG5ldyBfbWVzc2FnZXMuTWVzc2FnZXMoX3Byb3RvYnVmTWVzc2FnZXMpO1xuICB9XG5cbiAgLy8gaW5jb21pbmcgZGF0YSBhcmUgaW4gYmluYXJ5IGZvcm1hdFxuICB2YXIgYnVmZmVyID0gbmV3IEJ1ZmZlcihkYXRhLnNsaWNlKDY0ICogMiksIFwiaGV4XCIpO1xuICB2YXIgY29uZmlnQnVpbGRlciA9IGNvbXBpbGVkQ29uZmlnUHJvdG9bXCJDb25maWd1cmF0aW9uXCJdO1xuICB2YXIgbG9hZGVkQ29uZmlnID0gY29uZmlnQnVpbGRlci5kZWNvZGUoYnVmZmVyKTtcblxuICB2YXIgdmFsaWRVbnRpbCA9IGxvYWRlZENvbmZpZy52YWxpZF91bnRpbDtcbiAgdmFyIHRpbWVOb3cgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKTtcbiAgaWYgKHRpbWVOb3cgPj0gdmFsaWRVbnRpbCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkNvbmZpZyB0b28gb2xkOyBcIiArIHRpbWVOb3cgKyBcIiA+PSBcIiArIHZhbGlkVW50aWwpO1xuICB9XG5cbiAgdmFyIHdpcmVQcm90b2NvbCA9IGxvYWRlZENvbmZpZy53aXJlX3Byb3RvY29sO1xuICB2YXIgcHJvdG9jb2xKU09OID0gKDAsIF90b19qc29uLnByb3RvY29sVG9KU09OKSh3aXJlUHJvdG9jb2wudG9SYXcoKSk7XG4gIHZhciBwcm90b2J1Zk1lc3NhZ2VzID0gUHJvdG9CdWYubmV3QnVpbGRlcih7fSlbXCJpbXBvcnRcIl0ocHJvdG9jb2xKU09OKS5idWlsZCgpO1xuXG4gIHJldHVybiBuZXcgX21lc3NhZ2VzLk1lc3NhZ2VzKHByb3RvYnVmTWVzc2FnZXMpO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG4vLyBUaGlzIGlzIGEgc2ltcGxlIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBtZXNzYWdlcyxcbi8vIGFzIHRoZXkgYXJlIGxvYWRlZCBmcm9tIHRoZSBwcm90b2J1ZiBkZWZpbml0aW9uLFxuLy8gc28gdGhleSBhcmUgdW5kZXJzdG9vZCBieSBib3RoIHNlbmRpbmcgYW5kIHJlY2lldmluZyBjb2RlLlxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5NZXNzYWdlcyA9IHVuZGVmaW5lZDtcblxudmFyIF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrID0gcmVxdWlyZShcInByb3RvYnVmanMtb2xkLWZpeGVkLXdlYnBhY2tcIik7XG5cbnZhciBQcm90b0J1ZiA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIE1lc3NhZ2VzID0gZXhwb3J0cy5NZXNzYWdlcyA9IGZ1bmN0aW9uIE1lc3NhZ2VzKG1lc3NhZ2VzKSB7XG4gIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBNZXNzYWdlcyk7XG5cbiAgdGhpcy5tZXNzYWdlc0J5TmFtZSA9IG1lc3NhZ2VzO1xuXG4gIHZhciBtZXNzYWdlc0J5VHlwZSA9IHt9O1xuICBPYmplY3Qua2V5cyhtZXNzYWdlcy5NZXNzYWdlVHlwZSkuZm9yRWFjaChmdW5jdGlvbiAobG9uZ05hbWUpIHtcbiAgICB2YXIgdHlwZUlkID0gbWVzc2FnZXMuTWVzc2FnZVR5cGVbbG9uZ05hbWVdO1xuICAgIHZhciBzaG9ydE5hbWUgPSBsb25nTmFtZS5zcGxpdChcIl9cIilbMV07XG4gICAgbWVzc2FnZXNCeVR5cGVbdHlwZUlkXSA9IHtcbiAgICAgIG5hbWU6IHNob3J0TmFtZSxcbiAgICAgIGNvbnN0cnVjdG9yOiBtZXNzYWdlc1tzaG9ydE5hbWVdXG4gICAgfTtcbiAgfSk7XG4gIHRoaXMubWVzc2FnZXNCeVR5cGUgPSBtZXNzYWdlc0J5VHlwZTtcbiAgdGhpcy5tZXNzYWdlVHlwZXMgPSBtZXNzYWdlcy5NZXNzYWdlVHlwZTtcbn07IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIga2V5cyA9IHJlcXVpcmUoJ29iamVjdC1rZXlzJyk7XG52YXIgaGFzU3ltYm9scyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbCgnZm9vJykgPT09ICdzeW1ib2wnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGNvbmNhdCA9IEFycmF5LnByb3RvdHlwZS5jb25jYXQ7XG52YXIgb3JpZ0RlZmluZVByb3BlcnR5ID0gT2JqZWN0LmRlZmluZVByb3BlcnR5O1xuXG52YXIgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uIChmbikge1xuXHRyZXR1cm4gdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICYmIHRvU3RyLmNhbGwoZm4pID09PSAnW29iamVjdCBGdW5jdGlvbl0nO1xufTtcblxudmFyIGFyZVByb3BlcnR5RGVzY3JpcHRvcnNTdXBwb3J0ZWQgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBvYmogPSB7fTtcblx0dHJ5IHtcblx0XHRvcmlnRGVmaW5lUHJvcGVydHkob2JqLCAneCcsIHsgZW51bWVyYWJsZTogZmFsc2UsIHZhbHVlOiBvYmogfSk7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1yZXN0cmljdGVkLXN5bnRheFxuXHRcdGZvciAodmFyIF8gaW4gb2JqKSB7IC8vIGpzY3M6aWdub3JlIGRpc2FsbG93VW51c2VkVmFyaWFibGVzXG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBvYmoueCA9PT0gb2JqO1xuXHR9IGNhdGNoIChlKSB7IC8qIHRoaXMgaXMgSUUgOC4gKi9cblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG52YXIgc3VwcG9ydHNEZXNjcmlwdG9ycyA9IG9yaWdEZWZpbmVQcm9wZXJ0eSAmJiBhcmVQcm9wZXJ0eURlc2NyaXB0b3JzU3VwcG9ydGVkKCk7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IGZ1bmN0aW9uIChvYmplY3QsIG5hbWUsIHZhbHVlLCBwcmVkaWNhdGUpIHtcblx0aWYgKG5hbWUgaW4gb2JqZWN0ICYmICghaXNGdW5jdGlvbihwcmVkaWNhdGUpIHx8ICFwcmVkaWNhdGUoKSkpIHtcblx0XHRyZXR1cm47XG5cdH1cblx0aWYgKHN1cHBvcnRzRGVzY3JpcHRvcnMpIHtcblx0XHRvcmlnRGVmaW5lUHJvcGVydHkob2JqZWN0LCBuYW1lLCB7XG5cdFx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0XHRlbnVtZXJhYmxlOiBmYWxzZSxcblx0XHRcdHZhbHVlOiB2YWx1ZSxcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0b2JqZWN0W25hbWVdID0gdmFsdWU7XG5cdH1cbn07XG5cbnZhciBkZWZpbmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKG9iamVjdCwgbWFwKSB7XG5cdHZhciBwcmVkaWNhdGVzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiB7fTtcblx0dmFyIHByb3BzID0ga2V5cyhtYXApO1xuXHRpZiAoaGFzU3ltYm9scykge1xuXHRcdHByb3BzID0gY29uY2F0LmNhbGwocHJvcHMsIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMobWFwKSk7XG5cdH1cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkgKz0gMSkge1xuXHRcdGRlZmluZVByb3BlcnR5KG9iamVjdCwgcHJvcHNbaV0sIG1hcFtwcm9wc1tpXV0sIHByZWRpY2F0ZXNbcHJvcHNbaV1dKTtcblx0fVxufTtcblxuZGVmaW5lUHJvcGVydGllcy5zdXBwb3J0c0Rlc2NyaXB0b3JzID0gISFzdXBwb3J0c0Rlc2NyaXB0b3JzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmluZVByb3BlcnRpZXM7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBFUyA9IHJlcXVpcmUoJ2VzLWFic3RyYWN0L2VzNycpO1xudmFyIGhhcyA9IHJlcXVpcmUoJ2hhcycpO1xudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgaXNFbnVtZXJhYmxlID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHZhbHVlcyhPKSB7XG5cdHZhciBvYmogPSBFUy5SZXF1aXJlT2JqZWN0Q29lcmNpYmxlKE8pO1xuXHR2YXIgdmFscyA9IFtdO1xuXHRmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG5cdFx0aWYgKGhhcyhvYmosIGtleSkgJiYgaXNFbnVtZXJhYmxlKG9iaiwga2V5KSkge1xuXHRcdFx0dmFscy5wdXNoKG9ialtrZXldKTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHZhbHM7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1ByaW1pdGl2ZSh2YWx1ZSkge1xuXHRyZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgKHR5cGVvZiB2YWx1ZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGdsb2JhbHNcblx0U2V0LFxuXHRNYXAsXG5cdFdlYWtTZXQsXG5cdFdlYWtNYXAsXG5cblx0UHJvbWlzZSxcblxuXHRTeW1ib2wsXG5cdFByb3h5LFxuXG5cdEF0b21pY3MsXG5cdFNoYXJlZEFycmF5QnVmZmVyLFxuXG5cdEFycmF5QnVmZmVyLFxuXHREYXRhVmlldyxcblx0VWludDhBcnJheSxcblx0RmxvYXQzMkFycmF5LFxuXHRGbG9hdDY0QXJyYXksXG5cdEludDhBcnJheSxcblx0SW50MTZBcnJheSxcblx0SW50MzJBcnJheSxcblx0VWludDhDbGFtcGVkQXJyYXksXG5cdFVpbnQxNkFycmF5LFxuXHRVaW50MzJBcnJheSxcbiovXG5cbnZhciB1bmRlZmluZWQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tc2hhZG93LXJlc3RyaWN0ZWQtbmFtZXNcblxudmFyIFRocm93VHlwZUVycm9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvclxuXHQ/IChmdW5jdGlvbiAoKSB7IHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGFyZ3VtZW50cywgJ2NhbGxlZScpLmdldDsgfSgpKVxuXHQ6IGZ1bmN0aW9uICgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcigpOyB9O1xuXG52YXIgaGFzU3ltYm9scyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gJ3N5bWJvbCc7XG5cbnZhciBnZXRQcm90byA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiB8fCBmdW5jdGlvbiAoeCkgeyByZXR1cm4geC5fX3Byb3RvX187IH07IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tcHJvdG9cblxudmFyIGdlbmVyYXRvcjsgLy8gPSBmdW5jdGlvbiAqICgpIHt9O1xudmFyIGdlbmVyYXRvckZ1bmN0aW9uID0gZ2VuZXJhdG9yID8gZ2V0UHJvdG8oZ2VuZXJhdG9yKSA6IHVuZGVmaW5lZDtcbnZhciBhc3luY0ZuOyAvLyBhc3luYyBmdW5jdGlvbigpIHt9O1xudmFyIGFzeW5jRnVuY3Rpb24gPSBhc3luY0ZuID8gYXN5bmNGbi5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZDtcbnZhciBhc3luY0dlbjsgLy8gYXN5bmMgZnVuY3Rpb24gKiAoKSB7fTtcbnZhciBhc3luY0dlbkZ1bmN0aW9uID0gYXN5bmNHZW4gPyBnZXRQcm90byhhc3luY0dlbikgOiB1bmRlZmluZWQ7XG52YXIgYXN5bmNHZW5JdGVyYXRvciA9IGFzeW5jR2VuID8gYXN5bmNHZW4oKSA6IHVuZGVmaW5lZDtcblxudmFyIFR5cGVkQXJyYXkgPSB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBnZXRQcm90byhVaW50OEFycmF5KTtcblxudmFyIElOVFJJTlNJQ1MgPSB7XG5cdCckICVBcnJheSUnOiBBcnJheSxcblx0JyQgJUFycmF5QnVmZmVyJSc6IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBcnJheUJ1ZmZlcixcblx0JyQgJUFycmF5QnVmZmVyUHJvdG90eXBlJSc6IHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBBcnJheUJ1ZmZlci5wcm90b3R5cGUsXG5cdCckICVBcnJheUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpIDogdW5kZWZpbmVkLFxuXHQnJCAlQXJyYXlQcm90b3R5cGUlJzogQXJyYXkucHJvdG90eXBlLFxuXHQnJCAlQXJyYXlQcm90b19lbnRyaWVzJSc6IEFycmF5LnByb3RvdHlwZS5lbnRyaWVzLFxuXHQnJCAlQXJyYXlQcm90b19mb3JFYWNoJSc6IEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLFxuXHQnJCAlQXJyYXlQcm90b19rZXlzJSc6IEFycmF5LnByb3RvdHlwZS5rZXlzLFxuXHQnJCAlQXJyYXlQcm90b192YWx1ZXMlJzogQXJyYXkucHJvdG90eXBlLnZhbHVlcyxcblx0JyQgJUFzeW5jRnJvbVN5bmNJdGVyYXRvclByb3RvdHlwZSUnOiB1bmRlZmluZWQsXG5cdCckICVBc3luY0Z1bmN0aW9uJSc6IGFzeW5jRnVuY3Rpb24sXG5cdCckICVBc3luY0Z1bmN0aW9uUHJvdG90eXBlJSc6IGFzeW5jRnVuY3Rpb24gPyBhc3luY0Z1bmN0aW9uLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcblx0JyQgJUFzeW5jR2VuZXJhdG9yJSc6IGFzeW5jR2VuID8gZ2V0UHJvdG8oYXN5bmNHZW5JdGVyYXRvcikgOiB1bmRlZmluZWQsXG5cdCckICVBc3luY0dlbmVyYXRvckZ1bmN0aW9uJSc6IGFzeW5jR2VuRnVuY3Rpb24sXG5cdCckICVBc3luY0dlbmVyYXRvclByb3RvdHlwZSUnOiBhc3luY0dlbkZ1bmN0aW9uID8gYXN5bmNHZW5GdW5jdGlvbi5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG5cdCckICVBc3luY0l0ZXJhdG9yUHJvdG90eXBlJSc6IGFzeW5jR2VuSXRlcmF0b3IgJiYgaGFzU3ltYm9scyAmJiBTeW1ib2wuYXN5bmNJdGVyYXRvciA/IGFzeW5jR2VuSXRlcmF0b3JbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkgOiB1bmRlZmluZWQsXG5cdCckICVBdG9taWNzJSc6IHR5cGVvZiBBdG9taWNzID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEF0b21pY3MsXG5cdCckICVCb29sZWFuJSc6IEJvb2xlYW4sXG5cdCckICVCb29sZWFuUHJvdG90eXBlJSc6IEJvb2xlYW4ucHJvdG90eXBlLFxuXHQnJCAlRGF0YVZpZXclJzogdHlwZW9mIERhdGFWaWV3ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IERhdGFWaWV3LFxuXHQnJCAlRGF0YVZpZXdQcm90b3R5cGUlJzogdHlwZW9mIERhdGFWaWV3ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IERhdGFWaWV3LnByb3RvdHlwZSxcblx0JyQgJURhdGUlJzogRGF0ZSxcblx0JyQgJURhdGVQcm90b3R5cGUlJzogRGF0ZS5wcm90b3R5cGUsXG5cdCckICVkZWNvZGVVUkklJzogZGVjb2RlVVJJLFxuXHQnJCAlZGVjb2RlVVJJQ29tcG9uZW50JSc6IGRlY29kZVVSSUNvbXBvbmVudCxcblx0JyQgJWVuY29kZVVSSSUnOiBlbmNvZGVVUkksXG5cdCckICVlbmNvZGVVUklDb21wb25lbnQlJzogZW5jb2RlVVJJQ29tcG9uZW50LFxuXHQnJCAlRXJyb3IlJzogRXJyb3IsXG5cdCckICVFcnJvclByb3RvdHlwZSUnOiBFcnJvci5wcm90b3R5cGUsXG5cdCckICVldmFsJSc6IGV2YWwsIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXZhbFxuXHQnJCAlRXZhbEVycm9yJSc6IEV2YWxFcnJvcixcblx0JyQgJUV2YWxFcnJvclByb3RvdHlwZSUnOiBFdmFsRXJyb3IucHJvdG90eXBlLFxuXHQnJCAlRmxvYXQzMkFycmF5JSc6IHR5cGVvZiBGbG9hdDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQzMkFycmF5LFxuXHQnJCAlRmxvYXQzMkFycmF5UHJvdG90eXBlJSc6IHR5cGVvZiBGbG9hdDMyQXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogRmxvYXQzMkFycmF5LnByb3RvdHlwZSxcblx0JyQgJUZsb2F0NjRBcnJheSUnOiB0eXBlb2YgRmxvYXQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0NjRBcnJheSxcblx0JyQgJUZsb2F0NjRBcnJheVByb3RvdHlwZSUnOiB0eXBlb2YgRmxvYXQ2NEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEZsb2F0NjRBcnJheS5wcm90b3R5cGUsXG5cdCckICVGdW5jdGlvbiUnOiBGdW5jdGlvbixcblx0JyQgJUZ1bmN0aW9uUHJvdG90eXBlJSc6IEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0JyQgJUdlbmVyYXRvciUnOiBnZW5lcmF0b3IgPyBnZXRQcm90byhnZW5lcmF0b3IoKSkgOiB1bmRlZmluZWQsXG5cdCckICVHZW5lcmF0b3JGdW5jdGlvbiUnOiBnZW5lcmF0b3JGdW5jdGlvbixcblx0JyQgJUdlbmVyYXRvclByb3RvdHlwZSUnOiBnZW5lcmF0b3JGdW5jdGlvbiA/IGdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA6IHVuZGVmaW5lZCxcblx0JyQgJUludDhBcnJheSUnOiB0eXBlb2YgSW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDhBcnJheSxcblx0JyQgJUludDhBcnJheVByb3RvdHlwZSUnOiB0eXBlb2YgSW50OEFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDhBcnJheS5wcm90b3R5cGUsXG5cdCckICVJbnQxNkFycmF5JSc6IHR5cGVvZiBJbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDE2QXJyYXksXG5cdCckICVJbnQxNkFycmF5UHJvdG90eXBlJSc6IHR5cGVvZiBJbnQxNkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDhBcnJheS5wcm90b3R5cGUsXG5cdCckICVJbnQzMkFycmF5JSc6IHR5cGVvZiBJbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDMyQXJyYXksXG5cdCckICVJbnQzMkFycmF5UHJvdG90eXBlJSc6IHR5cGVvZiBJbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IEludDMyQXJyYXkucHJvdG90eXBlLFxuXHQnJCAlaXNGaW5pdGUlJzogaXNGaW5pdGUsXG5cdCckICVpc05hTiUnOiBpc05hTixcblx0JyQgJUl0ZXJhdG9yUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBnZXRQcm90byhnZXRQcm90byhbXVtTeW1ib2wuaXRlcmF0b3JdKCkpKSA6IHVuZGVmaW5lZCxcblx0JyQgJUpTT04lJzogSlNPTixcblx0JyQgJUpTT05QYXJzZSUnOiBKU09OLnBhcnNlLFxuXHQnJCAlTWFwJSc6IHR5cGVvZiBNYXAgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogTWFwLFxuXHQnJCAlTWFwSXRlcmF0b3JQcm90b3R5cGUlJzogdHlwZW9mIE1hcCA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc1N5bWJvbHMgPyB1bmRlZmluZWQgOiBnZXRQcm90byhuZXcgTWFwKClbU3ltYm9sLml0ZXJhdG9yXSgpKSxcblx0JyQgJU1hcFByb3RvdHlwZSUnOiB0eXBlb2YgTWFwID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IE1hcC5wcm90b3R5cGUsXG5cdCckICVNYXRoJSc6IE1hdGgsXG5cdCckICVOdW1iZXIlJzogTnVtYmVyLFxuXHQnJCAlTnVtYmVyUHJvdG90eXBlJSc6IE51bWJlci5wcm90b3R5cGUsXG5cdCckICVPYmplY3QlJzogT2JqZWN0LFxuXHQnJCAlT2JqZWN0UHJvdG90eXBlJSc6IE9iamVjdC5wcm90b3R5cGUsXG5cdCckICVPYmpQcm90b190b1N0cmluZyUnOiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFxuXHQnJCAlT2JqUHJvdG9fdmFsdWVPZiUnOiBPYmplY3QucHJvdG90eXBlLnZhbHVlT2YsXG5cdCckICVwYXJzZUZsb2F0JSc6IHBhcnNlRmxvYXQsXG5cdCckICVwYXJzZUludCUnOiBwYXJzZUludCxcblx0JyQgJVByb21pc2UlJzogdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJvbWlzZSxcblx0JyQgJVByb21pc2VQcm90b3R5cGUlJzogdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJvbWlzZS5wcm90b3R5cGUsXG5cdCckICVQcm9taXNlUHJvdG9fdGhlbiUnOiB0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm9taXNlLnByb3RvdHlwZS50aGVuLFxuXHQnJCAlUHJvbWlzZV9hbGwlJzogdHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJvbWlzZS5hbGwsXG5cdCckICVQcm9taXNlX3JlamVjdCUnOiB0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm9taXNlLnJlamVjdCxcblx0JyQgJVByb21pc2VfcmVzb2x2ZSUnOiB0eXBlb2YgUHJvbWlzZSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBQcm9taXNlLnJlc29sdmUsXG5cdCckICVQcm94eSUnOiB0eXBlb2YgUHJveHkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogUHJveHksXG5cdCckICVSYW5nZUVycm9yJSc6IFJhbmdlRXJyb3IsXG5cdCckICVSYW5nZUVycm9yUHJvdG90eXBlJSc6IFJhbmdlRXJyb3IucHJvdG90eXBlLFxuXHQnJCAlUmVmZXJlbmNlRXJyb3IlJzogUmVmZXJlbmNlRXJyb3IsXG5cdCckICVSZWZlcmVuY2VFcnJvclByb3RvdHlwZSUnOiBSZWZlcmVuY2VFcnJvci5wcm90b3R5cGUsXG5cdCckICVSZWZsZWN0JSc6IHR5cGVvZiBSZWZsZWN0ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFJlZmxlY3QsXG5cdCckICVSZWdFeHAlJzogUmVnRXhwLFxuXHQnJCAlUmVnRXhwUHJvdG90eXBlJSc6IFJlZ0V4cC5wcm90b3R5cGUsXG5cdCckICVTZXQlJzogdHlwZW9mIFNldCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTZXQsXG5cdCckICVTZXRJdGVyYXRvclByb3RvdHlwZSUnOiB0eXBlb2YgU2V0ID09PSAndW5kZWZpbmVkJyB8fCAhaGFzU3ltYm9scyA/IHVuZGVmaW5lZCA6IGdldFByb3RvKG5ldyBTZXQoKVtTeW1ib2wuaXRlcmF0b3JdKCkpLFxuXHQnJCAlU2V0UHJvdG90eXBlJSc6IHR5cGVvZiBTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogU2V0LnByb3RvdHlwZSxcblx0JyQgJVNoYXJlZEFycmF5QnVmZmVyJSc6IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTaGFyZWRBcnJheUJ1ZmZlcixcblx0JyQgJVNoYXJlZEFycmF5QnVmZmVyUHJvdG90eXBlJSc6IHR5cGVvZiBTaGFyZWRBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBTaGFyZWRBcnJheUJ1ZmZlci5wcm90b3R5cGUsXG5cdCckICVTdHJpbmclJzogU3RyaW5nLFxuXHQnJCAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlJzogaGFzU3ltYm9scyA/IGdldFByb3RvKCcnW1N5bWJvbC5pdGVyYXRvcl0oKSkgOiB1bmRlZmluZWQsXG5cdCckICVTdHJpbmdQcm90b3R5cGUlJzogU3RyaW5nLnByb3RvdHlwZSxcblx0JyQgJVN5bWJvbCUnOiBoYXNTeW1ib2xzID8gU3ltYm9sIDogdW5kZWZpbmVkLFxuXHQnJCAlU3ltYm9sUHJvdG90eXBlJSc6IGhhc1N5bWJvbHMgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuXHQnJCAlU3ludGF4RXJyb3IlJzogU3ludGF4RXJyb3IsXG5cdCckICVTeW50YXhFcnJvclByb3RvdHlwZSUnOiBTeW50YXhFcnJvci5wcm90b3R5cGUsXG5cdCckICVUaHJvd1R5cGVFcnJvciUnOiBUaHJvd1R5cGVFcnJvcixcblx0JyQgJVR5cGVkQXJyYXklJzogVHlwZWRBcnJheSxcblx0JyQgJVR5cGVkQXJyYXlQcm90b3R5cGUlJzogVHlwZWRBcnJheSA/IFR5cGVkQXJyYXkucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuXHQnJCAlVHlwZUVycm9yJSc6IFR5cGVFcnJvcixcblx0JyQgJVR5cGVFcnJvclByb3RvdHlwZSUnOiBUeXBlRXJyb3IucHJvdG90eXBlLFxuXHQnJCAlVWludDhBcnJheSUnOiB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OEFycmF5LFxuXHQnJCAlVWludDhBcnJheVByb3RvdHlwZSUnOiB0eXBlb2YgVWludDhBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OEFycmF5LnByb3RvdHlwZSxcblx0JyQgJVVpbnQ4Q2xhbXBlZEFycmF5JSc6IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OENsYW1wZWRBcnJheSxcblx0JyQgJVVpbnQ4Q2xhbXBlZEFycmF5UHJvdG90eXBlJSc6IHR5cGVvZiBVaW50OENsYW1wZWRBcnJheSA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBVaW50OENsYW1wZWRBcnJheS5wcm90b3R5cGUsXG5cdCckICVVaW50MTZBcnJheSUnOiB0eXBlb2YgVWludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDE2QXJyYXksXG5cdCckICVVaW50MTZBcnJheVByb3RvdHlwZSUnOiB0eXBlb2YgVWludDE2QXJyYXkgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogVWludDE2QXJyYXkucHJvdG90eXBlLFxuXHQnJCAlVWludDMyQXJyYXklJzogdHlwZW9mIFVpbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQzMkFycmF5LFxuXHQnJCAlVWludDMyQXJyYXlQcm90b3R5cGUlJzogdHlwZW9mIFVpbnQzMkFycmF5ID09PSAndW5kZWZpbmVkJyA/IHVuZGVmaW5lZCA6IFVpbnQzMkFycmF5LnByb3RvdHlwZSxcblx0JyQgJVVSSUVycm9yJSc6IFVSSUVycm9yLFxuXHQnJCAlVVJJRXJyb3JQcm90b3R5cGUlJzogVVJJRXJyb3IucHJvdG90eXBlLFxuXHQnJCAlV2Vha01hcCUnOiB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrTWFwLFxuXHQnJCAlV2Vha01hcFByb3RvdHlwZSUnOiB0eXBlb2YgV2Vha01hcCA9PT0gJ3VuZGVmaW5lZCcgPyB1bmRlZmluZWQgOiBXZWFrTWFwLnByb3RvdHlwZSxcblx0JyQgJVdlYWtTZXQlJzogdHlwZW9mIFdlYWtTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1NldCxcblx0JyQgJVdlYWtTZXRQcm90b3R5cGUlJzogdHlwZW9mIFdlYWtTZXQgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkIDogV2Vha1NldC5wcm90b3R5cGVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gR2V0SW50cmluc2ljKG5hbWUsIGFsbG93TWlzc2luZykge1xuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgdHlwZW9mIGFsbG93TWlzc2luZyAhPT0gJ2Jvb2xlYW4nKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignXCJhbGxvd01pc3NpbmdcIiBhcmd1bWVudCBtdXN0IGJlIGEgYm9vbGVhbicpO1xuXHR9XG5cblx0dmFyIGtleSA9ICckICcgKyBuYW1lO1xuXHRpZiAoIShrZXkgaW4gSU5UUklOU0lDUykpIHtcblx0XHR0aHJvdyBuZXcgU3ludGF4RXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZG9lcyBub3QgZXhpc3QhJyk7XG5cdH1cblxuXHQvLyBpc3RhbmJ1bCBpZ25vcmUgaWYgLy8gaG9wZWZ1bGx5IHRoaXMgaXMgaW1wb3NzaWJsZSB0byB0ZXN0IDotKVxuXHRpZiAodHlwZW9mIElOVFJJTlNJQ1Nba2V5XSA9PT0gJ3VuZGVmaW5lZCcgJiYgIWFsbG93TWlzc2luZykge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ2ludHJpbnNpYyAnICsgbmFtZSArICcgZXhpc3RzLCBidXQgaXMgbm90IGF2YWlsYWJsZS4gUGxlYXNlIGZpbGUgYW4gaXNzdWUhJyk7XG5cdH1cblx0cmV0dXJuIElOVFJJTlNJQ1Nba2V5XTtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IE51bWJlci5pc05hTiB8fCBmdW5jdGlvbiBpc05hTihhKSB7XG5cdHJldHVybiBhICE9PSBhO1xufTtcbiIsInZhciAkaXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gKGEpIHsgcmV0dXJuIGEgIT09IGE7IH07XG5cbm1vZHVsZS5leHBvcnRzID0gTnVtYmVyLmlzRmluaXRlIHx8IGZ1bmN0aW9uICh4KSB7IHJldHVybiB0eXBlb2YgeCA9PT0gJ251bWJlcicgJiYgISRpc05hTih4KSAmJiB4ICE9PSBJbmZpbml0eSAmJiB4ICE9PSAtSW5maW5pdHk7IH07XG4iLCJ2YXIgYmluZCA9IHJlcXVpcmUoJ2Z1bmN0aW9uLWJpbmQnKTtcbnZhciBoYXMgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSk7XG5cbnZhciAkYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBhc3NpZ24odGFyZ2V0LCBzb3VyY2UpIHtcblx0aWYgKCRhc3NpZ24pIHtcblx0XHRyZXR1cm4gJGFzc2lnbih0YXJnZXQsIHNvdXJjZSk7XG5cdH1cblxuXHRmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG5cdFx0aWYgKGhhcyhzb3VyY2UsIGtleSkpIHtcblx0XHRcdHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG5cdFx0fVxuXHR9XG5cdHJldHVybiB0YXJnZXQ7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBzaWduKG51bWJlcikge1xuXHRyZXR1cm4gbnVtYmVyID49IDAgPyAxIDogLTE7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtb2QobnVtYmVyLCBtb2R1bG8pIHtcblx0dmFyIHJlbWFpbiA9IG51bWJlciAlIG1vZHVsbztcblx0cmV0dXJuIE1hdGguZmxvb3IocmVtYWluID49IDAgPyByZW1haW4gOiByZW1haW4gKyBtb2R1bG8pO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGdldFBvbHlmaWxsKCkge1xuXHRyZXR1cm4gdHlwZW9mIE9iamVjdC52YWx1ZXMgPT09ICdmdW5jdGlvbicgPyBPYmplY3QudmFsdWVzIDogaW1wbGVtZW50YXRpb247XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnJlY2VpdmVBbmRQYXJzZSA9IHVuZGVmaW5lZDtcblxudmFyIF9yZWdlbmVyYXRvciA9IHJlcXVpcmUoXCJiYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yXCIpO1xuXG52YXIgX3JlZ2VuZXJhdG9yMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlZ2VuZXJhdG9yKTtcblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxuLy8gTG9naWMgb2YgcmVjaWV2aW5nIGRhdGEgZnJvbSB0cmV6b3Jcbi8vIExvZ2ljIG9mIFwiY2FsbFwiIGlzIGJyb2tlbiB0byB0d28gcGFydHMgLSBzZW5kaW5nIGFuZCByZWNpZXZpbmdcblxuLy8gSWYgdGhlIHdob2xlIG1lc3NhZ2Ugd2Fzbid0IGxvYWRlZCBpbiB0aGUgZmlyc3QgaW5wdXQsIGxvYWRzIG1vcmUgaW5wdXRzIHVudGlsIGV2ZXJ5dGhpbmcgaXMgbG9hZGVkLlxuLy8gbm90ZTogdGhlIHJldHVybiB2YWx1ZSBpcyBub3QgYXQgYWxsIGltcG9ydGFudCBzaW5jZSBpdCdzIHN0aWxsIHRoZSBzYW1lIHBhcnNlZGlucHV0XG52YXIgcmVjZWl2ZVJlc3QgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlKHBhcnNlZElucHV0LCByZWNlaXZlcikge1xuICAgIHZhciBkYXRhO1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGlmICghcGFyc2VkSW5wdXQuaXNEb25lKCkpIHtcbiAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDI7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KFwicmV0dXJuXCIpO1xuXG4gICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICByZXR1cm4gcmVjZWl2ZXIoKTtcblxuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGRhdGEgPSBfY29udGV4dC5zZW50O1xuXG4gICAgICAgICAgICBpZiAoIShkYXRhID09IG51bGwpKSB7XG4gICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA3O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVjZWl2ZWQgbm8gZGF0YS5cIik7XG5cbiAgICAgICAgICBjYXNlIDc6XG5cbiAgICAgICAgICAgIHBhcnNlZElucHV0LmFwcGVuZChkYXRhKTtcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgcmVjZWl2ZVJlc3QocGFyc2VkSW5wdXQsIHJlY2VpdmVyKSk7XG5cbiAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICB9KSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHJlY2VpdmVSZXN0KF94LCBfeDIpIHtcbiAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuXG4vLyBSZWNlaXZlcyB0aGUgd2hvbGUgbWVzc2FnZSBhcyBhIHJhdyBkYXRhIGJ1ZmZlciAoYnV0IHdpdGhvdXQgaGVhZGVycyBvciB0eXBlIGluZm8pXG5cblxudmFyIHJlY2VpdmVCdWZmZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBfcmVmMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTIocmVjZWl2ZXIpIHtcbiAgICB2YXIgZGF0YSwgcGFydGlhbElucHV0O1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICB3aGlsZSAoMSkge1xuICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI7XG4gICAgICAgICAgICByZXR1cm4gcmVjZWl2ZXIoKTtcblxuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGRhdGEgPSBfY29udGV4dDIuc2VudDtcbiAgICAgICAgICAgIHBhcnRpYWxJbnB1dCA9IHBhcnNlRmlyc3RJbnB1dChkYXRhKTtcbiAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gNjtcbiAgICAgICAgICAgIHJldHVybiByZWNlaXZlUmVzdChwYXJ0aWFsSW5wdXQsIHJlY2VpdmVyKTtcblxuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuYWJydXB0KFwicmV0dXJuXCIsIHBhcnRpYWxJbnB1dCk7XG5cbiAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgY2FzZSBcImVuZFwiOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBfY2FsbGVlMiwgdGhpcyk7XG4gIH0pKTtcblxuICByZXR1cm4gZnVuY3Rpb24gcmVjZWl2ZUJ1ZmZlcihfeDMpIHtcbiAgICByZXR1cm4gX3JlZjIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbn0oKTtcblxuLy8gUmVhZHMgZGF0YSBmcm9tIGRldmljZSBhbmQgcmV0dXJucyBkZWNvZGVkIG1lc3NhZ2UsIHRoYXQgY2FuIGJlIHNlbnQgYmFjayB0byB0cmV6b3IuanNcbnZhciByZWNlaXZlQW5kUGFyc2UgPSBleHBvcnRzLnJlY2VpdmVBbmRQYXJzZSA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIF9yZWYzID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMyhtZXNzYWdlcywgcmVjZWl2ZXIpIHtcbiAgICB2YXIgcmVjZWl2ZWQsIHR5cGVJZCwgYnVmZmVyLCBkZWNvZGVyO1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7XG4gICAgICB3aGlsZSAoMSkge1xuICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDI7XG4gICAgICAgICAgICByZXR1cm4gcmVjZWl2ZUJ1ZmZlcihyZWNlaXZlcik7XG5cbiAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICByZWNlaXZlZCA9IF9jb250ZXh0My5zZW50O1xuICAgICAgICAgICAgdHlwZUlkID0gcmVjZWl2ZWQudHlwZU51bWJlcjtcbiAgICAgICAgICAgIGJ1ZmZlciA9IHJlY2VpdmVkLmFycmF5QnVmZmVyKCk7XG4gICAgICAgICAgICBkZWNvZGVyID0gbmV3IF9tZXNzYWdlX2RlY29kZXIuTWVzc2FnZURlY29kZXIobWVzc2FnZXMsIHR5cGVJZCwgYnVmZmVyKTtcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KFwicmV0dXJuXCIsIHtcbiAgICAgICAgICAgICAgbWVzc2FnZTogZGVjb2Rlci5kZWNvZGVkSlNPTigpLFxuICAgICAgICAgICAgICB0eXBlOiBkZWNvZGVyLm1lc3NhZ2VOYW1lKClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgX2NhbGxlZTMsIHRoaXMpO1xuICB9KSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHJlY2VpdmVBbmRQYXJzZShfeDQsIF94NSkge1xuICAgIHJldHVybiBfcmVmMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuXG5leHBvcnRzLnJlY2VpdmVPbmUgPSByZWNlaXZlT25lO1xuXG52YXIgX21lc3NhZ2VfZGVjb2RlciA9IHJlcXVpcmUoXCIuL3Byb3RvYnVmL21lc3NhZ2VfZGVjb2Rlci5qc1wiKTtcblxudmFyIF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrID0gcmVxdWlyZShcInByb3RvYnVmanMtb2xkLWZpeGVkLXdlYnBhY2tcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBnZW4gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyBmdW5jdGlvbiBzdGVwKGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHN0ZXAoXCJuZXh0XCIsIHZhbHVlKTsgfSwgZnVuY3Rpb24gKGVycikgeyBzdGVwKFwidGhyb3dcIiwgZXJyKTsgfSk7IH0gfSByZXR1cm4gc3RlcChcIm5leHRcIik7IH0pOyB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBNRVNTQUdFX0hFQURFUl9CWVRFID0gMHgyMztcblxuLy8gaW5wdXQgdGhhdCBtaWdodCBvciBtaWdodCBub3QgYmUgZnVsbHkgcGFyc2VkIHlldFxuXG52YXIgUGFydGlhbGx5UGFyc2VkSW5wdXQgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIEV4cGVjdGVkIGxlbmd0aCBvZiB0aGUgcmFxIG1lc3NhZ2UsIGluIGJ5dGVzXG4gIGZ1bmN0aW9uIFBhcnRpYWxseVBhcnNlZElucHV0KHR5cGVOdW1iZXIsIGxlbmd0aCkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBQYXJ0aWFsbHlQYXJzZWRJbnB1dCk7XG5cbiAgICB0aGlzLnR5cGVOdW1iZXIgPSB0eXBlTnVtYmVyO1xuICAgIHRoaXMuZXhwZWN0ZWRMZW5ndGggPSBsZW5ndGg7XG4gICAgdGhpcy5idWZmZXIgPSBuZXcgX3Byb3RvYnVmanNPbGRGaXhlZFdlYnBhY2suQnl0ZUJ1ZmZlcihsZW5ndGgpO1xuICB9XG4gIC8vIEJ1ZmZlciB3aXRoIHRoZSBiZWdpbm5pbmcgb2YgbWVzc2FnZTsgY2FuIGJlIG5vbi1jb21wbGV0ZSBhbmQgV0lMTCBiZSBtb2RpZmllZFxuICAvLyBkdXJpbmcgdGhlIG9iamVjdCdzIGxpZmV0aW1lXG5cbiAgLy8gTWVzc2FnZSB0eXBlIG51bWJlclxuXG5cbiAgX2NyZWF0ZUNsYXNzKFBhcnRpYWxseVBhcnNlZElucHV0LCBbe1xuICAgIGtleTogXCJpc0RvbmVcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gaXNEb25lKCkge1xuICAgICAgcmV0dXJuIHRoaXMuYnVmZmVyLm9mZnNldCA+PSB0aGlzLmV4cGVjdGVkTGVuZ3RoO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhcHBlbmRcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gYXBwZW5kKGJ1ZmZlcikge1xuICAgICAgdGhpcy5idWZmZXIuYXBwZW5kKGJ1ZmZlcik7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImFycmF5QnVmZmVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGFycmF5QnVmZmVyKCkge1xuICAgICAgdmFyIGJ5dGVCdWZmZXIgPSB0aGlzLmJ1ZmZlcjtcbiAgICAgIGJ5dGVCdWZmZXIucmVzZXQoKTtcbiAgICAgIHJldHVybiBieXRlQnVmZmVyLnRvQXJyYXlCdWZmZXIoKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gUGFydGlhbGx5UGFyc2VkSW5wdXQ7XG59KCk7XG5cbi8vIFBhcnNlcyBmaXJzdCByYXcgaW5wdXQgdGhhdCBjb21lcyBmcm9tIFRyZXpvciBhbmQgcmV0dXJucyBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSB3aG9sZSBtZXNzYWdlLlxuXG5cbmZ1bmN0aW9uIHBhcnNlRmlyc3RJbnB1dChieXRlcykge1xuICAvLyBjb252ZXJ0IHRvIEJ5dGVCdWZmZXIgc28gaXQncyBlYXNpZXIgdG8gcmVhZFxuICB2YXIgYnl0ZUJ1ZmZlciA9IF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrLkJ5dGVCdWZmZXIuY29uY2F0KFtieXRlc10pO1xuXG4gIC8vIGNoZWNraW5nIGZpcnN0IHR3byBieXRlc1xuICB2YXIgc2hhcnAxID0gYnl0ZUJ1ZmZlci5yZWFkQnl0ZSgpO1xuICB2YXIgc2hhcnAyID0gYnl0ZUJ1ZmZlci5yZWFkQnl0ZSgpO1xuICBpZiAoc2hhcnAxICE9PSBNRVNTQUdFX0hFQURFUl9CWVRFIHx8IHNoYXJwMiAhPT0gTUVTU0FHRV9IRUFERVJfQllURSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIkRpZG4ndCByZWNlaXZlIGV4cGVjdGVkIGhlYWRlciBzaWduYXR1cmUuXCIpO1xuICB9XG5cbiAgLy8gcmVhZGluZyB0aGluZ3MgZnJvbSBoZWFkZXJcbiAgdmFyIHR5cGUgPSBieXRlQnVmZmVyLnJlYWRVaW50MTYoKTtcbiAgdmFyIGxlbmd0aCA9IGJ5dGVCdWZmZXIucmVhZFVpbnQzMigpO1xuXG4gIC8vIGNyZWF0aW5nIGEgbmV3IGJ1ZmZlciB3aXRoIHRoZSByaWdodCBzaXplXG4gIHZhciByZXMgPSBuZXcgUGFydGlhbGx5UGFyc2VkSW5wdXQodHlwZSwgbGVuZ3RoKTtcbiAgcmVzLmFwcGVuZChieXRlQnVmZmVyKTtcbiAgcmV0dXJuIHJlcztcbn1mdW5jdGlvbiByZWNlaXZlT25lKG1lc3NhZ2VzLCBkYXRhKSB7XG4gIHZhciBieXRlQnVmZmVyID0gX3Byb3RvYnVmanNPbGRGaXhlZFdlYnBhY2suQnl0ZUJ1ZmZlci5jb25jYXQoW2RhdGFdKTtcbiAgdmFyIHR5cGVJZCA9IGJ5dGVCdWZmZXIucmVhZFVpbnQxNigpO1xuICBieXRlQnVmZmVyLnJlYWRVaW50MzIoKTsgLy8gbGVuZ3RoLCBpZ25vcmluZ1xuICB2YXIgZGVjb2RlciA9IG5ldyBfbWVzc2FnZV9kZWNvZGVyLk1lc3NhZ2VEZWNvZGVyKG1lc3NhZ2VzLCB0eXBlSWQsIGJ5dGVCdWZmZXIudG9BcnJheUJ1ZmZlcigpKTtcbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlOiBkZWNvZGVyLmRlY29kZWRKU09OKCksXG4gICAgdHlwZTogZGVjb2Rlci5tZXNzYWdlTmFtZSgpXG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmNyZWF0ZSA9IGNyZWF0ZTtcbmV4cG9ydHMucmVzb2x2ZVRpbWVvdXRQcm9taXNlID0gcmVzb2x2ZVRpbWVvdXRQcm9taXNlO1xuZXhwb3J0cy5yZWplY3RUaW1lb3V0UHJvbWlzZSA9IHJlamVjdFRpbWVvdXRQcm9taXNlO1xuZnVuY3Rpb24gY3JlYXRlKCkge1xuICB2YXIgbG9jYWxSZXNvbHZlID0gZnVuY3Rpb24gbG9jYWxSZXNvbHZlKHQpIHt9O1xuICB2YXIgbG9jYWxSZWplY3QgPSBmdW5jdGlvbiBsb2NhbFJlamVjdChlKSB7fTtcblxuICB2YXIgcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBsb2NhbFJlc29sdmUgPSByZXNvbHZlO1xuICAgIGxvY2FsUmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcbiAgdmFyIHJlamVjdGluZ1Byb21pc2UgPSBwcm9taXNlLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIlByb21pc2UgaXMgYWx3YXlzIHJlamVjdGluZ1wiKTtcbiAgfSk7XG4gIHJlamVjdGluZ1Byb21pc2UuY2F0Y2goZnVuY3Rpb24gKCkge30pO1xuXG4gIHJldHVybiB7XG4gICAgcmVzb2x2ZTogbG9jYWxSZXNvbHZlLFxuICAgIHJlamVjdDogbG9jYWxSZWplY3QsXG4gICAgcHJvbWlzZTogcHJvbWlzZSxcbiAgICByZWplY3RpbmdQcm9taXNlOiByZWplY3RpbmdQcm9taXNlXG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVUaW1lb3V0UHJvbWlzZShkZWxheSwgcmVzdWx0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgIH0sIGRlbGF5KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlamVjdFRpbWVvdXRQcm9taXNlKGRlbGF5LCBlcnJvcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICB9LCBkZWxheSk7XG4gIH0pO1xufSIsImV4cG9ydHMuZmV0Y2ggPSBpc0Z1bmN0aW9uKGdsb2JhbC5mZXRjaCkgJiYgaXNGdW5jdGlvbihnbG9iYWwuUmVhZGFibGVTdHJlYW0pXG5cbmV4cG9ydHMud3JpdGFibGVTdHJlYW0gPSBpc0Z1bmN0aW9uKGdsb2JhbC5Xcml0YWJsZVN0cmVhbSlcblxuZXhwb3J0cy5hYm9ydENvbnRyb2xsZXIgPSBpc0Z1bmN0aW9uKGdsb2JhbC5BYm9ydENvbnRyb2xsZXIpXG5cbmV4cG9ydHMuYmxvYkNvbnN0cnVjdG9yID0gZmFsc2VcbnRyeSB7XG5cdG5ldyBCbG9iKFtuZXcgQXJyYXlCdWZmZXIoMSldKVxuXHRleHBvcnRzLmJsb2JDb25zdHJ1Y3RvciA9IHRydWVcbn0gY2F0Y2ggKGUpIHt9XG5cbi8vIFRoZSB4aHIgcmVxdWVzdCB0byBleGFtcGxlLmNvbSBtYXkgdmlvbGF0ZSBzb21lIHJlc3RyaWN0aXZlIENTUCBjb25maWd1cmF0aW9ucyxcbi8vIHNvIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSBicm93c2VyIHRoYXQgc3VwcG9ydHMgYGZldGNoYCwgYXZvaWQgY2FsbGluZyBnZXRYSFIoKVxuLy8gYW5kIGFzc3VtZSBzdXBwb3J0IGZvciBjZXJ0YWluIGZlYXR1cmVzIGJlbG93LlxudmFyIHhoclxuZnVuY3Rpb24gZ2V0WEhSICgpIHtcblx0Ly8gQ2FjaGUgdGhlIHhociB2YWx1ZVxuXHRpZiAoeGhyICE9PSB1bmRlZmluZWQpIHJldHVybiB4aHJcblxuXHRpZiAoZ2xvYmFsLlhNTEh0dHBSZXF1ZXN0KSB7XG5cdFx0eGhyID0gbmV3IGdsb2JhbC5YTUxIdHRwUmVxdWVzdCgpXG5cdFx0Ly8gSWYgWERvbWFpblJlcXVlc3QgaXMgYXZhaWxhYmxlIChpZSBvbmx5LCB3aGVyZSB4aHIgbWlnaHQgbm90IHdvcmtcblx0XHQvLyBjcm9zcyBkb21haW4pLCB1c2UgdGhlIHBhZ2UgbG9jYXRpb24uIE90aGVyd2lzZSB1c2UgZXhhbXBsZS5jb21cblx0XHQvLyBOb3RlOiB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgbWFrZSBhbiBodHRwIHJlcXVlc3QuXG5cdFx0dHJ5IHtcblx0XHRcdHhoci5vcGVuKCdHRVQnLCBnbG9iYWwuWERvbWFpblJlcXVlc3QgPyAnLycgOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScpXG5cdFx0fSBjYXRjaChlKSB7XG5cdFx0XHR4aHIgPSBudWxsXG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIFNlcnZpY2Ugd29ya2VycyBkb24ndCBoYXZlIFhIUlxuXHRcdHhociA9IG51bGxcblx0fVxuXHRyZXR1cm4geGhyXG59XG5cbmZ1bmN0aW9uIGNoZWNrVHlwZVN1cHBvcnQgKHR5cGUpIHtcblx0dmFyIHhociA9IGdldFhIUigpXG5cdGlmICgheGhyKSByZXR1cm4gZmFsc2Vcblx0dHJ5IHtcblx0XHR4aHIucmVzcG9uc2VUeXBlID0gdHlwZVxuXHRcdHJldHVybiB4aHIucmVzcG9uc2VUeXBlID09PSB0eXBlXG5cdH0gY2F0Y2ggKGUpIHt9XG5cdHJldHVybiBmYWxzZVxufVxuXG4vLyBGb3Igc29tZSBzdHJhbmdlIHJlYXNvbiwgU2FmYXJpIDcuMCByZXBvcnRzIHR5cGVvZiBnbG9iYWwuQXJyYXlCdWZmZXIgPT09ICdvYmplY3QnLlxuLy8gU2FmYXJpIDcuMSBhcHBlYXJzIHRvIGhhdmUgZml4ZWQgdGhpcyBidWcuXG52YXIgaGF2ZUFycmF5QnVmZmVyID0gdHlwZW9mIGdsb2JhbC5BcnJheUJ1ZmZlciAhPT0gJ3VuZGVmaW5lZCdcbnZhciBoYXZlU2xpY2UgPSBoYXZlQXJyYXlCdWZmZXIgJiYgaXNGdW5jdGlvbihnbG9iYWwuQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlKVxuXG4vLyBJZiBmZXRjaCBpcyBzdXBwb3J0ZWQsIHRoZW4gYXJyYXlidWZmZXIgd2lsbCBiZSBzdXBwb3J0ZWQgdG9vLiBTa2lwIGNhbGxpbmdcbi8vIGNoZWNrVHlwZVN1cHBvcnQoKSwgc2luY2UgdGhhdCBjYWxscyBnZXRYSFIoKS5cbmV4cG9ydHMuYXJyYXlidWZmZXIgPSBleHBvcnRzLmZldGNoIHx8IChoYXZlQXJyYXlCdWZmZXIgJiYgY2hlY2tUeXBlU3VwcG9ydCgnYXJyYXlidWZmZXInKSlcblxuLy8gVGhlc2UgbmV4dCB0d28gdGVzdHMgdW5hdm9pZGFibHkgc2hvdyB3YXJuaW5ncyBpbiBDaHJvbWUuIFNpbmNlIGZldGNoIHdpbGwgYWx3YXlzXG4vLyBiZSB1c2VkIGlmIGl0J3MgYXZhaWxhYmxlLCBqdXN0IHJldHVybiBmYWxzZSBmb3IgdGhlc2UgdG8gYXZvaWQgdGhlIHdhcm5pbmdzLlxuZXhwb3J0cy5tc3N0cmVhbSA9ICFleHBvcnRzLmZldGNoICYmIGhhdmVTbGljZSAmJiBjaGVja1R5cGVTdXBwb3J0KCdtcy1zdHJlYW0nKVxuZXhwb3J0cy5tb3pjaHVua2VkYXJyYXlidWZmZXIgPSAhZXhwb3J0cy5mZXRjaCAmJiBoYXZlQXJyYXlCdWZmZXIgJiZcblx0Y2hlY2tUeXBlU3VwcG9ydCgnbW96LWNodW5rZWQtYXJyYXlidWZmZXInKVxuXG4vLyBJZiBmZXRjaCBpcyBzdXBwb3J0ZWQsIHRoZW4gb3ZlcnJpZGVNaW1lVHlwZSB3aWxsIGJlIHN1cHBvcnRlZCB0b28uIFNraXAgY2FsbGluZ1xuLy8gZ2V0WEhSKCkuXG5leHBvcnRzLm92ZXJyaWRlTWltZVR5cGUgPSBleHBvcnRzLmZldGNoIHx8IChnZXRYSFIoKSA/IGlzRnVuY3Rpb24oZ2V0WEhSKCkub3ZlcnJpZGVNaW1lVHlwZSkgOiBmYWxzZSlcblxuZXhwb3J0cy52YkFycmF5ID0gaXNGdW5jdGlvbihnbG9iYWwuVkJBcnJheSlcblxuZnVuY3Rpb24gaXNGdW5jdGlvbiAodmFsdWUpIHtcblx0cmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJ1xufVxuXG54aHIgPSBudWxsIC8vIEhlbHAgZ2NcbiIsInZhciBjYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9jYXBhYmlsaXR5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBzdHJlYW0gPSByZXF1aXJlKCdyZWFkYWJsZS1zdHJlYW0nKVxuXG52YXIgclN0YXRlcyA9IGV4cG9ydHMucmVhZHlTdGF0ZXMgPSB7XG5cdFVOU0VOVDogMCxcblx0T1BFTkVEOiAxLFxuXHRIRUFERVJTX1JFQ0VJVkVEOiAyLFxuXHRMT0FESU5HOiAzLFxuXHRET05FOiA0XG59XG5cbnZhciBJbmNvbWluZ01lc3NhZ2UgPSBleHBvcnRzLkluY29taW5nTWVzc2FnZSA9IGZ1bmN0aW9uICh4aHIsIHJlc3BvbnNlLCBtb2RlLCBmZXRjaFRpbWVyKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRzdHJlYW0uUmVhZGFibGUuY2FsbChzZWxmKVxuXG5cdHNlbGYuX21vZGUgPSBtb2RlXG5cdHNlbGYuaGVhZGVycyA9IHt9XG5cdHNlbGYucmF3SGVhZGVycyA9IFtdXG5cdHNlbGYudHJhaWxlcnMgPSB7fVxuXHRzZWxmLnJhd1RyYWlsZXJzID0gW11cblxuXHQvLyBGYWtlIHRoZSAnY2xvc2UnIGV2ZW50LCBidXQgb25seSBvbmNlICdlbmQnIGZpcmVzXG5cdHNlbGYub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcblx0XHQvLyBUaGUgbmV4dFRpY2sgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgdGhlICdyZXF1ZXN0JyBtb2R1bGUgZnJvbSBjYXVzaW5nIGFuIGluZmluaXRlIGxvb3Bcblx0XHRwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdHNlbGYuZW1pdCgnY2xvc2UnKVxuXHRcdH0pXG5cdH0pXG5cblx0aWYgKG1vZGUgPT09ICdmZXRjaCcpIHtcblx0XHRzZWxmLl9mZXRjaFJlc3BvbnNlID0gcmVzcG9uc2VcblxuXHRcdHNlbGYudXJsID0gcmVzcG9uc2UudXJsXG5cdFx0c2VsZi5zdGF0dXNDb2RlID0gcmVzcG9uc2Uuc3RhdHVzXG5cdFx0c2VsZi5zdGF0dXNNZXNzYWdlID0gcmVzcG9uc2Uuc3RhdHVzVGV4dFxuXHRcdFxuXHRcdHJlc3BvbnNlLmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbiAoaGVhZGVyLCBrZXkpe1xuXHRcdFx0c2VsZi5oZWFkZXJzW2tleS50b0xvd2VyQ2FzZSgpXSA9IGhlYWRlclxuXHRcdFx0c2VsZi5yYXdIZWFkZXJzLnB1c2goa2V5LCBoZWFkZXIpXG5cdFx0fSlcblxuXHRcdGlmIChjYXBhYmlsaXR5LndyaXRhYmxlU3RyZWFtKSB7XG5cdFx0XHR2YXIgd3JpdGFibGUgPSBuZXcgV3JpdGFibGVTdHJlYW0oe1xuXHRcdFx0XHR3cml0ZTogZnVuY3Rpb24gKGNodW5rKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0XHRcdFx0XHRcdGlmIChzZWxmLl9kZXN0cm95ZWQpIHtcblx0XHRcdFx0XHRcdFx0cmVqZWN0KClcblx0XHRcdFx0XHRcdH0gZWxzZSBpZihzZWxmLnB1c2gobmV3IEJ1ZmZlcihjaHVuaykpKSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoKVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0c2VsZi5fcmVzdW1lRmV0Y2ggPSByZXNvbHZlXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fSxcblx0XHRcdFx0Y2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRnbG9iYWwuY2xlYXJUaW1lb3V0KGZldGNoVGltZXIpXG5cdFx0XHRcdFx0aWYgKCFzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0XHRzZWxmLnB1c2gobnVsbClcblx0XHRcdFx0fSxcblx0XHRcdFx0YWJvcnQ6IGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cblx0XHRcdHRyeSB7XG5cdFx0XHRcdHJlc3BvbnNlLmJvZHkucGlwZVRvKHdyaXRhYmxlKS5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG5cdFx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdFx0fSlcblx0XHRcdFx0cmV0dXJuXG5cdFx0XHR9IGNhdGNoIChlKSB7fSAvLyBwaXBlVG8gbWV0aG9kIGlzbid0IGRlZmluZWQuIENhbid0IGZpbmQgYSBiZXR0ZXIgd2F5IHRvIGZlYXR1cmUgdGVzdCB0aGlzXG5cdFx0fVxuXHRcdC8vIGZhbGxiYWNrIGZvciB3aGVuIHdyaXRhYmxlU3RyZWFtIG9yIHBpcGVUbyBhcmVuJ3QgYXZhaWxhYmxlXG5cdFx0dmFyIHJlYWRlciA9IHJlc3BvbnNlLmJvZHkuZ2V0UmVhZGVyKClcblx0XHRmdW5jdGlvbiByZWFkICgpIHtcblx0XHRcdHJlYWRlci5yZWFkKCkudGhlbihmdW5jdGlvbiAocmVzdWx0KSB7XG5cdFx0XHRcdGlmIChzZWxmLl9kZXN0cm95ZWQpXG5cdFx0XHRcdFx0cmV0dXJuXG5cdFx0XHRcdGlmIChyZXN1bHQuZG9uZSkge1xuXHRcdFx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoZmV0Y2hUaW1lcilcblx0XHRcdFx0XHRzZWxmLnB1c2gobnVsbClcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihyZXN1bHQudmFsdWUpKVxuXHRcdFx0XHRyZWFkKClcblx0XHRcdH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcblx0XHRcdFx0Z2xvYmFsLmNsZWFyVGltZW91dChmZXRjaFRpbWVyKVxuXHRcdFx0XHRpZiAoIXNlbGYuX2Rlc3Ryb3llZClcblx0XHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgZXJyKVxuXHRcdFx0fSlcblx0XHR9XG5cdFx0cmVhZCgpXG5cdH0gZWxzZSB7XG5cdFx0c2VsZi5feGhyID0geGhyXG5cdFx0c2VsZi5fcG9zID0gMFxuXG5cdFx0c2VsZi51cmwgPSB4aHIucmVzcG9uc2VVUkxcblx0XHRzZWxmLnN0YXR1c0NvZGUgPSB4aHIuc3RhdHVzXG5cdFx0c2VsZi5zdGF0dXNNZXNzYWdlID0geGhyLnN0YXR1c1RleHRcblx0XHR2YXIgaGVhZGVycyA9IHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKS5zcGxpdCgvXFxyP1xcbi8pXG5cdFx0aGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uIChoZWFkZXIpIHtcblx0XHRcdHZhciBtYXRjaGVzID0gaGVhZGVyLm1hdGNoKC9eKFteOl0rKTpcXHMqKC4qKS8pXG5cdFx0XHRpZiAobWF0Y2hlcykge1xuXHRcdFx0XHR2YXIga2V5ID0gbWF0Y2hlc1sxXS50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdGlmIChrZXkgPT09ICdzZXQtY29va2llJykge1xuXHRcdFx0XHRcdGlmIChzZWxmLmhlYWRlcnNba2V5XSA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XSA9IFtdXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHNlbGYuaGVhZGVyc1trZXldLnB1c2gobWF0Y2hlc1syXSlcblx0XHRcdFx0fSBlbHNlIGlmIChzZWxmLmhlYWRlcnNba2V5XSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdFx0c2VsZi5oZWFkZXJzW2tleV0gKz0gJywgJyArIG1hdGNoZXNbMl1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxmLmhlYWRlcnNba2V5XSA9IG1hdGNoZXNbMl1cblx0XHRcdFx0fVxuXHRcdFx0XHRzZWxmLnJhd0hlYWRlcnMucHVzaChtYXRjaGVzWzFdLCBtYXRjaGVzWzJdKVxuXHRcdFx0fVxuXHRcdH0pXG5cblx0XHRzZWxmLl9jaGFyc2V0ID0gJ3gtdXNlci1kZWZpbmVkJ1xuXHRcdGlmICghY2FwYWJpbGl0eS5vdmVycmlkZU1pbWVUeXBlKSB7XG5cdFx0XHR2YXIgbWltZVR5cGUgPSBzZWxmLnJhd0hlYWRlcnNbJ21pbWUtdHlwZSddXG5cdFx0XHRpZiAobWltZVR5cGUpIHtcblx0XHRcdFx0dmFyIGNoYXJzZXRNYXRjaCA9IG1pbWVUeXBlLm1hdGNoKC87XFxzKmNoYXJzZXQ9KFteO10pKDt8JCkvKVxuXHRcdFx0XHRpZiAoY2hhcnNldE1hdGNoKSB7XG5cdFx0XHRcdFx0c2VsZi5fY2hhcnNldCA9IGNoYXJzZXRNYXRjaFsxXS50b0xvd2VyQ2FzZSgpXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmICghc2VsZi5fY2hhcnNldClcblx0XHRcdFx0c2VsZi5fY2hhcnNldCA9ICd1dGYtOCcgLy8gYmVzdCBndWVzc1xuXHRcdH1cblx0fVxufVxuXG5pbmhlcml0cyhJbmNvbWluZ01lc3NhZ2UsIHN0cmVhbS5SZWFkYWJsZSlcblxuSW5jb21pbmdNZXNzYWdlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0dmFyIHJlc29sdmUgPSBzZWxmLl9yZXN1bWVGZXRjaFxuXHRpZiAocmVzb2x2ZSkge1xuXHRcdHNlbGYuX3Jlc3VtZUZldGNoID0gbnVsbFxuXHRcdHJlc29sdmUoKVxuXHR9XG59XG5cbkluY29taW5nTWVzc2FnZS5wcm90b3R5cGUuX29uWEhSUHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdHZhciB4aHIgPSBzZWxmLl94aHJcblxuXHR2YXIgcmVzcG9uc2UgPSBudWxsXG5cdHN3aXRjaCAoc2VsZi5fbW9kZSkge1xuXHRcdGNhc2UgJ3RleHQ6dmJhcnJheSc6IC8vIEZvciBJRTlcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5ET05FKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0dHJ5IHtcblx0XHRcdFx0Ly8gVGhpcyBmYWlscyBpbiBJRThcblx0XHRcdFx0cmVzcG9uc2UgPSBuZXcgZ2xvYmFsLlZCQXJyYXkoeGhyLnJlc3BvbnNlQm9keSkudG9BcnJheSgpXG5cdFx0XHR9IGNhdGNoIChlKSB7fVxuXHRcdFx0aWYgKHJlc3BvbnNlICE9PSBudWxsKSB7XG5cdFx0XHRcdHNlbGYucHVzaChuZXcgQnVmZmVyKHJlc3BvbnNlKSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdH1cblx0XHRcdC8vIEZhbGxzIHRocm91Z2ggaW4gSUU4XHRcblx0XHRjYXNlICd0ZXh0Jzpcblx0XHRcdHRyeSB7IC8vIFRoaXMgd2lsbCBmYWlsIHdoZW4gcmVhZHlTdGF0ZSA9IDMgaW4gSUU5LiBTd2l0Y2ggbW9kZSBhbmQgd2FpdCBmb3IgcmVhZHlTdGF0ZSA9IDRcblx0XHRcdFx0cmVzcG9uc2UgPSB4aHIucmVzcG9uc2VUZXh0XG5cdFx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRcdHNlbGYuX21vZGUgPSAndGV4dDp2YmFycmF5J1xuXHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdFx0aWYgKHJlc3BvbnNlLmxlbmd0aCA+IHNlbGYuX3Bvcykge1xuXHRcdFx0XHR2YXIgbmV3RGF0YSA9IHJlc3BvbnNlLnN1YnN0cihzZWxmLl9wb3MpXG5cdFx0XHRcdGlmIChzZWxmLl9jaGFyc2V0ID09PSAneC11c2VyLWRlZmluZWQnKSB7XG5cdFx0XHRcdFx0dmFyIGJ1ZmZlciA9IG5ldyBCdWZmZXIobmV3RGF0YS5sZW5ndGgpXG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBuZXdEYXRhLmxlbmd0aDsgaSsrKVxuXHRcdFx0XHRcdFx0YnVmZmVyW2ldID0gbmV3RGF0YS5jaGFyQ29kZUF0KGkpICYgMHhmZlxuXG5cdFx0XHRcdFx0c2VsZi5wdXNoKGJ1ZmZlcilcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRzZWxmLnB1c2gobmV3RGF0YSwgc2VsZi5fY2hhcnNldClcblx0XHRcdFx0fVxuXHRcdFx0XHRzZWxmLl9wb3MgPSByZXNwb25zZS5sZW5ndGhcblx0XHRcdH1cblx0XHRcdGJyZWFrXG5cdFx0Y2FzZSAnYXJyYXlidWZmZXInOlxuXHRcdFx0aWYgKHhoci5yZWFkeVN0YXRlICE9PSByU3RhdGVzLkRPTkUgfHwgIXhoci5yZXNwb25zZSlcblx0XHRcdFx0YnJlYWtcblx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlXG5cdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShyZXNwb25zZSkpKVxuXHRcdFx0YnJlYWtcblx0XHRjYXNlICdtb3otY2h1bmtlZC1hcnJheWJ1ZmZlcic6IC8vIHRha2Ugd2hvbGVcblx0XHRcdHJlc3BvbnNlID0geGhyLnJlc3BvbnNlXG5cdFx0XHRpZiAoeGhyLnJlYWR5U3RhdGUgIT09IHJTdGF0ZXMuTE9BRElORyB8fCAhcmVzcG9uc2UpXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShyZXNwb25zZSkpKVxuXHRcdFx0YnJlYWtcblx0XHRjYXNlICdtcy1zdHJlYW0nOlxuXHRcdFx0cmVzcG9uc2UgPSB4aHIucmVzcG9uc2Vcblx0XHRcdGlmICh4aHIucmVhZHlTdGF0ZSAhPT0gclN0YXRlcy5MT0FESU5HKVxuXHRcdFx0XHRicmVha1xuXHRcdFx0dmFyIHJlYWRlciA9IG5ldyBnbG9iYWwuTVNTdHJlYW1SZWFkZXIoKVxuXHRcdFx0cmVhZGVyLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGlmIChyZWFkZXIucmVzdWx0LmJ5dGVMZW5ndGggPiBzZWxmLl9wb3MpIHtcblx0XHRcdFx0XHRzZWxmLnB1c2gobmV3IEJ1ZmZlcihuZXcgVWludDhBcnJheShyZWFkZXIucmVzdWx0LnNsaWNlKHNlbGYuX3BvcykpKSlcblx0XHRcdFx0XHRzZWxmLl9wb3MgPSByZWFkZXIucmVzdWx0LmJ5dGVMZW5ndGhcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5wdXNoKG51bGwpXG5cdFx0XHR9XG5cdFx0XHQvLyByZWFkZXIub25lcnJvciA9ID8/PyAvLyBUT0RPOiB0aGlzXG5cdFx0XHRyZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIocmVzcG9uc2UpXG5cdFx0XHRicmVha1xuXHR9XG5cblx0Ly8gVGhlIG1zLXN0cmVhbSBjYXNlIGhhbmRsZXMgZW5kIHNlcGFyYXRlbHkgaW4gcmVhZGVyLm9ubG9hZCgpXG5cdGlmIChzZWxmLl94aHIucmVhZHlTdGF0ZSA9PT0gclN0YXRlcy5ET05FICYmIHNlbGYuX21vZGUgIT09ICdtcy1zdHJlYW0nKSB7XG5cdFx0c2VsZi5wdXNoKG51bGwpXG5cdH1cbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogYWRsZXIzMiB0YWtlcyAxMiUgZm9yIGxldmVsIDAgYW5kIDIlIGZvciBsZXZlbCA2LlxuLy8gSXQgaXNuJ3Qgd29ydGggaXQgdG8gbWFrZSBhZGRpdGlvbmFsIG9wdGltaXphdGlvbnMgYXMgaW4gb3JpZ2luYWwuXG4vLyBTbWFsbCBzaXplIGlzIHByZWZlcmFibGUuXG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuZnVuY3Rpb24gYWRsZXIzMihhZGxlciwgYnVmLCBsZW4sIHBvcykge1xuICB2YXIgczEgPSAoYWRsZXIgJiAweGZmZmYpIHwwLFxuICAgICAgczIgPSAoKGFkbGVyID4+PiAxNikgJiAweGZmZmYpIHwwLFxuICAgICAgbiA9IDA7XG5cbiAgd2hpbGUgKGxlbiAhPT0gMCkge1xuICAgIC8vIFNldCBsaW1pdCB+IHR3aWNlIGxlc3MgdGhhbiA1NTUyLCB0byBrZWVwXG4gICAgLy8gczIgaW4gMzEtYml0cywgYmVjYXVzZSB3ZSBmb3JjZSBzaWduZWQgaW50cy5cbiAgICAvLyBpbiBvdGhlciBjYXNlICU9IHdpbGwgZmFpbC5cbiAgICBuID0gbGVuID4gMjAwMCA/IDIwMDAgOiBsZW47XG4gICAgbGVuIC09IG47XG5cbiAgICBkbyB7XG4gICAgICBzMSA9IChzMSArIGJ1Zltwb3MrK10pIHwwO1xuICAgICAgczIgPSAoczIgKyBzMSkgfDA7XG4gICAgfSB3aGlsZSAoLS1uKTtcblxuICAgIHMxICU9IDY1NTIxO1xuICAgIHMyICU9IDY1NTIxO1xuICB9XG5cbiAgcmV0dXJuIChzMSB8IChzMiA8PCAxNikpIHwwO1xufVxuXG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gTm90ZTogd2UgY2FuJ3QgZ2V0IHNpZ25pZmljYW50IHNwZWVkIGJvb3N0IGhlcmUuXG4vLyBTbyB3cml0ZSBjb2RlIHRvIG1pbmltaXplIHNpemUgLSBubyBwcmVnZW5lcmF0ZWQgdGFibGVzXG4vLyBhbmQgYXJyYXkgdG9vbHMgZGVwZW5kZW5jaWVzLlxuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbi8vIFVzZSBvcmRpbmFyeSBhcnJheSwgc2luY2UgdW50eXBlZCBtYWtlcyBubyBib29zdCBoZXJlXG5mdW5jdGlvbiBtYWtlVGFibGUoKSB7XG4gIHZhciBjLCB0YWJsZSA9IFtdO1xuXG4gIGZvciAodmFyIG4gPSAwOyBuIDwgMjU2OyBuKyspIHtcbiAgICBjID0gbjtcbiAgICBmb3IgKHZhciBrID0gMDsgayA8IDg7IGsrKykge1xuICAgICAgYyA9ICgoYyAmIDEpID8gKDB4RURCODgzMjAgXiAoYyA+Pj4gMSkpIDogKGMgPj4+IDEpKTtcbiAgICB9XG4gICAgdGFibGVbbl0gPSBjO1xuICB9XG5cbiAgcmV0dXJuIHRhYmxlO1xufVxuXG4vLyBDcmVhdGUgdGFibGUgb24gbG9hZC4gSnVzdCAyNTUgc2lnbmVkIGxvbmdzLiBOb3QgYSBwcm9ibGVtLlxudmFyIGNyY1RhYmxlID0gbWFrZVRhYmxlKCk7XG5cblxuZnVuY3Rpb24gY3JjMzIoY3JjLCBidWYsIGxlbiwgcG9zKSB7XG4gIHZhciB0ID0gY3JjVGFibGUsXG4gICAgICBlbmQgPSBwb3MgKyBsZW47XG5cbiAgY3JjIF49IC0xO1xuXG4gIGZvciAodmFyIGkgPSBwb3M7IGkgPCBlbmQ7IGkrKykge1xuICAgIGNyYyA9IChjcmMgPj4+IDgpIF4gdFsoY3JjIF4gYnVmW2ldKSAmIDB4RkZdO1xuICB9XG5cbiAgcmV0dXJuIChjcmMgXiAoLTEpKTsgLy8gPj4+IDA7XG59XG5cblxubW9kdWxlLmV4cG9ydHMgPSBjcmMzMjtcbiIsIlxuLyoqXG4gKiBmZXRjaC1lcnJvci5qc1xuICpcbiAqIEZldGNoRXJyb3IgaW50ZXJmYWNlIGZvciBvcGVyYXRpb25hbCBlcnJvcnNcbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IEZldGNoRXJyb3I7XG5cbi8qKlxuICogQ3JlYXRlIEZldGNoRXJyb3IgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0gICBTdHJpbmcgICAgICBtZXNzYWdlICAgICAgRXJyb3IgbWVzc2FnZSBmb3IgaHVtYW5cbiAqIEBwYXJhbSAgIFN0cmluZyAgICAgIHR5cGUgICAgICAgICBFcnJvciB0eXBlIGZvciBtYWNoaW5lXG4gKiBAcGFyYW0gICBTdHJpbmcgICAgICBzeXN0ZW1FcnJvciAgRm9yIE5vZGUuanMgc3lzdGVtIGVycm9yXG4gKiBAcmV0dXJuICBGZXRjaEVycm9yXG4gKi9cbmZ1bmN0aW9uIEZldGNoRXJyb3IobWVzc2FnZSwgdHlwZSwgc3lzdGVtRXJyb3IpIHtcblxuXHR0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG5cdHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG5cdHRoaXMudHlwZSA9IHR5cGU7XG5cblx0Ly8gd2hlbiBlcnIudHlwZSBpcyBgc3lzdGVtYCwgZXJyLmNvZGUgY29udGFpbnMgc3lzdGVtIGVycm9yIGNvZGVcblx0aWYgKHN5c3RlbUVycm9yKSB7XG5cdFx0dGhpcy5jb2RlID0gdGhpcy5lcnJubyA9IHN5c3RlbUVycm9yLmNvZGU7XG5cdH1cblxuXHQvLyBoaWRlIGN1c3RvbSBlcnJvciBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGZyb20gZW5kLXVzZXJzXG5cdEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKHRoaXMsIHRoaXMuY29uc3RydWN0b3IpO1xufVxuXG5yZXF1aXJlKCd1dGlsJykuaW5oZXJpdHMoRmV0Y2hFcnJvciwgRXJyb3IpO1xuIiwidmFyIHRyZXpvciA9IHJlcXVpcmUoJ3RyZXpvci5qcycpXHJcbnZhciB0cmV6b3JMaW5rID0gcmVxdWlyZSgndHJlem9yLWxpbmsnKVxyXG5cclxuaW1wb3J0IHRyZXpvckNvbmZpZyBmcm9tIFwiLi9jb25maWdcIjtcclxuXHJcbndpbmRvdy50cmV6b3IgPSB0cmV6b3I7XHJcbndpbmRvdy50cmV6b3JMaW5rID0gdHJlem9yTGluaztcclxud2luZG93LnRyZXpvckNvbmZpZyA9IHRyZXpvckNvbmZpZztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIC4uLnRyZXpvcixcclxuICAgIHRyZXpvckNvbmZpZ1xyXG59O1xyXG5cclxuIiwiXHJcbmV4cG9ydCBkZWZhdWx0IFwiMzc5YzA5ZmJkYzdhYTIyZTBhYjJlMzNmNGMwNDllODgyYjBjNDJlZmVkZjQwMTM0Zjc1MzA4YTY2Mzk2YjdiMzliMTNhZTRkYjc5YjM3MjA5MGE2NmI3NmU1Yjk3NmMyNjQ4NGFiNWQ4N2IxZDVlMTIxMzM3YTgyOTlmOTMzNGMwYTFmNjg3NDc0NzA3MzNmM2EyZjJmNmM2ZjYzNjE2YzY4NmY3Mzc0MjgzYTVjNjQyYjI5M2YyODJmMmUyYTI5M2YwYTJlNjg3NDc0NzA3MzNmM2EyZjJmNmM2ZjYzNjE2YzY4NmY3Mzc0NWMyZTZkNzk3NDcyNjU3YTZmNzI1YzJlNjM2ZjZkMjgzYTVjNjQyYjI5M2YyODJmMmUyYTI5M2YwYTFiNjg3NDc0NzA3MzNhMmYyZjZkNzk3NDcyNjU3YTZmNzI1YzJlNjM2ZjZkMjgyZjJlMmEyOTNmMGEyNTY4NzQ3NDcwNzMzYTJmMmY1YjVjNzc1YzJlMmQ1ZDJiNWMyZTZkNzk3NDcyNjU3YTZmNzI1YzJlNjM2ZjZkMjgyZjJlMmEyOTNmMGExODY4NzQ3NDcwNzMzYTJmMmY3NDcyNjU3YTZmNzI1YzJlNjk2ZjI4MmYyZTJhMjkzZjBhMjI2ODc0NzQ3MDczM2EyZjJmNWI1Yzc3NWMyZTJkNWQyYjVjMmU3NDcyNjU3YTZmNzI1YzJlNjk2ZjI4MmYyZTJhMjkzZjBhMjA2ODc0NzQ3MDczM2EyZjJmNzQ3MjY1N2E2ZjcyNWMyZTY3Njk3NDY4NzU2MjVjMmU2OTZmMjgyZjJlMmEyOTNmMGExZTY4NzQ3NDcwNzMzYTJmMmY2NzcyNjU2NTZlNjE2NDY0NzI2NTczNzM1YzJlNjk3NDI4MmYyZTJhMjkzZjBhMjg2ODc0NzQ3MDczM2EyZjJmNWI1Yzc3NWMyZTJkNWQyYjVjMmU2NzcyNjU2NTZlNjE2NDY0NzI2NTczNzM1YzJlNjk3NDI4MmYyZTJhMjkzZjBhMWM2ODc0NzQ3MDczM2EyZjJmNjM2ZjY5NmU3MDcyNjk3MzZkNWMyZTYzNmY2ZDI4MmYyZTJhMjkzZjBhMjY2ODc0NzQ3MDczM2EyZjJmNWI1Yzc3NWMyZTJkNWQyYjVjMmU2MzZmNjk2ZTcwNzI2OTczNmQ1YzJlNjM2ZjZkMjgyZjJlMmEyOTNmMGExNzY4NzQ3NDcwNzMzYTJmMmY2MjY5NzQ2NTc4NWMyZTZjNjEyODJmMmUyYTI5M2YwYTIxNjg3NDc0NzA3MzNhMmYyZjViNWM3NzVjMmUyZDVkMmI1YzJlNjI2OTc0NjU3ODVjMmU2YzYxMjgyZjJlMmEyOTNmMGExNzY4NzQ3NDcwNzMzYTJmMmY2NDYxNzM2ODVjMmU3Mjc1NmUyODJmMmUyYTI5M2YwYTIxNjg3NDc0NzA3MzNhMmYyZjViNWM3NzVjMmUyZDVkMmI1YzJlNjQ2MTczNjg1YzJlNzI3NTZlMjgyZjJlMmEyOTNmMGExYzY4NzQ3NDcwNzMzYTJmMmYzMDc4NzA3MjZmNmE2NTYzNzQ1YzJlNjM2ZjZkMjgyZjJlMmEyOTNmMGEyZTY4NzQ3NDcwNzMzYTJmMmY1YjVjNzc1YzJlMmQ1ZDJiNWMyZTc1NmU2MzY4NjE2OTZlNjU2NDJkNjM2MTcwNjk3NDYxNmM1YzJlNjM2ZjZkMjgyZjJlMmEyOTNmMGEzOTYzNjg3MjZmNmQ2NTJkNjU3ODc0NjU2ZTczNjk2ZjZlM2EyZjJmNmE2MzZhNmE2ODZhNjc2OTZkNjk2YTY0NmI2ZjYxNmQ2NTZkNjE2NzY4NjE2YTZjNjg2NTY3NmQ2ZjYzNmM2YTI4MmYyZTJhMjkzZjFhZGM5YTAyMGFjMjNhMGEyMDY3NmY2ZjY3NmM2NTJmNzA3MjZmNzQ2ZjYyNzU2NjJmNjQ2NTczNjM3MjY5NzA3NDZmNzIyZTcwNzI2Zjc0NmYxMjBmNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MjI0ZDBhMTE0NjY5NmM2NTQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTM2NTc0MTIzODBhMDQ2NjY5NmM2NTE4MDEyMDAzMjgwYjMyMjQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDY2OTZjNjU0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmY1MjA0NjY2OTZjNjUyMmU0MDQwYTEzNDY2OTZjNjU0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmYxMjEyMGEwNDZlNjE2ZDY1MTgwMTIwMDEyODA5NTIwNDZlNjE2ZDY1MTIxODBhMDc3MDYxNjM2YjYxNjc2NTE4MDIyMDAxMjgwOTUyMDc3MDYxNjM2YjYxNjc2NTEyMWUwYTBhNjQ2NTcwNjU2ZTY0NjU2ZTYzNzkxODAzMjAwMzI4MDk1MjBhNjQ2NTcwNjU2ZTY0NjU2ZTYzNzkxMjJiMGExMTcwNzU2MjZjNjk2MzVmNjQ2NTcwNjU2ZTY0NjU2ZTYzNzkxODBhMjAwMzI4MDU1MjEwNzA3NTYyNmM2OTYzNDQ2NTcwNjU2ZTY0NjU2ZTYzNzkxMjI3MGEwZjc3NjU2MTZiNWY2NDY1NzA2NTZlNjQ2NTZlNjM3OTE4MGIyMDAzMjgwNTUyMGU3NzY1NjE2YjQ0NjU3MDY1NmU2NDY1NmU2Mzc5MTI0MzBhMGM2ZDY1NzM3MzYxNjc2NTVmNzQ3OTcwNjUxODA0MjAwMzI4MGIzMjIwMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTA3MjZmNzQ2ZjUyMGI2ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1MTI0MTBhMDk2NTZlNzU2ZDVmNzQ3OTcwNjUxODA1MjAwMzI4MGIzMjI0MmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmNTIwODY1NmU3NTZkNTQ3OTcwNjUxMjQxMGEwNzczNjU3Mjc2Njk2MzY1MTgwNjIwMDMyODBiMzIyNzJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1MzY1NzI3NjY5NjM2NTQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTA3MjZmNzQ2ZjUyMDc3MzY1NzI3NjY5NjM2NTEyNDMwYTA5NjU3ODc0NjU2ZTczNjk2ZjZlMTgwNzIwMDMyODBiMzIyNTJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NjY5NjU2YzY0NDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmNTIwOTY1Nzg3NDY1NmU3MzY5NmY2ZTEyMzYwYTA3NmY3MDc0Njk2ZjZlNzMxODA4MjAwMTI4MGIzMjFjMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ2Njk2YzY1NGY3MDc0Njk2ZjZlNzM1MjA3NmY3MDc0Njk2ZjZlNzMxMjQ5MGExMDczNmY3NTcyNjM2NTVmNjM2ZjY0NjU1ZjY5NmU2NjZmMTgwOTIwMDEyODBiMzIxZjJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1MzZmNzU3MjYzNjU0MzZmNjQ2NTQ5NmU2NjZmNTIwZTczNmY3NTcyNjM2NTQzNmY2NDY1NDk2ZTY2NmYxMjE2MGEwNjczNzk2ZTc0NjE3ODE4MGMyMDAxMjgwOTUyMDY3Mzc5NmU3NDYxNzgyMmI5MDYwYTBmNDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmMTIxMjBhMDQ2ZTYxNmQ2NTE4MDEyMDAxMjgwOTUyMDQ2ZTYxNmQ2NTEyM2IwYTA1NjY2OTY1NmM2NDE4MDIyMDAzMjgwYjMyMjUyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDY2OTY1NmM2NDQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTA3MjZmNzQ2ZjUyMDU2NjY5NjU2YzY0MTI0MzBhMDk2NTc4NzQ2NTZlNzM2OTZmNmUxODA2MjAwMzI4MGIzMjI1MmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ2Njk2NTZjNjQ0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmY1MjA5NjU3ODc0NjU2ZTczNjk2ZjZlMTI0MTBhMGI2ZTY1NzM3NDY1NjQ1Zjc0Nzk3MDY1MTgwMzIwMDMyODBiMzIyMDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmY1MjBhNmU2NTczNzQ2NTY0NTQ3OTcwNjUxMjQxMGEwOTY1NmU3NTZkNWY3NDc5NzA2NTE4MDQyMDAzMjgwYjMyMjQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDU2ZTc1NmQ0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmY1MjA4NjU2ZTc1NmQ1NDc5NzA2NTEyNTgwYTBmNjU3ODc0NjU2ZTczNjk2ZjZlNWY3MjYxNmU2NzY1MTgwNTIwMDMyODBiMzIyZjJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmYyZTQ1Nzg3NDY1NmU3MzY5NmY2ZTUyNjE2ZTY3NjU1MjBlNjU3ODc0NjU2ZTczNjk2ZjZlNTI2MTZlNjc2NTEyNDQwYTBhNmY2ZTY1NmY2NjVmNjQ2NTYzNmMxODA4MjAwMzI4MGIzMjI1MmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTRmNmU2NTZmNjY0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmY1MjA5NmY2ZTY1NmY2NjQ0NjU2MzZjMTIzOTBhMDc2ZjcwNzQ2OTZmNmU3MzE4MDcyMDAxMjgwYjMyMWYyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNGQ2NTczNzM2MTY3NjU0ZjcwNzQ2OTZmNmU3MzUyMDc2ZjcwNzQ2OTZmNmU3MzEyNTUwYTBlNzI2NTczNjU3Mjc2NjU2NDVmNzI2MTZlNjc2NTE4MDkyMDAzMjgwYjMyMmUyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmMmU1MjY1NzM2NTcyNzY2NTY0NTI2MTZlNjc2NTUyMGQ3MjY1NzM2NTcyNzY2NTY0NTI2MTZlNjc2NTEyMjMwYTBkNzI2NTczNjU3Mjc2NjU2NDVmNmU2MTZkNjUxODBhMjAwMzI4MDk1MjBjNzI2NTczNjU3Mjc2NjU2NDRlNjE2ZDY1MWE3YTBhMGU0NTc4NzQ2NTZlNzM2OTZmNmU1MjYxNmU2NzY1MTIxNDBhMDU3Mzc0NjE3Mjc0MTgwMTIwMDEyODA1NTIwNTczNzQ2MTcyNzQxMjEwMGEwMzY1NmU2NDE4MDIyMDAxMjgwNTUyMDM2NTZlNjQxMjQwMGEwNzZmNzA3NDY5NmY2ZTczMTgwMzIwMDEyODBiMzIyNjJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NTc4NzQ2NTZlNzM2OTZmNmU1MjYxNmU2NzY1NGY3MDc0Njk2ZjZlNzM1MjA3NmY3MDc0Njk2ZjZlNzMxYTM3MGEwZDUyNjU3MzY1NzI3NjY1NjQ1MjYxNmU2NzY1MTIxNDBhMDU3Mzc0NjE3Mjc0MTgwMTIwMDEyODA1NTIwNTczNzQ2MTcyNzQxMjEwMGEwMzY1NmU2NDE4MDIyMDAxMjgwNTUyMDM2NTZlNjQyMjdjMGExNTQ1Nzg3NDY1NmU3MzY5NmY2ZTUyNjE2ZTY3NjU0ZjcwNzQ2OTZmNmU3MzEyNTgwYTE0NzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ1ZjZmNzA3NDY5NmY2ZTE4ZTcwNzIwMDMyODBiMzIyNDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTUyMTM3NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTJhMDkwOGU4MDcxMDgwODA4MDgwMDIyMjk4MDYwYTE0NDY2OTY1NmM2NDQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTA3MjZmNzQ2ZjEyMTIwYTA0NmU2MTZkNjUxODAxMjAwMTI4MDk1MjA0NmU2MTZkNjUxMjE2MGEwNjZlNzU2ZDYyNjU3MjE4MDMyMDAxMjgwNTUyMDY2ZTc1NmQ2MjY1NzIxMjQxMGEwNTZjNjE2MjY1NmMxODA0MjAwMTI4MGUzMjJiMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ2Njk2NTZjNjQ0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmYyZTRjNjE2MjY1NmM1MjA1NmM2MTYyNjU2YzEyM2UwYTA0NzQ3OTcwNjUxODA1MjAwMTI4MGUzMjJhMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ2Njk2NTZjNjQ0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmYyZTU0Nzk3MDY1NTIwNDc0Nzk3MDY1MTIxYjBhMDk3NDc5NzA2NTVmNmU2MTZkNjUxODA2MjAwMTI4MDk1MjA4NzQ3OTcwNjU0ZTYxNmQ2NTEyMWEwYTA4NjU3ODc0NjU2ZTY0NjU2NTE4MDIyMDAxMjgwOTUyMDg2NTc4NzQ2NTZlNjQ2NTY1MTIyMzBhMGQ2NDY1NjY2MTc1NmM3NDVmNzY2MTZjNzU2NTE4MDcyMDAxMjgwOTUyMGM2NDY1NjY2MTc1NmM3NDU2NjE2Yzc1NjUxMjFmMGEwYjZmNmU2NTZmNjY1ZjY5NmU2NDY1NzgxODA5MjAwMTI4MDU1MjBhNmY2ZTY1NmY2NjQ5NmU2NDY1NzgxMjFiMGEwOTZhNzM2ZjZlNWY2ZTYxNmQ2NTE4MGEyMDAxMjgwOTUyMDg2YTczNmY2ZTRlNjE2ZDY1MTIzNzBhMDc2ZjcwNzQ2OTZmNmU3MzE4MDgyMDAxMjgwYjMyMWQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDY2OTY1NmM2NDRmNzA3NDY5NmY2ZTczNTIwNzZmNzA3NDY5NmY2ZTczMjJiNjAyMGEwNDU0Nzk3MDY1MTIwZjBhMGI1NDU5NTA0NTVmNDQ0ZjU1NDI0YzQ1MTAwMTEyMGUwYTBhNTQ1OTUwNDU1ZjQ2NGM0ZjQxNTQxMDAyMTIwZTBhMGE1NDU5NTA0NTVmNDk0ZTU0MzYzNDEwMDMxMjBmMGEwYjU0NTk1MDQ1NWY1NTQ5NGU1NDM2MzQxMDA0MTIwZTBhMGE1NDU5NTA0NTVmNDk0ZTU0MzMzMjEwMDUxMjEwMGEwYzU0NTk1MDQ1NWY0NjQ5NTg0NTQ0MzYzNDEwMDYxMjEwMGEwYzU0NTk1MDQ1NWY0NjQ5NTg0NTQ0MzMzMjEwMDcxMjBkMGEwOTU0NTk1MDQ1NWY0MjRmNGY0YzEwMDgxMjBmMGEwYjU0NTk1MDQ1NWY1MzU0NTI0OTRlNDcxMDA5MTIwZTBhMGE1NDU5NTA0NTVmNDc1MjRmNTU1MDEwMGExMjEwMGEwYzU0NTk1MDQ1NWY0ZDQ1NTM1MzQxNDc0NTEwMGIxMjBlMGEwYTU0NTk1MDQ1NWY0MjU5NTQ0NTUzMTAwYzEyMGYwYTBiNTQ1OTUwNDU1ZjU1NDk0ZTU0MzMzMjEwMGQxMjBkMGEwOTU0NTk1MDQ1NWY0NTRlNTU0ZDEwMGUxMjExMGEwZDU0NTk1MDQ1NWY1MzQ2NDk1ODQ1NDQzMzMyMTAwZjEyMTEwYTBkNTQ1OTUwNDU1ZjUzNDY0OTU4NDU0NDM2MzQxMDEwMTIwZjBhMGI1NDU5NTA0NTVmNTM0OTRlNTQzMzMyMTAxMTEyMGYwYTBiNTQ1OTUwNDU1ZjUzNDk0ZTU0MzYzNDEwMTIyMjQzMGEwNTRjNjE2MjY1NmMxMjEyMGEwZTRjNDE0MjQ1NGM1ZjRmNTA1NDQ5NGY0ZTQxNGMxMDAxMTIxMjBhMGU0YzQxNDI0NTRjNWY1MjQ1NTE1NTQ5NTI0NTQ0MTAwMjEyMTIwYTBlNGM0MTQyNDU0YzVmNTI0NTUwNDU0MTU0NDU0NDEwMDMyMjYzMGExNDRmNmU2NTZmNjY0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmYxMjEyMGEwNDZlNjE2ZDY1MTgwMTIwMDEyODA5NTIwNDZlNjE2ZDY1MTIzNzBhMDc2ZjcwNzQ2OTZmNmU3MzE4MDIyMDAxMjgwYjMyMWQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNGY2ZTY1NmY2NjRmNzA3NDY5NmY2ZTczNTIwNzZmNzA3NDY5NmY2ZTczMjJlMzAyMGExMzQ1NmU3NTZkNDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmMTIxMjBhMDQ2ZTYxNmQ2NTE4MDEyMDAxMjgwOTUyMDQ2ZTYxNmQ2NTEyM2YwYTA1NzY2MTZjNzU2NTE4MDIyMDAzMjgwYjMyMjkyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDU2ZTc1NmQ1NjYxNmM3NTY1NDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmNTIwNTc2NjE2Yzc1NjUxMjM2MGEwNzZmNzA3NDY5NmY2ZTczMTgwMzIwMDEyODBiMzIxYzJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NTZlNzU2ZDRmNzA3NDY5NmY2ZTczNTIwNzZmNzA3NDY5NmY2ZTczMTI1ZDBhMGU3MjY1NzM2NTcyNzY2NTY0NWY3MjYxNmU2NzY1MTgwNDIwMDMyODBiMzIzNjJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NTZlNzU2ZDQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTA3MjZmNzQ2ZjJlNDU2ZTc1NmQ1MjY1NzM2NTcyNzY2NTY0NTI2MTZlNjc2NTUyMGQ3MjY1NzM2NTcyNzY2NTY0NTI2MTZlNjc2NTEyMjMwYTBkNzI2NTczNjU3Mjc2NjU2NDVmNmU2MTZkNjUxODA1MjAwMzI4MDk1MjBjNzI2NTczNjU3Mjc2NjU2NDRlNjE2ZDY1MWEzYjBhMTE0NTZlNzU2ZDUyNjU3MzY1NzI3NjY1NjQ1MjYxNmU2NzY1MTIxNDBhMDU3Mzc0NjE3Mjc0MTgwMTIwMDEyODA1NTIwNTczNzQ2MTcyNzQxMjEwMGEwMzY1NmU2NDE4MDIyMDAxMjgwNTUyMDM2NTZlNjQyMjgzMDEwYTE4NDU2ZTc1NmQ1NjYxNmM3NTY1NDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmMTIxMjBhMDQ2ZTYxNmQ2NTE4MDEyMDAxMjgwOTUyMDQ2ZTYxNmQ2NTEyMTYwYTA2NmU3NTZkNjI2NTcyMTgwMjIwMDEyODA1NTIwNjZlNzU2ZDYyNjU3MjEyM2IwYTA3NmY3MDc0Njk2ZjZlNzMxODAzMjAwMTI4MGIzMjIxMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNTY2MTZjNzU2NTRmNzA3NDY5NmY2ZTczNTIwNzZmNzA3NDY5NmY2ZTczMjJhNzAxMGExNjUzNjU3Mjc2Njk2MzY1NDQ2NTczNjM3MjY5NzA3NDZmNzI1MDcyNmY3NDZmMTIxMjBhMDQ2ZTYxNmQ2NTE4MDEyMDAxMjgwOTUyMDQ2ZTYxNmQ2NTEyM2UwYTA2NmQ2NTc0Njg2ZjY0MTgwMjIwMDMyODBiMzIyNjJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0ZDY1NzQ2ODZmNjQ0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmY1MjA2NmQ2NTc0Njg2ZjY0MTIzOTBhMDc2ZjcwNzQ2OTZmNmU3MzE4MDMyMDAxMjgwYjMyMWYyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNTM2NTcyNzY2OTYzNjU0ZjcwNzQ2OTZmNmU3MzUyMDc2ZjcwNzQ2OTZmNmU3MzIyODkwMjBhMTU0ZDY1NzQ2ODZmNjQ0NDY1NzM2MzcyNjk3MDc0NmY3MjUwNzI2Zjc0NmYxMjEyMGEwNDZlNjE2ZDY1MTgwMTIwMDEyODA5NTIwNDZlNjE2ZDY1MTIxZDBhMGE2OTZlNzA3NTc0NWY3NDc5NzA2NTE4MDIyMDAxMjgwOTUyMDk2OTZlNzA3NTc0NTQ3OTcwNjUxMjFmMGEwYjZmNzU3NDcwNzU3NDVmNzQ3OTcwNjUxODAzMjAwMTI4MDk1MjBhNmY3NTc0NzA3NTc0NTQ3OTcwNjUxMjM4MGEwNzZmNzA3NDY5NmY2ZTczMTgwNDIwMDEyODBiMzIxZTJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0ZDY1NzQ2ODZmNjQ0ZjcwNzQ2OTZmNmU3MzUyMDc2ZjcwNzQ2OTZmNmU3MzEyMzAwYTEwNjM2YzY5NjU2ZTc0NWY3Mzc0NzI2NTYxNmQ2OTZlNjcxODA1MjAwMTI4MDgzYTA1NjY2MTZjNzM2NTUyMGY2MzZjNjk2NTZlNzQ1Mzc0NzI2NTYxNmQ2OTZlNjcxMjMwMGExMDczNjU3Mjc2NjU3MjVmNzM3NDcyNjU2MTZkNjk2ZTY3MTgwNjIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjBmNzM2NTcyNzY2NTcyNTM3NDcyNjU2MTZkNjk2ZTY3MjJiOTA4MGEwYjQ2Njk2YzY1NGY3MDc0Njk2ZjZlNzMxMjIxMGEwYzZhNjE3NjYxNWY3MDYxNjM2YjYxNjc2NTE4MDEyMDAxMjgwOTUyMGI2YTYxNzY2MTUwNjE2MzZiNjE2NzY1MTIzMDBhMTQ2YTYxNzY2MTVmNmY3NTc0NjU3MjVmNjM2YzYxNzM3MzZlNjE2ZDY1MTgwODIwMDEyODA5NTIxMjZhNjE3NjYxNGY3NTc0NjU3MjQzNmM2MTczNzM2ZTYxNmQ2NTEyMzUwYTEzNmE2MTc2NjE1ZjZkNzU2Yzc0Njk3MDZjNjU1ZjY2Njk2YzY1NzMxODBhMjAwMTI4MDgzYTA1NjY2MTZjNzM2NTUyMTE2YTYxNzY2MTRkNzU2Yzc0Njk3MDZjNjU0NjY5NmM2NTczMTI0NDBhMWQ2YTYxNzY2MTVmNjc2NTZlNjU3MjYxNzQ2NTVmNjU3MTc1NjE2YzczNWY2MTZlNjQ1ZjY4NjE3MzY4MTgxNDIwMDEyODA4NDIwMjE4MDE1MjE5NmE2MTc2NjE0NzY1NmU2NTcyNjE3NDY1NDU3MTc1NjE2YzczNDE2ZTY0NDg2MTczNjgxMjNhMGExNjZhNjE3NjYxNWY3Mzc0NzI2OTZlNjc1ZjYzNjg2NTYzNmI1Zjc1NzQ2NjM4MTgxYjIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjEzNmE2MTc2NjE1Mzc0NzI2OTZlNjc0MzY4NjU2MzZiNTU3NDY2MzgxMjUzMGEwYzZmNzA3NDY5NmQ2OTdhNjU1ZjY2NmY3MjE4MDkyMDAxMjgwZTMyMjkyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNDY2OTZjNjU0ZjcwNzQ2OTZmNmU3MzJlNGY3MDc0Njk2ZDY5N2E2NTRkNmY2NDY1M2EwNTUzNTA0NTQ1NDQ1MjBiNmY3MDc0Njk2ZDY5N2E2NTQ2NmY3MjEyMWQwYTBhNjc2ZjVmNzA2MTYzNmI2MTY3NjUxODBiMjAwMTI4MDk1MjA5Njc2ZjUwNjE2MzZiNjE2NzY1MTIzNTBhMTM2MzYzNWY2NzY1NmU2NTcyNjk2MzVmNzM2NTcyNzY2OTYzNjU3MzE4MTAyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIxMTYzNjM0NzY1NmU2NTcyNjk2MzUzNjU3Mjc2Njk2MzY1NzMxMjM5MGExNTZhNjE3NjYxNWY2NzY1NmU2NTcyNjk2MzVmNzM2NTcyNzY2OTYzNjU3MzE4MTEyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIxMzZhNjE3NjYxNDc2NTZlNjU3MjY5NjM1MzY1NzI3NjY5NjM2NTczMTIzNTBhMTM3MDc5NWY2NzY1NmU2NTcyNjk2MzVmNzM2NTcyNzY2OTYzNjU3MzE4MTIyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIxMTcwNzk0NzY1NmU2NTcyNjk2MzUzNjU3Mjc2Njk2MzY1NzMxMjM3MGExNDcwNjg3MDVmNjc2NTZlNjU3MjY5NjM1ZjczNjU3Mjc2Njk2MzY1NzMxODJhMjAwMTI4MDgzYTA1NjY2MTZjNzM2NTUyMTI3MDY4NzA0NzY1NmU2NTcyNjk2MzUzNjU3Mjc2Njk2MzY1NzMxMjI1MGEwYTY0NjU3MDcyNjU2MzYxNzQ2NTY0MTgxNzIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjBhNjQ2NTcwNzI2NTYzNjE3NDY1NjQxMjJmMGExMDYzNjM1ZjY1NmU2MTYyNmM2NTVmNjE3MjY1NmU2MTczMTgxZjIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjBlNjM2MzQ1NmU2MTYyNmM2NTQxNzI2NTZlNjE3MzEyMmEwYTExNmY2MjZhNjM1ZjYzNmM2MTczNzM1ZjcwNzI2NTY2Njk3ODE4MjQyMDAxMjgwOTUyMGY2ZjYyNmE2MzQzNmM2MTczNzM1MDcyNjU2NjY5NzgxMjI5MGExMDYzNzM2ODYxNzI3MDVmNmU2MTZkNjU3MzcwNjE2MzY1MTgyNTIwMDEyODA5NTIwZjYzNzM2ODYxNzI3MDRlNjE2ZDY1NzM3MDYxNjM2NTEyMjEwYTBjNzM3NzY5NjY3NDVmNzA3MjY1NjY2OTc4MTgyNzIwMDEyODA5NTIwYjczNzc2OTY2NzQ1MDcyNjU2NjY5NzgxMjI4MGExMDcwNjg3MDVmNjM2YzYxNzM3MzVmNzA3MjY1NjY2OTc4MTgyODIwMDEyODA5NTIwZTcwNjg3MDQzNmM2MTczNzM1MDcyNjU2NjY5NzgxMjIzMGEwZDcwNjg3MDVmNmU2MTZkNjU3MzcwNjE2MzY1MTgyOTIwMDEyODA5NTIwYzcwNjg3MDRlNjE2ZDY1NzM3MDYxNjM2NTEyNTgwYTE0NzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ1ZjZmNzA3NDY5NmY2ZTE4ZTcwNzIwMDMyODBiMzIyNDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTUyMTM3NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTIyM2EwYTBjNGY3MDc0Njk2ZDY5N2E2NTRkNmY2NDY1MTIwOTBhMDU1MzUwNDU0NTQ0MTAwMTEyMGQwYTA5NDM0ZjQ0NDU1ZjUzNDk1YTQ1MTAwMjEyMTAwYTBjNGM0OTU0NDU1ZjUyNTU0ZTU0NDk0ZDQ1MTAwMzJhMDkwOGU4MDcxMDgwODA4MDgwMDI0YTA0MDgyNjEwMjcyMmQxMDIwYTBlNGQ2NTczNzM2MTY3NjU0ZjcwNzQ2OTZmNmU3MzEyM2MwYTE3NmQ2NTczNzM2MTY3NjU1ZjczNjU3NDVmNzc2OTcyNjU1ZjY2NmY3MjZkNjE3NDE4MDEyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIxNDZkNjU3MzczNjE2NzY1NTM2NTc0NTc2OTcyNjU0NjZmNzI2ZDYxNzQxMjRjMGExZjZlNmY1ZjczNzQ2MTZlNjQ2MTcyNjQ1ZjY0NjU3MzYzNzI2OTcwNzQ2ZjcyNWY2MTYzNjM2NTczNzM2ZjcyMTgwMjIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjFjNmU2ZjUzNzQ2MTZlNjQ2MTcyNjQ0NDY1NzM2MzcyNjk3MDc0NmY3MjQxNjM2MzY1NzM3MzZmNzIxMjI1MGEwYTY0NjU3MDcyNjU2MzYxNzQ2NTY0MTgwMzIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjBhNjQ2NTcwNzI2NTYzNjE3NDY1NjQxMjFiMGEwOTZkNjE3MDVmNjU2ZTc0NzI3OTE4MDcyMDAxMjgwODUyMDg2ZDYxNzA0NTZlNzQ3Mjc5MTI1ODBhMTQ3NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDVmNmY3MDc0Njk2ZjZlMThlNzA3MjAwMzI4MGIzMjI0MmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTU1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NGY3MDc0Njk2ZjZlNTIxMzc1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NGY3MDc0Njk2ZjZlMmEwOTA4ZTgwNzEwODA4MDgwODAwMjRhMDQwODA4MTAwOTRhMDQwODA5MTAwYTIyZTIwMzBhMGM0NjY5NjU2YzY0NGY3MDc0Njk2ZjZlNzMxMjQxMGEwNTYzNzQ3OTcwNjUxODAxMjAwMTI4MGUzMjIzMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ2Njk2NTZjNjQ0ZjcwNzQ2OTZmNmU3MzJlNDM1NDc5NzA2NTNhMDY1MzU0NTI0OTRlNDc1MjA1NjM3NDc5NzA2NTEyMTYwYTA2NzA2MTYzNmI2NTY0MTgwMjIwMDEyODA4NTIwNjcwNjE2MzZiNjU2NDEyNDcwYTA2NmE3Mzc0Nzk3MDY1MTgwNjIwMDEyODBlMzIyNDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NjY5NjU2YzY0NGY3MDc0Njk2ZjZlNzMyZTRhNTM1NDc5NzA2NTNhMDk0YTUzNWY0ZTRmNTI0ZDQxNGM1MjA2NmE3Mzc0Nzk3MDY1MTIxOTBhMDQ2YzYxN2E3OTE4MDUyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIwNDZjNjE3YTc5MTIyNTBhMGE2NDY1NzA3MjY1NjM2MTc0NjU2NDE4MDMyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIwYTY0NjU3MDcyNjU2MzYxNzQ2NTY0MTIxOTBhMDQ3NzY1NjE2YjE4MGEyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIwNDc3NjU2MTZiMTI1ODBhMTQ3NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDVmNmY3MDc0Njk2ZjZlMThlNzA3MjAwMzI4MGIzMjI0MmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTU1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NGY3MDc0Njk2ZjZlNTIxMzc1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NGY3MDc0Njk2ZjZlMjIyZjBhMDU0MzU0Nzk3MDY1MTIwYTBhMDY1MzU0NTI0OTRlNDcxMDAwMTIwODBhMDQ0MzRmNTI0NDEwMDExMjEwMGEwYzUzNTQ1MjQ5NGU0NzVmNTA0OTQ1NDM0NTEwMDIyMjM1MGEwNjRhNTM1NDc5NzA2NTEyMGQwYTA5NGE1MzVmNGU0ZjUyNGQ0MTRjMTAwMDEyMGQwYTA5NGE1MzVmNTM1NDUyNDk0ZTQ3MTAwMTEyMGQwYTA5NGE1MzVmNGU1NTRkNDI0NTUyMTAwMjJhMDkwOGU4MDcxMDgwODA4MDgwMDI0YTA0MDgwNDEwMDUyMjczMGEwYzRmNmU2NTZmNjY0ZjcwNzQ2OTZmNmU3MzEyNTgwYTE0NzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ1ZjZmNzA3NDY5NmY2ZTE4ZTcwNzIwMDMyODBiMzIyNDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTUyMTM3NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTJhMDkwOGU4MDcxMDgwODA4MDgwMDIyMmMwMDEwYTBiNDU2ZTc1NmQ0ZjcwNzQ2OTZmNmU3MzEyMWYwYTBiNjE2YzZjNmY3NzVmNjE2YzY5NjE3MzE4MDIyMDAxMjgwODUyMGE2MTZjNmM2Zjc3NDE2YzY5NjE3MzEyMjUwYTBhNjQ2NTcwNzI2NTYzNjE3NDY1NjQxODAzMjAwMTI4MDgzYTA1NjY2MTZjNzM2NTUyMGE2NDY1NzA3MjY1NjM2MTc0NjU2NDEyNTgwYTE0NzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ1ZjZmNzA3NDY5NmY2ZTE4ZTcwNzIwMDMyODBiMzIyNDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTUyMTM3NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTJhMDkwOGU4MDcxMDgwODA4MDgwMDI0YTA0MDgwNTEwMDYyMjllMDEwYTEwNDU2ZTc1NmQ1NjYxNmM3NTY1NGY3MDc0Njk2ZjZlNzMxMjI1MGEwYTY0NjU3MDcyNjU2MzYxNzQ2NTY0MTgwMTIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjBhNjQ2NTcwNzI2NTYzNjE3NDY1NjQxMjU4MGExNDc1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NWY2ZjcwNzQ2OTZmNmUxOGU3MDcyMDAzMjgwYjMyMjQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNTU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmU1MjEzNzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmUyYTA5MDhlODA3MTA4MDgwODA4MDAyMjI5YzAxMGEwZTUzNjU3Mjc2Njk2MzY1NGY3MDc0Njk2ZjZlNzMxMjI1MGEwYTY0NjU3MDcyNjU2MzYxNzQ2NTY0MTgyMTIwMDEyODA4M2EwNTY2NjE2YzczNjU1MjBhNjQ2NTcwNzI2NTYzNjE3NDY1NjQxMjU4MGExNDc1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NWY2ZjcwNzQ2OTZmNmUxOGU3MDcyMDAzMjgwYjMyMjQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNTU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmU1MjEzNzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmUyYTA5MDhlODA3MTA4MDgwODA4MDAyMjJlMDAyMGEwZDRkNjU3NDY4NmY2NDRmNzA3NDY5NmY2ZTczMTIyNTBhMGE2NDY1NzA3MjY1NjM2MTc0NjU2NDE4MjEyMDAxMjgwODNhMDU2NjYxNmM3MzY1NTIwYTY0NjU3MDcyNjU2MzYxNzQ2NTY0MTI3MTBhMTE2OTY0NjU2ZDcwNmY3NDY1NmU2Mzc5NWY2YzY1NzY2NTZjMTgyMjIwMDEyODBlMzIyZjJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0ZDY1NzQ2ODZmNjQ0ZjcwNzQ2OTZmNmU3MzJlNDk2NDY1NmQ3MDZmNzQ2NTZlNjM3OTRjNjU3NjY1NmMzYTEzNDk0NDQ1NGQ1MDRmNTQ0NTRlNDM1OTVmNTU0ZTRiNGU0ZjU3NGU1MjEwNjk2NDY1NmQ3MDZmNzQ2NTZlNjM3OTRjNjU3NjY1NmMxMjU4MGExNDc1NmU2OTZlNzQ2NTcyNzA3MjY1NzQ2NTY0NWY2ZjcwNzQ2OTZmNmUxOGU3MDcyMDAzMjgwYjMyMjQyZTY3NmY2ZjY3NmM2NTJlNzA3MjZmNzQ2ZjYyNzU2NjJlNTU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmU1MjEzNzU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmUyMjUwMGExMDQ5NjQ2NTZkNzA2Zjc0NjU2ZTYzNzk0YzY1NzY2NTZjMTIxNzBhMTM0OTQ0NDU0ZDUwNGY1NDQ1NGU0MzU5NWY1NTRlNGI0ZTRmNTc0ZTEwMDAxMjEzMGEwZjRlNGY1ZjUzNDk0NDQ1NWY0NTQ2NDY0NTQzNTQ1MzEwMDExMjBlMGEwYTQ5NDQ0NTRkNTA0ZjU0NDU0ZTU0MTAwMjJhMDkwOGU4MDcxMDgwODA4MDgwMDIyMjlhMDMwYTEzNTU2ZTY5NmU3NDY1NzI3MDcyNjU3NDY1NjQ0ZjcwNzQ2OTZmNmUxMjQxMGEwNDZlNjE2ZDY1MTgwMjIwMDMyODBiMzIyZDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU1NTZlNjk2ZTc0NjU3MjcwNzI2NTc0NjU2NDRmNzA3NDY5NmY2ZTJlNGU2MTZkNjU1MDYxNzI3NDUyMDQ2ZTYxNmQ2NTEyMjkwYTEwNjk2NDY1NmU3NDY5NjY2OTY1NzI1Zjc2NjE2Yzc1NjUxODAzMjAwMTI4MDk1MjBmNjk2NDY1NmU3NDY5NjY2OTY1NzI1NjYxNmM3NTY1MTIyYzBhMTI3MDZmNzM2OTc0Njk3NjY1NWY2OTZlNzQ1Zjc2NjE2Yzc1NjUxODA0MjAwMTI4MDQ1MjEwNzA2ZjczNjk3NDY5NzY2NTQ5NmU3NDU2NjE2Yzc1NjUxMjJjMGExMjZlNjU2NzYxNzQ2OTc2NjU1ZjY5NmU3NDVmNzY2MTZjNzU2NTE4MDUyMDAxMjgwMzUyMTA2ZTY1Njc2MTc0Njk3NjY1NDk2ZTc0NTY2MTZjNzU2NTEyMjEwYTBjNjQ2Zjc1NjI2YzY1NWY3NjYxNmM3NTY1MTgwNjIwMDEyODAxNTIwYjY0NmY3NTYyNmM2NTU2NjE2Yzc1NjUxMjIxMGEwYzczNzQ3MjY5NmU2NzVmNzY2MTZjNzU2NTE4MDcyMDAxMjgwYzUyMGI3Mzc0NzI2OTZlNjc1NjYxNmM3NTY1MTIyNzBhMGY2MTY3Njc3MjY1Njc2MTc0NjU1Zjc2NjE2Yzc1NjUxODA4MjAwMTI4MDk1MjBlNjE2NzY3NzI2NTY3NjE3NDY1NTY2MTZjNzU2NTFhNGEwYTA4NGU2MTZkNjU1MDYxNzI3NDEyMWIwYTA5NmU2MTZkNjU1ZjcwNjE3Mjc0MTgwMTIwMDIyODA5NTIwODZlNjE2ZDY1NTA2MTcyNzQxMjIxMGEwYzY5NzM1ZjY1Nzg3NDY1NmU3MzY5NmY2ZTE4MDIyMDAyMjgwODUyMGI2OTczNDU3ODc0NjU2ZTczNjk2ZjZlMjJhNzAyMGEwZTUzNmY3NTcyNjM2NTQzNmY2NDY1NDk2ZTY2NmYxMjQ0MGEwODZjNmY2MzYxNzQ2OTZmNmUxODAxMjAwMzI4MGIzMjI4MmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTUzNmY3NTcyNjM2NTQzNmY2NDY1NDk2ZTY2NmYyZTRjNmY2MzYxNzQ2OTZmNmU1MjA4NmM2ZjYzNjE3NDY5NmY2ZTFhY2UwMTBhMDg0YzZmNjM2MTc0Njk2ZjZlMTIxNjBhMDQ3MDYxNzQ2ODE4MDEyMDAzMjgwNTQyMDIxMDAxNTIwNDcwNjE3NDY4MTIxNjBhMDQ3MzcwNjE2ZTE4MDIyMDAzMjgwNTQyMDIxMDAxNTIwNDczNzA2MTZlMTIyOTBhMTA2YzY1NjE2NDY5NmU2NzVmNjM2ZjZkNmQ2NTZlNzQ3MzE4MDMyMDAxMjgwOTUyMGY2YzY1NjE2NDY5NmU2NzQzNmY2ZDZkNjU2ZTc0NzMxMjJiMGExMTc0NzI2MTY5NmM2OTZlNjc1ZjYzNmY2ZDZkNjU2ZTc0NzMxODA0MjAwMTI4MDk1MjEwNzQ3MjYxNjk2YzY5NmU2NzQzNmY2ZDZkNjU2ZTc0NzMxMjNhMGExOTZjNjU2MTY0Njk2ZTY3NWY2NDY1NzQ2MTYzNjg2NTY0NWY2MzZmNmQ2ZDY1NmU3NDczMTgwNjIwMDMyODA5NTIxNzZjNjU2MTY0Njk2ZTY3NDQ2NTc0NjE2MzY4NjU2NDQzNmY2ZDZkNjU2ZTc0NzMyMmQxMDEwYTExNDc2NTZlNjU3MjYxNzQ2NTY0NDM2ZjY0NjU0OTZlNjY2ZjEyNGQwYTBhNjE2ZTZlNmY3NDYxNzQ2OTZmNmUxODAxMjAwMzI4MGIzMjJkMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ3NjU2ZTY1NzI2MTc0NjU2NDQzNmY2NDY1NDk2ZTY2NmYyZTQxNmU2ZTZmNzQ2MTc0Njk2ZjZlNTIwYTYxNmU2ZTZmNzQ2MTc0Njk2ZjZlMWE2ZDBhMGE0MTZlNmU2Zjc0NjE3NDY5NmY2ZTEyMTYwYTA0NzA2MTc0NjgxODAxMjAwMzI4MDU0MjAyMTAwMTUyMDQ3MDYxNzQ2ODEyMWYwYTBiNzM2Zjc1NzI2MzY1NWY2NjY5NmM2NTE4MDIyMDAxMjgwOTUyMGE3MzZmNzU3MjYzNjU0NjY5NmM2NTEyMTQwYTA1NjI2NTY3Njk2ZTE4MDMyMDAxMjgwNTUyMDU2MjY1Njc2OTZlMTIxMDBhMDM2NTZlNjQxODA0MjAwMTI4MDU1MjAzNjU2ZTY0NDI4ZjAxMGExMzYzNmY2ZDJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2NDIxMDQ0NjU3MzYzNzI2OTcwNzQ2ZjcyNTA3MjZmNzQ2ZjczNDgwMTVhM2U2NzY5NzQ2ODc1NjIyZTYzNmY2ZDJmNjc2ZjZjNjE2ZTY3MmY3MDcyNmY3NDZmNjI3NTY2MmY3MDcyNmY3NDZmNjMyZDY3NjU2ZTJkNjc2ZjJmNjQ2NTczNjM3MjY5NzA3NDZmNzIzYjY0NjU3MzYzNzI2OTcwNzQ2ZjcyZjgwMTAxYTIwMjAzNDc1MDQyYWEwMjFhNDc2ZjZmNjc2YzY1MmU1MDcyNmY3NDZmNjI3NTY2MmU1MjY1NjY2YzY1NjM3NDY5NmY2ZTBhZDI0MjBhMGI3NDc5NzA2NTczMmU3MDcyNmY3NDZmMWEyMDY3NmY2ZjY3NmM2NTJmNzA3MjZmNzQ2ZjYyNzU2NjJmNjQ2NTczNjM3MjY5NzA3NDZmNzIyZTcwNzI2Zjc0NmYyMmMwMDEwYTBhNDg0NDRlNmY2NDY1NTQ3OTcwNjUxMjE0MGEwNTY0NjU3MDc0NjgxODAxMjAwMjI4MGQ1MjA1NjQ2NTcwNzQ2ODEyMjAwYTBiNjY2OTZlNjc2NTcyNzA3MjY5NmU3NDE4MDIyMDAyMjgwZDUyMGI2NjY5NmU2NzY1NzI3MDcyNjk2ZTc0MTIxYjBhMDk2MzY4Njk2YzY0NWY2ZTc1NmQxODAzMjAwMjI4MGQ1MjA4NjM2ODY5NmM2NDRlNzU2ZDEyMWQwYTBhNjM2ODYxNjk2ZTVmNjM2ZjY0NjUxODA0MjAwMjI4MGM1MjA5NjM2ODYxNjk2ZTQzNmY2NDY1MTIxZjBhMGI3MDcyNjk3NjYxNzQ2NTVmNmI2NTc5MTgwNTIwMDEyODBjNTIwYTcwNzI2OTc2NjE3NDY1NGI2NTc5MTIxZDBhMGE3MDc1NjI2YzY5NjM1ZjZiNjU3OTE4MDYyMDAxMjgwYzUyMDk3MDc1NjI2YzY5NjM0YjY1NzkyMjRlMGEwZTQ4NDQ0ZTZmNjQ2NTUwNjE3NDY4NTQ3OTcwNjUxMjFmMGEwNDZlNmY2NDY1MTgwMTIwMDIyODBiMzIwYjJlNDg0NDRlNmY2NDY1NTQ3OTcwNjU1MjA0NmU2ZjY0NjUxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDIyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMjI3MzBhMTg0ZDc1NmM3NDY5NzM2OTY3NTI2NTY0NjU2NTZkNTM2MzcyNjk3MDc0NTQ3OTcwNjUxMjI5MGEwNzcwNzU2MjZiNjU3OTczMTgwMTIwMDMyODBiMzIwZjJlNDg0NDRlNmY2NDY1NTA2MTc0Njg1NDc5NzA2NTUyMDc3MDc1NjI2YjY1Nzk3MzEyMWUwYTBhNzM2OTY3NmU2MTc0NzU3MjY1NzMxODAyMjAwMzI4MGM1MjBhNzM2OTY3NmU2MTc0NzU3MjY1NzMxMjBjMGEwMTZkMTgwMzIwMDEyODBkNTIwMTZkMjI4MDA0MGEwYjU0Nzg0OTZlNzA3NTc0NTQ3OTcwNjUxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIxYjBhMDk3MDcyNjU3NjVmNjg2MTczNjgxODAyMjAwMjI4MGM1MjA4NzA3MjY1NzY0ODYxNzM2ODEyMWQwYTBhNzA3MjY1NzY1ZjY5NmU2NDY1NzgxODAzMjAwMjI4MGQ1MjA5NzA3MjY1NzY0OTZlNjQ2NTc4MTIxZDBhMGE3MzYzNzI2OTcwNzQ1ZjczNjk2NzE4MDQyMDAxMjgwYzUyMDk3MzYzNzI2OTcwNzQ1MzY5NjcxMjI2MGEwODczNjU3MTc1NjU2ZTYzNjUxODA1MjAwMTI4MGQzYTBhMzQzMjM5MzQzOTM2MzczMjM5MzU1MjA4NzM2NTcxNzU2NTZlNjM2NTEyM2YwYTBiNzM2MzcyNjk3MDc0NWY3NDc5NzA2NTE4MDYyMDAxMjgwZTMyMTAyZTQ5NmU3MDc1NzQ1MzYzNzI2OTcwNzQ1NDc5NzA2NTNhMGM1MzUwNDU0ZTQ0NDE0NDQ0NTI0NTUzNTM1MjBhNzM2MzcyNjk3MDc0NTQ3OTcwNjUxMjM1MGEwODZkNzU2Yzc0Njk3MzY5NjcxODA3MjAwMTI4MGIzMjE5MmU0ZDc1NmM3NDY5NzM2OTY3NTI2NTY0NjU2NTZkNTM2MzcyNjk3MDc0NTQ3OTcwNjU1MjA4NmQ3NTZjNzQ2OTczNjk2NzEyMTYwYTA2NjE2ZDZmNzU2ZTc0MTgwODIwMDEyODA0NTIwNjYxNmQ2Zjc1NmU3NDEyMWYwYTBiNjQ2NTYzNzI2NTY0NWY3NDcyNjU2NTE4MDkyMDAxMjgwZDUyMGE2NDY1NjM3MjY1NjQ1NDcyNjU2NTEyMzIwYTE1NjQ2NTYzNzI2NTY0NWY3MzYzNzI2OTcwNzQ1Zjc2NjU3MjczNjk2ZjZlMTgwYTIwMDEyODBkNTIxMzY0NjU2MzcyNjU2NDUzNjM3MjY5NzA3NDU2NjU3MjczNjk2ZjZlMTIzMzBhMTY3MDcyNjU3NjVmNjI2YzZmNjM2YjVmNjg2MTczNjg1ZjYyNjk3MDMxMzEzNTE4MGIyMDAxMjgwYzUyMTM3MDcyNjU3NjQyNmM2ZjYzNmI0ODYxNzM2ODQyNjk3MDMxMzEzNTEyMzcwYTE4NzA3MjY1NzY1ZjYyNmM2ZjYzNmI1ZjY4NjU2OTY3Njg3NDVmNjI2OTcwMzEzMTM1MTgwYzIwMDEyODBkNTIxNTcwNzI2NTc2NDI2YzZmNjM2YjQ4NjU2OTY3Njg3NDQyNjk3MDMxMzEzNTIyZmUwMjBhMGM1NDc4NGY3NTc0NzA3NTc0NTQ3OTcwNjUxMjE4MGEwNzYxNjQ2NDcyNjU3MzczMTgwMTIwMDEyODA5NTIwNzYxNjQ2NDcyNjU3MzczMTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAyMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMTYwYTA2NjE2ZDZmNzU2ZTc0MTgwMzIwMDIyODA0NTIwNjYxNmQ2Zjc1NmU3NDEyMzIwYTBiNzM2MzcyNjk3MDc0NWY3NDc5NzA2NTE4MDQyMDAyMjgwZTMyMTEyZTRmNzU3NDcwNzU3NDUzNjM3MjY5NzA3NDU0Nzk3MDY1NTIwYTczNjM3MjY5NzA3NDU0Nzk3MDY1MTIzNTBhMDg2ZDc1NmM3NDY5NzM2OTY3MTgwNTIwMDEyODBiMzIxOTJlNGQ3NTZjNzQ2OTczNjk2NzUyNjU2NDY1NjU2ZDUzNjM3MjY5NzA3NDU0Nzk3MDY1NTIwODZkNzU2Yzc0Njk3MzY5NjcxMjI0MGEwZTZmNzA1ZjcyNjU3NDc1NzI2ZTVmNjQ2MTc0NjExODA2MjAwMTI4MGM1MjBjNmY3MDUyNjU3NDc1NzI2ZTQ0NjE3NDYxMTIzMjBhMTU2NDY1NjM3MjY1NjQ1ZjczNjM3MjY5NzA3NDVmNzY2NTcyNzM2OTZmNmUxODA3MjAwMTI4MGQ1MjEzNjQ2NTYzNzI2NTY0NTM2MzcyNjk3MDc0NTY2NTcyNzM2OTZmNmUxMjJhMGExMTYyNmM2ZjYzNmI1ZjY4NjE3MzY4NWY2MjY5NzAzMTMxMzUxODA4MjAwMTI4MGM1MjBmNjI2YzZmNjM2YjQ4NjE3MzY4NDI2OTcwMzEzMTM1MTIyZTBhMTM2MjZjNmY2MzZiNWY2ODY1Njk2NzY4NzQ1ZjYyNjk3MDMxMzEzNTE4MDkyMDAxMjgwZDUyMTE2MjZjNmY2MzZiNDg2NTY5Njc2ODc0NDI2OTcwMzEzMTM1MjI4MjAxMGEwZjU0Nzg0Zjc1NzQ3MDc1NzQ0MjY5NmU1NDc5NzA2NTEyMTYwYTA2NjE2ZDZmNzU2ZTc0MTgwMTIwMDIyODA0NTIwNjYxNmQ2Zjc1NmU3NDEyMjMwYTBkNzM2MzcyNjk3MDc0NWY3MDc1NjI2YjY1NzkxODAyMjAwMjI4MGM1MjBjNzM2MzcyNjk3MDc0NTA3NTYyNmI2NTc5MTIzMjBhMTU2NDY1NjM3MjY1NjQ1ZjczNjM3MjY5NzA3NDVmNzY2NTcyNzM2OTZmNmUxODAzMjAwMTI4MGQ1MjEzNjQ2NTYzNzI2NTY0NTM2MzcyNjk3MDc0NTY2NTcyNzM2OTZmNmUyMmI1MDMwYTBmNTQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTU0Nzk3MDY1MTIxODBhMDc3NjY1NzI3MzY5NmY2ZTE4MDEyMDAxMjgwZDUyMDc3NjY1NzI3MzY5NmY2ZTEyMjQwYTA2Njk2ZTcwNzU3NDczMTgwMjIwMDMyODBiMzIwYzJlNTQ3ODQ5NmU3MDc1NzQ1NDc5NzA2NTUyMDY2OTZlNzA3NTc0NzMxMjMxMGEwYjYyNjk2ZTVmNmY3NTc0NzA3NTc0NzMxODAzMjAwMzI4MGIzMjEwMmU1NDc4NGY3NTc0NzA3NTc0NDI2OTZlNTQ3OTcwNjU1MjBhNjI2OTZlNGY3NTc0NzA3NTc0NzMxMjI3MGEwNzZmNzU3NDcwNzU3NDczMTgwNTIwMDMyODBiMzIwZDJlNTQ3ODRmNzU3NDcwNzU3NDU0Nzk3MDY1NTIwNzZmNzU3NDcwNzU3NDczMTIxYjBhMDk2YzZmNjM2YjVmNzQ2OTZkNjUxODA0MjAwMTI4MGQ1MjA4NmM2ZjYzNmI1NDY5NmQ2NTEyMWQwYTBhNjk2ZTcwNzU3NDczNWY2MzZlNzQxODA2MjAwMTI4MGQ1MjA5Njk2ZTcwNzU3NDczNDM2ZTc0MTIxZjBhMGI2Zjc1NzQ3MDc1NzQ3MzVmNjM2ZTc0MTgwNzIwMDEyODBkNTIwYTZmNzU3NDcwNzU3NDczNDM2ZTc0MTIxZDBhMGE2NTc4NzQ3MjYxNWY2NDYxNzQ2MTE4MDgyMDAxMjgwYzUyMDk2NTc4NzQ3MjYxNDQ2MTc0NjExMjI0MGEwZTY1Nzg3NDcyNjE1ZjY0NjE3NDYxNWY2YzY1NmUxODA5MjAwMTI4MGQ1MjBjNjU3ODc0NzI2MTQ0NjE3NDYxNGM2NTZlMTIxNjBhMDY2NTc4NzA2OTcyNzkxODBhMjAwMTI4MGQ1MjA2NjU3ODcwNjk3Mjc5MTIyMjBhMGM2Zjc2NjU3Mjc3Njk2ZTc0NjU3MjY1NjQxODBiMjAwMTI4MDg1MjBjNmY3NjY1NzI3NzY5NmU3NDY1NzI2NTY0MTIyODBhMTA3NjY1NzI3MzY5NmY2ZTVmNjc3MjZmNzU3MDVmNjk2NDE4MGMyMDAxMjgwZDUyMGU3NjY1NzI3MzY5NmY2ZTQ3NzI2Zjc1NzA0OTY0MjJhNjAxMGExNDU0Nzg1MjY1NzE3NTY1NzM3NDQ0NjU3NDYxNjk2YzczNTQ3OTcwNjUxMjIzMGEwZDcyNjU3MTc1NjU3Mzc0NWY2OTZlNjQ2NTc4MTgwMTIwMDEyODBkNTIwYzcyNjU3MTc1NjU3Mzc0NDk2ZTY0NjU3ODEyMTcwYTA3NzQ3ODVmNjg2MTczNjgxODAyMjAwMTI4MGM1MjA2NzQ3ODQ4NjE3MzY4MTIyNDBhMGU2NTc4NzQ3MjYxNWY2NDYxNzQ2MTVmNmM2NTZlMTgwMzIwMDEyODBkNTIwYzY1Nzg3NDcyNjE0NDYxNzQ2MTRjNjU2ZTEyMmEwYTExNjU3ODc0NzI2MTVmNjQ2MTc0NjE1ZjZmNjY2NjczNjU3NDE4MDQyMDAxMjgwZDUyMGY2NTc4NzQ3MjYxNDQ2MTc0NjE0ZjY2NjY3MzY1NzQyMjg1MDEwYTE3NTQ3ODUyNjU3MTc1NjU3Mzc0NTM2NTcyNjk2MTZjNjk3YTY1NjQ1NDc5NzA2NTEyMjcwYTBmNzM2OTY3NmU2MTc0NzU3MjY1NWY2OTZlNjQ2NTc4MTgwMTIwMDEyODBkNTIwZTczNjk2NzZlNjE3NDc1NzI2NTQ5NmU2NDY1NzgxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDIyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxMjIzMGEwZDczNjU3MjY5NjE2YzY5N2E2NTY0NWY3NDc4MTgwMzIwMDEyODBjNTIwYzczNjU3MjY5NjE2YzY5N2E2NTY0NTQ3ODIyOGQwMTBhMGM0OTY0NjU2ZTc0Njk3NDc5NTQ3OTcwNjUxMjE0MGEwNTcwNzI2Zjc0NmYxODAxMjAwMTI4MDk1MjA1NzA3MjZmNzQ2ZjEyMTIwYTA0NzU3MzY1NzIxODAyMjAwMTI4MDk1MjA0NzU3MzY1NzIxMjEyMGEwNDY4NmY3Mzc0MTgwMzIwMDEyODA5NTIwNDY4NmY3Mzc0MTIxMjBhMDQ3MDZmNzI3NDE4MDQyMDAxMjgwOTUyMDQ3MDZmNzI3NDEyMTIwYTA0NzA2MTc0NjgxODA1MjAwMTI4MDk1MjA0NzA2MTc0NjgxMjE3MGEwNTY5NmU2NDY1NzgxODA2MjAwMTI4MGQzYTAxMzA1MjA1Njk2ZTY0NjU3ODIyYjEwMTBhMTQ0ZTQ1NGQ1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNDM2ZjZkNmQ2ZjZlMTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMTgwYTA3NmU2NTc0Nzc2ZjcyNmIxODAyMjAwMTI4MGQ1MjA3NmU2NTc0Nzc2ZjcyNmIxMjFjMGEwOTc0Njk2ZDY1NzM3NDYxNmQ3MDE4MDMyMDAxMjgwZDUyMDk3NDY5NmQ2NTczNzQ2MTZkNzAxMjEwMGEwMzY2NjU2NTE4MDQyMDAxMjgwNDUyMDM2NjY1NjUxMjFhMGEwODY0NjU2MTY0NmM2OTZlNjUxODA1MjAwMTI4MGQ1MjA4NjQ2NTYxNjQ2YzY5NmU2NTEyMTYwYTA2NzM2OTY3NmU2NTcyMTgwNjIwMDEyODBjNTIwNjczNjk2NzZlNjU3MjIyYTIwMTBhMGI0ZTQ1NGQ1NDcyNjE2ZTczNjY2NTcyMTIxYzBhMDk3MjY1NjM2OTcwNjk2NTZlNzQxODAxMjAwMTI4MDk1MjA5NzI2NTYzNjk3MDY5NjU2ZTc0MTIxNjBhMDY2MTZkNmY3NTZlNzQxODAyMjAwMTI4MDQ1MjA2NjE2ZDZmNzU2ZTc0MTIxODBhMDc3MDYxNzk2YzZmNjE2NDE4MDMyMDAxMjgwYzUyMDc3MDYxNzk2YzZmNjE2NDEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODA0MjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MTIyNDBhMDc2ZDZmNzM2MTY5NjM3MzE4MDUyMDAzMjgwYjMyMGEyZTRlNDU0ZDRkNmY3MzYxNjk2MzUyMDc2ZDZmNzM2MTY5NjM3MzIyNWQwYTA5NGU0NTRkNGQ2ZjczNjE2OTYzMTIxYzBhMDk2ZTYxNmQ2NTczNzA2MTYzNjUxODAxMjAwMTI4MDk1MjA5NmU2MTZkNjU3MzcwNjE2MzY1MTIxNjBhMDY2ZDZmNzM2MTY5NjMxODAyMjAwMTI4MDk1MjA2NmQ2ZjczNjE2OTYzMTIxYTBhMDg3MTc1NjE2ZTc0Njk3NDc5MTgwMzIwMDEyODA0NTIwODcxNzU2MTZlNzQ2OTc0NzkyMjczMGExNTRlNDU0ZDUwNzI2Zjc2Njk3MzY5NmY2ZTRlNjE2ZDY1NzM3MDYxNjM2NTEyMWMwYTA5NmU2MTZkNjU3MzcwNjE2MzY1MTgwMTIwMDEyODA5NTIwOTZlNjE2ZDY1NzM3MDYxNjM2NTEyMTYwYTA2NzA2MTcyNjU2ZTc0MTgwMjIwMDEyODA5NTIwNjcwNjE3MjY1NmU3NDEyMTIwYTA0NzM2OTZlNmIxODAzMjAwMTI4MDk1MjA0NzM2OTZlNmIxMjEwMGEwMzY2NjU2NTE4MDQyMDAxMjgwNDUyMDM2NjY1NjUyMjZmMGExMTRlNDU0ZDRkNmY3MzYxNjk2MzQzNzI2NTYxNzQ2OTZmNmUxMjM0MGEwYTY0NjU2NjY5NmU2OTc0Njk2ZjZlMTgwMTIwMDEyODBiMzIxNDJlNGU0NTRkNGQ2ZjczNjE2OTYzNDQ2NTY2Njk2ZTY5NzQ2OTZmNmU1MjBhNjQ2NTY2Njk2ZTY5NzQ2OTZmNmUxMjEyMGEwNDczNjk2ZTZiMTgwMjIwMDEyODA5NTIwNDczNjk2ZTZiMTIxMDBhMDM2NjY1NjUxODAzMjAwMTI4MDQ1MjAzNjY2NTY1MjJkZDAzMGExMzRlNDU0ZDRkNmY3MzYxNjk2MzQ0NjU2NjY5NmU2OTc0Njk2ZjZlMTIxMjBhMDQ2ZTYxNmQ2NTE4MDEyMDAxMjgwOTUyMDQ2ZTYxNmQ2NTEyMTYwYTA2NzQ2OTYzNmI2NTcyMTgwMjIwMDEyODA5NTIwNjc0Njk2MzZiNjU3MjEyMWMwYTA5NmU2MTZkNjU3MzcwNjE2MzY1MTgwMzIwMDEyODA5NTIwOTZlNjE2ZDY1NzM3MDYxNjM2NTEyMTYwYTA2NmQ2ZjczNjE2OTYzMTgwNDIwMDEyODA5NTIwNjZkNmY3MzYxNjk2MzEyMjIwYTBjNjQ2OTc2Njk3MzY5NjI2OTZjNjk3NDc5MTgwNTIwMDEyODBkNTIwYzY0Njk3NjY5NzM2OTYyNjk2YzY5NzQ3OTEyMjIwYTA0NmM2NTc2NzkxODA2MjAwMTI4MGUzMjBlMmU0ZTQ1NGQ0ZDZmNzM2MTY5NjM0YzY1NzY3OTUyMDQ2YzY1NzY3OTEyMTAwYTAzNjY2NTY1MTgwNzIwMDEyODA0NTIwMzY2NjU2NTEyMjEwYTBjNmM2NTc2Nzk1ZjYxNjQ2NDcyNjU3MzczMTgwODIwMDEyODA5NTIwYjZjNjU3Njc5NDE2NDY0NzI2NTczNzMxMjI1MGEwZTZjNjU3Njc5NWY2ZTYxNmQ2NTczNzA2MTYzNjUxODA5MjAwMTI4MDk1MjBkNmM2NTc2Nzk0ZTYxNmQ2NTczNzA2MTYzNjUxMjFmMGEwYjZjNjU3Njc5NWY2ZDZmNzM2MTY5NjMxODBhMjAwMTI4MDk1MjBhNmM2NTc2Nzk0ZDZmNzM2MTY5NjMxMjE2MGEwNjczNzU3MDcwNmM3OTE4MGIyMDAxMjgwNDUyMDY3Mzc1NzA3MDZjNzkxMjI1MGEwZTZkNzU3NDYxNjI2YzY1NWY3Mzc1NzA3MDZjNzkxODBjMjAwMTI4MDg1MjBkNmQ3NTc0NjE2MjZjNjU1Mzc1NzA3MDZjNzkxMjIyMGEwYzc0NzI2MTZlNzM2NjY1NzI2MTYyNmM2NTE4MGQyMDAxMjgwODUyMGM3NDcyNjE2ZTczNjY2NTcyNjE2MjZjNjUxMjIwMGEwYjY0NjU3MzYzNzI2OTcwNzQ2OTZmNmUxODBlMjAwMTI4MDk1MjBiNjQ2NTczNjM3MjY5NzA3NDY5NmY2ZTEyMWEwYTA4NmU2NTc0Nzc2ZjcyNmI3MzE4MGYyMDAzMjgwZDUyMDg2ZTY1NzQ3NzZmNzI2YjczMjI4ZDAxMGExNTRlNDU0ZDRkNmY3MzYxNjk2MzUzNzU3MDcwNmM3OTQzNjg2MTZlNjc2NTEyMWMwYTA5NmU2MTZkNjU3MzcwNjE2MzY1MTgwMTIwMDEyODA5NTIwOTZlNjE2ZDY1NzM3MDYxNjM2NTEyMTYwYTA2NmQ2ZjczNjE2OTYzMTgwMjIwMDEyODA5NTIwNjZkNmY3MzYxNjk2MzEyMjgwYTA0NzQ3OTcwNjUxODAzMjAwMTI4MGUzMjE0MmU0ZTQ1NGQ1Mzc1NzA3MDZjNzk0MzY4NjE2ZTY3NjU1NDc5NzA2NTUyMDQ3NDc5NzA2NTEyMTQwYTA1NjQ2NTZjNzQ2MTE4MDQyMDAxMjgwNDUyMDU2NDY1NmM3NDYxMjI4NjAxMGExODRlNDU0ZDQxNjc2NzcyNjU2NzYxNzQ2NTRkNmY2NDY5NjY2OTYzNjE3NDY5NmY2ZTEyNDEwYTBkNmQ2ZjY0Njk2NjY5NjM2MTc0Njk2ZjZlNzMxODAxMjAwMzI4MGIzMjFiMmU0ZTQ1NGQ0MzZmNzM2OTY3NmU2MTc0NmY3Mjc5NGQ2ZjY0Njk2NjY5NjM2MTc0Njk2ZjZlNTIwZDZkNmY2NDY5NjY2OTYzNjE3NDY5NmY2ZTczMTIyNzBhMGY3MjY1NmM2MTc0Njk3NjY1NWY2MzY4NjE2ZTY3NjUxODAyMjAwMTI4MTE1MjBlNzI2NTZjNjE3NDY5NzY2NTQzNjg2MTZlNjc2NTIyNjUwYTFhNGU0NTRkNDM2ZjczNjk2NzZlNjE3NDZmNzI3OTRkNmY2NDY5NjY2OTYzNjE3NDY5NmY2ZTEyMjgwYTA0NzQ3OTcwNjUxODAxMjAwMTI4MGUzMjE0MmU0ZTQ1NGQ0ZDZmNjQ2OTY2Njk2MzYxNzQ2OTZmNmU1NDc5NzA2NTUyMDQ3NDc5NzA2NTEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAyMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MjI2NjBhMTU0ZTQ1NGQ0OTZkNzA2ZjcyNzQ2MTZlNjM2NTU0NzI2MTZlNzM2NjY1NzIxMjJlMGEwNDZkNmY2NDY1MTgwMTIwMDEyODBlMzIxYTJlNGU0NTRkNDk2ZDcwNmY3Mjc0NjE2ZTYzNjU1NDcyNjE2ZTczNjY2NTcyNGQ2ZjY0NjU1MjA0NmQ2ZjY0NjUxMjFkMGEwYTcwNzU2MjZjNjk2MzVmNmI2NTc5MTgwMjIwMDEyODBjNTIwOTcwNzU2MjZjNjk2MzRiNjU3OTIyNTIwYTEwNTM3NDY1NmM2YzYxNzI0MTczNzM2NTc0NTQ3OTcwNjUxMjEyMGEwNDc0Nzk3MDY1MTgwMTIwMDEyODBkNTIwNDc0Nzk3MDY1MTIxMjBhMDQ2MzZmNjQ2NTE4MDIyMDAxMjgwOTUyMDQ2MzZmNjQ2NTEyMTYwYTA2Njk3MzczNzU2NTcyMTgwMzIwMDEyODA5NTIwNjY5NzM3Mzc1NjU3MjIyZDgwMjBhMTU0YzY5NzM2YjU0NzI2MTZlNzM2MTYzNzQ2OTZmNmU0MzZmNmQ2ZDZmNmUxMjI4MGEwNDc0Nzk3MDY1MTgwMTIwMDEyODBlMzIxNDJlNGM2OTczNmI1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNTQ3OTcwNjU1MjA0NzQ3OTcwNjUxMjE5MGEwNjYxNmQ2Zjc1NmU3NDE4MDIyMDAxMjgwNDNhMDEzMDUyMDY2MTZkNmY3NTZlNzQxMjEwMGEwMzY2NjU2NTE4MDMyMDAxMjgwNDUyMDM2NjY1NjUxMjIxMGEwYzcyNjU2MzY5NzA2OTY1NmU3NDVmNjk2NDE4MDQyMDAxMjgwOTUyMGI3MjY1NjM2OTcwNjk2NTZlNzQ0OTY0MTIyYTBhMTE3MzY1NmU2NDY1NzI1ZjcwNzU2MjZjNjk2MzVmNmI2NTc5MTgwNTIwMDEyODBjNTIwZjczNjU2ZTY0NjU3MjUwNzU2MjZjNjk2MzRiNjU3OTEyMzAwYTE0NzI2NTcxNzU2NTczNzQ2NTcyNWY3MDc1NjI2YzY5NjM1ZjZiNjU3OTE4MDYyMDAxMjgwYzUyMTI3MjY1NzE3NTY1NzM3NDY1NzI1MDc1NjI2YzY5NjM0YjY1NzkxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDcyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxMjFjMGEwOTc0Njk2ZDY1NzM3NDYxNmQ3MDE4MDgyMDAxMjgwZDUyMDk3NDY5NmQ2NTczNzQ2MTZkNzAxMjJiMGEwNTYxNzM3MzY1NzQxODA5MjAwMTI4MGIzMjE1MmU0YzY5NzM2YjU0NzI2MTZlNzM2MTYzNzQ2OTZmNmU0MTczNzM2NTc0NTIwNTYxNzM3MzY1NzQyMmUyMDEwYTE0NGM2OTczNmI1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNDE3MzczNjU3NDEyMzAwYTA5NzM2OTY3NmU2MTc0NzU3MjY1MTgwMTIwMDEyODBiMzIxMjJlNGM2OTczNmI1MzY5Njc2ZTYxNzQ3NTcyNjU1NDc5NzA2NTUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxMjJkMGEwODY0NjU2YzY1Njc2MTc0NjUxODAyMjAwMTI4MGIzMjExMmU0YzY5NzM2YjQ0NjU2YzY1Njc2MTc0NjU1NDc5NzA2NTUyMDg2NDY1NmM2NTY3NjE3NDY1MTIxNDBhMDU3NjZmNzQ2NTczMTgwMzIwMDMyODA5NTIwNTc2NmY3NDY1NzMxMjNmMGEwZTZkNzU2Yzc0Njk3MzY5Njc2ZTYxNzQ3NTcyNjUxODA0MjAwMTI4MGIzMjE3MmU0YzY5NzM2YjRkNzU2Yzc0Njk3MzY5Njc2ZTYxNzQ3NTcyNjU1NDc5NzA2NTUyMGU2ZDc1NmM3NDY5NzM2OTY3NmU2MTc0NzU3MjY1MTIxMjBhMDQ2NDYxNzQ2MTE4MDUyMDAxMjgwOTUyMDQ2NDYxNzQ2MTIyMzIwYTExNGM2OTczNmI1MzY5Njc2ZTYxNzQ3NTcyNjU1NDc5NzA2NTEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAxMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MjIyZTBhMTA0YzY5NzM2YjQ0NjU2YzY1Njc2MTc0NjU1NDc5NzA2NTEyMWEwYTA4NzU3MzY1NzI2ZTYxNmQ2NTE4MDEyMDAxMjgwOTUyMDg3NTczNjU3MjZlNjE2ZDY1MjI2NjBhMTY0YzY5NzM2YjRkNzU2Yzc0Njk3MzY5Njc2ZTYxNzQ3NTcyNjU1NDc5NzA2NTEyMTAwYTAzNmQ2OTZlMTgwMTIwMDEyODBkNTIwMzZkNjk2ZTEyMWIwYTA5NmM2OTY2NjU1Zjc0Njk2ZDY1MTgwMjIwMDEyODBkNTIwODZjNjk2NjY1NTQ2OTZkNjUxMjFkMGEwYTZiNjU3OTczNWY2NzcyNmY3NTcwMTgwMzIwMDMyODA5NTIwOTZiNjU3OTczNDc3MjZmNzU3MDIyNGIwYTBmNTQ2NTdhNmY3MzQzNmY2ZTc0NzI2MTYzNzQ0OTQ0MTIyNDBhMDM3NDYxNjcxODAxMjAwMTI4MGUzMjEyMmU1NDY1N2E2ZjczNDM2ZjZlNzQ3MjYxNjM3NDU0Nzk3MDY1NTIwMzc0NjE2NzEyMTIwYTA0Njg2MTczNjgxODAyMjAwMTI4MGM1MjA0Njg2MTczNjgyMmVkMDEwYTE0NTQ2NTdhNmY3MzRmNzA2NTcyNjE3NDY5NmY2ZTQzNmY2ZDZkNmY2ZTEyMTYwYTA2NjI3MjYxNmU2MzY4MTgwMTIwMDEyODBjNTIwNjYyNzI2MTZlNjM2ODEyMjUwYTAzNzQ2MTY3MTgwMjIwMDEyODBlMzIxMzJlNTQ2NTdhNmY3MzRmNzA2NTcyNjE3NDY5NmY2ZTU0Nzk3MDY1NTIwMzc0NjE2NzEyMjgwYTA2NzM2Zjc1NzI2MzY1MTgwMzIwMDEyODBiMzIxMDJlNTQ2NTdhNmY3MzQzNmY2ZTc0NzI2MTYzNzQ0OTQ0NTIwNjczNmY3NTcyNjM2NTEyMTAwYTAzNjY2NTY1MTgwNDIwMDEyODA0NTIwMzY2NjU2NTEyMTgwYTA3NjM2Zjc1NmU3NDY1NzIxODA1MjAwMTI4MDQ1MjA3NjM2Zjc1NmU3NDY1NzIxMjFiMGEwOTY3NjE3MzVmNmM2OTZkNjk3NDE4MDYyMDAxMjgwNDUyMDg2NzYxNzM0YzY5NmQ2OTc0MTIyMzBhMGQ3Mzc0NmY3MjYxNjc2NTVmNmM2OTZkNjk3NDE4MDcyMDAxMjgwNDUyMGM3Mzc0NmY3MjYxNjc2NTRjNjk2ZDY5NzQyMjgyMDEwYTE0NTQ2NTdhNmY3MzU0NzI2MTZlNzM2MTYzNzQ2OTZmNmU1NDc5NzA2NTEyMTYwYTA2NjE2ZDZmNzU2ZTc0MTgwMTIwMDEyODA0NTIwNjYxNmQ2Zjc1NmU3NDEyMzIwYTBiNjQ2NTczNzQ2OTZlNjE3NDY5NmY2ZTE4MDIyMDAxMjgwYjMyMTAyZTU0NjU3YTZmNzM0MzZmNmU3NDcyNjE2Mzc0NDk0NDUyMGI2NDY1NzM3NDY5NmU2MTc0Njk2ZjZlMTIxZTBhMGE3MDYxNzI2MTZkNjU3NDY1NzI3MzE4MDMyMDAxMjgwYzUyMGE3MDYxNzI2MTZkNjU3NDY1NzI3MzIyY2IwMTBhMTQ1NDY1N2E2ZjczNGY3MjY5Njc2OTZlNjE3NDY5NmY2ZTU0Nzk3MDY1MTIyNTBhMGU2ZDYxNmU2MTY3NjU3MjVmNzA3NTYyNmI2NTc5MTgwMTIwMDEyODBjNTIwZDZkNjE2ZTYxNjc2NTcyNTA3NTYyNmI2NTc5MTIxODBhMDc2MjYxNmM2MTZlNjM2NTE4MDIyMDAxMjgwNDUyMDc2MjYxNmM2MTZlNjM2NTEyMWMwYTA5NzM3MDY1NmU2NDYxNjI2YzY1MTgwMzIwMDEyODA4NTIwOTczNzA2NTZlNjQ2MTYyNmM2NTEyMjAwYTBiNjQ2NTZjNjU2NzYxNzQ2MTYyNmM2NTE4MDQyMDAxMjgwODUyMGI2NDY1NmM2NTY3NjE3NDYxNjI2YzY1MTIxYTBhMDg2NDY1NmM2NTY3NjE3NDY1MTgwNTIwMDEyODBjNTIwODY0NjU2YzY1Njc2MTc0NjUxMjE2MGEwNjczNjM3MjY5NzA3NDE4MDYyMDAxMjgwYzUyMDY3MzYzNzI2OTcwNzQyMjMxMGExMzU0NjU3YTZmNzM0NDY1NmM2NTY3NjE3NDY5NmY2ZTU0Nzk3MDY1MTIxYTBhMDg2NDY1NmM2NTY3NjE3NDY1MTgwMTIwMDEyODBjNTIwODY0NjU2YzY1Njc2MTc0NjUyMjgxMDEwYTEyNDM2MTcyNjQ2MTZlNmY1NDc4NDk2ZTcwNzU3NDU0Nzk3MDY1MTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMWIwYTA5NzA3MjY1NzY1ZjY4NjE3MzY4MTgwMjIwMDEyODBjNTIwODcwNzI2NTc2NDg2MTczNjgxMjFkMGEwYTcwNzI2NTc2NWY2OTZlNjQ2NTc4MTgwMzIwMDEyODBkNTIwOTcwNzI2NTc2NDk2ZTY0NjU3ODEyMTIwYTA0NzQ3OTcwNjUxODA0MjAwMTI4MGQ1MjA0NzQ3OTcwNjUyMjY0MGExMzQzNjE3MjY0NjE2ZTZmNTQ3ODRmNzU3NDcwNzU3NDU0Nzk3MDY1MTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAxMjgwOTUyMDc2MTY0NjQ3MjY1NzM3MzEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMjIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjE2MGEwNjYxNmQ2Zjc1NmU3NDE4MDMyMDAxMjgwNDUyMDY2MTZkNmY3NTZlNzQyYWViMDIwYTBiNDY2MTY5NmM3NTcyNjU1NDc5NzA2NTEyMWQwYTE5NDY2MTY5NmM3NTcyNjU1ZjU1NmU2NTc4NzA2NTYzNzQ2NTY0NGQ2NTczNzM2MTY3NjUxMDAxMTIxYTBhMTY0NjYxNjk2Yzc1NzI2NTVmNDI3NTc0NzQ2ZjZlNDU3ODcwNjU2Mzc0NjU2NDEwMDIxMjE1MGExMTQ2NjE2OTZjNzU3MjY1NWY0NDYxNzQ2MTQ1NzI3MjZmNzIxMDAzMTIxYjBhMTc0NjYxNjk2Yzc1NzI2NTVmNDE2Mzc0Njk2ZjZlNDM2MTZlNjM2NTZjNmM2NTY0MTAwNDEyMTcwYTEzNDY2MTY5NmM3NTcyNjU1ZjUwNjk2ZTQ1Nzg3MDY1NjM3NDY1NjQxMDA1MTIxODBhMTQ0NjYxNjk2Yzc1NzI2NTVmNTA2OTZlNDM2MTZlNjM2NTZjNmM2NTY0MTAwNjEyMTYwYTEyNDY2MTY5NmM3NTcyNjU1ZjUwNjk2ZTQ5NmU3NjYxNmM2OTY0MTAwNzEyMWMwYTE4NDY2MTY5NmM3NTcyNjU1ZjQ5NmU3NjYxNmM2OTY0NTM2OTY3NmU2MTc0NzU3MjY1MTAwODEyMTgwYTE0NDY2MTY5NmM3NTcyNjU1ZjUwNzI2ZjYzNjU3MzczNDU3MjcyNmY3MjEwMDkxMjFhMGExNjQ2NjE2OTZjNzU3MjY1NWY0ZTZmNzQ0NTZlNmY3NTY3Njg0Njc1NmU2NDczMTAwYTEyMWEwYTE2NDY2MTY5NmM3NTcyNjU1ZjRlNmY3NDQ5NmU2OTc0Njk2MTZjNjk3YTY1NjQxMDBiMTIxNzBhMTM0NjYxNjk2Yzc1NzI2NTVmNTA2OTZlNGQ2OTczNmQ2MTc0NjM2ODEwMGMxMjE5MGExNTQ2NjE2OTZjNzU3MjY1NWY0NjY5NzI2ZDc3NjE3MjY1NDU3MjcyNmY3MjEwNjMyYTg3MDEwYTEwNGY3NTc0NzA3NTc0NTM2MzcyNjk3MDc0NTQ3OTcwNjUxMjEwMGEwYzUwNDE1OTU0NGY0MTQ0NDQ1MjQ1NTM1MzEwMDAxMjEzMGEwZjUwNDE1OTU0NGY1MzQzNTI0OTUwNTQ0ODQxNTM0ODEwMDExMjExMGEwZDUwNDE1OTU0NGY0ZDU1NGM1NDQ5NTM0OTQ3MTAwMjEyMTEwYTBkNTA0MTU5NTQ0ZjRmNTA1MjQ1NTQ1NTUyNGUxMDAzMTIxMDBhMGM1MDQxNTk1NDRmNTc0OTU0NGU0NTUzNTMxMDA0MTIxNDBhMTA1MDQxNTk1NDRmNTAzMjUzNDg1NzQ5NTQ0ZTQ1NTM1MzEwMDUyYTZjMGEwZjQ5NmU3MDc1NzQ1MzYzNzI2OTcwNzQ1NDc5NzA2NTEyMTAwYTBjNTM1MDQ1NGU0NDQxNDQ0NDUyNDU1MzUzMTAwMDEyMTEwYTBkNTM1MDQ1NGU0NDRkNTU0YzU0NDk1MzQ5NDcxMDAxMTIwYzBhMDg0NTU4NTQ0NTUyNGU0MTRjMTAwMjEyMTAwYTBjNTM1MDQ1NGU0NDU3NDk1NDRlNDU1MzUzMTAwMzEyMTQwYTEwNTM1MDQ1NGU0NDUwMzI1MzQ4NTc0OTU0NGU0NTUzNTMxMDA0MmE1NTBhMGI1MjY1NzE3NTY1NzM3NDU0Nzk3MDY1MTIwYjBhMDc1NDU4NDk0ZTUwNTU1NDEwMDAxMjBjMGEwODU0NTg0ZjU1NTQ1MDU1NTQxMDAxMTIwYTBhMDY1NDU4NGQ0NTU0NDExMDAyMTIwZTBhMGE1NDU4NDY0OTRlNDk1MzQ4NDU0NDEwMDMxMjBmMGEwYjU0NTg0NTU4NTQ1MjQxNDQ0MTU0NDExMDA0MmFmMDAzMGExMTQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjUxMjE3MGExMzQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY0Zjc0Njg2NTcyMTAwMTEyMjIwYTFlNDI3NTc0NzQ2ZjZlNTI2NTcxNzU2NTczNzQ1ZjQ2NjU2NTRmNzY2NTcyNTQ2ODcyNjU3MzY4NmY2YzY0MTAwMjEyMWYwYTFiNDI3NTc0NzQ2ZjZlNTI2NTcxNzU2NTczNzQ1ZjQzNmY2ZTY2Njk3MjZkNGY3NTc0NzA3NTc0MTAwMzEyMWQwYTE5NDI3NTc0NzQ2ZjZlNTI2NTcxNzU2NTczNzQ1ZjUyNjU3MzY1NzQ0NDY1NzY2OTYzNjUxMDA0MTIxZDBhMTk0Mjc1NzQ3NDZmNmU1MjY1NzE3NTY1NzM3NDVmNDM2ZjZlNjY2OTcyNmQ1NzZmNzI2NDEwMDUxMjFjMGExODQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY1NzY5NzA2NTQ0NjU3NjY5NjM2NTEwMDYxMjFkMGExOTQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY1MDcyNmY3NDY1NjM3NDQzNjE2YzZjMTAwNzEyMTgwYTE0NDI3NTc0NzQ2ZjZlNTI2NTcxNzU2NTczNzQ1ZjUzNjk2NzZlNTQ3ODEwMDgxMjFmMGExYjQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY0NjY5NzI2ZDc3NjE3MjY1NDM2ODY1NjM2YjEwMDkxMjE5MGExNTQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY0MTY0NjQ3MjY1NzM3MzEwMGExMjFiMGExNzQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY1MDc1NjI2YzY5NjM0YjY1NzkxMDBiMTIyMzBhMWY0Mjc1NzQ3NDZmNmU1MjY1NzE3NTY1NzM3NDVmNGQ2ZTY1NmQ2ZjZlNjk2MzU3NmY3MjY0NDM2Zjc1NmU3NDEwMGMxMjFmMGExYjQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY0ZDZlNjU2ZDZmNmU2OTYzNDk2ZTcwNzU3NDEwMGQxMjIwMGExYzQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NWY1MDYxNzM3MzcwNjg3MjYxNzM2NTU0Nzk3MDY1MTAwZTEyMjcwYTIzNDI3NTc0NzQ2ZjZlNTI2NTcxNzU2NTczNzQ1ZjU1NmU2YjZlNmY3NzZlNDQ2NTcyNjk3NjYxNzQ2OTZmNmU1MDYxNzQ2ODEwMGYyYTdmMGExNDUwNjk2ZTRkNjE3NDcyNjk3ODUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjUxMjIwMGExYzUwNjk2ZTRkNjE3NDcyNjk3ODUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjU1ZjQzNzU3MjcyNjU2ZTc0MTAwMTEyMjEwYTFkNTA2OTZlNGQ2MTc0NzI2OTc4NTI2NTcxNzU2NTczNzQ1NDc5NzA2NTVmNGU2NTc3NDY2OTcyNzM3NDEwMDIxMjIyMGExZTUwNjk2ZTRkNjE3NDcyNjk3ODUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjU1ZjRlNjU3NzUzNjU2MzZmNmU2NDEwMDMyYTVhMGExMjUyNjU2MzZmNzY2NTcyNzk0NDY1NzY2OTYzNjU1NDc5NzA2NTEyMjUwYTIxNTI2NTYzNmY3NjY1NzI3OTQ0NjU3NjY5NjM2NTU0Nzk3MDY1NWY1MzYzNzI2MTZkNjI2YzY1NjQ1NzZmNzI2NDczMTAwMDEyMWQwYTE5NTI2NTYzNmY3NjY1NzI3OTQ0NjU3NjY5NjM2NTU0Nzk3MDY1NWY0ZDYxNzQ3MjY5NzgxMDAxMmE2NjBhMGY1NzZmNzI2NDUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjUxMjE5MGExNTU3NmY3MjY0NTI2NTcxNzU2NTczNzQ1NDc5NzA2NTVmNTA2YzYxNjk2ZTEwMDAxMjFiMGExNzU3NmY3MjY0NTI2NTcxNzU2NTczNzQ1NDc5NzA2NTVmNGQ2MTc0NzI2OTc4MzkxMDAxMTIxYjBhMTc1NzZmNzI2NDUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjU1ZjRkNjE3NDcyNjk3ODM2MTAwMjJhMzUwYTE0NTA2MTczNzM3MDY4NzI2MTczNjU1MzZmNzU3MjYzNjU1NDc5NzA2NTEyMDcwYTAzNDE1MzRiMTAwMDEyMGEwYTA2NDQ0NTU2NDk0MzQ1MTAwMTEyMDgwYTA0NDg0ZjUzNTQxMDAyMmE0MzBhMGQ0ZTQ1NGQ0ZDZmNzM2MTY5NjM0YzY1NzY3OTEyMTcwYTEzNGQ2ZjczNjE2OTYzNGM2NTc2Nzk1ZjQxNjI3MzZmNmM3NTc0NjUxMDAxMTIxOTBhMTU0ZDZmNzM2MTY5NjM0YzY1NzY3OTVmNTA2NTcyNjM2NTZlNzQ2OTZjNjUxMDAyMmE0YjBhMTM0ZTQ1NGQ1Mzc1NzA3MDZjNzk0MzY4NjE2ZTY3NjU1NDc5NzA2NTEyMTkwYTE1NTM3NTcwNzA2Yzc5NDM2ODYxNmU2NzY1NWY0OTZlNjM3MjY1NjE3MzY1MTAwMTEyMTkwYTE1NTM3NTcwNzA2Yzc5NDM2ODYxNmU2NzY1NWY0NDY1NjM3MjY1NjE3MzY1MTAwMjJhNWEwYTEzNGU0NTRkNGQ2ZjY0Njk2NjY5NjM2MTc0Njk2ZjZlNTQ3OTcwNjUxMjFmMGExYjQzNmY3MzY5Njc2ZTYxNzQ2ZjcyNzk0ZDZmNjQ2OTY2Njk2MzYxNzQ2OTZmNmU1ZjQxNjQ2NDEwMDExMjIyMGExZTQzNmY3MzY5Njc2ZTYxNzQ2ZjcyNzk0ZDZmNjQ2OTY2Njk2MzYxNzQ2OTZmNmU1ZjQ0NjU2YzY1NzQ2NTEwMDIyYTVmMGExOTRlNDU0ZDQ5NmQ3MDZmNzI3NDYxNmU2MzY1NTQ3MjYxNmU3MzY2NjU3MjRkNmY2NDY1MTIxZjBhMWI0OTZkNzA2ZjcyNzQ2MTZlNjM2NTU0NzI2MTZlNzM2NjY1NzI1ZjQxNjM3NDY5NzY2MTc0NjUxMDAxMTIyMTBhMWQ0OTZkNzA2ZjcyNzQ2MTZlNjM2NTU0NzI2MTZlNzM2NjY1NzI1ZjQ0NjU2MTYzNzQ2OTc2NjE3NDY1MTAwMjJhYzYwMTBhMTM0YzY5NzM2YjU0NzI2MTZlNzM2MTYzNzQ2OTZmNmU1NDc5NzA2NTEyMGMwYTA4NTQ3MjYxNmU3MzY2NjU3MjEwMDAxMjFjMGExODUyNjU2NzY5NzM3NDY1NzI1MzY1NjM2ZjZlNjQ1MDYxNzM3MzcwNjg3MjYxNzM2NTEwMDExMjE0MGExMDUyNjU2NzY5NzM3NDY1NzI0NDY1NmM2NTY3NjE3NDY1MTAwMjEyMGQwYTA5NDM2MTczNzQ1NjZmNzQ2NTczMTAwMzEyMjEwYTFkNTI2NTY3Njk3Mzc0NjU3MjRkNzU2Yzc0Njk3MzY5Njc2ZTYxNzQ3NTcyNjU0MTYzNjM2Zjc1NmU3NDEwMDQxMjBlMGEwYTQzNzI2NTYxNzQ2NTQ0NjE3MDcwMTAwNTEyMTQwYTEwNTQ3MjYxNmU3MzY2NjU3MjQ5NmU3NDZmNDQ2MTcwNzAxMDA2MTIxNTBhMTE1NDcyNjE2ZTczNjY2NTcyNGY3NTc0NGY2NjQ0NjE3MDcwMTAwNzJhNDYwYTEyNTQ2NTdhNmY3MzRmNzA2NTcyNjE3NDY5NmY2ZTU0Nzk3MDY1MTIwZjBhMGI1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlMTAwODEyMGYwYTBiNGY3MjY5Njc2OTZlNjE3NDY5NmY2ZTEwMDkxMjBlMGEwYTQ0NjU2YzY1Njc2MTc0Njk2ZjZlMTAwYTJhMzEwYTExNTQ2NTdhNmY3MzQzNmY2ZTc0NzI2MTYzNzQ1NDc5NzA2NTEyMGMwYTA4NDk2ZDcwNmM2OTYzNjk3NDEwMDAxMjBlMGEwYTRmNzI2OTY3Njk2ZTYxNzQ2NTY0MTAwMTNhM2MwYTA3Nzc2OTcyNjU1ZjY5NmUxMjIxMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNTY2MTZjNzU2NTRmNzA3NDY5NmY2ZTczMThkMjg2MDMyMDAxMjgwODUyMDY3NzY5NzI2NTQ5NmUzYTNlMGEwODc3Njk3MjY1NWY2Zjc1NzQxMjIxMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNTY2MTZjNzU2NTRmNzA3NDY5NmY2ZTczMThkMzg2MDMyMDAxMjgwODUyMDc3NzY5NzI2NTRmNzU3NDNhNDcwYTBkNzc2OTcyNjU1ZjY0NjU2Mjc1Njc1ZjY5NmUxMjIxMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNTY2MTZjNzU2NTRmNzA3NDY5NmY2ZTczMThkNDg2MDMyMDAxMjgwODUyMGI3NzY5NzI2NTQ0NjU2Mjc1Njc0OTZlM2E0OTBhMGU3NzY5NzI2NTVmNjQ2NTYyNzU2NzVmNmY3NTc0MTIyMTJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NTZlNzU2ZDU2NjE2Yzc1NjU0ZjcwNzQ2OTZmNmU3MzE4ZDU4NjAzMjAwMTI4MDg1MjBjNzc2OTcyNjU0NDY1NjI3NTY3NGY3NTc0M2E0MDBhMDk3NzY5NzI2NTVmNzQ2OTZlNzkxMjIxMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNTY2MTZjNzU2NTRmNzA3NDY5NmY2ZTczMThkNjg2MDMyMDAxMjgwODUyMDg3NzY5NzI2NTU0Njk2ZTc5M2E0YzBhMGY3NzY5NzI2NTVmNjI2ZjZmNzQ2YzZmNjE2NDY1NzIxMjIxMmU2NzZmNmY2NzZjNjUyZTcwNzI2Zjc0NmY2Mjc1NjYyZTQ1NmU3NTZkNTY2MTZjNzU2NTRmNzA3NDY5NmY2ZTczMThkNzg2MDMyMDAxMjgwODUyMGU3NzY5NzI2NTQyNmY2Zjc0NmM2ZjYxNjQ2NTcyM2E0MzBhMGI3NzY5NzI2NTVmNmU2ZjVmNjY3MzZkMTIyMTJlNjc2ZjZmNjc2YzY1MmU3MDcyNmY3NDZmNjI3NTY2MmU0NTZlNzU2ZDU2NjE2Yzc1NjU0ZjcwNzQ2OTZmNmU3MzE4ZDg4NjAzMjAwMTI4MDg1MjA5Nzc2OTcyNjU0ZTZmNDY3MzZkMGFiZTlkMDEwYTBlNmQ2NTczNzM2MTY3NjU3MzJlNzA3MjZmNzQ2ZjFhMGI3NDc5NzA2NTczMmU3MDcyNmY3NDZmMjI0YjBhMGE0OTZlNjk3NDY5NjE2YzY5N2E2NTEyMTQwYTA1NzM3NDYxNzQ2NTE4MDEyMDAxMjgwYzUyMDU3Mzc0NjE3NDY1MTIyNzBhMGY3MzZiNjk3MDVmNzA2MTczNzM3MDY4NzI2MTczNjUxODAyMjAwMTI4MDg1MjBlNzM2YjY5NzA1MDYxNzM3MzcwNjg3MjYxNzM2NTIyMGQwYTBiNDc2NTc0NDY2NTYxNzQ3NTcyNjU3MzIyOGMwNzBhMDg0NjY1NjE3NDc1NzI2NTczMTIxNjBhMDY3NjY1NmU2NDZmNzIxODAxMjAwMTI4MDk1MjA2NzY2NTZlNjQ2ZjcyMTIyMzBhMGQ2ZDYxNmE2ZjcyNWY3NjY1NzI3MzY5NmY2ZTE4MDIyMDAxMjgwZDUyMGM2ZDYxNmE2ZjcyNTY2NTcyNzM2OTZmNmUxMjIzMGEwZDZkNjk2ZTZmNzI1Zjc2NjU3MjczNjk2ZjZlMTgwMzIwMDEyODBkNTIwYzZkNjk2ZTZmNzI1NjY1NzI3MzY5NmY2ZTEyMjMwYTBkNzA2MTc0NjM2ODVmNzY2NTcyNzM2OTZmNmUxODA0MjAwMTI4MGQ1MjBjNzA2MTc0NjM2ODU2NjU3MjczNjk2ZjZlMTIyNzBhMGY2MjZmNmY3NDZjNmY2MTY0NjU3MjVmNmQ2ZjY0NjUxODA1MjAwMTI4MDg1MjBlNjI2ZjZmNzQ2YzZmNjE2NDY1NzI0ZDZmNjQ2NTEyMWIwYTA5NjQ2NTc2Njk2MzY1NWY2OTY0MTgwNjIwMDEyODA5NTIwODY0NjU3NjY5NjM2NTQ5NjQxMjI1MGEwZTcwNjk2ZTVmNzA3MjZmNzQ2NTYzNzQ2OTZmNmUxODA3MjAwMTI4MDg1MjBkNzA2OTZlNTA3MjZmNzQ2NTYzNzQ2OTZmNmUxMjMzMGExNTcwNjE3MzczNzA2ODcyNjE3MzY1NWY3MDcyNmY3NDY1NjM3NDY5NmY2ZTE4MDgyMDAxMjgwODUyMTQ3MDYxNzM3MzcwNjg3MjYxNzM2NTUwNzI2Zjc0NjU2Mzc0Njk2ZjZlMTIxYTBhMDg2YzYxNmU2Nzc1NjE2NzY1MTgwOTIwMDEyODA5NTIwODZjNjE2ZTY3NzU2MTY3NjUxMjE0MGEwNTZjNjE2MjY1NmMxODBhMjAwMTI4MDk1MjA1NmM2MTYyNjU2YzEyMjAwYTBiNjk2ZTY5NzQ2OTYxNmM2OTdhNjU2NDE4MGMyMDAxMjgwODUyMGI2OTZlNjk3NDY5NjE2YzY5N2E2NTY0MTIxYTBhMDg3MjY1NzY2OTczNjk2ZjZlMTgwZDIwMDEyODBjNTIwODcyNjU3NjY5NzM2OTZmNmUxMjI3MGEwZjYyNmY2Zjc0NmM2ZjYxNjQ2NTcyNWY2ODYxNzM2ODE4MGUyMDAxMjgwYzUyMGU2MjZmNmY3NDZjNmY2MTY0NjU3MjQ4NjE3MzY4MTIxYTBhMDg2OTZkNzA2ZjcyNzQ2NTY0MTgwZjIwMDEyODA4NTIwODY5NmQ3MDZmNzI3NDY1NjQxMjFkMGEwYTcwNjk2ZTVmNjM2MTYzNjg2NTY0MTgxMDIwMDEyODA4NTIwOTcwNjk2ZTQzNjE2MzY4NjU2NDEyMmIwYTExNzA2MTczNzM3MDY4NzI2MTczNjU1ZjYzNjE2MzY4NjU2NDE4MTEyMDAxMjgwODUyMTA3MDYxNzM3MzcwNjg3MjYxNzM2NTQzNjE2MzY4NjU2NDEyMjkwYTEwNjY2OTcyNmQ3NzYxNzI2NTVmNzA3MjY1NzM2NTZlNzQxODEyMjAwMTI4MDg1MjBmNjY2OTcyNmQ3NzYxNzI2NTUwNzI2NTczNjU2ZTc0MTIyMTBhMGM2ZTY1NjU2NDczNWY2MjYxNjM2Yjc1NzAxODEzMjAwMTI4MDg1MjBiNmU2NTY1NjQ3MzQyNjE2MzZiNzU3MDEyMTQwYTA1NjY2YzYxNjc3MzE4MTQyMDAxMjgwZDUyMDU2NjZjNjE2NzczMTIxNDBhMDU2ZDZmNjQ2NTZjMTgxNTIwMDEyODA5NTIwNTZkNmY2NDY1NmMxMjE5MGEwODY2Nzc1ZjZkNjE2YTZmNzIxODE2MjAwMTI4MGQ1MjA3NjY3NzRkNjE2YTZmNzIxMjE5MGEwODY2Nzc1ZjZkNjk2ZTZmNzIxODE3MjAwMTI4MGQ1MjA3NjY3NzRkNjk2ZTZmNzIxMjE5MGEwODY2Nzc1ZjcwNjE3NDYzNjgxODE4MjAwMTI4MGQ1MjA3NjY3NzUwNjE3NDYzNjgxMjFiMGEwOTY2Nzc1Zjc2NjU2ZTY0NmY3MjE4MTkyMDAxMjgwOTUyMDg2Njc3NTY2NTZlNjQ2ZjcyMTIyNDBhMGU2Njc3NWY3NjY1NmU2NDZmNzI1ZjZiNjU3OTczMTgxYTIwMDEyODBjNTIwYzY2Nzc1NjY1NmU2NDZmNzI0YjY1Nzk3MzEyMmIwYTExNzU2ZTY2Njk2ZTY5NzM2ODY1NjQ1ZjYyNjE2MzZiNzU3MDE4MWIyMDAxMjgwODUyMTA3NTZlNjY2OTZlNjk3MzY4NjU2NDQyNjE2MzZiNzU3MDEyMWIwYTA5NmU2ZjVmNjI2MTYzNmI3NTcwMTgxYzIwMDEyODA4NTIwODZlNmY0MjYxNjM2Yjc1NzAyMjBlMGEwYzQzNmM2NTYxNzI1MzY1NzM3MzY5NmY2ZTIyZjkwMTBhMGQ0MTcwNzA2Yzc5NTM2NTc0NzQ2OTZlNjc3MzEyMWEwYTA4NmM2MTZlNjc3NTYxNjc2NTE4MDEyMDAxMjgwOTUyMDg2YzYxNmU2Nzc1NjE2NzY1MTIxNDBhMDU2YzYxNjI2NTZjMTgwMjIwMDEyODA5NTIwNTZjNjE2MjY1NmMxMjI1MGEwZTc1NzM2NTVmNzA2MTczNzM3MDY4NzI2MTczNjUxODAzMjAwMTI4MDg1MjBkNzU3MzY1NTA2MTczNzM3MDY4NzI2MTczNjUxMjFlMGEwYTY4NmY2ZDY1NzM2MzcyNjU2NTZlMTgwNDIwMDEyODBjNTIwYTY4NmY2ZDY1NzM2MzcyNjU2NTZlMTI0MjBhMTE3MDYxNzM3MzcwNjg3MjYxNzM2NTVmNzM2Zjc1NzI2MzY1MTgwNTIwMDEyODBlMzIxNTJlNTA2MTczNzM3MDY4NzI2MTczNjU1MzZmNzU3MjYzNjU1NDc5NzA2NTUyMTA3MDYxNzM3MzcwNjg3MjYxNzM2NTUzNmY3NTcyNjM2NTEyMmIwYTEyNjE3NTc0NmY1ZjZjNmY2MzZiNWY2NDY1NmM2MTc5NWY2ZDczMTgwNjIwMDEyODBkNTIwZjYxNzU3NDZmNGM2ZjYzNmI0NDY1NmM2MTc5NGQ3MzIyMjIwYTBhNDE3MDcwNmM3OTQ2NmM2MTY3NzMxMjE0MGEwNTY2NmM2MTY3NzMxODAxMjAwMTI4MGQ1MjA1NjY2YzYxNjc3MzIyMjMwYTA5NDM2ODYxNmU2NzY1NTA2OTZlMTIxNjBhMDY3MjY1NmQ2Zjc2NjUxODAxMjAwMTI4MDg1MjA2NzI2NTZkNmY3NjY1MjJhOTAxMGEwNDUwNjk2ZTY3MTIxODBhMDc2ZDY1NzM3MzYxNjc2NTE4MDEyMDAxMjgwOTUyMDc2ZDY1NzM3MzYxNjc2NTEyMmIwYTExNjI3NTc0NzQ2ZjZlNWY3MDcyNmY3NDY1NjM3NDY5NmY2ZTE4MDIyMDAxMjgwODUyMTA2Mjc1NzQ3NDZmNmU1MDcyNmY3NDY1NjM3NDY5NmY2ZTEyMjUwYTBlNzA2OTZlNWY3MDcyNmY3NDY1NjM3NDY5NmY2ZTE4MDMyMDAxMjgwODUyMGQ3MDY5NmU1MDcyNmY3NDY1NjM3NDY5NmY2ZTEyMzMwYTE1NzA2MTczNzM3MDY4NzI2MTczNjU1ZjcwNzI2Zjc0NjU2Mzc0Njk2ZjZlMTgwNDIwMDEyODA4NTIxNDcwNjE3MzczNzA2ODcyNjE3MzY1NTA3MjZmNzQ2NTYzNzQ2OTZmNmUyMjIzMGEwNzUzNzU2MzYzNjU3MzczMTIxODBhMDc2ZDY1NzM3MzYxNjc2NTE4MDEyMDAxMjgwOTUyMDc2ZDY1NzM3MzYxNjc2NTIyNDUwYTA3NDY2MTY5NmM3NTcyNjUxMjIwMGEwNDYzNmY2NDY1MTgwMTIwMDEyODBlMzIwYzJlNDY2MTY5NmM3NTcyNjU1NDc5NzA2NTUyMDQ2MzZmNjQ2NTEyMTgwYTA3NmQ2NTczNzM2MTY3NjUxODAyMjAwMTI4MDk1MjA3NmQ2NTczNzM2MTY3NjUyMjRiMGEwZDQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0MTIyNjBhMDQ2MzZmNjQ2NTE4MDEyMDAxMjgwZTMyMTIyZTQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjU1MjA0NjM2ZjY0NjUxMjEyMGEwNDY0NjE3NDYxMTgwMjIwMDEyODA5NTIwNDY0NjE3NDYxMjIwYjBhMDk0Mjc1NzQ3NDZmNmU0MTYzNmIyMjNkMGExMDUwNjk2ZTRkNjE3NDcyNjk3ODUyNjU3MTc1NjU3Mzc0MTIyOTBhMDQ3NDc5NzA2NTE4MDEyMDAxMjgwZTMyMTUyZTUwNjk2ZTRkNjE3NDcyNjk3ODUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjU1MjA0NzQ3OTcwNjUyMjIwMGEwYzUwNjk2ZTRkNjE3NDcyNjk3ODQxNjM2YjEyMTAwYTAzNzA2OTZlMTgwMTIwMDIyODA5NTIwMzcwNjk2ZTIyMDgwYTA2NDM2MTZlNjM2NTZjMjIzMDBhMTE1MDYxNzM3MzcwNjg3MjYxNzM2NTUyNjU3MTc1NjU3Mzc0MTIxYjBhMDk2ZjZlNWY2NDY1NzY2OTYzNjUxODAxMjAwMTI4MDg1MjA4NmY2ZTQ0NjU3NjY5NjM2NTIyNDUwYTBkNTA2MTczNzM3MDY4NzI2MTczNjU0MTYzNmIxMjFlMGEwYTcwNjE3MzczNzA2ODcyNjE3MzY1MTgwMTIwMDEyODA5NTIwYTcwNjE3MzczNzA2ODcyNjE3MzY1MTIxNDBhMDU3Mzc0NjE3NDY1MTgwMjIwMDEyODBjNTIwNTczNzQ2MTc0NjUyMjJlMGExNjUwNjE3MzczNzA2ODcyNjE3MzY1NTM3NDYxNzQ2NTUyNjU3MTc1NjU3Mzc0MTIxNDBhMDU3Mzc0NjE3NDY1MTgwMTIwMDEyODBjNTIwNTczNzQ2MTc0NjUyMjE0MGExMjUwNjE3MzczNzA2ODcyNjE3MzY1NTM3NDYxNzQ2NTQxNjM2YjIyMjAwYTBhNDc2NTc0NDU2ZTc0NzI2ZjcwNzkxMjEyMGEwNDczNjk3YTY1MTgwMTIwMDIyODBkNTIwNDczNjk3YTY1MjIyMzBhMDc0NTZlNzQ3MjZmNzA3OTEyMTgwYTA3NjU2ZTc0NzI2ZjcwNzkxODAxMjAwMjI4MGM1MjA3NjU2ZTc0NzI2ZjcwNzkyMmRmMDEwYTBjNDc2NTc0NTA3NTYyNmM2OTYzNGI2NTc5MTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMjgwYTEwNjU2MzY0NzM2MTVmNjM3NTcyNzY2NTVmNmU2MTZkNjUxODAyMjAwMTI4MDk1MjBlNjU2MzY0NzM2MTQzNzU3Mjc2NjU0ZTYxNmQ2NTEyMjEwYTBjNzM2ODZmNzc1ZjY0Njk3MzcwNmM2MTc5MTgwMzIwMDEyODA4NTIwYjczNjg2Zjc3NDQ2OTczNzA2YzYxNzkxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDQyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MTIzZjBhMGI3MzYzNzI2OTcwNzQ1Zjc0Nzk3MDY1MTgwNTIwMDEyODBlMzIxMDJlNDk2ZTcwNzU3NDUzNjM3MjY5NzA3NDU0Nzk3MDY1M2EwYzUzNTA0NTRlNDQ0MTQ0NDQ1MjQ1NTM1MzUyMGE3MzYzNzI2OTcwNzQ1NDc5NzA2NTIyNDAwYTA5NTA3NTYyNmM2OTYzNGI2NTc5MTIxZjBhMDQ2ZTZmNjQ2NTE4MDEyMDAyMjgwYjMyMGIyZTQ4NDQ0ZTZmNjQ2NTU0Nzk3MDY1NTIwNDZlNmY2NDY1MTIxMjBhMDQ3ODcwNzU2MjE4MDIyMDAxMjgwOTUyMDQ3ODcwNzU2MjIyZWEwMTBhMGE0NzY1NzQ0MTY0NjQ3MjY1NzM3MzEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDIyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MTIyMTBhMGM3MzY4NmY3NzVmNjQ2OTczNzA2YzYxNzkxODAzMjAwMTI4MDg1MjBiNzM2ODZmNzc0NDY5NzM3MDZjNjE3OTEyMzUwYTA4NmQ3NTZjNzQ2OTczNjk2NzE4MDQyMDAxMjgwYjMyMTkyZTRkNzU2Yzc0Njk3MzY5Njc1MjY1NjQ2NTY1NmQ1MzYzNzI2OTcwNzQ1NDc5NzA2NTUyMDg2ZDc1NmM3NDY5NzM2OTY3MTIzZjBhMGI3MzYzNzI2OTcwNzQ1Zjc0Nzk3MDY1MTgwNTIwMDEyODBlMzIxMDJlNDk2ZTcwNzU3NDUzNjM3MjY5NzA3NDU0Nzk3MDY1M2EwYzUzNTA0NTRlNDQ0MTQ0NDQ1MjQ1NTM1MzUyMGE3MzYzNzI2OTcwNzQ1NDc5NzA2NTIyNTQwYTEyNDU3NDY4NjU3MjY1NzU2ZDQ3NjU3NDQxNjQ2NDcyNjU3MzczMTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMjEwYTBjNzM2ODZmNzc1ZjY0Njk3MzcwNmM2MTc5MTgwMjIwMDEyODA4NTIwYjczNjg2Zjc3NDQ2OTczNzA2YzYxNzkyMjIzMGEwNzQxNjQ2NDcyNjU3MzczMTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAyMjgwOTUyMDc2MTY0NjQ3MjY1NzM3MzIyMmIwYTBmNDU3NDY4NjU3MjY1NzU2ZDQxNjQ2NDcyNjU3MzczMTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAyMjgwYzUyMDc2MTY0NjQ3MjY1NzM3MzIyMGMwYTBhNTc2OTcwNjU0NDY1NzY2OTYzNjUyMjkxMDIwYTBhNGM2ZjYxNjQ0NDY1NzY2OTYzNjUxMjFhMGEwODZkNmU2NTZkNmY2ZTY5NjMxODAxMjAwMTI4MDk1MjA4NmQ2ZTY1NmQ2ZjZlNjk2MzEyMWYwYTA0NmU2ZjY0NjUxODAyMjAwMTI4MGIzMjBiMmU0ODQ0NGU2ZjY0NjU1NDc5NzA2NTUyMDQ2ZTZmNjQ2NTEyMTAwYTAzNzA2OTZlMTgwMzIwMDEyODA5NTIwMzcwNjk2ZTEyMzMwYTE1NzA2MTczNzM3MDY4NzI2MTczNjU1ZjcwNzI2Zjc0NjU2Mzc0Njk2ZjZlMTgwNDIwMDEyODA4NTIxNDcwNjE3MzczNzA2ODcyNjE3MzY1NTA3MjZmNzQ2NTYzNzQ2OTZmNmUxMjIzMGEwODZjNjE2ZTY3NzU2MTY3NjUxODA1MjAwMTI4MDkzYTA3NjU2ZTY3NmM2OTczNjg1MjA4NmM2MTZlNjc3NTYxNjc2NTEyMTQwYTA1NmM2MTYyNjU2YzE4MDYyMDAxMjgwOTUyMDU2YzYxNjI2NTZjMTIyMzBhMGQ3MzZiNjk3MDVmNjM2ODY1NjM2YjczNzU2ZDE4MDcyMDAxMjgwODUyMGM3MzZiNjk3MDQzNjg2NTYzNmI3Mzc1NmQxMjFmMGEwYjc1MzI2NjVmNjM2Zjc1NmU3NDY1NzIxODA4MjAwMTI4MGQ1MjBhNzUzMjY2NDM2Zjc1NmU3NDY1NzIyMmNiMDIwYTBiNTI2NTczNjU3NDQ0NjU3NjY5NjM2NTEyMjUwYTBlNjQ2OTczNzA2YzYxNzk1ZjcyNjE2ZTY0NmY2ZDE4MDEyMDAxMjgwODUyMGQ2NDY5NzM3MDZjNjE3OTUyNjE2ZTY0NmY2ZDEyMWYwYTA4NzM3NDcyNjU2ZTY3NzQ2ODE4MDIyMDAxMjgwZDNhMDMzMjM1MzY1MjA4NzM3NDcyNjU2ZTY3NzQ2ODEyMzMwYTE1NzA2MTczNzM3MDY4NzI2MTczNjU1ZjcwNzI2Zjc0NjU2Mzc0Njk2ZjZlMTgwMzIwMDEyODA4NTIxNDcwNjE3MzczNzA2ODcyNjE3MzY1NTA3MjZmNzQ2NTYzNzQ2OTZmNmUxMjI1MGEwZTcwNjk2ZTVmNzA3MjZmNzQ2NTYzNzQ2OTZmNmUxODA0MjAwMTI4MDg1MjBkNzA2OTZlNTA3MjZmNzQ2NTYzNzQ2OTZmNmUxMjIzMGEwODZjNjE2ZTY3NzU2MTY3NjUxODA1MjAwMTI4MDkzYTA3NjU2ZTY3NmM2OTczNjg1MjA4NmM2MTZlNjc3NTYxNjc2NTEyMTQwYTA1NmM2MTYyNjU2YzE4MDYyMDAxMjgwOTUyMDU2YzYxNjI2NTZjMTIxZjBhMGI3NTMyNjY1ZjYzNmY3NTZlNzQ2NTcyMTgwNzIwMDEyODBkNTIwYTc1MzI2NjQzNmY3NTZlNzQ2NTcyMTIxZjBhMGI3MzZiNjk3MDVmNjI2MTYzNmI3NTcwMTgwODIwMDEyODA4NTIwYTczNmI2OTcwNDI2MTYzNmI3NTcwMTIxYjBhMDk2ZTZmNWY2MjYxNjM2Yjc1NzAxODA5MjAwMTI4MDg1MjA4NmU2ZjQyNjE2MzZiNzU3MDIyMGUwYTBjNDI2MTYzNmI3NTcwNDQ2NTc2Njk2MzY1MjIxMDBhMGU0NTZlNzQ3MjZmNzA3OTUyNjU3MTc1NjU3Mzc0MjIyNjBhMGE0NTZlNzQ3MjZmNzA3OTQxNjM2YjEyMTgwYTA3NjU2ZTc0NzI2ZjcwNzkxODAxMjAwMTI4MGM1MjA3NjU2ZTc0NzI2ZjcwNzkyMmJmMDIwYTBlNTI2NTYzNmY3NjY1NzI3OTQ0NjU3NjY5NjM2NTEyMWQwYTBhNzc2ZjcyNjQ1ZjYzNmY3NTZlNzQxODAxMjAwMTI4MGQ1MjA5Nzc2ZjcyNjQ0MzZmNzU2ZTc0MTIzMzBhMTU3MDYxNzM3MzcwNjg3MjYxNzM2NTVmNzA3MjZmNzQ2NTYzNzQ2OTZmNmUxODAyMjAwMTI4MDg1MjE0NzA2MTczNzM3MDY4NzI2MTczNjU1MDcyNmY3NDY1NjM3NDY5NmY2ZTEyMjUwYTBlNzA2OTZlNWY3MDcyNmY3NDY1NjM3NDY5NmY2ZTE4MDMyMDAxMjgwODUyMGQ3MDY5NmU1MDcyNmY3NDY1NjM3NDY5NmY2ZTEyMjMwYTA4NmM2MTZlNjc3NTYxNjc2NTE4MDQyMDAxMjgwOTNhMDc2NTZlNjc2YzY5NzM2ODUyMDg2YzYxNmU2Nzc1NjE2NzY1MTIxNDBhMDU2YzYxNjI2NTZjMTgwNTIwMDEyODA5NTIwNTZjNjE2MjY1NmMxMjI5MGExMDY1NmU2NjZmNzI2MzY1NWY3NzZmNzI2NDZjNjk3Mzc0MTgwNjIwMDEyODA4NTIwZjY1NmU2NjZmNzI2MzY1NTc2ZjcyNjQ2YzY5NzM3NDEyMTIwYTA0NzQ3OTcwNjUxODA4MjAwMTI4MGQ1MjA0NzQ3OTcwNjUxMjFmMGEwYjc1MzI2NjVmNjM2Zjc1NmU3NDY1NzIxODA5MjAwMTI4MGQ1MjBhNzUzMjY2NDM2Zjc1NmU3NDY1NzIxMjE3MGEwNzY0NzI3OTVmNzI3NTZlMTgwYTIwMDEyODA4NTIwNjY0NzI3OTUyNzU2ZTIyMzMwYTBiNTc2ZjcyNjQ1MjY1NzE3NTY1NzM3NDEyMjQwYTA0NzQ3OTcwNjUxODAxMjAwMTI4MGUzMjEwMmU1NzZmNzI2NDUyNjU3MTc1NjU3Mzc0NTQ3OTcwNjU1MjA0NzQ3OTcwNjUyMjFkMGEwNzU3NmY3MjY0NDE2MzZiMTIxMjBhMDQ3NzZmNzI2NDE4MDEyMDAyMjgwOTUyMDQ3NzZmNzI2NDIyYWIwMTBhMGI1MzY5Njc2ZTRkNjU3MzczNjE2NzY1MTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMTgwYTA3NmQ2NTczNzM2MTY3NjUxODAyMjAwMjI4MGM1MjA3NmQ2NTczNzM2MTY3NjUxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDMyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MTIzZjBhMGI3MzYzNzI2OTcwNzQ1Zjc0Nzk3MDY1MTgwNDIwMDEyODBlMzIxMDJlNDk2ZTcwNzU3NDUzNjM3MjY5NzA3NDU0Nzk3MDY1M2EwYzUzNTA0NTRlNDQ0MTQ0NDQ1MjQ1NTM1MzUyMGE3MzYzNzI2OTcwNzQ1NDc5NzA2NTIyODcwMTBhMGQ1NjY1NzI2OTY2Nzk0ZDY1NzM3MzYxNjc2NTEyMTgwYTA3NjE2NDY0NzI2NTczNzMxODAxMjAwMTI4MDk1MjA3NjE2NDY0NzI2NTczNzMxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDIyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMzIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MTIyNDBhMDk2MzZmNjk2ZTVmNmU2MTZkNjUxODA0MjAwMTI4MDkzYTA3NDI2OTc0NjM2ZjY5NmU1MjA4NjM2ZjY5NmU0ZTYxNmQ2NTIyNGEwYTEwNGQ2NTczNzM2MTY3NjU1MzY5Njc2ZTYxNzQ3NTcyNjUxMjE4MGEwNzYxNjQ2NDcyNjU3MzczMTgwMTIwMDEyODA5NTIwNzYxNjQ2NDcyNjU3MzczMTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAyMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MjJhODAxMGEwZTQ1NmU2MzcyNzk3MDc0NGQ2NTczNzM2MTY3NjUxMjE2MGEwNjcwNzU2MjZiNjU3OTE4MDEyMDAxMjgwYzUyMDY3MDc1NjI2YjY1NzkxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMjIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MTIyMTBhMGM2NDY5NzM3MDZjNjE3OTVmNmY2ZTZjNzkxODAzMjAwMTI4MDg1MjBiNjQ2OTczNzA2YzYxNzk0ZjZlNmM3OTEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwNDIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDUyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MjI1NjBhMTA0NTZlNjM3Mjc5NzA3NDY1NjQ0ZDY1NzM3MzYxNjc2NTEyMTQwYTA1NmU2ZjZlNjM2NTE4MDEyMDAxMjgwYzUyMDU2ZTZmNmU2MzY1MTIxODBhMDc2ZDY1NzM3MzYxNjc2NTE4MDIyMDAxMjgwYzUyMDc2ZDY1NzM3MzYxNjc2NTEyMTIwYTA0Njg2ZDYxNjMxODAzMjAwMTI4MGM1MjA0Njg2ZDYxNjMyMjcxMGEwZTQ0NjU2MzcyNzk3MDc0NGQ2NTczNzM2MTY3NjUxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIxNDBhMDU2ZTZmNmU2MzY1MTgwMjIwMDEyODBjNTIwNTZlNmY2ZTYzNjUxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMzIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MTIxMjBhMDQ2ODZkNjE2MzE4MDQyMDAxMjgwYzUyMDQ2ODZkNjE2MzIyNDYwYTEwNDQ2NTYzNzI3OTcwNzQ2NTY0NGQ2NTczNzM2MTY3NjUxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMTIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDIyMDAxMjgwOTUyMDc2MTY0NjQ3MjY1NzM3MzIyY2IwMTBhMGU0MzY5NzA2ODY1NzI0YjY1Nzk1NjYxNmM3NTY1MTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMTAwYTAzNmI2NTc5MTgwMjIwMDEyODA5NTIwMzZiNjU3OTEyMTQwYTA1NzY2MTZjNzU2NTE4MDMyMDAxMjgwYzUyMDU3NjYxNmM3NTY1MTIxODBhMDc2NTZlNjM3Mjc5NzA3NDE4MDQyMDAxMjgwODUyMDc2NTZlNjM3Mjc5NzA3NDEyMjQwYTBlNjE3MzZiNWY2ZjZlNWY2NTZlNjM3Mjc5NzA3NDE4MDUyMDAxMjgwODUyMGM2MTczNmI0ZjZlNDU2ZTYzNzI3OTcwNzQxMjI0MGEwZTYxNzM2YjVmNmY2ZTVmNjQ2NTYzNzI3OTcwNzQxODA2MjAwMTI4MDg1MjBjNjE3MzZiNGY2ZTQ0NjU2MzcyNzk3MDc0MTIwZTBhMDI2OTc2MTgwNzIwMDEyODBjNTIwMjY5NzYyMjI4MGExMDQzNjk3MDY4NjU3MjY1NjQ0YjY1Nzk1NjYxNmM3NTY1MTIxNDBhMDU3NjYxNmM3NTY1MTgwMTIwMDEyODBjNTIwNTc2NjE2Yzc1NjUyMjdlMGEwZTQ1NzM3NDY5NmQ2MTc0NjU1NDc4NTM2OTdhNjUxMjIzMGEwZDZmNzU3NDcwNzU3NDczNWY2MzZmNzU2ZTc0MTgwMTIwMDIyODBkNTIwYzZmNzU3NDcwNzU3NDczNDM2Zjc1NmU3NDEyMjEwYTBjNjk2ZTcwNzU3NDczNWY2MzZmNzU2ZTc0MTgwMjIwMDIyODBkNTIwYjY5NmU3MDc1NzQ3MzQzNmY3NTZlNzQxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDMyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MjIyMTBhMDY1NDc4NTM2OTdhNjUxMjE3MGEwNzc0Nzg1ZjczNjk3YTY1MTgwMTIwMDEyODBkNTIwNjc0Nzg1MzY5N2E2NTIyOTkwMjBhMDY1MzY5Njc2ZTU0NzgxMjIzMGEwZDZmNzU3NDcwNzU3NDczNWY2MzZmNzU2ZTc0MTgwMTIwMDIyODBkNTIwYzZmNzU3NDcwNzU3NDczNDM2Zjc1NmU3NDEyMjEwYTBjNjk2ZTcwNzU3NDczNWY2MzZmNzU2ZTc0MTgwMjIwMDIyODBkNTIwYjY5NmU3MDc1NzQ3MzQzNmY3NTZlNzQxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDMyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MTIxYjBhMDc3NjY1NzI3MzY5NmY2ZTE4MDQyMDAxMjgwZDNhMDEzMTUyMDc3NjY1NzI3MzY5NmY2ZTEyMWUwYTA5NmM2ZjYzNmI1Zjc0Njk2ZDY1MTgwNTIwMDEyODBkM2EwMTMwNTIwODZjNmY2MzZiNTQ2OTZkNjUxMjE2MGEwNjY1Nzg3MDY5NzI3OTE4MDYyMDAxMjgwZDUyMDY2NTc4NzA2OTcyNzkxMjIyMGEwYzZmNzY2NTcyNzc2OTZlNzQ2NTcyNjU2NDE4MDcyMDAxMjgwODUyMGM2Zjc2NjU3Mjc3Njk2ZTc0NjU3MjY1NjQxMjI4MGExMDc2NjU3MjczNjk2ZjZlNWY2NzcyNmY3NTcwNWY2OTY0MTgwODIwMDEyODBkNTIwZTc2NjU3MjczNjk2ZjZlNDc3MjZmNzU3MDQ5NjQyMmIyMDIwYTBjNTM2OTZkNzA2YzY1NTM2OTY3NmU1NDc4MTIyNDBhMDY2OTZlNzA3NTc0NzMxODAxMjAwMzI4MGIzMjBjMmU1NDc4NDk2ZTcwNzU3NDU0Nzk3MDY1NTIwNjY5NmU3MDc1NzQ3MzEyMjcwYTA3NmY3NTc0NzA3NTc0NzMxODAyMjAwMzI4MGIzMjBkMmU1NDc4NGY3NTc0NzA3NTc0NTQ3OTcwNjU1MjA3NmY3NTc0NzA3NTc0NzMxMjM0MGEwYzc0NzI2MTZlNzM2MTYzNzQ2OTZmNmU3MzE4MDMyMDAzMjgwYjMyMTAyZTU0NzI2MTZlNzM2MTYzNzQ2OTZmNmU1NDc5NzA2NTUyMGM3NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNzMxMjI0MGEwOTYzNmY2OTZlNWY2ZTYxNmQ2NTE4MDQyMDAxMjgwOTNhMDc0MjY5NzQ2MzZmNjk2ZTUyMDg2MzZmNjk2ZTRlNjE2ZDY1MTIxYjBhMDc3NjY1NzI3MzY5NmY2ZTE4MDUyMDAxMjgwZDNhMDEzMTUyMDc3NjY1NzI3MzY5NmY2ZTEyMWUwYTA5NmM2ZjYzNmI1Zjc0Njk2ZDY1MTgwNjIwMDEyODBkM2EwMTMwNTIwODZjNmY2MzZiNTQ2OTZkNjUxMjE2MGEwNjY1Nzg3MDY5NzI3OTE4MDcyMDAxMjgwZDUyMDY2NTc4NzA2OTcyNzkxMjIyMGEwYzZmNzY2NTcyNzc2OTZlNzQ2NTcyNjU2NDE4MDgyMDAxMjgwODUyMGM2Zjc2NjU3Mjc3Njk2ZTc0NjU3MjY1NjQyMmE3MDEwYTA5NTQ3ODUyNjU3MTc1NjU3Mzc0MTIyZjBhMGM3MjY1NzE3NTY1NzM3NDVmNzQ3OTcwNjUxODAxMjAwMTI4MGUzMjBjMmU1MjY1NzE3NTY1NzM3NDU0Nzk3MDY1NTIwYjcyNjU3MTc1NjU3Mzc0NTQ3OTcwNjUxMjJmMGEwNzY0NjU3NDYxNjk2YzczMTgwMjIwMDEyODBiMzIxNTJlNTQ3ODUyNjU3MTc1NjU3Mzc0NDQ2NTc0NjE2OTZjNzM1NDc5NzA2NTUyMDc2NDY1NzQ2MTY5NmM3MzEyMzgwYTBhNzM2NTcyNjk2MTZjNjk3YTY1NjQxODAzMjAwMTI4MGIzMjE4MmU1NDc4NTI2NTcxNzU2NTczNzQ1MzY1NzI2OTYxNmM2OTdhNjU2NDU0Nzk3MDY1NTIwYTczNjU3MjY5NjE2YzY5N2E2NTY0MjIyOTBhMDU1NDc4NDE2MzZiMTIyMDBhMDI3NDc4MTgwMTIwMDEyODBiMzIxMDJlNTQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTU0Nzk3MDY1NTIwMjc0NzgyMmE2MDIwYTBlNDU3NDY4NjU3MjY1NzU2ZDUzNjk2NzZlNTQ3ODEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjE0MGEwNTZlNmY2ZTYzNjUxODAyMjAwMTI4MGM1MjA1NmU2ZjZlNjM2NTEyMWIwYTA5Njc2MTczNWY3MDcyNjk2MzY1MTgwMzIwMDEyODBjNTIwODY3NjE3MzUwNzI2OTYzNjUxMjFiMGEwOTY3NjE3MzVmNmM2OTZkNjk3NDE4MDQyMDAxMjgwYzUyMDg2NzYxNzM0YzY5NmQ2OTc0MTIwZTBhMDI3NDZmMTgwNTIwMDEyODBjNTIwMjc0NmYxMjE0MGEwNTc2NjE2Yzc1NjUxODA2MjAwMTI4MGM1MjA1NzY2MTZjNzU2NTEyMmMwYTEyNjQ2MTc0NjE1ZjY5NmU2OTc0Njk2MTZjNWY2MzY4NzU2ZTZiMTgwNzIwMDEyODBjNTIxMDY0NjE3NDYxNDk2ZTY5NzQ2OTYxNmM0MzY4NzU2ZTZiMTIxZjBhMGI2NDYxNzQ2MTVmNmM2NTZlNjc3NDY4MTgwODIwMDEyODBkNTIwYTY0NjE3NDYxNGM2NTZlNjc3NDY4MTIxOTBhMDg2MzY4NjE2OTZlNWY2OTY0MTgwOTIwMDEyODBkNTIwNzYzNjg2MTY5NmU0OTY0MTIxNzBhMDc3NDc4NWY3NDc5NzA2NTE4MGEyMDAxMjgwZDUyMDY3NDc4NTQ3OTcwNjUyMjk3MDEwYTExNDU3NDY4NjU3MjY1NzU2ZDU0Nzg1MjY1NzE3NTY1NzM3NDEyMWYwYTBiNjQ2MTc0NjE1ZjZjNjU2ZTY3NzQ2ODE4MDEyMDAxMjgwZDUyMGE2NDYxNzQ2MTRjNjU2ZTY3NzQ2ODEyMWYwYTBiNzM2OTY3NmU2MTc0NzU3MjY1NWY3NjE4MDIyMDAxMjgwZDUyMGE3MzY5Njc2ZTYxNzQ3NTcyNjU1NjEyMWYwYTBiNzM2OTY3NmU2MTc0NzU3MjY1NWY3MjE4MDMyMDAxMjgwYzUyMGE3MzY5Njc2ZTYxNzQ3NTcyNjU1MjEyMWYwYTBiNzM2OTY3NmU2MTc0NzU3MjY1NWY3MzE4MDQyMDAxMjgwYzUyMGE3MzY5Njc2ZTYxNzQ3NTcyNjU1MzIyMmUwYTBkNDU3NDY4NjU3MjY1NzU2ZDU0Nzg0MTYzNmIxMjFkMGEwYTY0NjE3NDYxNWY2MzY4NzU2ZTZiMTgwMTIwMDEyODBjNTIwOTY0NjE3NDYxNDM2ODc1NmU2YjIyNGMwYTEzNDU3NDY4NjU3MjY1NzU2ZDUzNjk2NzZlNGQ2NTczNzM2MTY3NjUxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIxODBhMDc2ZDY1NzM3MzYxNjc2NTE4MDIyMDAyMjgwYzUyMDc2ZDY1NzM3MzYxNjc2NTIyNjkwYTE1NDU3NDY4NjU3MjY1NzU2ZDU2NjU3MjY5NjY3OTRkNjU3MzczNjE2NzY1MTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAxMjgwYzUyMDc2MTY0NjQ3MjY1NzM3MzEyMWMwYTA5NzM2OTY3NmU2MTc0NzU3MjY1MTgwMjIwMDEyODBjNTIwOTczNjk2NzZlNjE3NDc1NzI2NTEyMTgwYTA3NmQ2NTczNzM2MTY3NjUxODAzMjAwMTI4MGM1MjA3NmQ2NTczNzM2MTY3NjUyMjUyMGExODQ1NzQ2ODY1NzI2NTc1NmQ0ZDY1NzM3MzYxNjc2NTUzNjk2NzZlNjE3NDc1NzI2NTEyMTgwYTA3NjE2NDY0NzI2NTczNzMxODAxMjAwMTI4MGM1MjA3NjE2NDY0NzI2NTczNzMxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDIyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUyMmI5MDEwYTBjNTM2OTY3NmU0OTY0NjU2ZTc0Njk3NDc5MTIyOTBhMDg2OTY0NjU2ZTc0Njk3NDc5MTgwMTIwMDEyODBiMzIwZDJlNDk2NDY1NmU3NDY5NzQ3OTU0Nzk3MDY1NTIwODY5NjQ2NTZlNzQ2OTc0NzkxMjI5MGExMDYzNjg2MTZjNmM2NTZlNjc2NTVmNjg2OTY0NjQ2NTZlMTgwMjIwMDEyODBjNTIwZjYzNjg2MTZjNmM2NTZlNjc2NTQ4Njk2NDY0NjU2ZTEyMjkwYTEwNjM2ODYxNmM2YzY1NmU2NzY1NWY3NjY5NzM3NTYxNmMxODAzMjAwMTI4MDk1MjBmNjM2ODYxNmM2YzY1NmU2NzY1NTY2OTczNzU2MTZjMTIyODBhMTA2NTYzNjQ3MzYxNWY2Mzc1NzI3NjY1NWY2ZTYxNmQ2NTE4MDQyMDAxMjgwOTUyMGU2NTYzNjQ3MzYxNDM3NTcyNzY2NTRlNjE2ZDY1MjI2NzBhMGU1MzY5Njc2ZTY1NjQ0OTY0NjU2ZTc0Njk3NDc5MTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAxMjgwOTUyMDc2MTY0NjQ3MjY1NzM3MzEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAyMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAzMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MjI5MDAxMGExMTQ3NjU3NDQ1NDM0NDQ4NTM2NTczNzM2OTZmNmU0YjY1NzkxMjI5MGEwODY5NjQ2NTZlNzQ2OTc0NzkxODAxMjAwMTI4MGIzMjBkMmU0OTY0NjU2ZTc0Njk3NDc5NTQ3OTcwNjU1MjA4Njk2NDY1NmU3NDY5NzQ3OTEyMjYwYTBmNzA2NTY1NzI1ZjcwNzU2MjZjNjk2MzVmNmI2NTc5MTgwMjIwMDEyODBjNTIwZDcwNjU2NTcyNTA3NTYyNmM2OTYzNGI2NTc5MTIyODBhMTA2NTYzNjQ3MzYxNWY2Mzc1NzI3NjY1NWY2ZTYxNmQ2NTE4MDMyMDAxMjgwOTUyMGU2NTYzNjQ3MzYxNDM3NTcyNzY2NTRlNjE2ZDY1MjIzMTBhMGU0NTQzNDQ0ODUzNjU3MzczNjk2ZjZlNGI2NTc5MTIxZjBhMGI3MzY1NzM3MzY5NmY2ZTVmNmI2NTc5MTgwMTIwMDEyODBjNTIwYTczNjU3MzczNjk2ZjZlNGI2NTc5MjIzMDBhMGQ1MzY1NzQ1NTMyNDY0MzZmNzU2ZTc0NjU3MjEyMWYwYTBiNzUzMjY2NWY2MzZmNzU2ZTc0NjU3MjE4MDEyMDAxMjgwZDUyMGE3NTMyNjY0MzZmNzU2ZTc0NjU3MjIyMjcwYTBkNDY2OTcyNmQ3NzYxNzI2NTQ1NzI2MTczNjUxMjE2MGEwNjZjNjU2ZTY3NzQ2ODE4MDEyMDAxMjgwZDUyMDY2YzY1NmU2Nzc0NjgyMjQxMGEwZjQ2Njk3MjZkNzc2MTcyNjU1MjY1NzE3NTY1NzM3NDEyMTYwYTA2NmY2NjY2NzM2NTc0MTgwMTIwMDEyODBkNTIwNjZmNjY2NjczNjU3NDEyMTYwYTA2NmM2NTZlNjc3NDY4MTgwMjIwMDEyODBkNTIwNjZjNjU2ZTY3NzQ2ODIyM2UwYTBlNDY2OTcyNmQ3NzYxNzI2NTU1NzA2YzZmNjE2NDEyMTgwYTA3NzA2MTc5NmM2ZjYxNjQxODAxMjAwMjI4MGM1MjA3NzA2MTc5NmM2ZjYxNjQxMjEyMGEwNDY4NjE3MzY4MTgwMjIwMDEyODBjNTIwNDY4NjE3MzY4MjIyNDBhMDg1MzY1NmM2NjU0NjU3Mzc0MTIxODBhMDc3MDYxNzk2YzZmNjE2NDE4MDEyMDAxMjgwYzUyMDc3MDYxNzk2YzZmNjE2NDIyNjkwYTBkNGU0NTRkNDc2NTc0NDE2NDY0NzI2NTczNzMxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIxODBhMDc2ZTY1NzQ3NzZmNzI2YjE4MDIyMDAxMjgwZDUyMDc2ZTY1NzQ3NzZmNzI2YjEyMjEwYTBjNzM2ODZmNzc1ZjY0Njk3MzcwNmM2MTc5MTgwMzIwMDEyODA4NTIwYjczNjg2Zjc3NDQ2OTczNzA2YzYxNzkyMjI2MGEwYTRlNDU0ZDQxNjQ2NDcyNjU3MzczMTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAyMjgwOTUyMDc2MTY0NjQ3MjY1NzM3MzIyOWQwNDBhMDk0ZTQ1NGQ1MzY5Njc2ZTU0NzgxMjM3MGEwYjc0NzI2MTZlNzM2MTYzNzQ2OTZmNmUxODAxMjAwMTI4MGIzMjE1MmU0ZTQ1NGQ1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNDM2ZjZkNmQ2ZjZlNTIwYjc0NzI2MTZlNzM2MTYzNzQ2OTZmNmUxMjMxMGEwODZkNzU2Yzc0Njk3MzY5NjcxODAyMjAwMTI4MGIzMjE1MmU0ZTQ1NGQ1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNDM2ZjZkNmQ2ZjZlNTIwODZkNzU2Yzc0Njk3MzY5NjcxMjI4MGEwODc0NzI2MTZlNzM2NjY1NzIxODAzMjAwMTI4MGIzMjBjMmU0ZTQ1NGQ1NDcyNjE2ZTczNjY2NTcyNTIwODc0NzI2MTZlNzM2NjY1NzIxMjFjMGEwOTYzNmY3MzY5Njc2ZTY5NmU2NzE4MDQyMDAxMjgwODUyMDk2MzZmNzM2OTY3NmU2OTZlNjcxMjQ3MGExMzcwNzI2Zjc2Njk3MzY5NmY2ZTVmNmU2MTZkNjU3MzcwNjE2MzY1MTgwNTIwMDEyODBiMzIxNjJlNGU0NTRkNTA3MjZmNzY2OTczNjk2ZjZlNGU2MTZkNjU3MzcwNjE2MzY1NTIxMjcwNzI2Zjc2Njk3MzY5NmY2ZTRlNjE2ZDY1NzM3MDYxNjM2NTEyM2IwYTBmNmQ2ZjczNjE2OTYzNWY2MzcyNjU2MTc0Njk2ZjZlMTgwNjIwMDEyODBiMzIxMjJlNGU0NTRkNGQ2ZjczNjE2OTYzNDM3MjY1NjE3NDY5NmY2ZTUyMGU2ZDZmNzM2MTY5NjM0MzcyNjU2MTc0Njk2ZjZlMTIzYjBhMGQ3Mzc1NzA3MDZjNzk1ZjYzNjg2MTZlNjc2NTE4MDcyMDAxMjgwYjMyMTYyZTRlNDU0ZDRkNmY3MzYxNjk2MzUzNzU3MDcwNmM3OTQzNjg2MTZlNjc2NTUyMGM3Mzc1NzA3MDZjNzk0MzY4NjE2ZTY3NjUxMjUwMGExNjYxNjc2NzcyNjU2NzYxNzQ2NTVmNmQ2ZjY0Njk2NjY5NjM2MTc0Njk2ZjZlMTgwODIwMDEyODBiMzIxOTJlNGU0NTRkNDE2NzY3NzI2NTY3NjE3NDY1NGQ2ZjY0Njk2NjY5NjM2MTc0Njk2ZjZlNTIxNTYxNjc2NzcyNjU2NzYxNzQ2NTRkNmY2NDY5NjY2OTYzNjE3NDY5NmY2ZTEyNDcwYTEzNjk2ZDcwNmY3Mjc0NjE2ZTYzNjU1Zjc0NzI2MTZlNzM2NjY1NzIxODA5MjAwMTI4MGIzMjE2MmU0ZTQ1NGQ0OTZkNzA2ZjcyNzQ2MTZlNjM2NTU0NzI2MTZlNzM2NjY1NzI1MjEyNjk2ZDcwNmY3Mjc0NjE2ZTYzNjU1NDcyNjE2ZTczNjY2NTcyMjIzZjBhMGI0ZTQ1NGQ1MzY5Njc2ZTY1NjQ1NDc4MTIxMjBhMDQ2NDYxNzQ2MTE4MDEyMDAxMjgwYzUyMDQ2NDYxNzQ2MTEyMWMwYTA5NzM2OTY3NmU2MTc0NzU3MjY1MTgwMjIwMDEyODBjNTIwOTczNjk2NzZlNjE3NDc1NzI2NTIyODMwMTBhMTE0ZTQ1NGQ0NDY1NjM3Mjc5NzA3NDRkNjU3MzczNjE2NzY1MTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMTgwYTA3NmU2NTc0Nzc2ZjcyNmIxODAyMjAwMTI4MGQ1MjA3NmU2NTc0Nzc2ZjcyNmIxMjFkMGEwYTcwNzU2MjZjNjk2MzVmNmI2NTc5MTgwMzIwMDEyODBjNTIwOTcwNzU2MjZjNjk2MzRiNjU3OTEyMTgwYTA3NzA2MTc5NmM2ZjYxNjQxODA0MjAwMTI4MGM1MjA3NzA2MTc5NmM2ZjYxNjQyMjJmMGExMzRlNDU0ZDQ0NjU2MzcyNzk3MDc0NjU2NDRkNjU3MzczNjE2NzY1MTIxODBhMDc3MDYxNzk2YzZmNjE2NDE4MDEyMDAxMjgwYzUyMDc3MDYxNzk2YzZmNjE2NDIyM2QwYTBhNDM2ZjczNjk0MzZmNmQ2ZDY5NzQxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIxMjBhMDQ2NDYxNzQ2MTE4MDIyMDAxMjgwYzUyMDQ2NDYxNzQ2MTIyNDgwYTBlNDM2ZjczNjk0MzZmNmQ2ZDY5NzQ2ZDY1NmU3NDEyMWUwYTBhNjM2ZjZkNmQ2OTc0NmQ2NTZlNzQxODAxMjAwMTI4MGM1MjBhNjM2ZjZkNmQ2OTc0NmQ2NTZlNzQxMjE2MGEwNjcwNzU2MjZiNjU3OTE4MDIyMDAxMjgwYzUyMDY3MDc1NjI2YjY1NzkyMjhkMDEwYTA4NDM2ZjczNjk1MzY5Njc2ZTEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjEyMGEwNDY0NjE3NDYxMTgwMjIwMDEyODBjNTIwNDY0NjE3NDYxMTIyYjBhMTE2NzZjNmY2MjYxNmM1ZjYzNmY2ZDZkNjk3NDZkNjU2ZTc0MTgwMzIwMDEyODBjNTIxMDY3NmM2ZjYyNjE2YzQzNmY2ZDZkNjk3NDZkNjU2ZTc0MTIyMzBhMGQ2NzZjNmY2MjYxNmM1ZjcwNzU2MjZiNjU3OTE4MDQyMDAxMjgwYzUyMGM2NzZjNmY2MjYxNmM1MDc1NjI2YjY1NzkyMjJkMGEwZDQzNmY3MzY5NTM2OTY3NmU2MTc0NzU3MjY1MTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAxMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MjI1NTBhMTM1Mzc0NjU2YzZjNjE3MjQ3NjU3NDUwNzU2MjZjNjk2MzRiNjU3OTEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjIxMGEwYzczNjg2Zjc3NWY2NDY5NzM3MDZjNjE3OTE4MDIyMDAxMjgwODUyMGI3MzY4NmY3NzQ0Njk3MzcwNmM2MTc5MjIzMTBhMTA1Mzc0NjU2YzZjNjE3MjUwNzU2MjZjNjk2MzRiNjU3OTEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAxMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MjI1MzBhMTE1Mzc0NjU2YzZjNjE3MjQ3NjU3NDQxNjQ2NDcyNjU3MzczMTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMjEwYTBjNzM2ODZmNzc1ZjY0Njk3MzcwNmM2MTc5MTgwMjIwMDEyODA4NTIwYjczNjg2Zjc3NDQ2OTczNzA2YzYxNzkyMjJhMGEwZTUzNzQ2NTZjNmM2MTcyNDE2NDY0NzI2NTczNzMxMjE4MGEwNzYxNjQ2NDcyNjU3MzczMTgwMTIwMDEyODA5NTIwNzYxNjQ2NDcyNjU3MzczMjJkMTAzMGEwZDUzNzQ2NTZjNmM2MTcyNTM2OTY3NmU1NDc4MTIyOTBhMTA3MDcyNmY3NDZmNjM2ZjZjNWY3NjY1NzI3MzY5NmY2ZTE4MDEyMDAxMjgwZDUyMGY3MDcyNmY3NDZmNjM2ZjZjNTY2NTcyNzM2OTZmNmUxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDIyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIyZDBhMTI2ZTY1NzQ3NzZmNzI2YjVmNzA2MTczNzM3MDY4NzI2MTczNjUxODAzMjAwMTI4MDk1MjExNmU2NTc0Nzc2ZjcyNmI1MDYxNzM3MzcwNjg3MjYxNzM2NTEyMjUwYTBlNzM2Zjc1NzI2MzY1NWY2MTYzNjM2Zjc1NmU3NDE4MDQyMDAxMjgwOTUyMGQ3MzZmNzU3MjYzNjU0MTYzNjM2Zjc1NmU3NDEyMTAwYTAzNjY2NTY1MTgwNTIwMDEyODBkNTIwMzY2NjU2NTEyMjcwYTBmNzM2NTcxNzU2NTZlNjM2NTVmNmU3NTZkNjI2NTcyMTgwNjIwMDEyODA0NTIwZTczNjU3MTc1NjU2ZTYzNjU0ZTc1NmQ2MjY1NzIxMjI5MGExMDc0Njk2ZDY1NjI2Zjc1NmU2NDczNWY3Mzc0NjE3Mjc0MTgwODIwMDEyODBkNTIwZjc0Njk2ZDY1NjI2Zjc1NmU2NDczNTM3NDYxNzI3NDEyMjUwYTBlNzQ2OTZkNjU2MjZmNzU2ZTY0NzM1ZjY1NmU2NDE4MDkyMDAxMjgwZDUyMGQ3NDY5NmQ2NTYyNmY3NTZlNjQ3MzQ1NmU2NDEyMWIwYTA5NmQ2NTZkNmY1Zjc0Nzk3MDY1MTgwYTIwMDEyODBkNTIwODZkNjU2ZDZmNTQ3OTcwNjUxMjFiMGEwOTZkNjU2ZDZmNWY3NDY1Nzg3NDE4MGIyMDAxMjgwOTUyMDg2ZDY1NmQ2ZjU0NjU3ODc0MTIxNzBhMDc2ZDY1NmQ2ZjVmNjk2NDE4MGMyMDAxMjgwNDUyMDY2ZDY1NmQ2ZjQ5NjQxMjFiMGEwOTZkNjU2ZDZmNWY2ODYxNzM2ODE4MGQyMDAxMjgwYzUyMDg2ZDY1NmQ2ZjQ4NjE3MzY4MTIyNTBhMGU2ZTc1NmQ1ZjZmNzA2NTcyNjE3NDY5NmY2ZTczMTgwZTIwMDEyODBkNTIwZDZlNzU2ZDRmNzA2NTcyNjE3NDY5NmY2ZTczMjIxNDBhMTI1Mzc0NjU2YzZjNjE3MjU0Nzg0ZjcwNTI2NTcxNzU2NTczNzQyMmFiMDEwYTEwNTM3NDY1NmM2YzYxNzI1MDYxNzk2ZDY1NmU3NDRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjJmMGExMzY0NjU3Mzc0Njk2ZTYxNzQ2OTZmNmU1ZjYxNjM2MzZmNzU2ZTc0MTgwMjIwMDEyODA5NTIxMjY0NjU3Mzc0Njk2ZTYxNzQ2OTZmNmU0MTYzNjM2Zjc1NmU3NDEyMjcwYTA1NjE3MzczNjU3NDE4MDMyMDAxMjgwYjMyMTEyZTUzNzQ2NTZjNmM2MTcyNDE3MzczNjU3NDU0Nzk3MDY1NTIwNTYxNzM3MzY1NzQxMjE2MGEwNjYxNmQ2Zjc1NmU3NDE4MDQyMDAxMjgxMjUyMDY2MTZkNmY3NTZlNzQyMjhiMDEwYTE2NTM3NDY1NmM2YzYxNzI0MzcyNjU2MTc0NjU0MTYzNjM2Zjc1NmU3NDRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjFmMGEwYjZlNjU3NzVmNjE2MzYzNmY3NTZlNzQxODAyMjAwMTI4MDk1MjBhNmU2NTc3NDE2MzYzNmY3NTZlNzQxMjI5MGExMDczNzQ2MTcyNzQ2OTZlNjc1ZjYyNjE2YzYxNmU2MzY1MTgwMzIwMDEyODEyNTIwZjczNzQ2MTcyNzQ2OTZlNjc0MjYxNmM2MTZlNjM2NTIyZDMwMjBhMTQ1Mzc0NjU2YzZjNjE3MjUwNjE3NDY4NTA2MTc5NmQ2NTZlNzQ0ZjcwMTIyNTBhMGU3MzZmNzU3MjYzNjU1ZjYxNjM2MzZmNzU2ZTc0MTgwMTIwMDEyODA5NTIwZDczNmY3NTcyNjM2NTQxNjM2MzZmNzU2ZTc0MTIzMDBhMGE3MzY1NmU2NDVmNjE3MzczNjU3NDE4MDIyMDAxMjgwYjMyMTEyZTUzNzQ2NTZjNmM2MTcyNDE3MzczNjU3NDU0Nzk3MDY1NTIwOTczNjU2ZTY0NDE3MzczNjU3NDEyMTkwYTA4NzM2NTZlNjQ1ZjZkNjE3ODE4MDMyMDAxMjgxMjUyMDc3MzY1NmU2NDRkNjE3ODEyMmYwYTEzNjQ2NTczNzQ2OTZlNjE3NDY5NmY2ZTVmNjE2MzYzNmY3NTZlNzQxODA0MjAwMTI4MDk1MjEyNjQ2NTczNzQ2OTZlNjE3NDY5NmY2ZTQxNjM2MzZmNzU2ZTc0MTIzZTBhMTE2NDY1NzM3NDY5NmU2MTc0Njk2ZjZlNWY2MTczNzM2NTc0MTgwNTIwMDEyODBiMzIxMTJlNTM3NDY1NmM2YzYxNzI0MTczNzM2NTc0NTQ3OTcwNjU1MjEwNjQ2NTczNzQ2OTZlNjE3NDY5NmY2ZTQxNzM3MzY1NzQxMjJkMGExMjY0NjU3Mzc0Njk2ZTYxNzQ2OTZmNmU1ZjYxNmQ2Zjc1NmU3NDE4MDYyMDAxMjgxMjUyMTE2NDY1NzM3NDY5NmU2MTc0Njk2ZjZlNDE2ZDZmNzU2ZTc0MTIyNzBhMDU3MDYxNzQ2ODczMTgwNzIwMDMyODBiMzIxMTJlNTM3NDY1NmM2YzYxNzI0MTczNzM2NTc0NTQ3OTcwNjU1MjA1NzA2MTc0Njg3MzIyOTAwMjBhMTQ1Mzc0NjU2YzZjNjE3MjRkNjE2ZTYxNjc2NTRmNjY2NjY1NzI0ZjcwMTIyNTBhMGU3MzZmNzU3MjYzNjU1ZjYxNjM2MzZmNzU2ZTc0MTgwMTIwMDEyODA5NTIwZDczNmY3NTcyNjM2NTQxNjM2MzZmNzU2ZTc0MTIzNjBhMGQ3MzY1NmM2YzY5NmU2NzVmNjE3MzczNjU3NDE4MDIyMDAxMjgwYjMyMTEyZTUzNzQ2NTZjNmM2MTcyNDE3MzczNjU3NDU0Nzk3MDY1NTIwYzczNjU2YzZjNjk2ZTY3NDE3MzczNjU3NDEyMzQwYTBjNjI3NTc5Njk2ZTY3NWY2MTczNzM2NTc0MTgwMzIwMDEyODBiMzIxMTJlNTM3NDY1NmM2YzYxNzI0MTczNzM2NTc0NTQ3OTcwNjU1MjBiNjI3NTc5Njk2ZTY3NDE3MzczNjU3NDEyMTYwYTA2NjE2ZDZmNzU2ZTc0MTgwNDIwMDEyODEyNTIwNjYxNmQ2Zjc1NmU3NDEyMTcwYTA3NzA3MjY5NjM2NTVmNmUxODA1MjAwMTI4MGQ1MjA2NzA3MjY5NjM2NTRlMTIxNzBhMDc3MDcyNjk2MzY1NWY2NDE4MDYyMDAxMjgwZDUyMDY3MDcyNjk2MzY1NDQxMjE5MGEwODZmNjY2NjY1NzI1ZjY5NjQxODA3MjAwMTI4MDQ1MjA3NmY2NjY2NjU3MjQ5NjQyMmZjMDEwYTFiNTM3NDY1NmM2YzYxNzI0MzcyNjU2MTc0NjU1MDYxNzM3MzY5NzY2NTRmNjY2NjY1NzI0ZjcwMTIyNTBhMGU3MzZmNzU3MjYzNjU1ZjYxNjM2MzZmNzU2ZTc0MTgwMTIwMDEyODA5NTIwZDczNmY3NTcyNjM2NTQxNjM2MzZmNzU2ZTc0MTIzNjBhMGQ3MzY1NmM2YzY5NmU2NzVmNjE3MzczNjU3NDE4MDIyMDAxMjgwYjMyMTEyZTUzNzQ2NTZjNmM2MTcyNDE3MzczNjU3NDU0Nzk3MDY1NTIwYzczNjU2YzZjNjk2ZTY3NDE3MzczNjU3NDEyMzQwYTBjNjI3NTc5Njk2ZTY3NWY2MTczNzM2NTc0MTgwMzIwMDEyODBiMzIxMTJlNTM3NDY1NmM2YzYxNzI0MTczNzM2NTc0NTQ3OTcwNjU1MjBiNjI3NTc5Njk2ZTY3NDE3MzczNjU3NDEyMTYwYTA2NjE2ZDZmNzU2ZTc0MTgwNDIwMDEyODEyNTIwNjYxNmQ2Zjc1NmU3NDEyMTcwYTA3NzA3MjY5NjM2NTVmNmUxODA1MjAwMTI4MGQ1MjA2NzA3MjY5NjM2NTRlMTIxNzBhMDc3MDcyNjk2MzY1NWY2NDE4MDYyMDAxMjgwZDUyMDY3MDcyNjk2MzY1NDQyMmUwMDMwYTEzNTM3NDY1NmM2YzYxNzI1MzY1NzQ0ZjcwNzQ2OTZmNmU3MzRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjQyMGExZDY5NmU2NjZjNjE3NDY5NmY2ZTVmNjQ2NTczNzQ2OTZlNjE3NDY5NmY2ZTVmNjE2MzYzNmY3NTZlNzQxODAyMjAwMTI4MDk1MjFiNjk2ZTY2NmM2MTc0Njk2ZjZlNDQ2NTczNzQ2OTZlNjE3NDY5NmY2ZTQxNjM2MzZmNzU2ZTc0MTIxZjBhMGI2MzZjNjU2MTcyNWY2NjZjNjE2NzczMTgwMzIwMDEyODBkNTIwYTYzNmM2NTYxNzI0NjZjNjE2NzczMTIxYjBhMDk3MzY1NzQ1ZjY2NmM2MTY3NzMxODA0MjAwMTI4MGQ1MjA4NzM2NTc0NDY2YzYxNjc3MzEyMjMwYTBkNmQ2MTczNzQ2NTcyNWY3NzY1Njk2NzY4NzQxODA1MjAwMTI4MGQ1MjBjNmQ2MTczNzQ2NTcyNTc2NTY5Njc2ODc0MTIyMzBhMGQ2YzZmNzc1Zjc0Njg3MjY1NzM2ODZmNmM2NDE4MDYyMDAxMjgwZDUyMGM2YzZmNzc1NDY4NzI2NTczNjg2ZjZjNjQxMjI5MGExMDZkNjU2NDY5NzU2ZDVmNzQ2ODcyNjU3MzY4NmY2YzY0MTgwNzIwMDEyODBkNTIwZjZkNjU2NDY5NzU2ZDU0Njg3MjY1NzM2ODZmNmM2NDEyMjUwYTBlNjg2OTY3Njg1Zjc0Njg3MjY1NzM2ODZmNmM2NDE4MDgyMDAxMjgwZDUyMGQ2ODY5Njc2ODU0Njg3MjY1NzM2ODZmNmM2NDEyMWYwYTBiNjg2ZjZkNjU1ZjY0NmY2ZDYxNjk2ZTE4MDkyMDAxMjgwOTUyMGE2ODZmNmQ2NTQ0NmY2ZDYxNjk2ZTEyMWYwYTBiNzM2OTY3NmU2NTcyNWY3NDc5NzA2NTE4MGEyMDAxMjgwZDUyMGE3MzY5Njc2ZTY1NzI1NDc5NzA2NTEyMWQwYTBhNzM2OTY3NmU2NTcyNWY2YjY1NzkxODBiMjAwMTI4MGM1MjA5NzM2OTY3NmU2NTcyNGI2NTc5MTIyMzBhMGQ3MzY5Njc2ZTY1NzI1Zjc3NjU2OTY3Njg3NDE4MGMyMDAxMjgwZDUyMGM3MzY5Njc2ZTY1NzI1NzY1Njk2NzY4NzQyMjdjMGExNDUzNzQ2NTZjNmM2MTcyNDM2ODYxNmU2NzY1NTQ3Mjc1NzM3NDRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjI3MGEwNTYxNzM3MzY1NzQxODAyMjAwMTI4MGIzMjExMmU1Mzc0NjU2YzZjNjE3MjQxNzM3MzY1NzQ1NDc5NzA2NTUyMDU2MTczNzM2NTc0MTIxNDBhMDU2YzY5NmQ2OTc0MTgwMzIwMDEyODA0NTIwNTZjNjk2ZDY5NzQyMmM4MDEwYTEzNTM3NDY1NmM2YzYxNzI0MTZjNmM2Zjc3NTQ3Mjc1NzM3NDRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjI3MGEwZjc0NzI3NTczNzQ2NTY0NWY2MTYzNjM2Zjc1NmU3NDE4MDIyMDAxMjgwOTUyMGU3NDcyNzU3Mzc0NjU2NDQxNjM2MzZmNzU2ZTc0MTIxZDBhMGE2MTczNzM2NTc0NWY3NDc5NzA2NTE4MDMyMDAxMjgwZDUyMDk2MTczNzM2NTc0NTQ3OTcwNjUxMjFkMGEwYTYxNzM3MzY1NzQ1ZjYzNmY2NDY1MTgwNDIwMDEyODA5NTIwOTYxNzM3MzY1NzQ0MzZmNjQ2NTEyMjMwYTBkNjk3MzVmNjE3NTc0Njg2ZjcyNjk3YTY1NjQxODA1MjAwMTI4MGQ1MjBjNjk3MzQxNzU3NDY4NmY3MjY5N2E2NTY0MjI2ZjBhMTU1Mzc0NjU2YzZjNjE3MjQxNjM2MzZmNzU2ZTc0NGQ2NTcyNjc2NTRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjJmMGExMzY0NjU3Mzc0Njk2ZTYxNzQ2OTZmNmU1ZjYxNjM2MzZmNzU2ZTc0MTgwMjIwMDEyODA5NTIxMjY0NjU3Mzc0Njk2ZTYxNzQ2OTZmNmU0MTYzNjM2Zjc1NmU3NDIyNjQwYTEzNTM3NDY1NmM2YzYxNzI0ZDYxNmU2MTY3NjU0NDYxNzQ2MTRmNzAxMjI1MGEwZTczNmY3NTcyNjM2NTVmNjE2MzYzNmY3NTZlNzQxODAxMjAwMTI4MDk1MjBkNzM2Zjc1NzI2MzY1NDE2MzYzNmY3NTZlNzQxMjEwMGEwMzZiNjU3OTE4MDIyMDAxMjgwOTUyMDM2YjY1NzkxMjE0MGEwNTc2NjE2Yzc1NjUxODAzMjAwMTI4MGM1MjA1NzY2MTZjNzU2NTIyNTcwYTE1NTM3NDY1NmM2YzYxNzI0Mjc1NmQ3MDUzNjU3MTc1NjU2ZTYzNjU0ZjcwMTIyNTBhMGU3MzZmNzU3MjYzNjU1ZjYxNjM2MzZmNzU2ZTc0MTgwMTIwMDEyODA5NTIwZDczNmY3NTcyNjM2NTQxNjM2MzZmNzU2ZTc0MTIxNzBhMDc2Mjc1NmQ3MDVmNzQ2ZjE4MDIyMDAxMjgwNDUyMDY2Mjc1NmQ3MDU0NmYyMjRlMGEwZjUzNzQ2NTZjNmM2MTcyNTM2OTY3NmU2NTY0NTQ3ODEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAxMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAyMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MjI1MjBhMTA0YzY5NzM2YjQ3NjU3NDUwNzU2MjZjNjk2MzRiNjU3OTEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjIxMGEwYzczNjg2Zjc3NWY2NDY5NzM3MDZjNjE3OTE4MDIyMDAxMjgwODUyMGI3MzY4NmY3NzQ0Njk3MzcwNmM2MTc5MjIyZTBhMGQ0YzY5NzM2YjUwNzU2MjZjNjk2MzRiNjU3OTEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAxMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MjI1MDBhMGU0YzY5NzM2YjQ3NjU3NDQxNjQ2NDcyNjU3MzczMTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMjEwYTBjNzM2ODZmNzc1ZjY0Njk3MzcwNmM2MTc5MTgwMjIwMDEyODA4NTIwYjczNjg2Zjc3NDQ2OTczNzA2YzYxNzkyMjI3MGEwYjRjNjk3MzZiNDE2NDY0NzI2NTczNzMxMjE4MGEwNzYxNjQ2NDcyNjU3MzczMTgwMTIwMDEyODA5NTIwNzYxNjQ2NDcyNjU3MzczMjI2MzBhMGE0YzY5NzM2YjUzNjk2NzZlNTQ3ODEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjM4MGEwYjc0NzI2MTZlNzM2MTYzNzQ2OTZmNmUxODAyMjAwMTI4MGIzMjE2MmU0YzY5NzM2YjU0NzI2MTZlNzM2MTYzNzQ2OTZmNmU0MzZmNmQ2ZDZmNmU1MjBiNzQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTIyMmMwYTBjNGM2OTczNmI1MzY5Njc2ZTY1NjQ1NDc4MTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAxMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MjI0ODBhMGY0YzY5NzM2YjUzNjk2NzZlNGQ2NTczNzM2MTY3NjUxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIxODBhMDc2ZDY1NzM3MzYxNjc2NTE4MDIyMDAxMjgwYzUyMDc2ZDY1NzM3MzYxNjc2NTIyNTMwYTE0NGM2OTczNmI0ZDY1NzM3MzYxNjc2NTUzNjk2NzZlNjE3NDc1NzI2NTEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAxMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAyMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MjI2YTBhMTE0YzY5NzM2YjU2NjU3MjY5NjY3OTRkNjU3MzczNjE2NzY1MTIxZDBhMGE3MDc1NjI2YzY5NjM1ZjZiNjU3OTE4MDEyMDAxMjgwYzUyMDk3MDc1NjI2YzY5NjM0YjY1NzkxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDIyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMzIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MjI1MTBhMGY1NDY1N2E2ZjczNDc2NTc0NDE2NDY0NzI2NTczNzMxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIyMTBhMGM3MzY4NmY3NzVmNjQ2OTczNzA2YzYxNzkxODAyMjAwMTI4MDg1MjBiNzM2ODZmNzc0NDY5NzM3MDZjNjE3OTIyMjgwYTBjNTQ2NTdhNmY3MzQxNjQ2NDcyNjU3MzczMTIxODBhMDc2MTY0NjQ3MjY1NzM3MzE4MDEyMDAxMjgwOTUyMDc2MTY0NjQ3MjY1NzM3MzIyODcwMjBhMGI1NDY1N2E2ZjczNTM2OTY3NmU1NDc4MTIxYjBhMDk2MTY0NjQ3MjY1NzM3MzVmNmUxODAxMjAwMzI4MGQ1MjA4NjE2NDY0NzI2NTczNzM0ZTEyMzMwYTA5NmY3MDY1NzI2MTc0Njk2ZjZlMTgwMjIwMDEyODBiMzIxNTJlNTQ2NTdhNmY3MzRmNzA2NTcyNjE3NDY5NmY2ZTQzNmY2ZDZkNmY2ZTUyMDk2ZjcwNjU3MjYxNzQ2OTZmNmUxMjM3MGEwYjc0NzI2MTZlNzM2MTYzNzQ2OTZmNmUxODAzMjAwMTI4MGIzMjE1MmU1NDY1N2E2ZjczNTQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTU0Nzk3MDY1NTIwYjc0NzI2MTZlNzM2MTYzNzQ2OTZmNmUxMjM3MGEwYjZmNzI2OTY3Njk2ZTYxNzQ2OTZmNmUxODA0MjAwMTI4MGIzMjE1MmU1NDY1N2E2ZjczNGY3MjY5Njc2OTZlNjE3NDY5NmY2ZTU0Nzk3MDY1NTIwYjZmNzI2OTY3Njk2ZTYxNzQ2OTZmNmUxMjM0MGEwYTY0NjU2YzY1Njc2MTc0Njk2ZjZlMTgwNTIwMDEyODBiMzIxNDJlNTQ2NTdhNmY3MzQ0NjU2YzY1Njc2MTc0Njk2ZjZlNTQ3OTcwNjU1MjBhNjQ2NTZjNjU2NzYxNzQ2OTZmNmUyMjdjMGEwZDU0NjU3YTZmNzM1MzY5Njc2ZTY1NjQ1NDc4MTIxYzBhMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxODAxMjAwMTI4MGM1MjA5NzM2OTY3NmU2MTc0NzU3MjY1MTIyNjBhMGY3MzY5Njc1ZjZmNzA1ZjYzNmY2ZTc0NjU2ZTc0NzMxODAyMjAwMTI4MGM1MjBkNzM2OTY3NGY3MDQzNmY2ZTc0NjU2ZTc0NzMxMjI1MGEwZTZmNzA2NTcyNjE3NDY5NmY2ZTVmNjg2MTczNjgxODAzMjAwMTI4MDk1MjBkNmY3MDY1NzI2MTc0Njk2ZjZlNDg2MTczNjgyMjUzMGExMTU0NjU3YTZmNzM0NzY1NzQ1MDc1NjI2YzY5NjM0YjY1NzkxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIyMTBhMGM3MzY4NmY3NzVmNjQ2OTczNzA2YzYxNzkxODAyMjAwMTI4MDg1MjBiNzM2ODZmNzc0NDY5NzM3MDZjNjE3OTIyMmYwYTBlNTQ2NTdhNmY3MzUwNzU2MjZjNjk2MzRiNjU3OTEyMWQwYTBhNzA3NTYyNmM2OTYzNWY2YjY1NzkxODAxMjAwMTI4MGM1MjA5NzA3NTYyNmM2OTYzNGI2NTc5MjI1OTBhMTE0NDY1NjI3NTY3NGM2OTZlNmI0NDY1NjM2OTczNjk2ZjZlMTIxNTBhMDY3OTY1NzM1ZjZlNmYxODAxMjAwMTI4MDg1MjA1Nzk2NTczNGU2ZjEyMTcwYTA3NzU3MDVmNjQ2Zjc3NmUxODAyMjAwMTI4MDg1MjA2NzU3MDQ0NmY3NzZlMTIxNDBhMDU2OTZlNzA3NTc0MTgwMzIwMDEyODA5NTIwNTY5NmU3MDc1NzQyMjEzMGExMTQ0NjU2Mjc1Njc0YzY5NmU2YjQ3NjU3NDUzNzQ2MTc0NjUyMjg4MDMwYTBlNDQ2NTYyNzU2NzRjNjk2ZTZiNTM3NDYxNzQ2NTEyMTYwYTA2NmM2MTc5NmY3NTc0MTgwMTIwMDEyODBjNTIwNjZjNjE3OTZmNzU3NDEyMTAwYTAzNzA2OTZlMTgwMjIwMDEyODA5NTIwMzcwNjk2ZTEyMTYwYTA2NmQ2MTc0NzI2OTc4MTgwMzIwMDEyODA5NTIwNjZkNjE3NDcyNjk3ODEyMWEwYTA4NmQ2ZTY1NmQ2ZjZlNjk2MzE4MDQyMDAxMjgwOTUyMDg2ZDZlNjU2ZDZmNmU2OTYzMTIxZjBhMDQ2ZTZmNjQ2NTE4MDUyMDAxMjgwYjMyMGIyZTQ4NDQ0ZTZmNjQ2NTU0Nzk3MDY1NTIwNDZlNmY2NDY1MTIzMzBhMTU3MDYxNzM3MzcwNjg3MjYxNzM2NTVmNzA3MjZmNzQ2NTYzNzQ2OTZmNmUxODA2MjAwMTI4MDg1MjE0NzA2MTczNzM3MDY4NzI2MTczNjU1MDcyNmY3NDY1NjM3NDY5NmY2ZTEyMWQwYTBhNzI2NTczNjU3NDVmNzc2ZjcyNjQxODA3MjAwMTI4MDk1MjA5NzI2NTczNjU3NDU3NmY3MjY0MTIyMzBhMGQ3MjY1NzM2NTc0NWY2NTZlNzQ3MjZmNzA3OTE4MDgyMDAxMjgwYzUyMGM3MjY1NzM2NTc0NDU2ZTc0NzI2ZjcwNzkxMjJjMGExMjcyNjU2MzZmNzY2NTcyNzk1ZjY2NjE2YjY1NWY3NzZmNzI2NDE4MDkyMDAxMjgwOTUyMTA3MjY1NjM2Zjc2NjU3Mjc5NDY2MTZiNjU1NzZmNzI2NDEyMmEwYTExNzI2NTYzNmY3NjY1NzI3OTVmNzc2ZjcyNjQ1ZjcwNmY3MzE4MGEyMDAxMjgwZDUyMGY3MjY1NjM2Zjc2NjU3Mjc5NTc2ZjcyNjQ1MDZmNzMxMjI0MGEwZTcyNjU3MzY1NzQ1Zjc3NmY3MjY0NWY3MDZmNzMxODBiMjAwMTI4MGQ1MjBjNzI2NTczNjU3NDU3NmY3MjY0NTA2ZjczMjIwZjBhMGQ0NDY1NjI3NTY3NGM2OTZlNmI1Mzc0NmY3MDIyNTAwYTBjNDQ2NTYyNzU2NzRjNjk2ZTZiNGM2ZjY3MTIxNDBhMDU2YzY1NzY2NTZjMTgwMTIwMDEyODBkNTIwNTZjNjU3NjY1NmMxMjE2MGEwNjYyNzU2MzZiNjU3NDE4MDIyMDAxMjgwOTUyMDY2Mjc1NjM2YjY1NzQxMjEyMGEwNDc0NjU3ODc0MTgwMzIwMDEyODA5NTIwNDc0NjU3ODc0MjI0NzBhMTM0NDY1NjI3NTY3NGM2OTZlNmI0ZDY1NmQ2ZjcyNzk1MjY1NjE2NDEyMTgwYTA3NjE2NDY0NzI2NTczNzMxODAxMjAwMTI4MGQ1MjA3NjE2NDY0NzI2NTczNzMxMjE2MGEwNjZjNjU2ZTY3NzQ2ODE4MDIyMDAxMjgwZDUyMDY2YzY1NmU2Nzc0NjgyMjI5MGEwZjQ0NjU2Mjc1Njc0YzY5NmU2YjRkNjU2ZDZmNzI3OTEyMTYwYTA2NmQ2NTZkNmY3Mjc5MTgwMTIwMDEyODBjNTIwNjZkNjU2ZDZmNzI3OTIyNWUwYTE0NDQ2NTYyNzU2NzRjNjk2ZTZiNGQ2NTZkNmY3Mjc5NTc3MjY5NzQ2NTEyMTgwYTA3NjE2NDY0NzI2NTczNzMxODAxMjAwMTI4MGQ1MjA3NjE2NDY0NzI2NTczNzMxMjE2MGEwNjZkNjU2ZDZmNzI3OTE4MDIyMDAxMjgwYzUyMDY2ZDY1NmQ2ZjcyNzkxMjE0MGEwNTY2NmM2MTczNjgxODAzMjAwMTI4MDg1MjA1NjY2YzYxNzM2ODIyMmQwYTEzNDQ2NTYyNzU2NzRjNjk2ZTZiNDY2YzYxNzM2ODQ1NzI2MTczNjUxMjE2MGEwNjczNjU2Mzc0NmY3MjE4MDEyMDAxMjgwZDUyMDY3MzY1NjM3NDZmNzIyMjUzMGExMTQzNjE3MjY0NjE2ZTZmNDc2NTc0NDE2NDY0NzI2NTczNzMxMjFiMGEwOTYxNjQ2NDcyNjU3MzczNWY2ZTE4MDEyMDAzMjgwZDUyMDg2MTY0NjQ3MjY1NzM3MzRlMTIyMTBhMGM3MzY4NmY3NzVmNjQ2OTczNzA2YzYxNzkxODAyMjAwMTI4MDg1MjBiNzM2ODZmNzc0NDY5NzM3MDZjNjE3OTIyMmEwYTBlNDM2MTcyNjQ2MTZlNmY0MTY0NjQ3MjY1NzM3MzEyMTgwYTA3NjE2NDY0NzI2NTczNzMxODAxMjAwMTI4MDk1MjA3NjE2NDY0NzI2NTczNzMyMjRiMGExMjQzNjE3MjY0NjE2ZTZmNTM2OTY3NmU0ZDY1NzM3MzYxNjc2NTEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMjIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MjIzMjBhMTM0MzYxNzI2NDYxNmU2ZjQ3NjU3NDUwNzU2MjZjNjk2MzRiNjU3OTEyMWIwYTA5NjE2NDY0NzI2NTczNzM1ZjZlMTgwMTIwMDMyODBkNTIwODYxNjQ2NDcyNjU3MzczNGUyMjc1MGExMDQzNjE3MjY0NjE2ZTZmNTA3NTYyNmM2OTYzNGI2NTc5MTIxMjBhMDQ3ODcwNzU2MjE4MDEyMDAxMjgwOTUyMDQ3ODcwNzU2MjEyMWYwYTA0NmU2ZjY0NjUxODAyMjAwMTI4MGIzMjBiMmU0ODQ0NGU2ZjY0NjU1NDc5NzA2NTUyMDQ2ZTZmNjQ2NTEyMmMwYTEyNzI2ZjZmNzQ1ZjY4NjQ1ZjcwNjE3MzczNzA2ODcyNjE3MzY1MTgwMzIwMDEyODA5NTIxMDcyNmY2Zjc0NDg2NDUwNjE3MzczNzA2ODcyNjE3MzY1MjI2ZDBhMTQ0MzYxNzI2NDYxNmU2ZjU2NjU3MjY5NjY3OTRkNjU3MzczNjE2NzY1MTIxZDBhMGE3MDc1NjI2YzY5NjM1ZjZiNjU3OTE4MDEyMDAxMjgwYzUyMDk3MDc1NjI2YzY5NjM0YjY1NzkxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDIyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUxMjE4MGEwNzZkNjU3MzczNjE2NzY1MTgwMzIwMDEyODBjNTIwNzZkNjU3MzczNjE2NzY1MjI1NjBhMTc0MzYxNzI2NDYxNmU2ZjRkNjU3MzczNjE2NzY1NTM2OTY3NmU2MTc0NzU3MjY1MTIxZDBhMGE3MDc1NjI2YzY5NjM1ZjZiNjU3OTE4MDEyMDAxMjgwYzUyMDk3MDc1NjI2YzY5NjM0YjY1NzkxMjFjMGEwOTczNjk2NzZlNjE3NDc1NzI2NTE4MDIyMDAxMjgwYzUyMDk3MzY5Njc2ZTYxNzQ3NTcyNjUyMmE0MDEwYTE2NDM2MTcyNjQ2MTZlNmY1MzY5Njc2ZTU0NzI2MTZlNzM2MTYzNzQ2OTZmNmUxMjJiMGEwNjY5NmU3MDc1NzQ3MzE4MDEyMDAzMjgwYjMyMTMyZTQzNjE3MjY0NjE2ZTZmNTQ3ODQ5NmU3MDc1NzQ1NDc5NzA2NTUyMDY2OTZlNzA3NTc0NzMxMjJlMGEwNzZmNzU3NDcwNzU3NDczMTgwMjIwMDMyODBiMzIxNDJlNDM2MTcyNjQ2MTZlNmY1NDc4NGY3NTc0NzA3NTc0NTQ3OTcwNjU1MjA3NmY3NTc0NzA3NTc0NzMxMjJkMGExMjc0NzI2MTZlNzM2MTYzNzQ2OTZmNmU3MzVmNjM2Zjc1NmU3NDE4MDMyMDAxMjgwZDUyMTE3NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlNzM0MzZmNzU2ZTc0MjI1ZjBhMTA0MzYxNzI2NDYxNmU2ZjU0Nzg1MjY1NzE3NTY1NzM3NDEyMTkwYTA4NzQ3ODVmNjk2ZTY0NjU3ODE4MDEyMDAxMjgwZDUyMDc3NDc4NDk2ZTY0NjU3ODEyMTcwYTA3NzQ3ODVmNjg2MTczNjgxODAyMjAwMTI4MGM1MjA2NzQ3ODQ4NjE3MzY4MTIxNzBhMDc3NDc4NWY2MjZmNjQ3OTE4MDMyMDAxMjgwYzUyMDY3NDc4NDI2ZjY0NzkyMjRjMGExODQzNjE3MjY0NjE2ZTZmNTM2OTY3NmU2NTY0NTQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTEyMTcwYTA3NzQ3ODVmNjg2MTczNjgxODAxMjAwMTI4MGM1MjA2NzQ3ODQ4NjE3MzY4MTIxNzBhMDc3NDc4NWY2MjZmNjQ3OTE4MDIyMDAxMjgwYzUyMDY3NDc4NDI2ZjY0NzkyMjMwMGEwYzQzNjE3MjY0NjE2ZTZmNTQ3ODQxNjM2YjEyMjAwYTBiNzQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTE4MDEyMDAxMjgwYzUyMGI3NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlMmFjMTI3MGEwYjRkNjU3MzczNjE2NzY1NTQ3OTcwNjUxMjI0MGExNjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ5NmU2OTc0Njk2MTZjNjk3YTY1MTAwMDFhMDg5MGI1MTgwMWIwYjUxODAxMTIxYTBhMTA0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1MDY5NmU2NzEwMDExYTA0OTBiNTE4MDExMjFkMGExMzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzU2MzYzNjU3MzczMTAwMjFhMDQ5OGI1MTgwMTEyMWQwYTEzNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDY2MTY5NmM3NTcyNjUxMDAzMWEwNDk4YjUxODAxMTIxZjBhMTU0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzY4NjE2ZTY3NjU1MDY5NmUxMDA0MWEwNDkwYjUxODAxMTIyMDBhMTY0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1NzY5NzA2NTQ0NjU3NjY5NjM2NTEwMDUxYTA0OTBiNTE4MDExMjI3MGExOTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ2Njk3MjZkNzc2MTcyNjU0NTcyNjE3MzY1MTAwNjFhMDg5MGI1MTgwMWI4YjUxODAxMTIyODBhMWE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NjY5NzI2ZDc3NjE3MjY1NTU3MDZjNmY2MTY0MTAwNzFhMDg5MGI1MTgwMWI4YjUxODAxMTIyOTBhMWI0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NjY5NzI2ZDc3NjE3MjY1NTI2NTcxNzU2NTczNzQxMDA4MWEwODk4YjUxODAxYjhiNTE4MDExMjIwMGExNjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ3NjU3NDQ1NmU3NDcyNmY3MDc5MTAwOTFhMDQ5MGI1MTgwMTEyMWQwYTEzNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDU2ZTc0NzI2ZjcwNzkxMDBhMWEwNDk4YjUxODAxMTIyMjBhMTg0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NzY1NzQ1MDc1NjI2YzY5NjM0YjY1NzkxMDBiMWEwNDkwYjUxODAxMTIxZjBhMTU0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1MDc1NjI2YzY5NjM0YjY1NzkxMDBjMWEwNDk4YjUxODAxMTIyMDBhMTY0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0YzZmNjE2NDQ0NjU3NjY5NjM2NTEwMGQxYTA0OTBiNTE4MDExMjIxMGExNzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUyNjU3MzY1NzQ0NDY1NzY2OTYzNjUxMDBlMWEwNDkwYjUxODAxMTIxYzBhMTI0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1MzY5Njc2ZTU0NzgxMDBmMWEwNDkwYjUxODAxMTIyNDBhMTg0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1MzY5NmQ3MDZjNjU1MzY5Njc2ZTU0NzgxMDEwMWEwNjA4MDE5MGI1MTgwMTEyMWUwYTE0NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDY2NTYxNzQ3NTcyNjU3MzEwMTExYTA0OThiNTE4MDExMjI2MGExYzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUwNjk2ZTRkNjE3NDcyNjk3ODUyNjU3MTc1NjU3Mzc0MTAxMjFhMDQ5OGI1MTgwMTEyMmEwYTE4NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTA2OTZlNGQ2MTc0NzI2OTc4NDE2MzZiMTAxMzFhMGM5MGI1MTgwMWIwYjUxODAxYzBiNTE4MDExMjIwMGExMjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjE2ZTYzNjU2YzEwMTQxYTA4OTBiNTE4MDFiMGI1MTgwMTEyMWYwYTE1NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTQ3ODUyNjU3MTc1NjU3Mzc0MTAxNTFhMDQ5OGI1MTgwMTEyMWIwYTExNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTQ3ODQxNjM2YjEwMTYxYTA0OTBiNTE4MDExMjI0MGExYTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjk3MDY4NjU3MjRiNjU3OTU2NjE2Yzc1NjUxMDE3MWEwNDkwYjUxODAxMTIyMjBhMTg0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzZjNjU2MTcyNTM2NTczNzM2OTZmNmUxMDE4MWEwNDkwYjUxODAxMTIyMzBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MTcwNzA2Yzc5NTM2NTc0NzQ2OTZlNjc3MzEwMTkxYTA0OTBiNTE4MDExMjIzMGExOTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQyNzU3NDc0NmY2ZTUyNjU3MTc1NjU3Mzc0MTAxYTFhMDQ5OGI1MTgwMTEyMjcwYTE1NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDI3NTc0NzQ2ZjZlNDE2MzZiMTAxYjFhMGM5MGI1MTgwMWIwYjUxODAxYzBiNTE4MDExMjIwMGExNjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQxNzA3MDZjNzk0NjZjNjE2NzczMTAxYzFhMDQ5MGI1MTgwMTEyMjAwYTE2NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDc2NTc0NDE2NDY0NzI2NTczNzMxMDFkMWEwNDkwYjUxODAxMTIxZDBhMTM0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MTY0NjQ3MjY1NzM3MzEwMWUxYTA0OThiNTE4MDExMjIyMGExNDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNjU2YzY2NTQ2NTczNzQxMDIwMWEwODkwYjUxODAxYjhiNTE4MDExMjIyMGExODRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQyNjE2MzZiNzU3MDQ0NjU3NjY5NjM2NTEwMjIxYTA0OTBiNTE4MDExMjI0MGExYTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ1NmU3NDcyNmY3MDc5NTI2NTcxNzU2NTczNzQxMDIzMWEwNDk4YjUxODAxMTIyMDBhMTY0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NTZlNzQ3MjZmNzA3OTQxNjM2YjEwMjQxYTA0OTBiNTE4MDExMjIxMGExNzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNjk2NzZlNGQ2NTczNzM2MTY3NjUxMDI2MWEwNDkwYjUxODAxMTIyMzBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1NjY1NzI2OTY2Nzk0ZDY1NzM3MzYxNjc2NTEwMjcxYTA0OTBiNTE4MDExMjI2MGExYzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRkNjU3MzczNjE2NzY1NTM2OTY3NmU2MTc0NzU3MjY1MTAyODFhMDQ5OGI1MTgwMTEyMjcwYTFkNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTA2MTczNzM3MDY4NzI2MTczNjU1MjY1NzE3NTY1NzM3NDEwMjkxYTA0OThiNTE4MDExMjJiMGExOTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUwNjE3MzczNzA2ODcyNjE3MzY1NDE2MzZiMTAyYTFhMGM5MGI1MTgwMWIwYjUxODAxYzBiNTE4MDExMjJjMGEyMjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUwNjE3MzczNzA2ODcyNjE3MzY1NTM3NDYxNzQ2NTUyNjU3MTc1NjU3Mzc0MTA0ZDFhMDQ5OGI1MTgwMTEyMzAwYTFlNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTA2MTczNzM3MDY4NzI2MTczNjU1Mzc0NjE3NDY1NDE2MzZiMTA0ZTFhMGM5MGI1MTgwMWIwYjUxODAxYzBiNTE4MDExMjI2MGExYTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ1NzM3NDY5NmQ2MTc0NjU1NDc4NTM2OTdhNjUxMDJiMWEwNjA4MDE5MGI1MTgwMTEyMWUwYTEyNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTQ3ODUzNjk3YTY1MTAyYzFhMDYwODAxOThiNTE4MDExMjI0MGExYTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUyNjU2MzZmNzY2NTcyNzk0NDY1NzY2OTYzNjUxMDJkMWEwNDkwYjUxODAxMTIyMTBhMTc0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1NzZmNzI2NDUyNjU3MTc1NjU3Mzc0MTAyZTFhMDQ5OGI1MTgwMTEyMWQwYTEzNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTc2ZjcyNjQ0MTYzNmIxMDJmMWEwNDkwYjUxODAxMTIyNjBhMWM0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzY5NzA2ODY1NzI2NTY0NGI2NTc5NTY2MTZjNzU2NTEwMzAxYTA0OThiNTE4MDExMjI2MGExYTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ1NmU2MzcyNzk3MDc0NGQ2NTczNzM2MTY3NjUxMDMxMWEwNjA4MDE5MGI1MTgwMTEyMjgwYTFjNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDU2ZTYzNzI3OTcwNzQ2NTY0NGQ2NTczNzM2MTY3NjUxMDMyMWEwNjA4MDE5OGI1MTgwMTEyMjYwYTFhNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDQ2NTYzNzI3OTcwNzQ0ZDY1NzM3MzYxNjc2NTEwMzMxYTA2MDgwMTkwYjUxODAxMTIyODBhMWM0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NDY1NjM3Mjc5NzA3NDY1NjQ0ZDY1NzM3MzYxNjc2NTEwMzQxYTA2MDgwMTk4YjUxODAxMTIyMjBhMTg0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1MzY5Njc2ZTQ5NjQ2NTZlNzQ2OTc0NzkxMDM1MWEwNDkwYjUxODAxMTIyNDBhMWE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1MzY5Njc2ZTY1NjQ0OTY0NjU2ZTc0Njk3NDc5MTAzNjFhMDQ5OGI1MTgwMTEyMjEwYTE3NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDc2NTc0NDY2NTYxNzQ3NTcyNjU3MzEwMzcxYTA0OTBiNTE4MDExMjI4MGExZTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ1NzQ2ODY1NzI2NTc1NmQ0NzY1NzQ0MTY0NjQ3MjY1NzM3MzEwMzgxYTA0OTBiNTE4MDExMjI1MGExYjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ1NzQ2ODY1NzI2NTc1NmQ0MTY0NjQ3MjY1NzM3MzEwMzkxYTA0OThiNTE4MDExMjI0MGExYTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ1NzQ2ODY1NzI2NTc1NmQ1MzY5Njc2ZTU0NzgxMDNhMWEwNDkwYjUxODAxMTIyNzBhMWQ0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NTc0Njg2NTcyNjU3NTZkNTQ3ODUyNjU3MTc1NjU3Mzc0MTAzYjFhMDQ5OGI1MTgwMTEyMjMwYTE5NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDU3NDY4NjU3MjY1NzU2ZDU0Nzg0MTYzNmIxMDNjMWEwNDkwYjUxODAxMTIyNzBhMWQ0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NzY1NzQ0NTQzNDQ0ODUzNjU3MzczNjk2ZjZlNGI2NTc5MTAzZDFhMDQ5MGI1MTgwMTEyMjQwYTFhNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDU0MzQ0NDg1MzY1NzM3MzY5NmY2ZTRiNjU3OTEwM2UxYTA0OThiNTE4MDExMjIzMGExOTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNjU3NDU1MzI0NjQzNmY3NTZlNzQ2NTcyMTAzZjFhMDQ5MGI1MTgwMTEyMjkwYTFmNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDU3NDY4NjU3MjY1NzU2ZDUzNjk2NzZlNGQ2NTczNzM2MTY3NjUxMDQwMWEwNDkwYjUxODAxMTIyYjBhMjE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NTc0Njg2NTcyNjU3NTZkNTY2NTcyNjk2Njc5NGQ2NTczNzM2MTY3NjUxMDQxMWEwNDkwYjUxODAxMTIyZTBhMjQ0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NTc0Njg2NTcyNjU3NTZkNGQ2NTczNzM2MTY3NjU1MzY5Njc2ZTYxNzQ3NTcyNjUxMDQyMWEwNDk4YjUxODAxMTIyMzBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0ZTQ1NGQ0NzY1NzQ0MTY0NjQ3MjY1NzM3MzEwNDMxYTA0OTBiNTE4MDExMjIwMGExNjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRlNDU0ZDQxNjQ2NDcyNjU3MzczMTA0NDFhMDQ5OGI1MTgwMTEyMWYwYTE1NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNGU0NTRkNTM2OTY3NmU1NDc4MTA0NTFhMDQ5MGI1MTgwMTEyMjEwYTE3NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNGU0NTRkNTM2OTY3NmU2NTY0NTQ3ODEwNDYxYTA0OThiNTE4MDExMjIwMGExNjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNmY3MzY5NDM2ZjZkNmQ2OTc0MTA0NzFhMDQ5MGI1MTgwMTEyMjQwYTFhNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDM2ZjczNjk0MzZmNmQ2ZDY5NzQ2ZDY1NmU3NDEwNDgxYTA0OThiNTE4MDExMjFlMGExNDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNmY3MzY5NTM2OTY3NmUxMDQ5MWEwNDkwYjUxODAxMTIyMzBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzZmNzM2OTUzNjk2NzZlNjE3NDc1NzI2NTEwNGExYTA0OThiNTE4MDExMjI3MGExZDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRlNDU0ZDQ0NjU2MzcyNzk3MDc0NGQ2NTczNzM2MTY3NjUxMDRiMWEwNDkwYjUxODAxMTIyOTBhMWY0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0ZTQ1NGQ0NDY1NjM3Mjc5NzA3NDY1NjQ0ZDY1NzM3MzYxNjc2NTEwNGMxYTA0OThiNTE4MDExMjJmMGExZDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ0NjU2Mjc1Njc0YzY5NmU2YjQ0NjU2MzY5NzM2OTZmNmUxMDY0MWEwY2EwYjUxODAxYjBiNTE4MDFjMGI1MTgwMTEyMmIwYTFkNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDQ2NTYyNzU2NzRjNjk2ZTZiNDc2NTc0NTM3NDYxNzQ2NTEwNjUxYTA4YTBiNTE4MDFiMGI1MTgwMTEyMjQwYTFhNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDQ2NTYyNzU2NzRjNjk2ZTZiNTM3NDYxNzQ2NTEwNjYxYTA0YThiNTE4MDExMjIzMGExOTRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQ0NjU2Mjc1Njc0YzY5NmU2YjUzNzQ2ZjcwMTA2NzFhMDRhMGI1MTgwMTEyMjIwYTE4NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDQ2NTYyNzU2NzRjNjk2ZTZiNGM2ZjY3MTA2ODFhMDRhOGI1MTgwMTEyMjkwYTFmNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDQ2NTYyNzU2NzRjNjk2ZTZiNGQ2NTZkNmY3Mjc5NTI2NTYxNjQxMDZlMWEwNGEwYjUxODAxMTIyNTBhMWI0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NDY1NjI3NTY3NGM2OTZlNmI0ZDY1NmQ2ZjcyNzkxMDZmMWEwNGE4YjUxODAxMTIyYTBhMjA0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0NDY1NjI3NTY3NGM2OTZlNmI0ZDY1NmQ2ZjcyNzk1NzcyNjk3NDY1MTA3MDFhMDRhMGI1MTgwMTEyMjkwYTFmNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDQ2NTYyNzU2NzRjNjk2ZTZiNDY2YzYxNzM2ODQ1NzI2MTczNjUxMDcxMWEwNGEwYjUxODAxMTIyOTBhMWU0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzYxNzI2NDYxNmU2ZjUzNjk2NzZlNGQ2NTczNzM2MTY3NjUxMGFjMDIxYTA0OTBiNTE4MDExMjJlMGEyMzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjE3MjY0NjE2ZTZmNGQ2NTczNzM2MTY3NjU1MzY5Njc2ZTYxNzQ3NTcyNjUxMGFkMDIxYTA0OThiNTE4MDExMjJiMGEyMDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjE3MjY0NjE2ZTZmNTY2NTcyNjk2Njc5NGQ2NTczNzM2MTY3NjUxMGFlMDIxYTA0OTBiNTE4MDExMjJkMGEyMjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjE3MjY0NjE2ZTZmNTM2OTY3NmU1NDcyNjE2ZTczNjE2Mzc0Njk2ZjZlMTBhZjAyMWEwNDkwYjUxODAxMTIyNzBhMWM0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzYxNzI2NDYxNmU2ZjU0Nzg1MjY1NzE3NTY1NzM3NDEwYjAwMjFhMDQ5OGI1MTgwMTEyMmEwYTFmNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNDM2MTcyNjQ2MTZlNmY0NzY1NzQ1MDc1NjI2YzY5NjM0YjY1NzkxMGIxMDIxYTA0OTBiNTE4MDExMjI3MGExYzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjE3MjY0NjE2ZTZmNTA3NTYyNmM2OTYzNGI2NTc5MTBiMjAyMWEwNDk4YjUxODAxMTIyODBhMWQ0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzYxNzI2NDYxNmU2ZjQ3NjU3NDQxNjQ2NDcyNjU3MzczMTBiMzAyMWEwNDkwYjUxODAxMTIyNTBhMWE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzYxNzI2NDYxNmU2ZjQxNjQ2NDcyNjU3MzczMTBiNDAyMWEwNDk4YjUxODAxMTIyMzBhMTg0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0MzYxNzI2NDYxNmU2ZjU0Nzg0MTYzNmIxMGI1MDIxYTA0OTBiNTE4MDExMjJmMGEyNDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjQzNjE3MjY0NjE2ZTZmNTM2OTY3NmU2NTY0NTQ3MjYxNmU3MzYxNjM3NDY5NmY2ZTEwYjYwMjFhMDQ5OGI1MTgwMTEyMjQwYTFhNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNGM2OTczNmI0NzY1NzQ0MTY0NjQ3MjY1NzM3MzEwNzIxYTA0OTBiNTE4MDExMjIxMGExNzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRjNjk3MzZiNDE2NDY0NzI2NTczNzMxMDczMWEwNDk4YjUxODAxMTIyMDBhMTY0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0YzY5NzM2YjUzNjk2NzZlNTQ3ODEwNzQxYTA0OTBiNTE4MDExMjIyMGExODRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRjNjk3MzZiNTM2OTY3NmU2NTY0NTQ3ODEwNzUxYTA0OThiNTE4MDExMjI1MGExYjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRjNjk3MzZiNTM2OTY3NmU0ZDY1NzM3MzYxNjc2NTEwNzYxYTA0OTBiNTE4MDExMjJhMGEyMDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjRjNjk3MzZiNGQ2NTczNzM2MTY3NjU1MzY5Njc2ZTYxNzQ3NTcyNjUxMDc3MWEwNDk4YjUxODAxMTIyNzBhMWQ0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0YzY5NzM2YjU2NjU3MjY5NjY3OTRkNjU3MzczNjE2NzY1MTA3ODFhMDQ5MGI1MTgwMTEyMjYwYTFjNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNGM2OTczNmI0NzY1NzQ1MDc1NjI2YzY5NjM0YjY1NzkxMDc5MWEwNDkwYjUxODAxMTIyMzBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY0YzY5NzM2YjUwNzU2MjZjNjk2MzRiNjU3OTEwN2ExYTA0OThiNTE4MDExMjI2MGExYjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjU0NjU3YTZmNzM0NzY1NzQ0MTY0NjQ3MjY1NzM3MzEwOTYwMTFhMDQ5MGI1MTgwMTEyMjMwYTE4NGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTQ2NTdhNmY3MzQxNjQ2NDcyNjU3MzczMTA5NzAxMWEwNDk4YjUxODAxMTIyMjBhMTc0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1NDY1N2E2ZjczNTM2OTY3NmU1NDc4MTA5ODAxMWEwNDkwYjUxODAxMTIyNDBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1NDY1N2E2ZjczNTM2OTY3NmU2NTY0NTQ3ODEwOTkwMTFhMDQ5OGI1MTgwMTEyMjgwYTFkNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTQ2NTdhNmY3MzQ3NjU3NDUwNzU2MjZjNjk2MzRiNjU3OTEwOWEwMTFhMDQ5MGI1MTgwMTEyMjUwYTFhNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTQ2NTdhNmY3MzUwNzU2MjZjNjk2MzRiNjU3OTEwOWIwMTFhMDQ5OGI1MTgwMTEyMmEwYTFmNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTM3NDY1NmM2YzYxNzI0NzY1NzQ1MDc1NjI2YzY5NjM0YjY1NzkxMGM4MDExYTA0OTBiNTE4MDExMjI3MGExYzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNTA3NTYyNmM2OTYzNGI2NTc5MTBjOTAxMWEwNDk4YjUxODAxMTIyNDBhMTk0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1Mzc0NjU2YzZjNjE3MjUzNjk2NzZlNTQ3ODEwY2EwMTFhMDQ5MGI1MTgwMTEyMjkwYTFlNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTM3NDY1NmM2YzYxNzI1NDc4NGY3MDUyNjU3MTc1NjU3Mzc0MTBjYjAxMWEwNDk4YjUxODAxMTIyODBhMWQ0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1Mzc0NjU2YzZjNjE3MjQ3NjU3NDQxNjQ2NDcyNjU3MzczMTBjZjAxMWEwNDkwYjUxODAxMTIyNTBhMWE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1Mzc0NjU2YzZjNjE3MjQxNjQ2NDcyNjU3MzczMTBkMDAxMWEwNDk4YjUxODAxMTIyZDBhMjI0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1Mzc0NjU2YzZjNjE3MjQzNzI2NTYxNzQ2NTQxNjM2MzZmNzU2ZTc0NGY3MDEwZDIwMTFhMDQ5MGI1MTgwMTEyMjcwYTFjNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTM3NDY1NmM2YzYxNzI1MDYxNzk2ZDY1NmU3NDRmNzAxMGQzMDExYTA0OTBiNTE4MDExMjJiMGEyMDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNTA2MTc0Njg1MDYxNzk2ZDY1NmU3NDRmNzAxMGQ0MDExYTA0OTBiNTE4MDExMjJiMGEyMDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNGQ2MTZlNjE2NzY1NGY2NjY2NjU3MjRmNzAxMGQ1MDExYTA0OTBiNTE4MDExMjMyMGEyNzRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNDM3MjY1NjE3NDY1NTA2MTczNzM2OTc2NjU0ZjY2NjY2NTcyNGY3MDEwZDYwMTFhMDQ5MGI1MTgwMTEyMmEwYTFmNGQ2NTczNzM2MTY3NjU1NDc5NzA2NTVmNTM3NDY1NmM2YzYxNzI1MzY1NzQ0ZjcwNzQ2OTZmNmU3MzRmNzAxMGQ3MDExYTA0OTBiNTE4MDExMjJiMGEyMDRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNDM2ODYxNmU2NzY1NTQ3Mjc1NzM3NDRmNzAxMGQ4MDExYTA0OTBiNTE4MDExMjJhMGExZjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNDE2YzZjNmY3NzU0NzI3NTczNzQ0ZjcwMTBkOTAxMWEwNDkwYjUxODAxMTIyYzBhMjE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1Mzc0NjU2YzZjNjE3MjQxNjM2MzZmNzU2ZTc0NGQ2NTcyNjc2NTRmNzAxMGRhMDExYTA0OTBiNTE4MDExMjJhMGExZjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNGQ2MTZlNjE2NzY1NDQ2MTc0NjE0ZjcwMTBkYzAxMWEwNDkwYjUxODAxMTIyYzBhMjE0ZDY1NzM3MzYxNjc2NTU0Nzk3MDY1NWY1Mzc0NjU2YzZjNjE3MjQyNzU2ZDcwNTM2NTcxNzU2NTZlNjM2NTRmNzAxMGRkMDExYTA0OTBiNTE4MDExMjI2MGExYjRkNjU3MzczNjE2NzY1NTQ3OTcwNjU1ZjUzNzQ2NTZjNmM2MTcyNTM2OTY3NmU2NTY0NTQ3ODEwZTYwMTFhMDQ5OGI1MTgwMTQyMzQwYTIzNjM2ZjZkMmU3MzYxNzQ2ZjczNjg2OTZjNjE2MjczMmU3NDcyNjU3YTZmNzIyZTZjNjk2MjJlNzA3MjZmNzQ2ZjYyNzU2NjQyMGQ1NDcyNjU3YTZmNzI0ZDY1NzM3MzYxNjc2NTIyMDYwOGNjYTYwMTEwMDEyMjA3MDg4OTI0MTBjMGE3MDEyMjA3MDg4OTI0MTBjMWE3MDEyOGZmZmZmZmZmMDdcIjsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMudWRldkluc3RhbGxlcnMgPSBleHBvcnRzLmxhdGVzdFZlcnNpb24gPSBleHBvcnRzLmluc3RhbGxlcnMgPSBleHBvcnRzLkRldmljZUxpc3QgPSBleHBvcnRzLkRlc2NyaXB0b3JTdHJlYW0gPSBleHBvcnRzLkRldmljZSA9IGV4cG9ydHMuVW5hY3F1aXJlZERldmljZSA9IGV4cG9ydHMuU2Vzc2lvbiA9IHVuZGVmaW5lZDtcblxudmFyIF9zZXNzaW9uID0gcmVxdWlyZSgnLi9zZXNzaW9uJyk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnU2Vzc2lvbicsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2Vzc2lvbikuZGVmYXVsdDtcbiAgICB9XG59KTtcblxudmFyIF91bmFjcXVpcmVkRGV2aWNlID0gcmVxdWlyZSgnLi91bmFjcXVpcmVkLWRldmljZScpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ1VuYWNxdWlyZWREZXZpY2UnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3VuYWNxdWlyZWREZXZpY2UpLmRlZmF1bHQ7XG4gICAgfVxufSk7XG5cbnZhciBfZGV2aWNlID0gcmVxdWlyZSgnLi9kZXZpY2UnKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdEZXZpY2UnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2RldmljZSkuZGVmYXVsdDtcbiAgICB9XG59KTtcblxudmFyIF9kZXNjcmlwdG9yU3RyZWFtID0gcmVxdWlyZSgnLi9kZXNjcmlwdG9yLXN0cmVhbScpO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ0Rlc2NyaXB0b3JTdHJlYW0nLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Rlc2NyaXB0b3JTdHJlYW0pLmRlZmF1bHQ7XG4gICAgfVxufSk7XG5cbnZhciBfZGV2aWNlTGlzdCA9IHJlcXVpcmUoJy4vZGV2aWNlLWxpc3QnKTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdEZXZpY2VMaXN0Jywge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9kZXZpY2VMaXN0KS5kZWZhdWx0O1xuICAgIH1cbn0pO1xuZXhwb3J0cy5zZXRTaGFyZWRXb3JrZXJGYWN0b3J5ID0gc2V0U2hhcmVkV29ya2VyRmFjdG9yeTtcblxudmFyIF9pbnN0YWxsZXJzID0gcmVxdWlyZSgnLi9pbnN0YWxsZXJzJyk7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnaW5zdGFsbGVycycsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gX2luc3RhbGxlcnMuaW5zdGFsbGVycztcbiAgICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnbGF0ZXN0VmVyc2lvbicsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gX2luc3RhbGxlcnMubGF0ZXN0VmVyc2lvbjtcbiAgICB9XG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAndWRldkluc3RhbGxlcnMnLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIF9pbnN0YWxsZXJzLnVkZXZJbnN0YWxsZXJzO1xuICAgIH1cbn0pO1xuXG5yZXF1aXJlKCd3aGF0d2ctZmV0Y2gnKTtcblxucmVxdWlyZSgndW5vcm0nKTtcblxudmFyIF90cmV6b3JMaW5rID0gcmVxdWlyZSgndHJlem9yLWxpbmsnKTtcblxudmFyIF90cmV6b3JMaW5rMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3RyZXpvckxpbmspO1xuXG52YXIgX2RldmljZUxpc3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGV2aWNlTGlzdCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBCcmlkZ2VWMiA9IF90cmV6b3JMaW5rMi5kZWZhdWx0LkJyaWRnZVYyLFxuICAgIExvd2xldmVsID0gX3RyZXpvckxpbmsyLmRlZmF1bHQuTG93bGV2ZWwsXG4gICAgV2ViVXNiID0gX3RyZXpvckxpbmsyLmRlZmF1bHQuV2ViVXNiLFxuICAgIEZhbGxiYWNrID0gX3RyZXpvckxpbmsyLmRlZmF1bHQuRmFsbGJhY2s7XG5cblxudmFyIHNoYXJlZFdvcmtlckZhY3RvcnkgPSBudWxsO1xuZnVuY3Rpb24gc2V0U2hhcmVkV29ya2VyRmFjdG9yeShzd2YpIHtcbiAgICBzaGFyZWRXb3JrZXJGYWN0b3J5ID0gc3dmO1xufVxuXG5mdW5jdGlvbiBzaGFyZWRXb3JrZXJGYWN0b3J5V3JhcCgpIHtcbiAgICBpZiAoc2hhcmVkV29ya2VyRmFjdG9yeSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBzaGFyZWRXb3JrZXJGYWN0b3J5KCk7XG4gICAgfVxufVxuXG5fZGV2aWNlTGlzdDIuZGVmYXVsdC5fc2V0Tm9kZShmYWxzZSk7XG5cbl9kZXZpY2VMaXN0Mi5kZWZhdWx0Ll9zZXRUcmFuc3BvcnQoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBuZXcgRmFsbGJhY2soW25ldyBCcmlkZ2VWMigpLCBuZXcgTG93bGV2ZWwobmV3IFdlYlVzYigpLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBzaGFyZWRXb3JrZXJGYWN0b3J5V3JhcCgpO1xuICAgIH0pXSk7XG59KTtcblxuX2RldmljZUxpc3QyLmRlZmF1bHQuX3NldEZldGNoKHdpbmRvdy5mZXRjaCk7XG4oMCwgX2luc3RhbGxlcnMuc2V0RmV0Y2gpKHdpbmRvdy5mZXRjaCk7IiwiJ3VzZSBzdHJpY3QnXG5cbmV4cG9ydHMuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcbmV4cG9ydHMudG9CeXRlQXJyYXkgPSB0b0J5dGVBcnJheVxuZXhwb3J0cy5mcm9tQnl0ZUFycmF5ID0gZnJvbUJ5dGVBcnJheVxuXG52YXIgbG9va3VwID0gW11cbnZhciByZXZMb29rdXAgPSBbXVxudmFyIEFyciA9IHR5cGVvZiBVaW50OEFycmF5ICE9PSAndW5kZWZpbmVkJyA/IFVpbnQ4QXJyYXkgOiBBcnJheVxuXG52YXIgY29kZSA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJ1xuZm9yICh2YXIgaSA9IDAsIGxlbiA9IGNvZGUubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHtcbiAgbG9va3VwW2ldID0gY29kZVtpXVxuICByZXZMb29rdXBbY29kZS5jaGFyQ29kZUF0KGkpXSA9IGlcbn1cblxuLy8gU3VwcG9ydCBkZWNvZGluZyBVUkwtc2FmZSBiYXNlNjQgc3RyaW5ncywgYXMgTm9kZS5qcyBkb2VzLlxuLy8gU2VlOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNlNjQjVVJMX2FwcGxpY2F0aW9uc1xucmV2TG9va3VwWyctJy5jaGFyQ29kZUF0KDApXSA9IDYyXG5yZXZMb29rdXBbJ18nLmNoYXJDb2RlQXQoMCldID0gNjNcblxuZnVuY3Rpb24gZ2V0TGVucyAoYjY0KSB7XG4gIHZhciBsZW4gPSBiNjQubGVuZ3RoXG5cbiAgaWYgKGxlbiAlIDQgPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHN0cmluZy4gTGVuZ3RoIG11c3QgYmUgYSBtdWx0aXBsZSBvZiA0JylcbiAgfVxuXG4gIC8vIFRyaW0gb2ZmIGV4dHJhIGJ5dGVzIGFmdGVyIHBsYWNlaG9sZGVyIGJ5dGVzIGFyZSBmb3VuZFxuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9iZWF0Z2FtbWl0L2Jhc2U2NC1qcy9pc3N1ZXMvNDJcbiAgdmFyIHZhbGlkTGVuID0gYjY0LmluZGV4T2YoJz0nKVxuICBpZiAodmFsaWRMZW4gPT09IC0xKSB2YWxpZExlbiA9IGxlblxuXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSB2YWxpZExlbiA9PT0gbGVuXG4gICAgPyAwXG4gICAgOiA0IC0gKHZhbGlkTGVuICUgNClcblxuICByZXR1cm4gW3ZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW5dXG59XG5cbi8vIGJhc2U2NCBpcyA0LzMgKyB1cCB0byB0d28gY2hhcmFjdGVycyBvZiB0aGUgb3JpZ2luYWwgZGF0YVxuZnVuY3Rpb24gYnl0ZUxlbmd0aCAoYjY0KSB7XG4gIHZhciBsZW5zID0gZ2V0TGVucyhiNjQpXG4gIHZhciB2YWxpZExlbiA9IGxlbnNbMF1cbiAgdmFyIHBsYWNlSG9sZGVyc0xlbiA9IGxlbnNbMV1cbiAgcmV0dXJuICgodmFsaWRMZW4gKyBwbGFjZUhvbGRlcnNMZW4pICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzTGVuXG59XG5cbmZ1bmN0aW9uIF9ieXRlTGVuZ3RoIChiNjQsIHZhbGlkTGVuLCBwbGFjZUhvbGRlcnNMZW4pIHtcbiAgcmV0dXJuICgodmFsaWRMZW4gKyBwbGFjZUhvbGRlcnNMZW4pICogMyAvIDQpIC0gcGxhY2VIb2xkZXJzTGVuXG59XG5cbmZ1bmN0aW9uIHRvQnl0ZUFycmF5IChiNjQpIHtcbiAgdmFyIHRtcFxuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG5cbiAgdmFyIGFyciA9IG5ldyBBcnIoX2J5dGVMZW5ndGgoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSlcblxuICB2YXIgY3VyQnl0ZSA9IDBcblxuICAvLyBpZiB0aGVyZSBhcmUgcGxhY2Vob2xkZXJzLCBvbmx5IGdldCB1cCB0byB0aGUgbGFzdCBjb21wbGV0ZSA0IGNoYXJzXG4gIHZhciBsZW4gPSBwbGFjZUhvbGRlcnNMZW4gPiAwXG4gICAgPyB2YWxpZExlbiAtIDRcbiAgICA6IHZhbGlkTGVuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayhcbiAgICAgIHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aClcbiAgICApKVxuICB9XG5cbiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlc1xuICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9IHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXSArXG4gICAgICAnPT0nXG4gICAgKVxuICB9IGVsc2UgaWYgKGV4dHJhQnl0ZXMgPT09IDIpIHtcbiAgICB0bXAgPSAodWludDhbbGVuIC0gMl0gPDwgOCkgKyB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDEwXSArXG4gICAgICBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl0gK1xuICAgICAgJz0nXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpXG59XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbi8vIFRoaXMgbWV0aG9kIG9mIG9idGFpbmluZyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdCBuZWVkcyB0byBiZVxuLy8ga2VwdCBpZGVudGljYWwgdG8gdGhlIHdheSBpdCBpcyBvYnRhaW5lZCBpbiBydW50aW1lLmpzXG52YXIgZyA9IChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXMgfSkoKSB8fCBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG5cbi8vIFVzZSBgZ2V0T3duUHJvcGVydHlOYW1lc2AgYmVjYXVzZSBub3QgYWxsIGJyb3dzZXJzIHN1cHBvcnQgY2FsbGluZ1xuLy8gYGhhc093blByb3BlcnR5YCBvbiB0aGUgZ2xvYmFsIGBzZWxmYCBvYmplY3QgaW4gYSB3b3JrZXIuIFNlZSAjMTgzLlxudmFyIGhhZFJ1bnRpbWUgPSBnLnJlZ2VuZXJhdG9yUnVudGltZSAmJlxuICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhnKS5pbmRleE9mKFwicmVnZW5lcmF0b3JSdW50aW1lXCIpID49IDA7XG5cbi8vIFNhdmUgdGhlIG9sZCByZWdlbmVyYXRvclJ1bnRpbWUgaW4gY2FzZSBpdCBuZWVkcyB0byBiZSByZXN0b3JlZCBsYXRlci5cbnZhciBvbGRSdW50aW1lID0gaGFkUnVudGltZSAmJiBnLnJlZ2VuZXJhdG9yUnVudGltZTtcblxuLy8gRm9yY2UgcmVldmFsdXRhdGlvbiBvZiBydW50aW1lLmpzLlxuZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSB1bmRlZmluZWQ7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIi4vcnVudGltZVwiKTtcblxuaWYgKGhhZFJ1bnRpbWUpIHtcbiAgLy8gUmVzdG9yZSB0aGUgb3JpZ2luYWwgcnVudGltZS5cbiAgZy5yZWdlbmVyYXRvclJ1bnRpbWUgPSBvbGRSdW50aW1lO1xufSBlbHNlIHtcbiAgLy8gUmVtb3ZlIHRoZSBnbG9iYWwgcHJvcGVydHkgYWRkZWQgYnkgcnVudGltZS5qcy5cbiAgdHJ5IHtcbiAgICBkZWxldGUgZy5yZWdlbmVyYXRvclJ1bnRpbWU7XG4gIH0gY2F0Y2goZSkge1xuICAgIGcucmVnZW5lcmF0b3JSdW50aW1lID0gdW5kZWZpbmVkO1xuICB9XG59XG4iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbiEoZnVuY3Rpb24oZ2xvYmFsKSB7XG4gIFwidXNlIHN0cmljdFwiO1xuXG4gIHZhciBPcCA9IE9iamVjdC5wcm90b3R5cGU7XG4gIHZhciBoYXNPd24gPSBPcC5oYXNPd25Qcm9wZXJ0eTtcbiAgdmFyIHVuZGVmaW5lZDsgLy8gTW9yZSBjb21wcmVzc2libGUgdGhhbiB2b2lkIDAuXG4gIHZhciAkU3ltYm9sID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiID8gU3ltYm9sIDoge307XG4gIHZhciBpdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuaXRlcmF0b3IgfHwgXCJAQGl0ZXJhdG9yXCI7XG4gIHZhciBhc3luY0l0ZXJhdG9yU3ltYm9sID0gJFN5bWJvbC5hc3luY0l0ZXJhdG9yIHx8IFwiQEBhc3luY0l0ZXJhdG9yXCI7XG4gIHZhciB0b1N0cmluZ1RhZ1N5bWJvbCA9ICRTeW1ib2wudG9TdHJpbmdUYWcgfHwgXCJAQHRvU3RyaW5nVGFnXCI7XG5cbiAgdmFyIGluTW9kdWxlID0gdHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIjtcbiAgdmFyIHJ1bnRpbWUgPSBnbG9iYWwucmVnZW5lcmF0b3JSdW50aW1lO1xuICBpZiAocnVudGltZSkge1xuICAgIGlmIChpbk1vZHVsZSkge1xuICAgICAgLy8gSWYgcmVnZW5lcmF0b3JSdW50aW1lIGlzIGRlZmluZWQgZ2xvYmFsbHkgYW5kIHdlJ3JlIGluIGEgbW9kdWxlLFxuICAgICAgLy8gbWFrZSB0aGUgZXhwb3J0cyBvYmplY3QgaWRlbnRpY2FsIHRvIHJlZ2VuZXJhdG9yUnVudGltZS5cbiAgICAgIG1vZHVsZS5leHBvcnRzID0gcnVudGltZTtcbiAgICB9XG4gICAgLy8gRG9uJ3QgYm90aGVyIGV2YWx1YXRpbmcgdGhlIHJlc3Qgb2YgdGhpcyBmaWxlIGlmIHRoZSBydW50aW1lIHdhc1xuICAgIC8vIGFscmVhZHkgZGVmaW5lZCBnbG9iYWxseS5cbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBEZWZpbmUgdGhlIHJ1bnRpbWUgZ2xvYmFsbHkgKGFzIGV4cGVjdGVkIGJ5IGdlbmVyYXRlZCBjb2RlKSBhcyBlaXRoZXJcbiAgLy8gbW9kdWxlLmV4cG9ydHMgKGlmIHdlJ3JlIGluIGEgbW9kdWxlKSBvciBhIG5ldywgZW1wdHkgb2JqZWN0LlxuICBydW50aW1lID0gZ2xvYmFsLnJlZ2VuZXJhdG9yUnVudGltZSA9IGluTW9kdWxlID8gbW9kdWxlLmV4cG9ydHMgOiB7fTtcblxuICBmdW5jdGlvbiB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gSWYgb3V0ZXJGbiBwcm92aWRlZCBhbmQgb3V0ZXJGbi5wcm90b3R5cGUgaXMgYSBHZW5lcmF0b3IsIHRoZW4gb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IuXG4gICAgdmFyIHByb3RvR2VuZXJhdG9yID0gb3V0ZXJGbiAmJiBvdXRlckZuLnByb3RvdHlwZSBpbnN0YW5jZW9mIEdlbmVyYXRvciA/IG91dGVyRm4gOiBHZW5lcmF0b3I7XG4gICAgdmFyIGdlbmVyYXRvciA9IE9iamVjdC5jcmVhdGUocHJvdG9HZW5lcmF0b3IucHJvdG90eXBlKTtcbiAgICB2YXIgY29udGV4dCA9IG5ldyBDb250ZXh0KHRyeUxvY3NMaXN0IHx8IFtdKTtcblxuICAgIC8vIFRoZSAuX2ludm9rZSBtZXRob2QgdW5pZmllcyB0aGUgaW1wbGVtZW50YXRpb25zIG9mIHRoZSAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMuXG4gICAgZ2VuZXJhdG9yLl9pbnZva2UgPSBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRvcjtcbiAgfVxuICBydW50aW1lLndyYXAgPSB3cmFwO1xuXG4gIC8vIFRyeS9jYXRjaCBoZWxwZXIgdG8gbWluaW1pemUgZGVvcHRpbWl6YXRpb25zLiBSZXR1cm5zIGEgY29tcGxldGlvblxuICAvLyByZWNvcmQgbGlrZSBjb250ZXh0LnRyeUVudHJpZXNbaV0uY29tcGxldGlvbi4gVGhpcyBpbnRlcmZhY2UgY291bGRcbiAgLy8gaGF2ZSBiZWVuIChhbmQgd2FzIHByZXZpb3VzbHkpIGRlc2lnbmVkIHRvIHRha2UgYSBjbG9zdXJlIHRvIGJlXG4gIC8vIGludm9rZWQgd2l0aG91dCBhcmd1bWVudHMsIGJ1dCBpbiBhbGwgdGhlIGNhc2VzIHdlIGNhcmUgYWJvdXQgd2VcbiAgLy8gYWxyZWFkeSBoYXZlIGFuIGV4aXN0aW5nIG1ldGhvZCB3ZSB3YW50IHRvIGNhbGwsIHNvIHRoZXJlJ3Mgbm8gbmVlZFxuICAvLyB0byBjcmVhdGUgYSBuZXcgZnVuY3Rpb24gb2JqZWN0LiBXZSBjYW4gZXZlbiBnZXQgYXdheSB3aXRoIGFzc3VtaW5nXG4gIC8vIHRoZSBtZXRob2QgdGFrZXMgZXhhY3RseSBvbmUgYXJndW1lbnQsIHNpbmNlIHRoYXQgaGFwcGVucyB0byBiZSB0cnVlXG4gIC8vIGluIGV2ZXJ5IGNhc2UsIHNvIHdlIGRvbid0IGhhdmUgdG8gdG91Y2ggdGhlIGFyZ3VtZW50cyBvYmplY3QuIFRoZVxuICAvLyBvbmx5IGFkZGl0aW9uYWwgYWxsb2NhdGlvbiByZXF1aXJlZCBpcyB0aGUgY29tcGxldGlvbiByZWNvcmQsIHdoaWNoXG4gIC8vIGhhcyBhIHN0YWJsZSBzaGFwZSBhbmQgc28gaG9wZWZ1bGx5IHNob3VsZCBiZSBjaGVhcCB0byBhbGxvY2F0ZS5cbiAgZnVuY3Rpb24gdHJ5Q2F0Y2goZm4sIG9iaiwgYXJnKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwibm9ybWFsXCIsIGFyZzogZm4uY2FsbChvYmosIGFyZykgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiB7IHR5cGU6IFwidGhyb3dcIiwgYXJnOiBlcnIgfTtcbiAgICB9XG4gIH1cblxuICB2YXIgR2VuU3RhdGVTdXNwZW5kZWRTdGFydCA9IFwic3VzcGVuZGVkU3RhcnRcIjtcbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkWWllbGQgPSBcInN1c3BlbmRlZFlpZWxkXCI7XG4gIHZhciBHZW5TdGF0ZUV4ZWN1dGluZyA9IFwiZXhlY3V0aW5nXCI7XG4gIHZhciBHZW5TdGF0ZUNvbXBsZXRlZCA9IFwiY29tcGxldGVkXCI7XG5cbiAgLy8gUmV0dXJuaW5nIHRoaXMgb2JqZWN0IGZyb20gdGhlIGlubmVyRm4gaGFzIHRoZSBzYW1lIGVmZmVjdCBhc1xuICAvLyBicmVha2luZyBvdXQgb2YgdGhlIGRpc3BhdGNoIHN3aXRjaCBzdGF0ZW1lbnQuXG4gIHZhciBDb250aW51ZVNlbnRpbmVsID0ge307XG5cbiAgLy8gRHVtbXkgY29uc3RydWN0b3IgZnVuY3Rpb25zIHRoYXQgd2UgdXNlIGFzIHRoZSAuY29uc3RydWN0b3IgYW5kXG4gIC8vIC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUgcHJvcGVydGllcyBmb3IgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIEdlbmVyYXRvclxuICAvLyBvYmplY3RzLiBGb3IgZnVsbCBzcGVjIGNvbXBsaWFuY2UsIHlvdSBtYXkgd2lzaCB0byBjb25maWd1cmUgeW91clxuICAvLyBtaW5pZmllciBub3QgdG8gbWFuZ2xlIHRoZSBuYW1lcyBvZiB0aGVzZSB0d28gZnVuY3Rpb25zLlxuICBmdW5jdGlvbiBHZW5lcmF0b3IoKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvbigpIHt9XG4gIGZ1bmN0aW9uIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKCkge31cblxuICAvLyBUaGlzIGlzIGEgcG9seWZpbGwgZm9yICVJdGVyYXRvclByb3RvdHlwZSUgZm9yIGVudmlyb25tZW50cyB0aGF0XG4gIC8vIGRvbid0IG5hdGl2ZWx5IHN1cHBvcnQgaXQuXG4gIHZhciBJdGVyYXRvclByb3RvdHlwZSA9IHt9O1xuICBJdGVyYXRvclByb3RvdHlwZVtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgdmFyIGdldFByb3RvID0gT2JqZWN0LmdldFByb3RvdHlwZU9mO1xuICB2YXIgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgPSBnZXRQcm90byAmJiBnZXRQcm90byhnZXRQcm90byh2YWx1ZXMoW10pKSk7XG4gIGlmIChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAmJlxuICAgICAgTmF0aXZlSXRlcmF0b3JQcm90b3R5cGUgIT09IE9wICYmXG4gICAgICBoYXNPd24uY2FsbChOYXRpdmVJdGVyYXRvclByb3RvdHlwZSwgaXRlcmF0b3JTeW1ib2wpKSB7XG4gICAgLy8gVGhpcyBlbnZpcm9ubWVudCBoYXMgYSBuYXRpdmUgJUl0ZXJhdG9yUHJvdG90eXBlJTsgdXNlIGl0IGluc3RlYWRcbiAgICAvLyBvZiB0aGUgcG9seWZpbGwuXG4gICAgSXRlcmF0b3JQcm90b3R5cGUgPSBOYXRpdmVJdGVyYXRvclByb3RvdHlwZTtcbiAgfVxuXG4gIHZhciBHcCA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlLnByb3RvdHlwZSA9XG4gICAgR2VuZXJhdG9yLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSXRlcmF0b3JQcm90b3R5cGUpO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5wcm90b3R5cGUgPSBHcC5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IEdlbmVyYXRvckZ1bmN0aW9uO1xuICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZVt0b1N0cmluZ1RhZ1N5bWJvbF0gPVxuICAgIEdlbmVyYXRvckZ1bmN0aW9uLmRpc3BsYXlOYW1lID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuXG4gIC8vIEhlbHBlciBmb3IgZGVmaW5pbmcgdGhlIC5uZXh0LCAudGhyb3csIGFuZCAucmV0dXJuIG1ldGhvZHMgb2YgdGhlXG4gIC8vIEl0ZXJhdG9yIGludGVyZmFjZSBpbiB0ZXJtcyBvZiBhIHNpbmdsZSAuX2ludm9rZSBtZXRob2QuXG4gIGZ1bmN0aW9uIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhwcm90b3R5cGUpIHtcbiAgICBbXCJuZXh0XCIsIFwidGhyb3dcIiwgXCJyZXR1cm5cIl0uZm9yRWFjaChmdW5jdGlvbihtZXRob2QpIHtcbiAgICAgIHByb3RvdHlwZVttZXRob2RdID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnZva2UobWV0aG9kLCBhcmcpO1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHJ1bnRpbWUuaXNHZW5lcmF0b3JGdW5jdGlvbiA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIHZhciBjdG9yID0gdHlwZW9mIGdlbkZ1biA9PT0gXCJmdW5jdGlvblwiICYmIGdlbkZ1bi5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gY3RvclxuICAgICAgPyBjdG9yID09PSBHZW5lcmF0b3JGdW5jdGlvbiB8fFxuICAgICAgICAvLyBGb3IgdGhlIG5hdGl2ZSBHZW5lcmF0b3JGdW5jdGlvbiBjb25zdHJ1Y3RvciwgdGhlIGJlc3Qgd2UgY2FuXG4gICAgICAgIC8vIGRvIGlzIHRvIGNoZWNrIGl0cyAubmFtZSBwcm9wZXJ0eS5cbiAgICAgICAgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSA9PT0gXCJHZW5lcmF0b3JGdW5jdGlvblwiXG4gICAgICA6IGZhbHNlO1xuICB9O1xuXG4gIHJ1bnRpbWUubWFyayA9IGZ1bmN0aW9uKGdlbkZ1bikge1xuICAgIGlmIChPYmplY3Quc2V0UHJvdG90eXBlT2YpIHtcbiAgICAgIE9iamVjdC5zZXRQcm90b3R5cGVPZihnZW5GdW4sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2VuRnVuLl9fcHJvdG9fXyA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICAgICAgaWYgKCEodG9TdHJpbmdUYWdTeW1ib2wgaW4gZ2VuRnVuKSkge1xuICAgICAgICBnZW5GdW5bdG9TdHJpbmdUYWdTeW1ib2xdID0gXCJHZW5lcmF0b3JGdW5jdGlvblwiO1xuICAgICAgfVxuICAgIH1cbiAgICBnZW5GdW4ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShHcCk7XG4gICAgcmV0dXJuIGdlbkZ1bjtcbiAgfTtcblxuICAvLyBXaXRoaW4gdGhlIGJvZHkgb2YgYW55IGFzeW5jIGZ1bmN0aW9uLCBgYXdhaXQgeGAgaXMgdHJhbnNmb3JtZWQgdG9cbiAgLy8gYHlpZWxkIHJlZ2VuZXJhdG9yUnVudGltZS5hd3JhcCh4KWAsIHNvIHRoYXQgdGhlIHJ1bnRpbWUgY2FuIHRlc3RcbiAgLy8gYGhhc093bi5jYWxsKHZhbHVlLCBcIl9fYXdhaXRcIilgIHRvIGRldGVybWluZSBpZiB0aGUgeWllbGRlZCB2YWx1ZSBpc1xuICAvLyBtZWFudCB0byBiZSBhd2FpdGVkLlxuICBydW50aW1lLmF3cmFwID0gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHsgX19hd2FpdDogYXJnIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gQXN5bmNJdGVyYXRvcihnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHJlY29yZCA9IHRyeUNhdGNoKGdlbmVyYXRvclttZXRob2RdLCBnZW5lcmF0b3IsIGFyZyk7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICByZWplY3QocmVjb3JkLmFyZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcmVzdWx0ID0gcmVjb3JkLmFyZztcbiAgICAgICAgdmFyIHZhbHVlID0gcmVzdWx0LnZhbHVlO1xuICAgICAgICBpZiAodmFsdWUgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwodmFsdWUsIFwiX19hd2FpdFwiKSkge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24odW53cmFwcGVkKSB7XG4gICAgICAgICAgLy8gV2hlbiBhIHlpZWxkZWQgUHJvbWlzZSBpcyByZXNvbHZlZCwgaXRzIGZpbmFsIHZhbHVlIGJlY29tZXNcbiAgICAgICAgICAvLyB0aGUgLnZhbHVlIG9mIHRoZSBQcm9taXNlPHt2YWx1ZSxkb25lfT4gcmVzdWx0IGZvciB0aGVcbiAgICAgICAgICAvLyBjdXJyZW50IGl0ZXJhdGlvbi4gSWYgdGhlIFByb21pc2UgaXMgcmVqZWN0ZWQsIGhvd2V2ZXIsIHRoZVxuICAgICAgICAgIC8vIHJlc3VsdCBmb3IgdGhpcyBpdGVyYXRpb24gd2lsbCBiZSByZWplY3RlZCB3aXRoIHRoZSBzYW1lXG4gICAgICAgICAgLy8gcmVhc29uLiBOb3RlIHRoYXQgcmVqZWN0aW9ucyBvZiB5aWVsZGVkIFByb21pc2VzIGFyZSBub3RcbiAgICAgICAgICAvLyB0aHJvd24gYmFjayBpbnRvIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24sIGFzIGlzIHRoZSBjYXNlXG4gICAgICAgICAgLy8gd2hlbiBhbiBhd2FpdGVkIFByb21pc2UgaXMgcmVqZWN0ZWQuIFRoaXMgZGlmZmVyZW5jZSBpblxuICAgICAgICAgIC8vIGJlaGF2aW9yIGJldHdlZW4geWllbGQgYW5kIGF3YWl0IGlzIGltcG9ydGFudCwgYmVjYXVzZSBpdFxuICAgICAgICAgIC8vIGFsbG93cyB0aGUgY29uc3VtZXIgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aCB0aGUgeWllbGRlZFxuICAgICAgICAgIC8vIHJlamVjdGlvbiAoc3dhbGxvdyBpdCBhbmQgY29udGludWUsIG1hbnVhbGx5IC50aHJvdyBpdCBiYWNrXG4gICAgICAgICAgLy8gaW50byB0aGUgZ2VuZXJhdG9yLCBhYmFuZG9uIGl0ZXJhdGlvbiwgd2hhdGV2ZXIpLiBXaXRoXG4gICAgICAgICAgLy8gYXdhaXQsIGJ5IGNvbnRyYXN0LCB0aGVyZSBpcyBubyBvcHBvcnR1bml0eSB0byBleGFtaW5lIHRoZVxuICAgICAgICAgIC8vIHJlamVjdGlvbiByZWFzb24gb3V0c2lkZSB0aGUgZ2VuZXJhdG9yIGZ1bmN0aW9uLCBzbyB0aGVcbiAgICAgICAgICAvLyBvbmx5IG9wdGlvbiBpcyB0byB0aHJvdyBpdCBmcm9tIHRoZSBhd2FpdCBleHByZXNzaW9uLCBhbmRcbiAgICAgICAgICAvLyBsZXQgdGhlIGdlbmVyYXRvciBmdW5jdGlvbiBoYW5kbGUgdGhlIGV4Y2VwdGlvbi5cbiAgICAgICAgICByZXN1bHQudmFsdWUgPSB1bndyYXBwZWQ7XG4gICAgICAgICAgcmVzb2x2ZShyZXN1bHQpO1xuICAgICAgICB9LCByZWplY3QpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcmV2aW91c1Byb21pc2UgPVxuICAgICAgICAvLyBJZiBlbnF1ZXVlIGhhcyBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gd2Ugd2FudCB0byB3YWl0IHVudGlsXG4gICAgICAgIC8vIGFsbCBwcmV2aW91cyBQcm9taXNlcyBoYXZlIGJlZW4gcmVzb2x2ZWQgYmVmb3JlIGNhbGxpbmcgaW52b2tlLFxuICAgICAgICAvLyBzbyB0aGF0IHJlc3VsdHMgYXJlIGFsd2F5cyBkZWxpdmVyZWQgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuIElmXG4gICAgICAgIC8vIGVucXVldWUgaGFzIG5vdCBiZWVuIGNhbGxlZCBiZWZvcmUsIHRoZW4gaXQgaXMgaW1wb3J0YW50IHRvXG4gICAgICAgIC8vIGNhbGwgaW52b2tlIGltbWVkaWF0ZWx5LCB3aXRob3V0IHdhaXRpbmcgb24gYSBjYWxsYmFjayB0byBmaXJlLFxuICAgICAgICAvLyBzbyB0aGF0IHRoZSBhc3luYyBnZW5lcmF0b3IgZnVuY3Rpb24gaGFzIHRoZSBvcHBvcnR1bml0eSB0byBkb1xuICAgICAgICAvLyBhbnkgbmVjZXNzYXJ5IHNldHVwIGluIGEgcHJlZGljdGFibGUgd2F5LiBUaGlzIHByZWRpY3RhYmlsaXR5XG4gICAgICAgIC8vIGlzIHdoeSB0aGUgUHJvbWlzZSBjb25zdHJ1Y3RvciBzeW5jaHJvbm91c2x5IGludm9rZXMgaXRzXG4gICAgICAgIC8vIGV4ZWN1dG9yIGNhbGxiYWNrLCBhbmQgd2h5IGFzeW5jIGZ1bmN0aW9ucyBzeW5jaHJvbm91c2x5XG4gICAgICAgIC8vIGV4ZWN1dGUgY29kZSBiZWZvcmUgdGhlIGZpcnN0IGF3YWl0LiBTaW5jZSB3ZSBpbXBsZW1lbnQgc2ltcGxlXG4gICAgICAgIC8vIGFzeW5jIGZ1bmN0aW9ucyBpbiB0ZXJtcyBvZiBhc3luYyBnZW5lcmF0b3JzLCBpdCBpcyBlc3BlY2lhbGx5XG4gICAgICAgIC8vIGltcG9ydGFudCB0byBnZXQgdGhpcyByaWdodCwgZXZlbiB0aG91Z2ggaXQgcmVxdWlyZXMgY2FyZS5cbiAgICAgICAgcHJldmlvdXNQcm9taXNlID8gcHJldmlvdXNQcm9taXNlLnRoZW4oXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmcsXG4gICAgICAgICAgLy8gQXZvaWQgcHJvcGFnYXRpbmcgZmFpbHVyZXMgdG8gUHJvbWlzZXMgcmV0dXJuZWQgYnkgbGF0ZXJcbiAgICAgICAgICAvLyBpbnZvY2F0aW9ucyBvZiB0aGUgaXRlcmF0b3IuXG4gICAgICAgICAgY2FsbEludm9rZVdpdGhNZXRob2RBbmRBcmdcbiAgICAgICAgKSA6IGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnKCk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSB1bmlmaWVkIGhlbHBlciBtZXRob2QgdGhhdCBpcyB1c2VkIHRvIGltcGxlbWVudCAubmV4dCxcbiAgICAvLyAudGhyb3csIGFuZCAucmV0dXJuIChzZWUgZGVmaW5lSXRlcmF0b3JNZXRob2RzKS5cbiAgICB0aGlzLl9pbnZva2UgPSBlbnF1ZXVlO1xuICB9XG5cbiAgZGVmaW5lSXRlcmF0b3JNZXRob2RzKEFzeW5jSXRlcmF0b3IucHJvdG90eXBlKTtcbiAgQXN5bmNJdGVyYXRvci5wcm90b3R5cGVbYXN5bmNJdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG4gIHJ1bnRpbWUuQXN5bmNJdGVyYXRvciA9IEFzeW5jSXRlcmF0b3I7XG5cbiAgLy8gTm90ZSB0aGF0IHNpbXBsZSBhc3luYyBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIG9uIHRvcCBvZlxuICAvLyBBc3luY0l0ZXJhdG9yIG9iamVjdHM7IHRoZXkganVzdCByZXR1cm4gYSBQcm9taXNlIGZvciB0aGUgdmFsdWUgb2ZcbiAgLy8gdGhlIGZpbmFsIHJlc3VsdCBwcm9kdWNlZCBieSB0aGUgaXRlcmF0b3IuXG4gIHJ1bnRpbWUuYXN5bmMgPSBmdW5jdGlvbihpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIHZhciBpdGVyID0gbmV3IEFzeW5jSXRlcmF0b3IoXG4gICAgICB3cmFwKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0KVxuICAgICk7XG5cbiAgICByZXR1cm4gcnVudGltZS5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yLnJldHVybikge1xuICAgICAgICAgIC8vIElmIHRoZSBkZWxlZ2F0ZSBpdGVyYXRvciBoYXMgYSByZXR1cm4gbWV0aG9kLCBnaXZlIGl0IGFcbiAgICAgICAgICAvLyBjaGFuY2UgdG8gY2xlYW4gdXAuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInJldHVyblwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG1heWJlSW52b2tlRGVsZWdhdGUoZGVsZWdhdGUsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIC8vIElmIG1heWJlSW52b2tlRGVsZWdhdGUoY29udGV4dCkgY2hhbmdlZCBjb250ZXh0Lm1ldGhvZCBmcm9tXG4gICAgICAgICAgICAvLyBcInJldHVyblwiIHRvIFwidGhyb3dcIiwgbGV0IHRoYXQgb3ZlcnJpZGUgdGhlIFR5cGVFcnJvciBiZWxvdy5cbiAgICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IG5ldyBUeXBlRXJyb3IoXG4gICAgICAgICAgXCJUaGUgaXRlcmF0b3IgZG9lcyBub3QgcHJvdmlkZSBhICd0aHJvdycgbWV0aG9kXCIpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2gobWV0aG9kLCBkZWxlZ2F0ZS5pdGVyYXRvciwgY29udGV4dC5hcmcpO1xuXG4gICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICB2YXIgaW5mbyA9IHJlY29yZC5hcmc7XG5cbiAgICBpZiAoISBpbmZvKSB7XG4gICAgICBjb250ZXh0Lm1ldGhvZCA9IFwidGhyb3dcIjtcbiAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcIml0ZXJhdG9yIHJlc3VsdCBpcyBub3QgYW4gb2JqZWN0XCIpO1xuICAgICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG5cbiAgICBpZiAoaW5mby5kb25lKSB7XG4gICAgICAvLyBBc3NpZ24gdGhlIHJlc3VsdCBvZiB0aGUgZmluaXNoZWQgZGVsZWdhdGUgdG8gdGhlIHRlbXBvcmFyeVxuICAgICAgLy8gdmFyaWFibGUgc3BlY2lmaWVkIGJ5IGRlbGVnYXRlLnJlc3VsdE5hbWUgKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHRbZGVsZWdhdGUucmVzdWx0TmFtZV0gPSBpbmZvLnZhbHVlO1xuXG4gICAgICAvLyBSZXN1bWUgZXhlY3V0aW9uIGF0IHRoZSBkZXNpcmVkIGxvY2F0aW9uIChzZWUgZGVsZWdhdGVZaWVsZCkuXG4gICAgICBjb250ZXh0Lm5leHQgPSBkZWxlZ2F0ZS5uZXh0TG9jO1xuXG4gICAgICAvLyBJZiBjb250ZXh0Lm1ldGhvZCB3YXMgXCJ0aHJvd1wiIGJ1dCB0aGUgZGVsZWdhdGUgaGFuZGxlZCB0aGVcbiAgICAgIC8vIGV4Y2VwdGlvbiwgbGV0IHRoZSBvdXRlciBnZW5lcmF0b3IgcHJvY2VlZCBub3JtYWxseS4gSWZcbiAgICAgIC8vIGNvbnRleHQubWV0aG9kIHdhcyBcIm5leHRcIiwgZm9yZ2V0IGNvbnRleHQuYXJnIHNpbmNlIGl0IGhhcyBiZWVuXG4gICAgICAvLyBcImNvbnN1bWVkXCIgYnkgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yLiBJZiBjb250ZXh0Lm1ldGhvZCB3YXNcbiAgICAgIC8vIFwicmV0dXJuXCIsIGFsbG93IHRoZSBvcmlnaW5hbCAucmV0dXJuIGNhbGwgdG8gY29udGludWUgaW4gdGhlXG4gICAgICAvLyBvdXRlciBnZW5lcmF0b3IuXG4gICAgICBpZiAoY29udGV4dC5tZXRob2QgIT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gUmUteWllbGQgdGhlIHJlc3VsdCByZXR1cm5lZCBieSB0aGUgZGVsZWdhdGUgbWV0aG9kLlxuICAgICAgcmV0dXJuIGluZm87XG4gICAgfVxuXG4gICAgLy8gVGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGlzIGZpbmlzaGVkLCBzbyBmb3JnZXQgaXQgYW5kIGNvbnRpbnVlIHdpdGhcbiAgICAvLyB0aGUgb3V0ZXIgZ2VuZXJhdG9yLlxuICAgIGNvbnRleHQuZGVsZWdhdGUgPSBudWxsO1xuICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICB9XG5cbiAgLy8gRGVmaW5lIEdlbmVyYXRvci5wcm90b3R5cGUue25leHQsdGhyb3cscmV0dXJufSBpbiB0ZXJtcyBvZiB0aGVcbiAgLy8gdW5pZmllZCAuX2ludm9rZSBoZWxwZXIgbWV0aG9kLlxuICBkZWZpbmVJdGVyYXRvck1ldGhvZHMoR3ApO1xuXG4gIEdwW3RvU3RyaW5nVGFnU3ltYm9sXSA9IFwiR2VuZXJhdG9yXCI7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBHcFtpdGVyYXRvclN5bWJvbF0gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBHcC50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9O1xuXG4gIGZ1bmN0aW9uIHB1c2hUcnlFbnRyeShsb2NzKSB7XG4gICAgdmFyIGVudHJ5ID0geyB0cnlMb2M6IGxvY3NbMF0gfTtcblxuICAgIGlmICgxIGluIGxvY3MpIHtcbiAgICAgIGVudHJ5LmNhdGNoTG9jID0gbG9jc1sxXTtcbiAgICB9XG5cbiAgICBpZiAoMiBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5maW5hbGx5TG9jID0gbG9jc1syXTtcbiAgICAgIGVudHJ5LmFmdGVyTG9jID0gbG9jc1szXTtcbiAgICB9XG5cbiAgICB0aGlzLnRyeUVudHJpZXMucHVzaChlbnRyeSk7XG4gIH1cblxuICBmdW5jdGlvbiByZXNldFRyeUVudHJ5KGVudHJ5KSB7XG4gICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb24gfHwge307XG4gICAgcmVjb3JkLnR5cGUgPSBcIm5vcm1hbFwiO1xuICAgIGRlbGV0ZSByZWNvcmQuYXJnO1xuICAgIGVudHJ5LmNvbXBsZXRpb24gPSByZWNvcmQ7XG4gIH1cblxuICBmdW5jdGlvbiBDb250ZXh0KHRyeUxvY3NMaXN0KSB7XG4gICAgLy8gVGhlIHJvb3QgZW50cnkgb2JqZWN0IChlZmZlY3RpdmVseSBhIHRyeSBzdGF0ZW1lbnQgd2l0aG91dCBhIGNhdGNoXG4gICAgLy8gb3IgYSBmaW5hbGx5IGJsb2NrKSBnaXZlcyB1cyBhIHBsYWNlIHRvIHN0b3JlIHZhbHVlcyB0aHJvd24gZnJvbVxuICAgIC8vIGxvY2F0aW9ucyB3aGVyZSB0aGVyZSBpcyBubyBlbmNsb3NpbmcgdHJ5IHN0YXRlbWVudC5cbiAgICB0aGlzLnRyeUVudHJpZXMgPSBbeyB0cnlMb2M6IFwicm9vdFwiIH1dO1xuICAgIHRyeUxvY3NMaXN0LmZvckVhY2gocHVzaFRyeUVudHJ5LCB0aGlzKTtcbiAgICB0aGlzLnJlc2V0KHRydWUpO1xuICB9XG5cbiAgcnVudGltZS5rZXlzID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgdmFyIGtleXMgPSBbXTtcbiAgICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAga2V5cy5yZXZlcnNlKCk7XG5cbiAgICAvLyBSYXRoZXIgdGhhbiByZXR1cm5pbmcgYW4gb2JqZWN0IHdpdGggYSBuZXh0IG1ldGhvZCwgd2Uga2VlcFxuICAgIC8vIHRoaW5ncyBzaW1wbGUgYW5kIHJldHVybiB0aGUgbmV4dCBmdW5jdGlvbiBpdHNlbGYuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICB3aGlsZSAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXMucG9wKCk7XG4gICAgICAgIGlmIChrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgbmV4dC52YWx1ZSA9IGtleTtcbiAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUbyBhdm9pZCBjcmVhdGluZyBhbiBhZGRpdGlvbmFsIG9iamVjdCwgd2UganVzdCBoYW5nIHRoZSAudmFsdWVcbiAgICAgIC8vIGFuZCAuZG9uZSBwcm9wZXJ0aWVzIG9mZiB0aGUgbmV4dCBmdW5jdGlvbiBvYmplY3QgaXRzZWxmLiBUaGlzXG4gICAgICAvLyBhbHNvIGVuc3VyZXMgdGhhdCB0aGUgbWluaWZpZXIgd2lsbCBub3QgYW5vbnltaXplIHRoZSBmdW5jdGlvbi5cbiAgICAgIG5leHQuZG9uZSA9IHRydWU7XG4gICAgICByZXR1cm4gbmV4dDtcbiAgICB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIHZhbHVlcyhpdGVyYWJsZSkge1xuICAgIGlmIChpdGVyYWJsZSkge1xuICAgICAgdmFyIGl0ZXJhdG9yTWV0aG9kID0gaXRlcmFibGVbaXRlcmF0b3JTeW1ib2xdO1xuICAgICAgaWYgKGl0ZXJhdG9yTWV0aG9kKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvck1ldGhvZC5jYWxsKGl0ZXJhYmxlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBpdGVyYWJsZS5uZXh0ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIGl0ZXJhYmxlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzTmFOKGl0ZXJhYmxlLmxlbmd0aCkpIHtcbiAgICAgICAgdmFyIGkgPSAtMSwgbmV4dCA9IGZ1bmN0aW9uIG5leHQoKSB7XG4gICAgICAgICAgd2hpbGUgKCsraSA8IGl0ZXJhYmxlLmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKGhhc093bi5jYWxsKGl0ZXJhYmxlLCBpKSkge1xuICAgICAgICAgICAgICBuZXh0LnZhbHVlID0gaXRlcmFibGVbaV07XG4gICAgICAgICAgICAgIG5leHQuZG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXh0LnZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIG5leHQuZG9uZSA9IHRydWU7XG5cbiAgICAgICAgICByZXR1cm4gbmV4dDtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4gbmV4dC5uZXh0ID0gbmV4dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXR1cm4gYW4gaXRlcmF0b3Igd2l0aCBubyB2YWx1ZXMuXG4gICAgcmV0dXJuIHsgbmV4dDogZG9uZVJlc3VsdCB9O1xuICB9XG4gIHJ1bnRpbWUudmFsdWVzID0gdmFsdWVzO1xuXG4gIGZ1bmN0aW9uIGRvbmVSZXN1bHQoKSB7XG4gICAgcmV0dXJuIHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9O1xuICB9XG5cbiAgQ29udGV4dC5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IENvbnRleHQsXG5cbiAgICByZXNldDogZnVuY3Rpb24oc2tpcFRlbXBSZXNldCkge1xuICAgICAgdGhpcy5wcmV2ID0gMDtcbiAgICAgIHRoaXMubmV4dCA9IDA7XG4gICAgICAvLyBSZXNldHRpbmcgY29udGV4dC5fc2VudCBmb3IgbGVnYWN5IHN1cHBvcnQgb2YgQmFiZWwnc1xuICAgICAgLy8gZnVuY3Rpb24uc2VudCBpbXBsZW1lbnRhdGlvbi5cbiAgICAgIHRoaXMuc2VudCA9IHRoaXMuX3NlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgIHRoaXMuZGVsZWdhdGUgPSBudWxsO1xuXG4gICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgdGhpcy5hcmcgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRoaXMudHJ5RW50cmllcy5mb3JFYWNoKHJlc2V0VHJ5RW50cnkpO1xuXG4gICAgICBpZiAoIXNraXBUZW1wUmVzZXQpIHtcbiAgICAgICAgZm9yICh2YXIgbmFtZSBpbiB0aGlzKSB7XG4gICAgICAgICAgLy8gTm90IHN1cmUgYWJvdXQgdGhlIG9wdGltYWwgb3JkZXIgb2YgdGhlc2UgY29uZGl0aW9uczpcbiAgICAgICAgICBpZiAobmFtZS5jaGFyQXQoMCkgPT09IFwidFwiICYmXG4gICAgICAgICAgICAgIGhhc093bi5jYWxsKHRoaXMsIG5hbWUpICYmXG4gICAgICAgICAgICAgICFpc05hTigrbmFtZS5zbGljZSgxKSkpIHtcbiAgICAgICAgICAgIHRoaXNbbmFtZV0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIHN0b3A6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5kb25lID0gdHJ1ZTtcblxuICAgICAgdmFyIHJvb3RFbnRyeSA9IHRoaXMudHJ5RW50cmllc1swXTtcbiAgICAgIHZhciByb290UmVjb3JkID0gcm9vdEVudHJ5LmNvbXBsZXRpb247XG4gICAgICBpZiAocm9vdFJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgdGhyb3cgcm9vdFJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLnJ2YWw7XG4gICAgfSxcblxuICAgIGRpc3BhdGNoRXhjZXB0aW9uOiBmdW5jdGlvbihleGNlcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmRvbmUpIHtcbiAgICAgICAgdGhyb3cgZXhjZXB0aW9uO1xuICAgICAgfVxuXG4gICAgICB2YXIgY29udGV4dCA9IHRoaXM7XG4gICAgICBmdW5jdGlvbiBoYW5kbGUobG9jLCBjYXVnaHQpIHtcbiAgICAgICAgcmVjb3JkLnR5cGUgPSBcInRocm93XCI7XG4gICAgICAgIHJlY29yZC5hcmcgPSBleGNlcHRpb247XG4gICAgICAgIGNvbnRleHQubmV4dCA9IGxvYztcblxuICAgICAgICBpZiAoY2F1Z2h0KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoZWQgZXhjZXB0aW9uIHdhcyBjYXVnaHQgYnkgYSBjYXRjaCBibG9jayxcbiAgICAgICAgICAvLyB0aGVuIGxldCB0aGF0IGNhdGNoIGJsb2NrIGhhbmRsZSB0aGUgZXhjZXB0aW9uIG5vcm1hbGx5LlxuICAgICAgICAgIGNvbnRleHQubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gISEgY2F1Z2h0O1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG5cbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gXCJyb290XCIpIHtcbiAgICAgICAgICAvLyBFeGNlcHRpb24gdGhyb3duIG91dHNpZGUgb2YgYW55IHRyeSBibG9jayB0aGF0IGNvdWxkIGhhbmRsZVxuICAgICAgICAgIC8vIGl0LCBzbyBzZXQgdGhlIGNvbXBsZXRpb24gdmFsdWUgb2YgdGhlIGVudGlyZSBmdW5jdGlvbiB0b1xuICAgICAgICAgIC8vIHRocm93IHRoZSBleGNlcHRpb24uXG4gICAgICAgICAgcmV0dXJuIGhhbmRsZShcImVuZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2KSB7XG4gICAgICAgICAgdmFyIGhhc0NhdGNoID0gaGFzT3duLmNhbGwoZW50cnksIFwiY2F0Y2hMb2NcIik7XG4gICAgICAgICAgdmFyIGhhc0ZpbmFsbHkgPSBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpO1xuXG4gICAgICAgICAgaWYgKGhhc0NhdGNoICYmIGhhc0ZpbmFsbHkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXRjaCkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmNhdGNoTG9jKSB7XG4gICAgICAgICAgICAgIHJldHVybiBoYW5kbGUoZW50cnkuY2F0Y2hMb2MsIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIGlmIChoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmZpbmFsbHlMb2MpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInRyeSBzdGF0ZW1lbnQgd2l0aG91dCBjYXRjaCBvciBmaW5hbGx5XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBhYnJ1cHQ6IGZ1bmN0aW9uKHR5cGUsIGFyZykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPD0gdGhpcy5wcmV2ICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbChlbnRyeSwgXCJmaW5hbGx5TG9jXCIpICYmXG4gICAgICAgICAgICB0aGlzLnByZXYgPCBlbnRyeS5maW5hbGx5TG9jKSB7XG4gICAgICAgICAgdmFyIGZpbmFsbHlFbnRyeSA9IGVudHJ5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaW5hbGx5RW50cnkgJiZcbiAgICAgICAgICAodHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgIHR5cGUgPT09IFwiY29udGludWVcIikgJiZcbiAgICAgICAgICBmaW5hbGx5RW50cnkudHJ5TG9jIDw9IGFyZyAmJlxuICAgICAgICAgIGFyZyA8PSBmaW5hbGx5RW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAvLyBJZ25vcmUgdGhlIGZpbmFsbHkgZW50cnkgaWYgY29udHJvbCBpcyBub3QganVtcGluZyB0byBhXG4gICAgICAgIC8vIGxvY2F0aW9uIG91dHNpZGUgdGhlIHRyeS9jYXRjaCBibG9jay5cbiAgICAgICAgZmluYWxseUVudHJ5ID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIHJlY29yZCA9IGZpbmFsbHlFbnRyeSA/IGZpbmFsbHlFbnRyeS5jb21wbGV0aW9uIDoge307XG4gICAgICByZWNvcmQudHlwZSA9IHR5cGU7XG4gICAgICByZWNvcmQuYXJnID0gYXJnO1xuXG4gICAgICBpZiAoZmluYWxseUVudHJ5KSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJuZXh0XCI7XG4gICAgICAgIHRoaXMubmV4dCA9IGZpbmFsbHlFbnRyeS5maW5hbGx5TG9jO1xuICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29tcGxldGUocmVjb3JkKTtcbiAgICB9LFxuXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uKHJlY29yZCwgYWZ0ZXJMb2MpIHtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJlY29yZC5hcmc7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJicmVha1wiIHx8XG4gICAgICAgICAgcmVjb3JkLnR5cGUgPT09IFwiY29udGludWVcIikge1xuICAgICAgICB0aGlzLm5leHQgPSByZWNvcmQuYXJnO1xuICAgICAgfSBlbHNlIGlmIChyZWNvcmQudHlwZSA9PT0gXCJyZXR1cm5cIikge1xuICAgICAgICB0aGlzLnJ2YWwgPSB0aGlzLmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICAgIHRoaXMubWV0aG9kID0gXCJyZXR1cm5cIjtcbiAgICAgICAgdGhpcy5uZXh0ID0gXCJlbmRcIjtcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwibm9ybWFsXCIgJiYgYWZ0ZXJMb2MpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gYWZ0ZXJMb2M7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH0sXG5cbiAgICBmaW5pc2g6IGZ1bmN0aW9uKGZpbmFsbHlMb2MpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkuZmluYWxseUxvYyA9PT0gZmluYWxseUxvYykge1xuICAgICAgICAgIHRoaXMuY29tcGxldGUoZW50cnkuY29tcGxldGlvbiwgZW50cnkuYWZ0ZXJMb2MpO1xuICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIFwiY2F0Y2hcIjogZnVuY3Rpb24odHJ5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LnRyeUxvYyA9PT0gdHJ5TG9jKSB7XG4gICAgICAgICAgdmFyIHJlY29yZCA9IGVudHJ5LmNvbXBsZXRpb247XG4gICAgICAgICAgaWYgKHJlY29yZC50eXBlID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICAgIHZhciB0aHJvd24gPSByZWNvcmQuYXJnO1xuICAgICAgICAgICAgcmVzZXRUcnlFbnRyeShlbnRyeSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aHJvd247XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGhlIGNvbnRleHQuY2F0Y2ggbWV0aG9kIG11c3Qgb25seSBiZSBjYWxsZWQgd2l0aCBhIGxvY2F0aW9uXG4gICAgICAvLyBhcmd1bWVudCB0aGF0IGNvcnJlc3BvbmRzIHRvIGEga25vd24gY2F0Y2ggYmxvY2suXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpbGxlZ2FsIGNhdGNoIGF0dGVtcHRcIik7XG4gICAgfSxcblxuICAgIGRlbGVnYXRlWWllbGQ6IGZ1bmN0aW9uKGl0ZXJhYmxlLCByZXN1bHROYW1lLCBuZXh0TG9jKSB7XG4gICAgICB0aGlzLmRlbGVnYXRlID0ge1xuICAgICAgICBpdGVyYXRvcjogdmFsdWVzKGl0ZXJhYmxlKSxcbiAgICAgICAgcmVzdWx0TmFtZTogcmVzdWx0TmFtZSxcbiAgICAgICAgbmV4dExvYzogbmV4dExvY1xuICAgICAgfTtcblxuICAgICAgaWYgKHRoaXMubWV0aG9kID09PSBcIm5leHRcIikge1xuICAgICAgICAvLyBEZWxpYmVyYXRlbHkgZm9yZ2V0IHRoZSBsYXN0IHNlbnQgdmFsdWUgc28gdGhhdCB3ZSBkb24ndFxuICAgICAgICAvLyBhY2NpZGVudGFsbHkgcGFzcyBpdCBvbiB0byB0aGUgZGVsZWdhdGUuXG4gICAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9XG4gIH07XG59KShcbiAgLy8gSW4gc2xvcHB5IG1vZGUsIHVuYm91bmQgYHRoaXNgIHJlZmVycyB0byB0aGUgZ2xvYmFsIG9iamVjdCwgZmFsbGJhY2sgdG9cbiAgLy8gRnVuY3Rpb24gY29uc3RydWN0b3IgaWYgd2UncmUgaW4gZ2xvYmFsIHN0cmljdCBtb2RlLiBUaGF0IGlzIHNhZGx5IGEgZm9ybVxuICAvLyBvZiBpbmRpcmVjdCBldmFsIHdoaWNoIHZpb2xhdGVzIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5LlxuICAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzIH0pKCkgfHwgRnVuY3Rpb24oXCJyZXR1cm4gdGhpc1wiKSgpXG4pO1xuIiwidmFyIE5BVElWRSA9IHJlcXVpcmUoJy4vbmF0aXZlJylcbnZhciBFUlJPUlMgPSByZXF1aXJlKCcuL2Vycm9ycycpXG5cbmZ1bmN0aW9uIF9CdWZmZXIgKHZhbHVlKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIodmFsdWUpXG59XG5cbmZ1bmN0aW9uIEhleCAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgL14oWzAtOWEtZl17Mn0pKyQvaS50ZXN0KHZhbHVlKVxufVxuXG5mdW5jdGlvbiBfTGVuZ3RoTiAodHlwZSwgbGVuZ3RoKSB7XG4gIHZhciBuYW1lID0gdHlwZS50b0pTT04oKVxuXG4gIGZ1bmN0aW9uIExlbmd0aCAodmFsdWUpIHtcbiAgICBpZiAoIXR5cGUodmFsdWUpKSByZXR1cm4gZmFsc2VcbiAgICBpZiAodmFsdWUubGVuZ3RoID09PSBsZW5ndGgpIHJldHVybiB0cnVlXG5cbiAgICB0aHJvdyBFUlJPUlMudGZDdXN0b21FcnJvcihuYW1lICsgJyhMZW5ndGg6ICcgKyBsZW5ndGggKyAnKScsIG5hbWUgKyAnKExlbmd0aDogJyArIHZhbHVlLmxlbmd0aCArICcpJylcbiAgfVxuICBMZW5ndGgudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gbmFtZSB9XG5cbiAgcmV0dXJuIExlbmd0aFxufVxuXG52YXIgX0FycmF5TiA9IF9MZW5ndGhOLmJpbmQobnVsbCwgTkFUSVZFLkFycmF5KVxudmFyIF9CdWZmZXJOID0gX0xlbmd0aE4uYmluZChudWxsLCBfQnVmZmVyKVxudmFyIF9IZXhOID0gX0xlbmd0aE4uYmluZChudWxsLCBIZXgpXG5cbnZhciBVSU5UNTNfTUFYID0gTWF0aC5wb3coMiwgNTMpIC0gMVxuXG5mdW5jdGlvbiBGaW5pdGUgKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzRmluaXRlKHZhbHVlKVxufVxuZnVuY3Rpb24gSW50OCAodmFsdWUpIHsgcmV0dXJuICgodmFsdWUgPDwgMjQpID4+IDI0KSA9PT0gdmFsdWUgfVxuZnVuY3Rpb24gSW50MTYgKHZhbHVlKSB7IHJldHVybiAoKHZhbHVlIDw8IDE2KSA+PiAxNikgPT09IHZhbHVlIH1cbmZ1bmN0aW9uIEludDMyICh2YWx1ZSkgeyByZXR1cm4gKHZhbHVlIHwgMCkgPT09IHZhbHVlIH1cbmZ1bmN0aW9uIFVJbnQ4ICh2YWx1ZSkgeyByZXR1cm4gKHZhbHVlICYgMHhmZikgPT09IHZhbHVlIH1cbmZ1bmN0aW9uIFVJbnQxNiAodmFsdWUpIHsgcmV0dXJuICh2YWx1ZSAmIDB4ZmZmZikgPT09IHZhbHVlIH1cbmZ1bmN0aW9uIFVJbnQzMiAodmFsdWUpIHsgcmV0dXJuICh2YWx1ZSA+Pj4gMCkgPT09IHZhbHVlIH1cbmZ1bmN0aW9uIFVJbnQ1MyAodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiZcbiAgICB2YWx1ZSA+PSAwICYmXG4gICAgdmFsdWUgPD0gVUlOVDUzX01BWCAmJlxuICAgIE1hdGguZmxvb3IodmFsdWUpID09PSB2YWx1ZVxufVxuXG52YXIgdHlwZXMgPSB7XG4gIEFycmF5TjogX0FycmF5TixcbiAgQnVmZmVyOiBfQnVmZmVyLFxuICBCdWZmZXJOOiBfQnVmZmVyTixcbiAgRmluaXRlOiBGaW5pdGUsXG4gIEhleDogSGV4LFxuICBIZXhOOiBfSGV4TixcbiAgSW50ODogSW50OCxcbiAgSW50MTY6IEludDE2LFxuICBJbnQzMjogSW50MzIsXG4gIFVJbnQ4OiBVSW50OCxcbiAgVUludDE2OiBVSW50MTYsXG4gIFVJbnQzMjogVUludDMyLFxuICBVSW50NTM6IFVJbnQ1M1xufVxuXG5mb3IgKHZhciB0eXBlTmFtZSBpbiB0eXBlcykge1xuICB0eXBlc1t0eXBlTmFtZV0udG9KU09OID0gZnVuY3Rpb24gKHQpIHtcbiAgICByZXR1cm4gdFxuICB9LmJpbmQobnVsbCwgdHlwZU5hbWUpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHlwZXNcbiIsInZhciBPUFMgPSByZXF1aXJlKCcuL2luZGV4Lmpzb24nKVxuXG52YXIgbWFwID0ge31cbmZvciAodmFyIG9wIGluIE9QUykge1xuICB2YXIgY29kZSA9IE9QU1tvcF1cbiAgbWFwW2NvZGVdID0gb3Bcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBcbiIsIi8vIE9QXzAgW3NpZ25hdHVyZXMgLi4uXVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciBwMm1zbyA9IHJlcXVpcmUoJy4vb3V0cHV0JylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIE9QUyA9IHJlcXVpcmUoJ2JpdGNvaW4tb3BzJylcblxuZnVuY3Rpb24gcGFydGlhbFNpZ25hdHVyZSAodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSBPUFMuT1BfMCB8fCBic2NyaXB0LmlzQ2Fub25pY2FsU2lnbmF0dXJlKHZhbHVlKVxufVxuXG5mdW5jdGlvbiBjaGVjayAoc2NyaXB0LCBhbGxvd0luY29tcGxldGUpIHtcbiAgdmFyIGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdClcbiAgaWYgKGNodW5rcy5sZW5ndGggPCAyKSByZXR1cm4gZmFsc2VcbiAgaWYgKGNodW5rc1swXSAhPT0gT1BTLk9QXzApIHJldHVybiBmYWxzZVxuXG4gIGlmIChhbGxvd0luY29tcGxldGUpIHtcbiAgICByZXR1cm4gY2h1bmtzLnNsaWNlKDEpLmV2ZXJ5KHBhcnRpYWxTaWduYXR1cmUpXG4gIH1cblxuICByZXR1cm4gY2h1bmtzLnNsaWNlKDEpLmV2ZXJ5KGJzY3JpcHQuaXNDYW5vbmljYWxTaWduYXR1cmUpXG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnbXVsdGlzaWcgaW5wdXQnIH1cblxudmFyIEVNUFRZX0JVRkZFUiA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSgwKVxuXG5mdW5jdGlvbiBlbmNvZGVTdGFjayAoc2lnbmF0dXJlcywgc2NyaXB0UHViS2V5KSB7XG4gIHR5cGVmb3JjZShbcGFydGlhbFNpZ25hdHVyZV0sIHNpZ25hdHVyZXMpXG5cbiAgaWYgKHNjcmlwdFB1YktleSkge1xuICAgIHZhciBzY3JpcHREYXRhID0gcDJtc28uZGVjb2RlKHNjcmlwdFB1YktleSlcblxuICAgIGlmIChzaWduYXR1cmVzLmxlbmd0aCA8IHNjcmlwdERhdGEubSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignTm90IGVub3VnaCBzaWduYXR1cmVzIHByb3ZpZGVkJylcbiAgICB9XG5cbiAgICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggPiBzY3JpcHREYXRhLnB1YktleXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUb28gbWFueSBzaWduYXR1cmVzIHByb3ZpZGVkJylcbiAgICB9XG4gIH1cblxuICByZXR1cm4gW10uY29uY2F0KEVNUFRZX0JVRkZFUiwgc2lnbmF0dXJlcy5tYXAoZnVuY3Rpb24gKHNpZykge1xuICAgIGlmIChzaWcgPT09IE9QUy5PUF8wKSB7XG4gICAgICByZXR1cm4gRU1QVFlfQlVGRkVSXG4gICAgfVxuICAgIHJldHVybiBzaWdcbiAgfSkpXG59XG5cbmZ1bmN0aW9uIGVuY29kZSAoc2lnbmF0dXJlcywgc2NyaXB0UHViS2V5KSB7XG4gIHJldHVybiBic2NyaXB0LmNvbXBpbGUoZW5jb2RlU3RhY2soc2lnbmF0dXJlcywgc2NyaXB0UHViS2V5KSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlU3RhY2sgKHN0YWNrLCBhbGxvd0luY29tcGxldGUpIHtcbiAgdHlwZWZvcmNlKHR5cGVmb3JjZS5BcnJheSwgc3RhY2spXG4gIHR5cGVmb3JjZShjaGVjaywgc3RhY2ssIGFsbG93SW5jb21wbGV0ZSlcbiAgcmV0dXJuIHN0YWNrLnNsaWNlKDEpXG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyLCBhbGxvd0luY29tcGxldGUpIHtcbiAgdmFyIHN0YWNrID0gYnNjcmlwdC5kZWNvbXBpbGUoYnVmZmVyKVxuICByZXR1cm4gZGVjb2RlU3RhY2soc3RhY2ssIGFsbG93SW5jb21wbGV0ZSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNoZWNrOiBjaGVjayxcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGRlY29kZVN0YWNrOiBkZWNvZGVTdGFjayxcbiAgZW5jb2RlOiBlbmNvZGUsXG4gIGVuY29kZVN0YWNrOiBlbmNvZGVTdGFja1xufVxuIiwiLy8gT1BfUkVUVVJOIHtkYXRhfVxuXG52YXIgYnNjcmlwdCA9IHJlcXVpcmUoJy4uL3NjcmlwdCcpXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuLi90eXBlcycpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcbnZhciBPUFMgPSByZXF1aXJlKCdiaXRjb2luLW9wcycpXG5cbmZ1bmN0aW9uIGNoZWNrIChzY3JpcHQpIHtcbiAgcmV0dXJuIHNjcmlwdC5sZW5ndGggPT09IDIgJiZcbiAgICAgc2NyaXB0WzBdID09PSBPUFMuT1BfUkVUVVJOXG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnbnVsbCBkYXRhIG91dHB1dCcgfVxuXG5mdW5jdGlvbiBlbmNvZGUgKGRhdGEpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLkJ1ZmZlciwgZGF0YSlcblxuICByZXR1cm4gYnNjcmlwdC5jb21waWxlKFtPUFMuT1BfUkVUVVJOLCBkYXRhXSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlIChidWZmZXIpIHtcbiAgdmFyIHNjcmlwdCA9IGJzY3JpcHQuZGVjb21waWxlKGJ1ZmZlcilcbiAgdHlwZWZvcmNlKGNoZWNrLCBzY3JpcHQpXG5cbiAgcmV0dXJuIHNjcmlwdFsxXVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgb3V0cHV0OiB7XG4gICAgY2hlY2s6IGNoZWNrLFxuICAgIGRlY29kZTogZGVjb2RlLFxuICAgIGVuY29kZTogZW5jb2RlXG4gIH1cbn1cbiIsIi8vIHtzaWduYXR1cmV9XG5cbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxuXG5mdW5jdGlvbiBjaGVjayAoc2NyaXB0KSB7XG4gIHZhciBjaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShzY3JpcHQpXG5cbiAgcmV0dXJuIGNodW5rcy5sZW5ndGggPT09IDEgJiZcbiAgICBic2NyaXB0LmlzQ2Fub25pY2FsU2lnbmF0dXJlKGNodW5rc1swXSlcbn1cbmNoZWNrLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdwdWJLZXkgaW5wdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlU3RhY2sgKHNpZ25hdHVyZSkge1xuICB0eXBlZm9yY2UoYnNjcmlwdC5pc0Nhbm9uaWNhbFNpZ25hdHVyZSwgc2lnbmF0dXJlKVxuICByZXR1cm4gW3NpZ25hdHVyZV1cbn1cblxuZnVuY3Rpb24gZW5jb2RlIChzaWduYXR1cmUpIHtcbiAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShlbmNvZGVTdGFjayhzaWduYXR1cmUpKVxufVxuXG5mdW5jdGlvbiBkZWNvZGVTdGFjayAoc3RhY2spIHtcbiAgdHlwZWZvcmNlKHR5cGVmb3JjZS5BcnJheSwgc3RhY2spXG4gIHR5cGVmb3JjZShjaGVjaywgc3RhY2spXG4gIHJldHVybiBzdGFja1swXVxufVxuXG5mdW5jdGlvbiBkZWNvZGUgKGJ1ZmZlcikge1xuICB2YXIgc3RhY2sgPSBic2NyaXB0LmRlY29tcGlsZShidWZmZXIpXG4gIHJldHVybiBkZWNvZGVTdGFjayhzdGFjaylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNoZWNrOiBjaGVjayxcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGRlY29kZVN0YWNrOiBkZWNvZGVTdGFjayxcbiAgZW5jb2RlOiBlbmNvZGUsXG4gIGVuY29kZVN0YWNrOiBlbmNvZGVTdGFja1xufVxuIiwiLy8ge3B1YktleX0gT1BfQ0hFQ0tTSUdcblxudmFyIGJzY3JpcHQgPSByZXF1aXJlKCcuLi8uLi9zY3JpcHQnKVxudmFyIHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpXG52YXIgT1BTID0gcmVxdWlyZSgnYml0Y29pbi1vcHMnKVxuXG5mdW5jdGlvbiBjaGVjayAoc2NyaXB0KSB7XG4gIHZhciBjaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShzY3JpcHQpXG5cbiAgcmV0dXJuIGNodW5rcy5sZW5ndGggPT09IDIgJiZcbiAgICBic2NyaXB0LmlzQ2Fub25pY2FsUHViS2V5KGNodW5rc1swXSkgJiZcbiAgICBjaHVua3NbMV0gPT09IE9QUy5PUF9DSEVDS1NJR1xufVxuY2hlY2sudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ3B1YktleSBvdXRwdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlIChwdWJLZXkpIHtcbiAgdHlwZWZvcmNlKGJzY3JpcHQuaXNDYW5vbmljYWxQdWJLZXksIHB1YktleSlcblxuICByZXR1cm4gYnNjcmlwdC5jb21waWxlKFtwdWJLZXksIE9QUy5PUF9DSEVDS1NJR10pXG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyKSB7XG4gIHZhciBjaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShidWZmZXIpXG4gIHR5cGVmb3JjZShjaGVjaywgY2h1bmtzKVxuXG4gIHJldHVybiBjaHVua3NbMF1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNoZWNrOiBjaGVjayxcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGVuY29kZTogZW5jb2RlXG59XG4iLCIvLyB7c2lnbmF0dXJlfSB7cHViS2V5fVxuXG52YXIgYnNjcmlwdCA9IHJlcXVpcmUoJy4uLy4uL3NjcmlwdCcpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcblxuZnVuY3Rpb24gY2hlY2sgKHNjcmlwdCkge1xuICB2YXIgY2h1bmtzID0gYnNjcmlwdC5kZWNvbXBpbGUoc2NyaXB0KVxuXG4gIHJldHVybiBjaHVua3MubGVuZ3RoID09PSAyICYmXG4gICAgYnNjcmlwdC5pc0Nhbm9uaWNhbFNpZ25hdHVyZShjaHVua3NbMF0pICYmXG4gICAgYnNjcmlwdC5pc0Nhbm9uaWNhbFB1YktleShjaHVua3NbMV0pXG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAncHViS2V5SGFzaCBpbnB1dCcgfVxuXG5mdW5jdGlvbiBlbmNvZGVTdGFjayAoc2lnbmF0dXJlLCBwdWJLZXkpIHtcbiAgdHlwZWZvcmNlKHtcbiAgICBzaWduYXR1cmU6IGJzY3JpcHQuaXNDYW5vbmljYWxTaWduYXR1cmUsXG4gICAgcHViS2V5OiBic2NyaXB0LmlzQ2Fub25pY2FsUHViS2V5XG4gIH0sIHtcbiAgICBzaWduYXR1cmU6IHNpZ25hdHVyZSxcbiAgICBwdWJLZXk6IHB1YktleVxuICB9KVxuXG4gIHJldHVybiBbc2lnbmF0dXJlLCBwdWJLZXldXG59XG5cbmZ1bmN0aW9uIGVuY29kZSAoc2lnbmF0dXJlLCBwdWJLZXkpIHtcbiAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShlbmNvZGVTdGFjayhzaWduYXR1cmUsIHB1YktleSkpXG59XG5cbmZ1bmN0aW9uIGRlY29kZVN0YWNrIChzdGFjaykge1xuICB0eXBlZm9yY2UodHlwZWZvcmNlLkFycmF5LCBzdGFjaylcbiAgdHlwZWZvcmNlKGNoZWNrLCBzdGFjaylcblxuICByZXR1cm4ge1xuICAgIHNpZ25hdHVyZTogc3RhY2tbMF0sXG4gICAgcHViS2V5OiBzdGFja1sxXVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyKSB7XG4gIHZhciBzdGFjayA9IGJzY3JpcHQuZGVjb21waWxlKGJ1ZmZlcilcbiAgcmV0dXJuIGRlY29kZVN0YWNrKHN0YWNrKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY2hlY2s6IGNoZWNrLFxuICBkZWNvZGU6IGRlY29kZSxcbiAgZGVjb2RlU3RhY2s6IGRlY29kZVN0YWNrLFxuICBlbmNvZGU6IGVuY29kZSxcbiAgZW5jb2RlU3RhY2s6IGVuY29kZVN0YWNrXG59XG4iLCIvLyBPUF9EVVAgT1BfSEFTSDE2MCB7cHViS2V5SGFzaH0gT1BfRVFVQUxWRVJJRlkgT1BfQ0hFQ0tTSUdcblxudmFyIGJzY3JpcHQgPSByZXF1aXJlKCcuLi8uLi9zY3JpcHQnKVxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi4vLi4vdHlwZXMnKVxudmFyIHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpXG52YXIgT1BTID0gcmVxdWlyZSgnYml0Y29pbi1vcHMnKVxuXG5mdW5jdGlvbiBjaGVjayAoc2NyaXB0KSB7XG4gIHZhciBidWZmZXIgPSBic2NyaXB0LmNvbXBpbGUoc2NyaXB0KVxuXG4gIHJldHVybiBidWZmZXIubGVuZ3RoID09PSAyNSAmJlxuICAgIGJ1ZmZlclswXSA9PT0gT1BTLk9QX0RVUCAmJlxuICAgIGJ1ZmZlclsxXSA9PT0gT1BTLk9QX0hBU0gxNjAgJiZcbiAgICBidWZmZXJbMl0gPT09IDB4MTQgJiZcbiAgICBidWZmZXJbMjNdID09PSBPUFMuT1BfRVFVQUxWRVJJRlkgJiZcbiAgICBidWZmZXJbMjRdID09PSBPUFMuT1BfQ0hFQ0tTSUdcbn1cbmNoZWNrLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdwdWJLZXlIYXNoIG91dHB1dCcgfVxuXG5mdW5jdGlvbiBlbmNvZGUgKHB1YktleUhhc2gpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLkhhc2gxNjBiaXQsIHB1YktleUhhc2gpXG5cbiAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbXG4gICAgT1BTLk9QX0RVUCxcbiAgICBPUFMuT1BfSEFTSDE2MCxcbiAgICBwdWJLZXlIYXNoLFxuICAgIE9QUy5PUF9FUVVBTFZFUklGWSxcbiAgICBPUFMuT1BfQ0hFQ0tTSUdcbiAgXSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlIChidWZmZXIpIHtcbiAgdHlwZWZvcmNlKGNoZWNrLCBidWZmZXIpXG5cbiAgcmV0dXJuIGJ1ZmZlci5zbGljZSgzLCAyMylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGNoZWNrOiBjaGVjayxcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGVuY29kZTogZW5jb2RlXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5wdXQ6IHJlcXVpcmUoJy4vaW5wdXQnKSxcbiAgb3V0cHV0OiByZXF1aXJlKCcuL291dHB1dCcpXG59XG4iLCIvLyA8c2NyaXB0U2lnPiB7c2VyaWFsaXplZCBzY3JpcHRQdWJLZXkgc2NyaXB0fVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxuXG52YXIgcDJtcyA9IHJlcXVpcmUoJy4uL211bHRpc2lnLycpXG52YXIgcDJwayA9IHJlcXVpcmUoJy4uL3B1YmtleS8nKVxudmFyIHAycGtoID0gcmVxdWlyZSgnLi4vcHVia2V5aGFzaC8nKVxudmFyIHAyd3BraG8gPSByZXF1aXJlKCcuLi93aXRuZXNzcHVia2V5aGFzaC9vdXRwdXQnKVxudmFyIHAyd3NobyA9IHJlcXVpcmUoJy4uL3dpdG5lc3NzY3JpcHRoYXNoL291dHB1dCcpXG5cbmZ1bmN0aW9uIGNoZWNrIChzY3JpcHQsIGFsbG93SW5jb21wbGV0ZSkge1xuICB2YXIgY2h1bmtzID0gYnNjcmlwdC5kZWNvbXBpbGUoc2NyaXB0KVxuICBpZiAoY2h1bmtzLmxlbmd0aCA8IDEpIHJldHVybiBmYWxzZVxuXG4gIHZhciBsYXN0Q2h1bmsgPSBjaHVua3NbY2h1bmtzLmxlbmd0aCAtIDFdXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGxhc3RDaHVuaykpIHJldHVybiBmYWxzZVxuXG4gIHZhciBzY3JpcHRTaWdDaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShic2NyaXB0LmNvbXBpbGUoY2h1bmtzLnNsaWNlKDAsIC0xKSkpXG4gIHZhciByZWRlZW1TY3JpcHRDaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShsYXN0Q2h1bmspXG5cbiAgLy8gaXMgcmVkZWVtU2NyaXB0IGEgdmFsaWQgc2NyaXB0P1xuICBpZiAocmVkZWVtU2NyaXB0Q2h1bmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgLy8gaXMgcmVkZWVtU2NyaXB0U2lnIHB1c2ggb25seT9cbiAgaWYgKCFic2NyaXB0LmlzUHVzaE9ubHkoc2NyaXB0U2lnQ2h1bmtzKSkgcmV0dXJuIGZhbHNlXG5cbiAgLy8gaXMgd2l0bmVzcz9cbiAgaWYgKGNodW5rcy5sZW5ndGggPT09IDEpIHtcbiAgICByZXR1cm4gcDJ3c2hvLmNoZWNrKHJlZGVlbVNjcmlwdENodW5rcykgfHxcbiAgICAgIHAyd3BraG8uY2hlY2socmVkZWVtU2NyaXB0Q2h1bmtzKVxuICB9XG5cbiAgLy8gbWF0Y2ggdHlwZXNcbiAgaWYgKHAycGtoLmlucHV0LmNoZWNrKHNjcmlwdFNpZ0NodW5rcykgJiZcbiAgICBwMnBraC5vdXRwdXQuY2hlY2socmVkZWVtU2NyaXB0Q2h1bmtzKSkgcmV0dXJuIHRydWVcblxuICBpZiAocDJtcy5pbnB1dC5jaGVjayhzY3JpcHRTaWdDaHVua3MsIGFsbG93SW5jb21wbGV0ZSkgJiZcbiAgICBwMm1zLm91dHB1dC5jaGVjayhyZWRlZW1TY3JpcHRDaHVua3MpKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChwMnBrLmlucHV0LmNoZWNrKHNjcmlwdFNpZ0NodW5rcykgJiZcbiAgICBwMnBrLm91dHB1dC5jaGVjayhyZWRlZW1TY3JpcHRDaHVua3MpKSByZXR1cm4gdHJ1ZVxuXG4gIHJldHVybiBmYWxzZVxufVxuY2hlY2sudG9KU09OID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJ3NjcmlwdEhhc2ggaW5wdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlU3RhY2sgKHJlZGVlbVNjcmlwdFN0YWNrLCByZWRlZW1TY3JpcHQpIHtcbiAgdmFyIHNlcmlhbGl6ZWRTY3JpcHRQdWJLZXkgPSBic2NyaXB0LmNvbXBpbGUocmVkZWVtU2NyaXB0KVxuXG4gIHJldHVybiBbXS5jb25jYXQocmVkZWVtU2NyaXB0U3RhY2ssIHNlcmlhbGl6ZWRTY3JpcHRQdWJLZXkpXG59XG5cbmZ1bmN0aW9uIGVuY29kZSAocmVkZWVtU2NyaXB0U2lnLCByZWRlZW1TY3JpcHQpIHtcbiAgdmFyIHJlZGVlbVNjcmlwdFN0YWNrID0gYnNjcmlwdC5kZWNvbXBpbGUocmVkZWVtU2NyaXB0U2lnKVxuXG4gIHJldHVybiBic2NyaXB0LmNvbXBpbGUoZW5jb2RlU3RhY2socmVkZWVtU2NyaXB0U3RhY2ssIHJlZGVlbVNjcmlwdCkpXG59XG5cbmZ1bmN0aW9uIGRlY29kZVN0YWNrIChzdGFjaykge1xuICB0eXBlZm9yY2UodHlwZWZvcmNlLkFycmF5LCBzdGFjaylcbiAgdHlwZWZvcmNlKGNoZWNrLCBzdGFjaylcblxuICByZXR1cm4ge1xuICAgIHJlZGVlbVNjcmlwdFN0YWNrOiBzdGFjay5zbGljZSgwLCAtMSksXG4gICAgcmVkZWVtU2NyaXB0OiBzdGFja1tzdGFjay5sZW5ndGggLSAxXVxuICB9XG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoYnVmZmVyKSB7XG4gIHZhciBzdGFjayA9IGJzY3JpcHQuZGVjb21waWxlKGJ1ZmZlcilcbiAgdmFyIHJlc3VsdCA9IGRlY29kZVN0YWNrKHN0YWNrKVxuICByZXN1bHQucmVkZWVtU2NyaXB0U2lnID0gYnNjcmlwdC5jb21waWxlKHJlc3VsdC5yZWRlZW1TY3JpcHRTdGFjaylcbiAgZGVsZXRlIHJlc3VsdC5yZWRlZW1TY3JpcHRTdGFja1xuICByZXR1cm4gcmVzdWx0XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjaGVjazogY2hlY2ssXG4gIGRlY29kZTogZGVjb2RlLFxuICBkZWNvZGVTdGFjazogZGVjb2RlU3RhY2ssXG4gIGVuY29kZTogZW5jb2RlLFxuICBlbmNvZGVTdGFjazogZW5jb2RlU3RhY2tcbn1cbiIsIi8vIE9QX0hBU0gxNjAge3NjcmlwdEhhc2h9IE9QX0VRVUFMXG5cbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4uLy4uL3R5cGVzJylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIE9QUyA9IHJlcXVpcmUoJ2JpdGNvaW4tb3BzJylcblxuZnVuY3Rpb24gY2hlY2sgKHNjcmlwdCkge1xuICB2YXIgYnVmZmVyID0gYnNjcmlwdC5jb21waWxlKHNjcmlwdClcblxuICByZXR1cm4gYnVmZmVyLmxlbmd0aCA9PT0gMjMgJiZcbiAgICBidWZmZXJbMF0gPT09IE9QUy5PUF9IQVNIMTYwICYmXG4gICAgYnVmZmVyWzFdID09PSAweDE0ICYmXG4gICAgYnVmZmVyWzIyXSA9PT0gT1BTLk9QX0VRVUFMXG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnc2NyaXB0SGFzaCBvdXRwdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlIChzY3JpcHRIYXNoKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5IYXNoMTYwYml0LCBzY3JpcHRIYXNoKVxuXG4gIHJldHVybiBic2NyaXB0LmNvbXBpbGUoW09QUy5PUF9IQVNIMTYwLCBzY3JpcHRIYXNoLCBPUFMuT1BfRVFVQUxdKVxufVxuXG5mdW5jdGlvbiBkZWNvZGUgKGJ1ZmZlcikge1xuICB0eXBlZm9yY2UoY2hlY2ssIGJ1ZmZlcilcblxuICByZXR1cm4gYnVmZmVyLnNsaWNlKDIsIDIyKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgY2hlY2s6IGNoZWNrLFxuICBkZWNvZGU6IGRlY29kZSxcbiAgZW5jb2RlOiBlbmNvZGVcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBpbnB1dDogcmVxdWlyZSgnLi9pbnB1dCcpLFxuICBvdXRwdXQ6IHJlcXVpcmUoJy4vb3V0cHV0Jylcbn1cbiIsIi8vIHtzaWduYXR1cmV9IHtwdWJLZXl9XG5cbnZhciBic2NyaXB0ID0gcmVxdWlyZSgnLi4vLi4vc2NyaXB0JylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxuXG5mdW5jdGlvbiBpc0NvbXByZXNzZWRDYW5vbmljYWxQdWJLZXkgKHB1YktleSkge1xuICByZXR1cm4gYnNjcmlwdC5pc0Nhbm9uaWNhbFB1YktleShwdWJLZXkpICYmIHB1YktleS5sZW5ndGggPT09IDMzXG59XG5cbmZ1bmN0aW9uIGNoZWNrIChzY3JpcHQpIHtcbiAgdmFyIGNodW5rcyA9IGJzY3JpcHQuZGVjb21waWxlKHNjcmlwdClcblxuICByZXR1cm4gY2h1bmtzLmxlbmd0aCA9PT0gMiAmJlxuICAgIGJzY3JpcHQuaXNDYW5vbmljYWxTaWduYXR1cmUoY2h1bmtzWzBdKSAmJlxuICAgIGlzQ29tcHJlc3NlZENhbm9uaWNhbFB1YktleShjaHVua3NbMV0pXG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnd2l0bmVzc1B1YktleUhhc2ggaW5wdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlU3RhY2sgKHNpZ25hdHVyZSwgcHViS2V5KSB7XG4gIHR5cGVmb3JjZSh7XG4gICAgc2lnbmF0dXJlOiBic2NyaXB0LmlzQ2Fub25pY2FsU2lnbmF0dXJlLFxuICAgIHB1YktleTogaXNDb21wcmVzc2VkQ2Fub25pY2FsUHViS2V5XG4gIH0sIHtcbiAgICBzaWduYXR1cmU6IHNpZ25hdHVyZSxcbiAgICBwdWJLZXk6IHB1YktleVxuICB9KVxuXG4gIHJldHVybiBbc2lnbmF0dXJlLCBwdWJLZXldXG59XG5cbmZ1bmN0aW9uIGRlY29kZVN0YWNrIChzdGFjaykge1xuICB0eXBlZm9yY2UodHlwZWZvcmNlLkFycmF5LCBzdGFjaylcbiAgdHlwZWZvcmNlKGNoZWNrLCBzdGFjaylcblxuICByZXR1cm4ge1xuICAgIHNpZ25hdHVyZTogc3RhY2tbMF0sXG4gICAgcHViS2V5OiBzdGFja1sxXVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjaGVjazogY2hlY2ssXG4gIGRlY29kZVN0YWNrOiBkZWNvZGVTdGFjayxcbiAgZW5jb2RlU3RhY2s6IGVuY29kZVN0YWNrXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5wdXQ6IHJlcXVpcmUoJy4vaW5wdXQnKSxcbiAgb3V0cHV0OiByZXF1aXJlKCcuL291dHB1dCcpXG59XG4iLCIvLyA8c2NyaXB0U2lnPiB7c2VyaWFsaXplZCBzY3JpcHRQdWJLZXkgc2NyaXB0fVxuXG52YXIgYnNjcmlwdCA9IHJlcXVpcmUoJy4uLy4uL3NjcmlwdCcpXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuLi8uLi90eXBlcycpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcblxudmFyIHAybXMgPSByZXF1aXJlKCcuLi9tdWx0aXNpZy8nKVxudmFyIHAycGsgPSByZXF1aXJlKCcuLi9wdWJrZXkvJylcbnZhciBwMnBraCA9IHJlcXVpcmUoJy4uL3B1YmtleWhhc2gvJylcblxuZnVuY3Rpb24gY2hlY2sgKGNodW5rcywgYWxsb3dJbmNvbXBsZXRlKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5BcnJheSwgY2h1bmtzKVxuICBpZiAoY2h1bmtzLmxlbmd0aCA8IDEpIHJldHVybiBmYWxzZVxuXG4gIHZhciB3aXRuZXNzU2NyaXB0ID0gY2h1bmtzW2NodW5rcy5sZW5ndGggLSAxXVxuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcih3aXRuZXNzU2NyaXB0KSkgcmV0dXJuIGZhbHNlXG5cbiAgdmFyIHdpdG5lc3NTY3JpcHRDaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZSh3aXRuZXNzU2NyaXB0KVxuXG4gIC8vIGlzIHdpdG5lc3NTY3JpcHQgYSB2YWxpZCBzY3JpcHQ/XG4gIGlmICh3aXRuZXNzU2NyaXB0Q2h1bmtzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGZhbHNlXG5cbiAgdmFyIHdpdG5lc3NSYXdTY3JpcHRTaWcgPSBic2NyaXB0LmNvbXBpbGUoY2h1bmtzLnNsaWNlKDAsIC0xKSlcblxuICAvLyBtYXRjaCB0eXBlc1xuICBpZiAocDJwa2guaW5wdXQuY2hlY2sod2l0bmVzc1Jhd1NjcmlwdFNpZykgJiZcbiAgICBwMnBraC5vdXRwdXQuY2hlY2sod2l0bmVzc1NjcmlwdENodW5rcykpIHJldHVybiB0cnVlXG5cbiAgaWYgKHAybXMuaW5wdXQuY2hlY2sod2l0bmVzc1Jhd1NjcmlwdFNpZywgYWxsb3dJbmNvbXBsZXRlKSAmJlxuICAgIHAybXMub3V0cHV0LmNoZWNrKHdpdG5lc3NTY3JpcHRDaHVua3MpKSByZXR1cm4gdHJ1ZVxuXG4gIGlmIChwMnBrLmlucHV0LmNoZWNrKHdpdG5lc3NSYXdTY3JpcHRTaWcpICYmXG4gICAgcDJway5vdXRwdXQuY2hlY2sod2l0bmVzc1NjcmlwdENodW5rcykpIHJldHVybiB0cnVlXG5cbiAgcmV0dXJuIGZhbHNlXG59XG5jaGVjay50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnd2l0bmVzc1NjcmlwdEhhc2ggaW5wdXQnIH1cblxuZnVuY3Rpb24gZW5jb2RlU3RhY2sgKHdpdG5lc3NEYXRhLCB3aXRuZXNzU2NyaXB0KSB7XG4gIHR5cGVmb3JjZSh7XG4gICAgd2l0bmVzc0RhdGE6IFt0eXBlcy5CdWZmZXJdLFxuICAgIHdpdG5lc3NTY3JpcHQ6IHR5cGVzLkJ1ZmZlclxuICB9LCB7XG4gICAgd2l0bmVzc0RhdGE6IHdpdG5lc3NEYXRhLFxuICAgIHdpdG5lc3NTY3JpcHQ6IHdpdG5lc3NTY3JpcHRcbiAgfSlcblxuICByZXR1cm4gW10uY29uY2F0KHdpdG5lc3NEYXRhLCB3aXRuZXNzU2NyaXB0KVxufVxuXG5mdW5jdGlvbiBkZWNvZGVTdGFjayAoc3RhY2spIHtcbiAgdHlwZWZvcmNlKHR5cGVmb3JjZS5BcnJheSwgc3RhY2spXG4gIHR5cGVmb3JjZShjaGVjaywgc3RhY2spXG4gIHJldHVybiB7XG4gICAgd2l0bmVzc0RhdGE6IHN0YWNrLnNsaWNlKDAsIC0xKSxcbiAgICB3aXRuZXNzU2NyaXB0OiBzdGFja1tzdGFjay5sZW5ndGggLSAxXVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjaGVjazogY2hlY2ssXG4gIGRlY29kZVN0YWNrOiBkZWNvZGVTdGFjayxcbiAgZW5jb2RlU3RhY2s6IGVuY29kZVN0YWNrXG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgb3V0cHV0OiByZXF1aXJlKCcuL291dHB1dCcpXG59XG4iLCIvLyBPUF9SRVRVUk4ge2FhMjFhOWVkfSB7Y29tbWl0bWVudH1cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgYnNjcmlwdCA9IHJlcXVpcmUoJy4uLy4uL3NjcmlwdCcpXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuLi8uLi90eXBlcycpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcbnZhciBPUFMgPSByZXF1aXJlKCdiaXRjb2luLW9wcycpXG5cbnZhciBIRUFERVIgPSBCdWZmZXIuZnJvbSgnYWEyMWE5ZWQnLCAnaGV4JylcblxuZnVuY3Rpb24gY2hlY2sgKHNjcmlwdCkge1xuICB2YXIgYnVmZmVyID0gYnNjcmlwdC5jb21waWxlKHNjcmlwdClcblxuICByZXR1cm4gYnVmZmVyLmxlbmd0aCA+IDM3ICYmXG4gICAgYnVmZmVyWzBdID09PSBPUFMuT1BfUkVUVVJOICYmXG4gICAgYnVmZmVyWzFdID09PSAweDI0ICYmXG4gICAgYnVmZmVyLnNsaWNlKDIsIDYpLmVxdWFscyhIRUFERVIpXG59XG5cbmNoZWNrLnRvSlNPTiA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICdXaXRuZXNzIGNvbW1pdG1lbnQgb3V0cHV0JyB9XG5cbmZ1bmN0aW9uIGVuY29kZSAoY29tbWl0bWVudCkge1xuICB0eXBlZm9yY2UodHlwZXMuSGFzaDI1NmJpdCwgY29tbWl0bWVudClcblxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDM2KVxuICBIRUFERVIuY29weShidWZmZXIsIDApXG4gIGNvbW1pdG1lbnQuY29weShidWZmZXIsIDQpXG5cbiAgcmV0dXJuIGJzY3JpcHQuY29tcGlsZShbT1BTLk9QX1JFVFVSTiwgYnVmZmVyXSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlIChidWZmZXIpIHtcbiAgdHlwZWZvcmNlKGNoZWNrLCBidWZmZXIpXG5cbiAgcmV0dXJuIGJzY3JpcHQuZGVjb21waWxlKGJ1ZmZlcilbMV0uc2xpY2UoNCwgMzYpXG59XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBjaGVjazogY2hlY2ssXG4gIGRlY29kZTogZGVjb2RlLFxuICBlbmNvZGU6IGVuY29kZVxufVxuIiwidmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyXG52YXIgYmNyeXB0byA9IHJlcXVpcmUoJy4vY3J5cHRvJylcbnZhciBmYXN0TWVya2xlUm9vdCA9IHJlcXVpcmUoJ21lcmtsZS1saWIvZmFzdFJvb3QnKVxudmFyIHR5cGVmb3JjZSA9IHJlcXVpcmUoJ3R5cGVmb3JjZScpXG52YXIgdHlwZXMgPSByZXF1aXJlKCcuL3R5cGVzJylcbnZhciB2YXJ1aW50ID0gcmVxdWlyZSgndmFydWludC1iaXRjb2luJylcblxudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi90cmFuc2FjdGlvbicpXG5cbmZ1bmN0aW9uIEJsb2NrICgpIHtcbiAgdGhpcy52ZXJzaW9uID0gMVxuICB0aGlzLnByZXZIYXNoID0gbnVsbFxuICB0aGlzLm1lcmtsZVJvb3QgPSBudWxsXG4gIHRoaXMudGltZXN0YW1wID0gMFxuICB0aGlzLmJpdHMgPSAwXG4gIHRoaXMubm9uY2UgPSAwXG59XG5cbkJsb2NrLmZyb21CdWZmZXIgPSBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gIGlmIChidWZmZXIubGVuZ3RoIDwgODApIHRocm93IG5ldyBFcnJvcignQnVmZmVyIHRvbyBzbWFsbCAoPCA4MCBieXRlcyknKVxuXG4gIHZhciBvZmZzZXQgPSAwXG4gIGZ1bmN0aW9uIHJlYWRTbGljZSAobikge1xuICAgIG9mZnNldCArPSBuXG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZShvZmZzZXQgLSBuLCBvZmZzZXQpXG4gIH1cblxuICBmdW5jdGlvbiByZWFkVUludDMyICgpIHtcbiAgICB2YXIgaSA9IGJ1ZmZlci5yZWFkVUludDMyTEUob2Zmc2V0KVxuICAgIG9mZnNldCArPSA0XG4gICAgcmV0dXJuIGlcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlYWRJbnQzMiAoKSB7XG4gICAgdmFyIGkgPSBidWZmZXIucmVhZEludDMyTEUob2Zmc2V0KVxuICAgIG9mZnNldCArPSA0XG4gICAgcmV0dXJuIGlcbiAgfVxuXG4gIHZhciBibG9jayA9IG5ldyBCbG9jaygpXG4gIGJsb2NrLnZlcnNpb24gPSByZWFkSW50MzIoKVxuICBibG9jay5wcmV2SGFzaCA9IHJlYWRTbGljZSgzMilcbiAgYmxvY2subWVya2xlUm9vdCA9IHJlYWRTbGljZSgzMilcbiAgYmxvY2sudGltZXN0YW1wID0gcmVhZFVJbnQzMigpXG4gIGJsb2NrLmJpdHMgPSByZWFkVUludDMyKClcbiAgYmxvY2subm9uY2UgPSByZWFkVUludDMyKClcblxuICBpZiAoYnVmZmVyLmxlbmd0aCA9PT0gODApIHJldHVybiBibG9ja1xuXG4gIGZ1bmN0aW9uIHJlYWRWYXJJbnQgKCkge1xuICAgIHZhciB2aSA9IHZhcnVpbnQuZGVjb2RlKGJ1ZmZlciwgb2Zmc2V0KVxuICAgIG9mZnNldCArPSB2YXJ1aW50LmRlY29kZS5ieXRlc1xuICAgIHJldHVybiB2aVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZFRyYW5zYWN0aW9uICgpIHtcbiAgICB2YXIgdHggPSBUcmFuc2FjdGlvbi5mcm9tQnVmZmVyKGJ1ZmZlci5zbGljZShvZmZzZXQpLCBmYWxzZSwgdHJ1ZSlcbiAgICBvZmZzZXQgKz0gdHguYnl0ZUxlbmd0aCgpXG4gICAgcmV0dXJuIHR4XG4gIH1cblxuICB2YXIgblRyYW5zYWN0aW9ucyA9IHJlYWRWYXJJbnQoKVxuICBibG9jay50cmFuc2FjdGlvbnMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgblRyYW5zYWN0aW9uczsgKytpKSB7XG4gICAgdmFyIHR4ID0gcmVhZFRyYW5zYWN0aW9uKClcbiAgICBibG9jay50cmFuc2FjdGlvbnMucHVzaCh0eClcbiAgfVxuXG4gIHJldHVybiBibG9ja1xufVxuXG5CbG9jay5wcm90b3R5cGUuYnl0ZUxlbmd0aCA9IGZ1bmN0aW9uIChoZWFkZXJzT25seSkge1xuICBpZiAoaGVhZGVyc09ubHkgfHwgIXRoaXMudHJhbnNhY3Rpb25zKSByZXR1cm4gODBcblxuICByZXR1cm4gODAgKyB2YXJ1aW50LmVuY29kaW5nTGVuZ3RoKHRoaXMudHJhbnNhY3Rpb25zLmxlbmd0aCkgKyB0aGlzLnRyYW5zYWN0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHgpIHtcbiAgICByZXR1cm4gYSArIHguYnl0ZUxlbmd0aCgpXG4gIH0sIDApXG59XG5cbkJsb2NrLmZyb21IZXggPSBmdW5jdGlvbiAoaGV4KSB7XG4gIHJldHVybiBCbG9jay5mcm9tQnVmZmVyKEJ1ZmZlci5mcm9tKGhleCwgJ2hleCcpKVxufVxuXG5CbG9jay5wcm90b3R5cGUuZ2V0SGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGJjcnlwdG8uaGFzaDI1Nih0aGlzLnRvQnVmZmVyKHRydWUpKVxufVxuXG5CbG9jay5wcm90b3R5cGUuZ2V0SWQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldEhhc2goKS5yZXZlcnNlKCkudG9TdHJpbmcoJ2hleCcpXG59XG5cbkJsb2NrLnByb3RvdHlwZS5nZXRVVENEYXRlID0gZnVuY3Rpb24gKCkge1xuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKDApIC8vIGVwb2NoXG4gIGRhdGUuc2V0VVRDU2Vjb25kcyh0aGlzLnRpbWVzdGFtcClcblxuICByZXR1cm4gZGF0ZVxufVxuXG4vLyBUT0RPOiBidWZmZXIsIG9mZnNldCBjb21wYXRpYmlsaXR5XG5CbG9jay5wcm90b3R5cGUudG9CdWZmZXIgPSBmdW5jdGlvbiAoaGVhZGVyc09ubHkpIHtcbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLmJ5dGVMZW5ndGgoaGVhZGVyc09ubHkpKVxuXG4gIHZhciBvZmZzZXQgPSAwXG4gIGZ1bmN0aW9uIHdyaXRlU2xpY2UgKHNsaWNlKSB7XG4gICAgc2xpY2UuY29weShidWZmZXIsIG9mZnNldClcbiAgICBvZmZzZXQgKz0gc2xpY2UubGVuZ3RoXG4gIH1cblxuICBmdW5jdGlvbiB3cml0ZUludDMyIChpKSB7XG4gICAgYnVmZmVyLndyaXRlSW50MzJMRShpLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IDRcbiAgfVxuICBmdW5jdGlvbiB3cml0ZVVJbnQzMiAoaSkge1xuICAgIGJ1ZmZlci53cml0ZVVJbnQzMkxFKGksIG9mZnNldClcbiAgICBvZmZzZXQgKz0gNFxuICB9XG5cbiAgd3JpdGVJbnQzMih0aGlzLnZlcnNpb24pXG4gIHdyaXRlU2xpY2UodGhpcy5wcmV2SGFzaClcbiAgd3JpdGVTbGljZSh0aGlzLm1lcmtsZVJvb3QpXG4gIHdyaXRlVUludDMyKHRoaXMudGltZXN0YW1wKVxuICB3cml0ZVVJbnQzMih0aGlzLmJpdHMpXG4gIHdyaXRlVUludDMyKHRoaXMubm9uY2UpXG5cbiAgaWYgKGhlYWRlcnNPbmx5IHx8ICF0aGlzLnRyYW5zYWN0aW9ucykgcmV0dXJuIGJ1ZmZlclxuXG4gIHZhcnVpbnQuZW5jb2RlKHRoaXMudHJhbnNhY3Rpb25zLmxlbmd0aCwgYnVmZmVyLCBvZmZzZXQpXG4gIG9mZnNldCArPSB2YXJ1aW50LmVuY29kZS5ieXRlc1xuXG4gIHRoaXMudHJhbnNhY3Rpb25zLmZvckVhY2goZnVuY3Rpb24gKHR4KSB7XG4gICAgdmFyIHR4U2l6ZSA9IHR4LmJ5dGVMZW5ndGgoKSAvLyBUT0RPOiBleHRyYWN0IGZyb20gdG9CdWZmZXI/XG4gICAgdHgudG9CdWZmZXIoYnVmZmVyLCBvZmZzZXQpXG4gICAgb2Zmc2V0ICs9IHR4U2l6ZVxuICB9KVxuXG4gIHJldHVybiBidWZmZXJcbn1cblxuQmxvY2sucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24gKGhlYWRlcnNPbmx5KSB7XG4gIHJldHVybiB0aGlzLnRvQnVmZmVyKGhlYWRlcnNPbmx5KS50b1N0cmluZygnaGV4Jylcbn1cblxuQmxvY2suY2FsY3VsYXRlVGFyZ2V0ID0gZnVuY3Rpb24gKGJpdHMpIHtcbiAgdmFyIGV4cG9uZW50ID0gKChiaXRzICYgMHhmZjAwMDAwMCkgPj4gMjQpIC0gM1xuICB2YXIgbWFudGlzc2EgPSBiaXRzICYgMHgwMDdmZmZmZlxuICB2YXIgdGFyZ2V0ID0gQnVmZmVyLmFsbG9jKDMyLCAwKVxuICB0YXJnZXQud3JpdGVVSW50MzJCRShtYW50aXNzYSwgMjggLSBleHBvbmVudClcbiAgcmV0dXJuIHRhcmdldFxufVxuXG5CbG9jay5jYWxjdWxhdGVNZXJrbGVSb290ID0gZnVuY3Rpb24gKHRyYW5zYWN0aW9ucykge1xuICB0eXBlZm9yY2UoW3sgZ2V0SGFzaDogdHlwZXMuRnVuY3Rpb24gfV0sIHRyYW5zYWN0aW9ucylcbiAgaWYgKHRyYW5zYWN0aW9ucy5sZW5ndGggPT09IDApIHRocm93IFR5cGVFcnJvcignQ2Fubm90IGNvbXB1dGUgbWVya2xlIHJvb3QgZm9yIHplcm8gdHJhbnNhY3Rpb25zJylcblxuICB2YXIgaGFzaGVzID0gdHJhbnNhY3Rpb25zLm1hcChmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24uZ2V0SGFzaCgpXG4gIH0pXG5cbiAgcmV0dXJuIGZhc3RNZXJrbGVSb290KGhhc2hlcywgYmNyeXB0by5oYXNoMjU2KVxufVxuXG5CbG9jay5wcm90b3R5cGUuY2hlY2tNZXJrbGVSb290ID0gZnVuY3Rpb24gKCkge1xuICBpZiAoIXRoaXMudHJhbnNhY3Rpb25zKSByZXR1cm4gZmFsc2VcblxuICB2YXIgYWN0dWFsTWVya2xlUm9vdCA9IEJsb2NrLmNhbGN1bGF0ZU1lcmtsZVJvb3QodGhpcy50cmFuc2FjdGlvbnMpXG4gIHJldHVybiB0aGlzLm1lcmtsZVJvb3QuY29tcGFyZShhY3R1YWxNZXJrbGVSb290KSA9PT0gMFxufVxuXG5CbG9jay5wcm90b3R5cGUuY2hlY2tQcm9vZk9mV29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGhhc2ggPSB0aGlzLmdldEhhc2goKS5yZXZlcnNlKClcbiAgdmFyIHRhcmdldCA9IEJsb2NrLmNhbGN1bGF0ZVRhcmdldCh0aGlzLmJpdHMpXG5cbiAgcmV0dXJuIGhhc2guY29tcGFyZSh0YXJnZXQpIDw9IDBcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBCbG9ja1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcblxuZnVuY3Rpb24gY29weUJ1ZmZlcihzcmMsIHRhcmdldCwgb2Zmc2V0KSB7XG4gIHNyYy5jb3B5KHRhcmdldCwgb2Zmc2V0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEJ1ZmZlckxpc3QoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJ1ZmZlckxpc3QpO1xuXG4gICAgdGhpcy5oZWFkID0gbnVsbDtcbiAgICB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnB1c2ggPSBmdW5jdGlvbiBwdXNoKHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IG51bGwgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPiAwKSB0aGlzLnRhaWwubmV4dCA9IGVudHJ5O2Vsc2UgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgdGhpcy50YWlsID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS51bnNoaWZ0ID0gZnVuY3Rpb24gdW5zaGlmdCh2KSB7XG4gICAgdmFyIGVudHJ5ID0geyBkYXRhOiB2LCBuZXh0OiB0aGlzLmhlYWQgfTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHRoaXMudGFpbCA9IGVudHJ5O1xuICAgIHRoaXMuaGVhZCA9IGVudHJ5O1xuICAgICsrdGhpcy5sZW5ndGg7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuc2hpZnQgPSBmdW5jdGlvbiBzaGlmdCgpIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybjtcbiAgICB2YXIgcmV0ID0gdGhpcy5oZWFkLmRhdGE7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO2Vsc2UgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG4gICAgLS10aGlzLmxlbmd0aDtcbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gY2xlYXIoKSB7XG4gICAgdGhpcy5oZWFkID0gdGhpcy50YWlsID0gbnVsbDtcbiAgICB0aGlzLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuam9pbiA9IGZ1bmN0aW9uIGpvaW4ocykge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciByZXQgPSAnJyArIHAuZGF0YTtcbiAgICB3aGlsZSAocCA9IHAubmV4dCkge1xuICAgICAgcmV0ICs9IHMgKyBwLmRhdGE7XG4gICAgfXJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY29uY2F0ID0gZnVuY3Rpb24gY29uY2F0KG4pIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHJldHVybiBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAxKSByZXR1cm4gdGhpcy5oZWFkLmRhdGE7XG4gICAgdmFyIHJldCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuID4+PiAwKTtcbiAgICB2YXIgcCA9IHRoaXMuaGVhZDtcbiAgICB2YXIgaSA9IDA7XG4gICAgd2hpbGUgKHApIHtcbiAgICAgIGNvcHlCdWZmZXIocC5kYXRhLCByZXQsIGkpO1xuICAgICAgaSArPSBwLmRhdGEubGVuZ3RoO1xuICAgICAgcCA9IHAubmV4dDtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfTtcblxuICByZXR1cm4gQnVmZmVyTGlzdDtcbn0oKTtcblxuaWYgKHV0aWwgJiYgdXRpbC5pbnNwZWN0ICYmIHV0aWwuaW5zcGVjdC5jdXN0b20pIHtcbiAgbW9kdWxlLmV4cG9ydHMucHJvdG90eXBlW3V0aWwuaW5zcGVjdC5jdXN0b21dID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBvYmogPSB1dGlsLmluc3BlY3QoeyBsZW5ndGg6IHRoaXMubGVuZ3RoIH0pO1xuICAgIHJldHVybiB0aGlzLmNvbnN0cnVjdG9yLm5hbWUgKyAnICcgKyBvYmo7XG4gIH07XG59IiwidmFyIHNjb3BlID0gKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsKSB8fFxuICAgICAgICAgICAgKHR5cGVvZiBzZWxmICE9PSBcInVuZGVmaW5lZFwiICYmIHNlbGYpIHx8XG4gICAgICAgICAgICB3aW5kb3c7XG52YXIgYXBwbHkgPSBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHk7XG5cbi8vIERPTSBBUElzLCBmb3IgY29tcGxldGVuZXNzXG5cbmV4cG9ydHMuc2V0VGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFRpbWVvdXQoYXBwbHkuY2FsbChzZXRUaW1lb3V0LCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJUaW1lb3V0KTtcbn07XG5leHBvcnRzLnNldEludGVydmFsID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldEludGVydmFsLCBzY29wZSwgYXJndW1lbnRzKSwgY2xlYXJJbnRlcnZhbCk7XG59O1xuZXhwb3J0cy5jbGVhclRpbWVvdXQgPVxuZXhwb3J0cy5jbGVhckludGVydmFsID0gZnVuY3Rpb24odGltZW91dCkge1xuICBpZiAodGltZW91dCkge1xuICAgIHRpbWVvdXQuY2xvc2UoKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gVGltZW91dChpZCwgY2xlYXJGbikge1xuICB0aGlzLl9pZCA9IGlkO1xuICB0aGlzLl9jbGVhckZuID0gY2xlYXJGbjtcbn1cblRpbWVvdXQucHJvdG90eXBlLnVucmVmID0gVGltZW91dC5wcm90b3R5cGUucmVmID0gZnVuY3Rpb24oKSB7fTtcblRpbWVvdXQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24oKSB7XG4gIHRoaXMuX2NsZWFyRm4uY2FsbChzY29wZSwgdGhpcy5faWQpO1xufTtcblxuLy8gRG9lcyBub3Qgc3RhcnQgdGhlIHRpbWUsIGp1c3Qgc2V0cyB1cCB0aGUgbWVtYmVycyBuZWVkZWQuXG5leHBvcnRzLmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0sIG1zZWNzKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSBtc2Vjcztcbn07XG5cbmV4cG9ydHMudW5lbnJvbGwgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcbiAgaXRlbS5faWRsZVRpbWVvdXQgPSAtMTtcbn07XG5cbmV4cG9ydHMuX3VucmVmQWN0aXZlID0gZXhwb3J0cy5hY3RpdmUgPSBmdW5jdGlvbihpdGVtKSB7XG4gIGNsZWFyVGltZW91dChpdGVtLl9pZGxlVGltZW91dElkKTtcblxuICB2YXIgbXNlY3MgPSBpdGVtLl9pZGxlVGltZW91dDtcbiAgaWYgKG1zZWNzID49IDApIHtcbiAgICBpdGVtLl9pZGxlVGltZW91dElkID0gc2V0VGltZW91dChmdW5jdGlvbiBvblRpbWVvdXQoKSB7XG4gICAgICBpZiAoaXRlbS5fb25UaW1lb3V0KVxuICAgICAgICBpdGVtLl9vblRpbWVvdXQoKTtcbiAgICB9LCBtc2Vjcyk7XG4gIH1cbn07XG5cbi8vIHNldGltbWVkaWF0ZSBhdHRhY2hlcyBpdHNlbGYgdG8gdGhlIGdsb2JhbCBvYmplY3RcbnJlcXVpcmUoXCJzZXRpbW1lZGlhdGVcIik7XG4vLyBPbiBzb21lIGV4b3RpYyBlbnZpcm9ubWVudHMsIGl0J3Mgbm90IGNsZWFyIHdoaWNoIG9iamVjdCBgc2V0aW1tZWRpYXRlYCB3YXNcbi8vIGFibGUgdG8gaW5zdGFsbCBvbnRvLiAgU2VhcmNoIGVhY2ggcG9zc2liaWxpdHkgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlXG4vLyBgc2V0aW1tZWRpYXRlYCBsaWJyYXJ5LlxuZXhwb3J0cy5zZXRJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5zZXRJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5zZXRJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICh0aGlzICYmIHRoaXMuc2V0SW1tZWRpYXRlKTtcbmV4cG9ydHMuY2xlYXJJbW1lZGlhdGUgPSAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZi5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwuY2xlYXJJbW1lZGlhdGUpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5jbGVhckltbWVkaWF0ZSk7XG4iLCIoZnVuY3Rpb24gKGdsb2JhbCwgdW5kZWZpbmVkKSB7XG4gICAgXCJ1c2Ugc3RyaWN0XCI7XG5cbiAgICBpZiAoZ2xvYmFsLnNldEltbWVkaWF0ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5leHRIYW5kbGUgPSAxOyAvLyBTcGVjIHNheXMgZ3JlYXRlciB0aGFuIHplcm9cbiAgICB2YXIgdGFza3NCeUhhbmRsZSA9IHt9O1xuICAgIHZhciBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICB2YXIgZG9jID0gZ2xvYmFsLmRvY3VtZW50O1xuICAgIHZhciByZWdpc3RlckltbWVkaWF0ZTtcblxuICAgIGZ1bmN0aW9uIHNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuICAgICAgLy8gQ2FsbGJhY2sgY2FuIGVpdGhlciBiZSBhIGZ1bmN0aW9uIG9yIGEgc3RyaW5nXG4gICAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgY2FsbGJhY2sgPSBuZXcgRnVuY3Rpb24oXCJcIiArIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICAgIC8vIENvcHkgZnVuY3Rpb24gYXJndW1lbnRzXG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBhcmdzW2ldID0gYXJndW1lbnRzW2kgKyAxXTtcbiAgICAgIH1cbiAgICAgIC8vIFN0b3JlIGFuZCByZWdpc3RlciB0aGUgdGFza1xuICAgICAgdmFyIHRhc2sgPSB7IGNhbGxiYWNrOiBjYWxsYmFjaywgYXJnczogYXJncyB9O1xuICAgICAgdGFza3NCeUhhbmRsZVtuZXh0SGFuZGxlXSA9IHRhc2s7XG4gICAgICByZWdpc3RlckltbWVkaWF0ZShuZXh0SGFuZGxlKTtcbiAgICAgIHJldHVybiBuZXh0SGFuZGxlKys7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYXJJbW1lZGlhdGUoaGFuZGxlKSB7XG4gICAgICAgIGRlbGV0ZSB0YXNrc0J5SGFuZGxlW2hhbmRsZV07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuKHRhc2spIHtcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gdGFzay5jYWxsYmFjaztcbiAgICAgICAgdmFyIGFyZ3MgPSB0YXNrLmFyZ3M7XG4gICAgICAgIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBjYWxsYmFjayhhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcnVuSWZQcmVzZW50KGhhbmRsZSkge1xuICAgICAgICAvLyBGcm9tIHRoZSBzcGVjOiBcIldhaXQgdW50aWwgYW55IGludm9jYXRpb25zIG9mIHRoaXMgYWxnb3JpdGhtIHN0YXJ0ZWQgYmVmb3JlIHRoaXMgb25lIGhhdmUgY29tcGxldGVkLlwiXG4gICAgICAgIC8vIFNvIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIGEgdGFzaywgd2UnbGwgbmVlZCB0byBkZWxheSB0aGlzIGludm9jYXRpb24uXG4gICAgICAgIGlmIChjdXJyZW50bHlSdW5uaW5nQVRhc2spIHtcbiAgICAgICAgICAgIC8vIERlbGF5IGJ5IGRvaW5nIGEgc2V0VGltZW91dC4gc2V0SW1tZWRpYXRlIHdhcyB0cmllZCBpbnN0ZWFkLCBidXQgaW4gRmlyZWZveCA3IGl0IGdlbmVyYXRlZCBhXG4gICAgICAgICAgICAvLyBcInRvbyBtdWNoIHJlY3Vyc2lvblwiIGVycm9yLlxuICAgICAgICAgICAgc2V0VGltZW91dChydW5JZlByZXNlbnQsIDAsIGhhbmRsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgdGFzayA9IHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICAgICAgICAgIGlmICh0YXNrKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBydW4odGFzayk7XG4gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJbW1lZGlhdGUoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudGx5UnVubmluZ0FUYXNrID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHsgcnVuSWZQcmVzZW50KGhhbmRsZSk7IH0pO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGNhblVzZVBvc3RNZXNzYWdlKCkge1xuICAgICAgICAvLyBUaGUgdGVzdCBhZ2FpbnN0IGBpbXBvcnRTY3JpcHRzYCBwcmV2ZW50cyB0aGlzIGltcGxlbWVudGF0aW9uIGZyb20gYmVpbmcgaW5zdGFsbGVkIGluc2lkZSBhIHdlYiB3b3JrZXIsXG4gICAgICAgIC8vIHdoZXJlIGBnbG9iYWwucG9zdE1lc3NhZ2VgIG1lYW5zIHNvbWV0aGluZyBjb21wbGV0ZWx5IGRpZmZlcmVudCBhbmQgY2FuJ3QgYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgICBpZiAoZ2xvYmFsLnBvc3RNZXNzYWdlICYmICFnbG9iYWwuaW1wb3J0U2NyaXB0cykge1xuICAgICAgICAgICAgdmFyIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXMgPSB0cnVlO1xuICAgICAgICAgICAgdmFyIG9sZE9uTWVzc2FnZSA9IGdsb2JhbC5vbm1lc3NhZ2U7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IGZhbHNlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGdsb2JhbC5wb3N0TWVzc2FnZShcIlwiLCBcIipcIik7XG4gICAgICAgICAgICBnbG9iYWwub25tZXNzYWdlID0gb2xkT25NZXNzYWdlO1xuICAgICAgICAgICAgcmV0dXJuIHBvc3RNZXNzYWdlSXNBc3luY2hyb25vdXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgLy8gSW5zdGFsbHMgYW4gZXZlbnQgaGFuZGxlciBvbiBgZ2xvYmFsYCBmb3IgdGhlIGBtZXNzYWdlYCBldmVudDogc2VlXG4gICAgICAgIC8vICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vRE9NL3dpbmRvdy5wb3N0TWVzc2FnZVxuICAgICAgICAvLyAqIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL2NvbW1zLmh0bWwjY3Jvc3NEb2N1bWVudE1lc3NhZ2VzXG5cbiAgICAgICAgdmFyIG1lc3NhZ2VQcmVmaXggPSBcInNldEltbWVkaWF0ZSRcIiArIE1hdGgucmFuZG9tKCkgKyBcIiRcIjtcbiAgICAgICAgdmFyIG9uR2xvYmFsTWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuc291cmNlID09PSBnbG9iYWwgJiZcbiAgICAgICAgICAgICAgICB0eXBlb2YgZXZlbnQuZGF0YSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmRhdGEuaW5kZXhPZihtZXNzYWdlUHJlZml4KSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHJ1bklmUHJlc2VudCgrZXZlbnQuZGF0YS5zbGljZShtZXNzYWdlUHJlZml4Lmxlbmd0aCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcikge1xuICAgICAgICAgICAgZ2xvYmFsLmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSwgZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZ2xvYmFsLmF0dGFjaEV2ZW50KFwib25tZXNzYWdlXCIsIG9uR2xvYmFsTWVzc2FnZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKG1lc3NhZ2VQcmVmaXggKyBoYW5kbGUsIFwiKlwiKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbiAgICAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgdmFyIGhhbmRsZSA9IGV2ZW50LmRhdGE7XG4gICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZShoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBhIDxzY3JpcHQ+IGVsZW1lbnQ7IGl0cyByZWFkeXN0YXRlY2hhbmdlIGV2ZW50IHdpbGwgYmUgZmlyZWQgYXN5bmNocm9ub3VzbHkgb25jZSBpdCBpcyBpbnNlcnRlZFxuICAgICAgICAgICAgLy8gaW50byB0aGUgZG9jdW1lbnQuIERvIHNvLCB0aHVzIHF1ZXVpbmcgdXAgdGhlIHRhc2suIFJlbWVtYmVyIHRvIGNsZWFuIHVwIG9uY2UgaXQncyBiZWVuIGNhbGxlZC5cbiAgICAgICAgICAgIHZhciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgICAgIHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KGhhbmRsZSk7XG4gICAgICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaHRtbC5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgICAgIHNjcmlwdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaHRtbC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKSB7XG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIHNob3VsZCBhdHRhY2ggdG8gdGhlIHByb3RvdHlwZSBvZiBnbG9iYWwsIHNpbmNlIHRoYXQgaXMgd2hlcmUgc2V0VGltZW91dCBldCBhbC4gbGl2ZS5cbiAgICB2YXIgYXR0YWNoVG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YgJiYgT2JqZWN0LmdldFByb3RvdHlwZU9mKGdsb2JhbCk7XG4gICAgYXR0YWNoVG8gPSBhdHRhY2hUbyAmJiBhdHRhY2hUby5zZXRUaW1lb3V0ID8gYXR0YWNoVG8gOiBnbG9iYWw7XG5cbiAgICAvLyBEb24ndCBnZXQgZm9vbGVkIGJ5IGUuZy4gYnJvd3NlcmlmeSBlbnZpcm9ubWVudHMuXG4gICAgaWYgKHt9LnRvU3RyaW5nLmNhbGwoZ2xvYmFsLnByb2Nlc3MpID09PSBcIltvYmplY3QgcHJvY2Vzc11cIikge1xuICAgICAgICAvLyBGb3IgTm9kZS5qcyBiZWZvcmUgMC45XG4gICAgICAgIGluc3RhbGxOZXh0VGlja0ltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGNhblVzZVBvc3RNZXNzYWdlKCkpIHtcbiAgICAgICAgLy8gRm9yIG5vbi1JRTEwIG1vZGVybiBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsUG9zdE1lc3NhZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChnbG9iYWwuTWVzc2FnZUNoYW5uZWwpIHtcbiAgICAgICAgLy8gRm9yIHdlYiB3b3JrZXJzLCB3aGVyZSBzdXBwb3J0ZWRcbiAgICAgICAgaW5zdGFsbE1lc3NhZ2VDaGFubmVsSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoZG9jICYmIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgaW4gZG9jLmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIikpIHtcbiAgICAgICAgLy8gRm9yIElFIDbigJM4XG4gICAgICAgIGluc3RhbGxSZWFkeVN0YXRlQ2hhbmdlSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEZvciBvbGRlciBicm93c2Vyc1xuICAgICAgICBpbnN0YWxsU2V0VGltZW91dEltcGxlbWVudGF0aW9uKCk7XG4gICAgfVxuXG4gICAgYXR0YWNoVG8uc2V0SW1tZWRpYXRlID0gc2V0SW1tZWRpYXRlO1xuICAgIGF0dGFjaFRvLmNsZWFySW1tZWRpYXRlID0gY2xlYXJJbW1lZGlhdGU7XG59KHR5cGVvZiBzZWxmID09PSBcInVuZGVmaW5lZFwiID8gdHlwZW9mIGdsb2JhbCA9PT0gXCJ1bmRlZmluZWRcIiA/IHRoaXMgOiBnbG9iYWwgOiBzZWxmKSk7XG4iLCJcbi8qKlxuICogTW9kdWxlIGV4cG9ydHMuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBkZXByZWNhdGU7XG5cbi8qKlxuICogTWFyayB0aGF0IGEgbWV0aG9kIHNob3VsZCBub3QgYmUgdXNlZC5cbiAqIFJldHVybnMgYSBtb2RpZmllZCBmdW5jdGlvbiB3aGljaCB3YXJucyBvbmNlIGJ5IGRlZmF1bHQuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS5ub0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGl0IGlzIGEgbm8tb3AuXG4gKlxuICogSWYgYGxvY2FsU3RvcmFnZS50aHJvd0RlcHJlY2F0aW9uID0gdHJ1ZWAgaXMgc2V0LCB0aGVuIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXG4gKiB3aWxsIHRocm93IGFuIEVycm9yIHdoZW4gaW52b2tlZC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRyYWNlRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgaW52b2tlIGBjb25zb2xlLnRyYWNlKClgIGluc3RlYWQgb2YgYGNvbnNvbGUuZXJyb3IoKWAuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZm4gLSB0aGUgZnVuY3Rpb24gdG8gZGVwcmVjYXRlXG4gKiBAcGFyYW0ge1N0cmluZ30gbXNnIC0gdGhlIHN0cmluZyB0byBwcmludCB0byB0aGUgY29uc29sZSB3aGVuIGBmbmAgaXMgaW52b2tlZFxuICogQHJldHVybnMge0Z1bmN0aW9ufSBhIG5ldyBcImRlcHJlY2F0ZWRcIiB2ZXJzaW9uIG9mIGBmbmBcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gZGVwcmVjYXRlIChmbiwgbXNnKSB7XG4gIGlmIChjb25maWcoJ25vRGVwcmVjYXRpb24nKSkge1xuICAgIHJldHVybiBmbjtcbiAgfVxuXG4gIHZhciB3YXJuZWQgPSBmYWxzZTtcbiAgZnVuY3Rpb24gZGVwcmVjYXRlZCgpIHtcbiAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgaWYgKGNvbmZpZygndGhyb3dEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfSBlbHNlIGlmIChjb25maWcoJ3RyYWNlRGVwcmVjYXRpb24nKSkge1xuICAgICAgICBjb25zb2xlLnRyYWNlKG1zZyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLndhcm4obXNnKTtcbiAgICAgIH1cbiAgICAgIHdhcm5lZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgcmV0dXJuIGRlcHJlY2F0ZWQ7XG59XG5cbi8qKlxuICogQ2hlY2tzIGBsb2NhbFN0b3JhZ2VgIGZvciBib29sZWFuIHZhbHVlcyBmb3IgdGhlIGdpdmVuIGBuYW1lYC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gbmFtZVxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKiBAYXBpIHByaXZhdGVcbiAqL1xuXG5mdW5jdGlvbiBjb25maWcgKG5hbWUpIHtcbiAgLy8gYWNjZXNzaW5nIGdsb2JhbC5sb2NhbFN0b3JhZ2UgY2FuIHRyaWdnZXIgYSBET01FeGNlcHRpb24gaW4gc2FuZGJveGVkIGlmcmFtZXNcbiAgdHJ5IHtcbiAgICBpZiAoIWdsb2JhbC5sb2NhbFN0b3JhZ2UpIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoXykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdmFsID0gZ2xvYmFsLmxvY2FsU3RvcmFnZVtuYW1lXTtcbiAgaWYgKG51bGwgPT0gdmFsKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSc7XG59XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSBwYXNzdGhyb3VnaCBzdHJlYW0uXG4vLyBiYXNpY2FsbHkganVzdCB0aGUgbW9zdCBtaW5pbWFsIHNvcnQgb2YgVHJhbnNmb3JtIHN0cmVhbS5cbi8vIEV2ZXJ5IHdyaXR0ZW4gY2h1bmsgZ2V0cyBvdXRwdXQgYXMtaXMuXG5cbid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSBQYXNzVGhyb3VnaDtcblxudmFyIFRyYW5zZm9ybSA9IHJlcXVpcmUoJy4vX3N0cmVhbV90cmFuc2Zvcm0nKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gcmVxdWlyZSgnY29yZS11dGlsLWlzJyk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFBhc3NUaHJvdWdoLCBUcmFuc2Zvcm0pO1xuXG5mdW5jdGlvbiBQYXNzVGhyb3VnaChvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBQYXNzVGhyb3VnaCkpIHJldHVybiBuZXcgUGFzc1Rocm91Z2gob3B0aW9ucyk7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0aW9ucyk7XG59XG5cblBhc3NUaHJvdWdoLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgY2IobnVsbCwgY2h1bmspO1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fd3JpdGFibGUuanMnKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9kdXBsZXguanMnKTtcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9yZWFkYWJsZScpLlRyYW5zZm9ybVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3JlYWRhYmxlJykuUGFzc1Rocm91Z2hcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTAsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGRlcml2ZWQgZnJvbSBzaGExLmpzIG9mIHRoZSBzYW1lIHJlcG9zaXRvcnkuXG4gKiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIFNIQS0wIGFuZCBTSEEtMSBpcyBqdXN0IGEgYml0d2lzZSByb3RhdGUgbGVmdFxuICogb3BlcmF0aW9uIHdhcyBhZGRlZC5cbiAqL1xuXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEsgPSBbXG4gIDB4NWE4Mjc5OTksIDB4NmVkOWViYTEsIDB4OGYxYmJjZGMgfCAwLCAweGNhNjJjMWQ2IHwgMFxuXVxuXG52YXIgVyA9IG5ldyBBcnJheSg4MClcblxuZnVuY3Rpb24gU2hhICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGEsIEhhc2gpXG5cblNoYS5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYSA9IDB4Njc0NTIzMDFcbiAgdGhpcy5fYiA9IDB4ZWZjZGFiODlcbiAgdGhpcy5fYyA9IDB4OThiYWRjZmVcbiAgdGhpcy5fZCA9IDB4MTAzMjU0NzZcbiAgdGhpcy5fZSA9IDB4YzNkMmUxZjBcblxuICByZXR1cm4gdGhpc1xufVxuXG5mdW5jdGlvbiByb3RsNSAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDUpIHwgKG51bSA+Pj4gMjcpXG59XG5cbmZ1bmN0aW9uIHJvdGwzMCAobnVtKSB7XG4gIHJldHVybiAobnVtIDw8IDMwKSB8IChudW0gPj4+IDIpXG59XG5cbmZ1bmN0aW9uIGZ0IChzLCBiLCBjLCBkKSB7XG4gIGlmIChzID09PSAwKSByZXR1cm4gKGIgJiBjKSB8ICgofmIpICYgZClcbiAgaWYgKHMgPT09IDIpIHJldHVybiAoYiAmIGMpIHwgKGIgJiBkKSB8IChjICYgZClcbiAgcmV0dXJuIGIgXiBjIF4gZFxufVxuXG5TaGEucHJvdG90eXBlLl91cGRhdGUgPSBmdW5jdGlvbiAoTSkge1xuICB2YXIgVyA9IHRoaXMuX3dcblxuICB2YXIgYSA9IHRoaXMuX2EgfCAwXG4gIHZhciBiID0gdGhpcy5fYiB8IDBcbiAgdmFyIGMgPSB0aGlzLl9jIHwgMFxuICB2YXIgZCA9IHRoaXMuX2QgfCAwXG4gIHZhciBlID0gdGhpcy5fZSB8IDBcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyArK2kpIFdbaV0gPSBNLnJlYWRJbnQzMkJFKGkgKiA0KVxuICBmb3IgKDsgaSA8IDgwOyArK2kpIFdbaV0gPSBXW2kgLSAzXSBeIFdbaSAtIDhdIF4gV1tpIC0gMTRdIF4gV1tpIC0gMTZdXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhLnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjApXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSB8IDAsIDApXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2IgfCAwLCA0KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9jIHwgMCwgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCB8IDAsIDEyKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9lIHwgMCwgMTYpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGFcbiIsIi8qXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTEsIGFzIGRlZmluZWRcbiAqIGluIEZJUFMgUFVCIDE4MC0xXG4gKiBWZXJzaW9uIDIuMWEgQ29weXJpZ2h0IFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDIuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgQlNEIExpY2Vuc2VcbiAqIFNlZSBodHRwOi8vcGFqaG9tZS5vcmcudWsvY3J5cHQvbWQ1IGZvciBkZXRhaWxzLlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBIYXNoID0gcmVxdWlyZSgnLi9oYXNoJylcbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxuXG52YXIgSyA9IFtcbiAgMHg1YTgyNzk5OSwgMHg2ZWQ5ZWJhMSwgMHg4ZjFiYmNkYyB8IDAsIDB4Y2E2MmMxZDYgfCAwXG5dXG5cbnZhciBXID0gbmV3IEFycmF5KDgwKVxuXG5mdW5jdGlvbiBTaGExICgpIHtcbiAgdGhpcy5pbml0KClcbiAgdGhpcy5fdyA9IFdcblxuICBIYXNoLmNhbGwodGhpcywgNjQsIDU2KVxufVxuXG5pbmhlcml0cyhTaGExLCBIYXNoKVxuXG5TaGExLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLl9hID0gMHg2NzQ1MjMwMVxuICB0aGlzLl9iID0gMHhlZmNkYWI4OVxuICB0aGlzLl9jID0gMHg5OGJhZGNmZVxuICB0aGlzLl9kID0gMHgxMDMyNTQ3NlxuICB0aGlzLl9lID0gMHhjM2QyZTFmMFxuXG4gIHJldHVybiB0aGlzXG59XG5cbmZ1bmN0aW9uIHJvdGwxIChudW0pIHtcbiAgcmV0dXJuIChudW0gPDwgMSkgfCAobnVtID4+PiAzMSlcbn1cblxuZnVuY3Rpb24gcm90bDUgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCA1KSB8IChudW0gPj4+IDI3KVxufVxuXG5mdW5jdGlvbiByb3RsMzAgKG51bSkge1xuICByZXR1cm4gKG51bSA8PCAzMCkgfCAobnVtID4+PiAyKVxufVxuXG5mdW5jdGlvbiBmdCAocywgYiwgYywgZCkge1xuICBpZiAocyA9PT0gMCkgcmV0dXJuIChiICYgYykgfCAoKH5iKSAmIGQpXG4gIGlmIChzID09PSAyKSByZXR1cm4gKGIgJiBjKSB8IChiICYgZCkgfCAoYyAmIGQpXG4gIHJldHVybiBiIF4gYyBeIGRcbn1cblxuU2hhMS5wcm90b3R5cGUuX3VwZGF0ZSA9IGZ1bmN0aW9uIChNKSB7XG4gIHZhciBXID0gdGhpcy5fd1xuXG4gIHZhciBhID0gdGhpcy5fYSB8IDBcbiAgdmFyIGIgPSB0aGlzLl9iIHwgMFxuICB2YXIgYyA9IHRoaXMuX2MgfCAwXG4gIHZhciBkID0gdGhpcy5fZCB8IDBcbiAgdmFyIGUgPSB0aGlzLl9lIHwgMFxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgMTY7ICsraSkgV1tpXSA9IE0ucmVhZEludDMyQkUoaSAqIDQpXG4gIGZvciAoOyBpIDwgODA7ICsraSkgV1tpXSA9IHJvdGwxKFdbaSAtIDNdIF4gV1tpIC0gOF0gXiBXW2kgLSAxNF0gXiBXW2kgLSAxNl0pXG5cbiAgZm9yICh2YXIgaiA9IDA7IGogPCA4MDsgKytqKSB7XG4gICAgdmFyIHMgPSB+fihqIC8gMjApXG4gICAgdmFyIHQgPSAocm90bDUoYSkgKyBmdChzLCBiLCBjLCBkKSArIGUgKyBXW2pdICsgS1tzXSkgfCAwXG5cbiAgICBlID0gZFxuICAgIGQgPSBjXG4gICAgYyA9IHJvdGwzMChiKVxuICAgIGIgPSBhXG4gICAgYSA9IHRcbiAgfVxuXG4gIHRoaXMuX2EgPSAoYSArIHRoaXMuX2EpIHwgMFxuICB0aGlzLl9iID0gKGIgKyB0aGlzLl9iKSB8IDBcbiAgdGhpcy5fYyA9IChjICsgdGhpcy5fYykgfCAwXG4gIHRoaXMuX2QgPSAoZCArIHRoaXMuX2QpIHwgMFxuICB0aGlzLl9lID0gKGUgKyB0aGlzLl9lKSB8IDBcbn1cblxuU2hhMS5wcm90b3R5cGUuX2hhc2ggPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBIID0gQnVmZmVyLmFsbG9jVW5zYWZlKDIwKVxuXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2EgfCAwLCAwKVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9iIHwgMCwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYyB8IDAsIDgpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2QgfCAwLCAxMilcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZSB8IDAsIDE2KVxuXG4gIHJldHVybiBIXG59XG5cbm1vZHVsZS5leHBvcnRzID0gU2hhMVxuIiwiLyoqXG4gKiBBIEphdmFTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFNlY3VyZSBIYXNoIEFsZ29yaXRobSwgU0hBLTI1NiwgYXMgZGVmaW5lZFxuICogaW4gRklQUyAxODAtMlxuICogVmVyc2lvbiAyLjItYmV0YSBDb3B5cmlnaHQgQW5nZWwgTWFyaW4sIFBhdWwgSm9obnN0b24gMjAwMCAtIDIwMDkuXG4gKiBPdGhlciBjb250cmlidXRvcnM6IEdyZWcgSG9sdCwgQW5kcmV3IEtlcGVydCwgWWRuYXIsIExvc3RpbmV0XG4gKlxuICovXG5cbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTaGEyNTYgPSByZXF1aXJlKCcuL3NoYTI1NicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIFcgPSBuZXcgQXJyYXkoNjQpXG5cbmZ1bmN0aW9uIFNoYTIyNCAoKSB7XG4gIHRoaXMuaW5pdCgpXG5cbiAgdGhpcy5fdyA9IFcgLy8gbmV3IEFycmF5KDY0KVxuXG4gIEhhc2guY2FsbCh0aGlzLCA2NCwgNTYpXG59XG5cbmluaGVyaXRzKFNoYTIyNCwgU2hhMjU2KVxuXG5TaGEyMjQucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX2EgPSAweGMxMDU5ZWQ4XG4gIHRoaXMuX2IgPSAweDM2N2NkNTA3XG4gIHRoaXMuX2MgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2QgPSAweGY3MGU1OTM5XG4gIHRoaXMuX2UgPSAweGZmYzAwYjMxXG4gIHRoaXMuX2YgPSAweDY4NTgxNTExXG4gIHRoaXMuX2cgPSAweDY0Zjk4ZmE3XG4gIHRoaXMuX2ggPSAweGJlZmE0ZmE0XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuU2hhMjI0LnByb3RvdHlwZS5faGFzaCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIEggPSBCdWZmZXIuYWxsb2NVbnNhZmUoMjgpXG5cbiAgSC53cml0ZUludDMyQkUodGhpcy5fYSwgMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYiwgNClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fYywgOClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZCwgMTIpXG4gIEgud3JpdGVJbnQzMkJFKHRoaXMuX2UsIDE2KVxuICBILndyaXRlSW50MzJCRSh0aGlzLl9mLCAyMClcbiAgSC53cml0ZUludDMyQkUodGhpcy5fZywgMjQpXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEyMjRcbiIsInZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciBTSEE1MTIgPSByZXF1aXJlKCcuL3NoYTUxMicpXG52YXIgSGFzaCA9IHJlcXVpcmUoJy4vaGFzaCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIFcgPSBuZXcgQXJyYXkoMTYwKVxuXG5mdW5jdGlvbiBTaGEzODQgKCkge1xuICB0aGlzLmluaXQoKVxuICB0aGlzLl93ID0gV1xuXG4gIEhhc2guY2FsbCh0aGlzLCAxMjgsIDExMilcbn1cblxuaW5oZXJpdHMoU2hhMzg0LCBTSEE1MTIpXG5cblNoYTM4NC5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5fYWggPSAweGNiYmI5ZDVkXG4gIHRoaXMuX2JoID0gMHg2MjlhMjkyYVxuICB0aGlzLl9jaCA9IDB4OTE1OTAxNWFcbiAgdGhpcy5fZGggPSAweDE1MmZlY2Q4XG4gIHRoaXMuX2VoID0gMHg2NzMzMjY2N1xuICB0aGlzLl9maCA9IDB4OGViNDRhODdcbiAgdGhpcy5fZ2ggPSAweGRiMGMyZTBkXG4gIHRoaXMuX2hoID0gMHg0N2I1NDgxZFxuXG4gIHRoaXMuX2FsID0gMHhjMTA1OWVkOFxuICB0aGlzLl9ibCA9IDB4MzY3Y2Q1MDdcbiAgdGhpcy5fY2wgPSAweDMwNzBkZDE3XG4gIHRoaXMuX2RsID0gMHhmNzBlNTkzOVxuICB0aGlzLl9lbCA9IDB4ZmZjMDBiMzFcbiAgdGhpcy5fZmwgPSAweDY4NTgxNTExXG4gIHRoaXMuX2dsID0gMHg2NGY5OGZhN1xuICB0aGlzLl9obCA9IDB4YmVmYTRmYTRcblxuICByZXR1cm4gdGhpc1xufVxuXG5TaGEzODQucHJvdG90eXBlLl9oYXNoID0gZnVuY3Rpb24gKCkge1xuICB2YXIgSCA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSg0OClcblxuICBmdW5jdGlvbiB3cml0ZUludDY0QkUgKGgsIGwsIG9mZnNldCkge1xuICAgIEgud3JpdGVJbnQzMkJFKGgsIG9mZnNldClcbiAgICBILndyaXRlSW50MzJCRShsLCBvZmZzZXQgKyA0KVxuICB9XG5cbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2FoLCB0aGlzLl9hbCwgMClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2JoLCB0aGlzLl9ibCwgOClcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2NoLCB0aGlzLl9jbCwgMTYpXG4gIHdyaXRlSW50NjRCRSh0aGlzLl9kaCwgdGhpcy5fZGwsIDI0KVxuICB3cml0ZUludDY0QkUodGhpcy5fZWgsIHRoaXMuX2VsLCAzMilcbiAgd3JpdGVJbnQ2NEJFKHRoaXMuX2ZoLCB0aGlzLl9mbCwgNDApXG5cbiAgcmV0dXJuIEhcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBTaGEzODRcbiIsIi8vIGNvbnN0YW50LXNwYWNlIG1lcmtsZSByb290IGNhbGN1bGF0aW9uIGFsZ29yaXRobVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBmYXN0Um9vdCAodmFsdWVzLCBkaWdlc3RGbikge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkgdGhyb3cgVHlwZUVycm9yKCdFeHBlY3RlZCB2YWx1ZXMgQXJyYXknKVxuICBpZiAodHlwZW9mIGRpZ2VzdEZuICE9PSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoJ0V4cGVjdGVkIGRpZ2VzdCBGdW5jdGlvbicpXG5cbiAgdmFyIGxlbmd0aCA9IHZhbHVlcy5sZW5ndGhcbiAgdmFyIHJlc3VsdHMgPSB2YWx1ZXMuY29uY2F0KClcblxuICB3aGlsZSAobGVuZ3RoID4gMSkge1xuICAgIHZhciBqID0gMFxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMiwgKytqKSB7XG4gICAgICB2YXIgbGVmdCA9IHJlc3VsdHNbaV1cbiAgICAgIHZhciByaWdodCA9IGkgKyAxID09PSBsZW5ndGggPyBsZWZ0IDogcmVzdWx0c1tpICsgMV1cbiAgICAgIHZhciBkYXRhID0gQnVmZmVyLmNvbmNhdChbbGVmdCwgcmlnaHRdKVxuXG4gICAgICByZXN1bHRzW2pdID0gZGlnZXN0Rm4oZGF0YSlcbiAgICB9XG5cbiAgICBsZW5ndGggPSBqXG4gIH1cblxuICByZXR1cm4gcmVzdWx0c1swXVxufVxuIiwidmFyIGFzc2VydCA9IHJlcXVpcmUoJ25hbm9hc3NlcnQnKVxudmFyIGIyd2FzbSA9IHJlcXVpcmUoJ2JsYWtlMmItd2FzbScpXG5cbi8vIDY0LWJpdCB1bnNpZ25lZCBhZGRpdGlvblxuLy8gU2V0cyB2W2EsYSsxXSArPSB2W2IsYisxXVxuLy8gdiBzaG91bGQgYmUgYSBVaW50MzJBcnJheVxuZnVuY3Rpb24gQURENjRBQSAodiwgYSwgYikge1xuICB2YXIgbzAgPSB2W2FdICsgdltiXVxuICB2YXIgbzEgPSB2W2EgKyAxXSArIHZbYiArIDFdXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyA2NC1iaXQgdW5zaWduZWQgYWRkaXRpb25cbi8vIFNldHMgdlthLGErMV0gKz0gYlxuLy8gYjAgaXMgdGhlIGxvdyAzMiBiaXRzIG9mIGIsIGIxIHJlcHJlc2VudHMgdGhlIGhpZ2ggMzIgYml0c1xuZnVuY3Rpb24gQURENjRBQyAodiwgYSwgYjAsIGIxKSB7XG4gIHZhciBvMCA9IHZbYV0gKyBiMFxuICBpZiAoYjAgPCAwKSB7XG4gICAgbzAgKz0gMHgxMDAwMDAwMDBcbiAgfVxuICB2YXIgbzEgPSB2W2EgKyAxXSArIGIxXG4gIGlmIChvMCA+PSAweDEwMDAwMDAwMCkge1xuICAgIG8xKytcbiAgfVxuICB2W2FdID0gbzBcbiAgdlthICsgMV0gPSBvMVxufVxuXG4vLyBMaXR0bGUtZW5kaWFuIGJ5dGUgYWNjZXNzXG5mdW5jdGlvbiBCMkJfR0VUMzIgKGFyciwgaSkge1xuICByZXR1cm4gKGFycltpXSBeXG4gIChhcnJbaSArIDFdIDw8IDgpIF5cbiAgKGFycltpICsgMl0gPDwgMTYpIF5cbiAgKGFycltpICsgM10gPDwgMjQpKVxufVxuXG4vLyBHIE1peGluZyBmdW5jdGlvblxuLy8gVGhlIFJPVFJzIGFyZSBpbmxpbmVkIGZvciBzcGVlZFxuZnVuY3Rpb24gQjJCX0cgKGEsIGIsIGMsIGQsIGl4LCBpeSkge1xuICB2YXIgeDAgPSBtW2l4XVxuICB2YXIgeDEgPSBtW2l4ICsgMV1cbiAgdmFyIHkwID0gbVtpeV1cbiAgdmFyIHkxID0gbVtpeSArIDFdXG5cbiAgQURENjRBQSh2LCBhLCBiKSAvLyB2W2EsYSsxXSArPSB2W2IsYisxXSAuLi4gaW4gSlMgd2UgbXVzdCBzdG9yZSBhIHVpbnQ2NCBhcyB0d28gdWludDMyc1xuICBBREQ2NEFDKHYsIGEsIHgwLCB4MSkgLy8gdlthLCBhKzFdICs9IHggLi4uIHgwIGlzIHRoZSBsb3cgMzIgYml0cyBvZiB4LCB4MSBpcyB0aGUgaGlnaCAzMiBiaXRzXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHRvIHRoZSByaWdodCBieSAzMiBiaXRzXG4gIHZhciB4b3IwID0gdltkXSBeIHZbYV1cbiAgdmFyIHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSB4b3IxXG4gIHZbZCArIDFdID0geG9yMFxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgMjQgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IwID4+PiAyNCkgXiAoeG9yMSA8PCA4KVxuICB2W2IgKyAxXSA9ICh4b3IxID4+PiAyNCkgXiAoeG9yMCA8PCA4KVxuXG4gIEFERDY0QUEodiwgYSwgYilcbiAgQURENjRBQyh2LCBhLCB5MCwgeTEpXG5cbiAgLy8gdltkLGQrMV0gPSAodltkLGQrMV0geG9yIHZbYSxhKzFdKSByb3RhdGVkIHJpZ2h0IGJ5IDE2IGJpdHNcbiAgeG9yMCA9IHZbZF0gXiB2W2FdXG4gIHhvcjEgPSB2W2QgKyAxXSBeIHZbYSArIDFdXG4gIHZbZF0gPSAoeG9yMCA+Pj4gMTYpIF4gKHhvcjEgPDwgMTYpXG4gIHZbZCArIDFdID0gKHhvcjEgPj4+IDE2KSBeICh4b3IwIDw8IDE2KVxuXG4gIEFERDY0QUEodiwgYywgZClcblxuICAvLyB2W2IsYisxXSA9ICh2W2IsYisxXSB4b3IgdltjLGMrMV0pIHJvdGF0ZWQgcmlnaHQgYnkgNjMgYml0c1xuICB4b3IwID0gdltiXSBeIHZbY11cbiAgeG9yMSA9IHZbYiArIDFdIF4gdltjICsgMV1cbiAgdltiXSA9ICh4b3IxID4+PiAzMSkgXiAoeG9yMCA8PCAxKVxuICB2W2IgKyAxXSA9ICh4b3IwID4+PiAzMSkgXiAoeG9yMSA8PCAxKVxufVxuXG4vLyBJbml0aWFsaXphdGlvbiBWZWN0b3JcbnZhciBCTEFLRTJCX0lWMzIgPSBuZXcgVWludDMyQXJyYXkoW1xuICAweEYzQkNDOTA4LCAweDZBMDlFNjY3LCAweDg0Q0FBNzNCLCAweEJCNjdBRTg1LFxuICAweEZFOTRGODJCLCAweDNDNkVGMzcyLCAweDVGMUQzNkYxLCAweEE1NEZGNTNBLFxuICAweEFERTY4MkQxLCAweDUxMEU1MjdGLCAweDJCM0U2QzFGLCAweDlCMDU2ODhDLFxuICAweEZCNDFCRDZCLCAweDFGODNEOUFCLCAweDEzN0UyMTc5LCAweDVCRTBDRDE5XG5dKVxuXG52YXIgU0lHTUE4ID0gW1xuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMywgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzLFxuICAxMSwgOCwgMTIsIDAsIDUsIDIsIDE1LCAxMywgMTAsIDE0LCAzLCA2LCA3LCAxLCA5LCA0LFxuICA3LCA5LCAzLCAxLCAxMywgMTIsIDExLCAxNCwgMiwgNiwgNSwgMTAsIDQsIDAsIDE1LCA4LFxuICA5LCAwLCA1LCA3LCAyLCA0LCAxMCwgMTUsIDE0LCAxLCAxMSwgMTIsIDYsIDgsIDMsIDEzLFxuICAyLCAxMiwgNiwgMTAsIDAsIDExLCA4LCAzLCA0LCAxMywgNywgNSwgMTUsIDE0LCAxLCA5LFxuICAxMiwgNSwgMSwgMTUsIDE0LCAxMywgNCwgMTAsIDAsIDcsIDYsIDMsIDksIDIsIDgsIDExLFxuICAxMywgMTEsIDcsIDE0LCAxMiwgMSwgMywgOSwgNSwgMCwgMTUsIDQsIDgsIDYsIDIsIDEwLFxuICA2LCAxNSwgMTQsIDksIDExLCAzLCAwLCA4LCAxMiwgMiwgMTMsIDcsIDEsIDQsIDEwLCA1LFxuICAxMCwgMiwgOCwgNCwgNywgNiwgMSwgNSwgMTUsIDExLCA5LCAxNCwgMywgMTIsIDEzLCAwLFxuICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LFxuICAxNCwgMTAsIDQsIDgsIDksIDE1LCAxMywgNiwgMSwgMTIsIDAsIDIsIDExLCA3LCA1LCAzXG5dXG5cbi8vIFRoZXNlIGFyZSBvZmZzZXRzIGludG8gYSB1aW50NjQgYnVmZmVyLlxuLy8gTXVsdGlwbHkgdGhlbSBhbGwgYnkgMiB0byBtYWtlIHRoZW0gb2Zmc2V0cyBpbnRvIGEgdWludDMyIGJ1ZmZlcixcbi8vIGJlY2F1c2UgdGhpcyBpcyBKYXZhc2NyaXB0IGFuZCB3ZSBkb24ndCBoYXZlIHVpbnQ2NHNcbnZhciBTSUdNQTgyID0gbmV3IFVpbnQ4QXJyYXkoU0lHTUE4Lm1hcChmdW5jdGlvbiAoeCkgeyByZXR1cm4geCAqIDIgfSkpXG5cbi8vIENvbXByZXNzaW9uIGZ1bmN0aW9uLiAnbGFzdCcgZmxhZyBpbmRpY2F0ZXMgbGFzdCBibG9jay5cbi8vIE5vdGUgd2UncmUgcmVwcmVzZW50aW5nIDE2IHVpbnQ2NHMgYXMgMzIgdWludDMyc1xudmFyIHYgPSBuZXcgVWludDMyQXJyYXkoMzIpXG52YXIgbSA9IG5ldyBVaW50MzJBcnJheSgzMilcbmZ1bmN0aW9uIGJsYWtlMmJDb21wcmVzcyAoY3R4LCBsYXN0KSB7XG4gIHZhciBpID0gMFxuXG4gIC8vIGluaXQgd29yayB2YXJpYWJsZXNcbiAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB2W2ldID0gY3R4LmhbaV1cbiAgICB2W2kgKyAxNl0gPSBCTEFLRTJCX0lWMzJbaV1cbiAgfVxuXG4gIC8vIGxvdyA2NCBiaXRzIG9mIG9mZnNldFxuICB2WzI0XSA9IHZbMjRdIF4gY3R4LnRcbiAgdlsyNV0gPSB2WzI1XSBeIChjdHgudCAvIDB4MTAwMDAwMDAwKVxuICAvLyBoaWdoIDY0IGJpdHMgbm90IHN1cHBvcnRlZCwgb2Zmc2V0IG1heSBub3QgYmUgaGlnaGVyIHRoYW4gMioqNTMtMVxuXG4gIC8vIGxhc3QgYmxvY2sgZmxhZyBzZXQgP1xuICBpZiAobGFzdCkge1xuICAgIHZbMjhdID0gfnZbMjhdXG4gICAgdlsyOV0gPSB+dlsyOV1cbiAgfVxuXG4gIC8vIGdldCBsaXR0bGUtZW5kaWFuIHdvcmRzXG4gIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7XG4gICAgbVtpXSA9IEIyQl9HRVQzMihjdHguYiwgNCAqIGkpXG4gIH1cblxuICAvLyB0d2VsdmUgcm91bmRzIG9mIG1peGluZ1xuICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykge1xuICAgIEIyQl9HKDAsIDgsIDE2LCAyNCwgU0lHTUE4MltpICogMTYgKyAwXSwgU0lHTUE4MltpICogMTYgKyAxXSlcbiAgICBCMkJfRygyLCAxMCwgMTgsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDJdLCBTSUdNQTgyW2kgKiAxNiArIDNdKVxuICAgIEIyQl9HKDQsIDEyLCAyMCwgMjgsIFNJR01BODJbaSAqIDE2ICsgNF0sIFNJR01BODJbaSAqIDE2ICsgNV0pXG4gICAgQjJCX0coNiwgMTQsIDIyLCAzMCwgU0lHTUE4MltpICogMTYgKyA2XSwgU0lHTUE4MltpICogMTYgKyA3XSlcbiAgICBCMkJfRygwLCAxMCwgMjAsIDMwLCBTSUdNQTgyW2kgKiAxNiArIDhdLCBTSUdNQTgyW2kgKiAxNiArIDldKVxuICAgIEIyQl9HKDIsIDEyLCAyMiwgMjQsIFNJR01BODJbaSAqIDE2ICsgMTBdLCBTSUdNQTgyW2kgKiAxNiArIDExXSlcbiAgICBCMkJfRyg0LCAxNCwgMTYsIDI2LCBTSUdNQTgyW2kgKiAxNiArIDEyXSwgU0lHTUE4MltpICogMTYgKyAxM10pXG4gICAgQjJCX0coNiwgOCwgMTgsIDI4LCBTSUdNQTgyW2kgKiAxNiArIDE0XSwgU0lHTUE4MltpICogMTYgKyAxNV0pXG4gIH1cblxuICBmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykge1xuICAgIGN0eC5oW2ldID0gY3R4LmhbaV0gXiB2W2ldIF4gdltpICsgMTZdXG4gIH1cbn1cblxuLy8gcmV1c2FibGUgcGFyYW1ldGVyX2Jsb2NrXG52YXIgcGFyYW1ldGVyX2Jsb2NrID0gbmV3IFVpbnQ4QXJyYXkoW1xuICAwLCAwLCAwLCAwLCAgICAgIC8vICAwOiBvdXRsZW4sIGtleWxlbiwgZmFub3V0LCBkZXB0aFxuICAwLCAwLCAwLCAwLCAgICAgIC8vICA0OiBsZWFmIGxlbmd0aCwgc2VxdWVudGlhbCBtb2RlXG4gIDAsIDAsIDAsIDAsICAgICAgLy8gIDg6IG5vZGUgb2Zmc2V0XG4gIDAsIDAsIDAsIDAsICAgICAgLy8gMTI6IG5vZGUgb2Zmc2V0XG4gIDAsIDAsIDAsIDAsICAgICAgLy8gMTY6IG5vZGUgZGVwdGgsIGlubmVyIGxlbmd0aCwgcmZ1XG4gIDAsIDAsIDAsIDAsICAgICAgLy8gMjA6IHJmdVxuICAwLCAwLCAwLCAwLCAgICAgIC8vIDI0OiByZnVcbiAgMCwgMCwgMCwgMCwgICAgICAvLyAyODogcmZ1XG4gIDAsIDAsIDAsIDAsICAgICAgLy8gMzI6IHNhbHRcbiAgMCwgMCwgMCwgMCwgICAgICAvLyAzNjogc2FsdFxuICAwLCAwLCAwLCAwLCAgICAgIC8vIDQwOiBzYWx0XG4gIDAsIDAsIDAsIDAsICAgICAgLy8gNDQ6IHNhbHRcbiAgMCwgMCwgMCwgMCwgICAgICAvLyA0ODogcGVyc29uYWxcbiAgMCwgMCwgMCwgMCwgICAgICAvLyA1MjogcGVyc29uYWxcbiAgMCwgMCwgMCwgMCwgICAgICAvLyA1NjogcGVyc29uYWxcbiAgMCwgMCwgMCwgMCAgICAgICAvLyA2MDogcGVyc29uYWxcbl0pXG5cbi8vIENyZWF0ZXMgYSBCTEFLRTJiIGhhc2hpbmcgY29udGV4dFxuLy8gUmVxdWlyZXMgYW4gb3V0cHV0IGxlbmd0aCBiZXR3ZWVuIDEgYW5kIDY0IGJ5dGVzXG4vLyBUYWtlcyBhbiBvcHRpb25hbCBVaW50OEFycmF5IGtleVxuZnVuY3Rpb24gQmxha2UyYiAob3V0bGVuLCBrZXksIHNhbHQsIHBlcnNvbmFsKSB7XG4gIC8vIHplcm8gb3V0IHBhcmFtZXRlcl9ibG9jayBiZWZvcmUgdXNhZ2VcbiAgcGFyYW1ldGVyX2Jsb2NrLmZpbGwoMClcbiAgLy8gc3RhdGUsICdwYXJhbSBibG9jaydcblxuICB0aGlzLmIgPSBuZXcgVWludDhBcnJheSgxMjgpXG4gIHRoaXMuaCA9IG5ldyBVaW50MzJBcnJheSgxNilcbiAgdGhpcy50ID0gMCAvLyBpbnB1dCBjb3VudFxuICB0aGlzLmMgPSAwIC8vIHBvaW50ZXIgd2l0aGluIGJ1ZmZlclxuICB0aGlzLm91dGxlbiA9IG91dGxlbiAvLyBvdXRwdXQgbGVuZ3RoIGluIGJ5dGVzXG5cbiAgcGFyYW1ldGVyX2Jsb2NrWzBdID0gb3V0bGVuXG4gIGlmIChrZXkpIHBhcmFtZXRlcl9ibG9ja1sxXSA9IGtleS5sZW5ndGhcbiAgcGFyYW1ldGVyX2Jsb2NrWzJdID0gMSAvLyBmYW5vdXRcbiAgcGFyYW1ldGVyX2Jsb2NrWzNdID0gMSAvLyBkZXB0aFxuXG4gIGlmIChzYWx0KSBwYXJhbWV0ZXJfYmxvY2suc2V0KHNhbHQsIDMyKVxuICBpZiAocGVyc29uYWwpIHBhcmFtZXRlcl9ibG9jay5zZXQocGVyc29uYWwsIDQ4KVxuXG4gIC8vIGluaXRpYWxpemUgaGFzaCBzdGF0ZVxuICBmb3IgKHZhciBpID0gMDsgaSA8IDE2OyBpKyspIHtcbiAgICB0aGlzLmhbaV0gPSBCTEFLRTJCX0lWMzJbaV0gXiBCMkJfR0VUMzIocGFyYW1ldGVyX2Jsb2NrLCBpICogNClcbiAgfVxuXG4gIC8vIGtleSB0aGUgaGFzaCwgaWYgYXBwbGljYWJsZVxuICBpZiAoa2V5KSB7XG4gICAgYmxha2UyYlVwZGF0ZSh0aGlzLCBrZXkpXG4gICAgLy8gYXQgdGhlIGVuZFxuICAgIHRoaXMuYyA9IDEyOFxuICB9XG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChpbnB1dCkge1xuICBhc3NlcnQoaW5wdXQgIT0gbnVsbCwgJ2lucHV0IG11c3QgYmUgVWludDhBcnJheSBvciBCdWZmZXInKVxuICBibGFrZTJiVXBkYXRlKHRoaXMsIGlucHV0KVxuICByZXR1cm4gdGhpc1xufVxuXG5CbGFrZTJiLnByb3RvdHlwZS5kaWdlc3QgPSBmdW5jdGlvbiAob3V0KSB7XG4gIHZhciBidWYgPSAoIW91dCB8fCBvdXQgPT09ICdiaW5hcnknIHx8IG91dCA9PT0gJ2hleCcpID8gbmV3IFVpbnQ4QXJyYXkodGhpcy5vdXRsZW4pIDogb3V0XG4gIGFzc2VydChidWYubGVuZ3RoID49IHRoaXMub3V0bGVuLCAnb3V0IG11c3QgaGF2ZSBhdCBsZWFzdCBvdXRsZW4gYnl0ZXMgb2Ygc3BhY2UnKVxuICBibGFrZTJiRmluYWwodGhpcywgYnVmKVxuICBpZiAob3V0ID09PSAnaGV4JykgcmV0dXJuIGhleFNsaWNlKGJ1ZilcbiAgcmV0dXJuIGJ1ZlxufVxuXG5CbGFrZTJiLnByb3RvdHlwZS5maW5hbCA9IEJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdFxuXG5CbGFrZTJiLnJlYWR5ID0gZnVuY3Rpb24gKGNiKSB7XG4gIGIyd2FzbS5yZWFkeShmdW5jdGlvbiAoKSB7XG4gICAgY2IoKSAvLyBpZ25vcmUgdGhlIGVycm9yXG4gIH0pXG59XG5cbi8vIFVwZGF0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXF1aXJlcyBoYXNoIGNvbnRleHQgYW5kIFVpbnQ4QXJyYXkgKGJ5dGUgYXJyYXkpXG5mdW5jdGlvbiBibGFrZTJiVXBkYXRlIChjdHgsIGlucHV0KSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoY3R4LmMgPT09IDEyOCkgeyAvLyBidWZmZXIgZnVsbCA/XG4gICAgICBjdHgudCArPSBjdHguYyAvLyBhZGQgY291bnRlcnNcbiAgICAgIGJsYWtlMmJDb21wcmVzcyhjdHgsIGZhbHNlKSAvLyBjb21wcmVzcyAobm90IGxhc3QpXG4gICAgICBjdHguYyA9IDAgLy8gY291bnRlciB0byB6ZXJvXG4gICAgfVxuICAgIGN0eC5iW2N0eC5jKytdID0gaW5wdXRbaV1cbiAgfVxufVxuXG4vLyBDb21wbGV0ZXMgYSBCTEFLRTJiIHN0cmVhbWluZyBoYXNoXG4vLyBSZXR1cm5zIGEgVWludDhBcnJheSBjb250YWluaW5nIHRoZSBtZXNzYWdlIGRpZ2VzdFxuZnVuY3Rpb24gYmxha2UyYkZpbmFsIChjdHgsIG91dCkge1xuICBjdHgudCArPSBjdHguYyAvLyBtYXJrIGxhc3QgYmxvY2sgb2Zmc2V0XG5cbiAgd2hpbGUgKGN0eC5jIDwgMTI4KSB7IC8vIGZpbGwgdXAgd2l0aCB6ZXJvc1xuICAgIGN0eC5iW2N0eC5jKytdID0gMFxuICB9XG4gIGJsYWtlMmJDb21wcmVzcyhjdHgsIHRydWUpIC8vIGZpbmFsIGJsb2NrIGZsYWcgPSAxXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdHgub3V0bGVuOyBpKyspIHtcbiAgICBvdXRbaV0gPSBjdHguaFtpID4+IDJdID4+ICg4ICogKGkgJiAzKSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYpIHtcbiAgdmFyIHN0ciA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSBzdHIgKz0gdG9IZXgoYnVmW2ldKVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxudmFyIFByb3RvID0gQmxha2UyYlxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNyZWF0ZUhhc2ggKG91dGxlbiwga2V5LCBzYWx0LCBwZXJzb25hbCwgbm9Bc3NlcnQpIHtcbiAgaWYgKG5vQXNzZXJ0ICE9PSB0cnVlKSB7XG4gICAgYXNzZXJ0KG91dGxlbiA+PSBCWVRFU19NSU4sICdvdXRsZW4gbXVzdCBiZSBhdCBsZWFzdCAnICsgQllURVNfTUlOICsgJywgd2FzIGdpdmVuICcgKyBvdXRsZW4pXG4gICAgYXNzZXJ0KG91dGxlbiA8PSBCWVRFU19NQVgsICdvdXRsZW4gbXVzdCBiZSBhdCBtb3N0ICcgKyBCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIG91dGxlbilcbiAgICBpZiAoa2V5ICE9IG51bGwpIGFzc2VydChrZXkubGVuZ3RoID49IEtFWUJZVEVTX01JTiwgJ2tleSBtdXN0IGJlIGF0IGxlYXN0ICcgKyBLRVlCWVRFU19NSU4gKyAnLCB3YXMgZ2l2ZW4gJyArIGtleS5sZW5ndGgpXG4gICAgaWYgKGtleSAhPSBudWxsKSBhc3NlcnQoa2V5Lmxlbmd0aCA8PSBLRVlCWVRFU19NQVgsICdrZXkgbXVzdCBiZSBhdCBtb3N0ICcgKyBLRVlCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIGtleS5sZW5ndGgpXG4gICAgaWYgKHNhbHQgIT0gbnVsbCkgYXNzZXJ0KHNhbHQubGVuZ3RoID09PSBTQUxUQllURVMsICdzYWx0IG11c3QgYmUgZXhhY3RseSAnICsgU0FMVEJZVEVTICsgJywgd2FzIGdpdmVuICcgKyBzYWx0Lmxlbmd0aClcbiAgICBpZiAocGVyc29uYWwgIT0gbnVsbCkgYXNzZXJ0KHBlcnNvbmFsLmxlbmd0aCA9PT0gUEVSU09OQUxCWVRFUywgJ3BlcnNvbmFsIG11c3QgYmUgZXhhY3RseSAnICsgUEVSU09OQUxCWVRFUyArICcsIHdhcyBnaXZlbiAnICsgcGVyc29uYWwubGVuZ3RoKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm90byhvdXRsZW4sIGtleSwgc2FsdCwgcGVyc29uYWwpXG59XG5cbm1vZHVsZS5leHBvcnRzLnJlYWR5ID0gZnVuY3Rpb24gKGNiKSB7XG4gIGIyd2FzbS5yZWFkeShmdW5jdGlvbiAoKSB7IC8vIGlnbm9yZSBlcnJvcnNcbiAgICBjYigpXG4gIH0pXG59XG5cbm1vZHVsZS5leHBvcnRzLldBU01fU1VQUE9SVEVEID0gYjJ3YXNtLlNVUFBPUlRFRFxubW9kdWxlLmV4cG9ydHMuV0FTTV9MT0FERUQgPSBmYWxzZVxuXG52YXIgQllURVNfTUlOID0gbW9kdWxlLmV4cG9ydHMuQllURVNfTUlOID0gMTZcbnZhciBCWVRFU19NQVggPSBtb2R1bGUuZXhwb3J0cy5CWVRFU19NQVggPSA2NFxudmFyIEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuQllURVMgPSAzMlxudmFyIEtFWUJZVEVTX01JTiA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTX01JTiA9IDE2XG52YXIgS0VZQllURVNfTUFYID0gbW9kdWxlLmV4cG9ydHMuS0VZQllURVNfTUFYID0gNjRcbnZhciBLRVlCWVRFUyA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTID0gMzJcbnZhciBTQUxUQllURVMgPSBtb2R1bGUuZXhwb3J0cy5TQUxUQllURVMgPSAxNlxudmFyIFBFUlNPTkFMQllURVMgPSBtb2R1bGUuZXhwb3J0cy5QRVJTT05BTEJZVEVTID0gMTZcblxuYjJ3YXNtLnJlYWR5KGZ1bmN0aW9uIChlcnIpIHtcbiAgaWYgKCFlcnIpIHtcbiAgICBtb2R1bGUuZXhwb3J0cy5XQVNNX0xPQURFRCA9IHRydWVcbiAgICBQcm90byA9IGIyd2FzbVxuICB9XG59KVxuIiwidmFyIGFzc2VydCA9IHJlcXVpcmUoJ25hbm9hc3NlcnQnKVxudmFyIHdhc20gPSByZXF1aXJlKCcuL2JsYWtlMmInKSgpXG5cbnZhciBoZWFkID0gNjRcbnZhciBmcmVlTGlzdCA9IFtdXG5cbm1vZHVsZS5leHBvcnRzID0gQmxha2UyYlxudmFyIEJZVEVTX01JTiA9IG1vZHVsZS5leHBvcnRzLkJZVEVTX01JTiA9IDE2XG52YXIgQllURVNfTUFYID0gbW9kdWxlLmV4cG9ydHMuQllURVNfTUFYID0gNjRcbnZhciBCWVRFUyA9IG1vZHVsZS5leHBvcnRzLkJZVEVTID0gMzJcbnZhciBLRVlCWVRFU19NSU4gPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFU19NSU4gPSAxNlxudmFyIEtFWUJZVEVTX01BWCA9IG1vZHVsZS5leHBvcnRzLktFWUJZVEVTX01BWCA9IDY0XG52YXIgS0VZQllURVMgPSBtb2R1bGUuZXhwb3J0cy5LRVlCWVRFUyA9IDMyXG52YXIgU0FMVEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuU0FMVEJZVEVTID0gMTZcbnZhciBQRVJTT05BTEJZVEVTID0gbW9kdWxlLmV4cG9ydHMuUEVSU09OQUxCWVRFUyA9IDE2XG5cbmZ1bmN0aW9uIEJsYWtlMmIgKGRpZ2VzdExlbmd0aCwga2V5LCBzYWx0LCBwZXJzb25hbCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEJsYWtlMmIpKSByZXR1cm4gbmV3IEJsYWtlMmIoZGlnZXN0TGVuZ3RoLCBrZXksIHNhbHQsIHBlcnNvbmFsLCBub0Fzc2VydClcbiAgaWYgKCEod2FzbSAmJiB3YXNtLmV4cG9ydHMpKSB0aHJvdyBuZXcgRXJyb3IoJ1dBU00gbm90IGxvYWRlZC4gV2FpdCBmb3IgQmxha2UyYi5yZWFkeShjYiknKVxuICBpZiAoIWRpZ2VzdExlbmd0aCkgZGlnZXN0TGVuZ3RoID0gMzJcblxuICBpZiAobm9Bc3NlcnQgIT09IHRydWUpIHtcbiAgICBhc3NlcnQoZGlnZXN0TGVuZ3RoID49IEJZVEVTX01JTiwgJ2RpZ2VzdExlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICcgKyBCWVRFU19NSU4gKyAnLCB3YXMgZ2l2ZW4gJyArIGRpZ2VzdExlbmd0aClcbiAgICBhc3NlcnQoZGlnZXN0TGVuZ3RoIDw9IEJZVEVTX01BWCwgJ2RpZ2VzdExlbmd0aCBtdXN0IGJlIGF0IG1vc3QgJyArIEJZVEVTX01BWCArICcsIHdhcyBnaXZlbiAnICsgZGlnZXN0TGVuZ3RoKVxuICAgIGlmIChrZXkgIT0gbnVsbCkgYXNzZXJ0KGtleS5sZW5ndGggPj0gS0VZQllURVNfTUlOLCAna2V5IG11c3QgYmUgYXQgbGVhc3QgJyArIEtFWUJZVEVTX01JTiArICcsIHdhcyBnaXZlbiAnICsga2V5Lmxlbmd0aClcbiAgICBpZiAoa2V5ICE9IG51bGwpIGFzc2VydChrZXkubGVuZ3RoIDw9IEtFWUJZVEVTX01BWCwgJ2tleSBtdXN0IGJlIGF0IGxlYXN0ICcgKyBLRVlCWVRFU19NQVggKyAnLCB3YXMgZ2l2ZW4gJyArIGtleS5sZW5ndGgpXG4gICAgaWYgKHNhbHQgIT0gbnVsbCkgYXNzZXJ0KHNhbHQubGVuZ3RoID09PSBTQUxUQllURVMsICdzYWx0IG11c3QgYmUgZXhhY3RseSAnICsgU0FMVEJZVEVTICsgJywgd2FzIGdpdmVuICcgKyBzYWx0Lmxlbmd0aClcbiAgICBpZiAocGVyc29uYWwgIT0gbnVsbCkgYXNzZXJ0KHBlcnNvbmFsLmxlbmd0aCA9PT0gUEVSU09OQUxCWVRFUywgJ3BlcnNvbmFsIG11c3QgYmUgZXhhY3RseSAnICsgUEVSU09OQUxCWVRFUyArICcsIHdhcyBnaXZlbiAnICsgcGVyc29uYWwubGVuZ3RoKVxuICB9XG5cbiAgaWYgKCFmcmVlTGlzdC5sZW5ndGgpIHtcbiAgICBmcmVlTGlzdC5wdXNoKGhlYWQpXG4gICAgaGVhZCArPSAyMTZcbiAgfVxuXG4gIHRoaXMuZGlnZXN0TGVuZ3RoID0gZGlnZXN0TGVuZ3RoXG4gIHRoaXMuZmluYWxpemVkID0gZmFsc2VcbiAgdGhpcy5wb2ludGVyID0gZnJlZUxpc3QucG9wKClcblxuICB3YXNtLm1lbW9yeS5maWxsKDAsIDAsIDY0KVxuICB3YXNtLm1lbW9yeVswXSA9IHRoaXMuZGlnZXN0TGVuZ3RoXG4gIHdhc20ubWVtb3J5WzFdID0ga2V5ID8ga2V5Lmxlbmd0aCA6IDBcbiAgd2FzbS5tZW1vcnlbMl0gPSAxIC8vIGZhbm91dFxuICB3YXNtLm1lbW9yeVszXSA9IDEgLy8gZGVwdGhcblxuICBpZiAoc2FsdCkgd2FzbS5tZW1vcnkuc2V0KHNhbHQsIDMyKVxuICBpZiAocGVyc29uYWwpIHdhc20ubWVtb3J5LnNldChwZXJzb25hbCwgNDgpXG5cbiAgaWYgKHRoaXMucG9pbnRlciArIDIxNiA+IHdhc20ubWVtb3J5Lmxlbmd0aCkgd2FzbS5yZWFsbG9jKHRoaXMucG9pbnRlciArIDIxNikgLy8gd2UgbmVlZCAyMTYgYnl0ZXMgZm9yIHRoZSBzdGF0ZVxuICB3YXNtLmV4cG9ydHMuYmxha2UyYl9pbml0KHRoaXMucG9pbnRlciwgdGhpcy5kaWdlc3RMZW5ndGgpXG5cbiAgaWYgKGtleSkge1xuICAgIHRoaXMudXBkYXRlKGtleSlcbiAgICB3YXNtLm1lbW9yeS5maWxsKDAsIGhlYWQsIGhlYWQgKyBrZXkubGVuZ3RoKSAvLyB3aGl0ZW91dCBrZXlcbiAgICB3YXNtLm1lbW9yeVt0aGlzLnBvaW50ZXIgKyAyMDBdID0gMTI4XG4gIH1cbn1cblxuXG5CbGFrZTJiLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgYXNzZXJ0KHRoaXMuZmluYWxpemVkID09PSBmYWxzZSwgJ0hhc2ggaW5zdGFuY2UgZmluYWxpemVkJylcbiAgYXNzZXJ0KGlucHV0LCAnaW5wdXQgbXVzdCBiZSBUeXBlZEFycmF5IG9yIEJ1ZmZlcicpXG5cbiAgaWYgKGhlYWQgKyBpbnB1dC5sZW5ndGggPiB3YXNtLm1lbW9yeS5sZW5ndGgpIHdhc20ucmVhbGxvYyhoZWFkICsgaW5wdXQubGVuZ3RoKVxuICB3YXNtLm1lbW9yeS5zZXQoaW5wdXQsIGhlYWQpXG4gIHdhc20uZXhwb3J0cy5ibGFrZTJiX3VwZGF0ZSh0aGlzLnBvaW50ZXIsIGhlYWQsIGhlYWQgKyBpbnB1dC5sZW5ndGgpXG4gIHJldHVybiB0aGlzXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLmRpZ2VzdCA9IGZ1bmN0aW9uIChlbmMpIHtcbiAgYXNzZXJ0KHRoaXMuZmluYWxpemVkID09PSBmYWxzZSwgJ0hhc2ggaW5zdGFuY2UgZmluYWxpemVkJylcbiAgdGhpcy5maW5hbGl6ZWQgPSB0cnVlXG5cbiAgZnJlZUxpc3QucHVzaCh0aGlzLnBvaW50ZXIpXG4gIHdhc20uZXhwb3J0cy5ibGFrZTJiX2ZpbmFsKHRoaXMucG9pbnRlcilcblxuICBpZiAoIWVuYyB8fCBlbmMgPT09ICdiaW5hcnknKSB7XG4gICAgcmV0dXJuIHdhc20ubWVtb3J5LnNsaWNlKHRoaXMucG9pbnRlciArIDEyOCwgdGhpcy5wb2ludGVyICsgMTI4ICsgdGhpcy5kaWdlc3RMZW5ndGgpXG4gIH1cblxuICBpZiAoZW5jID09PSAnaGV4Jykge1xuICAgIHJldHVybiBoZXhTbGljZSh3YXNtLm1lbW9yeSwgdGhpcy5wb2ludGVyICsgMTI4LCB0aGlzLmRpZ2VzdExlbmd0aClcbiAgfVxuXG4gIGFzc2VydChlbmMubGVuZ3RoID49IHRoaXMuZGlnZXN0TGVuZ3RoLCAnaW5wdXQgbXVzdCBiZSBUeXBlZEFycmF5IG9yIEJ1ZmZlcicpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaWdlc3RMZW5ndGg7IGkrKykge1xuICAgIGVuY1tpXSA9IHdhc20ubWVtb3J5W3RoaXMucG9pbnRlciArIDEyOCArIGldXG4gIH1cblxuICByZXR1cm4gZW5jXG59XG5cbi8vIGxpYnNvZGl1bSBjb21wYXRcbkJsYWtlMmIucHJvdG90eXBlLmZpbmFsID0gQmxha2UyYi5wcm90b3R5cGUuZGlnZXN0XG5cbkJsYWtlMmIuV0FTTSA9IHdhc20gJiYgd2FzbS5idWZmZXJcbkJsYWtlMmIuU1VQUE9SVEVEID0gdHlwZW9mIFdlYkFzc2VtYmx5ICE9PSAndW5kZWZpbmVkJ1xuXG5CbGFrZTJiLnJlYWR5ID0gZnVuY3Rpb24gKGNiKSB7XG4gIGlmICghY2IpIGNiID0gbm9vcFxuICBpZiAoIXdhc20pIHJldHVybiBjYihuZXcgRXJyb3IoJ1dlYkFzc2VtYmx5IG5vdCBzdXBwb3J0ZWQnKSlcblxuICAvLyBiYWNrd2FyZHMgY29tcGF0LCBjYW4gYmUgcmVtb3ZlZCBpbiBhIG5ldyBtYWpvclxuICB2YXIgcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZWplY3QsIHJlc29sdmUpIHtcbiAgICB3YXNtLm9ubG9hZChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyKSByZXNvbHZlKClcbiAgICAgIGVsc2UgcmVqZWN0KClcbiAgICAgIGNiKGVycilcbiAgICB9KVxuICB9KVxuXG4gIHJldHVybiBwXG59XG5cbkJsYWtlMmIucHJvdG90eXBlLnJlYWR5ID0gQmxha2UyYi5yZWFkeVxuXG5mdW5jdGlvbiBub29wICgpIHt9XG5cbmZ1bmN0aW9uIGhleFNsaWNlIChidWYsIHN0YXJ0LCBsZW4pIHtcbiAgdmFyIHN0ciA9ICcnXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHN0ciArPSB0b0hleChidWZbc3RhcnQgKyBpXSlcbiAgcmV0dXJuIHN0clxufVxuXG5mdW5jdGlvbiB0b0hleCAobikge1xuICBpZiAobiA8IDE2KSByZXR1cm4gJzAnICsgbi50b1N0cmluZygxNilcbiAgcmV0dXJuIG4udG9TdHJpbmcoMTYpXG59XG4iLCJcbm1vZHVsZS5leHBvcnRzID0gbG9hZFdlYkFzc2VtYmx5XG5cbmxvYWRXZWJBc3NlbWJseS5zdXBwb3J0ZWQgPSB0eXBlb2YgV2ViQXNzZW1ibHkgIT09ICd1bmRlZmluZWQnXG5cbmZ1bmN0aW9uIGxvYWRXZWJBc3NlbWJseSAob3B0cykge1xuICBpZiAoIWxvYWRXZWJBc3NlbWJseS5zdXBwb3J0ZWQpIHJldHVybiBudWxsXG5cbiAgdmFyIGltcCA9IG9wdHMgJiYgb3B0cy5pbXBvcnRzXG4gIHZhciB3YXNtID0gdG9VaW50OEFycmF5KCdBR0Z6YlFFQUFBQUJFQU5nQW45L0FHQURmMzkvQUdBQmZ3QURCUVFBQVFJQ0JRVUJBUXJvQndkTkJRWnRaVzF2Y25rQ0FBeGliR0ZyWlRKaVgybHVhWFFBQUE1aWJHRnJaVEppWDNWd1pHRjBaUUFCRFdKc1lXdGxNbUpmWm1sdVlXd0FBaEJpYkdGclpUSmlYMk52YlhCeVpYTnpBQU1LMDBBRWxnTUFJQUJDQURjREFDQUFRUWhxUWdBM0F3QWdBRUVRYWtJQU53TUFJQUJCR0dwQ0FEY0RBQ0FBUVNCcVFnQTNBd0FnQUVFb2FrSUFOd01BSUFCQk1HcENBRGNEQUNBQVFUaHFRZ0EzQXdBZ0FFSEFBR3BDQURjREFDQUFRY2dBYWtJQU53TUFJQUJCMEFCcVFnQTNBd0FnQUVIWUFHcENBRGNEQUNBQVFlQUFha0lBTndNQUlBQkI2QUJxUWdBM0F3QWdBRUh3QUdwQ0FEY0RBQ0FBUWZnQWFrSUFOd01BSUFCQmdBRnFRb2lTODUzL3pQbUU2Z0JCQUNrREFJVTNBd0FnQUVHSUFXcEN1ODZxcHRqUTY3TzdmMEVJS1FNQWhUY0RBQ0FBUVpBQmFrS3I4TlAwcis2OHR6eEJFQ2tEQUlVM0F3QWdBRUdZQVdwQzhlMzArS1duL2FlbGYwRVlLUU1BaFRjREFDQUFRYUFCYWtMUmhacnYrcytVaDlFQVFTQXBBd0NGTndNQUlBQkJxQUZxUXAvWStkbkNrZHFDbTM5QktDa0RBSVUzQXdBZ0FFR3dBV3BDNi9xRzJyKzE5c0VmUVRBcEF3Q0ZOd01BSUFCQnVBRnFRdm5DK0p1Um83UHcyd0JCT0NrREFJVTNBd0FnQUVIQUFXcENBRGNEQUNBQVFjZ0Jha0lBTndNQUlBQkIwQUZxUWdBM0F3QUxiUUVEZnlBQVFjQUJhaUVESUFCQnlBRnFJUVFnQkNrREFLY2hCUUpBQTBBZ0FTQUNSZzBCSUFWQmdBRkdCRUFnQXlBREtRTUFJQVd0ZkRjREFFRUFJUVVnQUJBREN5QUFJQVZxSUFFdEFBQTZBQUFnQlVFQmFpRUZJQUZCQVdvaEFRd0FDd3NnQkNBRnJUY0RBQXRrQVFOL0lBQkJ3QUZxSVFFZ0FFSElBV29oQWlBQklBRXBBd0FnQWlrREFIdzNBd0FnQUVIUUFXcENmemNEQUNBQ0tRTUFweUVEQWtBRFFDQURRWUFCUmcwQklBQWdBMnBCQURvQUFDQURRUUZxSVFNTUFBc0xJQUlnQTYwM0F3QWdBQkFEQytVN0FpQitDWDhnQUVHQUFXb2hJU0FBUVlnQmFpRWlJQUJCa0FGcUlTTWdBRUdZQVdvaEpDQUFRYUFCYWlFbElBQkJxQUZxSVNZZ0FFR3dBV29oSnlBQVFiZ0JhaUVvSUNFcEF3QWhBU0FpS1FNQUlRSWdJeWtEQUNFRElDUXBBd0FoQkNBbEtRTUFJUVVnSmlrREFDRUdJQ2NwQXdBaEJ5QW9LUU1BSVFoQ2lKTHpuZi9NK1lUcUFDRUpRcnZPcXFiWTBPdXp1MzhoQ2tLcjhOUDByKzY4dHp3aEMwTHg3ZlQ0cGFmOXA2Vi9JUXhDMFlXYTcvclBsSWZSQUNFTlFwL1krZG5Da2RxQ20zOGhEa0xyK29iYXY3WDJ3UjhoRDBMNXd2aWJrYU96OE5zQUlSQWdBQ2tEQUNFUklBQkJDR29wQXdBaEVpQUFRUkJxS1FNQUlSTWdBRUVZYWlrREFDRVVJQUJCSUdvcEF3QWhGU0FBUVNocUtRTUFJUllnQUVFd2Fpa0RBQ0VYSUFCQk9Hb3BBd0FoR0NBQVFjQUFhaWtEQUNFWklBQkJ5QUJxS1FNQUlSb2dBRUhRQUdvcEF3QWhHeUFBUWRnQWFpa0RBQ0VjSUFCQjRBQnFLUU1BSVIwZ0FFSG9BR29wQXdBaEhpQUFRZkFBYWlrREFDRWZJQUJCK0FCcUtRTUFJU0FnRFNBQVFjQUJhaWtEQUlVaERTQVBJQUJCMEFGcUtRTUFoU0VQSUFFZ0JTQVJmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdFbng4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQk44ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFVZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnRlh4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJaOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBWGZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0dIeDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lCbDhmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQWFmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dHM3g4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQng4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FkZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnSG54OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUI5OGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBZ2ZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0gzeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklCdDhmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQVZmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdHWHg4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQnA4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFnZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnSG54OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJkOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBU2ZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0hYeDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCRjhmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QVRmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dISHg4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQmg4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FXZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnRkh4OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUJ4OGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBWmZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0hYeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCRjhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QVdmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dFM3g4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQ0I4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FlZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnRzN4OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUI5OGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBVWZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0YzeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCaDhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQVNmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdHbng4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQlY4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklBRWdCU0FZZkh3aEFTQU5JQUdGUWlDS0lRMGdDU0FOZkNFSklBVWdDWVZDR0lvaEJTQUJJQVVnR254OElRRWdEU0FCaFVJUWlpRU5JQWtnRFh3aENTQUZJQW1GUWorS0lRVWdBaUFHSUJSOGZDRUNJQTRnQW9WQ0lJb2hEaUFLSUE1OElRb2dCaUFLaFVJWWlpRUdJQUlnQmlBU2ZId2hBaUFPSUFLRlFoQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ1A0b2hCaUFESUFjZ0hueDhJUU1nRHlBRGhVSWdpaUVQSUFzZ0Qzd2hDeUFISUF1RlFoaUtJUWNnQXlBSElCMThmQ0VESUE4Z0E0VkNFSW9oRHlBTElBOThJUXNnQnlBTGhVSS9paUVISUFRZ0NDQWNmSHdoQkNBUUlBU0ZRaUNLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNHSW9oQ0NBRUlBZ2dIM3g4SVFRZ0VDQUVoVUlRaWlFUUlBd2dFSHdoRENBSUlBeUZRaitLSVFnZ0FTQUdJQk44ZkNFQklCQWdBWVZDSUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUlZaWlFR0lBRWdCaUFYZkh3aEFTQVFJQUdGUWhDS0lSQWdDeUFRZkNFTElBWWdDNFZDUDRvaEJpQUNJQWNnRm54OElRSWdEU0FDaFVJZ2lpRU5JQXdnRFh3aERDQUhJQXlGUWhpS0lRY2dBaUFISUJ0OGZDRUNJQTBnQW9WQ0VJb2hEU0FNSUExOElRd2dCeUFNaFVJL2lpRUhJQU1nQ0NBVmZId2hBeUFPSUFPRlFpQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ0dJb2hDQ0FESUFnZ0VYeDhJUU1nRGlBRGhVSVFpaUVPSUFrZ0Rud2hDU0FJSUFtRlFqK0tJUWdnQkNBRklDQjhmQ0VFSUE4Z0JJVkNJSW9oRHlBS0lBOThJUW9nQlNBS2hVSVlpaUVGSUFRZ0JTQVpmSHdoQkNBUElBU0ZRaENLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNQNG9oQlNBQklBVWdHbng4SVFFZ0RTQUJoVUlnaWlFTklBa2dEWHdoQ1NBRklBbUZRaGlLSVFVZ0FTQUZJQkY4ZkNFQklBMGdBWVZDRUlvaERTQUpJQTE4SVFrZ0JTQUpoVUkvaWlFRklBSWdCaUFXZkh3aEFpQU9JQUtGUWlDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDR0lvaEJpQUNJQVlnR0h4OElRSWdEaUFDaFVJUWlpRU9JQW9nRG53aENpQUdJQXFGUWorS0lRWWdBeUFISUJOOGZDRURJQThnQTRWQ0lJb2hEeUFMSUE5OElRc2dCeUFMaFVJWWlpRUhJQU1nQnlBVmZId2hBeUFQSUFPRlFoQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ1A0b2hCeUFFSUFnZ0czeDhJUVFnRUNBRWhVSWdpaUVRSUF3Z0VId2hEQ0FJSUF5RlFoaUtJUWdnQkNBSUlDQjhmQ0VFSUJBZ0JJVkNFSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSS9paUVJSUFFZ0JpQWZmSHdoQVNBUUlBR0ZRaUNLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNHSW9oQmlBQklBWWdFbng4SVFFZ0VDQUJoVUlRaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaitLSVFZZ0FpQUhJQng4ZkNFQ0lBMGdBb1ZDSUlvaERTQU1JQTE4SVF3Z0J5QU1oVUlZaWlFSElBSWdCeUFkZkh3aEFpQU5JQUtGUWhDS0lRMGdEQ0FOZkNFTUlBY2dESVZDUDRvaEJ5QURJQWdnRjN4OElRTWdEaUFEaFVJZ2lpRU9JQWtnRG53aENTQUlJQW1GUWhpS0lRZ2dBeUFJSUJsOGZDRURJQTRnQTRWQ0VJb2hEaUFKSUE1OElRa2dDQ0FKaFVJL2lpRUlJQVFnQlNBVWZId2hCQ0FQSUFTRlFpQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ0dJb2hCU0FFSUFVZ0hueDhJUVFnRHlBRWhVSVFpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFqK0tJUVVnQVNBRklCTjhmQ0VCSUEwZ0FZVkNJSW9oRFNBSklBMThJUWtnQlNBSmhVSVlpaUVGSUFFZ0JTQWRmSHdoQVNBTklBR0ZRaENLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNQNG9oQlNBQ0lBWWdGM3g4SVFJZ0RpQUNoVUlnaWlFT0lBb2dEbndoQ2lBR0lBcUZRaGlLSVFZZ0FpQUdJQnQ4ZkNFQ0lBNGdBb1ZDRUlvaERpQUtJQTU4SVFvZ0JpQUtoVUkvaWlFR0lBTWdCeUFSZkh3aEF5QVBJQU9GUWlDS0lROGdDeUFQZkNFTElBY2dDNFZDR0lvaEJ5QURJQWNnSEh4OElRTWdEeUFEaFVJUWlpRVBJQXNnRDN3aEN5QUhJQXVGUWorS0lRY2dCQ0FJSUJsOGZDRUVJQkFnQklWQ0lJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJWWlpRUlJQVFnQ0NBVWZId2hCQ0FRSUFTRlFoQ0tJUkFnRENBUWZDRU1JQWdnRElWQ1A0b2hDQ0FCSUFZZ0ZYeDhJUUVnRUNBQmhVSWdpaUVRSUFzZ0VId2hDeUFHSUF1RlFoaUtJUVlnQVNBR0lCNThmQ0VCSUJBZ0FZVkNFSW9oRUNBTElCQjhJUXNnQmlBTGhVSS9paUVHSUFJZ0J5QVlmSHdoQWlBTklBS0ZRaUNLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNHSW9oQnlBQ0lBY2dGbng4SVFJZ0RTQUNoVUlRaWlFTklBd2dEWHdoRENBSElBeUZRaitLSVFjZ0F5QUlJQ0I4ZkNFRElBNGdBNFZDSUlvaERpQUpJQTU4SVFrZ0NDQUpoVUlZaWlFSUlBTWdDQ0FmZkh3aEF5QU9JQU9GUWhDS0lRNGdDU0FPZkNFSklBZ2dDWVZDUDRvaENDQUVJQVVnRW54OElRUWdEeUFFaFVJZ2lpRVBJQW9nRDN3aENpQUZJQXFGUWhpS0lRVWdCQ0FGSUJwOGZDRUVJQThnQklWQ0VJb2hEeUFLSUE5OElRb2dCU0FLaFVJL2lpRUZJQUVnQlNBZGZId2hBU0FOSUFHRlFpQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ0dJb2hCU0FCSUFVZ0ZueDhJUUVnRFNBQmhVSVFpaUVOSUFrZ0RYd2hDU0FGSUFtRlFqK0tJUVVnQWlBR0lCSjhmQ0VDSUE0Z0FvVkNJSW9oRGlBS0lBNThJUW9nQmlBS2hVSVlpaUVHSUFJZ0JpQWdmSHdoQWlBT0lBS0ZRaENLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNQNG9oQmlBRElBY2dIM3g4SVFNZ0R5QURoVUlnaWlFUElBc2dEM3doQ3lBSElBdUZRaGlLSVFjZ0F5QUhJQjU4ZkNFRElBOGdBNFZDRUlvaER5QUxJQTk4SVFzZ0J5QUxoVUkvaWlFSElBUWdDQ0FWZkh3aEJDQVFJQVNGUWlDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDR0lvaENDQUVJQWdnRzN4OElRUWdFQ0FFaFVJUWlpRVFJQXdnRUh3aERDQUlJQXlGUWorS0lRZ2dBU0FHSUJGOGZDRUJJQkFnQVlWQ0lJb2hFQ0FMSUJCOElRc2dCaUFMaFVJWWlpRUdJQUVnQmlBWWZId2hBU0FRSUFHRlFoQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ1A0b2hCaUFDSUFjZ0YzeDhJUUlnRFNBQ2hVSWdpaUVOSUF3Z0RYd2hEQ0FISUF5RlFoaUtJUWNnQWlBSElCUjhmQ0VDSUEwZ0FvVkNFSW9oRFNBTUlBMThJUXdnQnlBTWhVSS9paUVISUFNZ0NDQWFmSHdoQXlBT0lBT0ZRaUNLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNHSW9oQ0NBRElBZ2dFM3g4SVFNZ0RpQURoVUlRaWlFT0lBa2dEbndoQ1NBSUlBbUZRaitLSVFnZ0JDQUZJQmw4ZkNFRUlBOGdCSVZDSUlvaER5QUtJQTk4SVFvZ0JTQUtoVUlZaWlFRklBUWdCU0FjZkh3aEJDQVBJQVNGUWhDS0lROGdDaUFQZkNFS0lBVWdDb1ZDUDRvaEJTQUJJQVVnSG54OElRRWdEU0FCaFVJZ2lpRU5JQWtnRFh3aENTQUZJQW1GUWhpS0lRVWdBU0FGSUJ4OGZDRUJJQTBnQVlWQ0VJb2hEU0FKSUExOElRa2dCU0FKaFVJL2lpRUZJQUlnQmlBWWZId2hBaUFPSUFLRlFpQ0tJUTRnQ2lBT2ZDRUtJQVlnQ29WQ0dJb2hCaUFDSUFZZ0gzeDhJUUlnRGlBQ2hVSVFpaUVPSUFvZ0Rud2hDaUFHSUFxRlFqK0tJUVlnQXlBSElCMThmQ0VESUE4Z0E0VkNJSW9oRHlBTElBOThJUXNnQnlBTGhVSVlpaUVISUFNZ0J5QVNmSHdoQXlBUElBT0ZRaENLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNQNG9oQnlBRUlBZ2dGSHg4SVFRZ0VDQUVoVUlnaWlFUUlBd2dFSHdoRENBSUlBeUZRaGlLSVFnZ0JDQUlJQnA4ZkNFRUlCQWdCSVZDRUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUkvaWlFSUlBRWdCaUFXZkh3aEFTQVFJQUdGUWlDS0lSQWdDeUFRZkNFTElBWWdDNFZDR0lvaEJpQUJJQVlnRVh4OElRRWdFQ0FCaFVJUWlpRVFJQXNnRUh3aEN5QUdJQXVGUWorS0lRWWdBaUFISUNCOGZDRUNJQTBnQW9WQ0lJb2hEU0FNSUExOElRd2dCeUFNaFVJWWlpRUhJQUlnQnlBVmZId2hBaUFOSUFLRlFoQ0tJUTBnRENBTmZDRU1JQWNnRElWQ1A0b2hCeUFESUFnZ0dYeDhJUU1nRGlBRGhVSWdpaUVPSUFrZ0Rud2hDU0FJSUFtRlFoaUtJUWdnQXlBSUlCZDhmQ0VESUE0Z0E0VkNFSW9oRGlBSklBNThJUWtnQ0NBSmhVSS9paUVJSUFRZ0JTQVRmSHdoQkNBUElBU0ZRaUNLSVE4Z0NpQVBmQ0VLSUFVZ0NvVkNHSW9oQlNBRUlBVWdHM3g4SVFRZ0R5QUVoVUlRaWlFUElBb2dEM3doQ2lBRklBcUZRaitLSVFVZ0FTQUZJQmQ4ZkNFQklBMGdBWVZDSUlvaERTQUpJQTE4SVFrZ0JTQUpoVUlZaWlFRklBRWdCU0FnZkh3aEFTQU5JQUdGUWhDS0lRMGdDU0FOZkNFSklBVWdDWVZDUDRvaEJTQUNJQVlnSDN4OElRSWdEaUFDaFVJZ2lpRU9JQW9nRG53aENpQUdJQXFGUWhpS0lRWWdBaUFHSUJwOGZDRUNJQTRnQW9WQ0VJb2hEaUFLSUE1OElRb2dCaUFLaFVJL2lpRUdJQU1nQnlBY2ZId2hBeUFQSUFPRlFpQ0tJUThnQ3lBUGZDRUxJQWNnQzRWQ0dJb2hCeUFESUFjZ0ZIeDhJUU1nRHlBRGhVSVFpaUVQSUFzZ0Qzd2hDeUFISUF1RlFqK0tJUWNnQkNBSUlCRjhmQ0VFSUJBZ0JJVkNJSW9oRUNBTUlCQjhJUXdnQ0NBTWhVSVlpaUVJSUFRZ0NDQVpmSHdoQkNBUUlBU0ZRaENLSVJBZ0RDQVFmQ0VNSUFnZ0RJVkNQNG9oQ0NBQklBWWdIWHg4SVFFZ0VDQUJoVUlnaWlFUUlBc2dFSHdoQ3lBR0lBdUZRaGlLSVFZZ0FTQUdJQk44ZkNFQklCQWdBWVZDRUlvaEVDQUxJQkI4SVFzZ0JpQUxoVUkvaWlFR0lBSWdCeUFlZkh3aEFpQU5JQUtGUWlDS0lRMGdEQ0FOZkNFTUlBY2dESVZDR0lvaEJ5QUNJQWNnR0h4OElRSWdEU0FDaFVJUWlpRU5JQXdnRFh3aERDQUhJQXlGUWorS0lRY2dBeUFJSUJKOGZDRURJQTRnQTRWQ0lJb2hEaUFKSUE1OElRa2dDQ0FKaFVJWWlpRUlJQU1nQ0NBVmZId2hBeUFPSUFPRlFoQ0tJUTRnQ1NBT2ZDRUpJQWdnQ1lWQ1A0b2hDQ0FFSUFVZ0czeDhJUVFnRHlBRWhVSWdpaUVQSUFvZ0Qzd2hDaUFGSUFxRlFoaUtJUVVnQkNBRklCWjhmQ0VFSUE4Z0JJVkNFSW9oRHlBS0lBOThJUW9nQlNBS2hVSS9paUVGSUFFZ0JTQWJmSHdoQVNBTklBR0ZRaUNLSVEwZ0NTQU5mQ0VKSUFVZ0NZVkNHSW9oQlNBQklBVWdFM3g4SVFFZ0RTQUJoVUlRaWlFTklBa2dEWHdoQ1NBRklBbUZRaitLSVFVZ0FpQUdJQmw4ZkNFQ0lBNGdBb1ZDSUlvaERpQUtJQTU4SVFvZ0JpQUtoVUlZaWlFR0lBSWdCaUFWZkh3aEFpQU9JQUtGUWhDS0lRNGdDaUFPZkNFS0lBWWdDb1ZDUDRvaEJpQURJQWNnR0h4OElRTWdEeUFEaFVJZ2lpRVBJQXNnRDN3aEN5QUhJQXVGUWhpS0lRY2dBeUFISUJkOGZDRURJQThnQTRWQ0VJb2hEeUFMSUE5OElRc2dCeUFMaFVJL2lpRUhJQVFnQ0NBU2ZId2hCQ0FRSUFTRlFpQ0tJUkFnRENBUWZDRU1JQWdnRElWQ0dJb2hDQ0FFSUFnZ0ZueDhJUVFnRUNBRWhVSVFpaUVRSUF3Z0VId2hEQ0FJSUF5RlFqK0tJUWdnQVNBR0lDQjhmQ0VCSUJBZ0FZVkNJSW9oRUNBTElCQjhJUXNnQmlBTGhVSVlpaUVHSUFFZ0JpQWNmSHdoQVNBUUlBR0ZRaENLSVJBZ0N5QVFmQ0VMSUFZZ0M0VkNQNG9oQmlBQ0lBY2dHbng4SVFJZ0RTQUNoVUlnaWlFTklBd2dEWHdoRENBSElBeUZRaGlLSVFjZ0FpQUhJQjk4ZkNFQ0lBMGdBb1ZDRUlvaERTQU1JQTE4SVF3Z0J5QU1oVUkvaWlFSElBTWdDQ0FVZkh3aEF5QU9JQU9GUWlDS0lRNGdDU0FPZkNFSklBZ2dDWVZDR0lvaENDQURJQWdnSFh4OElRTWdEaUFEaFVJUWlpRU9JQWtnRG53aENTQUlJQW1GUWorS0lRZ2dCQ0FGSUI1OGZDRUVJQThnQklWQ0lJb2hEeUFLSUE5OElRb2dCU0FLaFVJWWlpRUZJQVFnQlNBUmZId2hCQ0FQSUFTRlFoQ0tJUThnQ2lBUGZDRUtJQVVnQ29WQ1A0b2hCU0FCSUFVZ0VYeDhJUUVnRFNBQmhVSWdpaUVOSUFrZ0RYd2hDU0FGSUFtRlFoaUtJUVVnQVNBRklCSjhmQ0VCSUEwZ0FZVkNFSW9oRFNBSklBMThJUWtnQlNBSmhVSS9paUVGSUFJZ0JpQVRmSHdoQWlBT0lBS0ZRaUNLSVE0Z0NpQU9mQ0VLSUFZZ0NvVkNHSW9oQmlBQ0lBWWdGSHg4SVFJZ0RpQUNoVUlRaWlFT0lBb2dEbndoQ2lBR0lBcUZRaitLSVFZZ0F5QUhJQlY4ZkNFRElBOGdBNFZDSUlvaER5QUxJQTk4SVFzZ0J5QUxoVUlZaWlFSElBTWdCeUFXZkh3aEF5QVBJQU9GUWhDS0lROGdDeUFQZkNFTElBY2dDNFZDUDRvaEJ5QUVJQWdnRjN4OElRUWdFQ0FFaFVJZ2lpRVFJQXdnRUh3aERDQUlJQXlGUWhpS0lRZ2dCQ0FJSUJoOGZDRUVJQkFnQklWQ0VJb2hFQ0FNSUJCOElRd2dDQ0FNaFVJL2lpRUlJQUVnQmlBWmZId2hBU0FRSUFHRlFpQ0tJUkFnQ3lBUWZDRUxJQVlnQzRWQ0dJb2hCaUFCSUFZZ0dueDhJUUVnRUNBQmhVSVFpaUVRSUFzZ0VId2hDeUFHSUF1RlFqK0tJUVlnQWlBSElCdDhmQ0VDSUEwZ0FvVkNJSW9oRFNBTUlBMThJUXdnQnlBTWhVSVlpaUVISUFJZ0J5QWNmSHdoQWlBTklBS0ZRaENLSVEwZ0RDQU5mQ0VNSUFjZ0RJVkNQNG9oQnlBRElBZ2dIWHg4SVFNZ0RpQURoVUlnaWlFT0lBa2dEbndoQ1NBSUlBbUZRaGlLSVFnZ0F5QUlJQjU4ZkNFRElBNGdBNFZDRUlvaERpQUpJQTU4SVFrZ0NDQUpoVUkvaWlFSUlBUWdCU0FmZkh3aEJDQVBJQVNGUWlDS0lROGdDaUFQZkNFS0lBVWdDb1ZDR0lvaEJTQUVJQVVnSUh4OElRUWdEeUFFaFVJUWlpRVBJQW9nRDN3aENpQUZJQXFGUWorS0lRVWdBU0FGSUI5OGZDRUJJQTBnQVlWQ0lJb2hEU0FKSUExOElRa2dCU0FKaFVJWWlpRUZJQUVnQlNBYmZId2hBU0FOSUFHRlFoQ0tJUTBnQ1NBTmZDRUpJQVVnQ1lWQ1A0b2hCU0FDSUFZZ0ZYeDhJUUlnRGlBQ2hVSWdpaUVPSUFvZ0Rud2hDaUFHSUFxRlFoaUtJUVlnQWlBR0lCbDhmQ0VDSUE0Z0FvVkNFSW9oRGlBS0lBNThJUW9nQmlBS2hVSS9paUVHSUFNZ0J5QWFmSHdoQXlBUElBT0ZRaUNLSVE4Z0N5QVBmQ0VMSUFjZ0M0VkNHSW9oQnlBRElBY2dJSHg4SVFNZ0R5QURoVUlRaWlFUElBc2dEM3doQ3lBSElBdUZRaitLSVFjZ0JDQUlJQjU4ZkNFRUlCQWdCSVZDSUlvaEVDQU1JQkI4SVF3Z0NDQU1oVUlZaWlFSUlBUWdDQ0FYZkh3aEJDQVFJQVNGUWhDS0lSQWdEQ0FRZkNFTUlBZ2dESVZDUDRvaENDQUJJQVlnRW54OElRRWdFQ0FCaFVJZ2lpRVFJQXNnRUh3aEN5QUdJQXVGUWhpS0lRWWdBU0FHSUIxOGZDRUJJQkFnQVlWQ0VJb2hFQ0FMSUJCOElRc2dCaUFMaFVJL2lpRUdJQUlnQnlBUmZId2hBaUFOSUFLRlFpQ0tJUTBnRENBTmZDRU1JQWNnRElWQ0dJb2hCeUFDSUFjZ0UzeDhJUUlnRFNBQ2hVSVFpaUVOSUF3Z0RYd2hEQ0FISUF5RlFqK0tJUWNnQXlBSUlCeDhmQ0VESUE0Z0E0VkNJSW9oRGlBSklBNThJUWtnQ0NBSmhVSVlpaUVJSUFNZ0NDQVlmSHdoQXlBT0lBT0ZRaENLSVE0Z0NTQU9mQ0VKSUFnZ0NZVkNQNG9oQ0NBRUlBVWdGbng4SVFRZ0R5QUVoVUlnaWlFUElBb2dEM3doQ2lBRklBcUZRaGlLSVFVZ0JDQUZJQlI4ZkNFRUlBOGdCSVZDRUlvaER5QUtJQTk4SVFvZ0JTQUtoVUkvaWlFRklDRWdJU2tEQUNBQklBbUZoVGNEQUNBaUlDSXBBd0FnQWlBS2hZVTNBd0FnSXlBaktRTUFJQU1nQzRXRk53TUFJQ1FnSkNrREFDQUVJQXlGaFRjREFDQWxJQ1VwQXdBZ0JTQU5oWVUzQXdBZ0ppQW1LUU1BSUFZZ0RvV0ZOd01BSUNjZ0p5a0RBQ0FISUErRmhUY0RBQ0FvSUNncEF3QWdDQ0FRaFlVM0F3QUwnKVxuICB2YXIgcmVhZHkgPSBudWxsXG5cbiAgdmFyIG1vZCA9IHtcbiAgICBidWZmZXI6IHdhc20sXG4gICAgbWVtb3J5OiBudWxsLFxuICAgIGV4cG9ydHM6IG51bGwsXG4gICAgcmVhbGxvYzogcmVhbGxvYyxcbiAgICBvbmxvYWQ6IG9ubG9hZFxuICB9XG5cbiAgb25sb2FkKGZ1bmN0aW9uICgpIHt9KVxuXG4gIHJldHVybiBtb2RcblxuICBmdW5jdGlvbiByZWFsbG9jIChzaXplKSB7XG4gICAgbW9kLmV4cG9ydHMubWVtb3J5Lmdyb3coTWF0aC5jZWlsKE1hdGguYWJzKHNpemUgLSBtb2QubWVtb3J5Lmxlbmd0aCkgLyA2NTUzNikpXG4gICAgbW9kLm1lbW9yeSA9IG5ldyBVaW50OEFycmF5KG1vZC5leHBvcnRzLm1lbW9yeS5idWZmZXIpXG4gIH1cblxuICBmdW5jdGlvbiBvbmxvYWQgKGNiKSB7XG4gICAgaWYgKG1vZC5leHBvcnRzKSByZXR1cm4gY2IoKVxuXG4gICAgaWYgKHJlYWR5KSB7XG4gICAgICByZWFkeS50aGVuKGNiLmJpbmQobnVsbCwgbnVsbCkpLmNhdGNoKGNiKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmIChvcHRzICYmIG9wdHMuYXN5bmMpIHRocm93IG5ldyBFcnJvcignYXN5bmMnKVxuICAgICAgc2V0dXAoe2luc3RhbmNlOiBuZXcgV2ViQXNzZW1ibHkuSW5zdGFuY2UobmV3IFdlYkFzc2VtYmx5Lk1vZHVsZSh3YXNtKSwgaW1wKX0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZWFkeSA9IFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKHdhc20sIGltcCkudGhlbihzZXR1cClcbiAgICB9XG5cbiAgICBvbmxvYWQoY2IpXG4gIH1cblxuICBmdW5jdGlvbiBzZXR1cCAodykge1xuICAgIG1vZC5leHBvcnRzID0gdy5pbnN0YW5jZS5leHBvcnRzXG4gICAgbW9kLm1lbW9yeSA9IG1vZC5leHBvcnRzLm1lbW9yeSAmJiBtb2QuZXhwb3J0cy5tZW1vcnkuYnVmZmVyICYmIG5ldyBVaW50OEFycmF5KG1vZC5leHBvcnRzLm1lbW9yeS5idWZmZXIpXG4gIH1cbn1cblxuZnVuY3Rpb24gdG9VaW50OEFycmF5IChzKSB7XG4gIGlmICh0eXBlb2YgYXRvYiA9PT0gJ2Z1bmN0aW9uJykgcmV0dXJuIG5ldyBVaW50OEFycmF5KGF0b2Iocykuc3BsaXQoJycpLm1hcChjaGFyQ29kZUF0KSlcbiAgcmV0dXJuIG5ldyAocmVxdWlyZSgnYnVmJyArICdmZXInKS5CdWZmZXIpKHMsICdiYXNlNjQnKVxufVxuXG5mdW5jdGlvbiBjaGFyQ29kZUF0IChjKSB7XG4gIHJldHVybiBjLmNoYXJDb2RlQXQoMClcbn1cbiIsIid1c2Ugc3RyaWN0J1xudmFyIEFMUEhBQkVUID0gJ3FwenJ5OXg4Z2YydHZkdzBzM2puNTRraGNlNm11YTdsJ1xuXG4vLyBwcmUtY29tcHV0ZSBsb29rdXAgdGFibGVcbnZhciBBTFBIQUJFVF9NQVAgPSB7fVxuZm9yICh2YXIgeiA9IDA7IHogPCBBTFBIQUJFVC5sZW5ndGg7IHorKykge1xuICB2YXIgeCA9IEFMUEhBQkVULmNoYXJBdCh6KVxuXG4gIGlmIChBTFBIQUJFVF9NQVBbeF0gIT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IFR5cGVFcnJvcih4ICsgJyBpcyBhbWJpZ3VvdXMnKVxuICBBTFBIQUJFVF9NQVBbeF0gPSB6XG59XG5cbmZ1bmN0aW9uIHBvbHltb2RTdGVwIChwcmUpIHtcbiAgdmFyIGIgPSBwcmUgPj4gMjVcbiAgcmV0dXJuICgocHJlICYgMHgxRkZGRkZGKSA8PCA1KSBeXG4gICAgKC0oKGIgPj4gMCkgJiAxKSAmIDB4M2I2YTU3YjIpIF5cbiAgICAoLSgoYiA+PiAxKSAmIDEpICYgMHgyNjUwOGU2ZCkgXlxuICAgICgtKChiID4+IDIpICYgMSkgJiAweDFlYTExOWZhKSBeXG4gICAgKC0oKGIgPj4gMykgJiAxKSAmIDB4M2Q0MjMzZGQpIF5cbiAgICAoLSgoYiA+PiA0KSAmIDEpICYgMHgyYTE0NjJiMylcbn1cblxuZnVuY3Rpb24gcHJlZml4Q2hrIChwcmVmaXgpIHtcbiAgdmFyIGNoayA9IDFcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmaXgubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYyA9IHByZWZpeC5jaGFyQ29kZUF0KGkpXG4gICAgaWYgKGMgPCAzMyB8fCBjID4gMTI2KSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJlZml4ICgnICsgcHJlZml4ICsgJyknKVxuXG4gICAgY2hrID0gcG9seW1vZFN0ZXAoY2hrKSBeIChjID4+IDUpXG4gIH1cbiAgY2hrID0gcG9seW1vZFN0ZXAoY2hrKVxuXG4gIGZvciAoaSA9IDA7IGkgPCBwcmVmaXgubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgdiA9IHByZWZpeC5jaGFyQ29kZUF0KGkpXG4gICAgY2hrID0gcG9seW1vZFN0ZXAoY2hrKSBeICh2ICYgMHgxZilcbiAgfVxuICByZXR1cm4gY2hrXG59XG5cbmZ1bmN0aW9uIGVuY29kZSAocHJlZml4LCB3b3JkcywgTElNSVQpIHtcbiAgTElNSVQgPSBMSU1JVCB8fCA5MFxuICBpZiAoKHByZWZpeC5sZW5ndGggKyA3ICsgd29yZHMubGVuZ3RoKSA+IExJTUlUKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeGNlZWRzIGxlbmd0aCBsaW1pdCcpXG5cbiAgcHJlZml4ID0gcHJlZml4LnRvTG93ZXJDYXNlKClcblxuICAvLyBkZXRlcm1pbmUgY2hrIG1vZFxuICB2YXIgY2hrID0gcHJlZml4Q2hrKHByZWZpeClcbiAgdmFyIHJlc3VsdCA9IHByZWZpeCArICcxJ1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHggPSB3b3Jkc1tpXVxuICAgIGlmICgoeCA+PiA1KSAhPT0gMCkgdGhyb3cgbmV3IEVycm9yKCdOb24gNS1iaXQgd29yZCcpXG5cbiAgICBjaGsgPSBwb2x5bW9kU3RlcChjaGspIF4geFxuICAgIHJlc3VsdCArPSBBTFBIQUJFVC5jaGFyQXQoeClcbiAgfVxuXG4gIGZvciAoaSA9IDA7IGkgPCA2OyArK2kpIHtcbiAgICBjaGsgPSBwb2x5bW9kU3RlcChjaGspXG4gIH1cbiAgY2hrIF49IDFcblxuICBmb3IgKGkgPSAwOyBpIDwgNjsgKytpKSB7XG4gICAgdmFyIHYgPSAoY2hrID4+ICgoNSAtIGkpICogNSkpICYgMHgxZlxuICAgIHJlc3VsdCArPSBBTFBIQUJFVC5jaGFyQXQodilcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZnVuY3Rpb24gZGVjb2RlIChzdHIsIExJTUlUKSB7XG4gIExJTUlUID0gTElNSVQgfHwgOTBcbiAgaWYgKHN0ci5sZW5ndGggPCA4KSB0aHJvdyBuZXcgVHlwZUVycm9yKHN0ciArICcgdG9vIHNob3J0JylcbiAgaWYgKHN0ci5sZW5ndGggPiBMSU1JVCkgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhjZWVkcyBsZW5ndGggbGltaXQnKVxuXG4gIC8vIGRvbid0IGFsbG93IG1peGVkIGNhc2VcbiAgdmFyIGxvd2VyZWQgPSBzdHIudG9Mb3dlckNhc2UoKVxuICB2YXIgdXBwZXJlZCA9IHN0ci50b1VwcGVyQ2FzZSgpXG4gIGlmIChzdHIgIT09IGxvd2VyZWQgJiYgc3RyICE9PSB1cHBlcmVkKSB0aHJvdyBuZXcgRXJyb3IoJ01peGVkLWNhc2Ugc3RyaW5nICcgKyBzdHIpXG4gIHN0ciA9IGxvd2VyZWRcblxuICB2YXIgc3BsaXQgPSBzdHIubGFzdEluZGV4T2YoJzEnKVxuICBpZiAoc3BsaXQgPT09IC0xKSB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlcGFyYXRvciBjaGFyYWN0ZXIgZm9yICcgKyBzdHIpXG4gIGlmIChzcGxpdCA9PT0gMCkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByZWZpeCBmb3IgJyArIHN0cilcblxuICB2YXIgcHJlZml4ID0gc3RyLnNsaWNlKDAsIHNwbGl0KVxuICB2YXIgd29yZENoYXJzID0gc3RyLnNsaWNlKHNwbGl0ICsgMSlcbiAgaWYgKHdvcmRDaGFycy5sZW5ndGggPCA2KSB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgdG9vIHNob3J0JylcblxuICB2YXIgY2hrID0gcHJlZml4Q2hrKHByZWZpeClcbiAgdmFyIHdvcmRzID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB3b3JkQ2hhcnMubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgYyA9IHdvcmRDaGFycy5jaGFyQXQoaSlcbiAgICB2YXIgdiA9IEFMUEhBQkVUX01BUFtjXVxuICAgIGlmICh2ID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvcignVW5rbm93biBjaGFyYWN0ZXIgJyArIGMpXG4gICAgY2hrID0gcG9seW1vZFN0ZXAoY2hrKSBeIHZcblxuICAgIC8vIG5vdCBpbiB0aGUgY2hlY2tzdW0/XG4gICAgaWYgKGkgKyA2ID49IHdvcmRDaGFycy5sZW5ndGgpIGNvbnRpbnVlXG4gICAgd29yZHMucHVzaCh2KVxuICB9XG5cbiAgaWYgKGNoayAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoZWNrc3VtIGZvciAnICsgc3RyKVxuICByZXR1cm4geyBwcmVmaXg6IHByZWZpeCwgd29yZHM6IHdvcmRzIH1cbn1cblxuZnVuY3Rpb24gY29udmVydCAoZGF0YSwgaW5CaXRzLCBvdXRCaXRzLCBwYWQpIHtcbiAgdmFyIHZhbHVlID0gMFxuICB2YXIgYml0cyA9IDBcbiAgdmFyIG1heFYgPSAoMSA8PCBvdXRCaXRzKSAtIDFcblxuICB2YXIgcmVzdWx0ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgdmFsdWUgPSAodmFsdWUgPDwgaW5CaXRzKSB8IGRhdGFbaV1cbiAgICBiaXRzICs9IGluQml0c1xuXG4gICAgd2hpbGUgKGJpdHMgPj0gb3V0Qml0cykge1xuICAgICAgYml0cyAtPSBvdXRCaXRzXG4gICAgICByZXN1bHQucHVzaCgodmFsdWUgPj4gYml0cykgJiBtYXhWKVxuICAgIH1cbiAgfVxuXG4gIGlmIChwYWQpIHtcbiAgICBpZiAoYml0cyA+IDApIHtcbiAgICAgIHJlc3VsdC5wdXNoKCh2YWx1ZSA8PCAob3V0Qml0cyAtIGJpdHMpKSAmIG1heFYpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChiaXRzID49IGluQml0cykgdGhyb3cgbmV3IEVycm9yKCdFeGNlc3MgcGFkZGluZycpXG4gICAgaWYgKCh2YWx1ZSA8PCAob3V0Qml0cyAtIGJpdHMpKSAmIG1heFYpIHRocm93IG5ldyBFcnJvcignTm9uLXplcm8gcGFkZGluZycpXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIHRvV29yZHMgKGJ5dGVzKSB7XG4gIHJldHVybiBjb252ZXJ0KGJ5dGVzLCA4LCA1LCB0cnVlKVxufVxuXG5mdW5jdGlvbiBmcm9tV29yZHMgKHdvcmRzKSB7XG4gIHJldHVybiBjb252ZXJ0KHdvcmRzLCA1LCA4LCBmYWxzZSlcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGRlY29kZTogZGVjb2RlLFxuICBlbmNvZGU6IGVuY29kZSxcbiAgdG9Xb3JkczogdG9Xb3JkcyxcbiAgZnJvbVdvcmRzOiBmcm9tV29yZHNcbn1cbiIsIid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTU4ID0gcmVxdWlyZSgnYnM1OCcpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY2hlY2tzdW1Gbikge1xuICAvLyBFbmNvZGUgYSBidWZmZXIgYXMgYSBiYXNlNTgtY2hlY2sgZW5jb2RlZCBzdHJpbmdcbiAgZnVuY3Rpb24gZW5jb2RlIChwYXlsb2FkKSB7XG4gICAgdmFyIGNoZWNrc3VtID0gY2hlY2tzdW1GbihwYXlsb2FkKVxuXG4gICAgcmV0dXJuIGJhc2U1OC5lbmNvZGUoQnVmZmVyLmNvbmNhdChbXG4gICAgICBwYXlsb2FkLFxuICAgICAgY2hlY2tzdW1cbiAgICBdLCBwYXlsb2FkLmxlbmd0aCArIDQpKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVjb2RlUmF3IChidWZmZXIpIHtcbiAgICB2YXIgcGF5bG9hZCA9IGJ1ZmZlci5zbGljZSgwLCAtNClcbiAgICB2YXIgY2hlY2tzdW0gPSBidWZmZXIuc2xpY2UoLTQpXG4gICAgdmFyIG5ld0NoZWNrc3VtID0gY2hlY2tzdW1GbihwYXlsb2FkKVxuXG4gICAgaWYgKGNoZWNrc3VtWzBdIF4gbmV3Q2hlY2tzdW1bMF0gfFxuICAgICAgICBjaGVja3N1bVsxXSBeIG5ld0NoZWNrc3VtWzFdIHxcbiAgICAgICAgY2hlY2tzdW1bMl0gXiBuZXdDaGVja3N1bVsyXSB8XG4gICAgICAgIGNoZWNrc3VtWzNdIF4gbmV3Q2hlY2tzdW1bM10pIHJldHVyblxuXG4gICAgcmV0dXJuIHBheWxvYWRcbiAgfVxuXG4gIC8vIERlY29kZSBhIGJhc2U1OC1jaGVjayBlbmNvZGVkIHN0cmluZyB0byBhIGJ1ZmZlciwgbm8gcmVzdWx0IGlmIGNoZWNrc3VtIGlzIHdyb25nXG4gIGZ1bmN0aW9uIGRlY29kZVVuc2FmZSAoc3RyaW5nKSB7XG4gICAgdmFyIGJ1ZmZlciA9IGJhc2U1OC5kZWNvZGVVbnNhZmUoc3RyaW5nKVxuICAgIGlmICghYnVmZmVyKSByZXR1cm5cblxuICAgIHJldHVybiBkZWNvZGVSYXcoYnVmZmVyKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVjb2RlIChzdHJpbmcpIHtcbiAgICB2YXIgYnVmZmVyID0gYmFzZTU4LmRlY29kZShzdHJpbmcpXG4gICAgdmFyIHBheWxvYWQgPSBkZWNvZGVSYXcoYnVmZmVyLCBjaGVja3N1bUZuKVxuICAgIGlmICghcGF5bG9hZCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNoZWNrc3VtJylcbiAgICByZXR1cm4gcGF5bG9hZFxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBlbmNvZGU6IGVuY29kZSxcbiAgICBkZWNvZGU6IGRlY29kZSxcbiAgICBkZWNvZGVVbnNhZmU6IGRlY29kZVVuc2FmZVxuICB9XG59XG4iLCJ2YXIgYmFzZXggPSByZXF1aXJlKCdiYXNlLXgnKVxudmFyIEFMUEhBQkVUID0gJzEyMzQ1Njc4OUFCQ0RFRkdISktMTU5QUVJTVFVWV1hZWmFiY2RlZmdoaWprbW5vcHFyc3R1dnd4eXonXG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZXgoQUxQSEFCRVQpXG4iLCIvLyBiYXNlLXggZW5jb2RpbmcgLyBkZWNvZGluZ1xuLy8gQ29weXJpZ2h0IChjKSAyMDE4IGJhc2UteCBjb250cmlidXRvcnNcbi8vIENvcHlyaWdodCAoYykgMjAxNC0yMDE4IFRoZSBCaXRjb2luIENvcmUgZGV2ZWxvcGVycyAoYmFzZTU4LmNwcClcbi8vIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgc29mdHdhcmUgbGljZW5zZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmdcbi8vIGZpbGUgTElDRU5TRSBvciBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocC5cblxuY29uc3QgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiYXNlIChBTFBIQUJFVCkge1xuICBpZiAoQUxQSEFCRVQubGVuZ3RoID49IDI1NSkgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxwaGFiZXQgdG9vIGxvbmcnKVxuXG4gIGNvbnN0IEJBU0VfTUFQID0gbmV3IFVpbnQ4QXJyYXkoMjU2KVxuICBCQVNFX01BUC5maWxsKDI1NSlcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IEFMUEhBQkVULmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgeCA9IEFMUEhBQkVULmNoYXJBdChpKVxuICAgIGNvbnN0IHhjID0geC5jaGFyQ29kZUF0KDApXG5cbiAgICBpZiAoQkFTRV9NQVBbeGNdICE9PSAyNTUpIHRocm93IG5ldyBUeXBlRXJyb3IoeCArICcgaXMgYW1iaWd1b3VzJylcbiAgICBCQVNFX01BUFt4Y10gPSBpXG4gIH1cblxuICBjb25zdCBCQVNFID0gQUxQSEFCRVQubGVuZ3RoXG4gIGNvbnN0IExFQURFUiA9IEFMUEhBQkVULmNoYXJBdCgwKVxuICBjb25zdCBGQUNUT1IgPSBNYXRoLmxvZyhCQVNFKSAvIE1hdGgubG9nKDI1NikgLy8gbG9nKEJBU0UpIC8gbG9nKDI1NiksIHJvdW5kZWQgdXBcbiAgY29uc3QgaUZBQ1RPUiA9IE1hdGgubG9nKDI1NikgLyBNYXRoLmxvZyhCQVNFKSAvLyBsb2coMjU2KSAvIGxvZyhCQVNFKSwgcm91bmRlZCB1cFxuXG4gIGZ1bmN0aW9uIGVuY29kZSAoc291cmNlKSB7XG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoc291cmNlKSkgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgQnVmZmVyJylcbiAgICBpZiAoc291cmNlLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnXG5cbiAgICAvLyBTa2lwICYgY291bnQgbGVhZGluZyB6ZXJvZXMuXG4gICAgbGV0IHplcm9lcyA9IDBcbiAgICBsZXQgbGVuZ3RoID0gMFxuICAgIGxldCBwYmVnaW4gPSAwXG4gICAgY29uc3QgcGVuZCA9IHNvdXJjZS5sZW5ndGhcblxuICAgIHdoaWxlIChwYmVnaW4gIT09IHBlbmQgJiYgc291cmNlW3BiZWdpbl0gPT09IDApIHtcbiAgICAgIHBiZWdpbisrXG4gICAgICB6ZXJvZXMrK1xuICAgIH1cblxuICAgIC8vIEFsbG9jYXRlIGVub3VnaCBzcGFjZSBpbiBiaWctZW5kaWFuIGJhc2U1OCByZXByZXNlbnRhdGlvbi5cbiAgICBjb25zdCBzaXplID0gKChwZW5kIC0gcGJlZ2luKSAqIGlGQUNUT1IgKyAxKSA+Pj4gMFxuICAgIGNvbnN0IGI1OCA9IG5ldyBVaW50OEFycmF5KHNpemUpXG5cbiAgICAvLyBQcm9jZXNzIHRoZSBieXRlcy5cbiAgICB3aGlsZSAocGJlZ2luICE9PSBwZW5kKSB7XG4gICAgICBsZXQgY2FycnkgPSBzb3VyY2VbcGJlZ2luXVxuXG4gICAgICAvLyBBcHBseSBcImI1OCA9IGI1OCAqIDI1NiArIGNoXCIuXG4gICAgICBsZXQgaSA9IDBcbiAgICAgIGZvciAobGV0IGl0ID0gc2l6ZSAtIDE7IChjYXJyeSAhPT0gMCB8fCBpIDwgbGVuZ3RoKSAmJiAoaXQgIT09IC0xKTsgaXQtLSwgaSsrKSB7XG4gICAgICAgIGNhcnJ5ICs9ICgyNTYgKiBiNThbaXRdKSA+Pj4gMFxuICAgICAgICBiNThbaXRdID0gKGNhcnJ5ICUgQkFTRSkgPj4+IDBcbiAgICAgICAgY2FycnkgPSAoY2FycnkgLyBCQVNFKSA+Pj4gMFxuICAgICAgfVxuXG4gICAgICBpZiAoY2FycnkgIT09IDApIHRocm93IG5ldyBFcnJvcignTm9uLXplcm8gY2FycnknKVxuICAgICAgbGVuZ3RoID0gaVxuICAgICAgcGJlZ2luKytcbiAgICB9XG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgemVyb2VzIGluIGJhc2U1OCByZXN1bHQuXG4gICAgbGV0IGl0ID0gc2l6ZSAtIGxlbmd0aFxuICAgIHdoaWxlIChpdCAhPT0gc2l6ZSAmJiBiNThbaXRdID09PSAwKSB7XG4gICAgICBpdCsrXG4gICAgfVxuXG4gICAgLy8gVHJhbnNsYXRlIHRoZSByZXN1bHQgaW50byBhIHN0cmluZy5cbiAgICBsZXQgc3RyID0gTEVBREVSLnJlcGVhdCh6ZXJvZXMpXG4gICAgZm9yICg7IGl0IDwgc2l6ZTsgKytpdCkgc3RyICs9IEFMUEhBQkVULmNoYXJBdChiNThbaXRdKVxuXG4gICAgcmV0dXJuIHN0clxuICB9XG5cbiAgZnVuY3Rpb24gZGVjb2RlVW5zYWZlIChzb3VyY2UpIHtcbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ3N0cmluZycpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIFN0cmluZycpXG4gICAgaWYgKHNvdXJjZS5sZW5ndGggPT09IDApIHJldHVybiBCdWZmZXIuYWxsb2MoMClcblxuICAgIGxldCBwc3ogPSAwXG5cbiAgICAvLyBTa2lwIGxlYWRpbmcgc3BhY2VzLlxuICAgIGlmIChzb3VyY2VbcHN6XSA9PT0gJyAnKSByZXR1cm5cblxuICAgIC8vIFNraXAgYW5kIGNvdW50IGxlYWRpbmcgJzEncy5cbiAgICBsZXQgemVyb2VzID0gMFxuICAgIGxldCBsZW5ndGggPSAwXG4gICAgd2hpbGUgKHNvdXJjZVtwc3pdID09PSBMRUFERVIpIHtcbiAgICAgIHplcm9lcysrXG4gICAgICBwc3orK1xuICAgIH1cblxuICAgIC8vIEFsbG9jYXRlIGVub3VnaCBzcGFjZSBpbiBiaWctZW5kaWFuIGJhc2UyNTYgcmVwcmVzZW50YXRpb24uXG4gICAgY29uc3Qgc2l6ZSA9ICgoKHNvdXJjZS5sZW5ndGggLSBwc3opICogRkFDVE9SKSArIDEpID4+PiAwIC8vIGxvZyg1OCkgLyBsb2coMjU2KSwgcm91bmRlZCB1cC5cbiAgICBjb25zdCBiMjU2ID0gbmV3IFVpbnQ4QXJyYXkoc2l6ZSlcblxuICAgIC8vIFByb2Nlc3MgdGhlIGNoYXJhY3RlcnMuXG4gICAgd2hpbGUgKHNvdXJjZVtwc3pdKSB7XG4gICAgICAvLyBEZWNvZGUgY2hhcmFjdGVyXG4gICAgICBsZXQgY2FycnkgPSBCQVNFX01BUFtzb3VyY2UuY2hhckNvZGVBdChwc3opXVxuXG4gICAgICAvLyBJbnZhbGlkIGNoYXJhY3RlclxuICAgICAgaWYgKGNhcnJ5ID09PSAyNTUpIHJldHVyblxuXG4gICAgICBsZXQgaSA9IDBcbiAgICAgIGZvciAobGV0IGl0ID0gc2l6ZSAtIDE7IChjYXJyeSAhPT0gMCB8fCBpIDwgbGVuZ3RoKSAmJiAoaXQgIT09IC0xKTsgaXQtLSwgaSsrKSB7XG4gICAgICAgIGNhcnJ5ICs9IChCQVNFICogYjI1NltpdF0pID4+PiAwXG4gICAgICAgIGIyNTZbaXRdID0gKGNhcnJ5ICUgMjU2KSA+Pj4gMFxuICAgICAgICBjYXJyeSA9IChjYXJyeSAvIDI1NikgPj4+IDBcbiAgICAgIH1cblxuICAgICAgaWYgKGNhcnJ5ICE9PSAwKSB0aHJvdyBuZXcgRXJyb3IoJ05vbi16ZXJvIGNhcnJ5JylcbiAgICAgIGxlbmd0aCA9IGlcbiAgICAgIHBzeisrXG4gICAgfVxuXG4gICAgLy8gU2tpcCB0cmFpbGluZyBzcGFjZXMuXG4gICAgaWYgKHNvdXJjZVtwc3pdID09PSAnICcpIHJldHVyblxuXG4gICAgLy8gU2tpcCBsZWFkaW5nIHplcm9lcyBpbiBiMjU2LlxuICAgIGxldCBpdCA9IHNpemUgLSBsZW5ndGhcbiAgICB3aGlsZSAoaXQgIT09IHNpemUgJiYgYjI1NltpdF0gPT09IDApIHtcbiAgICAgIGl0KytcbiAgICB9XG5cbiAgICBjb25zdCB2Y2ggPSBCdWZmZXIuYWxsb2NVbnNhZmUoemVyb2VzICsgKHNpemUgLSBpdCkpXG4gICAgdmNoLmZpbGwoMHgwMCwgMCwgemVyb2VzKVxuXG4gICAgbGV0IGogPSB6ZXJvZXNcbiAgICB3aGlsZSAoaXQgIT09IHNpemUpIHtcbiAgICAgIHZjaFtqKytdID0gYjI1NltpdCsrXVxuICAgIH1cblxuICAgIHJldHVybiB2Y2hcbiAgfVxuXG4gIGZ1bmN0aW9uIGRlY29kZSAoc3RyaW5nKSB7XG4gICAgY29uc3QgYnVmZmVyID0gZGVjb2RlVW5zYWZlKHN0cmluZylcbiAgICBpZiAoYnVmZmVyKSByZXR1cm4gYnVmZmVyXG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vbi1iYXNlJyArIEJBU0UgKyAnIGNoYXJhY3RlcicpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVuY29kZTogZW5jb2RlLFxuICAgIGRlY29kZVVuc2FmZTogZGVjb2RlVW5zYWZlLFxuICAgIGRlY29kZTogZGVjb2RlXG4gIH1cbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKVxuXG52YXIgQmlnSW50ZWdlciA9IHJlcXVpcmUoJ2JpZ2knKVxudmFyIEVDU2lnbmF0dXJlID0gcmVxdWlyZSgnLi9lY3NpZ25hdHVyZScpXG5cbnZhciBaRVJPID0gQnVmZmVyLmFsbG9jKDEsIDApXG52YXIgT05FID0gQnVmZmVyLmFsbG9jKDEsIDEpXG5cbnZhciBlY3VydmUgPSByZXF1aXJlKCdlY3VydmUnKVxudmFyIHNlY3AyNTZrMSA9IGVjdXJ2ZS5nZXRDdXJ2ZUJ5TmFtZSgnc2VjcDI1NmsxJylcblxuLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY5Nzkjc2VjdGlvbi0zLjJcbmZ1bmN0aW9uIGRldGVybWluaXN0aWNHZW5lcmF0ZUsgKGhhc2gsIHgsIGNoZWNrU2lnKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy50dXBsZShcbiAgICB0eXBlcy5IYXNoMjU2Yml0LFxuICAgIHR5cGVzLkJ1ZmZlcjI1NmJpdCxcbiAgICB0eXBlcy5GdW5jdGlvblxuICApLCBhcmd1bWVudHMpXG5cbiAgLy8gU3RlcCBBLCBpZ25vcmVkIGFzIGhhc2ggYWxyZWFkeSBwcm92aWRlZFxuICAvLyBTdGVwIEJcbiAgLy8gU3RlcCBDXG4gIHZhciBrID0gQnVmZmVyLmFsbG9jKDMyLCAwKVxuICB2YXIgdiA9IEJ1ZmZlci5hbGxvYygzMiwgMSlcblxuICAvLyBTdGVwIERcbiAgayA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIGspXG4gICAgLnVwZGF0ZSh2KVxuICAgIC51cGRhdGUoWkVSTylcbiAgICAudXBkYXRlKHgpXG4gICAgLnVwZGF0ZShoYXNoKVxuICAgIC5kaWdlc3QoKVxuXG4gIC8vIFN0ZXAgRVxuICB2ID0gY3JlYXRlSG1hYygnc2hhMjU2JywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG5cbiAgLy8gU3RlcCBGXG4gIGsgPSBjcmVhdGVIbWFjKCdzaGEyNTYnLCBrKVxuICAgIC51cGRhdGUodilcbiAgICAudXBkYXRlKE9ORSlcbiAgICAudXBkYXRlKHgpXG4gICAgLnVwZGF0ZShoYXNoKVxuICAgIC5kaWdlc3QoKVxuXG4gIC8vIFN0ZXAgR1xuICB2ID0gY3JlYXRlSG1hYygnc2hhMjU2JywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG5cbiAgLy8gU3RlcCBIMS9IMmEsIGlnbm9yZWQgYXMgdGxlbiA9PT0gcWxlbiAoMjU2IGJpdClcbiAgLy8gU3RlcCBIMmJcbiAgdiA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIGspLnVwZGF0ZSh2KS5kaWdlc3QoKVxuXG4gIHZhciBUID0gQmlnSW50ZWdlci5mcm9tQnVmZmVyKHYpXG5cbiAgLy8gU3RlcCBIMywgcmVwZWF0IHVudGlsIFQgaXMgd2l0aGluIHRoZSBpbnRlcnZhbCBbMSwgbiAtIDFdIGFuZCBpcyBzdWl0YWJsZSBmb3IgRUNEU0FcbiAgd2hpbGUgKFQuc2lnbnVtKCkgPD0gMCB8fCBULmNvbXBhcmVUbyhzZWNwMjU2azEubikgPj0gMCB8fCAhY2hlY2tTaWcoVCkpIHtcbiAgICBrID0gY3JlYXRlSG1hYygnc2hhMjU2JywgaylcbiAgICAgIC51cGRhdGUodilcbiAgICAgIC51cGRhdGUoWkVSTylcbiAgICAgIC5kaWdlc3QoKVxuXG4gICAgdiA9IGNyZWF0ZUhtYWMoJ3NoYTI1NicsIGspLnVwZGF0ZSh2KS5kaWdlc3QoKVxuXG4gICAgLy8gU3RlcCBIMS9IMmEsIGFnYWluLCBpZ25vcmVkIGFzIHRsZW4gPT09IHFsZW4gKDI1NiBiaXQpXG4gICAgLy8gU3RlcCBIMmIgYWdhaW5cbiAgICB2ID0gY3JlYXRlSG1hYygnc2hhMjU2JywgaykudXBkYXRlKHYpLmRpZ2VzdCgpXG4gICAgVCA9IEJpZ0ludGVnZXIuZnJvbUJ1ZmZlcih2KVxuICB9XG5cbiAgcmV0dXJuIFRcbn1cblxudmFyIE5fT1ZFUl9UV08gPSBzZWNwMjU2azEubi5zaGlmdFJpZ2h0KDEpXG5cbmZ1bmN0aW9uIHNpZ24gKGhhc2gsIGQpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKHR5cGVzLkhhc2gyNTZiaXQsIHR5cGVzLkJpZ0ludCksIGFyZ3VtZW50cylcblxuICB2YXIgeCA9IGQudG9CdWZmZXIoMzIpXG4gIHZhciBlID0gQmlnSW50ZWdlci5mcm9tQnVmZmVyKGhhc2gpXG4gIHZhciBuID0gc2VjcDI1NmsxLm5cbiAgdmFyIEcgPSBzZWNwMjU2azEuR1xuXG4gIHZhciByLCBzXG4gIGRldGVybWluaXN0aWNHZW5lcmF0ZUsoaGFzaCwgeCwgZnVuY3Rpb24gKGspIHtcbiAgICB2YXIgUSA9IEcubXVsdGlwbHkoaylcblxuICAgIGlmIChzZWNwMjU2azEuaXNJbmZpbml0eShRKSkgcmV0dXJuIGZhbHNlXG5cbiAgICByID0gUS5hZmZpbmVYLm1vZChuKVxuICAgIGlmIChyLnNpZ251bSgpID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgIHMgPSBrLm1vZEludmVyc2UobikubXVsdGlwbHkoZS5hZGQoZC5tdWx0aXBseShyKSkpLm1vZChuKVxuICAgIGlmIChzLnNpZ251bSgpID09PSAwKSByZXR1cm4gZmFsc2VcblxuICAgIHJldHVybiB0cnVlXG4gIH0pXG5cbiAgLy8gZW5mb3JjZSBsb3cgUyB2YWx1ZXMsIHNlZSBiaXA2MjogJ2xvdyBzIHZhbHVlcyBpbiBzaWduYXR1cmVzJ1xuICBpZiAocy5jb21wYXJlVG8oTl9PVkVSX1RXTykgPiAwKSB7XG4gICAgcyA9IG4uc3VidHJhY3QocylcbiAgfVxuXG4gIHJldHVybiBuZXcgRUNTaWduYXR1cmUociwgcylcbn1cblxuZnVuY3Rpb24gdmVyaWZ5IChoYXNoLCBzaWduYXR1cmUsIFEpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKFxuICAgIHR5cGVzLkhhc2gyNTZiaXQsXG4gICAgdHlwZXMuRUNTaWduYXR1cmUsXG4gICAgdHlwZXMuRUNQb2ludFxuICApLCBhcmd1bWVudHMpXG5cbiAgdmFyIG4gPSBzZWNwMjU2azEublxuICB2YXIgRyA9IHNlY3AyNTZrMS5HXG5cbiAgdmFyIHIgPSBzaWduYXR1cmUuclxuICB2YXIgcyA9IHNpZ25hdHVyZS5zXG5cbiAgLy8gMS40LjEgRW5mb3JjZSByIGFuZCBzIGFyZSBib3RoIGludGVnZXJzIGluIHRoZSBpbnRlcnZhbCBbMSwgbiDiiJIgMV1cbiAgaWYgKHIuc2lnbnVtKCkgPD0gMCB8fCByLmNvbXBhcmVUbyhuKSA+PSAwKSByZXR1cm4gZmFsc2VcbiAgaWYgKHMuc2lnbnVtKCkgPD0gMCB8fCBzLmNvbXBhcmVUbyhuKSA+PSAwKSByZXR1cm4gZmFsc2VcblxuICAvLyAxLjQuMiBIID0gSGFzaChNKSwgYWxyZWFkeSBkb25lIGJ5IHRoZSB1c2VyXG4gIC8vIDEuNC4zIGUgPSBIXG4gIHZhciBlID0gQmlnSW50ZWdlci5mcm9tQnVmZmVyKGhhc2gpXG5cbiAgLy8gQ29tcHV0ZSBzXi0xXG4gIHZhciBzSW52ID0gcy5tb2RJbnZlcnNlKG4pXG5cbiAgLy8gMS40LjQgQ29tcHV0ZSB1MSA9IGVzXuKIkjEgbW9kIG5cbiAgLy8gICAgICAgICAgICAgICB1MiA9IHJzXuKIkjEgbW9kIG5cbiAgdmFyIHUxID0gZS5tdWx0aXBseShzSW52KS5tb2QobilcbiAgdmFyIHUyID0gci5tdWx0aXBseShzSW52KS5tb2QobilcblxuICAvLyAxLjQuNSBDb21wdXRlIFIgPSAoeFIsIHlSKVxuICAvLyAgICAgICAgICAgICAgIFIgPSB1MUcgKyB1MlFcbiAgdmFyIFIgPSBHLm11bHRpcGx5VHdvKHUxLCBRLCB1MilcblxuICAvLyAxLjQuNSAoY29udC4pIEVuZm9yY2UgUiBpcyBub3QgYXQgaW5maW5pdHlcbiAgaWYgKHNlY3AyNTZrMS5pc0luZmluaXR5KFIpKSByZXR1cm4gZmFsc2VcblxuICAvLyAxLjQuNiBDb252ZXJ0IHRoZSBmaWVsZCBlbGVtZW50IFIueCB0byBhbiBpbnRlZ2VyXG4gIHZhciB4UiA9IFIuYWZmaW5lWFxuXG4gIC8vIDEuNC43IFNldCB2ID0geFIgbW9kIG5cbiAgdmFyIHYgPSB4Ui5tb2QobilcblxuICAvLyAxLjQuOCBJZiB2ID0gciwgb3V0cHV0IFwidmFsaWRcIiwgYW5kIGlmIHYgIT0gciwgb3V0cHV0IFwiaW52YWxpZFwiXG4gIHJldHVybiB2LmVxdWFscyhyKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGV0ZXJtaW5pc3RpY0dlbmVyYXRlSzogZGV0ZXJtaW5pc3RpY0dlbmVyYXRlSyxcbiAgc2lnbjogc2lnbixcbiAgdmVyaWZ5OiB2ZXJpZnksXG5cbiAgLy8gVE9ETzogcmVtb3ZlXG4gIF9fY3VydmU6IHNlY3AyNTZrMVxufVxuIiwiJ3VzZSBzdHJpY3QnXG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXJcblxudmFyIEJhc2UgPSByZXF1aXJlKCdjaXBoZXItYmFzZScpXG5cbnZhciBaRVJPUyA9IEJ1ZmZlci5hbGxvYygxMjgpXG52YXIgYmxvY2tzaXplID0gNjRcblxuZnVuY3Rpb24gSG1hYyAoYWxnLCBrZXkpIHtcbiAgQmFzZS5jYWxsKHRoaXMsICdkaWdlc3QnKVxuICBpZiAodHlwZW9mIGtleSA9PT0gJ3N0cmluZycpIHtcbiAgICBrZXkgPSBCdWZmZXIuZnJvbShrZXkpXG4gIH1cblxuICB0aGlzLl9hbGcgPSBhbGdcbiAgdGhpcy5fa2V5ID0ga2V5XG5cbiAgaWYgKGtleS5sZW5ndGggPiBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBhbGcoa2V5KVxuICB9IGVsc2UgaWYgKGtleS5sZW5ndGggPCBibG9ja3NpemUpIHtcbiAgICBrZXkgPSBCdWZmZXIuY29uY2F0KFtrZXksIFpFUk9TXSwgYmxvY2tzaXplKVxuICB9XG5cbiAgdmFyIGlwYWQgPSB0aGlzLl9pcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcbiAgdmFyIG9wYWQgPSB0aGlzLl9vcGFkID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJsb2Nrc2l6ZSlcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGJsb2Nrc2l6ZTsgaSsrKSB7XG4gICAgaXBhZFtpXSA9IGtleVtpXSBeIDB4MzZcbiAgICBvcGFkW2ldID0ga2V5W2ldIF4gMHg1Q1xuICB9XG5cbiAgdGhpcy5faGFzaCA9IFtpcGFkXVxufVxuXG5pbmhlcml0cyhIbWFjLCBCYXNlKVxuXG5IbWFjLnByb3RvdHlwZS5fdXBkYXRlID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgdGhpcy5faGFzaC5wdXNoKGRhdGEpXG59XG5cbkhtYWMucHJvdG90eXBlLl9maW5hbCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGggPSB0aGlzLl9hbGcoQnVmZmVyLmNvbmNhdCh0aGlzLl9oYXNoKSlcbiAgcmV0dXJuIHRoaXMuX2FsZyhCdWZmZXIuY29uY2F0KFt0aGlzLl9vcGFkLCBoXSkpXG59XG5tb2R1bGUuZXhwb3J0cyA9IEhtYWNcbiIsInZhciBNRDUgPSByZXF1aXJlKCdtZDUuanMnKVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgcmV0dXJuIG5ldyBNRDUoKS51cGRhdGUoYnVmZmVyKS5kaWdlc3QoKVxufVxuIiwiLy8gRklYTUU6IEtpbmQgb2YgYSB3ZWlyZCB3YXkgdG8gdGhyb3cgZXhjZXB0aW9ucywgY29uc2lkZXIgcmVtb3ZpbmdcbnZhciBhc3NlcnQgPSByZXF1aXJlKCdhc3NlcnQnKVxudmFyIEJpZ0ludGVnZXIgPSByZXF1aXJlKCcuL2JpZ2knKVxuXG4vKipcbiAqIFR1cm5zIGEgYnl0ZSBhcnJheSBpbnRvIGEgYmlnIGludGVnZXIuXG4gKlxuICogVGhpcyBmdW5jdGlvbiB3aWxsIGludGVycHJldCBhIGJ5dGUgYXJyYXkgYXMgYSBiaWcgaW50ZWdlciBpbiBiaWdcbiAqIGVuZGlhbiBub3RhdGlvbi5cbiAqL1xuQmlnSW50ZWdlci5mcm9tQnl0ZUFycmF5VW5zaWduZWQgPSBmdW5jdGlvbihieXRlQXJyYXkpIHtcbiAgLy8gQmlnSW50ZWdlciBleHBlY3RzIGEgREVSIGludGVnZXIgY29uZm9ybWFudCBieXRlIGFycmF5XG4gIGlmIChieXRlQXJyYXlbMF0gJiAweDgwKSB7XG4gICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKFswXS5jb25jYXQoYnl0ZUFycmF5KSlcbiAgfVxuXG4gIHJldHVybiBuZXcgQmlnSW50ZWdlcihieXRlQXJyYXkpXG59XG5cbi8qKlxuICogUmV0dXJucyBhIGJ5dGUgYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJpZyBpbnRlZ2VyLlxuICpcbiAqIFRoaXMgcmV0dXJucyB0aGUgYWJzb2x1dGUgb2YgdGhlIGNvbnRhaW5lZCB2YWx1ZSBpbiBiaWcgZW5kaWFuXG4gKiBmb3JtLiBBIHZhbHVlIG9mIHplcm8gcmVzdWx0cyBpbiBhbiBlbXB0eSBhcnJheS5cbiAqL1xuQmlnSW50ZWdlci5wcm90b3R5cGUudG9CeXRlQXJyYXlVbnNpZ25lZCA9IGZ1bmN0aW9uKCkge1xuICB2YXIgYnl0ZUFycmF5ID0gdGhpcy50b0J5dGVBcnJheSgpXG4gIHJldHVybiBieXRlQXJyYXlbMF0gPT09IDAgPyBieXRlQXJyYXkuc2xpY2UoMSkgOiBieXRlQXJyYXlcbn1cblxuQmlnSW50ZWdlci5mcm9tREVSSW50ZWdlciA9IGZ1bmN0aW9uKGJ5dGVBcnJheSkge1xuICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYnl0ZUFycmF5KVxufVxuXG4vKlxuICogQ29udmVydHMgQmlnSW50ZWdlciB0byBhIERFUiBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uLlxuICpcbiAqIFRoZSBmb3JtYXQgZm9yIHRoaXMgdmFsdWUgdXNlcyB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgYXMgYSBzaWduXG4gKiBiaXQuICBJZiB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgaXMgYWxyZWFkeSBzZXQgYW5kIHRoZSBpbnRlZ2VyIGlzXG4gKiBwb3NpdGl2ZSwgYSAweDAwIGlzIHByZXBlbmRlZC5cbiAqXG4gKiBFeGFtcGxlczpcbiAqXG4gKiAgICAgIDAgPT4gICAgIDB4MDBcbiAqICAgICAgMSA9PiAgICAgMHgwMVxuICogICAgIC0xID0+ICAgICAweGZmXG4gKiAgICAxMjcgPT4gICAgIDB4N2ZcbiAqICAgLTEyNyA9PiAgICAgMHg4MVxuICogICAgMTI4ID0+ICAgMHgwMDgwXG4gKiAgIC0xMjggPT4gICAgIDB4ODBcbiAqICAgIDI1NSA9PiAgIDB4MDBmZlxuICogICAtMjU1ID0+ICAgMHhmZjAxXG4gKiAgMTYzMDAgPT4gICAweDNmYWNcbiAqIC0xNjMwMCA9PiAgIDB4YzA1NFxuICogIDYyMzAwID0+IDB4MDBmMzVjXG4gKiAtNjIzMDAgPT4gMHhmZjBjYTRcbiovXG5CaWdJbnRlZ2VyLnByb3RvdHlwZS50b0RFUkludGVnZXIgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0J5dGVBcnJheVxuXG5CaWdJbnRlZ2VyLmZyb21CdWZmZXIgPSBmdW5jdGlvbihidWZmZXIpIHtcbiAgLy8gQmlnSW50ZWdlciBleHBlY3RzIGEgREVSIGludGVnZXIgY29uZm9ybWFudCBieXRlIGFycmF5XG4gIGlmIChidWZmZXJbMF0gJiAweDgwKSB7XG4gICAgdmFyIGJ5dGVBcnJheSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGJ1ZmZlcilcblxuICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihbMF0uY29uY2F0KGJ5dGVBcnJheSkpXG4gIH1cblxuICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYnVmZmVyKVxufVxuXG5CaWdJbnRlZ2VyLmZyb21IZXggPSBmdW5jdGlvbihoZXgpIHtcbiAgaWYgKGhleCA9PT0gJycpIHJldHVybiBCaWdJbnRlZ2VyLlpFUk9cblxuICBhc3NlcnQuZXF1YWwoaGV4LCBoZXgubWF0Y2goL15bQS1GYS1mMC05XSsvKSwgJ0ludmFsaWQgaGV4IHN0cmluZycpXG4gIGFzc2VydC5lcXVhbChoZXgubGVuZ3RoICUgMiwgMCwgJ0luY29tcGxldGUgaGV4JylcbiAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGhleCwgMTYpXG59XG5cbkJpZ0ludGVnZXIucHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24oc2l6ZSkge1xuICB2YXIgYnl0ZUFycmF5ID0gdGhpcy50b0J5dGVBcnJheVVuc2lnbmVkKClcbiAgdmFyIHplcm9zID0gW11cblxuICB2YXIgcGFkZGluZyA9IHNpemUgLSBieXRlQXJyYXkubGVuZ3RoXG4gIHdoaWxlICh6ZXJvcy5sZW5ndGggPCBwYWRkaW5nKSB6ZXJvcy5wdXNoKDApXG5cbiAgcmV0dXJuIG5ldyBCdWZmZXIoemVyb3MuY29uY2F0KGJ5dGVBcnJheSkpXG59XG5cbkJpZ0ludGVnZXIucHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24oc2l6ZSkge1xuICByZXR1cm4gdGhpcy50b0J1ZmZlcihzaXplKS50b1N0cmluZygnaGV4Jylcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNCdWZmZXIoYXJnKSB7XG4gIHJldHVybiBhcmcgJiYgdHlwZW9mIGFyZyA9PT0gJ29iamVjdCdcbiAgICAmJiB0eXBlb2YgYXJnLmNvcHkgPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgYXJnLmZpbGwgPT09ICdmdW5jdGlvbidcbiAgICAmJiB0eXBlb2YgYXJnLnJlYWRVSW50OCA9PT0gJ2Z1bmN0aW9uJztcbn0iLCJ2YXIgQmlnSW50ZWdlciA9IHJlcXVpcmUoJ2JpZ2knKVxuXG52YXIgY3VydmVzID0gcmVxdWlyZSgnLi9jdXJ2ZXMuanNvbicpXG52YXIgQ3VydmUgPSByZXF1aXJlKCcuL2N1cnZlJylcblxuZnVuY3Rpb24gZ2V0Q3VydmVCeU5hbWUgKG5hbWUpIHtcbiAgdmFyIGN1cnZlID0gY3VydmVzW25hbWVdXG4gIGlmICghY3VydmUpIHJldHVybiBudWxsXG5cbiAgdmFyIHAgPSBuZXcgQmlnSW50ZWdlcihjdXJ2ZS5wLCAxNilcbiAgdmFyIGEgPSBuZXcgQmlnSW50ZWdlcihjdXJ2ZS5hLCAxNilcbiAgdmFyIGIgPSBuZXcgQmlnSW50ZWdlcihjdXJ2ZS5iLCAxNilcbiAgdmFyIG4gPSBuZXcgQmlnSW50ZWdlcihjdXJ2ZS5uLCAxNilcbiAgdmFyIGggPSBuZXcgQmlnSW50ZWdlcihjdXJ2ZS5oLCAxNilcbiAgdmFyIEd4ID0gbmV3IEJpZ0ludGVnZXIoY3VydmUuR3gsIDE2KVxuICB2YXIgR3kgPSBuZXcgQmlnSW50ZWdlcihjdXJ2ZS5HeSwgMTYpXG5cbiAgcmV0dXJuIG5ldyBDdXJ2ZShwLCBhLCBiLCBHeCwgR3ksIG4sIGgpXG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0Q3VydmVCeU5hbWVcbiIsInZhciBiczU4Y2hlY2sgPSByZXF1aXJlKCdiczU4Y2hlY2snKVxuXG5mdW5jdGlvbiBkZWNvZGVSYXcgKGJ1ZmZlciwgdmVyc2lvbikge1xuICAvLyBjaGVjayB2ZXJzaW9uIG9ubHkgaWYgZGVmaW5lZFxuICBpZiAodmVyc2lvbiAhPT0gdW5kZWZpbmVkICYmIGJ1ZmZlclswXSAhPT0gdmVyc2lvbikgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIG5ldHdvcmsgdmVyc2lvbicpXG5cbiAgLy8gdW5jb21wcmVzc2VkXG4gIGlmIChidWZmZXIubGVuZ3RoID09PSAzMykge1xuICAgIHJldHVybiB7XG4gICAgICB2ZXJzaW9uOiBidWZmZXJbMF0sXG4gICAgICBwcml2YXRlS2V5OiBidWZmZXIuc2xpY2UoMSwgMzMpLFxuICAgICAgY29tcHJlc3NlZDogZmFsc2VcbiAgICB9XG4gIH1cblxuICAvLyBpbnZhbGlkIGxlbmd0aFxuICBpZiAoYnVmZmVyLmxlbmd0aCAhPT0gMzQpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBXSUYgbGVuZ3RoJylcblxuICAvLyBpbnZhbGlkIGNvbXByZXNzaW9uIGZsYWdcbiAgaWYgKGJ1ZmZlclszM10gIT09IDB4MDEpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb21wcmVzc2lvbiBmbGFnJylcblxuICByZXR1cm4ge1xuICAgIHZlcnNpb246IGJ1ZmZlclswXSxcbiAgICBwcml2YXRlS2V5OiBidWZmZXIuc2xpY2UoMSwgMzMpLFxuICAgIGNvbXByZXNzZWQ6IHRydWVcbiAgfVxufVxuXG5mdW5jdGlvbiBlbmNvZGVSYXcgKHZlcnNpb24sIHByaXZhdGVLZXksIGNvbXByZXNzZWQpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBCdWZmZXIoY29tcHJlc3NlZCA/IDM0IDogMzMpXG5cbiAgcmVzdWx0LndyaXRlVUludDgodmVyc2lvbiwgMClcbiAgcHJpdmF0ZUtleS5jb3B5KHJlc3VsdCwgMSlcblxuICBpZiAoY29tcHJlc3NlZCkge1xuICAgIHJlc3VsdFszM10gPSAweDAxXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmZ1bmN0aW9uIGRlY29kZSAoc3RyaW5nLCB2ZXJzaW9uKSB7XG4gIHJldHVybiBkZWNvZGVSYXcoYnM1OGNoZWNrLmRlY29kZShzdHJpbmcpLCB2ZXJzaW9uKVxufVxuXG5mdW5jdGlvbiBlbmNvZGUgKHZlcnNpb24sIHByaXZhdGVLZXksIGNvbXByZXNzZWQpIHtcbiAgaWYgKHR5cGVvZiB2ZXJzaW9uID09PSAnbnVtYmVyJykgcmV0dXJuIGJzNThjaGVjay5lbmNvZGUoZW5jb2RlUmF3KHZlcnNpb24sIHByaXZhdGVLZXksIGNvbXByZXNzZWQpKVxuXG4gIHJldHVybiBiczU4Y2hlY2suZW5jb2RlKFxuICAgIGVuY29kZVJhdyhcbiAgICAgIHZlcnNpb24udmVyc2lvbixcbiAgICAgIHZlcnNpb24ucHJpdmF0ZUtleSxcbiAgICAgIHZlcnNpb24uY29tcHJlc3NlZFxuICAgIClcbiAgKVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVjb2RlOiBkZWNvZGUsXG4gIGRlY29kZVJhdzogZGVjb2RlUmF3LFxuICBlbmNvZGU6IGVuY29kZSxcbiAgZW5jb2RlUmF3OiBlbmNvZGVSYXdcbn1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIGJhc2U1OGNoZWNrID0gcmVxdWlyZSgnYnM1OGNoZWNrJylcbnZhciBiY3J5cHRvID0gcmVxdWlyZSgnLi9jcnlwdG8nKVxudmFyIGNyZWF0ZUhtYWMgPSByZXF1aXJlKCdjcmVhdGUtaG1hYycpXG52YXIgdHlwZWZvcmNlID0gcmVxdWlyZSgndHlwZWZvcmNlJylcbnZhciB0eXBlcyA9IHJlcXVpcmUoJy4vdHlwZXMnKVxudmFyIE5FVFdPUktTID0gcmVxdWlyZSgnLi9uZXR3b3JrcycpXG5cbnZhciBCaWdJbnRlZ2VyID0gcmVxdWlyZSgnYmlnaScpXG52YXIgRUNQYWlyID0gcmVxdWlyZSgnLi9lY3BhaXInKVxuXG52YXIgZWN1cnZlID0gcmVxdWlyZSgnZWN1cnZlJylcbnZhciBjdXJ2ZSA9IGVjdXJ2ZS5nZXRDdXJ2ZUJ5TmFtZSgnc2VjcDI1NmsxJylcblxuZnVuY3Rpb24gSEROb2RlIChrZXlQYWlyLCBjaGFpbkNvZGUpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLnR1cGxlKCdFQ1BhaXInLCB0eXBlcy5CdWZmZXIyNTZiaXQpLCBhcmd1bWVudHMpXG5cbiAgaWYgKCFrZXlQYWlyLmNvbXByZXNzZWQpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JJUDMyIG9ubHkgYWxsb3dzIGNvbXByZXNzZWQga2V5UGFpcnMnKVxuXG4gIHRoaXMua2V5UGFpciA9IGtleVBhaXJcbiAgdGhpcy5jaGFpbkNvZGUgPSBjaGFpbkNvZGVcbiAgdGhpcy5kZXB0aCA9IDBcbiAgdGhpcy5pbmRleCA9IDBcbiAgdGhpcy5wYXJlbnRGaW5nZXJwcmludCA9IDB4MDAwMDAwMDBcbn1cblxuSEROb2RlLkhJR0hFU1RfQklUID0gMHg4MDAwMDAwMFxuSEROb2RlLkxFTkdUSCA9IDc4XG5IRE5vZGUuTUFTVEVSX1NFQ1JFVCA9IEJ1ZmZlci5mcm9tKCdCaXRjb2luIHNlZWQnLCAndXRmOCcpXG5cbkhETm9kZS5mcm9tU2VlZEJ1ZmZlciA9IGZ1bmN0aW9uIChzZWVkLCBuZXR3b3JrKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy50dXBsZSh0eXBlcy5CdWZmZXIsIHR5cGVzLm1heWJlKHR5cGVzLk5ldHdvcmspKSwgYXJndW1lbnRzKVxuXG4gIGlmIChzZWVkLmxlbmd0aCA8IDE2KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdTZWVkIHNob3VsZCBiZSBhdCBsZWFzdCAxMjggYml0cycpXG4gIGlmIChzZWVkLmxlbmd0aCA+IDY0KSB0aHJvdyBuZXcgVHlwZUVycm9yKCdTZWVkIHNob3VsZCBiZSBhdCBtb3N0IDUxMiBiaXRzJylcblxuICB2YXIgSSA9IGNyZWF0ZUhtYWMoJ3NoYTUxMicsIEhETm9kZS5NQVNURVJfU0VDUkVUKS51cGRhdGUoc2VlZCkuZGlnZXN0KClcbiAgdmFyIElMID0gSS5zbGljZSgwLCAzMilcbiAgdmFyIElSID0gSS5zbGljZSgzMilcblxuICAvLyBJbiBjYXNlIElMIGlzIDAgb3IgPj0gbiwgdGhlIG1hc3RlciBrZXkgaXMgaW52YWxpZFxuICAvLyBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEVDUGFpciBjb25zdHJ1Y3RvclxuICB2YXIgcElMID0gQmlnSW50ZWdlci5mcm9tQnVmZmVyKElMKVxuICB2YXIga2V5UGFpciA9IG5ldyBFQ1BhaXIocElMLCBudWxsLCB7XG4gICAgbmV0d29yazogbmV0d29ya1xuICB9KVxuXG4gIHJldHVybiBuZXcgSEROb2RlKGtleVBhaXIsIElSKVxufVxuXG5IRE5vZGUuZnJvbVNlZWRIZXggPSBmdW5jdGlvbiAoaGV4LCBuZXR3b3JrKSB7XG4gIHJldHVybiBIRE5vZGUuZnJvbVNlZWRCdWZmZXIoQnVmZmVyLmZyb20oaGV4LCAnaGV4JyksIG5ldHdvcmspXG59XG5cbkhETm9kZS5mcm9tQmFzZTU4ID0gZnVuY3Rpb24gKHN0cmluZywgbmV0d29ya3MsIHNraXBWYWxpZGF0aW9uKSB7XG4gIHZhciBidWZmZXIgPSBiYXNlNThjaGVjay5kZWNvZGUoc3RyaW5nKVxuICBpZiAoYnVmZmVyLmxlbmd0aCAhPT0gNzgpIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBidWZmZXIgbGVuZ3RoJylcblxuICAvLyA0IGJ5dGVzOiB2ZXJzaW9uIGJ5dGVzXG4gIHZhciB2ZXJzaW9uID0gYnVmZmVyLnJlYWRVSW50MzJCRSgwKVxuICB2YXIgbmV0d29ya1xuXG4gIC8vIGxpc3Qgb2YgbmV0d29ya3M/XG4gIGlmIChBcnJheS5pc0FycmF5KG5ldHdvcmtzKSkge1xuICAgIG5ldHdvcmsgPSBuZXR3b3Jrcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHtcbiAgICAgIHJldHVybiB2ZXJzaW9uID09PSB4LmJpcDMyLnByaXZhdGUgfHxcbiAgICAgICAgICAgICB2ZXJzaW9uID09PSB4LmJpcDMyLnB1YmxpY1xuICAgIH0pLnBvcCgpXG5cbiAgICBpZiAoIW5ldHdvcmspIHRocm93IG5ldyBFcnJvcignVW5rbm93biBuZXR3b3JrIHZlcnNpb24nKVxuXG4gIC8vIG90aGVyd2lzZSwgYXNzdW1lIGEgbmV0d29yayBvYmplY3QgKG9yIGRlZmF1bHQgdG8gYml0Y29pbilcbiAgfSBlbHNlIHtcbiAgICBuZXR3b3JrID0gbmV0d29ya3MgfHwgTkVUV09SS1MuYml0Y29pblxuICB9XG5cbiAgaWYgKHZlcnNpb24gIT09IG5ldHdvcmsuYmlwMzIucHJpdmF0ZSAmJlxuICAgIHZlcnNpb24gIT09IG5ldHdvcmsuYmlwMzIucHVibGljKSB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbmV0d29yayB2ZXJzaW9uJylcblxuICAvLyAxIGJ5dGU6IGRlcHRoOiAweDAwIGZvciBtYXN0ZXIgbm9kZXMsIDB4MDEgZm9yIGxldmVsLTEgZGVzY2VuZGFudHMsIC4uLlxuICB2YXIgZGVwdGggPSBidWZmZXJbNF1cblxuICAvLyA0IGJ5dGVzOiB0aGUgZmluZ2VycHJpbnQgb2YgdGhlIHBhcmVudCdzIGtleSAoMHgwMDAwMDAwMCBpZiBtYXN0ZXIga2V5KVxuICB2YXIgcGFyZW50RmluZ2VycHJpbnQgPSBidWZmZXIucmVhZFVJbnQzMkJFKDUpXG4gIGlmIChkZXB0aCA9PT0gMCkge1xuICAgIGlmIChwYXJlbnRGaW5nZXJwcmludCAhPT0gMHgwMDAwMDAwMCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHBhcmVudCBmaW5nZXJwcmludCcpXG4gIH1cblxuICAvLyA0IGJ5dGVzOiBjaGlsZCBudW1iZXIuIFRoaXMgaXMgdGhlIG51bWJlciBpIGluIHhpID0geHBhci9pLCB3aXRoIHhpIHRoZSBrZXkgYmVpbmcgc2VyaWFsaXplZC5cbiAgLy8gVGhpcyBpcyBlbmNvZGVkIGluIE1TQiBvcmRlci4gKDB4MDAwMDAwMDAgaWYgbWFzdGVyIGtleSlcbiAgdmFyIGluZGV4ID0gYnVmZmVyLnJlYWRVSW50MzJCRSg5KVxuICBpZiAoZGVwdGggPT09IDAgJiYgaW5kZXggIT09IDApIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbmRleCcpXG5cbiAgLy8gMzIgYnl0ZXM6IHRoZSBjaGFpbiBjb2RlXG4gIHZhciBjaGFpbkNvZGUgPSBidWZmZXIuc2xpY2UoMTMsIDQ1KVxuICB2YXIga2V5UGFpclxuXG4gIC8vIDMzIGJ5dGVzOiBwcml2YXRlIGtleSBkYXRhICgweDAwICsgaylcbiAgaWYgKHZlcnNpb24gPT09IG5ldHdvcmsuYmlwMzIucHJpdmF0ZSkge1xuICAgIGlmIChidWZmZXIucmVhZFVJbnQ4KDQ1KSAhPT0gMHgwMCkgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHByaXZhdGUga2V5JylcblxuICAgIHZhciBkID0gQmlnSW50ZWdlci5mcm9tQnVmZmVyKGJ1ZmZlci5zbGljZSg0NiwgNzgpKVxuICAgIGtleVBhaXIgPSBuZXcgRUNQYWlyKGQsIG51bGwsIHsgbmV0d29yazogbmV0d29yayB9KVxuXG4gIC8vIDMzIGJ5dGVzOiBwdWJsaWMga2V5IGRhdGEgKDB4MDIgKyBYIG9yIDB4MDMgKyBYKVxuICB9IGVsc2Uge1xuICAgIHZhciBRID0gZWN1cnZlLlBvaW50LmRlY29kZUZyb20oY3VydmUsIGJ1ZmZlci5zbGljZSg0NSwgNzgpKVxuICAgIC8vIFEuY29tcHJlc3NlZCBpcyBhc3N1bWVkLCBpZiBzb21laG93IHRoaXMgYXNzdW1wdGlvbiBpcyBicm9rZW4sIGBuZXcgSEROb2RlYCB3aWxsIHRocm93XG5cbiAgICAvLyBTa2lwIHZhbGlkYXRpb24gaWYgcmVxdWVzdGVkIGZvciBlZmZpY2llbmN5XG4gICAgaWYgKCFza2lwVmFsaWRhdGlvbikge1xuICAgICAgLy8gVmVyaWZ5IHRoYXQgdGhlIFggY29vcmRpbmF0ZSBpbiB0aGUgcHVibGljIHBvaW50IGNvcnJlc3BvbmRzIHRvIGEgcG9pbnQgb24gdGhlIGN1cnZlLlxuICAgICAgLy8gSWYgbm90LCB0aGUgZXh0ZW5kZWQgcHVibGljIGtleSBpcyBpbnZhbGlkLlxuICAgICAgY3VydmUudmFsaWRhdGUoUSlcbiAgICB9XG5cbiAgICBrZXlQYWlyID0gbmV3IEVDUGFpcihudWxsLCBRLCB7IG5ldHdvcms6IG5ldHdvcmsgfSlcbiAgfVxuXG4gIHZhciBoZCA9IG5ldyBIRE5vZGUoa2V5UGFpciwgY2hhaW5Db2RlKVxuICBoZC5kZXB0aCA9IGRlcHRoXG4gIGhkLmluZGV4ID0gaW5kZXhcbiAgaGQucGFyZW50RmluZ2VycHJpbnQgPSBwYXJlbnRGaW5nZXJwcmludFxuXG4gIHJldHVybiBoZFxufVxuXG5IRE5vZGUucHJvdG90eXBlLmdldEFkZHJlc3MgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmtleVBhaXIuZ2V0QWRkcmVzcygpXG59XG5cbkhETm9kZS5wcm90b3R5cGUuZ2V0SWRlbnRpZmllciA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGJjcnlwdG8uaGFzaDE2MCh0aGlzLmtleVBhaXIuZ2V0UHVibGljS2V5QnVmZmVyKCkpXG59XG5cbkhETm9kZS5wcm90b3R5cGUuZ2V0RmluZ2VycHJpbnQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmdldElkZW50aWZpZXIoKS5zbGljZSgwLCA0KVxufVxuXG5IRE5vZGUucHJvdG90eXBlLmdldE5ldHdvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLmtleVBhaXIuZ2V0TmV0d29yaygpXG59XG5cbkhETm9kZS5wcm90b3R5cGUuZ2V0UHVibGljS2V5QnVmZmVyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5rZXlQYWlyLmdldFB1YmxpY0tleUJ1ZmZlcigpXG59XG5cbkhETm9kZS5wcm90b3R5cGUubmV1dGVyZWQgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuZXV0ZXJlZEtleVBhaXIgPSBuZXcgRUNQYWlyKG51bGwsIHRoaXMua2V5UGFpci5RLCB7XG4gICAgbmV0d29yazogdGhpcy5rZXlQYWlyLm5ldHdvcmtcbiAgfSlcblxuICB2YXIgbmV1dGVyZWQgPSBuZXcgSEROb2RlKG5ldXRlcmVkS2V5UGFpciwgdGhpcy5jaGFpbkNvZGUpXG4gIG5ldXRlcmVkLmRlcHRoID0gdGhpcy5kZXB0aFxuICBuZXV0ZXJlZC5pbmRleCA9IHRoaXMuaW5kZXhcbiAgbmV1dGVyZWQucGFyZW50RmluZ2VycHJpbnQgPSB0aGlzLnBhcmVudEZpbmdlcnByaW50XG5cbiAgcmV0dXJuIG5ldXRlcmVkXG59XG5cbkhETm9kZS5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uIChoYXNoKSB7XG4gIHJldHVybiB0aGlzLmtleVBhaXIuc2lnbihoYXNoKVxufVxuXG5IRE5vZGUucHJvdG90eXBlLnZlcmlmeSA9IGZ1bmN0aW9uIChoYXNoLCBzaWduYXR1cmUpIHtcbiAgcmV0dXJuIHRoaXMua2V5UGFpci52ZXJpZnkoaGFzaCwgc2lnbmF0dXJlKVxufVxuXG5IRE5vZGUucHJvdG90eXBlLnRvQmFzZTU4ID0gZnVuY3Rpb24gKF9faXNQcml2YXRlKSB7XG4gIGlmIChfX2lzUHJpdmF0ZSAhPT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBhcmd1bWVudCBpbiAyLjAuMCcpXG5cbiAgLy8gVmVyc2lvblxuICB2YXIgbmV0d29yayA9IHRoaXMua2V5UGFpci5uZXR3b3JrXG4gIHZhciB2ZXJzaW9uID0gKCF0aGlzLmlzTmV1dGVyZWQoKSkgPyBuZXR3b3JrLmJpcDMyLnByaXZhdGUgOiBuZXR3b3JrLmJpcDMyLnB1YmxpY1xuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKDc4KVxuXG4gIC8vIDQgYnl0ZXM6IHZlcnNpb24gYnl0ZXNcbiAgYnVmZmVyLndyaXRlVUludDMyQkUodmVyc2lvbiwgMClcblxuICAvLyAxIGJ5dGU6IGRlcHRoOiAweDAwIGZvciBtYXN0ZXIgbm9kZXMsIDB4MDEgZm9yIGxldmVsLTEgZGVzY2VuZGFudHMsIC4uLi5cbiAgYnVmZmVyLndyaXRlVUludDgodGhpcy5kZXB0aCwgNClcblxuICAvLyA0IGJ5dGVzOiB0aGUgZmluZ2VycHJpbnQgb2YgdGhlIHBhcmVudCdzIGtleSAoMHgwMDAwMDAwMCBpZiBtYXN0ZXIga2V5KVxuICBidWZmZXIud3JpdGVVSW50MzJCRSh0aGlzLnBhcmVudEZpbmdlcnByaW50LCA1KVxuXG4gIC8vIDQgYnl0ZXM6IGNoaWxkIG51bWJlci4gVGhpcyBpcyB0aGUgbnVtYmVyIGkgaW4geGkgPSB4cGFyL2ksIHdpdGggeGkgdGhlIGtleSBiZWluZyBzZXJpYWxpemVkLlxuICAvLyBUaGlzIGlzIGVuY29kZWQgaW4gYmlnIGVuZGlhbi4gKDB4MDAwMDAwMDAgaWYgbWFzdGVyIGtleSlcbiAgYnVmZmVyLndyaXRlVUludDMyQkUodGhpcy5pbmRleCwgOSlcblxuICAvLyAzMiBieXRlczogdGhlIGNoYWluIGNvZGVcbiAgdGhpcy5jaGFpbkNvZGUuY29weShidWZmZXIsIDEzKVxuXG4gIC8vIDMzIGJ5dGVzOiB0aGUgcHVibGljIGtleSBvciBwcml2YXRlIGtleSBkYXRhXG4gIGlmICghdGhpcy5pc05ldXRlcmVkKCkpIHtcbiAgICAvLyAweDAwICsgayBmb3IgcHJpdmF0ZSBrZXlzXG4gICAgYnVmZmVyLndyaXRlVUludDgoMCwgNDUpXG4gICAgdGhpcy5rZXlQYWlyLmQudG9CdWZmZXIoMzIpLmNvcHkoYnVmZmVyLCA0NilcblxuICAvLyAzMyBieXRlczogdGhlIHB1YmxpYyBrZXlcbiAgfSBlbHNlIHtcbiAgICAvLyBYOS42MiBlbmNvZGluZyBmb3IgcHVibGljIGtleXNcbiAgICB0aGlzLmtleVBhaXIuZ2V0UHVibGljS2V5QnVmZmVyKCkuY29weShidWZmZXIsIDQ1KVxuICB9XG5cbiAgcmV0dXJuIGJhc2U1OGNoZWNrLmVuY29kZShidWZmZXIpXG59XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpcHMvYmxvYi9tYXN0ZXIvYmlwLTAwMzIubWVkaWF3aWtpI2NoaWxkLWtleS1kZXJpdmF0aW9uLWNrZC1mdW5jdGlvbnNcbkhETm9kZS5wcm90b3R5cGUuZGVyaXZlID0gZnVuY3Rpb24gKGluZGV4KSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIGluZGV4KVxuXG4gIHZhciBpc0hhcmRlbmVkID0gaW5kZXggPj0gSEROb2RlLkhJR0hFU1RfQklUXG4gIHZhciBkYXRhID0gQnVmZmVyLmFsbG9jVW5zYWZlKDM3KVxuXG4gIC8vIEhhcmRlbmVkIGNoaWxkXG4gIGlmIChpc0hhcmRlbmVkKSB7XG4gICAgaWYgKHRoaXMuaXNOZXV0ZXJlZCgpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb3VsZCBub3QgZGVyaXZlIGhhcmRlbmVkIGNoaWxkIGtleScpXG5cbiAgICAvLyBkYXRhID0gMHgwMCB8fCBzZXIyNTYoa3BhcikgfHwgc2VyMzIoaW5kZXgpXG4gICAgZGF0YVswXSA9IDB4MDBcbiAgICB0aGlzLmtleVBhaXIuZC50b0J1ZmZlcigzMikuY29weShkYXRhLCAxKVxuICAgIGRhdGEud3JpdGVVSW50MzJCRShpbmRleCwgMzMpXG5cbiAgLy8gTm9ybWFsIGNoaWxkXG4gIH0gZWxzZSB7XG4gICAgLy8gZGF0YSA9IHNlclAocG9pbnQoa3BhcikpIHx8IHNlcjMyKGluZGV4KVxuICAgIC8vICAgICAgPSBzZXJQKEtwYXIpIHx8IHNlcjMyKGluZGV4KVxuICAgIHRoaXMua2V5UGFpci5nZXRQdWJsaWNLZXlCdWZmZXIoKS5jb3B5KGRhdGEsIDApXG4gICAgZGF0YS53cml0ZVVJbnQzMkJFKGluZGV4LCAzMylcbiAgfVxuXG4gIHZhciBJID0gY3JlYXRlSG1hYygnc2hhNTEyJywgdGhpcy5jaGFpbkNvZGUpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKVxuICB2YXIgSUwgPSBJLnNsaWNlKDAsIDMyKVxuICB2YXIgSVIgPSBJLnNsaWNlKDMyKVxuXG4gIHZhciBwSUwgPSBCaWdJbnRlZ2VyLmZyb21CdWZmZXIoSUwpXG5cbiAgLy8gSW4gY2FzZSBwYXJzZTI1NihJTCkgPj0gbiwgcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHZhbHVlIGZvciBpXG4gIGlmIChwSUwuY29tcGFyZVRvKGN1cnZlLm4pID49IDApIHtcbiAgICByZXR1cm4gdGhpcy5kZXJpdmUoaW5kZXggKyAxKVxuICB9XG5cbiAgLy8gUHJpdmF0ZSBwYXJlbnQga2V5IC0+IHByaXZhdGUgY2hpbGQga2V5XG4gIHZhciBkZXJpdmVkS2V5UGFpclxuICBpZiAoIXRoaXMuaXNOZXV0ZXJlZCgpKSB7XG4gICAgLy8ga2kgPSBwYXJzZTI1NihJTCkgKyBrcGFyIChtb2QgbilcbiAgICB2YXIga2kgPSBwSUwuYWRkKHRoaXMua2V5UGFpci5kKS5tb2QoY3VydmUubilcblxuICAgIC8vIEluIGNhc2Uga2kgPT0gMCwgcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHZhbHVlIGZvciBpXG4gICAgaWYgKGtpLnNpZ251bSgpID09PSAwKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZXJpdmUoaW5kZXggKyAxKVxuICAgIH1cblxuICAgIGRlcml2ZWRLZXlQYWlyID0gbmV3IEVDUGFpcihraSwgbnVsbCwge1xuICAgICAgbmV0d29yazogdGhpcy5rZXlQYWlyLm5ldHdvcmtcbiAgICB9KVxuXG4gIC8vIFB1YmxpYyBwYXJlbnQga2V5IC0+IHB1YmxpYyBjaGlsZCBrZXlcbiAgfSBlbHNlIHtcbiAgICAvLyBLaSA9IHBvaW50KHBhcnNlMjU2KElMKSkgKyBLcGFyXG4gICAgLy8gICAgPSBHKklMICsgS3BhclxuICAgIHZhciBLaSA9IGN1cnZlLkcubXVsdGlwbHkocElMKS5hZGQodGhpcy5rZXlQYWlyLlEpXG5cbiAgICAvLyBJbiBjYXNlIEtpIGlzIHRoZSBwb2ludCBhdCBpbmZpbml0eSwgcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHZhbHVlIGZvciBpXG4gICAgaWYgKGN1cnZlLmlzSW5maW5pdHkoS2kpKSB7XG4gICAgICByZXR1cm4gdGhpcy5kZXJpdmUoaW5kZXggKyAxKVxuICAgIH1cblxuICAgIGRlcml2ZWRLZXlQYWlyID0gbmV3IEVDUGFpcihudWxsLCBLaSwge1xuICAgICAgbmV0d29yazogdGhpcy5rZXlQYWlyLm5ldHdvcmtcbiAgICB9KVxuICB9XG5cbiAgdmFyIGhkID0gbmV3IEhETm9kZShkZXJpdmVkS2V5UGFpciwgSVIpXG4gIGhkLmRlcHRoID0gdGhpcy5kZXB0aCArIDFcbiAgaGQuaW5kZXggPSBpbmRleFxuICBoZC5wYXJlbnRGaW5nZXJwcmludCA9IHRoaXMuZ2V0RmluZ2VycHJpbnQoKS5yZWFkVUludDMyQkUoMClcblxuICByZXR1cm4gaGRcbn1cblxuSEROb2RlLnByb3RvdHlwZS5kZXJpdmVIYXJkZW5lZCA9IGZ1bmN0aW9uIChpbmRleCkge1xuICB0eXBlZm9yY2UodHlwZXMuVUludDMxLCBpbmRleClcblxuICAvLyBPbmx5IGRlcml2ZXMgaGFyZGVuZWQgcHJpdmF0ZSBrZXlzIGJ5IGRlZmF1bHRcbiAgcmV0dXJuIHRoaXMuZGVyaXZlKGluZGV4ICsgSEROb2RlLkhJR0hFU1RfQklUKVxufVxuXG4vLyBQcml2YXRlID09PSBub3QgbmV1dGVyZWRcbi8vIFB1YmxpYyA9PT0gbmV1dGVyZWRcbkhETm9kZS5wcm90b3R5cGUuaXNOZXV0ZXJlZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuICEodGhpcy5rZXlQYWlyLmQpXG59XG5cbkhETm9kZS5wcm90b3R5cGUuZGVyaXZlUGF0aCA9IGZ1bmN0aW9uIChwYXRoKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5CSVAzMlBhdGgsIHBhdGgpXG5cbiAgdmFyIHNwbGl0UGF0aCA9IHBhdGguc3BsaXQoJy8nKVxuICBpZiAoc3BsaXRQYXRoWzBdID09PSAnbScpIHtcbiAgICBpZiAodGhpcy5wYXJlbnRGaW5nZXJwcmludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgYSBtYXN0ZXIgbm9kZScpXG4gICAgfVxuXG4gICAgc3BsaXRQYXRoID0gc3BsaXRQYXRoLnNsaWNlKDEpXG4gIH1cblxuICByZXR1cm4gc3BsaXRQYXRoLnJlZHVjZShmdW5jdGlvbiAocHJldkhkLCBpbmRleFN0cikge1xuICAgIHZhciBpbmRleFxuICAgIGlmIChpbmRleFN0ci5zbGljZSgtMSkgPT09IFwiJ1wiKSB7XG4gICAgICBpbmRleCA9IHBhcnNlSW50KGluZGV4U3RyLnNsaWNlKDAsIC0xKSwgMTApXG4gICAgICByZXR1cm4gcHJldkhkLmRlcml2ZUhhcmRlbmVkKGluZGV4KVxuICAgIH0gZWxzZSB7XG4gICAgICBpbmRleCA9IHBhcnNlSW50KGluZGV4U3RyLCAxMClcbiAgICAgIHJldHVybiBwcmV2SGQuZGVyaXZlKGluZGV4KVxuICAgIH1cbiAgfSwgdGhpcylcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBIRE5vZGVcbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlclxudmFyIGJhZGRyZXNzID0gcmVxdWlyZSgnLi9hZGRyZXNzJylcbnZhciBiY3J5cHRvID0gcmVxdWlyZSgnLi9jcnlwdG8nKVxudmFyIGJzY3JpcHQgPSByZXF1aXJlKCcuL3NjcmlwdCcpXG52YXIgYnRlbXBsYXRlcyA9IHJlcXVpcmUoJy4vdGVtcGxhdGVzJylcbnZhciBuZXR3b3JrcyA9IHJlcXVpcmUoJy4vbmV0d29ya3MnKVxudmFyIG9wcyA9IHJlcXVpcmUoJ2JpdGNvaW4tb3BzJylcbnZhciB0eXBlZm9yY2UgPSByZXF1aXJlKCd0eXBlZm9yY2UnKVxudmFyIHR5cGVzID0gcmVxdWlyZSgnLi90eXBlcycpXG52YXIgc2NyaXB0VHlwZXMgPSBidGVtcGxhdGVzLnR5cGVzXG52YXIgU0lHTkFCTEUgPSBbYnRlbXBsYXRlcy50eXBlcy5QMlBLSCwgYnRlbXBsYXRlcy50eXBlcy5QMlBLLCBidGVtcGxhdGVzLnR5cGVzLk1VTFRJU0lHXVxudmFyIFAyU0ggPSBTSUdOQUJMRS5jb25jYXQoW2J0ZW1wbGF0ZXMudHlwZXMuUDJXUEtILCBidGVtcGxhdGVzLnR5cGVzLlAyV1NIXSlcblxudmFyIEVDUGFpciA9IHJlcXVpcmUoJy4vZWNwYWlyJylcbnZhciBFQ1NpZ25hdHVyZSA9IHJlcXVpcmUoJy4vZWNzaWduYXR1cmUnKVxudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi90cmFuc2FjdGlvbicpXG5cbmZ1bmN0aW9uIHN1cHBvcnRlZFR5cGUgKHR5cGUpIHtcbiAgcmV0dXJuIFNJR05BQkxFLmluZGV4T2YodHlwZSkgIT09IC0xXG59XG5cbmZ1bmN0aW9uIHN1cHBvcnRlZFAyU0hUeXBlICh0eXBlKSB7XG4gIHJldHVybiBQMlNILmluZGV4T2YodHlwZSkgIT09IC0xXG59XG5cbmZ1bmN0aW9uIGV4dHJhY3RDaHVua3MgKHR5cGUsIGNodW5rcywgc2NyaXB0KSB7XG4gIHZhciBwdWJLZXlzID0gW11cbiAgdmFyIHNpZ25hdHVyZXMgPSBbXVxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIHNjcmlwdFR5cGVzLlAyUEtIOlxuICAgICAgLy8gaWYgKHJlZGVlbVNjcmlwdCkgdGhyb3cgbmV3IEVycm9yKCdOb25zdGFuZGFyZC4uLiBQMlNIKFAyUEtIKScpXG4gICAgICBwdWJLZXlzID0gY2h1bmtzLnNsaWNlKDEpXG4gICAgICBzaWduYXR1cmVzID0gY2h1bmtzLnNsaWNlKDAsIDEpXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBzY3JpcHRUeXBlcy5QMlBLOlxuICAgICAgcHViS2V5c1swXSA9IHNjcmlwdCA/IGJ0ZW1wbGF0ZXMucHViS2V5Lm91dHB1dC5kZWNvZGUoc2NyaXB0KSA6IHVuZGVmaW5lZFxuICAgICAgc2lnbmF0dXJlcyA9IGNodW5rcy5zbGljZSgwLCAxKVxuICAgICAgYnJlYWtcblxuICAgIGNhc2Ugc2NyaXB0VHlwZXMuTVVMVElTSUc6XG4gICAgICBpZiAoc2NyaXB0KSB7XG4gICAgICAgIHZhciBtdWx0aXNpZyA9IGJ0ZW1wbGF0ZXMubXVsdGlzaWcub3V0cHV0LmRlY29kZShzY3JpcHQpXG4gICAgICAgIHB1YktleXMgPSBtdWx0aXNpZy5wdWJLZXlzXG4gICAgICB9XG5cbiAgICAgIHNpZ25hdHVyZXMgPSBjaHVua3Muc2xpY2UoMSkubWFwKGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICByZXR1cm4gY2h1bmsubGVuZ3RoID09PSAwID8gdW5kZWZpbmVkIDogY2h1bmtcbiAgICAgIH0pXG4gICAgICBicmVha1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBwdWJLZXlzOiBwdWJLZXlzLFxuICAgIHNpZ25hdHVyZXM6IHNpZ25hdHVyZXNcbiAgfVxufVxuZnVuY3Rpb24gZXhwYW5kSW5wdXQgKHNjcmlwdFNpZywgd2l0bmVzc1N0YWNrKSB7XG4gIGlmIChzY3JpcHRTaWcubGVuZ3RoID09PSAwICYmIHdpdG5lc3NTdGFjay5sZW5ndGggPT09IDApIHJldHVybiB7fVxuXG4gIHZhciBwcmV2T3V0U2NyaXB0XG4gIHZhciBwcmV2T3V0VHlwZVxuICB2YXIgc2NyaXB0VHlwZVxuICB2YXIgc2NyaXB0XG4gIHZhciByZWRlZW1TY3JpcHRcbiAgdmFyIHdpdG5lc3NTY3JpcHRcbiAgdmFyIHdpdG5lc3NTY3JpcHRUeXBlXG4gIHZhciByZWRlZW1TY3JpcHRUeXBlXG4gIHZhciB3aXRuZXNzID0gZmFsc2VcbiAgdmFyIHAyd3NoID0gZmFsc2VcbiAgdmFyIHAyc2ggPSBmYWxzZVxuICB2YXIgd2l0bmVzc1Byb2dyYW1cbiAgdmFyIGNodW5rc1xuXG4gIHZhciBzY3JpcHRTaWdDaHVua3MgPSBic2NyaXB0LmRlY29tcGlsZShzY3JpcHRTaWcpXG4gIHZhciBzaWdUeXBlID0gYnRlbXBsYXRlcy5jbGFzc2lmeUlucHV0KHNjcmlwdFNpZ0NodW5rcywgdHJ1ZSlcbiAgaWYgKHNpZ1R5cGUgPT09IHNjcmlwdFR5cGVzLlAyU0gpIHtcbiAgICBwMnNoID0gdHJ1ZVxuICAgIHJlZGVlbVNjcmlwdCA9IHNjcmlwdFNpZ0NodW5rc1tzY3JpcHRTaWdDaHVua3MubGVuZ3RoIC0gMV1cbiAgICByZWRlZW1TY3JpcHRUeXBlID0gYnRlbXBsYXRlcy5jbGFzc2lmeU91dHB1dChyZWRlZW1TY3JpcHQpXG4gICAgcHJldk91dFNjcmlwdCA9IGJ0ZW1wbGF0ZXMuc2NyaXB0SGFzaC5vdXRwdXQuZW5jb2RlKGJjcnlwdG8uaGFzaDE2MChyZWRlZW1TY3JpcHQpKVxuICAgIHByZXZPdXRUeXBlID0gc2NyaXB0VHlwZXMuUDJTSFxuICAgIHNjcmlwdCA9IHJlZGVlbVNjcmlwdFxuICB9XG5cbiAgdmFyIGNsYXNzaWZ5V2l0bmVzcyA9IGJ0ZW1wbGF0ZXMuY2xhc3NpZnlXaXRuZXNzKHdpdG5lc3NTdGFjaywgdHJ1ZSlcbiAgaWYgKGNsYXNzaWZ5V2l0bmVzcyA9PT0gc2NyaXB0VHlwZXMuUDJXU0gpIHtcbiAgICB3aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1N0YWNrW3dpdG5lc3NTdGFjay5sZW5ndGggLSAxXVxuICAgIHdpdG5lc3NTY3JpcHRUeXBlID0gYnRlbXBsYXRlcy5jbGFzc2lmeU91dHB1dCh3aXRuZXNzU2NyaXB0KVxuICAgIHAyd3NoID0gdHJ1ZVxuICAgIHdpdG5lc3MgPSB0cnVlXG4gICAgaWYgKHNjcmlwdFNpZy5sZW5ndGggPT09IDApIHtcbiAgICAgIHByZXZPdXRTY3JpcHQgPSBidGVtcGxhdGVzLndpdG5lc3NTY3JpcHRIYXNoLm91dHB1dC5lbmNvZGUoYmNyeXB0by5zaGEyNTYod2l0bmVzc1NjcmlwdCkpXG4gICAgICBwcmV2T3V0VHlwZSA9IHNjcmlwdFR5cGVzLlAyV1NIXG4gICAgICBpZiAocmVkZWVtU2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWRlZW0gc2NyaXB0IGdpdmVuIHdoZW4gdW5uZWNlc3NhcnknKVxuICAgICAgfVxuICAgICAgLy8gYmFyZSB3aXRuZXNzXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghcmVkZWVtU2NyaXB0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm8gcmVkZWVtU2NyaXB0IHByb3ZpZGVkIGZvciBQMldTSCwgYnV0IHNjcmlwdFNpZyBub24tZW1wdHknKVxuICAgICAgfVxuICAgICAgd2l0bmVzc1Byb2dyYW0gPSBidGVtcGxhdGVzLndpdG5lc3NTY3JpcHRIYXNoLm91dHB1dC5lbmNvZGUoYmNyeXB0by5zaGEyNTYod2l0bmVzc1NjcmlwdCkpXG4gICAgICBpZiAoIXJlZGVlbVNjcmlwdC5lcXVhbHMod2l0bmVzc1Byb2dyYW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkZWVtIHNjcmlwdCBkaWRuXFwndCBtYXRjaCB3aXRuZXNzU2NyaXB0JylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXN1cHBvcnRlZFR5cGUoYnRlbXBsYXRlcy5jbGFzc2lmeU91dHB1dCh3aXRuZXNzU2NyaXB0KSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgd2l0bmVzcyBzY3JpcHQnKVxuICAgIH1cblxuICAgIHNjcmlwdCA9IHdpdG5lc3NTY3JpcHRcbiAgICBzY3JpcHRUeXBlID0gd2l0bmVzc1NjcmlwdFR5cGVcbiAgICBjaHVua3MgPSB3aXRuZXNzU3RhY2suc2xpY2UoMCwgLTEpXG4gIH0gZWxzZSBpZiAoY2xhc3NpZnlXaXRuZXNzID09PSBzY3JpcHRUeXBlcy5QMldQS0gpIHtcbiAgICB3aXRuZXNzID0gdHJ1ZVxuICAgIHZhciBrZXkgPSB3aXRuZXNzU3RhY2tbd2l0bmVzc1N0YWNrLmxlbmd0aCAtIDFdXG4gICAgdmFyIGtleUhhc2ggPSBiY3J5cHRvLmhhc2gxNjAoa2V5KVxuICAgIGlmIChzY3JpcHRTaWcubGVuZ3RoID09PSAwKSB7XG4gICAgICBwcmV2T3V0U2NyaXB0ID0gYnRlbXBsYXRlcy53aXRuZXNzUHViS2V5SGFzaC5vdXRwdXQuZW5jb2RlKGtleUhhc2gpXG4gICAgICBwcmV2T3V0VHlwZSA9IHNjcmlwdFR5cGVzLlAyV1BLSFxuICAgICAgaWYgKHR5cGVvZiByZWRlZW1TY3JpcHQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUmVkZWVtIHNjcmlwdCBnaXZlbiB3aGVuIHVubmVjZXNzYXJ5JylcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFyZWRlZW1TY3JpcHQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWRlZW1TY3JpcHQgcHJvdmlkZWQgZm9yIFAyV1BLSCwgYnV0IHNjcmlwdFNpZyB3YXNuXFwndCBlbXB0eScpXG4gICAgICB9XG4gICAgICB3aXRuZXNzUHJvZ3JhbSA9IGJ0ZW1wbGF0ZXMud2l0bmVzc1B1YktleUhhc2gub3V0cHV0LmVuY29kZShrZXlIYXNoKVxuICAgICAgaWYgKCFyZWRlZW1TY3JpcHQuZXF1YWxzKHdpdG5lc3NQcm9ncmFtKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZGVlbSBzY3JpcHQgZGlkIG5vdCBoYXZlIHRoZSByaWdodCB3aXRuZXNzIHByb2dyYW0nKVxuICAgICAgfVxuICAgIH1cblxuICAgIHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlcy5QMlBLSFxuICAgIGNodW5rcyA9IHdpdG5lc3NTdGFja1xuICB9IGVsc2UgaWYgKHJlZGVlbVNjcmlwdCkge1xuICAgIGlmICghc3VwcG9ydGVkUDJTSFR5cGUocmVkZWVtU2NyaXB0VHlwZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQmFkIHJlZGVlbXNjcmlwdCEnKVxuICAgIH1cblxuICAgIHNjcmlwdCA9IHJlZGVlbVNjcmlwdFxuICAgIHNjcmlwdFR5cGUgPSByZWRlZW1TY3JpcHRUeXBlXG4gICAgY2h1bmtzID0gc2NyaXB0U2lnQ2h1bmtzLnNsaWNlKDAsIC0xKVxuICB9IGVsc2Uge1xuICAgIHByZXZPdXRUeXBlID0gc2NyaXB0VHlwZSA9IGJ0ZW1wbGF0ZXMuY2xhc3NpZnlJbnB1dChzY3JpcHRTaWcpXG4gICAgY2h1bmtzID0gc2NyaXB0U2lnQ2h1bmtzXG4gIH1cblxuICB2YXIgZXhwYW5kZWQgPSBleHRyYWN0Q2h1bmtzKHNjcmlwdFR5cGUsIGNodW5rcywgc2NyaXB0KVxuXG4gIHZhciByZXN1bHQgPSB7XG4gICAgcHViS2V5czogZXhwYW5kZWQucHViS2V5cyxcbiAgICBzaWduYXR1cmVzOiBleHBhbmRlZC5zaWduYXR1cmVzLFxuICAgIHByZXZPdXRTY3JpcHQ6IHByZXZPdXRTY3JpcHQsXG4gICAgcHJldk91dFR5cGU6IHByZXZPdXRUeXBlLFxuICAgIHNpZ25UeXBlOiBzY3JpcHRUeXBlLFxuICAgIHNpZ25TY3JpcHQ6IHNjcmlwdCxcbiAgICB3aXRuZXNzOiBCb29sZWFuKHdpdG5lc3MpXG4gIH1cblxuICBpZiAocDJzaCkge1xuICAgIHJlc3VsdC5yZWRlZW1TY3JpcHQgPSByZWRlZW1TY3JpcHRcbiAgICByZXN1bHQucmVkZWVtU2NyaXB0VHlwZSA9IHJlZGVlbVNjcmlwdFR5cGVcbiAgfVxuXG4gIGlmIChwMndzaCkge1xuICAgIHJlc3VsdC53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdFxuICAgIHJlc3VsdC53aXRuZXNzU2NyaXB0VHlwZSA9IHdpdG5lc3NTY3JpcHRUeXBlXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8vIGNvdWxkIGJlIGRvbmUgaW4gZXhwYW5kSW5wdXQsIGJ1dCByZXF1aXJlcyB0aGUgb3JpZ2luYWwgVHJhbnNhY3Rpb24gZm9yIGhhc2hGb3JTaWduYXR1cmVcbmZ1bmN0aW9uIGZpeE11bHRpc2lnT3JkZXIgKGlucHV0LCB0cmFuc2FjdGlvbiwgdmluKSB7XG4gIGlmIChpbnB1dC5yZWRlZW1TY3JpcHRUeXBlICE9PSBzY3JpcHRUeXBlcy5NVUxUSVNJRyB8fCAhaW5wdXQucmVkZWVtU2NyaXB0KSByZXR1cm5cbiAgaWYgKGlucHV0LnB1YktleXMubGVuZ3RoID09PSBpbnB1dC5zaWduYXR1cmVzLmxlbmd0aCkgcmV0dXJuXG5cbiAgdmFyIHVubWF0Y2hlZCA9IGlucHV0LnNpZ25hdHVyZXMuY29uY2F0KClcblxuICBpbnB1dC5zaWduYXR1cmVzID0gaW5wdXQucHViS2V5cy5tYXAoZnVuY3Rpb24gKHB1YktleSkge1xuICAgIHZhciBrZXlQYWlyID0gRUNQYWlyLmZyb21QdWJsaWNLZXlCdWZmZXIocHViS2V5KVxuICAgIHZhciBtYXRjaFxuXG4gICAgLy8gY2hlY2sgZm9yIGEgc2lnbmF0dXJlXG4gICAgdW5tYXRjaGVkLnNvbWUoZnVuY3Rpb24gKHNpZ25hdHVyZSwgaSkge1xuICAgICAgLy8gc2tpcCBpZiB1bmRlZmluZWQgfHwgT1BfMFxuICAgICAgaWYgKCFzaWduYXR1cmUpIHJldHVybiBmYWxzZVxuXG4gICAgICAvLyBUT0RPOiBhdm9pZCBPKG4pIGhhc2hGb3JTaWduYXR1cmVcbiAgICAgIHZhciBwYXJzZWQgPSBFQ1NpZ25hdHVyZS5wYXJzZVNjcmlwdFNpZ25hdHVyZShzaWduYXR1cmUpXG4gICAgICB2YXIgaGFzaCA9IHRyYW5zYWN0aW9uLmhhc2hGb3JTaWduYXR1cmUodmluLCBpbnB1dC5yZWRlZW1TY3JpcHQsIHBhcnNlZC5oYXNoVHlwZSlcblxuICAgICAgLy8gc2tpcCBpZiBzaWduYXR1cmUgZG9lcyBub3QgbWF0Y2ggcHViS2V5XG4gICAgICBpZiAoIWtleVBhaXIudmVyaWZ5KGhhc2gsIHBhcnNlZC5zaWduYXR1cmUpKSByZXR1cm4gZmFsc2VcblxuICAgICAgLy8gcmVtb3ZlIG1hdGNoZWQgc2lnbmF0dXJlIGZyb20gdW5tYXRjaGVkXG4gICAgICB1bm1hdGNoZWRbaV0gPSB1bmRlZmluZWRcbiAgICAgIG1hdGNoID0gc2lnbmF0dXJlXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSlcblxuICAgIHJldHVybiBtYXRjaFxuICB9KVxufVxuXG5mdW5jdGlvbiBleHBhbmRPdXRwdXQgKHNjcmlwdCwgc2NyaXB0VHlwZSwgb3VyUHViS2V5KSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5CdWZmZXIsIHNjcmlwdClcblxuICB2YXIgc2NyaXB0Q2h1bmtzID0gYnNjcmlwdC5kZWNvbXBpbGUoc2NyaXB0KVxuICBpZiAoIXNjcmlwdFR5cGUpIHtcbiAgICBzY3JpcHRUeXBlID0gYnRlbXBsYXRlcy5jbGFzc2lmeU91dHB1dChzY3JpcHQpXG4gIH1cblxuICB2YXIgcHViS2V5cyA9IFtdXG5cbiAgc3dpdGNoIChzY3JpcHRUeXBlKSB7XG4gICAgLy8gZG9lcyBvdXIgaGFzaDE2MChwdWJLZXkpIG1hdGNoIHRoZSBvdXRwdXQgc2NyaXB0cz9cbiAgICBjYXNlIHNjcmlwdFR5cGVzLlAyUEtIOlxuICAgICAgaWYgKCFvdXJQdWJLZXkpIGJyZWFrXG5cbiAgICAgIHZhciBwa2gxID0gc2NyaXB0Q2h1bmtzWzJdXG4gICAgICB2YXIgcGtoMiA9IGJjcnlwdG8uaGFzaDE2MChvdXJQdWJLZXkpXG4gICAgICBpZiAocGtoMS5lcXVhbHMocGtoMikpIHB1YktleXMgPSBbb3VyUHViS2V5XVxuICAgICAgYnJlYWtcblxuICAgIC8vIGRvZXMgb3VyIGhhc2gxNjAocHViS2V5KSBtYXRjaCB0aGUgb3V0cHV0IHNjcmlwdHM/XG4gICAgY2FzZSBzY3JpcHRUeXBlcy5QMldQS0g6XG4gICAgICBpZiAoIW91clB1YktleSkgYnJlYWtcblxuICAgICAgdmFyIHdwa2gxID0gc2NyaXB0Q2h1bmtzWzFdXG4gICAgICB2YXIgd3BraDIgPSBiY3J5cHRvLmhhc2gxNjAob3VyUHViS2V5KVxuICAgICAgaWYgKHdwa2gxLmVxdWFscyh3cGtoMikpIHB1YktleXMgPSBbb3VyUHViS2V5XVxuICAgICAgYnJlYWtcblxuICAgIGNhc2Ugc2NyaXB0VHlwZXMuUDJQSzpcbiAgICAgIHB1YktleXMgPSBzY3JpcHRDaHVua3Muc2xpY2UoMCwgMSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIHNjcmlwdFR5cGVzLk1VTFRJU0lHOlxuICAgICAgcHViS2V5cyA9IHNjcmlwdENodW5rcy5zbGljZSgxLCAtMilcbiAgICAgIGJyZWFrXG5cbiAgICBkZWZhdWx0OiByZXR1cm4geyBzY3JpcHRUeXBlOiBzY3JpcHRUeXBlIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHViS2V5czogcHViS2V5cyxcbiAgICBzY3JpcHRUeXBlOiBzY3JpcHRUeXBlLFxuICAgIHNpZ25hdHVyZXM6IHB1YktleXMubWFwKGZ1bmN0aW9uICgpIHsgcmV0dXJuIHVuZGVmaW5lZCB9KVxuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrUDJTSElucHV0IChpbnB1dCwgcmVkZWVtU2NyaXB0SGFzaCkge1xuICBpZiAoaW5wdXQucHJldk91dFR5cGUpIHtcbiAgICBpZiAoaW5wdXQucHJldk91dFR5cGUgIT09IHNjcmlwdFR5cGVzLlAyU0gpIHRocm93IG5ldyBFcnJvcignUHJldk91dFNjcmlwdCBtdXN0IGJlIFAyU0gnKVxuXG4gICAgdmFyIHByZXZPdXRTY3JpcHRTY3JpcHRIYXNoID0gYnNjcmlwdC5kZWNvbXBpbGUoaW5wdXQucHJldk91dFNjcmlwdClbMV1cbiAgICBpZiAoIXByZXZPdXRTY3JpcHRTY3JpcHRIYXNoLmVxdWFscyhyZWRlZW1TY3JpcHRIYXNoKSkgdGhyb3cgbmV3IEVycm9yKCdJbmNvbnNpc3RlbnQgaGFzaDE2MChSZWRlZW1TY3JpcHQpJylcbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1AyV1NISW5wdXQgKGlucHV0LCB3aXRuZXNzU2NyaXB0SGFzaCkge1xuICBpZiAoaW5wdXQucHJldk91dFR5cGUpIHtcbiAgICBpZiAoaW5wdXQucHJldk91dFR5cGUgIT09IHNjcmlwdFR5cGVzLlAyV1NIKSB0aHJvdyBuZXcgRXJyb3IoJ1ByZXZPdXRTY3JpcHQgbXVzdCBiZSBQMldTSCcpXG5cbiAgICB2YXIgc2NyaXB0SGFzaCA9IGJzY3JpcHQuZGVjb21waWxlKGlucHV0LnByZXZPdXRTY3JpcHQpWzFdXG4gICAgaWYgKCFzY3JpcHRIYXNoLmVxdWFscyh3aXRuZXNzU2NyaXB0SGFzaCkpIHRocm93IG5ldyBFcnJvcignSW5jb25zaXN0ZW50IHNoYTI1KFdpdG5lc3NTY3JpcHQpJylcbiAgfVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlSW5wdXQgKGlucHV0LCBrcFB1YktleSwgcmVkZWVtU2NyaXB0LCB3aXRuZXNzVmFsdWUsIHdpdG5lc3NTY3JpcHQpIHtcbiAgdmFyIGV4cGFuZGVkXG4gIHZhciBwcmV2T3V0VHlwZVxuICB2YXIgcHJldk91dFNjcmlwdFxuXG4gIHZhciBwMnNoID0gZmFsc2VcbiAgdmFyIHAyc2hUeXBlXG4gIHZhciByZWRlZW1TY3JpcHRIYXNoXG5cbiAgdmFyIHdpdG5lc3MgPSBmYWxzZVxuICB2YXIgcDJ3c2ggPSBmYWxzZVxuICB2YXIgd2l0bmVzc1R5cGVcbiAgdmFyIHdpdG5lc3NTY3JpcHRIYXNoXG5cbiAgdmFyIHNpZ25UeXBlXG4gIHZhciBzaWduU2NyaXB0XG5cbiAgaWYgKHJlZGVlbVNjcmlwdCAmJiB3aXRuZXNzU2NyaXB0KSB7XG4gICAgcmVkZWVtU2NyaXB0SGFzaCA9IGJjcnlwdG8uaGFzaDE2MChyZWRlZW1TY3JpcHQpXG4gICAgd2l0bmVzc1NjcmlwdEhhc2ggPSBiY3J5cHRvLnNoYTI1Nih3aXRuZXNzU2NyaXB0KVxuICAgIGNoZWNrUDJTSElucHV0KGlucHV0LCByZWRlZW1TY3JpcHRIYXNoKVxuXG4gICAgaWYgKCFyZWRlZW1TY3JpcHQuZXF1YWxzKGJ0ZW1wbGF0ZXMud2l0bmVzc1NjcmlwdEhhc2gub3V0cHV0LmVuY29kZSh3aXRuZXNzU2NyaXB0SGFzaCkpKSB0aHJvdyBuZXcgRXJyb3IoJ1dpdG5lc3Mgc2NyaXB0IGluY29uc2lzdGVudCB3aXRoIHJlZGVlbSBzY3JpcHQnKVxuXG4gICAgZXhwYW5kZWQgPSBleHBhbmRPdXRwdXQod2l0bmVzc1NjcmlwdCwgdW5kZWZpbmVkLCBrcFB1YktleSlcbiAgICBpZiAoIWV4cGFuZGVkLnB1YktleXMpIHRocm93IG5ldyBFcnJvcignV2l0bmVzc1NjcmlwdCBub3Qgc3VwcG9ydGVkIFwiJyArIGJzY3JpcHQudG9BU00ocmVkZWVtU2NyaXB0KSArICdcIicpXG5cbiAgICBwcmV2T3V0VHlwZSA9IGJ0ZW1wbGF0ZXMudHlwZXMuUDJTSFxuICAgIHByZXZPdXRTY3JpcHQgPSBidGVtcGxhdGVzLnNjcmlwdEhhc2gub3V0cHV0LmVuY29kZShyZWRlZW1TY3JpcHRIYXNoKVxuICAgIHAyc2ggPSB3aXRuZXNzID0gcDJ3c2ggPSB0cnVlXG4gICAgcDJzaFR5cGUgPSBidGVtcGxhdGVzLnR5cGVzLlAyV1NIXG4gICAgc2lnblR5cGUgPSB3aXRuZXNzVHlwZSA9IGV4cGFuZGVkLnNjcmlwdFR5cGVcbiAgICBzaWduU2NyaXB0ID0gd2l0bmVzc1NjcmlwdFxuICB9IGVsc2UgaWYgKHJlZGVlbVNjcmlwdCkge1xuICAgIHJlZGVlbVNjcmlwdEhhc2ggPSBiY3J5cHRvLmhhc2gxNjAocmVkZWVtU2NyaXB0KVxuICAgIGNoZWNrUDJTSElucHV0KGlucHV0LCByZWRlZW1TY3JpcHRIYXNoKVxuXG4gICAgZXhwYW5kZWQgPSBleHBhbmRPdXRwdXQocmVkZWVtU2NyaXB0LCB1bmRlZmluZWQsIGtwUHViS2V5KVxuICAgIGlmICghZXhwYW5kZWQucHViS2V5cykgdGhyb3cgbmV3IEVycm9yKCdSZWRlZW1TY3JpcHQgbm90IHN1cHBvcnRlZCBcIicgKyBic2NyaXB0LnRvQVNNKHJlZGVlbVNjcmlwdCkgKyAnXCInKVxuXG4gICAgcHJldk91dFR5cGUgPSBidGVtcGxhdGVzLnR5cGVzLlAyU0hcbiAgICBwcmV2T3V0U2NyaXB0ID0gYnRlbXBsYXRlcy5zY3JpcHRIYXNoLm91dHB1dC5lbmNvZGUocmVkZWVtU2NyaXB0SGFzaClcbiAgICBwMnNoID0gdHJ1ZVxuICAgIHNpZ25UeXBlID0gcDJzaFR5cGUgPSBleHBhbmRlZC5zY3JpcHRUeXBlXG4gICAgc2lnblNjcmlwdCA9IHJlZGVlbVNjcmlwdFxuICAgIHdpdG5lc3MgPSBzaWduVHlwZSA9PT0gYnRlbXBsYXRlcy50eXBlcy5QMldQS0hcbiAgfSBlbHNlIGlmICh3aXRuZXNzU2NyaXB0KSB7XG4gICAgd2l0bmVzc1NjcmlwdEhhc2ggPSBiY3J5cHRvLnNoYTI1Nih3aXRuZXNzU2NyaXB0KVxuICAgIGNoZWNrUDJXU0hJbnB1dChpbnB1dCwgd2l0bmVzc1NjcmlwdEhhc2gpXG5cbiAgICBleHBhbmRlZCA9IGV4cGFuZE91dHB1dCh3aXRuZXNzU2NyaXB0LCB1bmRlZmluZWQsIGtwUHViS2V5KVxuICAgIGlmICghZXhwYW5kZWQucHViS2V5cykgdGhyb3cgbmV3IEVycm9yKCdXaXRuZXNzU2NyaXB0IG5vdCBzdXBwb3J0ZWQgXCInICsgYnNjcmlwdC50b0FTTShyZWRlZW1TY3JpcHQpICsgJ1wiJylcblxuICAgIHByZXZPdXRUeXBlID0gYnRlbXBsYXRlcy50eXBlcy5QMldTSFxuICAgIHByZXZPdXRTY3JpcHQgPSBidGVtcGxhdGVzLndpdG5lc3NTY3JpcHRIYXNoLm91dHB1dC5lbmNvZGUod2l0bmVzc1NjcmlwdEhhc2gpXG4gICAgd2l0bmVzcyA9IHAyd3NoID0gdHJ1ZVxuICAgIHNpZ25UeXBlID0gd2l0bmVzc1R5cGUgPSBleHBhbmRlZC5zY3JpcHRUeXBlXG4gICAgc2lnblNjcmlwdCA9IHdpdG5lc3NTY3JpcHRcbiAgfSBlbHNlIGlmIChpbnB1dC5wcmV2T3V0VHlwZSkge1xuICAgIC8vIGVtYmVkZGVkIHNjcmlwdHMgYXJlIG5vdCBwb3NzaWJsZSB3aXRob3V0IGEgcmVkZWVtU2NyaXB0XG4gICAgaWYgKGlucHV0LnByZXZPdXRUeXBlID09PSBzY3JpcHRUeXBlcy5QMlNIIHx8XG4gICAgICBpbnB1dC5wcmV2T3V0VHlwZSA9PT0gc2NyaXB0VHlwZXMuUDJXU0gpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJldk91dFNjcmlwdCBpcyAnICsgaW5wdXQucHJldk91dFR5cGUgKyAnLCByZXF1aXJlcyByZWRlZW1TY3JpcHQnKVxuICAgIH1cblxuICAgIHByZXZPdXRUeXBlID0gaW5wdXQucHJldk91dFR5cGVcbiAgICBwcmV2T3V0U2NyaXB0ID0gaW5wdXQucHJldk91dFNjcmlwdFxuICAgIGV4cGFuZGVkID0gZXhwYW5kT3V0cHV0KGlucHV0LnByZXZPdXRTY3JpcHQsIGlucHV0LnByZXZPdXRUeXBlLCBrcFB1YktleSlcbiAgICBpZiAoIWV4cGFuZGVkLnB1YktleXMpIHJldHVyblxuXG4gICAgd2l0bmVzcyA9IChpbnB1dC5wcmV2T3V0VHlwZSA9PT0gc2NyaXB0VHlwZXMuUDJXUEtIKVxuICAgIHNpZ25UeXBlID0gcHJldk91dFR5cGVcbiAgICBzaWduU2NyaXB0ID0gcHJldk91dFNjcmlwdFxuICB9IGVsc2Uge1xuICAgIHByZXZPdXRTY3JpcHQgPSBidGVtcGxhdGVzLnB1YktleUhhc2gub3V0cHV0LmVuY29kZShiY3J5cHRvLmhhc2gxNjAoa3BQdWJLZXkpKVxuICAgIGV4cGFuZGVkID0gZXhwYW5kT3V0cHV0KHByZXZPdXRTY3JpcHQsIHNjcmlwdFR5cGVzLlAyUEtILCBrcFB1YktleSlcblxuICAgIHByZXZPdXRUeXBlID0gc2NyaXB0VHlwZXMuUDJQS0hcbiAgICB3aXRuZXNzID0gZmFsc2VcbiAgICBzaWduVHlwZSA9IHByZXZPdXRUeXBlXG4gICAgc2lnblNjcmlwdCA9IHByZXZPdXRTY3JpcHRcbiAgfVxuXG4gIGlmIChzaWduVHlwZSA9PT0gc2NyaXB0VHlwZXMuUDJXUEtIKSB7XG4gICAgc2lnblNjcmlwdCA9IGJ0ZW1wbGF0ZXMucHViS2V5SGFzaC5vdXRwdXQuZW5jb2RlKGJ0ZW1wbGF0ZXMud2l0bmVzc1B1YktleUhhc2gub3V0cHV0LmRlY29kZShzaWduU2NyaXB0KSlcbiAgfVxuXG4gIGlmIChwMnNoKSB7XG4gICAgaW5wdXQucmVkZWVtU2NyaXB0ID0gcmVkZWVtU2NyaXB0XG4gICAgaW5wdXQucmVkZWVtU2NyaXB0VHlwZSA9IHAyc2hUeXBlXG4gIH1cblxuICBpZiAocDJ3c2gpIHtcbiAgICBpbnB1dC53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdFxuICAgIGlucHV0LndpdG5lc3NTY3JpcHRUeXBlID0gd2l0bmVzc1R5cGVcbiAgfVxuXG4gIGlucHV0LnB1YktleXMgPSBleHBhbmRlZC5wdWJLZXlzXG4gIGlucHV0LnNpZ25hdHVyZXMgPSBleHBhbmRlZC5zaWduYXR1cmVzXG4gIGlucHV0LnNpZ25TY3JpcHQgPSBzaWduU2NyaXB0XG4gIGlucHV0LnNpZ25UeXBlID0gc2lnblR5cGVcbiAgaW5wdXQucHJldk91dFNjcmlwdCA9IHByZXZPdXRTY3JpcHRcbiAgaW5wdXQucHJldk91dFR5cGUgPSBwcmV2T3V0VHlwZVxuICBpbnB1dC53aXRuZXNzID0gd2l0bmVzc1xufVxuXG5mdW5jdGlvbiBidWlsZFN0YWNrICh0eXBlLCBzaWduYXR1cmVzLCBwdWJLZXlzLCBhbGxvd0luY29tcGxldGUpIHtcbiAgaWYgKHR5cGUgPT09IHNjcmlwdFR5cGVzLlAyUEtIKSB7XG4gICAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoID09PSAxICYmIEJ1ZmZlci5pc0J1ZmZlcihzaWduYXR1cmVzWzBdKSAmJiBwdWJLZXlzLmxlbmd0aCA9PT0gMSkgcmV0dXJuIGJ0ZW1wbGF0ZXMucHViS2V5SGFzaC5pbnB1dC5lbmNvZGVTdGFjayhzaWduYXR1cmVzWzBdLCBwdWJLZXlzWzBdKVxuICB9IGVsc2UgaWYgKHR5cGUgPT09IHNjcmlwdFR5cGVzLlAyUEspIHtcbiAgICBpZiAoc2lnbmF0dXJlcy5sZW5ndGggPT09IDEgJiYgQnVmZmVyLmlzQnVmZmVyKHNpZ25hdHVyZXNbMF0pKSByZXR1cm4gYnRlbXBsYXRlcy5wdWJLZXkuaW5wdXQuZW5jb2RlU3RhY2soc2lnbmF0dXJlc1swXSlcbiAgfSBlbHNlIGlmICh0eXBlID09PSBzY3JpcHRUeXBlcy5NVUxUSVNJRykge1xuICAgIGlmIChzaWduYXR1cmVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHNpZ25hdHVyZXMgPSBzaWduYXR1cmVzLm1hcChmdW5jdGlvbiAoc2lnbmF0dXJlKSB7XG4gICAgICAgIHJldHVybiBzaWduYXR1cmUgfHwgb3BzLk9QXzBcbiAgICAgIH0pXG4gICAgICBpZiAoIWFsbG93SW5jb21wbGV0ZSkge1xuICAgICAgICAvLyByZW1vdmUgYmxhbmsgc2lnbmF0dXJlc1xuICAgICAgICBzaWduYXR1cmVzID0gc2lnbmF0dXJlcy5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggIT09IG9wcy5PUF8wIH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBidGVtcGxhdGVzLm11bHRpc2lnLmlucHV0LmVuY29kZVN0YWNrKHNpZ25hdHVyZXMpXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignTm90IHlldCBzdXBwb3J0ZWQnKVxuICB9XG5cbiAgaWYgKCFhbGxvd0luY29tcGxldGUpIHRocm93IG5ldyBFcnJvcignTm90IGVub3VnaCBzaWduYXR1cmVzIHByb3ZpZGVkJylcbiAgcmV0dXJuIFtdXG59XG5cbmZ1bmN0aW9uIGJ1aWxkSW5wdXQgKGlucHV0LCBhbGxvd0luY29tcGxldGUpIHtcbiAgdmFyIHNjcmlwdFR5cGUgPSBpbnB1dC5wcmV2T3V0VHlwZVxuICB2YXIgc2lnID0gW11cbiAgdmFyIHdpdG5lc3MgPSBbXVxuXG4gIGlmIChzdXBwb3J0ZWRUeXBlKHNjcmlwdFR5cGUpKSB7XG4gICAgc2lnID0gYnVpbGRTdGFjayhzY3JpcHRUeXBlLCBpbnB1dC5zaWduYXR1cmVzLCBpbnB1dC5wdWJLZXlzLCBhbGxvd0luY29tcGxldGUpXG4gIH1cblxuICB2YXIgcDJzaCA9IGZhbHNlXG4gIGlmIChzY3JpcHRUeXBlID09PSBidGVtcGxhdGVzLnR5cGVzLlAyU0gpIHtcbiAgICAvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgZXJyb3IgbGF0ZXIgd2hlbiB3ZSBoYXZlIGEgZ3VhcmFudGVlIHByZXBhcmVJbnB1dFxuICAgIC8vIHJlamVjdHMgdW5zaWduYWJsZSBzY3JpcHRzIC0gaXQgTVVTVCBiZSBzaWduYWJsZSBhdCB0aGlzIHBvaW50LlxuICAgIGlmICghYWxsb3dJbmNvbXBsZXRlICYmICFzdXBwb3J0ZWRQMlNIVHlwZShpbnB1dC5yZWRlZW1TY3JpcHRUeXBlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlIHRvIHNpZ24gdGhpcyB0eXBlJylcbiAgICB9XG5cbiAgICBpZiAoc3VwcG9ydGVkVHlwZShpbnB1dC5yZWRlZW1TY3JpcHRUeXBlKSkge1xuICAgICAgc2lnID0gYnVpbGRTdGFjayhpbnB1dC5yZWRlZW1TY3JpcHRUeXBlLCBpbnB1dC5zaWduYXR1cmVzLCBpbnB1dC5wdWJLZXlzLCBhbGxvd0luY29tcGxldGUpXG4gICAgfVxuXG4gICAgLy8gSWYgaXQgd2Fzbid0IFNJR05BQkxFLCBpdCdzIHdpdG5lc3MsIGRlZmVyIHRvIHRoYXRcbiAgICBpZiAoaW5wdXQucmVkZWVtU2NyaXB0VHlwZSkge1xuICAgICAgcDJzaCA9IHRydWVcbiAgICAgIHNjcmlwdFR5cGUgPSBpbnB1dC5yZWRlZW1TY3JpcHRUeXBlXG4gICAgfVxuICB9XG5cbiAgc3dpdGNoIChzY3JpcHRUeXBlKSB7XG4gICAgLy8gUDJXUEtIIGlzIGEgc3BlY2lhbCBjYXNlIG9mIFAyUEtIXG4gICAgY2FzZSBidGVtcGxhdGVzLnR5cGVzLlAyV1BLSDpcbiAgICAgIHdpdG5lc3MgPSBidWlsZFN0YWNrKGJ0ZW1wbGF0ZXMudHlwZXMuUDJQS0gsIGlucHV0LnNpZ25hdHVyZXMsIGlucHV0LnB1YktleXMsIGFsbG93SW5jb21wbGV0ZSlcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIGJ0ZW1wbGF0ZXMudHlwZXMuUDJXU0g6XG4gICAgICAvLyBXZSBjYW4gcmVtb3ZlIHRoaXMgY2hlY2sgbGF0ZXJcbiAgICAgIGlmICghYWxsb3dJbmNvbXBsZXRlICYmICFzdXBwb3J0ZWRUeXBlKGlucHV0LndpdG5lc3NTY3JpcHRUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ltcG9zc2libGUgdG8gc2lnbiB0aGlzIHR5cGUnKVxuICAgICAgfVxuXG4gICAgICBpZiAoc3VwcG9ydGVkVHlwZShpbnB1dC53aXRuZXNzU2NyaXB0VHlwZSkpIHtcbiAgICAgICAgd2l0bmVzcyA9IGJ1aWxkU3RhY2soaW5wdXQud2l0bmVzc1NjcmlwdFR5cGUsIGlucHV0LnNpZ25hdHVyZXMsIGlucHV0LnB1YktleXMsIGFsbG93SW5jb21wbGV0ZSlcbiAgICAgICAgd2l0bmVzcy5wdXNoKGlucHV0LndpdG5lc3NTY3JpcHQpXG4gICAgICAgIHNjcmlwdFR5cGUgPSBpbnB1dC53aXRuZXNzU2NyaXB0VHlwZVxuICAgICAgfVxuXG4gICAgICBicmVha1xuICB9XG5cbiAgLy8gYXBwZW5kIHJlZGVlbVNjcmlwdCBpZiBuZWNlc3NhcnlcbiAgaWYgKHAyc2gpIHtcbiAgICBzaWcucHVzaChpbnB1dC5yZWRlZW1TY3JpcHQpXG4gIH1cblxuICByZXR1cm4ge1xuICAgIHR5cGU6IHNjcmlwdFR5cGUsXG4gICAgc2NyaXB0OiBic2NyaXB0LmNvbXBpbGUoc2lnKSxcbiAgICB3aXRuZXNzOiB3aXRuZXNzXG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNhY3Rpb25CdWlsZGVyIChuZXR3b3JrLCBtYXhpbXVtRmVlUmF0ZSkge1xuICB0aGlzLnByZXZUeE1hcCA9IHt9XG4gIHRoaXMubmV0d29yayA9IG5ldHdvcmsgfHwgbmV0d29ya3MuYml0Y29pblxuXG4gIC8vIFdBUk5JTkc6IFRoaXMgaXMgX19OT1RfXyB0byBiZSByZWxpZWQgb24sIGl0cyBqdXN0IGFub3RoZXIgcG90ZW50aWFsIHNhZmV0eSBtZWNoYW5pc20gKHNhZmV0eSBpbi1kZXB0aClcbiAgdGhpcy5tYXhpbXVtRmVlUmF0ZSA9IG1heGltdW1GZWVSYXRlIHx8IDI1MDBcblxuICB0aGlzLmlucHV0cyA9IFtdXG4gIHRoaXMudHggPSBuZXcgVHJhbnNhY3Rpb24oKVxuXG4gIGlmICh0aGlzLm5ldHdvcmsudHh2ZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNldFZlcnNpb24odGhpcy5uZXR3b3JrLnR4dmVyc2lvbilcbiAgfVxuICBpZiAodGhpcy5uZXR3b3JrLnZlcnNpb25Hcm91cElkICE9PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNldFZlcnNpb25Hcm91cElkKHRoaXMubmV0d29yay52ZXJzaW9uR3JvdXBJZClcbiAgfVxufVxuXG5UcmFuc2FjdGlvbkJ1aWxkZXIucHJvdG90eXBlLnNldEV4cGlyeSA9IGZ1bmN0aW9uIChleHBpcnkpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgZXhwaXJ5KVxuXG4gIHRoaXMudHguZXhwaXJ5ID0gZXhwaXJ5XG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuc2V0VmVyc2lvbkdyb3VwSWQgPSBmdW5jdGlvbiAodmVyc2lvbmdyb3VwaWQpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgdmVyc2lvbmdyb3VwaWQpXG5cbiAgdGhpcy50eC52ZXJzaW9uZ3JvdXBpZCA9IHZlcnNpb25ncm91cGlkXG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuc2V0TG9ja1RpbWUgPSBmdW5jdGlvbiAobG9ja3RpbWUpIHtcbiAgdHlwZWZvcmNlKHR5cGVzLlVJbnQzMiwgbG9ja3RpbWUpXG5cbiAgLy8gaWYgYW55IHNpZ25hdHVyZXMgZXhpc3QsIHRocm93XG4gIGlmICh0aGlzLmlucHV0cy5zb21lKGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIGlmICghaW5wdXQuc2lnbmF0dXJlcykgcmV0dXJuIGZhbHNlXG5cbiAgICByZXR1cm4gaW5wdXQuc2lnbmF0dXJlcy5zb21lKGZ1bmN0aW9uIChzKSB7IHJldHVybiBzIH0pXG4gIH0pKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObywgdGhpcyB3b3VsZCBpbnZhbGlkYXRlIHNpZ25hdHVyZXMnKVxuICB9XG5cbiAgdGhpcy50eC5sb2NrdGltZSA9IGxvY2t0aW1lXG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuc2V0VmVyc2lvbiA9IGZ1bmN0aW9uICh2ZXJzaW9uKSB7XG4gIHR5cGVmb3JjZSh0eXBlcy5VSW50MzIsIHZlcnNpb24pXG5cbiAgLy8gWFhYOiB0aGlzIG1pZ2h0IGV2ZW50dWFsbHkgYmVjb21lIG1vcmUgY29tcGxleCBkZXBlbmRpbmcgb24gd2hhdCB0aGUgdmVyc2lvbnMgcmVwcmVzZW50XG4gIHRoaXMudHgudmVyc2lvbiA9IHZlcnNpb25cbn1cblxuVHJhbnNhY3Rpb25CdWlsZGVyLmZyb21UcmFuc2FjdGlvbiA9IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgbmV0d29yaykge1xuICB2YXIgdHhiID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihuZXR3b3JrKVxuXG4gIC8vIENvcHkgdHJhbnNhY3Rpb24gZmllbGRzXG4gIHZhciB2ZXJzaW9uID0gdHJhbnNhY3Rpb24udmVyc2lvbiAmIDB4N2ZmZmZmZmZcbiAgdHhiLnNldFZlcnNpb24odHJhbnNhY3Rpb24udmVyc2lvbilcbiAgdHhiLnNldExvY2tUaW1lKHRyYW5zYWN0aW9uLmxvY2t0aW1lKVxuICBpZiAodmVyc2lvbiA+PSAzKSB7XG4gICAgdHhiLnNldFZlcnNpb25Hcm91cElkKHRyYW5zYWN0aW9uLnZlcnNpb25ncm91cGlkKVxuICAgIHR4Yi5zZXRFeHBpcnkodHJhbnNhY3Rpb24uZXhwaXJ5KVxuICB9XG5cbiAgLy8gQ29weSBvdXRwdXRzIChkb25lIGZpcnN0IHRvIGF2b2lkIHNpZ25hdHVyZSBpbnZhbGlkYXRpb24pXG4gIHRyYW5zYWN0aW9uLm91dHMuZm9yRWFjaChmdW5jdGlvbiAodHhPdXQpIHtcbiAgICB0eGIuYWRkT3V0cHV0KHR4T3V0LnNjcmlwdCwgdHhPdXQudmFsdWUpXG4gIH0pXG5cbiAgLy8gQ29weSBpbnB1dHNcbiAgdHJhbnNhY3Rpb24uaW5zLmZvckVhY2goZnVuY3Rpb24gKHR4SW4pIHtcbiAgICB0eGIuX19hZGRJbnB1dFVuc2FmZSh0eEluLmhhc2gsIHR4SW4uaW5kZXgsIHtcbiAgICAgIHNlcXVlbmNlOiB0eEluLnNlcXVlbmNlLFxuICAgICAgc2NyaXB0OiB0eEluLnNjcmlwdCxcbiAgICAgIHdpdG5lc3M6IHR4SW4ud2l0bmVzc1xuICAgIH0pXG4gIH0pXG5cbiAgLy8gZml4IHNvbWUgdGhpbmdzIG5vdCBwb3NzaWJsZSB0aHJvdWdoIHRoZSBwdWJsaWMgQVBJXG4gIHR4Yi5pbnB1dHMuZm9yRWFjaChmdW5jdGlvbiAoaW5wdXQsIGkpIHtcbiAgICBmaXhNdWx0aXNpZ09yZGVyKGlucHV0LCB0cmFuc2FjdGlvbiwgaSlcbiAgfSlcblxuICByZXR1cm4gdHhiXG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuYWRkSW5wdXQgPSBmdW5jdGlvbiAodHhIYXNoLCB2b3V0LCBzZXF1ZW5jZSwgcHJldk91dFNjcmlwdCkge1xuICBpZiAoIXRoaXMuX19jYW5Nb2RpZnlJbnB1dHMoKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignTm8sIHRoaXMgd291bGQgaW52YWxpZGF0ZSBzaWduYXR1cmVzJylcbiAgfVxuXG4gIHZhciB2YWx1ZVxuXG4gIC8vIGlzIGl0IGEgaGV4IHN0cmluZz9cbiAgaWYgKHR5cGVvZiB0eEhhc2ggPT09ICdzdHJpbmcnKSB7XG4gICAgLy8gdHJhbnNhY3Rpb24gaGFzaHMncyBhcmUgZGlzcGxheWVkIGluIHJldmVyc2Ugb3JkZXIsIHVuLXJldmVyc2UgaXRcbiAgICB0eEhhc2ggPSBCdWZmZXIuZnJvbSh0eEhhc2gsICdoZXgnKS5yZXZlcnNlKClcblxuICAvLyBpcyBpdCBhIFRyYW5zYWN0aW9uIG9iamVjdD9cbiAgfSBlbHNlIGlmICh0eEhhc2ggaW5zdGFuY2VvZiBUcmFuc2FjdGlvbikge1xuICAgIHZhciB0eE91dCA9IHR4SGFzaC5vdXRzW3ZvdXRdXG4gICAgcHJldk91dFNjcmlwdCA9IHR4T3V0LnNjcmlwdFxuICAgIHZhbHVlID0gdHhPdXQudmFsdWVcblxuICAgIHR4SGFzaCA9IHR4SGFzaC5nZXRIYXNoKClcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9fYWRkSW5wdXRVbnNhZmUodHhIYXNoLCB2b3V0LCB7XG4gICAgc2VxdWVuY2U6IHNlcXVlbmNlLFxuICAgIHByZXZPdXRTY3JpcHQ6IHByZXZPdXRTY3JpcHQsXG4gICAgdmFsdWU6IHZhbHVlXG4gIH0pXG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuX19hZGRJbnB1dFVuc2FmZSA9IGZ1bmN0aW9uICh0eEhhc2gsIHZvdXQsIG9wdGlvbnMpIHtcbiAgaWYgKFRyYW5zYWN0aW9uLmlzQ29pbmJhc2VIYXNoKHR4SGFzaCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvaW5iYXNlIGlucHV0cyBub3Qgc3VwcG9ydGVkJylcbiAgfVxuXG4gIHZhciBwcmV2VHhPdXQgPSB0eEhhc2gudG9TdHJpbmcoJ2hleCcpICsgJzonICsgdm91dFxuICBpZiAodGhpcy5wcmV2VHhNYXBbcHJldlR4T3V0XSAhPT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3IoJ0R1cGxpY2F0ZSBUeE91dDogJyArIHByZXZUeE91dClcblxuICB2YXIgaW5wdXQgPSB7fVxuXG4gIC8vIGRlcml2ZSB3aGF0IHdlIGNhbiBmcm9tIHRoZSBzY3JpcHRTaWdcbiAgaWYgKG9wdGlvbnMuc2NyaXB0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpbnB1dCA9IGV4cGFuZElucHV0KG9wdGlvbnMuc2NyaXB0LCBvcHRpb25zLndpdG5lc3MgfHwgW10pXG4gIH1cblxuICAvLyBpZiBhbiBpbnB1dCB2YWx1ZSB3YXMgZ2l2ZW4sIHJldGFpbiBpdFxuICBpZiAob3B0aW9ucy52YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaW5wdXQudmFsdWUgPSBvcHRpb25zLnZhbHVlXG4gIH1cblxuICAvLyBkZXJpdmUgd2hhdCB3ZSBjYW4gZnJvbSB0aGUgcHJldmlvdXMgdHJhbnNhY3Rpb25zIG91dHB1dCBzY3JpcHRcbiAgaWYgKCFpbnB1dC5wcmV2T3V0U2NyaXB0ICYmIG9wdGlvbnMucHJldk91dFNjcmlwdCkge1xuICAgIHZhciBwcmV2T3V0VHlwZVxuXG4gICAgaWYgKCFpbnB1dC5wdWJLZXlzICYmICFpbnB1dC5zaWduYXR1cmVzKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSBleHBhbmRPdXRwdXQob3B0aW9ucy5wcmV2T3V0U2NyaXB0KVxuXG4gICAgICBpZiAoZXhwYW5kZWQucHViS2V5cykge1xuICAgICAgICBpbnB1dC5wdWJLZXlzID0gZXhwYW5kZWQucHViS2V5c1xuICAgICAgICBpbnB1dC5zaWduYXR1cmVzID0gZXhwYW5kZWQuc2lnbmF0dXJlc1xuICAgICAgfVxuXG4gICAgICBwcmV2T3V0VHlwZSA9IGV4cGFuZGVkLnNjcmlwdFR5cGVcbiAgICB9XG5cbiAgICBpbnB1dC5wcmV2T3V0U2NyaXB0ID0gb3B0aW9ucy5wcmV2T3V0U2NyaXB0XG4gICAgaW5wdXQucHJldk91dFR5cGUgPSBwcmV2T3V0VHlwZSB8fCBidGVtcGxhdGVzLmNsYXNzaWZ5T3V0cHV0KG9wdGlvbnMucHJldk91dFNjcmlwdClcbiAgfVxuXG4gIHZhciB2aW4gPSB0aGlzLnR4LmFkZElucHV0KHR4SGFzaCwgdm91dCwgb3B0aW9ucy5zZXF1ZW5jZSwgb3B0aW9ucy5zY3JpcHRTaWcpXG4gIHRoaXMuaW5wdXRzW3Zpbl0gPSBpbnB1dFxuICB0aGlzLnByZXZUeE1hcFtwcmV2VHhPdXRdID0gdmluXG4gIHJldHVybiB2aW5cbn1cblxuVHJhbnNhY3Rpb25CdWlsZGVyLnByb3RvdHlwZS5hZGRPdXRwdXQgPSBmdW5jdGlvbiAoc2NyaXB0UHViS2V5LCB2YWx1ZSkge1xuICBpZiAoIXRoaXMuX19jYW5Nb2RpZnlPdXRwdXRzKCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vLCB0aGlzIHdvdWxkIGludmFsaWRhdGUgc2lnbmF0dXJlcycpXG4gIH1cblxuICAvLyBBdHRlbXB0IHRvIGdldCBhIHNjcmlwdCBpZiBpdCdzIGEgYmFzZTU4IGFkZHJlc3Mgc3RyaW5nXG4gIGlmICh0eXBlb2Ygc2NyaXB0UHViS2V5ID09PSAnc3RyaW5nJykge1xuICAgIHNjcmlwdFB1YktleSA9IGJhZGRyZXNzLnRvT3V0cHV0U2NyaXB0KHNjcmlwdFB1YktleSwgdGhpcy5uZXR3b3JrKVxuICB9XG5cbiAgcmV0dXJuIHRoaXMudHguYWRkT3V0cHV0KHNjcmlwdFB1YktleSwgdmFsdWUpXG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuYnVpbGQgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLl9fYnVpbGQoZmFsc2UpXG59XG5UcmFuc2FjdGlvbkJ1aWxkZXIucHJvdG90eXBlLmJ1aWxkSW5jb21wbGV0ZSA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuX19idWlsZCh0cnVlKVxufVxuXG5UcmFuc2FjdGlvbkJ1aWxkZXIucHJvdG90eXBlLl9fYnVpbGQgPSBmdW5jdGlvbiAoYWxsb3dJbmNvbXBsZXRlKSB7XG4gIGlmICghYWxsb3dJbmNvbXBsZXRlKSB7XG4gICAgaWYgKCF0aGlzLnR4Lmlucy5sZW5ndGgpIHRocm93IG5ldyBFcnJvcignVHJhbnNhY3Rpb24gaGFzIG5vIGlucHV0cycpXG4gICAgaWYgKCF0aGlzLnR4Lm91dHMubGVuZ3RoKSB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGhhcyBubyBvdXRwdXRzJylcbiAgfVxuXG4gIHZhciB0eCA9IHRoaXMudHguY2xvbmUoKVxuICAvLyBDcmVhdGUgc2NyaXB0IHNpZ25hdHVyZXMgZnJvbSBpbnB1dHNcbiAgdGhpcy5pbnB1dHMuZm9yRWFjaChmdW5jdGlvbiAoaW5wdXQsIGkpIHtcbiAgICB2YXIgc2NyaXB0VHlwZSA9IGlucHV0LndpdG5lc3NTY3JpcHRUeXBlIHx8IGlucHV0LnJlZGVlbVNjcmlwdFR5cGUgfHwgaW5wdXQucHJldk91dFR5cGVcbiAgICBpZiAoIXNjcmlwdFR5cGUgJiYgIWFsbG93SW5jb21wbGV0ZSkgdGhyb3cgbmV3IEVycm9yKCdUcmFuc2FjdGlvbiBpcyBub3QgY29tcGxldGUnKVxuICAgIHZhciByZXN1bHQgPSBidWlsZElucHV0KGlucHV0LCBhbGxvd0luY29tcGxldGUpXG5cbiAgICAvLyBza2lwIGlmIG5vIHJlc3VsdFxuICAgIGlmICghYWxsb3dJbmNvbXBsZXRlKSB7XG4gICAgICBpZiAoIXN1cHBvcnRlZFR5cGUocmVzdWx0LnR5cGUpICYmIHJlc3VsdC50eXBlICE9PSBidGVtcGxhdGVzLnR5cGVzLlAyV1BLSCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0LnR5cGUgKyAnIG5vdCBzdXBwb3J0ZWQnKVxuICAgICAgfVxuICAgIH1cblxuICAgIHR4LnNldElucHV0U2NyaXB0KGksIHJlc3VsdC5zY3JpcHQpXG4gICAgdHguc2V0V2l0bmVzcyhpLCByZXN1bHQud2l0bmVzcylcbiAgfSlcblxuICBpZiAoIWFsbG93SW5jb21wbGV0ZSkge1xuICAgIC8vIGRvIG5vdCByZWx5IG9uIHRoaXMsIGl0cyBtZXJlbHkgYSBsYXN0IHJlc29ydFxuICAgIGlmICh0aGlzLl9fb3Zlck1heGltdW1GZWVzKHR4LnZpcnR1YWxTaXplKCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyYW5zYWN0aW9uIGhhcyBhYnN1cmQgZmVlcycpXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHR4XG59XG5cbmZ1bmN0aW9uIGNhblNpZ24gKGlucHV0KSB7XG4gIHJldHVybiBpbnB1dC5wcmV2T3V0U2NyaXB0ICE9PSB1bmRlZmluZWQgJiZcbiAgICBpbnB1dC5zaWduU2NyaXB0ICE9PSB1bmRlZmluZWQgJiZcbiAgICBpbnB1dC5wdWJLZXlzICE9PSB1bmRlZmluZWQgJiZcbiAgICBpbnB1dC5zaWduYXR1cmVzICE9PSB1bmRlZmluZWQgJiZcbiAgICBpbnB1dC5zaWduYXR1cmVzLmxlbmd0aCA9PT0gaW5wdXQucHViS2V5cy5sZW5ndGggJiZcbiAgICBpbnB1dC5wdWJLZXlzLmxlbmd0aCA+IDAgJiZcbiAgICAoXG4gICAgICBpbnB1dC53aXRuZXNzID09PSBmYWxzZSB8fFxuICAgICAgKGlucHV0LndpdG5lc3MgPT09IHRydWUgJiYgaW5wdXQudmFsdWUgIT09IHVuZGVmaW5lZClcbiAgICApXG59XG5cblRyYW5zYWN0aW9uQnVpbGRlci5wcm90b3R5cGUuc2lnbiA9IGZ1bmN0aW9uICh2aW4sIGtleVBhaXIsIHJlZGVlbVNjcmlwdCwgaGFzaFR5cGUsIHdpdG5lc3NWYWx1ZSwgd2l0bmVzc1NjcmlwdCwgb3ZlcndpbnRlcmVkKSB7XG4gIC8vIFRPRE86IHJlbW92ZSBrZXlQYWlyLm5ldHdvcmsgbWF0Y2hpbmcgaW4gNC4wLjBcbiAgaWYgKGtleVBhaXIubmV0d29yayAmJiBrZXlQYWlyLm5ldHdvcmsgIT09IHRoaXMubmV0d29yaykgdGhyb3cgbmV3IFR5cGVFcnJvcignSW5jb25zaXN0ZW50IG5ldHdvcmsnKVxuICBpZiAoIXRoaXMuaW5wdXRzW3Zpbl0pIHRocm93IG5ldyBFcnJvcignTm8gaW5wdXQgYXQgaW5kZXg6ICcgKyB2aW4pXG4gIGhhc2hUeXBlID0gaGFzaFR5cGUgfHwgVHJhbnNhY3Rpb24uU0lHSEFTSF9BTExcblxuICB2YXIgaW5wdXQgPSB0aGlzLmlucHV0c1t2aW5dXG5cbiAgLy8gaWYgcmVkZWVtU2NyaXB0IHdhcyBwcmV2aW91c2x5IHByb3ZpZGVkLCBlbmZvcmNlIGNvbnNpc3RlbmN5XG4gIGlmIChpbnB1dC5yZWRlZW1TY3JpcHQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgcmVkZWVtU2NyaXB0ICYmXG4gICAgICAhaW5wdXQucmVkZWVtU2NyaXB0LmVxdWFscyhyZWRlZW1TY3JpcHQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbmNvbnNpc3RlbnQgcmVkZWVtU2NyaXB0JylcbiAgfVxuXG4gIHZhciBrcFB1YktleSA9IGtleVBhaXIucHVibGljS2V5IHx8IGtleVBhaXIuZ2V0UHVibGljS2V5QnVmZmVyKClcbiAgaWYgKCFjYW5TaWduKGlucHV0KSkge1xuICAgIGlmICh3aXRuZXNzVmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKGlucHV0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgaW5wdXQudmFsdWUgIT09IHdpdG5lc3NWYWx1ZSkgdGhyb3cgbmV3IEVycm9yKCdJbnB1dCBkaWRuXFwndCBtYXRjaCB3aXRuZXNzVmFsdWUnKVxuICAgICAgdHlwZWZvcmNlKHR5cGVzLlNhdG9zaGksIHdpdG5lc3NWYWx1ZSlcbiAgICAgIGlucHV0LnZhbHVlID0gd2l0bmVzc1ZhbHVlXG4gICAgfVxuXG4gICAgaWYgKCFjYW5TaWduKGlucHV0KSkgcHJlcGFyZUlucHV0KGlucHV0LCBrcFB1YktleSwgcmVkZWVtU2NyaXB0LCB3aXRuZXNzVmFsdWUsIHdpdG5lc3NTY3JpcHQpXG4gICAgaWYgKCFjYW5TaWduKGlucHV0KSkgdGhyb3cgRXJyb3IoaW5wdXQucHJldk91dFR5cGUgKyAnIG5vdCBzdXBwb3J0ZWQnKVxuICB9XG5cbiAgLy8gcmVhZHkgdG8gc2lnblxuICB2YXIgc2lnbmF0dXJlSGFzaFxuICBpZiAoaW5wdXQud2l0bmVzcykge1xuICAgIHNpZ25hdHVyZUhhc2ggPSB0aGlzLnR4Lmhhc2hGb3JXaXRuZXNzVjAodmluLCBpbnB1dC5zaWduU2NyaXB0LCBpbnB1dC52YWx1ZSwgaGFzaFR5cGUpXG4gIH0gZWxzZSBpZiAob3ZlcndpbnRlcmVkKSB7XG4gICAgc2lnbmF0dXJlSGFzaCA9IHRoaXMudHguaGFzaEZvclpJUDE0Myh2aW4sIGlucHV0LnNpZ25TY3JpcHQsIHdpdG5lc3NWYWx1ZSwgaGFzaFR5cGUpXG4gIH0gZWxzZSB7XG4gICAgc2lnbmF0dXJlSGFzaCA9IHRoaXMudHguaGFzaEZvclNpZ25hdHVyZSh2aW4sIGlucHV0LnNpZ25TY3JpcHQsIGhhc2hUeXBlKVxuICB9XG5cbiAgLy8gZW5mb3JjZSBpbiBvcmRlciBzaWduaW5nIG9mIHB1YmxpYyBrZXlzXG4gIHZhciBzaWduZWQgPSBpbnB1dC5wdWJLZXlzLnNvbWUoZnVuY3Rpb24gKHB1YktleSwgaSkge1xuICAgIGlmICgha3BQdWJLZXkuZXF1YWxzKHB1YktleSkpIHJldHVybiBmYWxzZVxuICAgIGlmIChpbnB1dC5zaWduYXR1cmVzW2ldKSB0aHJvdyBuZXcgRXJyb3IoJ1NpZ25hdHVyZSBhbHJlYWR5IGV4aXN0cycpXG4gICAgaWYgKGtwUHViS2V5Lmxlbmd0aCAhPT0gMzMgJiZcbiAgICAgIGlucHV0LnNpZ25UeXBlID09PSBzY3JpcHRUeXBlcy5QMldQS0gpIHRocm93IG5ldyBFcnJvcignQklQMTQzIHJlamVjdHMgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlzIGluIFAyV1BLSCBvciBQMldTSCcpXG5cbiAgICB2YXIgc2lnbmF0dXJlID0ga2V5UGFpci5zaWduKHNpZ25hdHVyZUhhc2gpXG4gICAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzaWduYXR1cmUpKSBzaWduYXR1cmUgPSBFQ1NpZ25hdHVyZS5mcm9tUlNCdWZmZXIoc2lnbmF0dXJlKVxuXG4gICAgaW5wdXQuc2lnbmF0dXJlc1tpXSA9IHNpZ25hdHVyZS50b1NjcmlwdFNpZ25hdHVyZShoYXNoVHlwZSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9KVxuXG4gIGlmICghc2lnbmVkKSB0aHJvdyBuZXcgRXJyb3IoJ0tleSBwYWlyIGNhbm5vdCBzaWduIGZvciB0aGlzIGlucHV0Jylcbn1cblxuZnVuY3Rpb24gc2lnbmF0dXJlSGFzaFR5cGUgKGJ1ZmZlcikge1xuICByZXR1cm4gYnVmZmVyLnJlYWRVSW50OChidWZmZXIubGVuZ3RoIC0gMSlcbn1cblxuVHJhbnNhY3Rpb25CdWlsZGVyLnByb3RvdHlwZS5fX2Nhbk1vZGlmeUlucHV0cyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXMuaW5wdXRzLmV2ZXJ5KGZ1bmN0aW9uIChpbnB1dCkge1xuICAgIC8vIGFueSBzaWduYXR1cmVzP1xuICAgIGlmIChpbnB1dC5zaWduYXR1cmVzID09PSB1bmRlZmluZWQpIHJldHVybiB0cnVlXG5cbiAgICByZXR1cm4gaW5wdXQuc2lnbmF0dXJlcy5ldmVyeShmdW5jdGlvbiAoc2lnbmF0dXJlKSB7XG4gICAgICBpZiAoIXNpZ25hdHVyZSkgcmV0dXJuIHRydWVcbiAgICAgIHZhciBoYXNoVHlwZSA9IHNpZ25hdHVyZUhhc2hUeXBlKHNpZ25hdHVyZSlcblxuICAgICAgLy8gaWYgU0lHSEFTSF9BTllPTkVDQU5QQVkgaXMgc2V0LCBzaWduYXR1cmVzIHdvdWxkIG5vdFxuICAgICAgLy8gYmUgaW52YWxpZGF0ZWQgYnkgbW9yZSBpbnB1dHNcbiAgICAgIHJldHVybiBoYXNoVHlwZSAmIFRyYW5zYWN0aW9uLlNJR0hBU0hfQU5ZT05FQ0FOUEFZXG4gICAgfSlcbiAgfSlcbn1cblxuVHJhbnNhY3Rpb25CdWlsZGVyLnByb3RvdHlwZS5fX2Nhbk1vZGlmeU91dHB1dHMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBuSW5wdXRzID0gdGhpcy50eC5pbnMubGVuZ3RoXG4gIHZhciBuT3V0cHV0cyA9IHRoaXMudHgub3V0cy5sZW5ndGhcblxuICByZXR1cm4gdGhpcy5pbnB1dHMuZXZlcnkoZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgaWYgKGlucHV0LnNpZ25hdHVyZXMgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHRydWVcblxuICAgIHJldHVybiBpbnB1dC5zaWduYXR1cmVzLmV2ZXJ5KGZ1bmN0aW9uIChzaWduYXR1cmUpIHtcbiAgICAgIGlmICghc2lnbmF0dXJlKSByZXR1cm4gdHJ1ZVxuICAgICAgdmFyIGhhc2hUeXBlID0gc2lnbmF0dXJlSGFzaFR5cGUoc2lnbmF0dXJlKVxuXG4gICAgICB2YXIgaGFzaFR5cGVNb2QgPSBoYXNoVHlwZSAmIDB4MWZcbiAgICAgIGlmIChoYXNoVHlwZU1vZCA9PT0gVHJhbnNhY3Rpb24uU0lHSEFTSF9OT05FKSByZXR1cm4gdHJ1ZVxuICAgICAgaWYgKGhhc2hUeXBlTW9kID09PSBUcmFuc2FjdGlvbi5TSUdIQVNIX1NJTkdMRSkge1xuICAgICAgICAvLyBpZiBTSUdIQVNIX1NJTkdMRSBpcyBzZXQsIGFuZCBuSW5wdXRzID4gbk91dHB1dHNcbiAgICAgICAgLy8gc29tZSBzaWduYXR1cmVzIHdvdWxkIGJlIGludmFsaWRhdGVkIGJ5IHRoZSBhZGRpdGlvblxuICAgICAgICAvLyBvZiBtb3JlIG91dHB1dHNcbiAgICAgICAgcmV0dXJuIG5JbnB1dHMgPD0gbk91dHB1dHNcbiAgICAgIH1cbiAgICB9KVxuICB9KVxufVxuXG5UcmFuc2FjdGlvbkJ1aWxkZXIucHJvdG90eXBlLl9fb3Zlck1heGltdW1GZWVzID0gZnVuY3Rpb24gKGJ5dGVzKSB7XG4gIC8vIG5vdCBhbGwgaW5wdXRzIHdpbGwgaGF2ZSAudmFsdWUgZGVmaW5lZFxuICB2YXIgaW5jb21pbmcgPSB0aGlzLmlucHV0cy5yZWR1Y2UoZnVuY3Rpb24gKGEsIHgpIHsgcmV0dXJuIGEgKyAoeC52YWx1ZSA+Pj4gMCkgfSwgMClcblxuICAvLyBidXQgYWxsIG91dHB1dHMgZG8sIGFuZCBpZiB3ZSBoYXZlIGFueSBpbnB1dCB2YWx1ZVxuICAvLyB3ZSBjYW4gaW1tZWRpYXRlbHkgZGV0ZXJtaW5lIGlmIHRoZSBvdXRwdXRzIGFyZSB0b28gc21hbGxcbiAgdmFyIG91dGdvaW5nID0gdGhpcy50eC5vdXRzLnJlZHVjZShmdW5jdGlvbiAoYSwgeCkgeyByZXR1cm4gYSArIHgudmFsdWUgfSwgMClcbiAgdmFyIGZlZSA9IGluY29taW5nIC0gb3V0Z29pbmdcbiAgdmFyIGZlZVJhdGUgPSBmZWUgLyBieXRlc1xuXG4gIHJldHVybiBmZWVSYXRlID4gdGhpcy5tYXhpbXVtRmVlUmF0ZVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zYWN0aW9uQnVpbGRlclxuIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmV4cG9ydHMuc2lnblR4ID0gc2lnblR4O1xuXG52YXIgX3RyZXpvcnR5cGVzID0gcmVxdWlyZSgnLi4vdHJlem9ydHlwZXMnKTtcblxudmFyIHRyZXpvciA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF90cmV6b3J0eXBlcyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbmZ1bmN0aW9uIGluZGV4VHhzRm9yU2lnbih0eHMpIHtcbiAgICB2YXIgaW5kZXggPSB7fTtcbiAgICB0eHMuZm9yRWFjaChmdW5jdGlvbiAodHgpIHtcbiAgICAgICAgaW5kZXhbdHguaGFzaC50b0xvd2VyQ2FzZSgpXSA9IHR4O1xuICAgIH0pO1xuICAgIHJldHVybiBpbmRleDtcbn1cblxuLy8gcmVxdWVzdHMgaW5mb3JtYXRpb24gYWJvdXQgYSB0cmFuc2FjdGlvblxuLy8gY2FuIGJlIGVpdGhlciBzaWduZWQgdHJhbnNhY3Rpb24gaXRlc2xmIG9mIHByZXYgdHJhbnNhY3Rpb25cbmZ1bmN0aW9uIHJlcXVlc3RUeEluZm8obSwgaW5kZXgsIGlucHV0cywgb3V0cHV0cykge1xuICAgIHZhciBtZCA9IG0uZGV0YWlscztcbiAgICB2YXIgaGFzaCA9IG1kLnR4X2hhc2g7XG4gICAgaWYgKGhhc2gpIHtcbiAgICAgICAgdmFyIHJlcVR4ID0gaW5kZXhbaGFzaC50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgaWYgKCFyZXFUeCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1ZXN0ZWQgdW5rbm93biB0eDogJyArIGhhc2gpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXF1ZXN0UHJldlR4SW5mbyhyZXFUeCwgbS5yZXF1ZXN0X3R5cGUsIG1kLnJlcXVlc3RfaW5kZXgsIG1kLmV4dHJhX2RhdGFfbGVuLCBtZC5leHRyYV9kYXRhX29mZnNldCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHJlcXVlc3RTaWduZWRUeEluZm8oaW5wdXRzLCBvdXRwdXRzLCBtLnJlcXVlc3RfdHlwZSwgbWQucmVxdWVzdF9pbmRleCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0UHJldlR4SW5mbyhyZXFUeCwgcmVxdWVzdFR5cGUsIHJlcXVlc3RJbmRleCwgZGF0YUxlbiwgZGF0YU9mZnNldCkge1xuICAgIHZhciBpID0gK3JlcXVlc3RJbmRleDtcbiAgICBpZiAocmVxdWVzdFR5cGUgPT09ICdUWElOUFVUJykge1xuICAgICAgICByZXR1cm4geyBpbnB1dHM6IFtyZXFUeC5pbnB1dHNbaV1dIH07XG4gICAgfVxuICAgIGlmIChyZXF1ZXN0VHlwZSA9PT0gJ1RYT1VUUFVUJykge1xuICAgICAgICByZXR1cm4geyBiaW5fb3V0cHV0czogW3JlcVR4LmJpbl9vdXRwdXRzW2ldXSB9O1xuICAgIH1cbiAgICBpZiAocmVxdWVzdFR5cGUgPT09ICdUWEVYVFJBREFUQScpIHtcbiAgICAgICAgaWYgKGRhdGFMZW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGV4dHJhX2RhdGFfbGVuJyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRhdGFMZW5OID0gK2RhdGFMZW47XG5cbiAgICAgICAgaWYgKGRhdGFPZmZzZXQgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGV4dHJhX2RhdGFfb2Zmc2V0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGRhdGFPZmZzZXROID0gK2RhdGFPZmZzZXQ7XG5cbiAgICAgICAgaWYgKHJlcVR4LmV4dHJhX2RhdGEgPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyBleHRyYSBkYXRhIGZvciB0cmFuc2FjdGlvbiAnICsgcmVxVHguaGFzaCk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgZGF0YSA9IHJlcVR4LmV4dHJhX2RhdGE7XG4gICAgICAgIHZhciBzdWJzdHJpbmcgPSBkYXRhLnN1YnN0cmluZyhkYXRhT2Zmc2V0TiAqIDIsIChkYXRhT2Zmc2V0TiArIGRhdGFMZW5OKSAqIDIpO1xuICAgICAgICByZXR1cm4geyBleHRyYV9kYXRhOiBzdWJzdHJpbmcgfTtcbiAgICB9XG4gICAgaWYgKHJlcXVlc3RUeXBlID09PSAnVFhNRVRBJykge1xuICAgICAgICB2YXIgb3V0cHV0Q291bnQgPSByZXFUeC5iaW5fb3V0cHV0cy5sZW5ndGg7XG4gICAgICAgIHZhciBfZGF0YSA9IHJlcVR4LmV4dHJhX2RhdGE7XG4gICAgICAgIGlmIChfZGF0YSAhPSBudWxsICYmIF9kYXRhLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdmFyIGRhdGFfID0gX2RhdGE7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZlcnNpb246IHJlcVR4LnZlcnNpb24sXG4gICAgICAgICAgICAgICAgbG9ja190aW1lOiByZXFUeC5sb2NrX3RpbWUsXG4gICAgICAgICAgICAgICAgaW5wdXRzX2NudDogcmVxVHguaW5wdXRzLmxlbmd0aCxcbiAgICAgICAgICAgICAgICBvdXRwdXRzX2NudDogb3V0cHV0Q291bnQsXG4gICAgICAgICAgICAgICAgZXh0cmFfZGF0YV9sZW46IGRhdGFfLmxlbmd0aCAvIDIsXG4gICAgICAgICAgICAgICAgdmVyc2lvbl9ncm91cF9pZDogcmVxVHgudmVyc2lvbl9ncm91cF9pZFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdmVyc2lvbjogcmVxVHgudmVyc2lvbixcbiAgICAgICAgICAgICAgICBsb2NrX3RpbWU6IHJlcVR4LmxvY2tfdGltZSxcbiAgICAgICAgICAgICAgICBpbnB1dHNfY250OiByZXFUeC5pbnB1dHMubGVuZ3RoLFxuICAgICAgICAgICAgICAgIG91dHB1dHNfY250OiBvdXRwdXRDb3VudCxcbiAgICAgICAgICAgICAgICB2ZXJzaW9uX2dyb3VwX2lkOiByZXFUeC52ZXJzaW9uX2dyb3VwX2lkXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biByZXF1ZXN0IHR5cGU6ICcgKyByZXF1ZXN0VHlwZSk7XG59XG5cbmZ1bmN0aW9uIHJlcXVlc3RTaWduZWRUeEluZm8oaW5wdXRzLCBvdXRwdXRzLCByZXF1ZXN0VHlwZSwgcmVxdWVzdEluZGV4KSB7XG4gICAgdmFyIGkgPSArcmVxdWVzdEluZGV4O1xuICAgIGlmIChyZXF1ZXN0VHlwZSA9PT0gJ1RYSU5QVVQnKSB7XG4gICAgICAgIHJldHVybiB7IGlucHV0czogW2lucHV0c1tpXV0gfTtcbiAgICB9XG4gICAgaWYgKHJlcXVlc3RUeXBlID09PSAnVFhPVVRQVVQnKSB7XG4gICAgICAgIHJldHVybiB7IG91dHB1dHM6IFtvdXRwdXRzW2ldXSB9O1xuICAgIH1cbiAgICBpZiAocmVxdWVzdFR5cGUgPT09ICdUWE1FVEEnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHJlYWQgVFhNRVRBIGZyb20gc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGlmIChyZXF1ZXN0VHlwZSA9PT0gJ1RYRVhUUkFEQVRBJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCByZWFkIFRYRVhUUkFEQVRBIGZyb20gc2lnbmVkIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biByZXF1ZXN0IHR5cGU6ICcgKyByZXF1ZXN0VHlwZSk7XG59XG5cbmZ1bmN0aW9uIHNhdmVUeFNpZ25hdHVyZXMobXMsIHNlcmlhbGl6ZWRUeCwgc2lnbmF0dXJlcykge1xuICAgIGlmIChtcykge1xuICAgICAgICB2YXIgX3NpZ25hdHVyZUluZGV4ID0gbXMuc2lnbmF0dXJlX2luZGV4O1xuICAgICAgICB2YXIgX3NpZ25hdHVyZSA9IG1zLnNpZ25hdHVyZTtcbiAgICAgICAgdmFyIF9zZXJpYWxpemVkVHggPSBtcy5zZXJpYWxpemVkX3R4O1xuICAgICAgICBpZiAoX3NlcmlhbGl6ZWRUeCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzZXJpYWxpemVkVHguc2VyaWFsaXplZCArPSBfc2VyaWFsaXplZFR4O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfc2lnbmF0dXJlSW5kZXggIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKF9zaWduYXR1cmUgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCBudWxsIGluIHRyZXpvci5UeFJlcXVlc3RTZXJpYWxpemVkIHNpZ25hdHVyZS4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNpZ25hdHVyZXNbX3NpZ25hdHVyZUluZGV4XSA9IF9zaWduYXR1cmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NUeFJlcXVlc3Qoc2Vzc2lvbiwgbSwgc2VyaWFsaXplZFR4LCBzaWduYXR1cmVzLCBpbmRleCwgaW5zLCBvdXRzKSB7XG4gICAgc2F2ZVR4U2lnbmF0dXJlcyhtLnNlcmlhbGl6ZWQsIHNlcmlhbGl6ZWRUeCwgc2lnbmF0dXJlcyk7XG5cbiAgICBpZiAobS5yZXF1ZXN0X3R5cGUgPT09ICdUWEZJTklTSEVEJykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIG1lc3NhZ2U6IHtcbiAgICAgICAgICAgICAgICBzZXJpYWxpemVkOiB7XG4gICAgICAgICAgICAgICAgICAgIHNpZ25hdHVyZXM6IHNpZ25hdHVyZXMsXG4gICAgICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWRfdHg6IHNlcmlhbGl6ZWRUeC5zZXJpYWxpemVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHR5cGU6ICd0cmV6b3IuU2lnbmVkVHgnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHZhciByZXNUeCA9IHJlcXVlc3RUeEluZm8obSwgaW5kZXgsIGlucywgb3V0cyk7XG5cbiAgICByZXR1cm4gc2Vzc2lvbi50eXBlZENhbGwoJ1R4QWNrJywgJ1R4UmVxdWVzdCcsIHsgdHg6IHJlc1R4IH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiBwcm9jZXNzVHhSZXF1ZXN0KHNlc3Npb24sIHJlc3BvbnNlLm1lc3NhZ2UsIHNlcmlhbGl6ZWRUeCwgc2lnbmF0dXJlcywgaW5kZXgsIGlucywgb3V0cyk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHNpZ25UeChzZXNzaW9uLCBpbnB1dHMsIG91dHB1dHMsIHR4cywgY29pbiwgbG9ja3RpbWUsIG92ZXJ3aW50ZXJlZCkge1xuICAgIHZhciBpbmRleCA9IGluZGV4VHhzRm9yU2lnbih0eHMpO1xuICAgIHZhciBzaWduYXR1cmVzID0gW107XG4gICAgdmFyIHNlcmlhbGl6ZWRUeCA9IHsgc2VyaWFsaXplZDogJycgfTtcblxuICAgIHZhciBjb2luTmFtZSA9IHR5cGVvZiBjb2luID09PSAnc3RyaW5nJyA/IGNvaW4gOiBjb2luLmNvaW5fbmFtZTtcbiAgICB2YXIgY29pbk5hbWVDYXBpdGFsaXplZCA9IGNvaW5OYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgY29pbk5hbWUuc2xpY2UoMSk7XG5cbiAgICB2YXIgdHhEZXNjID0ge1xuICAgICAgICBpbnB1dHNfY291bnQ6IGlucHV0cy5sZW5ndGgsXG4gICAgICAgIG91dHB1dHNfY291bnQ6IG91dHB1dHMubGVuZ3RoLFxuICAgICAgICBjb2luX25hbWU6IGNvaW5OYW1lQ2FwaXRhbGl6ZWQsXG4gICAgICAgIGxvY2tfdGltZTogbG9ja3RpbWVcbiAgICB9O1xuXG4gICAgLy8gdGhpcyBpcyBkb25lIGxpa2UgdGhhdCwgc28gb2xkIGRldmljZXMgd29yayBvbiBub24temNhc2ggdHhzXG4gICAgaWYgKG92ZXJ3aW50ZXJlZCkge1xuICAgICAgICB0eERlc2MgPSBfZXh0ZW5kcyh7fSwgdHhEZXNjLCB7IG92ZXJ3aW50ZXJlZDogdHJ1ZSwgdmVyc2lvbjogNCwgdmVyc2lvbl9ncm91cF9pZDogMHg4OTJmMjA4NSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gc2Vzc2lvbi50eXBlZENhbGwoJ1NpZ25UeCcsICdUeFJlcXVlc3QnLCB0eERlc2MpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc1R4UmVxdWVzdChzZXNzaW9uLCByZXMubWVzc2FnZSwgc2VyaWFsaXplZFR4LCBzaWduYXR1cmVzLCBpbmRleCwgaW5wdXRzLCBvdXRwdXRzKTtcbiAgICB9KTtcbn0iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuc2lnbkJqc1R4ID0gc2lnbkJqc1R4O1xuXG52YXIgX2JjaGFkZHJqcyA9IHJlcXVpcmUoJ2JjaGFkZHJqcycpO1xuXG52YXIgX2JjaGFkZHJqczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9iY2hhZGRyanMpO1xuXG52YXIgX2JpdGNvaW5qc0xpYlpjYXNoID0gcmVxdWlyZSgnYml0Y29pbmpzLWxpYi16Y2FzaCcpO1xuXG52YXIgYml0Y29pbiA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9iaXRjb2luanNMaWJaY2FzaCk7XG5cbnZhciBfdHJlem9ydHlwZXMgPSByZXF1aXJlKCcuLi90cmV6b3J0eXBlcycpO1xuXG52YXIgdHJlem9yID0gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQoX3RyZXpvcnR5cGVzKTtcblxudmFyIF9oZG5vZGUgPSByZXF1aXJlKCcuL2hkbm9kZScpO1xuXG52YXIgaGRub2RlVXRpbHMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGRub2RlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChvYmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBvYmpba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuLy8gVE9ETyByZWZhY3RvciB0aGlzIHVzaW5nIHN0cmluZyB0eXBlc1xuZnVuY3Rpb24gaW5wdXQydHJlem9yKGlucHV0LCBzZXF1ZW5jZSkge1xuICAgIHZhciBoYXNoID0gaW5wdXQuaGFzaCxcbiAgICAgICAgaW5kZXggPSBpbnB1dC5pbmRleCxcbiAgICAgICAgcGF0aCA9IGlucHV0LnBhdGgsXG4gICAgICAgIGFtb3VudCA9IGlucHV0LmFtb3VudDtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHByZXZfaW5kZXg6IGluZGV4LFxuICAgICAgICBwcmV2X2hhc2g6IHJldmVyc2VCdWZmZXIoaGFzaCkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICBhZGRyZXNzX246IHBhdGgsXG4gICAgICAgIHNjcmlwdF90eXBlOiBpbnB1dC5zZWd3aXQgPyAnU1BFTkRQMlNIV0lUTkVTUycgOiAnU1BFTkRBRERSRVNTJyxcbiAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIHNlcXVlbmNlOiBzZXF1ZW5jZVxuICAgIH07XG59XG5cbmZ1bmN0aW9uIF9mbG93X21ha2VBcnJheShhKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGEpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQm90aCBhZGRyZXNzIGFuZCBwYXRoIG9mIGFuIG91dHB1dCBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICB9XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGEuZm9yRWFjaChmdW5jdGlvbiAoaykge1xuICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICByZXMucHVzaChrKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIG91dHB1dDJ0cmV6b3Iob3V0cHV0LCBuZXR3b3JrLCBpc0Nhc2hhZGRyZXNzKSB7XG4gICAgaWYgKG91dHB1dC5hZGRyZXNzID09IG51bGwpIHtcbiAgICAgICAgaWYgKG91dHB1dC5vcFJldHVybkRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgaWYgKG91dHB1dC52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyB0eXBlLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyAkRmxvd0lzc3VlXG4gICAgICAgICAgICB2YXIgZGF0YSA9IG91dHB1dC5vcFJldHVybkRhdGE7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFtb3VudDogMCxcbiAgICAgICAgICAgICAgICBvcF9yZXR1cm5fZGF0YTogZGF0YS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgICAgICAgc2NyaXB0X3R5cGU6ICdQQVlUT09QUkVUVVJOJ1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3V0cHV0LnBhdGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQm90aCBhZGRyZXNzIGFuZCBwYXRoIG9mIGFuIG91dHB1dCBjYW5ub3QgYmUgbnVsbC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBwYXRoQXJyID0gX2Zsb3dfbWFrZUFycmF5KG91dHB1dC5wYXRoKTtcblxuICAgICAgICAvLyAkRmxvd0lzc3VlXG4gICAgICAgIHZhciBfYW1vdW50ID0gb3V0cHV0LnZhbHVlO1xuICAgICAgICBpZiAob3V0cHV0LnNlZ3dpdCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhZGRyZXNzX246IHBhdGhBcnIsXG4gICAgICAgICAgICAgICAgYW1vdW50OiBfYW1vdW50LFxuICAgICAgICAgICAgICAgIHNjcmlwdF90eXBlOiAnUEFZVE9QMlNIV0lUTkVTUydcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGFkZHJlc3NfbjogcGF0aEFycixcbiAgICAgICAgICAgICAgICBhbW91bnQ6IF9hbW91bnQsXG4gICAgICAgICAgICAgICAgc2NyaXB0X3R5cGU6ICdQQVlUT0FERFJFU1MnXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhciBhZGRyZXNzID0gb3V0cHV0LmFkZHJlc3M7XG4gICAgaWYgKHR5cGVvZiBhZGRyZXNzICE9PSAnc3RyaW5nJykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIHR5cGUuJyk7XG4gICAgfVxuXG4gICAgLy8gJEZsb3dJc3N1ZVxuICAgIHZhciBhbW91bnQgPSBvdXRwdXQudmFsdWU7XG5cbiAgICBpc1NjcmlwdEhhc2goYWRkcmVzcywgbmV0d29yaywgaXNDYXNoYWRkcmVzcyk7XG5cbiAgICAvLyBjYXNoYWRkciBoYWNrLCBpbnRlcm5hbGx5IHdlIHdvcmsgb25seSB3aXRoIGxlZ2FjeSBhZGRyZXNzZXMsIGJ1dCB3ZSBvdXRwdXQgY2FzaGFkZHJcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGRyZXNzOiBpc0Nhc2hhZGRyZXNzID8gX2JjaGFkZHJqczIuZGVmYXVsdC50b0Nhc2hBZGRyZXNzKGFkZHJlc3MpIDogYWRkcmVzcyxcbiAgICAgICAgYW1vdW50OiBhbW91bnQsXG4gICAgICAgIHNjcmlwdF90eXBlOiAnUEFZVE9BRERSRVNTJ1xuICAgIH07XG59XG5cbmZ1bmN0aW9uIHNpZ25lZFR4MmJqc1R4KHNpZ25lZFR4LCBuZXR3b3JrKSB7XG4gICAgdmFyIHJlcyA9IGJpdGNvaW4uVHJhbnNhY3Rpb24uZnJvbUhleChzaWduZWRUeC5tZXNzYWdlLnNlcmlhbGl6ZWQuc2VyaWFsaXplZF90eCwgbmV0d29yayk7XG4gICAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gYmpzVHgycmVmVHgodHgpIHtcbiAgICB2YXIgZXh0cmFEYXRhID0gdHguZ2V0RXh0cmFEYXRhKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbG9ja190aW1lOiB0eC5sb2NrdGltZSxcbiAgICAgICAgdmVyc2lvbjogdHguaXNEYXNoU3BlY2lhbFRyYW5zYWN0aW9uKCkgPyB0eC52ZXJzaW9uIHwgdHguZGFzaFR5cGUgPDwgMTYgOiB0eC52ZXJzaW9uLFxuICAgICAgICBoYXNoOiB0eC5nZXRJZCgpLFxuICAgICAgICBpbnB1dHM6IHR4Lmlucy5tYXAoZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHByZXZfaW5kZXg6IGlucHV0LmluZGV4LFxuICAgICAgICAgICAgICAgIHNlcXVlbmNlOiBpbnB1dC5zZXF1ZW5jZSxcbiAgICAgICAgICAgICAgICBwcmV2X2hhc2g6IHJldmVyc2VCdWZmZXIoaW5wdXQuaGFzaCkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICAgICAgICAgIHNjcmlwdF9zaWc6IGlucHV0LnNjcmlwdC50b1N0cmluZygnaGV4JylcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pLFxuICAgICAgICBiaW5fb3V0cHV0czogdHgub3V0cy5tYXAoZnVuY3Rpb24gKG91dHB1dCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBhbW91bnQ6IG91dHB1dC52YWx1ZSxcbiAgICAgICAgICAgICAgICBzY3JpcHRfcHVia2V5OiBvdXRwdXQuc2NyaXB0LnRvU3RyaW5nKCdoZXgnKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIGV4dHJhX2RhdGE6IGV4dHJhRGF0YSA/IGV4dHJhRGF0YS50b1N0cmluZygnaGV4JykgOiBudWxsLFxuICAgICAgICB2ZXJzaW9uX2dyb3VwX2lkOiB0eC5pc1pjYXNoVHJhbnNhY3Rpb24oKSA/IHBhcnNlSW50KHR4LnZlcnNpb25Hcm91cElkLCAxNikgOiBudWxsXG4gICAgfTtcbn1cblxuZnVuY3Rpb24gX2Zsb3dfZ2V0UGF0aE9yQWRkcmVzcyhvdXRwdXQpIHtcbiAgICBpZiAob3V0cHV0LnBhdGgpIHtcbiAgICAgICAgdmFyIF9wYXRoID0gb3V0cHV0LnBhdGg7XG4gICAgICAgIHJldHVybiBfZmxvd19tYWtlQXJyYXkoX3BhdGgpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIG91dHB1dC5hZGRyZXNzID09PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gb3V0cHV0LmFkZHJlc3M7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignV3Jvbmcgb3V0cHV0IHR5cGUuJyk7XG59XG5cbmZ1bmN0aW9uIF9mbG93X2dldFNlZ3dpdChvdXRwdXQpIHtcbiAgICBpZiAob3V0cHV0LnNlZ3dpdCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBkZXJpdmVXaXRuZXNzT3V0cHV0KHBraCkge1xuICAgIC8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXBzL2Jsb2IvbWFzdGVyL2JpcC0wMDQ5Lm1lZGlhd2lraVxuICAgIC8vIGFkZHJlc3MgZGVyaXZhdGlvbiArIHRlc3QgdmVjdG9yc1xuICAgIHZhciBzY3JpcHRTaWcgPSBuZXcgQnVmZmVyKHBraC5sZW5ndGggKyAyKTtcbiAgICBzY3JpcHRTaWdbMF0gPSAwO1xuICAgIHNjcmlwdFNpZ1sxXSA9IDB4MTQ7XG4gICAgcGtoLmNvcHkoc2NyaXB0U2lnLCAyKTtcbiAgICB2YXIgYWRkcmVzc0J5dGVzID0gYml0Y29pbi5jcnlwdG8uaGFzaDE2MChzY3JpcHRTaWcpO1xuICAgIHZhciBzY3JpcHRQdWJLZXkgPSBuZXcgQnVmZmVyKDIzKTtcbiAgICBzY3JpcHRQdWJLZXlbMF0gPSAweGE5O1xuICAgIHNjcmlwdFB1YktleVsxXSA9IDB4MTQ7XG4gICAgc2NyaXB0UHViS2V5WzIyXSA9IDB4ODc7XG4gICAgYWRkcmVzc0J5dGVzLmNvcHkoc2NyaXB0UHViS2V5LCAyKTtcbiAgICByZXR1cm4gc2NyaXB0UHViS2V5O1xufVxuXG5mdW5jdGlvbiBkZXJpdmVPdXRwdXRTY3JpcHQocGF0aE9yQWRkcmVzcywgbm9kZXMsIG5ldHdvcmssIHNlZ3dpdCkge1xuICAgIHZhciBzY3JpcHRUeXBlID0gdHlwZW9mIHBhdGhPckFkZHJlc3MgPT09ICdzdHJpbmcnID8gaXNTY3JpcHRIYXNoKHBhdGhPckFkZHJlc3MsIG5ldHdvcmspID8gJ1BBWVRPU0NSSVBUSEFTSCcgOiAnUEFZVE9BRERSRVNTJyA6IHNlZ3dpdCA/ICdQQVlUT1AyU0hXSVRORVNTJyA6ICdQQVlUT0FERFJFU1MnO1xuXG4gICAgaWYgKHR5cGVvZiBwYXRoT3JBZGRyZXNzID09PSAnc3RyaW5nJyAmJiBpc0JlY2gzMihwYXRoT3JBZGRyZXNzKSkge1xuICAgICAgICB2YXIgZGF0YSA9IGJpdGNvaW4uYWRkcmVzcy5mcm9tQmVjaDMyKHBhdGhPckFkZHJlc3MpLmRhdGE7XG4gICAgICAgIGlmIChzY3JpcHRUeXBlID09PSAnUEFZVE9BRERSRVNTJykge1xuICAgICAgICAgICAgcmV0dXJuIGJpdGNvaW4uc2NyaXB0LndpdG5lc3NQdWJLZXlIYXNoLm91dHB1dC5lbmNvZGUoZGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoc2NyaXB0VHlwZSA9PT0gJ1BBWVRPU0NSSVBUSEFTSCcpIHtcbiAgICAgICAgICAgIHJldHVybiBiaXRjb2luLnNjcmlwdC53aXRuZXNzU2NyaXB0SGFzaC5vdXRwdXQuZW5jb2RlKGRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIHNjcmlwdCB0eXBlICcgKyBzY3JpcHRUeXBlKTtcbiAgICB9XG5cbiAgICB2YXIgcGtoID0gdHlwZW9mIHBhdGhPckFkZHJlc3MgPT09ICdzdHJpbmcnID8gYml0Y29pbi5hZGRyZXNzLmZyb21CYXNlNThDaGVjayhwYXRoT3JBZGRyZXNzKS5oYXNoIDogaGRub2RlVXRpbHMuZGVyaXZlUHViS2V5SGFzaChub2RlcywgcGF0aE9yQWRkcmVzc1twYXRoT3JBZGRyZXNzLmxlbmd0aCAtIDJdLCBwYXRoT3JBZGRyZXNzW3BhdGhPckFkZHJlc3MubGVuZ3RoIC0gMV0pO1xuXG4gICAgaWYgKHNjcmlwdFR5cGUgPT09ICdQQVlUT0FERFJFU1MnKSB7XG4gICAgICAgIHJldHVybiBiaXRjb2luLnNjcmlwdC5wdWJLZXlIYXNoLm91dHB1dC5lbmNvZGUocGtoKTtcbiAgICB9XG5cbiAgICBpZiAoc2NyaXB0VHlwZSA9PT0gJ1BBWVRPU0NSSVBUSEFTSCcpIHtcbiAgICAgICAgcmV0dXJuIGJpdGNvaW4uc2NyaXB0LnNjcmlwdEhhc2gub3V0cHV0LmVuY29kZShwa2gpO1xuICAgIH1cblxuICAgIGlmIChzY3JpcHRUeXBlID09PSAnUEFZVE9QMlNIV0lUTkVTUycpIHtcbiAgICAgICAgcmV0dXJuIGRlcml2ZVdpdG5lc3NPdXRwdXQocGtoKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gc2NyaXB0IHR5cGUgJyArIHNjcmlwdFR5cGUpO1xufVxuXG5mdW5jdGlvbiB2ZXJpZnlCanNUeChpbnB1dHMsIG91dHB1dHMsIG5vZGVzLCByZXNUeCwgbmV0d29yaykge1xuICAgIGlmIChpbnB1dHMubGVuZ3RoICE9PSByZXNUeC5pbnMubGVuZ3RoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lnbmVkIHRyYW5zYWN0aW9uIGhhcyB3cm9uZyBsZW5ndGguJyk7XG4gICAgfVxuICAgIGlmIChvdXRwdXRzLmxlbmd0aCAhPT0gcmVzVHgub3V0cy5sZW5ndGgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWduZWQgdHJhbnNhY3Rpb24gaGFzIHdyb25nIGxlbmd0aC4nKTtcbiAgICB9XG5cbiAgICBvdXRwdXRzLm1hcChmdW5jdGlvbiAob3V0cHV0LCBpKSB7XG4gICAgICAgIHZhciBzY3JpcHRCID0gcmVzVHgub3V0c1tpXS5zY3JpcHQ7XG5cbiAgICAgICAgaWYgKG91dHB1dC5vcFJldHVybkRhdGEgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gJEZsb3dJc3N1ZVxuICAgICAgICAgICAgdmFyIHNjcmlwdEEgPSBiaXRjb2luLnNjcmlwdC5udWxsRGF0YS5vdXRwdXQuZW5jb2RlKG91dHB1dC5vcFJldHVybkRhdGEpO1xuICAgICAgICAgICAgaWYgKHNjcmlwdEEuY29tcGFyZShzY3JpcHRCKSAhPT0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2NyaXB0cyBkaWZmZXInKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChvdXRwdXQudmFsdWUgIT09IHJlc1R4Lm91dHNbaV0udmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpZ25lZCB0cmFuc2FjdGlvbiBoYXMgd3Jvbmcgb3V0cHV0IHZhbHVlLicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG91dHB1dC5hZGRyZXNzID09IG51bGwgJiYgb3V0cHV0LnBhdGggPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQm90aCBwYXRoIGFuZCBhZGRyZXNzIGNhbm5vdCBiZSBudWxsLicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgYWRkcmVzc09yUGF0aCA9IF9mbG93X2dldFBhdGhPckFkZHJlc3Mob3V0cHV0KTtcbiAgICAgICAgICAgIHZhciBfc2Vnd2l0ID0gX2Zsb3dfZ2V0U2Vnd2l0KG91dHB1dCk7XG4gICAgICAgICAgICB2YXIgX3NjcmlwdEEgPSBkZXJpdmVPdXRwdXRTY3JpcHQoYWRkcmVzc09yUGF0aCwgbm9kZXMsIG5ldHdvcmssIF9zZWd3aXQpO1xuICAgICAgICAgICAgaWYgKF9zY3JpcHRBLmNvbXBhcmUoc2NyaXB0QikgIT09IDApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NjcmlwdHMgZGlmZmVyJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gaXNCZWNoMzIoYWRkcmVzcykge1xuICAgIHRyeSB7XG4gICAgICAgIGJpdGNvaW4uYWRkcmVzcy5mcm9tQmVjaDMyKGFkZHJlc3MpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGlzU2NyaXB0SGFzaChhZGRyZXNzLCBuZXR3b3JrLCBpc0Nhc2hhZGRyZXNzKSB7XG4gICAgLy8gY2FzaGFkZHIgaGFja1xuICAgIC8vIENhc2hhZGRyIGZvcm1hdCAod2l0aCBwcmVmaXgpIGlzIG5laXRoZXIgYmFzZTU4IG5vciBiZWNoMzIsIHNvIGl0IHdvdWxkIGZhaWxcbiAgICAvLyBpbiBiaXRjb2luanMtbGliLXpjaGFzaC4gRm9yIHRoaXMgcmVhc29uLCB3ZSB1c2UgbGVnYWN5IGZvcm1hdCBoZXJlXG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKGlzQ2FzaGFkZHJlc3MpIHtcbiAgICAgICAgICAgIGFkZHJlc3MgPSBfYmNoYWRkcmpzMi5kZWZhdWx0LnRvTGVnYWN5QWRkcmVzcyhhZGRyZXNzKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlY2VpdmVkIGNhc2hhZGRyIGFkZHJlc3MgY291bGQgbm90IGJlIHRyYW5zbGF0ZWQgdG8gbGVnYWN5IGZvcm1hdCBmb3IgcHVycG9zZSBvZiBpbnRlcm5hbCBjaGVja3MnKTtcbiAgICB9XG4gICAgaWYgKCFpc0JlY2gzMihhZGRyZXNzKSkge1xuICAgICAgICB2YXIgZGVjb2RlZCA9IGJpdGNvaW4uYWRkcmVzcy5mcm9tQmFzZTU4Q2hlY2soYWRkcmVzcyk7XG4gICAgICAgIGlmIChkZWNvZGVkLnZlcnNpb24gPT09IG5ldHdvcmsucHViS2V5SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkZWNvZGVkLnZlcnNpb24gPT09IG5ldHdvcmsuc2NyaXB0SGFzaCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX2RlY29kZWQgPSBiaXRjb2luLmFkZHJlc3MuZnJvbUJlY2gzMihhZGRyZXNzKTtcbiAgICAgICAgaWYgKF9kZWNvZGVkLmRhdGEubGVuZ3RoID09PSAyMCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfZGVjb2RlZC5kYXRhLmxlbmd0aCA9PT0gMzIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBhZGRyZXNzIHR5cGUuJyk7XG59XG5cbmZ1bmN0aW9uIHNpZ25CanNUeChzZXNzaW9uLCBpbmZvLCByZWZUeHMsIG5vZGVzLCBjb2luTmFtZSwgbmV0d29ya18sIGxvY2t0aW1lLCBpc0Nhc2hhZGRyZXNzLCBvdmVyd2ludGVyZWQpIHtcbiAgICB2YXIgbmV0d29yayA9IG5ldHdvcmtfID09IG51bGwgPyBiaXRjb2luLm5ldHdvcmtzW2NvaW5OYW1lLnRvTG93ZXJDYXNlKCldIDogbmV0d29ya187XG4gICAgaWYgKG5ldHdvcmsgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdObyBuZXR3b3JrICcgKyBjb2luTmFtZSkpO1xuICAgIH1cblxuICAgIC8vIFRPRE8gcmJmXG4gICAgdmFyIHNlcXVlbmNlID0gbG9ja3RpbWUgPyAweGZmZmZmZmZmIC0gMSA6IDB4ZmZmZmZmZmY7XG5cbiAgICB2YXIgdHJlem9ySW5wdXRzID0gaW5mby5pbnB1dHMubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIHJldHVybiBpbnB1dDJ0cmV6b3IoaSwgc2VxdWVuY2UpO1xuICAgIH0pO1xuICAgIC8vIGluIGNhc2Ugb2YgYml0Y29pbiBjYXNoIHRyYW5zYWN0aW9uLCBpbiBvdXRwdXQydHJlem9yIGZ1bmN0aW9uIGFjdHVhbCBjb252ZXJzaW9uIGZyb20gbGVnYWN5XG4gICAgLy8gdG8gY2FzaGFkZHJlc3MgZm9ybWF0IHRha2VzIHBsYWNlXG4gICAgdmFyIHRyZXpvck91dHB1dHMgPSBpbmZvLm91dHB1dHMubWFwKGZ1bmN0aW9uIChvKSB7XG4gICAgICAgIHJldHVybiBvdXRwdXQydHJlem9yKG8sIG5ldHdvcmssIGlzQ2FzaGFkZHJlc3MpO1xuICAgIH0pO1xuICAgIHZhciB0cmV6b3JSZWZUeHMgPSByZWZUeHMubWFwKGZ1bmN0aW9uICh0eCkge1xuICAgICAgICByZXR1cm4gYmpzVHgycmVmVHgodHgpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHNlc3Npb24uc2lnblR4KHRyZXpvcklucHV0cywgdHJlem9yT3V0cHV0cywgdHJlem9yUmVmVHhzLCBjb2luTmFtZSwgbG9ja3RpbWUsIG92ZXJ3aW50ZXJlZCkudGhlbihmdW5jdGlvbiAodHgpIHtcbiAgICAgICAgcmV0dXJuIHNpZ25lZFR4MmJqc1R4KHR4LCBuZXR3b3JrKTtcbiAgICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgdmVyaWZ5QmpzVHgoaW5mby5pbnB1dHMsIGluZm8ub3V0cHV0cywgbm9kZXMsIHJlcywgbmV0d29yayk7XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VCdWZmZXIoYnVmKSB7XG4gICAgdmFyIGNvcHkgPSBuZXcgQnVmZmVyKGJ1Zi5sZW5ndGgpO1xuICAgIGJ1Zi5jb3B5KGNvcHkpO1xuICAgIFtdLnJldmVyc2UuY2FsbChjb3B5KTtcbiAgICByZXR1cm4gY29weTtcbn0iLCIvKioqXG4gKiBAbGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW5jYXNoanMvYmNoYWRkclxuICogQ29weXJpZ2h0IChjKSAyMDE4IEVtaWxpbyBBbG1hbnNpXG4gKiBEaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIHNvZnR3YXJlIGxpY2Vuc2UsIHNlZSB0aGUgYWNjb21wYW55aW5nXG4gKiBmaWxlIExJQ0VOU0Ugb3IgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAuXG4gKi9cblxudmFyIGJzNThjaGVjayA9IHJlcXVpcmUoJ2JzNThjaGVjaycpXG52YXIgY2FzaGFkZHIgPSByZXF1aXJlKCdjYXNoYWRkcmpzJylcblxuLyoqXG4gKiBHZW5lcmFsIHB1cnBvc2UgQml0Y29pbiBDYXNoIGFkZHJlc3MgZGV0ZWN0aW9uIGFuZCB0cmFuc2xhdGlvbi48YnIgLz5cbiAqIFN1cHBvcnRzIGFsbCBtYWpvciBCaXRjb2luIENhc2ggYWRkcmVzcyBmb3JtYXRzLjxiciAvPlxuICogQ3VycmVudGx5OlxuICogPHVsPlxuICogICAgPGxpPiBMZWdhY3kgZm9ybWF0IDwvbGk+XG4gKiAgICA8bGk+IEJpdHBheSBmb3JtYXQgPC9saT5cbiAqICAgIDxsaT4gQ2FzaGFkZHIgZm9ybWF0IDwvbGk+XG4gKiA8L3VsPlxuICogQG1vZHVsZSBiY2hhZGRyXG4gKi9cblxuLyoqXG4gKiBAc3RhdGljXG4gKiBTdXBwb3J0ZWQgQml0Y29pbiBDYXNoIGFkZHJlc3MgZm9ybWF0cy5cbiAqL1xudmFyIEZvcm1hdCA9IHt9XG5Gb3JtYXQuTGVnYWN5ID0gJ2xlZ2FjeSdcbkZvcm1hdC5CaXRwYXkgPSAnYml0cGF5J1xuRm9ybWF0LkNhc2hhZGRyID0gJ2Nhc2hhZGRyJ1xuXG4vKipcbiAqIEBzdGF0aWNcbiAqIFN1cHBvcnRlZCBuZXR3b3Jrcy5cbiAqL1xudmFyIE5ldHdvcmsgPSB7fVxuTmV0d29yay5NYWlubmV0ID0gJ21haW5uZXQnXG5OZXR3b3JrLlRlc3RuZXQgPSAndGVzdG5ldCdcblxuLyoqXG4gKiBAc3RhdGljXG4gKiBTdXBwb3J0ZWQgYWRkcmVzcyB0eXBlcy5cbiAqL1xudmFyIFR5cGUgPSB7fVxuVHlwZS5QMlBLSCA9ICdwMnBraCdcblR5cGUuUDJTSCA9ICdwMnNoJ1xuXG4vKipcbiAqIERldGVjdHMgd2hhdCBpcyB0aGUgZ2l2ZW4gYWRkcmVzcycgZm9ybWF0LlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBkZXRlY3RBZGRyZXNzRm9ybWF0IChhZGRyZXNzKSB7XG4gIHJldHVybiBkZWNvZGVBZGRyZXNzKGFkZHJlc3MpLmZvcm1hdFxufVxuXG4vKipcbiAqIERldGVjdHMgd2hhdCBpcyB0aGUgZ2l2ZW4gYWRkcmVzcycgbmV0d29yay5cbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybiB7c3RyaW5nfVxuICogQHRocm93cyB7SW52YWxpZEFkZHJlc3NFcnJvcn1cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0QWRkcmVzc05ldHdvcmsgKGFkZHJlc3MpIHtcbiAgcmV0dXJuIGRlY29kZUFkZHJlc3MoYWRkcmVzcykubmV0d29ya1xufVxuXG4vKipcbiAqIERldGVjdHMgd2hhdCBpcyB0aGUgZ2l2ZW4gYWRkcmVzcycgdHlwZS5cbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybiB7c3RyaW5nfVxuICogQHRocm93cyB7SW52YWxpZEFkZHJlc3NFcnJvcn1cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0QWRkcmVzc1R5cGUgKGFkZHJlc3MpIHtcbiAgcmV0dXJuIGRlY29kZUFkZHJlc3MoYWRkcmVzcykudHlwZVxufVxuXG4vKipcbiAqIFRyYW5zbGF0ZXMgdGhlIGdpdmVuIGFkZHJlc3MgaW50byBsZWdhY3kgZm9ybWF0LlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiB0b0xlZ2FjeUFkZHJlc3MgKGFkZHJlc3MpIHtcbiAgdmFyIGRlY29kZWQgPSBkZWNvZGVBZGRyZXNzKGFkZHJlc3MpXG4gIGlmIChkZWNvZGVkLmZvcm1hdCA9PT0gRm9ybWF0LkxlZ2FjeSkge1xuICAgIHJldHVybiBhZGRyZXNzXG4gIH1cbiAgcmV0dXJuIGVuY29kZUFzTGVnYWN5KGRlY29kZWQpXG59XG5cbi8qKlxuICogVHJhbnNsYXRlcyB0aGUgZ2l2ZW4gYWRkcmVzcyBpbnRvIGJpdHBheSBmb3JtYXQuXG4gKiBAc3RhdGljXG4gKiBAcGFyYW0ge3N0cmluZ30gYWRkcmVzcyAtIEEgdmFsaWQgQml0Y29pbiBDYXNoIGFkZHJlc3MgaW4gYW55IGZvcm1hdC5cbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIHRvQml0cGF5QWRkcmVzcyAoYWRkcmVzcykge1xuICB2YXIgZGVjb2RlZCA9IGRlY29kZUFkZHJlc3MoYWRkcmVzcylcbiAgaWYgKGRlY29kZWQuZm9ybWF0ID09PSBGb3JtYXQuQml0cGF5KSB7XG4gICAgcmV0dXJuIGFkZHJlc3NcbiAgfVxuICByZXR1cm4gZW5jb2RlQXNCaXRwYXkoZGVjb2RlZClcbn1cblxuLyoqXG4gKiBUcmFuc2xhdGVzIHRoZSBnaXZlbiBhZGRyZXNzIGludG8gY2FzaGFkZHIgZm9ybWF0LlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiB0b0Nhc2hBZGRyZXNzIChhZGRyZXNzKSB7XG4gIHZhciBkZWNvZGVkID0gZGVjb2RlQWRkcmVzcyhhZGRyZXNzKVxuICByZXR1cm4gZW5jb2RlQXNDYXNoYWRkcihkZWNvZGVkKVxufVxuXG4vKipcbiAqIFZlcnNpb24gYnl0ZSB0YWJsZSBmb3IgYmFzZTU4IGZvcm1hdHMuXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgVkVSU0lPTl9CWVRFID0ge31cblZFUlNJT05fQllURVtGb3JtYXQuTGVnYWN5XSA9IHt9XG5WRVJTSU9OX0JZVEVbRm9ybWF0LkxlZ2FjeV1bTmV0d29yay5NYWlubmV0XSA9IHt9XG5WRVJTSU9OX0JZVEVbRm9ybWF0LkxlZ2FjeV1bTmV0d29yay5NYWlubmV0XVtUeXBlLlAyUEtIXSA9IDBcblZFUlNJT05fQllURVtGb3JtYXQuTGVnYWN5XVtOZXR3b3JrLk1haW5uZXRdW1R5cGUuUDJTSF0gPSA1XG5WRVJTSU9OX0JZVEVbRm9ybWF0LkxlZ2FjeV1bTmV0d29yay5UZXN0bmV0XSA9IHt9XG5WRVJTSU9OX0JZVEVbRm9ybWF0LkxlZ2FjeV1bTmV0d29yay5UZXN0bmV0XVtUeXBlLlAyUEtIXSA9IDExMVxuVkVSU0lPTl9CWVRFW0Zvcm1hdC5MZWdhY3ldW05ldHdvcmsuVGVzdG5ldF1bVHlwZS5QMlNIXSA9IDE5NlxuVkVSU0lPTl9CWVRFW0Zvcm1hdC5CaXRwYXldID0ge31cblZFUlNJT05fQllURVtGb3JtYXQuQml0cGF5XVtOZXR3b3JrLk1haW5uZXRdID0ge31cblZFUlNJT05fQllURVtGb3JtYXQuQml0cGF5XVtOZXR3b3JrLk1haW5uZXRdW1R5cGUuUDJQS0hdID0gMjhcblZFUlNJT05fQllURVtGb3JtYXQuQml0cGF5XVtOZXR3b3JrLk1haW5uZXRdW1R5cGUuUDJTSF0gPSA0MFxuVkVSU0lPTl9CWVRFW0Zvcm1hdC5CaXRwYXldW05ldHdvcmsuVGVzdG5ldF0gPSB7fVxuVkVSU0lPTl9CWVRFW0Zvcm1hdC5CaXRwYXldW05ldHdvcmsuVGVzdG5ldF1bVHlwZS5QMlBLSF0gPSAxMTFcblZFUlNJT05fQllURVtGb3JtYXQuQml0cGF5XVtOZXR3b3JrLlRlc3RuZXRdW1R5cGUuUDJTSF0gPSAxOTZcblxuLyoqXG4gKiBEZWNvZGVzIHRoZSBnaXZlbiBhZGRyZXNzIGludG8gaXRzIGNvbnN0aXR1dGluZyBoYXNoLCBmb3JtYXQsIG5ldHdvcmsgYW5kIHR5cGUuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBkZWNvZGVBZGRyZXNzIChhZGRyZXNzKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGRlY29kZUJhc2U1OEFkZHJlc3MoYWRkcmVzcylcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBkZWNvZGVDYXNoQWRkcmVzcyhhZGRyZXNzKVxuICB9IGNhdGNoIChlcnJvcikge1xuICB9XG4gIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKClcbn1cblxuLyoqXG4gKiBMZW5ndGggb2YgYSB2YWxpZCBiYXNlNThjaGVjayBlbmNvZGluZyBwYXlsb2FkOiAxIGJ5dGUgZm9yXG4gKiB0aGUgdmVyc2lvbiBieXRlIHBsdXMgMjAgYnl0ZXMgZm9yIGEgUklQRU1ELTE2MCBoYXNoLlxuICogQHByaXZhdGVcbiAqL1xudmFyIEJBU0VfNThfQ0hFQ0tfUEFZTE9BRF9MRU5HVEggPSAyMVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGRlY29kZSB0aGUgZ2l2ZW4gYWRkcmVzcyBhc3N1bWluZyBpdCBpcyBhIGJhc2U1OCBhZGRyZXNzLlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybiB7b2JqZWN0fVxuICogQHRocm93cyB7SW52YWxpZEFkZHJlc3NFcnJvcn1cbiAqL1xuZnVuY3Rpb24gZGVjb2RlQmFzZTU4QWRkcmVzcyAoYWRkcmVzcykge1xuICB0cnkge1xuICAgIHZhciBwYXlsb2FkID0gYnM1OGNoZWNrLmRlY29kZShhZGRyZXNzKVxuICAgIGlmIChwYXlsb2FkLmxlbmd0aCAhPT0gQkFTRV81OF9DSEVDS19QQVlMT0FEX0xFTkdUSCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoKVxuICAgIH1cbiAgICB2YXIgdmVyc2lvbkJ5dGUgPSBwYXlsb2FkWzBdXG4gICAgdmFyIGhhc2ggPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChwYXlsb2FkLCAxKVxuICAgIHN3aXRjaCAodmVyc2lvbkJ5dGUpIHtcbiAgICAgIGNhc2UgVkVSU0lPTl9CWVRFW0Zvcm1hdC5MZWdhY3ldW05ldHdvcmsuTWFpbm5ldF1bVHlwZS5QMlBLSF06XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGFzaDogaGFzaCxcbiAgICAgICAgICBmb3JtYXQ6IEZvcm1hdC5MZWdhY3ksXG4gICAgICAgICAgbmV0d29yazogTmV0d29yay5NYWlubmV0LFxuICAgICAgICAgIHR5cGU6IFR5cGUuUDJQS0hcbiAgICAgICAgfVxuICAgICAgY2FzZSBWRVJTSU9OX0JZVEVbRm9ybWF0LkxlZ2FjeV1bTmV0d29yay5NYWlubmV0XVtUeXBlLlAyU0hdOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhhc2g6IGhhc2gsXG4gICAgICAgICAgZm9ybWF0OiBGb3JtYXQuTGVnYWN5LFxuICAgICAgICAgIG5ldHdvcms6IE5ldHdvcmsuTWFpbm5ldCxcbiAgICAgICAgICB0eXBlOiBUeXBlLlAyU0hcbiAgICAgICAgfVxuICAgICAgY2FzZSBWRVJTSU9OX0JZVEVbRm9ybWF0LkxlZ2FjeV1bTmV0d29yay5UZXN0bmV0XVtUeXBlLlAyUEtIXTpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIGZvcm1hdDogRm9ybWF0LkxlZ2FjeSxcbiAgICAgICAgICBuZXR3b3JrOiBOZXR3b3JrLlRlc3RuZXQsXG4gICAgICAgICAgdHlwZTogVHlwZS5QMlBLSFxuICAgICAgICB9XG4gICAgICBjYXNlIFZFUlNJT05fQllURVtGb3JtYXQuTGVnYWN5XVtOZXR3b3JrLlRlc3RuZXRdW1R5cGUuUDJTSF06XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGFzaDogaGFzaCxcbiAgICAgICAgICBmb3JtYXQ6IEZvcm1hdC5MZWdhY3ksXG4gICAgICAgICAgbmV0d29yazogTmV0d29yay5UZXN0bmV0LFxuICAgICAgICAgIHR5cGU6IFR5cGUuUDJTSFxuICAgICAgICB9XG4gICAgICBjYXNlIFZFUlNJT05fQllURVtGb3JtYXQuQml0cGF5XVtOZXR3b3JrLk1haW5uZXRdW1R5cGUuUDJQS0hdOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhhc2g6IGhhc2gsXG4gICAgICAgICAgZm9ybWF0OiBGb3JtYXQuQml0cGF5LFxuICAgICAgICAgIG5ldHdvcms6IE5ldHdvcmsuTWFpbm5ldCxcbiAgICAgICAgICB0eXBlOiBUeXBlLlAyUEtIXG4gICAgICAgIH1cbiAgICAgIGNhc2UgVkVSU0lPTl9CWVRFW0Zvcm1hdC5CaXRwYXldW05ldHdvcmsuTWFpbm5ldF1bVHlwZS5QMlNIXTpcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBoYXNoOiBoYXNoLFxuICAgICAgICAgIGZvcm1hdDogRm9ybWF0LkJpdHBheSxcbiAgICAgICAgICBuZXR3b3JrOiBOZXR3b3JrLk1haW5uZXQsXG4gICAgICAgICAgdHlwZTogVHlwZS5QMlNIXG4gICAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gIH1cbiAgdGhyb3cgbmV3IEludmFsaWRBZGRyZXNzRXJyb3IoKVxufVxuXG4vKipcbiAqIEF0dGVtcHRzIHRvIGRlY29kZSB0aGUgZ2l2ZW4gYWRkcmVzcyBhc3N1bWluZyBpdCBpcyBhIGNhc2hhZGRyIGFkZHJlc3MuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBkZWNvZGVDYXNoQWRkcmVzcyAoYWRkcmVzcykge1xuICBpZiAoYWRkcmVzcy5pbmRleE9mKCc6JykgIT09IC0xKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBkZWNvZGVDYXNoQWRkcmVzc1dpdGhQcmVmaXgoYWRkcmVzcylcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgcHJlZml4ZXMgPSBbJ2JpdGNvaW5jYXNoJywgJ2JjaHRlc3QnLCAncmVndGVzdCddXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcmVmaXhlcy5sZW5ndGg7ICsraSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmFyIHByZWZpeCA9IHByZWZpeGVzW2ldXG4gICAgICAgIHJldHVybiBkZWNvZGVDYXNoQWRkcmVzc1dpdGhQcmVmaXgocHJlZml4ICsgJzonICsgYWRkcmVzcylcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBJbnZhbGlkQWRkcmVzc0Vycm9yKClcbn1cblxuLyoqXG4gKiBBdHRlbXB0cyB0byBkZWNvZGUgdGhlIGdpdmVuIGFkZHJlc3MgYXNzdW1pbmcgaXQgaXMgYSBjYXNoYWRkciBhZGRyZXNzIHdpdGggZXhwbGljaXQgcHJlZml4LlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybiB7b2JqZWN0fVxuICogQHRocm93cyB7SW52YWxpZEFkZHJlc3NFcnJvcn1cbiAqL1xuZnVuY3Rpb24gZGVjb2RlQ2FzaEFkZHJlc3NXaXRoUHJlZml4IChhZGRyZXNzKSB7XG4gIHRyeSB7XG4gICAgdmFyIGRlY29kZWQgPSBjYXNoYWRkci5kZWNvZGUoYWRkcmVzcylcbiAgICB2YXIgaGFzaCA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGRlY29kZWQuaGFzaCwgMClcbiAgICB2YXIgdHlwZSA9IGRlY29kZWQudHlwZSA9PT0gJ1AyUEtIJyA/IFR5cGUuUDJQS0ggOiBUeXBlLlAyU0hcbiAgICBzd2l0Y2ggKGRlY29kZWQucHJlZml4KSB7XG4gICAgICBjYXNlICdiaXRjb2luY2FzaCc6XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaGFzaDogaGFzaCxcbiAgICAgICAgICBmb3JtYXQ6IEZvcm1hdC5DYXNoYWRkcixcbiAgICAgICAgICBuZXR3b3JrOiBOZXR3b3JrLk1haW5uZXQsXG4gICAgICAgICAgdHlwZTogdHlwZVxuICAgICAgICB9XG4gICAgICBjYXNlICdiY2h0ZXN0JzpcbiAgICAgIGNhc2UgJ3JlZ3Rlc3QnOlxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGhhc2g6IGhhc2gsXG4gICAgICAgICAgZm9ybWF0OiBGb3JtYXQuQ2FzaGFkZHIsXG4gICAgICAgICAgbmV0d29yazogTmV0d29yay5UZXN0bmV0LFxuICAgICAgICAgIHR5cGU6IHR5cGVcbiAgICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgfVxuICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcigpXG59XG5cbi8qKlxuICogRW5jb2RlcyB0aGUgZ2l2ZW4gZGVjb2RlZCBhZGRyZXNzIGludG8gbGVnYWN5IGZvcm1hdC5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge29iamVjdH0gZGVjb2RlZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZW5jb2RlQXNMZWdhY3kgKGRlY29kZWQpIHtcbiAgdmFyIHZlcnNpb25CeXRlID0gVkVSU0lPTl9CWVRFW0Zvcm1hdC5MZWdhY3ldW2RlY29kZWQubmV0d29ya11bZGVjb2RlZC50eXBlXVxuICB2YXIgYnVmZmVyID0gQnVmZmVyLmFsbG9jKDEgKyBkZWNvZGVkLmhhc2gubGVuZ3RoKVxuICBidWZmZXJbMF0gPSB2ZXJzaW9uQnl0ZVxuICBidWZmZXIuc2V0KGRlY29kZWQuaGFzaCwgMSlcbiAgcmV0dXJuIGJzNThjaGVjay5lbmNvZGUoYnVmZmVyKVxufVxuXG4vKipcbiAqIEVuY29kZXMgdGhlIGdpdmVuIGRlY29kZWQgYWRkcmVzcyBpbnRvIGJpdHBheSBmb3JtYXQuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtvYmplY3R9IGRlY29kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZUFzQml0cGF5IChkZWNvZGVkKSB7XG4gIHZhciB2ZXJzaW9uQnl0ZSA9IFZFUlNJT05fQllURVtGb3JtYXQuQml0cGF5XVtkZWNvZGVkLm5ldHdvcmtdW2RlY29kZWQudHlwZV1cbiAgdmFyIGJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygxICsgZGVjb2RlZC5oYXNoLmxlbmd0aClcbiAgYnVmZmVyWzBdID0gdmVyc2lvbkJ5dGVcbiAgYnVmZmVyLnNldChkZWNvZGVkLmhhc2gsIDEpXG4gIHJldHVybiBiczU4Y2hlY2suZW5jb2RlKGJ1ZmZlcilcbn1cblxuLyoqXG4gKiBFbmNvZGVzIHRoZSBnaXZlbiBkZWNvZGVkIGFkZHJlc3MgaW50byBjYXNoYWRkciBmb3JtYXQuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtvYmplY3R9IGRlY29kZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZUFzQ2FzaGFkZHIgKGRlY29kZWQpIHtcbiAgdmFyIHByZWZpeCA9IGRlY29kZWQubmV0d29yayA9PT0gTmV0d29yay5NYWlubmV0ID8gJ2JpdGNvaW5jYXNoJyA6ICdiY2h0ZXN0J1xuICB2YXIgdHlwZSA9IGRlY29kZWQudHlwZSA9PT0gVHlwZS5QMlBLSCA/ICdQMlBLSCcgOiAnUDJTSCdcbiAgdmFyIGhhc2ggPSBVaW50OEFycmF5LmZyb20oZGVjb2RlZC5oYXNoKVxuICByZXR1cm4gY2FzaGFkZHIuZW5jb2RlKHByZWZpeCwgdHlwZSwgaGFzaClcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGFkZHJlc3MgaXMgaW4gbGVnYWN5IGZvcm1hdC5cbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBpc0xlZ2FjeUFkZHJlc3MgKGFkZHJlc3MpIHtcbiAgcmV0dXJuIGRldGVjdEFkZHJlc3NGb3JtYXQoYWRkcmVzcykgPT09IEZvcm1hdC5MZWdhY3lcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGFkZHJlc3MgaXMgaW4gYml0cGF5IGZvcm1hdC5cbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBpc0JpdHBheUFkZHJlc3MgKGFkZHJlc3MpIHtcbiAgcmV0dXJuIGRldGVjdEFkZHJlc3NGb3JtYXQoYWRkcmVzcykgPT09IEZvcm1hdC5CaXRwYXlcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGFkZHJlc3MgaXMgaW4gY2FzaGFkZHIgZm9ybWF0LlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGlzQ2FzaEFkZHJlc3MgKGFkZHJlc3MpIHtcbiAgcmV0dXJuIGRldGVjdEFkZHJlc3NGb3JtYXQoYWRkcmVzcykgPT09IEZvcm1hdC5DYXNoYWRkclxufVxuXG4vKipcbiAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYWRkcmVzcyBpcyBhIG1haW5uZXQgYWRkcmVzcy5cbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBpc01haW5uZXRBZGRyZXNzIChhZGRyZXNzKSB7XG4gIHJldHVybiBkZXRlY3RBZGRyZXNzTmV0d29yayhhZGRyZXNzKSA9PT0gTmV0d29yay5NYWlubmV0XG59XG5cbi8qKlxuICogUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBhZGRyZXNzIGlzIGEgdGVzdG5ldCBhZGRyZXNzLlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGlzVGVzdG5ldEFkZHJlc3MgKGFkZHJlc3MpIHtcbiAgcmV0dXJuIGRldGVjdEFkZHJlc3NOZXR3b3JrKGFkZHJlc3MpID09PSBOZXR3b3JrLlRlc3RuZXRcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgYm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGFkZHJlc3MgaXMgYSBwMnBraCBhZGRyZXNzLlxuICogQHN0YXRpY1xuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIHZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGluIGFueSBmb3JtYXQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqIEB0aHJvd3Mge0ludmFsaWRBZGRyZXNzRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGlzUDJQS0hBZGRyZXNzIChhZGRyZXNzKSB7XG4gIHJldHVybiBkZXRlY3RBZGRyZXNzVHlwZShhZGRyZXNzKSA9PT0gVHlwZS5QMlBLSFxufVxuXG4vKipcbiAqIFJldHVybnMgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgYWRkcmVzcyBpcyBhIHAyc2ggYWRkcmVzcy5cbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIC0gQSB2YWxpZCBCaXRjb2luIENhc2ggYWRkcmVzcyBpbiBhbnkgZm9ybWF0LlxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKiBAdGhyb3dzIHtJbnZhbGlkQWRkcmVzc0Vycm9yfVxuICovXG5mdW5jdGlvbiBpc1AyU0hBZGRyZXNzIChhZGRyZXNzKSB7XG4gIHJldHVybiBkZXRlY3RBZGRyZXNzVHlwZShhZGRyZXNzKSA9PT0gVHlwZS5QMlNIXG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gdGhlIGFkZHJlc3MgZ2l2ZW4gYXMgaW5wdXQgaXMgbm90IGEgdmFsaWQgQml0Y29pbiBDYXNoIGFkZHJlc3MuXG4gKiBAY29uc3RydWN0b3JcbiAqIEludmFsaWRBZGRyZXNzRXJyb3JcbiAqL1xuZnVuY3Rpb24gSW52YWxpZEFkZHJlc3NFcnJvciAoKSB7XG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcigpXG4gIHRoaXMubmFtZSA9IGVycm9yLm5hbWUgPSAnSW52YWxpZEFkZHJlc3NFcnJvcidcbiAgdGhpcy5tZXNzYWdlID0gZXJyb3IubWVzc2FnZSA9ICdSZWNlaXZlZCBhbiBpbnZhbGlkIEJpdGNvaW4gQ2FzaCBhZGRyZXNzIGFzIGlucHV0LidcbiAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG59XG5cbkludmFsaWRBZGRyZXNzRXJyb3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBGb3JtYXQ6IEZvcm1hdCxcbiAgTmV0d29yazogTmV0d29yayxcbiAgVHlwZTogVHlwZSxcbiAgZGV0ZWN0QWRkcmVzc0Zvcm1hdDogZGV0ZWN0QWRkcmVzc0Zvcm1hdCxcbiAgZGV0ZWN0QWRkcmVzc05ldHdvcms6IGRldGVjdEFkZHJlc3NOZXR3b3JrLFxuICBkZXRlY3RBZGRyZXNzVHlwZTogZGV0ZWN0QWRkcmVzc1R5cGUsXG4gIHRvTGVnYWN5QWRkcmVzczogdG9MZWdhY3lBZGRyZXNzLFxuICB0b0JpdHBheUFkZHJlc3M6IHRvQml0cGF5QWRkcmVzcyxcbiAgdG9DYXNoQWRkcmVzczogdG9DYXNoQWRkcmVzcyxcbiAgaXNMZWdhY3lBZGRyZXNzOiBpc0xlZ2FjeUFkZHJlc3MsXG4gIGlzQml0cGF5QWRkcmVzczogaXNCaXRwYXlBZGRyZXNzLFxuICBpc0Nhc2hBZGRyZXNzOiBpc0Nhc2hBZGRyZXNzLFxuICBpc01haW5uZXRBZGRyZXNzOiBpc01haW5uZXRBZGRyZXNzLFxuICBpc1Rlc3RuZXRBZGRyZXNzOiBpc1Rlc3RuZXRBZGRyZXNzLFxuICBpc1AyUEtIQWRkcmVzczogaXNQMlBLSEFkZHJlc3MsXG4gIGlzUDJTSEFkZHJlc3M6IGlzUDJTSEFkZHJlc3MsXG4gIEludmFsaWRBZGRyZXNzRXJyb3I6IEludmFsaWRBZGRyZXNzRXJyb3Jcbn1cbiIsIi8qKlxuICogQGxpY2Vuc2VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luY2FzaGpzL2Nhc2hhZGRyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCBFbWlsaW8gQWxtYW5zaVxuICogRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBzb2Z0d2FyZSBsaWNlbnNlLCBzZWUgdGhlIGFjY29tcGFueWluZ1xuICogZmlsZSBMSUNFTlNFIG9yIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwLlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGJhc2UzMiA9IHJlcXVpcmUoJy4vYmFzZTMyJyk7XG52YXIgYmlnSW50ID0gcmVxdWlyZSgnYmlnLWludGVnZXInKTtcbnZhciBjb252ZXJ0Qml0cyA9IHJlcXVpcmUoJy4vY29udmVydEJpdHMnKTtcbnZhciB2YWxpZGF0aW9uID0gcmVxdWlyZSgnLi92YWxpZGF0aW9uJyk7XG52YXIgdmFsaWRhdGUgPSB2YWxpZGF0aW9uLnZhbGlkYXRlO1xuXG4vKipcbiAqIEVuY29kaW5nIGFuZCBkZWNvZGluZyBvZiB0aGUgbmV3IENhc2ggQWRkcmVzcyBmb3JtYXQgZm9yIEJpdGNvaW4gQ2FzaC4gPGJyIC8+XG4gKiBDb21wbGlhbnQgd2l0aCB0aGUgb3JpZ2luYWwgY2FzaGFkZHIgc3BlY2lmaWNhdGlvbjpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vQml0Y29pbi1VQUhGL3NwZWMvYmxvYi9tYXN0ZXIvY2FzaGFkZHIubWR9XG4gKiBAbW9kdWxlIGNhc2hhZGRyXG4gKi9cblxuLyoqXG4gKiBFbmNvZGVzIGEgaGFzaCBmcm9tIGEgZ2l2ZW4gdHlwZSBpbnRvIGEgQml0Y29pbiBDYXNoIGFkZHJlc3Mgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LlxuICogXG4gKiBAc3RhdGljXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IE5ldHdvcmsgcHJlZml4LiBFLmcuOiAnYml0Y29pbmNhc2gnLlxuICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgVHlwZSBvZiBhZGRyZXNzIHRvIGdlbmVyYXRlLiBFaXRoZXIgJ1AyUEtIJyBvciAnUDJTSCcuXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGhhc2ggSGFzaCB0byBlbmNvZGUgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlcnMuXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBlbmNvZGUocHJlZml4LCB0eXBlLCBoYXNoKSB7XG4gIHZhbGlkYXRlKHR5cGVvZiBwcmVmaXggPT09ICdzdHJpbmcnICYmIGlzVmFsaWRQcmVmaXgocHJlZml4KSwgJ0ludmFsaWQgcHJlZml4OiAnICsgcHJlZml4ICsgJy4nKTtcbiAgdmFsaWRhdGUodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnLCAnSW52YWxpZCB0eXBlOiAnICsgdHlwZSArICcuJyk7XG4gIHZhbGlkYXRlKGhhc2ggaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnSW52YWxpZCBoYXNoOiAnICsgaGFzaCArICcuJyk7XG4gIHZhciBwcmVmaXhEYXRhID0gY29uY2F0KHByZWZpeFRvVWludDVBcnJheShwcmVmaXgpLCBuZXcgVWludDhBcnJheSgxKSk7XG4gIHZhciB2ZXJzaW9uQnl0ZSA9IGdldFR5cGVCaXRzKHR5cGUpICsgZ2V0SGFzaFNpemVCaXRzKGhhc2gpO1xuICB2YXIgcGF5bG9hZERhdGEgPSB0b1VpbnQ1QXJyYXkoY29uY2F0KFVpbnQ4QXJyYXkub2YodmVyc2lvbkJ5dGUpLCBoYXNoKSk7XG4gIHZhciBjaGVja3N1bURhdGEgPSBjb25jYXQoY29uY2F0KHByZWZpeERhdGEsIHBheWxvYWREYXRhKSwgbmV3IFVpbnQ4QXJyYXkoOCkpO1xuICB2YXIgcGF5bG9hZCA9IGNvbmNhdChwYXlsb2FkRGF0YSwgY2hlY2tzdW1Ub1VpbnQ1QXJyYXkocG9seW1vZChjaGVja3N1bURhdGEpKSk7XG4gIHJldHVybiBwcmVmaXggKyAnOicgKyBiYXNlMzIuZW5jb2RlKHBheWxvYWQpO1xufVxuXG4vKipcbiAqIERlY29kZXMgdGhlIGdpdmVuIGFkZHJlc3MgaW50byBpdHMgY29uc3RpdHV0aW5nIHByZWZpeCwgdHlwZSBhbmQgaGFzaC4gU2VlIFsjZW5jb2RlKClde0BsaW5rIGVuY29kZX0uXG4gKiBcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBhZGRyZXNzIEFkZHJlc3MgdG8gZGVjb2RlLiBFLmcuOiAnYml0Y29pbmNhc2g6cXBtMnFzem5oa3MyM3o3NjI5bW1zNnM0Y3dlZjc0dmN3dnkyMmdkeDZhJy5cbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKiBAdGhyb3dzIHtWYWxpZGF0aW9uRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGRlY29kZShhZGRyZXNzKSB7XG4gIHZhbGlkYXRlKHR5cGVvZiBhZGRyZXNzID09PSAnc3RyaW5nJyAmJiBoYXNTaW5nbGVDYXNlKGFkZHJlc3MpLCAnSW52YWxpZCBhZGRyZXNzOiAnICsgYWRkcmVzcyArICcuJyk7XG4gIHZhciBwaWVjZXMgPSBhZGRyZXNzLnRvTG93ZXJDYXNlKCkuc3BsaXQoJzonKTtcbiAgdmFsaWRhdGUocGllY2VzLmxlbmd0aCA9PT0gMiwgJ01pc3NpbmcgcHJlZml4OiAnICsgYWRkcmVzcyArICcuJyk7XG4gIHZhciBwcmVmaXggPSBwaWVjZXNbMF07XG4gIHZhciBwYXlsb2FkID0gYmFzZTMyLmRlY29kZShwaWVjZXNbMV0pO1xuICB2YWxpZGF0ZSh2YWxpZENoZWNrc3VtKHByZWZpeCwgcGF5bG9hZCksICdJbnZhbGlkIGNoZWNrc3VtOiAnICsgYWRkcmVzcyArICcuJyk7XG4gIHZhciBwYXlsb2FkRGF0YSA9IGZyb21VaW50NUFycmF5KHBheWxvYWQuc2xpY2UoMCwgLTgpKTtcbiAgdmFyIHZlcnNpb25CeXRlID0gcGF5bG9hZERhdGFbMF07XG4gIHZhciBoYXNoID0gcGF5bG9hZERhdGEuc2xpY2UoMSk7XG4gIHZhbGlkYXRlKGdldEhhc2hTaXplKHZlcnNpb25CeXRlKSA9PT0gaGFzaC5sZW5ndGggKiA4LCAnSW52YWxpZCBoYXNoIHNpemU6ICcgKyBhZGRyZXNzICsgJy4nKTtcbiAgdmFyIHR5cGUgPSBnZXRUeXBlKHZlcnNpb25CeXRlKTtcbiAgcmV0dXJuIHtcbiAgICBwcmVmaXg6IHByZWZpeCxcbiAgICB0eXBlOiB0eXBlLFxuICAgIGhhc2g6IGhhc2gsXG4gIH07XG59XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gZW5jb2Rpbmcgb3IgZGVjb2RpbmcgZmFpbCBkdWUgdG8gaW52YWxpZCBpbnB1dC5cbiAqXG4gKiBAY29uc3RydWN0b3IgVmFsaWRhdGlvbkVycm9yXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBFcnJvciBkZXNjcmlwdGlvbi5cbiAqL1xudmFyIFZhbGlkYXRpb25FcnJvciA9IHZhbGlkYXRpb24uVmFsaWRhdGlvbkVycm9yO1xuXG4vKipcbiAqIFZhbGlkIGFkZHJlc3MgcHJlZml4ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqL1xudmFyIFZBTElEX1BSRUZJWEVTID0gWydiaXRjb2luY2FzaCcsICdiY2h0ZXN0JywgJ2JjaHJlZyddO1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgc3RyaW5nIGlzIGEgdmFsaWQgcHJlZml4OyBpZS4sIGl0IGhhcyBhIHNpbmdsZSBsZXR0ZXIgY2FzZVxuICogYW5kIGlzIG9uZSBvZiAnYml0Y29pbmNhc2gnLCAnYmNodGVzdCcsIG9yICdiY2hyZWcnLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRQcmVmaXgocHJlZml4KSB7XG4gIHJldHVybiBoYXNTaW5nbGVDYXNlKHByZWZpeCkgJiYgVkFMSURfUFJFRklYRVMuaW5kZXhPZihwcmVmaXgudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYW4gYXJyYXkgZnJvbSB0aGUgZ2l2ZW4gcHJlZml4IHRvIGJlIHVzZWQgaW4gdGhlIGNvbXB1dGF0aW9uXG4gKiBvZiB0aGUgYWRkcmVzcycgY2hlY2tzdW0uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcmVmaXggTmV0d29yayBwcmVmaXguIEUuZy46ICdiaXRjb2luY2FzaCcuIFxuICogQHJldHVybnMge1VpbnQ4QXJyYXl9XG4gKi9cbmZ1bmN0aW9uIHByZWZpeFRvVWludDVBcnJheShwcmVmaXgpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KHByZWZpeC5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHByZWZpeC5sZW5ndGg7ICsraSkge1xuICAgIHJlc3VsdFtpXSA9IHByZWZpeFtpXS5jaGFyQ29kZUF0KDApICYgMzE7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGFycmF5IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBjaGVja3N1bSB0byBiZSBlbmNvZGVkXG4gKiB3aXRoaW4gdGhlIGFkZHJlc3MnIHBheWxvYWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QmlnSW50ZWdlcn0gY2hlY2tzdW0gQ29tcHV0ZWQgY2hlY2tzdW0uXG4gKiBAcmV0dXJucyB7VWludDhBcnJheX1cbiAqL1xuZnVuY3Rpb24gY2hlY2tzdW1Ub1VpbnQ1QXJyYXkoY2hlY2tzdW0pIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBVaW50OEFycmF5KDgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7ICsraSkge1xuICAgIHJlc3VsdFs3IC0gaV0gPSBjaGVja3N1bS5hbmQoMzEpLnRvSlNOdW1iZXIoKTtcbiAgICBjaGVja3N1bSA9IGNoZWNrc3VtLnNoaWZ0UmlnaHQoNSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBiaXQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIHR5cGUgd2l0aGluIHRoZSB2ZXJzaW9uXG4gKiBieXRlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBBZGRyZXNzIHR5cGUuIEVpdGhlciAnUDJQS0gnIG9yICdQMlNIJy5cbiAqIEByZXR1cm5zIHtudW1iZXJ9XG4gKiBAdGhyb3dzIHtWYWxpZGF0aW9uRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGdldFR5cGVCaXRzKHR5cGUpIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gIGNhc2UgJ1AyUEtIJzpcbiAgICByZXR1cm4gMDtcbiAgY2FzZSAnUDJTSCc6XG4gICAgcmV0dXJuIDg7XG4gIGRlZmF1bHQ6XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZCB0eXBlOiAnICsgdHlwZSArICcuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGFkZHJlc3MgdHlwZSBmcm9tIGl0cyBiaXQgcmVwcmVzZW50YXRpb24gd2l0aGluIHRoZVxuICogdmVyc2lvbiBieXRlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gdmVyc2lvbkJ5dGVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiBAdGhyb3dzIHtWYWxpZGF0aW9uRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGdldFR5cGUodmVyc2lvbkJ5dGUpIHtcbiAgc3dpdGNoICh2ZXJzaW9uQnl0ZSAmIDEyMCkge1xuICBjYXNlIDA6XG4gICAgcmV0dXJuICdQMlBLSCc7XG4gIGNhc2UgODpcbiAgICByZXR1cm4gJ1AyU0gnO1xuICBkZWZhdWx0OlxuICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0ludmFsaWQgYWRkcmVzcyB0eXBlIGluIHZlcnNpb24gYnl0ZTogJyArIHZlcnNpb25CeXRlICsgJy4nKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIGJpdCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbGVuZ3RoIGluIGJpdHMgb2YgdGhlIGdpdmVuXG4gKiBoYXNoIHdpdGhpbiB0aGUgdmVyc2lvbiBieXRlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGhhc2ggSGFzaCB0byBlbmNvZGUgcmVwcmVzZW50ZWQgYXMgYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlcnMuXG4gKiBAcmV0dXJucyB7bnVtYmVyfVxuICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBnZXRIYXNoU2l6ZUJpdHMoaGFzaCkge1xuICBzd2l0Y2ggKGhhc2gubGVuZ3RoICogOCkge1xuICBjYXNlIDE2MDpcbiAgICByZXR1cm4gMDtcbiAgY2FzZSAxOTI6XG4gICAgcmV0dXJuIDE7XG4gIGNhc2UgMjI0OlxuICAgIHJldHVybiAyO1xuICBjYXNlIDI1NjpcbiAgICByZXR1cm4gMztcbiAgY2FzZSAzMjA6XG4gICAgcmV0dXJuIDQ7XG4gIGNhc2UgMzg0OlxuICAgIHJldHVybiA1O1xuICBjYXNlIDQ0ODpcbiAgICByZXR1cm4gNjtcbiAgY2FzZSA1MTI6XG4gICAgcmV0dXJuIDc7XG4gIGRlZmF1bHQ6XG4gICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignSW52YWxpZCBoYXNoIHNpemU6ICcgKyBoYXNoLmxlbmd0aCArICcuJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHRoZSBsZW5ndGggaW4gYml0cyBvZiB0aGUgZW5jb2RlZCBoYXNoIGZyb20gaXRzIGJpdFxuICogcmVwcmVzZW50YXRpb24gd2l0aGluIHRoZSB2ZXJzaW9uIGJ5dGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSB2ZXJzaW9uQnl0ZVxuICogQHJldHVybnMge251bWJlcn1cbiAqL1xuZnVuY3Rpb24gZ2V0SGFzaFNpemUodmVyc2lvbkJ5dGUpIHtcbiAgc3dpdGNoICh2ZXJzaW9uQnl0ZSAmIDcpIHtcbiAgY2FzZSAwOlxuICAgIHJldHVybiAxNjA7XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gMTkyO1xuICBjYXNlIDI6XG4gICAgcmV0dXJuIDIyNDtcbiAgY2FzZSAzOlxuICAgIHJldHVybiAyNTY7XG4gIGNhc2UgNDpcbiAgICByZXR1cm4gMzIwO1xuICBjYXNlIDU6XG4gICAgcmV0dXJuIDM4NDtcbiAgY2FzZSA2OlxuICAgIHJldHVybiA0NDg7XG4gIGNhc2UgNzpcbiAgICByZXR1cm4gNTEyO1xuICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgOC1iaXQgaW50ZWdlcnMgaW50byBhbiBhcnJheSBvZiA1LWJpdCBpbnRlZ2VycyxcbiAqIHJpZ2h0LXBhZGRpbmcgd2l0aCB6ZXJvZXMgaWYgbmVjZXNzYXJ5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGFcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fVxuICovXG5mdW5jdGlvbiB0b1VpbnQ1QXJyYXkoZGF0YSkge1xuICByZXR1cm4gY29udmVydEJpdHMoZGF0YSwgOCwgNSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYW4gYXJyYXkgb2YgNS1iaXQgaW50ZWdlcnMgYmFjayBpbnRvIGFuIGFycmF5IG9mIDgtYml0IGludGVnZXJzLFxuICogcmVtb3ZpbmcgZXh0cmEgemVyb2VzIGxlZnQgZnJvbSBwYWRkaW5nIGlmIG5lY2Vzc2FyeS5cbiAqIFRocm93cyBhIHtAbGluayBWYWxpZGF0aW9uRXJyb3J9IGlmIGlucHV0IGlzIG5vdCBhIHplcm8tcGFkZGVkIGFycmF5IG9mIDgtYml0IGludGVnZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGFcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fVxuICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBmcm9tVWludDVBcnJheShkYXRhKSB7XG4gIHJldHVybiBjb252ZXJ0Qml0cyhkYXRhLCA1LCA4LCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb25jYXRlbmF0aW9uIGEgYW5kIGIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYSBcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gYiBcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fVxuICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBjb25jYXQoYSwgYikge1xuICB2YXIgYWIgPSBuZXcgVWludDhBcnJheShhLmxlbmd0aCArIGIubGVuZ3RoKTtcbiAgYWIuc2V0KGEpO1xuICBhYi5zZXQoYiwgYS5sZW5ndGgpO1xuICByZXR1cm4gYWI7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgYSBjaGVja3N1bSBmcm9tIHRoZSBnaXZlbiBpbnB1dCBkYXRhIGFzIHNwZWNpZmllZCBmb3IgdGhlIENhc2hBZGRyXG4gKiBmb3JtYXQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9CaXRjb2luLVVBSEYvc3BlYy9ibG9iL21hc3Rlci9jYXNoYWRkci5tZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtVaW50OEFycmF5fSBkYXRhIEFycmF5IG9mIDUtYml0IGludGVnZXJzIG92ZXIgd2hpY2ggdGhlIGNoZWNrc3VtIGlzIHRvIGJlIGNvbXB1dGVkLlxuICogQHJldHVybnMge0JpZ0ludGVnZXJ9XG4gKi9cbmZ1bmN0aW9uIHBvbHltb2QoZGF0YSkge1xuICB2YXIgR0VORVJBVE9SID0gWzB4OThmMmJjOGU2MSwgMHg3OWI3NmQ5OWUyLCAweGYzM2U1ZmIzYzQsIDB4YWUyZWFiZTJhOCwgMHgxZTRmNDNlNDcwXTtcbiAgdmFyIGNoZWNrc3VtID0gYmlnSW50KDEpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgdmFsdWUgPSBkYXRhW2ldO1xuICAgIHZhciB0b3BCaXRzID0gY2hlY2tzdW0uc2hpZnRSaWdodCgzNSk7XG4gICAgY2hlY2tzdW0gPSBjaGVja3N1bS5hbmQoMHgwN2ZmZmZmZmZmKS5zaGlmdExlZnQoNSkueG9yKHZhbHVlKTtcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IEdFTkVSQVRPUi5sZW5ndGg7ICsraikge1xuICAgICAgaWYgKHRvcEJpdHMuc2hpZnRSaWdodChqKS5hbmQoMSkuZXF1YWxzKDEpKSB7XG4gICAgICAgIGNoZWNrc3VtID0gY2hlY2tzdW0ueG9yKEdFTkVSQVRPUltqXSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjaGVja3N1bS54b3IoMSk7XG59XG5cbi8qKlxuICogVmVyaWZ5IHRoYXQgdGhlIHBheWxvYWQgaGFzIG5vdCBiZWVuIGNvcnJ1cHRlZCBieSBjaGVja2luZyB0aGF0IHRoZVxuICogY2hlY2tzdW0gaXMgdmFsaWQuXG4gKiBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IE5ldHdvcmsgcHJlZml4LiBFLmcuOiAnYml0Y29pbmNhc2gnLlxuICogQHBhcmFtIHtVaW50OEFycmF5fSBwYXlsb2FkIEFycmF5IG9mIDUtYml0IGludGVnZXJzIGNvbnRhaW5pbmcgdGhlIGFkZHJlc3MnIHBheWxvYWQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gdmFsaWRDaGVja3N1bShwcmVmaXgsIHBheWxvYWQpIHtcbiAgdmFyIHByZWZpeERhdGEgPSBjb25jYXQocHJlZml4VG9VaW50NUFycmF5KHByZWZpeCksIG5ldyBVaW50OEFycmF5KDEpKTtcbiAgdmFyIGNoZWNrc3VtRGF0YSA9IGNvbmNhdChwcmVmaXhEYXRhLCBwYXlsb2FkKTtcbiAgcmV0dXJuIHBvbHltb2QoY2hlY2tzdW1EYXRhKS5lcXVhbHMoMCk7XG59XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmLCBhbmQgb25seSBpZiwgdGhlIGdpdmVuIHN0cmluZyBjb250YWlucyBlaXRoZXIgdXBwZXJjYXNlXG4gKiBvciBsb3dlcmNhc2UgbGV0dGVycywgYnV0IG5vdCBib3RoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIElucHV0IHN0cmluZy5cbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5mdW5jdGlvbiBoYXNTaW5nbGVDYXNlKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nID09PSBzdHJpbmcudG9Mb3dlckNhc2UoKSB8fCBzdHJpbmcgPT09IHN0cmluZy50b1VwcGVyQ2FzZSgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5jb2RlOiBlbmNvZGUsXG4gIGRlY29kZTogZGVjb2RlLFxuICBWYWxpZGF0aW9uRXJyb3I6IFZhbGlkYXRpb25FcnJvcixcbn07XG4iLCIvKipcbiAqIEBsaWNlbnNlXG4gKiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbmNhc2hqcy9jYXNoYWRkclxuICogQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggRW1pbGlvIEFsbWFuc2lcbiAqIERpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgc29mdHdhcmUgbGljZW5zZSwgc2VlIHRoZSBhY2NvbXBhbnlpbmdcbiAqIGZpbGUgTElDRU5TRSBvciBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocC5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciB2YWxpZGF0ZSA9IHJlcXVpcmUoJy4vdmFsaWRhdGlvbicpLnZhbGlkYXRlO1xuXG4vKipcbiAqIEJhc2UzMiBlbmNvZGluZyBhbmQgZGVjb2RpbmcuXG4gKlxuICogQG1vZHVsZSBiYXNlMzJcbiAqL1xuXG4vKipcbiAqIENoYXJzZXQgY29udGFpbmluZyB0aGUgMzIgc3ltYm9scyB1c2VkIGluIHRoZSBiYXNlMzIgZW5jb2RpbmcuXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgQ0hBUlNFVCA9ICdxcHpyeTl4OGdmMnR2ZHcwczNqbjU0a2hjZTZtdWE3bCc7XG5cbi8qKlxuICogSW52ZXJ0ZWQgaW5kZXggbWFwcGluZyBlYWNoIHN5bWJvbCBpbnRvIGl0cyBpbmRleCB3aXRoaW4gdGhlIGNoYXJzZXQuXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgQ0hBUlNFVF9JTlZFUlNFX0lOREVYID0ge1xuICAncSc6IDAsICdwJzogMSwgJ3onOiAyLCAncic6IDMsICd5JzogNCwgJzknOiA1LCAneCc6IDYsICc4JzogNyxcbiAgJ2cnOiA4LCAnZic6IDksICcyJzogMTAsICd0JzogMTEsICd2JzogMTIsICdkJzogMTMsICd3JzogMTQsICcwJzogMTUsXG4gICdzJzogMTYsICczJzogMTcsICdqJzogMTgsICduJzogMTksICc1JzogMjAsICc0JzogMjEsICdrJzogMjIsICdoJzogMjMsXG4gICdjJzogMjQsICdlJzogMjUsICc2JzogMjYsICdtJzogMjcsICd1JzogMjgsICdhJzogMjksICc3JzogMzAsICdsJzogMzEsXG59O1xuXG4vKipcbiAqIEVuY29kZXMgdGhlIGdpdmVuIGFycmF5IG9mIDUtYml0IGludGVnZXJzIGFzIGEgYmFzZTMyLWVuY29kZWQgc3RyaW5nLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7VWludDhBcnJheX0gZGF0YSBBcnJheSBvZiBpbnRlZ2VycyBiZXR3ZWVuIDAgYW5kIDMxIGluY2x1c2l2ZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKiBAdGhyb3dzIHtWYWxpZGF0aW9uRXJyb3J9XG4gKi9cbmZ1bmN0aW9uIGVuY29kZShkYXRhKSB7XG4gIHZhbGlkYXRlKGRhdGEgaW5zdGFuY2VvZiBVaW50OEFycmF5LCAnSW52YWxpZCBkYXRhOiAnICsgZGF0YSArICcuJyk7XG4gIHZhciBiYXNlMzIgPSAnJztcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHZhbHVlID0gZGF0YVtpXTtcbiAgICB2YWxpZGF0ZSgwIDw9IHZhbHVlICYmIHZhbHVlIDwgMzIsICdJbnZhbGlkIHZhbHVlOiAnICsgdmFsdWUgKyAnLicpO1xuICAgIGJhc2UzMiArPSBDSEFSU0VUW3ZhbHVlXTtcbiAgfVxuICByZXR1cm4gYmFzZTMyO1xufVxuXG4vKipcbiAqIERlY29kZXMgdGhlIGdpdmVuIGJhc2UzMi1lbmNvZGVkIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIDUtYml0IGludGVnZXJzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fVxuICogQHRocm93cyB7VmFsaWRhdGlvbkVycm9yfVxuICovXG5mdW5jdGlvbiBkZWNvZGUoc3RyaW5nKSB7XG4gIHZhbGlkYXRlKHR5cGVvZiBzdHJpbmcgPT09ICdzdHJpbmcnLCAnSW52YWxpZCBiYXNlMzItZW5jb2RlZCBzdHJpbmc6ICcgKyBzdHJpbmcgKyAnLicpO1xuICB2YXIgZGF0YSA9IG5ldyBVaW50OEFycmF5KHN0cmluZy5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGg7ICsraSkge1xuICAgIHZhciB2YWx1ZSA9IHN0cmluZ1tpXTtcbiAgICB2YWxpZGF0ZSh2YWx1ZSBpbiBDSEFSU0VUX0lOVkVSU0VfSU5ERVgsICdJbnZhbGlkIHZhbHVlOiAnICsgdmFsdWUgKyAnLicpO1xuICAgIGRhdGFbaV0gPSBDSEFSU0VUX0lOVkVSU0VfSU5ERVhbdmFsdWVdO1xuICB9XG4gIHJldHVybiBkYXRhO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZW5jb2RlOiBlbmNvZGUsXG4gIGRlY29kZTogZGVjb2RlLFxufTtcbiIsInZhciBiaWdJbnQgPSAoZnVuY3Rpb24gKHVuZGVmaW5lZCkge1xyXG4gICAgXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG4gICAgdmFyIEJBU0UgPSAxZTcsXHJcbiAgICAgICAgTE9HX0JBU0UgPSA3LFxyXG4gICAgICAgIE1BWF9JTlQgPSA5MDA3MTk5MjU0NzQwOTkyLFxyXG4gICAgICAgIE1BWF9JTlRfQVJSID0gc21hbGxUb0FycmF5KE1BWF9JTlQpLFxyXG4gICAgICAgIERFRkFVTFRfQUxQSEFCRVQgPSBcIjAxMjM0NTY3ODlhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5elwiO1xyXG5cclxuICAgIHZhciBzdXBwb3J0c05hdGl2ZUJpZ0ludCA9IHR5cGVvZiBCaWdJbnQgPT09IFwiZnVuY3Rpb25cIjtcclxuXHJcbiAgICBmdW5jdGlvbiBJbnRlZ2VyKHYsIHJhZGl4LCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuIEludGVnZXJbMF07XHJcbiAgICAgICAgaWYgKHR5cGVvZiByYWRpeCAhPT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuICtyYWRpeCA9PT0gMTAgJiYgIWFscGhhYmV0ID8gcGFyc2VWYWx1ZSh2KSA6IHBhcnNlQmFzZSh2LCByYWRpeCwgYWxwaGFiZXQsIGNhc2VTZW5zaXRpdmUpO1xyXG4gICAgICAgIHJldHVybiBwYXJzZVZhbHVlKHYpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgdGhpcy5zaWduID0gc2lnbjtcclxuICAgICAgICB0aGlzLmlzU21hbGwgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJbnRlZ2VyLnByb3RvdHlwZSk7XHJcblxyXG4gICAgZnVuY3Rpb24gU21hbGxJbnRlZ2VyKHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIHRoaXMuc2lnbiA9IHZhbHVlIDwgMDtcclxuICAgICAgICB0aGlzLmlzU21hbGwgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoSW50ZWdlci5wcm90b3R5cGUpO1xyXG5cclxuICAgIGZ1bmN0aW9uIE5hdGl2ZUJpZ0ludCh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuICAgIH1cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEludGVnZXIucHJvdG90eXBlKTtcclxuXHJcbiAgICBmdW5jdGlvbiBpc1ByZWNpc2Uobikge1xyXG4gICAgICAgIHJldHVybiAtTUFYX0lOVCA8IG4gJiYgbiA8IE1BWF9JTlQ7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc21hbGxUb0FycmF5KG4pIHsgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgZG9lc24ndCByZWZlcmVuY2UgQkFTRSwgbmVlZCB0byBjaGFuZ2UgdGhpcyBmdW5jdGlvbiBpZiBCQVNFIGNoYW5nZXNcclxuICAgICAgICBpZiAobiA8IDFlNylcclxuICAgICAgICAgICAgcmV0dXJuIFtuXTtcclxuICAgICAgICBpZiAobiA8IDFlMTQpXHJcbiAgICAgICAgICAgIHJldHVybiBbbiAlIDFlNywgTWF0aC5mbG9vcihuIC8gMWU3KV07XHJcbiAgICAgICAgcmV0dXJuIFtuICUgMWU3LCBNYXRoLmZsb29yKG4gLyAxZTcpICUgMWU3LCBNYXRoLmZsb29yKG4gLyAxZTE0KV07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gYXJyYXlUb1NtYWxsKGFycikgeyAvLyBJZiBCQVNFIGNoYW5nZXMgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBjaGFuZ2VcclxuICAgICAgICB0cmltKGFycik7XHJcbiAgICAgICAgdmFyIGxlbmd0aCA9IGFyci5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGxlbmd0aCA8IDQgJiYgY29tcGFyZUFicyhhcnIsIE1BWF9JTlRfQVJSKSA8IDApIHtcclxuICAgICAgICAgICAgc3dpdGNoIChsZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogcmV0dXJuIDA7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDE6IHJldHVybiBhcnJbMF07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDI6IHJldHVybiBhcnJbMF0gKyBhcnJbMV0gKiBCQVNFO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGFyclswXSArIChhcnJbMV0gKyBhcnJbMl0gKiBCQVNFKSAqIEJBU0U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGFycjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiB0cmltKHYpIHtcclxuICAgICAgICB2YXIgaSA9IHYubGVuZ3RoO1xyXG4gICAgICAgIHdoaWxlICh2Wy0taV0gPT09IDApO1xyXG4gICAgICAgIHYubGVuZ3RoID0gaSArIDE7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gY3JlYXRlQXJyYXkobGVuZ3RoKSB7IC8vIGZ1bmN0aW9uIHNoYW1lbGVzc2x5IHN0b2xlbiBmcm9tIFlhZmZsZSdzIGxpYnJhcnkgaHR0cHM6Ly9naXRodWIuY29tL1lhZmZsZS9CaWdJbnRlZ2VyXHJcbiAgICAgICAgdmFyIHggPSBuZXcgQXJyYXkobGVuZ3RoKTtcclxuICAgICAgICB2YXIgaSA9IC0xO1xyXG4gICAgICAgIHdoaWxlICgrK2kgPCBsZW5ndGgpIHtcclxuICAgICAgICAgICAgeFtpXSA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB4O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHRydW5jYXRlKG4pIHtcclxuICAgICAgICBpZiAobiA+IDApIHJldHVybiBNYXRoLmZsb29yKG4pO1xyXG4gICAgICAgIHJldHVybiBNYXRoLmNlaWwobik7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gYWRkKGEsIGIpIHsgLy8gYXNzdW1lcyBhIGFuZCBiIGFyZSBhcnJheXMgd2l0aCBhLmxlbmd0aCA+PSBiLmxlbmd0aFxyXG4gICAgICAgIHZhciBsX2EgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgbF9iID0gYi5sZW5ndGgsXHJcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobF9hKSxcclxuICAgICAgICAgICAgY2FycnkgPSAwLFxyXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcclxuICAgICAgICAgICAgc3VtLCBpO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsX2I7IGkrKykge1xyXG4gICAgICAgICAgICBzdW0gPSBhW2ldICsgYltpXSArIGNhcnJ5O1xyXG4gICAgICAgICAgICBjYXJyeSA9IHN1bSA+PSBiYXNlID8gMSA6IDA7XHJcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChpIDwgbF9hKSB7XHJcbiAgICAgICAgICAgIHN1bSA9IGFbaV0gKyBjYXJyeTtcclxuICAgICAgICAgICAgY2FycnkgPSBzdW0gPT09IGJhc2UgPyAxIDogMDtcclxuICAgICAgICAgICAgcltpKytdID0gc3VtIC0gY2FycnkgKiBiYXNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY2FycnkgPiAwKSByLnB1c2goY2FycnkpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGFkZEFueShhLCBiKSB7XHJcbiAgICAgICAgaWYgKGEubGVuZ3RoID49IGIubGVuZ3RoKSByZXR1cm4gYWRkKGEsIGIpO1xyXG4gICAgICAgIHJldHVybiBhZGQoYiwgYSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gYWRkU21hbGwoYSwgY2FycnkpIHsgLy8gYXNzdW1lcyBhIGlzIGFycmF5LCBjYXJyeSBpcyBudW1iZXIgd2l0aCAwIDw9IGNhcnJ5IDwgTUFYX0lOVFxyXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXHJcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBzdW0sIGk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBzdW0gPSBhW2ldIC0gYmFzZSArIGNhcnJ5O1xyXG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3Ioc3VtIC8gYmFzZSk7XHJcbiAgICAgICAgICAgIHJbaV0gPSBzdW0gLSBjYXJyeSAqIGJhc2U7XHJcbiAgICAgICAgICAgIGNhcnJ5ICs9IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcclxuICAgICAgICAgICAgcltpKytdID0gY2FycnkgJSBiYXNlO1xyXG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XHJcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWUsIGIgPSBuLnZhbHVlO1xyXG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKGEsIE1hdGguYWJzKGIpKSwgdGhpcy5zaWduKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZEFueShhLCBiKSwgdGhpcy5zaWduKTtcclxuICAgIH07XHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wbHVzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYWRkO1xyXG5cclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XHJcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIGlmIChhIDwgMCAhPT0gbi5zaWduKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnRyYWN0KG4ubmVnYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYiA9IG4udmFsdWU7XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICBpZiAoaXNQcmVjaXNlKGEgKyBiKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoYSArIGIpO1xyXG4gICAgICAgICAgICBiID0gc21hbGxUb0FycmF5KE1hdGguYWJzKGIpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKGFkZFNtYWxsKGIsIE1hdGguYWJzKGEpKSwgYSA8IDApO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUucGx1cyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYWRkO1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBsdXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFkZDtcclxuXHJcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdChhLCBiKSB7IC8vIGFzc3VtZXMgYSBhbmQgYiBhcmUgYXJyYXlzIHdpdGggYSA+PSBiXHJcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxyXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcclxuICAgICAgICAgICAgciA9IG5ldyBBcnJheShhX2wpLFxyXG4gICAgICAgICAgICBib3Jyb3cgPSAwLFxyXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcclxuICAgICAgICAgICAgaSwgZGlmZmVyZW5jZTtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYl9sOyBpKyspIHtcclxuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3cgLSBiW2ldO1xyXG4gICAgICAgICAgICBpZiAoZGlmZmVyZW5jZSA8IDApIHtcclxuICAgICAgICAgICAgICAgIGRpZmZlcmVuY2UgKz0gYmFzZTtcclxuICAgICAgICAgICAgICAgIGJvcnJvdyA9IDE7XHJcbiAgICAgICAgICAgIH0gZWxzZSBib3Jyb3cgPSAwO1xyXG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChpID0gYl9sOyBpIDwgYV9sOyBpKyspIHtcclxuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gLSBib3Jyb3c7XHJcbiAgICAgICAgICAgIGlmIChkaWZmZXJlbmNlIDwgMCkgZGlmZmVyZW5jZSArPSBiYXNlO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJbaSsrXSA9IGRpZmZlcmVuY2U7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICg7IGkgPCBhX2w7IGkrKykge1xyXG4gICAgICAgICAgICByW2ldID0gYVtpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJpbShyKTtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBzdWJ0cmFjdEFueShhLCBiLCBzaWduKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlO1xyXG4gICAgICAgIGlmIChjb21wYXJlQWJzKGEsIGIpID49IDApIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBzdWJ0cmFjdChhLCBiKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHN1YnRyYWN0KGIsIGEpO1xyXG4gICAgICAgICAgICBzaWduID0gIXNpZ247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhbHVlID0gYXJyYXlUb1NtYWxsKHZhbHVlKTtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChzaWduKSB2YWx1ZSA9IC12YWx1ZTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodmFsdWUsIHNpZ24pO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHN1YnRyYWN0U21hbGwoYSwgYiwgc2lnbikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggMCA8PSBiIDwgTUFYX0lOVFxyXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXHJcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXHJcbiAgICAgICAgICAgIGNhcnJ5ID0gLWIsXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBpLCBkaWZmZXJlbmNlO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgZGlmZmVyZW5jZSA9IGFbaV0gKyBjYXJyeTtcclxuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKGRpZmZlcmVuY2UgLyBiYXNlKTtcclxuICAgICAgICAgICAgZGlmZmVyZW5jZSAlPSBiYXNlO1xyXG4gICAgICAgICAgICByW2ldID0gZGlmZmVyZW5jZSA8IDAgPyBkaWZmZXJlbmNlICsgYmFzZSA6IGRpZmZlcmVuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHIgPSBhcnJheVRvU21hbGwocik7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChzaWduKSByID0gLXI7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHIpO1xyXG4gICAgICAgIH0gcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHIsIHNpZ24pO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodik7XHJcbiAgICAgICAgaWYgKHRoaXMuc2lnbiAhPT0gbi5zaWduKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmFkZChuLm5lZ2F0ZSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGEgPSB0aGlzLnZhbHVlLCBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKVxyXG4gICAgICAgICAgICByZXR1cm4gc3VidHJhY3RTbWFsbChhLCBNYXRoLmFicyhiKSwgdGhpcy5zaWduKTtcclxuICAgICAgICByZXR1cm4gc3VidHJhY3RBbnkoYSwgYiwgdGhpcy5zaWduKTtcclxuICAgIH07XHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5taW51cyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0O1xyXG5cclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KTtcclxuICAgICAgICB2YXIgYSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKGEgPCAwICE9PSBuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYWRkKG4ubmVnYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYiA9IG4udmFsdWU7XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcihhIC0gYik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKGIsIE1hdGguYWJzKGEpLCBhID49IDApO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUubWludXMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnN1YnRyYWN0O1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuc3VidHJhY3QgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLSBwYXJzZVZhbHVlKHYpLnZhbHVlKTtcclxuICAgIH1cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubWludXMgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnN1YnRyYWN0O1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIodGhpcy52YWx1ZSwgIXRoaXMuc2lnbik7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5uZWdhdGUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHNpZ24gPSB0aGlzLnNpZ247XHJcbiAgICAgICAgdmFyIHNtYWxsID0gbmV3IFNtYWxsSW50ZWdlcigtdGhpcy52YWx1ZSk7XHJcbiAgICAgICAgc21hbGwuc2lnbiA9ICFzaWduO1xyXG4gICAgICAgIHJldHVybiBzbWFsbDtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCgtdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcih0aGlzLnZhbHVlLCBmYWxzZSk7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5hYnMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIoTWF0aC5hYnModGhpcy52YWx1ZSkpO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuYWJzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgPj0gMCA/IHRoaXMudmFsdWUgOiAtdGhpcy52YWx1ZSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIG11bHRpcGx5TG9uZyhhLCBiKSB7XHJcbiAgICAgICAgdmFyIGFfbCA9IGEubGVuZ3RoLFxyXG4gICAgICAgICAgICBiX2wgPSBiLmxlbmd0aCxcclxuICAgICAgICAgICAgbCA9IGFfbCArIGJfbCxcclxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwpLFxyXG4gICAgICAgICAgICBiYXNlID0gQkFTRSxcclxuICAgICAgICAgICAgcHJvZHVjdCwgY2FycnksIGksIGFfaSwgYl9qO1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhX2w7ICsraSkge1xyXG4gICAgICAgICAgICBhX2kgPSBhW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGJfbDsgKytqKSB7XHJcbiAgICAgICAgICAgICAgICBiX2ogPSBiW2pdO1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjdCA9IGFfaSAqIGJfaiArIHJbaSArIGpdO1xyXG4gICAgICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcclxuICAgICAgICAgICAgICAgIHJbaSArIGpdID0gcHJvZHVjdCAtIGNhcnJ5ICogYmFzZTtcclxuICAgICAgICAgICAgICAgIHJbaSArIGogKyAxXSArPSBjYXJyeTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0cmltKHIpO1xyXG4gICAgICAgIHJldHVybiByO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIG11bHRpcGx5U21hbGwoYSwgYikgeyAvLyBhc3N1bWVzIGEgaXMgYXJyYXksIGIgaXMgbnVtYmVyIHdpdGggfGJ8IDwgQkFTRVxyXG4gICAgICAgIHZhciBsID0gYS5sZW5ndGgsXHJcbiAgICAgICAgICAgIHIgPSBuZXcgQXJyYXkobCksXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBjYXJyeSA9IDAsXHJcbiAgICAgICAgICAgIHByb2R1Y3QsIGk7XHJcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBwcm9kdWN0ID0gYVtpXSAqIGIgKyBjYXJyeTtcclxuICAgICAgICAgICAgY2FycnkgPSBNYXRoLmZsb29yKHByb2R1Y3QgLyBiYXNlKTtcclxuICAgICAgICAgICAgcltpXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHdoaWxlIChjYXJyeSA+IDApIHtcclxuICAgICAgICAgICAgcltpKytdID0gY2FycnkgJSBiYXNlO1xyXG4gICAgICAgICAgICBjYXJyeSA9IE1hdGguZmxvb3IoY2FycnkgLyBiYXNlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gc2hpZnRMZWZ0KHgsIG4pIHtcclxuICAgICAgICB2YXIgciA9IFtdO1xyXG4gICAgICAgIHdoaWxlIChuLS0gPiAwKSByLnB1c2goMCk7XHJcbiAgICAgICAgcmV0dXJuIHIuY29uY2F0KHgpO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIG11bHRpcGx5S2FyYXRzdWJhKHgsIHkpIHtcclxuICAgICAgICB2YXIgbiA9IE1hdGgubWF4KHgubGVuZ3RoLCB5Lmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGlmIChuIDw9IDMwKSByZXR1cm4gbXVsdGlwbHlMb25nKHgsIHkpO1xyXG4gICAgICAgIG4gPSBNYXRoLmNlaWwobiAvIDIpO1xyXG5cclxuICAgICAgICB2YXIgYiA9IHguc2xpY2UobiksXHJcbiAgICAgICAgICAgIGEgPSB4LnNsaWNlKDAsIG4pLFxyXG4gICAgICAgICAgICBkID0geS5zbGljZShuKSxcclxuICAgICAgICAgICAgYyA9IHkuc2xpY2UoMCwgbik7XHJcblxyXG4gICAgICAgIHZhciBhYyA9IG11bHRpcGx5S2FyYXRzdWJhKGEsIGMpLFxyXG4gICAgICAgICAgICBiZCA9IG11bHRpcGx5S2FyYXRzdWJhKGIsIGQpLFxyXG4gICAgICAgICAgICBhYmNkID0gbXVsdGlwbHlLYXJhdHN1YmEoYWRkQW55KGEsIGIpLCBhZGRBbnkoYywgZCkpO1xyXG5cclxuICAgICAgICB2YXIgcHJvZHVjdCA9IGFkZEFueShhZGRBbnkoYWMsIHNoaWZ0TGVmdChzdWJ0cmFjdChzdWJ0cmFjdChhYmNkLCBhYyksIGJkKSwgbikpLCBzaGlmdExlZnQoYmQsIDIgKiBuKSk7XHJcbiAgICAgICAgdHJpbShwcm9kdWN0KTtcclxuICAgICAgICByZXR1cm4gcHJvZHVjdDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIGlzIGRlcml2ZWQgZnJvbSBhIHN1cmZhY2UgZml0IG9mIGEgZ3JhcGggcGxvdHRpbmcgdGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2VcclxuICAgIC8vIGJldHdlZW4gbG9uZyBtdWx0aXBsaWNhdGlvbiBhbmQga2FyYXRzdWJhIG11bHRpcGxpY2F0aW9uIHZlcnN1cyB0aGUgbGVuZ3RocyBvZiB0aGUgdHdvIGFycmF5cy5cclxuICAgIGZ1bmN0aW9uIHVzZUthcmF0c3ViYShsMSwgbDIpIHtcclxuICAgICAgICByZXR1cm4gLTAuMDEyICogbDEgLSAwLjAxMiAqIGwyICsgMC4wMDAwMTUgKiBsMSAqIGwyID4gMDtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxyXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWUsXHJcbiAgICAgICAgICAgIHNpZ24gPSB0aGlzLnNpZ24gIT09IG4uc2lnbixcclxuICAgICAgICAgICAgYWJzO1xyXG4gICAgICAgIGlmIChuLmlzU21hbGwpIHtcclxuICAgICAgICAgICAgaWYgKGIgPT09IDApIHJldHVybiBJbnRlZ2VyWzBdO1xyXG4gICAgICAgICAgICBpZiAoYiA9PT0gMSkgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgICAgIGlmIChiID09PSAtMSkgcmV0dXJuIHRoaXMubmVnYXRlKCk7XHJcbiAgICAgICAgICAgIGFicyA9IE1hdGguYWJzKGIpO1xyXG4gICAgICAgICAgICBpZiAoYWJzIDwgQkFTRSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKG11bHRpcGx5U21hbGwoYSwgYWJzKSwgc2lnbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYiA9IHNtYWxsVG9BcnJheShhYnMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodXNlS2FyYXRzdWJhKGEubGVuZ3RoLCBiLmxlbmd0aCkpIC8vIEthcmF0c3ViYSBpcyBvbmx5IGZhc3RlciBmb3IgY2VydGFpbiBhcnJheSBzaXplc1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlLYXJhdHN1YmEoYSwgYiksIHNpZ24pO1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYSwgYiksIHNpZ24pO1xyXG4gICAgfTtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50aW1lcyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm11bHRpcGx5O1xyXG5cclxuICAgIGZ1bmN0aW9uIG11bHRpcGx5U21hbGxBbmRBcnJheShhLCBiLCBzaWduKSB7IC8vIGEgPj0gMFxyXG4gICAgICAgIGlmIChhIDwgQkFTRSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIobXVsdGlwbHlTbWFsbChiLCBhKSwgc2lnbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihtdWx0aXBseUxvbmcoYiwgc21hbGxUb0FycmF5KGEpKSwgc2lnbik7XHJcbiAgICB9XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLl9tdWx0aXBseUJ5U21hbGwgPSBmdW5jdGlvbiAoYSkge1xyXG4gICAgICAgIGlmIChpc1ByZWNpc2UoYS52YWx1ZSAqIHRoaXMudmFsdWUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKGEudmFsdWUgKiB0aGlzLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG11bHRpcGx5U21hbGxBbmRBcnJheShNYXRoLmFicyhhLnZhbHVlKSwgc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSwgdGhpcy5zaWduICE9PSBhLnNpZ24pO1xyXG4gICAgfTtcclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLl9tdWx0aXBseUJ5U21hbGwgPSBmdW5jdGlvbiAoYSkge1xyXG4gICAgICAgIGlmIChhLnZhbHVlID09PSAwKSByZXR1cm4gSW50ZWdlclswXTtcclxuICAgICAgICBpZiAoYS52YWx1ZSA9PT0gMSkgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgaWYgKGEudmFsdWUgPT09IC0xKSByZXR1cm4gdGhpcy5uZWdhdGUoKTtcclxuICAgICAgICByZXR1cm4gbXVsdGlwbHlTbWFsbEFuZEFycmF5KE1hdGguYWJzKGEudmFsdWUpLCB0aGlzLnZhbHVlLCB0aGlzLnNpZ24gIT09IGEuc2lnbik7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlVmFsdWUodikuX211bHRpcGx5QnlTbWFsbCh0aGlzKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRpbWVzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5tdWx0aXBseTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm11bHRpcGx5ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICogcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnRpbWVzID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tdWx0aXBseTtcclxuXHJcbiAgICBmdW5jdGlvbiBzcXVhcmUoYSkge1xyXG4gICAgICAgIC8vY29uc29sZS5hc3NlcnQoMiAqIEJBU0UgKiBCQVNFIDwgTUFYX0lOVCk7XHJcbiAgICAgICAgdmFyIGwgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgciA9IGNyZWF0ZUFycmF5KGwgKyBsKSxcclxuICAgICAgICAgICAgYmFzZSA9IEJBU0UsXHJcbiAgICAgICAgICAgIHByb2R1Y3QsIGNhcnJ5LCBpLCBhX2ksIGFfajtcclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGFfaSA9IGFbaV07XHJcbiAgICAgICAgICAgIGNhcnJ5ID0gMCAtIGFfaSAqIGFfaTtcclxuICAgICAgICAgICAgZm9yICh2YXIgaiA9IGk7IGogPCBsOyBqKyspIHtcclxuICAgICAgICAgICAgICAgIGFfaiA9IGFbal07XHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gMiAqIChhX2kgKiBhX2opICsgcltpICsgal0gKyBjYXJyeTtcclxuICAgICAgICAgICAgICAgIGNhcnJ5ID0gTWF0aC5mbG9vcihwcm9kdWN0IC8gYmFzZSk7XHJcbiAgICAgICAgICAgICAgICByW2kgKyBqXSA9IHByb2R1Y3QgLSBjYXJyeSAqIGJhc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcltpICsgbF0gPSBjYXJyeTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJpbShyKTtcclxuICAgICAgICByZXR1cm4gcjtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBCaWdJbnRlZ2VyKHNxdWFyZSh0aGlzLnZhbHVlKSwgZmFsc2UpO1xyXG4gICAgfTtcclxuXHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnNxdWFyZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlICogdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAoaXNQcmVjaXNlKHZhbHVlKSkgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodmFsdWUpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihzcXVhcmUoc21hbGxUb0FycmF5KE1hdGguYWJzKHRoaXMudmFsdWUpKSksIGZhbHNlKTtcclxuICAgIH07XHJcblxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zcXVhcmUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgKiB0aGlzLnZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkaXZNb2QxKGEsIGIpIHsgLy8gTGVmdCBvdmVyIGZyb20gcHJldmlvdXMgdmVyc2lvbi4gUGVyZm9ybXMgZmFzdGVyIHRoYW4gZGl2TW9kMiBvbiBzbWFsbGVyIGlucHV0IHNpemVzLlxyXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICByZXN1bHQgPSBjcmVhdGVBcnJheShiLmxlbmd0aCksXHJcbiAgICAgICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGJbYl9sIC0gMV0sXHJcbiAgICAgICAgICAgIC8vIG5vcm1hbGl6YXRpb25cclxuICAgICAgICAgICAgbGFtYmRhID0gTWF0aC5jZWlsKGJhc2UgLyAoMiAqIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCkpLFxyXG4gICAgICAgICAgICByZW1haW5kZXIgPSBtdWx0aXBseVNtYWxsKGEsIGxhbWJkYSksXHJcbiAgICAgICAgICAgIGRpdmlzb3IgPSBtdWx0aXBseVNtYWxsKGIsIGxhbWJkYSksXHJcbiAgICAgICAgICAgIHF1b3RpZW50RGlnaXQsIHNoaWZ0LCBjYXJyeSwgYm9ycm93LCBpLCBsLCBxO1xyXG4gICAgICAgIGlmIChyZW1haW5kZXIubGVuZ3RoIDw9IGFfbCkgcmVtYWluZGVyLnB1c2goMCk7XHJcbiAgICAgICAgZGl2aXNvci5wdXNoKDApO1xyXG4gICAgICAgIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCA9IGRpdmlzb3JbYl9sIC0gMV07XHJcbiAgICAgICAgZm9yIChzaGlmdCA9IGFfbCAtIGJfbDsgc2hpZnQgPj0gMDsgc2hpZnQtLSkge1xyXG4gICAgICAgICAgICBxdW90aWVudERpZ2l0ID0gYmFzZSAtIDE7XHJcbiAgICAgICAgICAgIGlmIChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICE9PSBkaXZpc29yTW9zdFNpZ25pZmljYW50RGlnaXQpIHtcclxuICAgICAgICAgICAgICAgIHF1b3RpZW50RGlnaXQgPSBNYXRoLmZsb29yKChyZW1haW5kZXJbc2hpZnQgKyBiX2xdICogYmFzZSArIHJlbWFpbmRlcltzaGlmdCArIGJfbCAtIDFdKSAvIGRpdmlzb3JNb3N0U2lnbmlmaWNhbnREaWdpdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8gcXVvdGllbnREaWdpdCA8PSBiYXNlIC0gMVxyXG4gICAgICAgICAgICBjYXJyeSA9IDA7XHJcbiAgICAgICAgICAgIGJvcnJvdyA9IDA7XHJcbiAgICAgICAgICAgIGwgPSBkaXZpc29yLmxlbmd0aDtcclxuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgY2FycnkgKz0gcXVvdGllbnREaWdpdCAqIGRpdmlzb3JbaV07XHJcbiAgICAgICAgICAgICAgICBxID0gTWF0aC5mbG9vcihjYXJyeSAvIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgYm9ycm93ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gKGNhcnJ5IC0gcSAqIGJhc2UpO1xyXG4gICAgICAgICAgICAgICAgY2FycnkgPSBxO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJvcnJvdyA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGJvcnJvdyArIGJhc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgYm9ycm93ID0gLTE7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gYm9ycm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGJvcnJvdyA9IDA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2hpbGUgKGJvcnJvdyAhPT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcXVvdGllbnREaWdpdCAtPSAxO1xyXG4gICAgICAgICAgICAgICAgY2FycnkgPSAwO1xyXG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcnJ5ICs9IHJlbWFpbmRlcltzaGlmdCArIGldIC0gYmFzZSArIGRpdmlzb3JbaV07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNhcnJ5IDwgMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZW1haW5kZXJbc2hpZnQgKyBpXSA9IGNhcnJ5ICsgYmFzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FycnkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcltzaGlmdCArIGldID0gY2Fycnk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhcnJ5ID0gMTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBib3Jyb3cgKz0gY2Fycnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVzdWx0W3NoaWZ0XSA9IHF1b3RpZW50RGlnaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGRlbm9ybWFsaXphdGlvblxyXG4gICAgICAgIHJlbWFpbmRlciA9IGRpdk1vZFNtYWxsKHJlbWFpbmRlciwgbGFtYmRhKVswXTtcclxuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocmVtYWluZGVyKV07XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gZGl2TW9kMihhLCBiKSB7IC8vIEltcGxlbWVudGF0aW9uIGlkZWEgc2hhbWVsZXNzbHkgc3RvbGVuIGZyb20gU2lsZW50IE1hdHQncyBsaWJyYXJ5IGh0dHA6Ly9zaWxlbnRtYXR0LmNvbS9iaWdpbnRlZ2VyL1xyXG4gICAgICAgIC8vIFBlcmZvcm1zIGZhc3RlciB0aGFuIGRpdk1vZDEgb24gbGFyZ2VyIGlucHV0IHNpemVzLlxyXG4gICAgICAgIHZhciBhX2wgPSBhLmxlbmd0aCxcclxuICAgICAgICAgICAgYl9sID0gYi5sZW5ndGgsXHJcbiAgICAgICAgICAgIHJlc3VsdCA9IFtdLFxyXG4gICAgICAgICAgICBwYXJ0ID0gW10sXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBndWVzcywgeGxlbiwgaGlnaHgsIGhpZ2h5LCBjaGVjaztcclxuICAgICAgICB3aGlsZSAoYV9sKSB7XHJcbiAgICAgICAgICAgIHBhcnQudW5zaGlmdChhWy0tYV9sXSk7XHJcbiAgICAgICAgICAgIHRyaW0ocGFydCk7XHJcbiAgICAgICAgICAgIGlmIChjb21wYXJlQWJzKHBhcnQsIGIpIDwgMCkge1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goMCk7XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB4bGVuID0gcGFydC5sZW5ndGg7XHJcbiAgICAgICAgICAgIGhpZ2h4ID0gcGFydFt4bGVuIC0gMV0gKiBiYXNlICsgcGFydFt4bGVuIC0gMl07XHJcbiAgICAgICAgICAgIGhpZ2h5ID0gYltiX2wgLSAxXSAqIGJhc2UgKyBiW2JfbCAtIDJdO1xyXG4gICAgICAgICAgICBpZiAoeGxlbiA+IGJfbCkge1xyXG4gICAgICAgICAgICAgICAgaGlnaHggPSAoaGlnaHggKyAxKSAqIGJhc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZ3Vlc3MgPSBNYXRoLmNlaWwoaGlnaHggLyBoaWdoeSk7XHJcbiAgICAgICAgICAgIGRvIHtcclxuICAgICAgICAgICAgICAgIGNoZWNrID0gbXVsdGlwbHlTbWFsbChiLCBndWVzcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29tcGFyZUFicyhjaGVjaywgcGFydCkgPD0gMCkgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBndWVzcy0tO1xyXG4gICAgICAgICAgICB9IHdoaWxlIChndWVzcyk7XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKGd1ZXNzKTtcclxuICAgICAgICAgICAgcGFydCA9IHN1YnRyYWN0KHBhcnQsIGNoZWNrKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnJldmVyc2UoKTtcclxuICAgICAgICByZXR1cm4gW2FycmF5VG9TbWFsbChyZXN1bHQpLCBhcnJheVRvU21hbGwocGFydCldO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIGRpdk1vZFNtYWxsKHZhbHVlLCBsYW1iZGEpIHtcclxuICAgICAgICB2YXIgbGVuZ3RoID0gdmFsdWUubGVuZ3RoLFxyXG4gICAgICAgICAgICBxdW90aWVudCA9IGNyZWF0ZUFycmF5KGxlbmd0aCksXHJcbiAgICAgICAgICAgIGJhc2UgPSBCQVNFLFxyXG4gICAgICAgICAgICBpLCBxLCByZW1haW5kZXIsIGRpdmlzb3I7XHJcbiAgICAgICAgcmVtYWluZGVyID0gMDtcclxuICAgICAgICBmb3IgKGkgPSBsZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xyXG4gICAgICAgICAgICBkaXZpc29yID0gcmVtYWluZGVyICogYmFzZSArIHZhbHVlW2ldO1xyXG4gICAgICAgICAgICBxID0gdHJ1bmNhdGUoZGl2aXNvciAvIGxhbWJkYSk7XHJcbiAgICAgICAgICAgIHJlbWFpbmRlciA9IGRpdmlzb3IgLSBxICogbGFtYmRhO1xyXG4gICAgICAgICAgICBxdW90aWVudFtpXSA9IHEgfCAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gW3F1b3RpZW50LCByZW1haW5kZXIgfCAwXTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBkaXZNb2RBbnkoc2VsZiwgdikge1xyXG4gICAgICAgIHZhciB2YWx1ZSwgbiA9IHBhcnNlVmFsdWUodik7XHJcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbbmV3IE5hdGl2ZUJpZ0ludChzZWxmLnZhbHVlIC8gbi52YWx1ZSksIG5ldyBOYXRpdmVCaWdJbnQoc2VsZi52YWx1ZSAlIG4udmFsdWUpXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGEgPSBzZWxmLnZhbHVlLCBiID0gbi52YWx1ZTtcclxuICAgICAgICB2YXIgcXVvdGllbnQ7XHJcbiAgICAgICAgaWYgKGIgPT09IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBkaXZpZGUgYnkgemVyb1wiKTtcclxuICAgICAgICBpZiAoc2VsZi5pc1NtYWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChuLmlzU21hbGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBbbmV3IFNtYWxsSW50ZWdlcih0cnVuY2F0ZShhIC8gYikpLCBuZXcgU21hbGxJbnRlZ2VyKGEgJSBiKV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICBpZiAoYiA9PT0gMSkgcmV0dXJuIFtzZWxmLCBJbnRlZ2VyWzBdXTtcclxuICAgICAgICAgICAgaWYgKGIgPT0gLTEpIHJldHVybiBbc2VsZi5uZWdhdGUoKSwgSW50ZWdlclswXV07XHJcbiAgICAgICAgICAgIHZhciBhYnMgPSBNYXRoLmFicyhiKTtcclxuICAgICAgICAgICAgaWYgKGFicyA8IEJBU0UpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gZGl2TW9kU21hbGwoYSwgYWJzKTtcclxuICAgICAgICAgICAgICAgIHF1b3RpZW50ID0gYXJyYXlUb1NtYWxsKHZhbHVlWzBdKTtcclxuICAgICAgICAgICAgICAgIHZhciByZW1haW5kZXIgPSB2YWx1ZVsxXTtcclxuICAgICAgICAgICAgICAgIGlmIChzZWxmLnNpZ24pIHJlbWFpbmRlciA9IC1yZW1haW5kZXI7XHJcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHF1b3RpZW50ID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGYuc2lnbiAhPT0gbi5zaWduKSBxdW90aWVudCA9IC1xdW90aWVudDtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW25ldyBTbWFsbEludGVnZXIocXVvdGllbnQpLCBuZXcgU21hbGxJbnRlZ2VyKHJlbWFpbmRlcildO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgc2VsZi5zaWduICE9PSBuLnNpZ24pLCBuZXcgU21hbGxJbnRlZ2VyKHJlbWFpbmRlcildO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGIgPSBzbWFsbFRvQXJyYXkoYWJzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGNvbXBhcmlzb24gPSBjb21wYXJlQWJzKGEsIGIpO1xyXG4gICAgICAgIGlmIChjb21wYXJpc29uID09PSAtMSkgcmV0dXJuIFtJbnRlZ2VyWzBdLCBzZWxmXTtcclxuICAgICAgICBpZiAoY29tcGFyaXNvbiA9PT0gMCkgcmV0dXJuIFtJbnRlZ2VyW3NlbGYuc2lnbiA9PT0gbi5zaWduID8gMSA6IC0xXSwgSW50ZWdlclswXV07XHJcblxyXG4gICAgICAgIC8vIGRpdk1vZDEgaXMgZmFzdGVyIG9uIHNtYWxsZXIgaW5wdXQgc2l6ZXNcclxuICAgICAgICBpZiAoYS5sZW5ndGggKyBiLmxlbmd0aCA8PSAyMDApXHJcbiAgICAgICAgICAgIHZhbHVlID0gZGl2TW9kMShhLCBiKTtcclxuICAgICAgICBlbHNlIHZhbHVlID0gZGl2TW9kMihhLCBiKTtcclxuXHJcbiAgICAgICAgcXVvdGllbnQgPSB2YWx1ZVswXTtcclxuICAgICAgICB2YXIgcVNpZ24gPSBzZWxmLnNpZ24gIT09IG4uc2lnbixcclxuICAgICAgICAgICAgbW9kID0gdmFsdWVbMV0sXHJcbiAgICAgICAgICAgIG1TaWduID0gc2VsZi5zaWduO1xyXG4gICAgICAgIGlmICh0eXBlb2YgcXVvdGllbnQgPT09IFwibnVtYmVyXCIpIHtcclxuICAgICAgICAgICAgaWYgKHFTaWduKSBxdW90aWVudCA9IC1xdW90aWVudDtcclxuICAgICAgICAgICAgcXVvdGllbnQgPSBuZXcgU21hbGxJbnRlZ2VyKHF1b3RpZW50KTtcclxuICAgICAgICB9IGVsc2UgcXVvdGllbnQgPSBuZXcgQmlnSW50ZWdlcihxdW90aWVudCwgcVNpZ24pO1xyXG4gICAgICAgIGlmICh0eXBlb2YgbW9kID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChtU2lnbikgbW9kID0gLW1vZDtcclxuICAgICAgICAgICAgbW9kID0gbmV3IFNtYWxsSW50ZWdlcihtb2QpO1xyXG4gICAgICAgIH0gZWxzZSBtb2QgPSBuZXcgQmlnSW50ZWdlcihtb2QsIG1TaWduKTtcclxuICAgICAgICByZXR1cm4gW3F1b3RpZW50LCBtb2RdO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IGRpdk1vZEFueSh0aGlzLCB2KTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBxdW90aWVudDogcmVzdWx0WzBdLFxyXG4gICAgICAgICAgICByZW1haW5kZXI6IHJlc3VsdFsxXVxyXG4gICAgICAgIH07XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5kaXZtb2QgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmRpdm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmRpdm1vZDtcclxuXHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gZGl2TW9kQW55KHRoaXMsIHYpWzBdO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3ZlciA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlIC8gcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5kaXZpZGUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5vdmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZGl2aWRlO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZCA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIGRpdk1vZEFueSh0aGlzLCB2KVsxXTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1vZCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUucmVtYWluZGVyID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICUgcGFyc2VWYWx1ZSh2KS52YWx1ZSk7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5yZW1haW5kZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnJlbWFpbmRlciA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZDtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wb3cgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcclxuICAgICAgICAgICAgYSA9IHRoaXMudmFsdWUsXHJcbiAgICAgICAgICAgIGIgPSBuLnZhbHVlLFxyXG4gICAgICAgICAgICB2YWx1ZSwgeCwgeTtcclxuICAgICAgICBpZiAoYiA9PT0gMCkgcmV0dXJuIEludGVnZXJbMV07XHJcbiAgICAgICAgaWYgKGEgPT09IDApIHJldHVybiBJbnRlZ2VyWzBdO1xyXG4gICAgICAgIGlmIChhID09PSAxKSByZXR1cm4gSW50ZWdlclsxXTtcclxuICAgICAgICBpZiAoYSA9PT0gLTEpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xyXG4gICAgICAgIGlmIChuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIEludGVnZXJbMF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbi5pc1NtYWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJUaGUgZXhwb25lbnQgXCIgKyBuLnRvU3RyaW5nKCkgKyBcIiBpcyB0b28gbGFyZ2UuXCIpO1xyXG4gICAgICAgIGlmICh0aGlzLmlzU21hbGwpIHtcclxuICAgICAgICAgICAgaWYgKGlzUHJlY2lzZSh2YWx1ZSA9IE1hdGgucG93KGEsIGIpKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU21hbGxJbnRlZ2VyKHRydW5jYXRlKHZhbHVlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHggPSB0aGlzO1xyXG4gICAgICAgIHkgPSBJbnRlZ2VyWzFdO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgIGlmIChiICYgMSA9PT0gMSkge1xyXG4gICAgICAgICAgICAgICAgeSA9IHkudGltZXMoeCk7XHJcbiAgICAgICAgICAgICAgICAtLWI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGIgPT09IDApIGJyZWFrO1xyXG4gICAgICAgICAgICBiIC89IDI7XHJcbiAgICAgICAgICAgIHggPSB4LnNxdWFyZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnBvdztcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLnBvdyA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZSwgYiA9IG4udmFsdWU7XHJcbiAgICAgICAgdmFyIF8wID0gQmlnSW50KDApLCBfMSA9IEJpZ0ludCgxKSwgXzIgPSBCaWdJbnQoMik7XHJcbiAgICAgICAgaWYgKGIgPT09IF8wKSByZXR1cm4gSW50ZWdlclsxXTtcclxuICAgICAgICBpZiAoYSA9PT0gXzApIHJldHVybiBJbnRlZ2VyWzBdO1xyXG4gICAgICAgIGlmIChhID09PSBfMSkgcmV0dXJuIEludGVnZXJbMV07XHJcbiAgICAgICAgaWYgKGEgPT09IEJpZ0ludCgtMSkpIHJldHVybiBuLmlzRXZlbigpID8gSW50ZWdlclsxXSA6IEludGVnZXJbLTFdO1xyXG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSkgcmV0dXJuIG5ldyBOYXRpdmVCaWdJbnQoXzApO1xyXG4gICAgICAgIHZhciB4ID0gdGhpcztcclxuICAgICAgICB2YXIgeSA9IEludGVnZXJbMV07XHJcbiAgICAgICAgd2hpbGUgKHRydWUpIHtcclxuICAgICAgICAgICAgaWYgKChiICYgXzEpID09PSBfMSkge1xyXG4gICAgICAgICAgICAgICAgeSA9IHkudGltZXMoeCk7XHJcbiAgICAgICAgICAgICAgICAtLWI7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGIgPT09IF8wKSBicmVhaztcclxuICAgICAgICAgICAgYiAvPSBfMjtcclxuICAgICAgICAgICAgeCA9IHguc3F1YXJlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB5O1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IGZ1bmN0aW9uIChleHAsIG1vZCkge1xyXG4gICAgICAgIGV4cCA9IHBhcnNlVmFsdWUoZXhwKTtcclxuICAgICAgICBtb2QgPSBwYXJzZVZhbHVlKG1vZCk7XHJcbiAgICAgICAgaWYgKG1vZC5pc1plcm8oKSkgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IHRha2UgbW9kUG93IHdpdGggbW9kdWx1cyAwXCIpO1xyXG4gICAgICAgIHZhciByID0gSW50ZWdlclsxXSxcclxuICAgICAgICAgICAgYmFzZSA9IHRoaXMubW9kKG1vZCk7XHJcbiAgICAgICAgd2hpbGUgKGV4cC5pc1Bvc2l0aXZlKCkpIHtcclxuICAgICAgICAgICAgaWYgKGJhc2UuaXNaZXJvKCkpIHJldHVybiBJbnRlZ2VyWzBdO1xyXG4gICAgICAgICAgICBpZiAoZXhwLmlzT2RkKCkpIHIgPSByLm11bHRpcGx5KGJhc2UpLm1vZChtb2QpO1xyXG4gICAgICAgICAgICBleHAgPSBleHAuZGl2aWRlKDIpO1xyXG4gICAgICAgICAgICBiYXNlID0gYmFzZS5zcXVhcmUoKS5tb2QobW9kKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHI7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5tb2RQb3cgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm1vZFBvdyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLm1vZFBvdztcclxuXHJcbiAgICBmdW5jdGlvbiBjb21wYXJlQWJzKGEsIGIpIHtcclxuICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhLmxlbmd0aCA+IGIubGVuZ3RoID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKHZhciBpID0gYS5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgICAgICBpZiAoYVtpXSAhPT0gYltpXSkgcmV0dXJuIGFbaV0gPiBiW2ldID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gMDtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlQWJzID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXHJcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxyXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKSByZXR1cm4gMTtcclxuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KSxcclxuICAgICAgICAgICAgYSA9IE1hdGguYWJzKHRoaXMudmFsdWUpLFxyXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAobi5pc1NtYWxsKSB7XHJcbiAgICAgICAgICAgIGIgPSBNYXRoLmFicyhiKTtcclxuICAgICAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiAtMTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVBYnMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcclxuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XHJcbiAgICAgICAgYSA9IGEgPj0gMCA/IGEgOiAtYTtcclxuICAgICAgICBiID0gYiA+PSAwID8gYiA6IC1iO1xyXG4gICAgICAgIHJldHVybiBhID09PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGFib3V0IGNvbXBhcmlzb24gd2l0aCBJbmZpbml0eTpcclxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0ZXJvbHNvbi9CaWdJbnRlZ2VyLmpzL2lzc3Vlcy82MVxyXG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodiksXHJcbiAgICAgICAgICAgIGEgPSB0aGlzLnZhbHVlLFxyXG4gICAgICAgICAgICBiID0gbi52YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5zaWduICE9PSBuLnNpZ24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIG4uc2lnbiA/IDEgOiAtMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zaWduID8gLTEgOiAxO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY29tcGFyZUFicyhhLCBiKSAqICh0aGlzLnNpZ24gPyAtMSA6IDEpO1xyXG4gICAgfTtcclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbyA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmNvbXBhcmU7XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICBpZiAodiA9PT0gSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodiA9PT0gLUluZmluaXR5KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpLFxyXG4gICAgICAgICAgICBhID0gdGhpcy52YWx1ZSxcclxuICAgICAgICAgICAgYiA9IG4udmFsdWU7XHJcbiAgICAgICAgaWYgKG4uaXNTbWFsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gYSA9PSBiID8gMCA6IGEgPiBiID8gMSA6IC0xO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYSA8IDAgIT09IG4uc2lnbikge1xyXG4gICAgICAgICAgICByZXR1cm4gYSA8IDAgPyAtMSA6IDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhIDwgMCA/IDEgOiAtMTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmNvbXBhcmVUbyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuY29tcGFyZTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIGlmICh2ID09PSBJbmZpbml0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh2ID09PSAtSW5maW5pdHkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBhID0gdGhpcy52YWx1ZTtcclxuICAgICAgICB2YXIgYiA9IHBhcnNlVmFsdWUodikudmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIGEgPT09IGIgPyAwIDogYSA+IGIgPyAxIDogLTE7XHJcbiAgICB9XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmNvbXBhcmVUbyA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuY29tcGFyZTtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPT09IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5lcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZXF1YWxzID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5lcXVhbHM7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpICE9PSAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmVxID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS5ub3RFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm5lcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzID0gQmlnSW50ZWdlci5wcm90b3R5cGUubmVxID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90RXF1YWxzO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmdyZWF0ZXIgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPiAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuZ3QgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXIgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmd0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUuZ3QgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmxlc3NlciA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSh2KSA8IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5sdCA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5sdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyID0gQmlnSW50ZWdlci5wcm90b3R5cGUubHQgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXI7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuZ3JlYXRlck9yRXF1YWxzID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKHYpID49IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5nZXEgPSBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmdyZWF0ZXJPckVxdWFscyA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuZ2VxID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5nZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5ncmVhdGVyT3JFcXVhbHM7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBmdW5jdGlvbiAodikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUodikgPD0gMDtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmxlcSA9IE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmxlcSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubGVzc2VyT3JFcXVhbHMgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXEgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5sZXNzZXJPckVxdWFscztcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlWzBdICYgMSkgPT09IDA7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDA7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc0V2ZW4gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgQmlnSW50KDEpKSA9PT0gQmlnSW50KDApO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy52YWx1ZVswXSAmIDEpID09PSAxO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNPZGQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLnZhbHVlICYgMSkgPT09IDE7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc09kZCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gKHRoaXMudmFsdWUgJiBCaWdJbnQoMSkpID09PSBCaWdJbnQoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuc2lnbjtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzUG9zaXRpdmUgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWUgPiAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQb3NpdGl2ZTtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpZ247XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc05lZ2F0aXZlID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIDwgMDtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzTmVnYXRpdmUgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzTmVnYXRpdmU7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNVbml0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH07XHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzVW5pdCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5hYnModGhpcy52YWx1ZSkgPT09IDE7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5pc1VuaXQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWJzKCkudmFsdWUgPT09IEJpZ0ludCgxKTtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1plcm8gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSAwO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlID09PSBCaWdJbnQoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNEaXZpc2libGVCeSA9IGZ1bmN0aW9uICh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSBwYXJzZVZhbHVlKHYpO1xyXG4gICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG4uaXNVbml0KCkpIHJldHVybiB0cnVlO1xyXG4gICAgICAgIGlmIChuLmNvbXBhcmVBYnMoMikgPT09IDApIHJldHVybiB0aGlzLmlzRXZlbigpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1vZChuKS5pc1plcm8oKTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmlzRGl2aXNpYmxlQnkgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc0RpdmlzaWJsZUJ5O1xyXG5cclxuICAgIGZ1bmN0aW9uIGlzQmFzaWNQcmltZSh2KSB7XHJcbiAgICAgICAgdmFyIG4gPSB2LmFicygpO1xyXG4gICAgICAgIGlmIChuLmlzVW5pdCgpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG4uZXF1YWxzKDIpIHx8IG4uZXF1YWxzKDMpIHx8IG4uZXF1YWxzKDUpKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICBpZiAobi5pc0V2ZW4oKSB8fCBuLmlzRGl2aXNpYmxlQnkoMykgfHwgbi5pc0RpdmlzaWJsZUJ5KDUpKSByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgaWYgKG4ubGVzc2VyKDQ5KSkgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiBpdCdzIHByaW1lOiBsZXQgdGhlIG90aGVyIGZ1bmN0aW9ucyBmaWd1cmUgaXQgb3V0XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gbWlsbGVyUmFiaW5UZXN0KG4sIGEpIHtcclxuICAgICAgICB2YXIgblByZXYgPSBuLnByZXYoKSxcclxuICAgICAgICAgICAgYiA9IG5QcmV2LFxyXG4gICAgICAgICAgICByID0gMCxcclxuICAgICAgICAgICAgZCwgdCwgaSwgeDtcclxuICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkgYiA9IGIuZGl2aWRlKDIpLCByKys7XHJcbiAgICAgICAgbmV4dDogZm9yIChpID0gMDsgaSA8IGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKG4ubGVzc2VyKGFbaV0pKSBjb250aW51ZTtcclxuICAgICAgICAgICAgeCA9IGJpZ0ludChhW2ldKS5tb2RQb3coYiwgbik7XHJcbiAgICAgICAgICAgIGlmICh4LmlzVW5pdCgpIHx8IHguZXF1YWxzKG5QcmV2KSkgY29udGludWU7XHJcbiAgICAgICAgICAgIGZvciAoZCA9IHIgLSAxOyBkICE9IDA7IGQtLSkge1xyXG4gICAgICAgICAgICAgICAgeCA9IHguc3F1YXJlKCkubW9kKG4pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHguaXNVbml0KCkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGlmICh4LmVxdWFscyhuUHJldikpIGNvbnRpbnVlIG5leHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTZXQgXCJzdHJpY3RcIiB0byB0cnVlIHRvIGZvcmNlIEdSSC1zdXBwb3J0ZWQgbG93ZXIgYm91bmQgb2YgMipsb2coTileMlxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IGZ1bmN0aW9uIChzdHJpY3QpIHtcclxuICAgICAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZSh0aGlzKTtcclxuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcclxuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XHJcbiAgICAgICAgdmFyIGJpdHMgPSBuLmJpdExlbmd0aCgpO1xyXG4gICAgICAgIGlmIChiaXRzIDw9IDY0KVxyXG4gICAgICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIFsyLCAzLCA1LCA3LCAxMSwgMTMsIDE3LCAxOSwgMjMsIDI5LCAzMSwgMzddKTtcclxuICAgICAgICB2YXIgbG9nTiA9IE1hdGgubG9nKDIpICogYml0cy50b0pTTnVtYmVyKCk7XHJcbiAgICAgICAgdmFyIHQgPSBNYXRoLmNlaWwoKHN0cmljdCA9PT0gdHJ1ZSkgPyAoMiAqIE1hdGgucG93KGxvZ04sIDIpKSA6IGxvZ04pO1xyXG4gICAgICAgIGZvciAodmFyIGEgPSBbXSwgaSA9IDA7IGkgPCB0OyBpKyspIHtcclxuICAgICAgICAgICAgYS5wdXNoKGJpZ0ludChpICsgMikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcmltZSA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuaXNQcmltZSA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmlzUHJpbWU7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gZnVuY3Rpb24gKGl0ZXJhdGlvbnMpIHtcclxuICAgICAgICB2YXIgaXNQcmltZSA9IGlzQmFzaWNQcmltZSh0aGlzKTtcclxuICAgICAgICBpZiAoaXNQcmltZSAhPT0gdW5kZWZpbmVkKSByZXR1cm4gaXNQcmltZTtcclxuICAgICAgICB2YXIgbiA9IHRoaXMuYWJzKCk7XHJcbiAgICAgICAgdmFyIHQgPSBpdGVyYXRpb25zID09PSB1bmRlZmluZWQgPyA1IDogaXRlcmF0aW9ucztcclxuICAgICAgICBmb3IgKHZhciBhID0gW10sIGkgPSAwOyBpIDwgdDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGEucHVzaChiaWdJbnQucmFuZEJldHdlZW4oMiwgbi5taW51cygyKSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWlsbGVyUmFiaW5UZXN0KG4sIGEpO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUuaXNQcm9iYWJsZVByaW1lID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWUgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS5pc1Byb2JhYmxlUHJpbWU7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubW9kSW52ID0gZnVuY3Rpb24gKG4pIHtcclxuICAgICAgICB2YXIgdCA9IGJpZ0ludC56ZXJvLCBuZXdUID0gYmlnSW50Lm9uZSwgciA9IHBhcnNlVmFsdWUobiksIG5ld1IgPSB0aGlzLmFicygpLCBxLCBsYXN0VCwgbGFzdFI7XHJcbiAgICAgICAgd2hpbGUgKCFuZXdSLmlzWmVybygpKSB7XHJcbiAgICAgICAgICAgIHEgPSByLmRpdmlkZShuZXdSKTtcclxuICAgICAgICAgICAgbGFzdFQgPSB0O1xyXG4gICAgICAgICAgICBsYXN0UiA9IHI7XHJcbiAgICAgICAgICAgIHQgPSBuZXdUO1xyXG4gICAgICAgICAgICByID0gbmV3UjtcclxuICAgICAgICAgICAgbmV3VCA9IGxhc3RULnN1YnRyYWN0KHEubXVsdGlwbHkobmV3VCkpO1xyXG4gICAgICAgICAgICBuZXdSID0gbGFzdFIuc3VidHJhY3QocS5tdWx0aXBseShuZXdSKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghci5pc1VuaXQoKSkgdGhyb3cgbmV3IEVycm9yKHRoaXMudG9TdHJpbmcoKSArIFwiIGFuZCBcIiArIG4udG9TdHJpbmcoKSArIFwiIGFyZSBub3QgY28tcHJpbWVcIik7XHJcbiAgICAgICAgaWYgKHQuY29tcGFyZSgwKSA9PT0gLTEpIHtcclxuICAgICAgICAgICAgdCA9IHQuYWRkKG4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHQubmVnYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfTtcclxuXHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm1vZEludiA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubW9kSW52ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubW9kSW52O1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcclxuICAgICAgICBpZiAodGhpcy5zaWduKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWJ0cmFjdFNtYWxsKHZhbHVlLCAxLCB0aGlzLnNpZ24pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwodmFsdWUsIDEpLCB0aGlzLnNpZ24pO1xyXG4gICAgfTtcclxuICAgIFNtYWxsSW50ZWdlci5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSArIDEgPCBNQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSArIDEpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihNQVhfSU5UX0FSUiwgZmFsc2UpO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh0aGlzLnZhbHVlICsgQmlnSW50KDEpKTtcclxuICAgIH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKHRoaXMuc2lnbikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoYWRkU21hbGwodmFsdWUsIDEpLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHN1YnRyYWN0U21hbGwodmFsdWUsIDEsIHRoaXMuc2lnbik7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmFsdWU7XHJcbiAgICAgICAgaWYgKHZhbHVlIC0gMSA+IC1NQVhfSU5UKSByZXR1cm4gbmV3IFNtYWxsSW50ZWdlcih2YWx1ZSAtIDEpO1xyXG4gICAgICAgIHJldHVybiBuZXcgQmlnSW50ZWdlcihNQVhfSU5UX0FSUiwgdHJ1ZSk7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5wcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KHRoaXMudmFsdWUgLSBCaWdJbnQoMSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBwb3dlcnNPZlR3byA9IFsxXTtcclxuICAgIHdoaWxlICgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0gPD0gQkFTRSkgcG93ZXJzT2ZUd28ucHVzaCgyICogcG93ZXJzT2ZUd29bcG93ZXJzT2ZUd28ubGVuZ3RoIC0gMV0pO1xyXG4gICAgdmFyIHBvd2VyczJMZW5ndGggPSBwb3dlcnNPZlR3by5sZW5ndGgsIGhpZ2hlc3RQb3dlcjIgPSBwb3dlcnNPZlR3b1twb3dlcnMyTGVuZ3RoIC0gMV07XHJcblxyXG4gICAgZnVuY3Rpb24gc2hpZnRfaXNTbWFsbChuKSB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKG4pIDw9IEJBU0U7XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRMZWZ0ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgbiA9IHBhcnNlVmFsdWUodikudG9KU051bWJlcigpO1xyXG4gICAgICAgIGlmICghc2hpZnRfaXNTbWFsbChuKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoU3RyaW5nKG4pICsgXCIgaXMgdG9vIGxhcmdlIGZvciBzaGlmdGluZy5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuIDwgMCkgcmV0dXJuIHRoaXMuc2hpZnRSaWdodCgtbik7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IHRoaXM7XHJcbiAgICAgICAgaWYgKHJlc3VsdC5pc1plcm8oKSkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICB3aGlsZSAobiA+PSBwb3dlcnMyTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5tdWx0aXBseShoaWdoZXN0UG93ZXIyKTtcclxuICAgICAgICAgICAgbiAtPSBwb3dlcnMyTGVuZ3RoIC0gMTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdC5tdWx0aXBseShwb3dlcnNPZlR3b1tuXSk7XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdExlZnQgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLnNoaWZ0TGVmdDtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gZnVuY3Rpb24gKHYpIHtcclxuICAgICAgICB2YXIgcmVtUXVvO1xyXG4gICAgICAgIHZhciBuID0gcGFyc2VWYWx1ZSh2KS50b0pTTnVtYmVyKCk7XHJcbiAgICAgICAgaWYgKCFzaGlmdF9pc1NtYWxsKG4pKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihTdHJpbmcobikgKyBcIiBpcyB0b28gbGFyZ2UgZm9yIHNoaWZ0aW5nLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG4gPCAwKSByZXR1cm4gdGhpcy5zaGlmdExlZnQoLW4pO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSB0aGlzO1xyXG4gICAgICAgIHdoaWxlIChuID49IHBvd2VyczJMZW5ndGgpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdC5pc1plcm8oKSB8fCAocmVzdWx0LmlzTmVnYXRpdmUoKSAmJiByZXN1bHQuaXNVbml0KCkpKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICByZW1RdW8gPSBkaXZNb2RBbnkocmVzdWx0LCBoaWdoZXN0UG93ZXIyKTtcclxuICAgICAgICAgICAgcmVzdWx0ID0gcmVtUXVvWzFdLmlzTmVnYXRpdmUoKSA/IHJlbVF1b1swXS5wcmV2KCkgOiByZW1RdW9bMF07XHJcbiAgICAgICAgICAgIG4gLT0gcG93ZXJzMkxlbmd0aCAtIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJlbVF1byA9IGRpdk1vZEFueShyZXN1bHQsIHBvd2Vyc09mVHdvW25dKTtcclxuICAgICAgICByZXR1cm4gcmVtUXVvWzFdLmlzTmVnYXRpdmUoKSA/IHJlbVF1b1swXS5wcmV2KCkgOiByZW1RdW9bMF07XHJcbiAgICB9O1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS5zaGlmdFJpZ2h0ID0gQmlnSW50ZWdlci5wcm90b3R5cGUuc2hpZnRSaWdodDtcclxuXHJcbiAgICBmdW5jdGlvbiBiaXR3aXNlKHgsIHksIGZuKSB7XHJcbiAgICAgICAgeSA9IHBhcnNlVmFsdWUoeSk7XHJcbiAgICAgICAgdmFyIHhTaWduID0geC5pc05lZ2F0aXZlKCksIHlTaWduID0geS5pc05lZ2F0aXZlKCk7XHJcbiAgICAgICAgdmFyIHhSZW0gPSB4U2lnbiA/IHgubm90KCkgOiB4LFxyXG4gICAgICAgICAgICB5UmVtID0geVNpZ24gPyB5Lm5vdCgpIDogeTtcclxuICAgICAgICB2YXIgeERpZ2l0ID0gMCwgeURpZ2l0ID0gMDtcclxuICAgICAgICB2YXIgeERpdk1vZCA9IG51bGwsIHlEaXZNb2QgPSBudWxsO1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBbXTtcclxuICAgICAgICB3aGlsZSAoIXhSZW0uaXNaZXJvKCkgfHwgIXlSZW0uaXNaZXJvKCkpIHtcclxuICAgICAgICAgICAgeERpdk1vZCA9IGRpdk1vZEFueSh4UmVtLCBoaWdoZXN0UG93ZXIyKTtcclxuICAgICAgICAgICAgeERpZ2l0ID0geERpdk1vZFsxXS50b0pTTnVtYmVyKCk7XHJcbiAgICAgICAgICAgIGlmICh4U2lnbikge1xyXG4gICAgICAgICAgICAgICAgeERpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB4RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgeURpdk1vZCA9IGRpdk1vZEFueSh5UmVtLCBoaWdoZXN0UG93ZXIyKTtcclxuICAgICAgICAgICAgeURpZ2l0ID0geURpdk1vZFsxXS50b0pTTnVtYmVyKCk7XHJcbiAgICAgICAgICAgIGlmICh5U2lnbikge1xyXG4gICAgICAgICAgICAgICAgeURpZ2l0ID0gaGlnaGVzdFBvd2VyMiAtIDEgLSB5RGlnaXQ7IC8vIHR3bydzIGNvbXBsZW1lbnQgZm9yIG5lZ2F0aXZlIG51bWJlcnNcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgeFJlbSA9IHhEaXZNb2RbMF07XHJcbiAgICAgICAgICAgIHlSZW0gPSB5RGl2TW9kWzBdO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChmbih4RGlnaXQsIHlEaWdpdCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgc3VtID0gZm4oeFNpZ24gPyAxIDogMCwgeVNpZ24gPyAxIDogMCkgIT09IDAgPyBiaWdJbnQoLTEpIDogYmlnSW50KDApO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSByZXN1bHQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpIC09IDEpIHtcclxuICAgICAgICAgICAgc3VtID0gc3VtLm11bHRpcGx5KGhpZ2hlc3RQb3dlcjIpLmFkZChiaWdJbnQocmVzdWx0W2ldKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBzdW07XHJcbiAgICB9XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLnByZXYoKTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLm5vdCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUubm90ID0gQmlnSW50ZWdlci5wcm90b3R5cGUubm90O1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIChuKSB7XHJcbiAgICAgICAgcmV0dXJuIGJpdHdpc2UodGhpcywgbiwgZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGEgJiBiOyB9KTtcclxuICAgIH07XHJcbiAgICBOYXRpdmVCaWdJbnQucHJvdG90eXBlLmFuZCA9IFNtYWxsSW50ZWdlci5wcm90b3R5cGUuYW5kID0gQmlnSW50ZWdlci5wcm90b3R5cGUuYW5kO1xyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLm9yID0gZnVuY3Rpb24gKG4pIHtcclxuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSB8IGI7IH0pO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUub3IgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLm9yID0gQmlnSW50ZWdlci5wcm90b3R5cGUub3I7XHJcblxyXG4gICAgQmlnSW50ZWdlci5wcm90b3R5cGUueG9yID0gZnVuY3Rpb24gKG4pIHtcclxuICAgICAgICByZXR1cm4gYml0d2lzZSh0aGlzLCBuLCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYSBeIGI7IH0pO1xyXG4gICAgfTtcclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUueG9yID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS54b3IgPSBCaWdJbnRlZ2VyLnByb3RvdHlwZS54b3I7XHJcblxyXG4gICAgdmFyIExPQk1BU0tfSSA9IDEgPDwgMzAsIExPQk1BU0tfQkkgPSAoQkFTRSAmIC1CQVNFKSAqIChCQVNFICYgLUJBU0UpIHwgTE9CTUFTS19JO1xyXG4gICAgZnVuY3Rpb24gcm91Z2hMT0IobikgeyAvLyBnZXQgbG93ZXN0T25lQml0IChyb3VnaClcclxuICAgICAgICAvLyBTbWFsbEludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDMwKVxyXG4gICAgICAgIC8vIEJpZ0ludGVnZXI6IHJldHVybiBNaW4obG93ZXN0T25lQml0KG4pLCAxIDw8IDE0KSBbQkFTRT0xZTddXHJcbiAgICAgICAgdmFyIHYgPSBuLnZhbHVlLFxyXG4gICAgICAgICAgICB4ID0gdHlwZW9mIHYgPT09IFwibnVtYmVyXCIgPyB2IHwgTE9CTUFTS19JIDpcclxuICAgICAgICAgICAgICAgIHR5cGVvZiB2ID09PSBcImJpZ2ludFwiID8gdiB8IEJpZ0ludChMT0JNQVNLX0kpIDpcclxuICAgICAgICAgICAgICAgICAgICB2WzBdICsgdlsxXSAqIEJBU0UgfCBMT0JNQVNLX0JJO1xyXG4gICAgICAgIHJldHVybiB4ICYgLXg7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZSkge1xyXG4gICAgICAgIGlmIChiYXNlLmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCkge1xyXG4gICAgICAgICAgICB2YXIgdG1wID0gaW50ZWdlckxvZ2FyaXRobSh2YWx1ZSwgYmFzZS5zcXVhcmUoYmFzZSkpO1xyXG4gICAgICAgICAgICB2YXIgcCA9IHRtcC5wO1xyXG4gICAgICAgICAgICB2YXIgZSA9IHRtcC5lO1xyXG4gICAgICAgICAgICB2YXIgdCA9IHAubXVsdGlwbHkoYmFzZSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0LmNvbXBhcmVUbyh2YWx1ZSkgPD0gMCA/IHsgcDogdCwgZTogZSAqIDIgKyAxIH0gOiB7IHA6IHAsIGU6IGUgKiAyIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7IHA6IGJpZ0ludCgxKSwgZTogMCB9O1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICB2YXIgbiA9IHRoaXM7XHJcbiAgICAgICAgaWYgKG4uY29tcGFyZVRvKGJpZ0ludCgwKSkgPCAwKSB7XHJcbiAgICAgICAgICAgIG4gPSBuLm5lZ2F0ZSgpLnN1YnRyYWN0KGJpZ0ludCgxKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuLmNvbXBhcmVUbyhiaWdJbnQoMCkpID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBiaWdJbnQoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBiaWdJbnQoaW50ZWdlckxvZ2FyaXRobShuLCBiaWdJbnQoMikpLmUpLmFkZChiaWdJbnQoMSkpO1xyXG4gICAgfVxyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS5iaXRMZW5ndGggPSBTbWFsbEludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aCA9IEJpZ0ludGVnZXIucHJvdG90eXBlLmJpdExlbmd0aDtcclxuXHJcbiAgICBmdW5jdGlvbiBtYXgoYSwgYikge1xyXG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpO1xyXG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpO1xyXG4gICAgICAgIHJldHVybiBhLmdyZWF0ZXIoYikgPyBhIDogYjtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIG1pbihhLCBiKSB7XHJcbiAgICAgICAgYSA9IHBhcnNlVmFsdWUoYSk7XHJcbiAgICAgICAgYiA9IHBhcnNlVmFsdWUoYik7XHJcbiAgICAgICAgcmV0dXJuIGEubGVzc2VyKGIpID8gYSA6IGI7XHJcbiAgICB9XHJcbiAgICBmdW5jdGlvbiBnY2QoYSwgYikge1xyXG4gICAgICAgIGEgPSBwYXJzZVZhbHVlKGEpLmFicygpO1xyXG4gICAgICAgIGIgPSBwYXJzZVZhbHVlKGIpLmFicygpO1xyXG4gICAgICAgIGlmIChhLmVxdWFscyhiKSkgcmV0dXJuIGE7XHJcbiAgICAgICAgaWYgKGEuaXNaZXJvKCkpIHJldHVybiBiO1xyXG4gICAgICAgIGlmIChiLmlzWmVybygpKSByZXR1cm4gYTtcclxuICAgICAgICB2YXIgYyA9IEludGVnZXJbMV0sIGQsIHQ7XHJcbiAgICAgICAgd2hpbGUgKGEuaXNFdmVuKCkgJiYgYi5pc0V2ZW4oKSkge1xyXG4gICAgICAgICAgICBkID0gbWluKHJvdWdoTE9CKGEpLCByb3VnaExPQihiKSk7XHJcbiAgICAgICAgICAgIGEgPSBhLmRpdmlkZShkKTtcclxuICAgICAgICAgICAgYiA9IGIuZGl2aWRlKGQpO1xyXG4gICAgICAgICAgICBjID0gYy5tdWx0aXBseShkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGEuaXNFdmVuKCkpIHtcclxuICAgICAgICAgICAgYSA9IGEuZGl2aWRlKHJvdWdoTE9CKGEpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICB3aGlsZSAoYi5pc0V2ZW4oKSkge1xyXG4gICAgICAgICAgICAgICAgYiA9IGIuZGl2aWRlKHJvdWdoTE9CKGIpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYS5ncmVhdGVyKGIpKSB7XHJcbiAgICAgICAgICAgICAgICB0ID0gYjsgYiA9IGE7IGEgPSB0O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGIgPSBiLnN1YnRyYWN0KGEpO1xyXG4gICAgICAgIH0gd2hpbGUgKCFiLmlzWmVybygpKTtcclxuICAgICAgICByZXR1cm4gYy5pc1VuaXQoKSA/IGEgOiBhLm11bHRpcGx5KGMpO1xyXG4gICAgfVxyXG4gICAgZnVuY3Rpb24gbGNtKGEsIGIpIHtcclxuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKS5hYnMoKTtcclxuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKS5hYnMoKTtcclxuICAgICAgICByZXR1cm4gYS5kaXZpZGUoZ2NkKGEsIGIpKS5tdWx0aXBseShiKTtcclxuICAgIH1cclxuICAgIGZ1bmN0aW9uIHJhbmRCZXR3ZWVuKGEsIGIpIHtcclxuICAgICAgICBhID0gcGFyc2VWYWx1ZShhKTtcclxuICAgICAgICBiID0gcGFyc2VWYWx1ZShiKTtcclxuICAgICAgICB2YXIgbG93ID0gbWluKGEsIGIpLCBoaWdoID0gbWF4KGEsIGIpO1xyXG4gICAgICAgIHZhciByYW5nZSA9IGhpZ2guc3VidHJhY3QobG93KS5hZGQoMSk7XHJcbiAgICAgICAgaWYgKHJhbmdlLmlzU21hbGwpIHJldHVybiBsb3cuYWRkKE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJhbmdlKSk7XHJcbiAgICAgICAgdmFyIGRpZ2l0cyA9IHRvQmFzZShyYW5nZSwgQkFTRSkudmFsdWU7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9IFtdLCByZXN0cmljdGVkID0gdHJ1ZTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRpZ2l0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICB2YXIgdG9wID0gcmVzdHJpY3RlZCA/IGRpZ2l0c1tpXSA6IEJBU0U7XHJcbiAgICAgICAgICAgIHZhciBkaWdpdCA9IHRydW5jYXRlKE1hdGgucmFuZG9tKCkgKiB0b3ApO1xyXG4gICAgICAgICAgICByZXN1bHQucHVzaChkaWdpdCk7XHJcbiAgICAgICAgICAgIGlmIChkaWdpdCA8IHRvcCkgcmVzdHJpY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbG93LmFkZChJbnRlZ2VyLmZyb21BcnJheShyZXN1bHQsIEJBU0UsIGZhbHNlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIHBhcnNlQmFzZSA9IGZ1bmN0aW9uICh0ZXh0LCBiYXNlLCBhbHBoYWJldCwgY2FzZVNlbnNpdGl2ZSkge1xyXG4gICAgICAgIGFscGhhYmV0ID0gYWxwaGFiZXQgfHwgREVGQVVMVF9BTFBIQUJFVDtcclxuICAgICAgICB0ZXh0ID0gU3RyaW5nKHRleHQpO1xyXG4gICAgICAgIGlmICghY2FzZVNlbnNpdGl2ZSkge1xyXG4gICAgICAgICAgICB0ZXh0ID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBsZW5ndGggPSB0ZXh0Lmxlbmd0aDtcclxuICAgICAgICB2YXIgaTtcclxuICAgICAgICB2YXIgYWJzQmFzZSA9IE1hdGguYWJzKGJhc2UpO1xyXG4gICAgICAgIHZhciBhbHBoYWJldFZhbHVlcyA9IHt9O1xyXG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhbHBoYWJldC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBhbHBoYWJldFZhbHVlc1thbHBoYWJldFtpXV0gPSBpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGMgPSB0ZXh0W2ldO1xyXG4gICAgICAgICAgICBpZiAoYyA9PT0gXCItXCIpIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBpZiAoYyBpbiBhbHBoYWJldFZhbHVlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGFscGhhYmV0VmFsdWVzW2NdID49IGFic0Jhc2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gXCIxXCIgJiYgYWJzQmFzZSA9PT0gMSkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGMgKyBcIiBpcyBub3QgYSB2YWxpZCBkaWdpdCBpbiBiYXNlIFwiICsgYmFzZSArIFwiLlwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBiYXNlID0gcGFyc2VWYWx1ZShiYXNlKTtcclxuICAgICAgICB2YXIgZGlnaXRzID0gW107XHJcbiAgICAgICAgdmFyIGlzTmVnYXRpdmUgPSB0ZXh0WzBdID09PSBcIi1cIjtcclxuICAgICAgICBmb3IgKGkgPSBpc05lZ2F0aXZlID8gMSA6IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBjID0gdGV4dFtpXTtcclxuICAgICAgICAgICAgaWYgKGMgaW4gYWxwaGFiZXRWYWx1ZXMpIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUoYWxwaGFiZXRWYWx1ZXNbY10pKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAoYyA9PT0gXCI8XCIpIHtcclxuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IGk7XHJcbiAgICAgICAgICAgICAgICBkbyB7IGkrKzsgfSB3aGlsZSAodGV4dFtpXSAhPT0gXCI+XCIgJiYgaSA8IHRleHQubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIGRpZ2l0cy5wdXNoKHBhcnNlVmFsdWUodGV4dC5zbGljZShzdGFydCArIDEsIGkpKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB0aHJvdyBuZXcgRXJyb3IoYyArIFwiIGlzIG5vdCBhIHZhbGlkIGNoYXJhY3RlclwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlQmFzZUZyb21BcnJheShkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpO1xyXG4gICAgfTtcclxuXHJcbiAgICBmdW5jdGlvbiBwYXJzZUJhc2VGcm9tQXJyYXkoZGlnaXRzLCBiYXNlLCBpc05lZ2F0aXZlKSB7XHJcbiAgICAgICAgdmFyIHZhbCA9IEludGVnZXJbMF0sIHBvdyA9IEludGVnZXJbMV0sIGk7XHJcbiAgICAgICAgZm9yIChpID0gZGlnaXRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XHJcbiAgICAgICAgICAgIHZhbCA9IHZhbC5hZGQoZGlnaXRzW2ldLnRpbWVzKHBvdykpO1xyXG4gICAgICAgICAgICBwb3cgPSBwb3cudGltZXMoYmFzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBpc05lZ2F0aXZlID8gdmFsLm5lZ2F0ZSgpIDogdmFsO1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHN0cmluZ2lmeShkaWdpdCwgYWxwaGFiZXQpIHtcclxuICAgICAgICBhbHBoYWJldCA9IGFscGhhYmV0IHx8IERFRkFVTFRfQUxQSEFCRVQ7XHJcbiAgICAgICAgaWYgKGRpZ2l0IDwgYWxwaGFiZXQubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBhbHBoYWJldFtkaWdpdF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBcIjxcIiArIGRpZ2l0ICsgXCI+XCI7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gdG9CYXNlKG4sIGJhc2UpIHtcclxuICAgICAgICBiYXNlID0gYmlnSW50KGJhc2UpO1xyXG4gICAgICAgIGlmIChiYXNlLmlzWmVybygpKSB7XHJcbiAgICAgICAgICAgIGlmIChuLmlzWmVybygpKSByZXR1cm4geyB2YWx1ZTogWzBdLCBpc05lZ2F0aXZlOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgY29udmVydCBub256ZXJvIG51bWJlcnMgdG8gYmFzZSAwLlwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJhc2UuZXF1YWxzKC0xKSkge1xyXG4gICAgICAgICAgICBpZiAobi5pc1plcm8oKSkgcmV0dXJuIHsgdmFsdWU6IFswXSwgaXNOZWdhdGl2ZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgaWYgKG4uaXNOZWdhdGl2ZSgpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogW10uY29uY2F0LmFwcGx5KFtdLCBBcnJheS5hcHBseShudWxsLCBBcnJheSgtbi50b0pTTnVtYmVyKCkpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAubWFwKEFycmF5LnByb3RvdHlwZS52YWx1ZU9mLCBbMSwgMF0pXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBmYWxzZVxyXG4gICAgICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHZhciBhcnIgPSBBcnJheS5hcHBseShudWxsLCBBcnJheShuLnRvSlNOdW1iZXIoKSAtIDEpKVxyXG4gICAgICAgICAgICAgICAgLm1hcChBcnJheS5wcm90b3R5cGUudmFsdWVPZiwgWzAsIDFdKTtcclxuICAgICAgICAgICAgYXJyLnVuc2hpZnQoWzFdKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBbXS5jb25jYXQuYXBwbHkoW10sIGFyciksXHJcbiAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBmYWxzZVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIG5lZyA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChuLmlzTmVnYXRpdmUoKSAmJiBiYXNlLmlzUG9zaXRpdmUoKSkge1xyXG4gICAgICAgICAgICBuZWcgPSB0cnVlO1xyXG4gICAgICAgICAgICBuID0gbi5hYnMoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGJhc2UuaXNVbml0KCkpIHtcclxuICAgICAgICAgICAgaWYgKG4uaXNaZXJvKCkpIHJldHVybiB7IHZhbHVlOiBbMF0sIGlzTmVnYXRpdmU6IGZhbHNlIH07XHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdmFsdWU6IEFycmF5LmFwcGx5KG51bGwsIEFycmF5KG4udG9KU051bWJlcigpKSlcclxuICAgICAgICAgICAgICAgICAgICAubWFwKE51bWJlci5wcm90b3R5cGUudmFsdWVPZiwgMSksXHJcbiAgICAgICAgICAgICAgICBpc05lZ2F0aXZlOiBuZWdcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG91dCA9IFtdO1xyXG4gICAgICAgIHZhciBsZWZ0ID0gbiwgZGl2bW9kO1xyXG4gICAgICAgIHdoaWxlIChsZWZ0LmlzTmVnYXRpdmUoKSB8fCBsZWZ0LmNvbXBhcmVBYnMoYmFzZSkgPj0gMCkge1xyXG4gICAgICAgICAgICBkaXZtb2QgPSBsZWZ0LmRpdm1vZChiYXNlKTtcclxuICAgICAgICAgICAgbGVmdCA9IGRpdm1vZC5xdW90aWVudDtcclxuICAgICAgICAgICAgdmFyIGRpZ2l0ID0gZGl2bW9kLnJlbWFpbmRlcjtcclxuICAgICAgICAgICAgaWYgKGRpZ2l0LmlzTmVnYXRpdmUoKSkge1xyXG4gICAgICAgICAgICAgICAgZGlnaXQgPSBiYXNlLm1pbnVzKGRpZ2l0KS5hYnMoKTtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSBsZWZ0Lm5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvdXQucHVzaChkaWdpdC50b0pTTnVtYmVyKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvdXQucHVzaChsZWZ0LnRvSlNOdW1iZXIoKSk7XHJcbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG91dC5yZXZlcnNlKCksIGlzTmVnYXRpdmU6IG5lZyB9O1xyXG4gICAgfVxyXG5cclxuICAgIGZ1bmN0aW9uIHRvQmFzZVN0cmluZyhuLCBiYXNlLCBhbHBoYWJldCkge1xyXG4gICAgICAgIHZhciBhcnIgPSB0b0Jhc2UobiwgYmFzZSk7XHJcbiAgICAgICAgcmV0dXJuIChhcnIuaXNOZWdhdGl2ZSA/IFwiLVwiIDogXCJcIikgKyBhcnIudmFsdWUubWFwKGZ1bmN0aW9uICh4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBzdHJpbmdpZnkoeCwgYWxwaGFiZXQpO1xyXG4gICAgICAgIH0pLmpvaW4oJycpO1xyXG4gICAgfVxyXG5cclxuICAgIEJpZ0ludGVnZXIucHJvdG90eXBlLnRvQXJyYXkgPSBmdW5jdGlvbiAocmFkaXgpIHtcclxuICAgICAgICByZXR1cm4gdG9CYXNlKHRoaXMsIHJhZGl4KTtcclxuICAgIH07XHJcblxyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gKHJhZGl4KSB7XHJcbiAgICAgICAgcmV0dXJuIHRvQmFzZSh0aGlzLCByYWRpeCk7XHJcbiAgICB9O1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9BcnJheSA9IGZ1bmN0aW9uIChyYWRpeCkge1xyXG4gICAgICAgIHJldHVybiB0b0Jhc2UodGhpcywgcmFkaXgpO1xyXG4gICAgfTtcclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCwgYWxwaGFiZXQpIHtcclxuICAgICAgICBpZiAocmFkaXggPT09IHVuZGVmaW5lZCkgcmFkaXggPSAxMDtcclxuICAgICAgICBpZiAocmFkaXggIT09IDEwKSByZXR1cm4gdG9CYXNlU3RyaW5nKHRoaXMsIHJhZGl4LCBhbHBoYWJldCk7XHJcbiAgICAgICAgdmFyIHYgPSB0aGlzLnZhbHVlLCBsID0gdi5sZW5ndGgsIHN0ciA9IFN0cmluZyh2Wy0tbF0pLCB6ZXJvcyA9IFwiMDAwMDAwMFwiLCBkaWdpdDtcclxuICAgICAgICB3aGlsZSAoLS1sID49IDApIHtcclxuICAgICAgICAgICAgZGlnaXQgPSBTdHJpbmcodltsXSk7XHJcbiAgICAgICAgICAgIHN0ciArPSB6ZXJvcy5zbGljZShkaWdpdC5sZW5ndGgpICsgZGlnaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzaWduID0gdGhpcy5zaWduID8gXCItXCIgOiBcIlwiO1xyXG4gICAgICAgIHJldHVybiBzaWduICsgc3RyO1xyXG4gICAgfTtcclxuXHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gKHJhZGl4LCBhbHBoYWJldCkge1xyXG4gICAgICAgIGlmIChyYWRpeCA9PT0gdW5kZWZpbmVkKSByYWRpeCA9IDEwO1xyXG4gICAgICAgIGlmIChyYWRpeCAhPSAxMCkgcmV0dXJuIHRvQmFzZVN0cmluZyh0aGlzLCByYWRpeCwgYWxwaGFiZXQpO1xyXG4gICAgICAgIHJldHVybiBTdHJpbmcodGhpcy52YWx1ZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9TdHJpbmcgPSBTbWFsbEludGVnZXIucHJvdG90eXBlLnRvU3RyaW5nO1xyXG5cclxuICAgIE5hdGl2ZUJpZ0ludC5wcm90b3R5cGUudG9KU09OID0gQmlnSW50ZWdlci5wcm90b3R5cGUudG9KU09OID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnRvU3RyaW5nKCk7IH1cclxuXHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnRvU3RyaW5nKCksIDEwKTtcclxuICAgIH07XHJcbiAgICBCaWdJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gQmlnSW50ZWdlci5wcm90b3R5cGUudmFsdWVPZjtcclxuXHJcbiAgICBTbWFsbEludGVnZXIucHJvdG90eXBlLnZhbHVlT2YgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudmFsdWU7XHJcbiAgICB9O1xyXG4gICAgU21hbGxJbnRlZ2VyLnByb3RvdHlwZS50b0pTTnVtYmVyID0gU21hbGxJbnRlZ2VyLnByb3RvdHlwZS52YWx1ZU9mO1xyXG4gICAgTmF0aXZlQmlnSW50LnByb3RvdHlwZS52YWx1ZU9mID0gTmF0aXZlQmlnSW50LnByb3RvdHlwZS50b0pTTnVtYmVyID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZUludCh0aGlzLnRvU3RyaW5nKCksIDEwKTtcclxuICAgIH1cclxuXHJcbiAgICBmdW5jdGlvbiBwYXJzZVN0cmluZ1ZhbHVlKHYpIHtcclxuICAgICAgICBpZiAoaXNQcmVjaXNlKCt2KSkge1xyXG4gICAgICAgICAgICB2YXIgeCA9ICt2O1xyXG4gICAgICAgICAgICBpZiAoeCA9PT0gdHJ1bmNhdGUoeCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwcG9ydHNOYXRpdmVCaWdJbnQgPyBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh4KSkgOiBuZXcgU21hbGxJbnRlZ2VyKHgpO1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgdik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBzaWduID0gdlswXSA9PT0gXCItXCI7XHJcbiAgICAgICAgaWYgKHNpZ24pIHYgPSB2LnNsaWNlKDEpO1xyXG4gICAgICAgIHZhciBzcGxpdCA9IHYuc3BsaXQoL2UvaSk7XHJcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA+IDIpIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgaW50ZWdlcjogXCIgKyBzcGxpdC5qb2luKFwiZVwiKSk7XHJcbiAgICAgICAgaWYgKHNwbGl0Lmxlbmd0aCA9PT0gMikge1xyXG4gICAgICAgICAgICB2YXIgZXhwID0gc3BsaXRbMV07XHJcbiAgICAgICAgICAgIGlmIChleHBbMF0gPT09IFwiK1wiKSBleHAgPSBleHAuc2xpY2UoMSk7XHJcbiAgICAgICAgICAgIGV4cCA9ICtleHA7XHJcbiAgICAgICAgICAgIGlmIChleHAgIT09IHRydW5jYXRlKGV4cCkgfHwgIWlzUHJlY2lzZShleHApKSB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGludGVnZXI6IFwiICsgZXhwICsgXCIgaXMgbm90IGEgdmFsaWQgZXhwb25lbnQuXCIpO1xyXG4gICAgICAgICAgICB2YXIgdGV4dCA9IHNwbGl0WzBdO1xyXG4gICAgICAgICAgICB2YXIgZGVjaW1hbFBsYWNlID0gdGV4dC5pbmRleE9mKFwiLlwiKTtcclxuICAgICAgICAgICAgaWYgKGRlY2ltYWxQbGFjZSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBleHAgLT0gdGV4dC5sZW5ndGggLSBkZWNpbWFsUGxhY2UgLSAxO1xyXG4gICAgICAgICAgICAgICAgdGV4dCA9IHRleHQuc2xpY2UoMCwgZGVjaW1hbFBsYWNlKSArIHRleHQuc2xpY2UoZGVjaW1hbFBsYWNlICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV4cCA8IDApIHRocm93IG5ldyBFcnJvcihcIkNhbm5vdCBpbmNsdWRlIG5lZ2F0aXZlIGV4cG9uZW50IHBhcnQgZm9yIGludGVnZXJzXCIpO1xyXG4gICAgICAgICAgICB0ZXh0ICs9IChuZXcgQXJyYXkoZXhwICsgMSkpLmpvaW4oXCIwXCIpO1xyXG4gICAgICAgICAgICB2ID0gdGV4dDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGlzVmFsaWQgPSAvXihbMC05XVswLTldKikkLy50ZXN0KHYpO1xyXG4gICAgICAgIGlmICghaXNWYWxpZCkgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBpbnRlZ2VyOiBcIiArIHYpO1xyXG4gICAgICAgIGlmIChzdXBwb3J0c05hdGl2ZUJpZ0ludCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludChCaWdJbnQoc2lnbiA/IFwiLVwiICsgdiA6IHYpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHIgPSBbXSwgbWF4ID0gdi5sZW5ndGgsIGwgPSBMT0dfQkFTRSwgbWluID0gbWF4IC0gbDtcclxuICAgICAgICB3aGlsZSAobWF4ID4gMCkge1xyXG4gICAgICAgICAgICByLnB1c2goK3Yuc2xpY2UobWluLCBtYXgpKTtcclxuICAgICAgICAgICAgbWluIC09IGw7XHJcbiAgICAgICAgICAgIGlmIChtaW4gPCAwKSBtaW4gPSAwO1xyXG4gICAgICAgICAgICBtYXggLT0gbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJpbShyKTtcclxuICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIociwgc2lnbik7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcGFyc2VOdW1iZXJWYWx1ZSh2KSB7XHJcbiAgICAgICAgaWYgKHN1cHBvcnRzTmF0aXZlQmlnSW50KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgTmF0aXZlQmlnSW50KEJpZ0ludCh2KSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpc1ByZWNpc2UodikpIHtcclxuICAgICAgICAgICAgaWYgKHYgIT09IHRydW5jYXRlKHYpKSB0aHJvdyBuZXcgRXJyb3IodiArIFwiIGlzIG5vdCBhbiBpbnRlZ2VyLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBTbWFsbEludGVnZXIodik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBwYXJzZVN0cmluZ1ZhbHVlKHYudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZnVuY3Rpb24gcGFyc2VWYWx1ZSh2KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwYXJzZU51bWJlclZhbHVlKHYpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodHlwZW9mIHYgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RyaW5nVmFsdWUodik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0eXBlb2YgdiA9PT0gXCJiaWdpbnRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE5hdGl2ZUJpZ0ludCh2KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHY7XHJcbiAgICB9XHJcbiAgICAvLyBQcmUtZGVmaW5lIG51bWJlcnMgaW4gcmFuZ2UgWy05OTksOTk5XVxyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHtcclxuICAgICAgICBJbnRlZ2VyW2ldID0gcGFyc2VWYWx1ZShpKTtcclxuICAgICAgICBpZiAoaSA+IDApIEludGVnZXJbLWldID0gcGFyc2VWYWx1ZSgtaSk7XHJcbiAgICB9XHJcbiAgICAvLyBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxyXG4gICAgSW50ZWdlci5vbmUgPSBJbnRlZ2VyWzFdO1xyXG4gICAgSW50ZWdlci56ZXJvID0gSW50ZWdlclswXTtcclxuICAgIEludGVnZXIubWludXNPbmUgPSBJbnRlZ2VyWy0xXTtcclxuICAgIEludGVnZXIubWF4ID0gbWF4O1xyXG4gICAgSW50ZWdlci5taW4gPSBtaW47XHJcbiAgICBJbnRlZ2VyLmdjZCA9IGdjZDtcclxuICAgIEludGVnZXIubGNtID0gbGNtO1xyXG4gICAgSW50ZWdlci5pc0luc3RhbmNlID0gZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggaW5zdGFuY2VvZiBCaWdJbnRlZ2VyIHx8IHggaW5zdGFuY2VvZiBTbWFsbEludGVnZXIgfHwgeCBpbnN0YW5jZW9mIE5hdGl2ZUJpZ0ludDsgfTtcclxuICAgIEludGVnZXIucmFuZEJldHdlZW4gPSByYW5kQmV0d2VlbjtcclxuXHJcbiAgICBJbnRlZ2VyLmZyb21BcnJheSA9IGZ1bmN0aW9uIChkaWdpdHMsIGJhc2UsIGlzTmVnYXRpdmUpIHtcclxuICAgICAgICByZXR1cm4gcGFyc2VCYXNlRnJvbUFycmF5KGRpZ2l0cy5tYXAocGFyc2VWYWx1ZSksIHBhcnNlVmFsdWUoYmFzZSB8fCAxMCksIGlzTmVnYXRpdmUpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gSW50ZWdlcjtcclxufSkoKTtcclxuXHJcbi8vIE5vZGUuanMgY2hlY2tcclxuaWYgKHR5cGVvZiBtb2R1bGUgIT09IFwidW5kZWZpbmVkXCIgJiYgbW9kdWxlLmhhc093blByb3BlcnR5KFwiZXhwb3J0c1wiKSkge1xyXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBiaWdJbnQ7XHJcbn1cclxuXHJcbi8vYW1kIGNoZWNrXHJcbmlmICh0eXBlb2YgZGVmaW5lID09PSBcImZ1bmN0aW9uXCIgJiYgZGVmaW5lLmFtZCkge1xyXG4gICAgZGVmaW5lKFwiYmlnLWludGVnZXJcIiwgW10sIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gYmlnSW50O1xyXG4gICAgfSk7XHJcbn1cclxuIiwiLy8gQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggRW1pbGlvIEFsbWFuc2lcbi8vIENvcHlyaWdodCAoYykgMjAxNyBQaWV0ZXIgV3VpbGxlXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuLy8gb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbFxuLy8gaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0c1xuLy8gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuLy8gY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzXG4vLyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuLy8gQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbi8vIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cbi8vIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdmFsaWRhdGUgPSByZXF1aXJlKCcuL3ZhbGlkYXRpb24nKS52YWxpZGF0ZTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBpbnRlZ2VycyBtYWRlIHVwIG9mICdmcm9tJyBiaXRzIGludG8gYW5cbiAqIGFycmF5IG9mIGludGVnZXJzIG1hZGUgdXAgb2YgJ3RvJyBiaXRzLiBUaGUgb3V0cHV0IGFycmF5IGlzXG4gKiB6ZXJvLXBhZGRlZCBpZiBuZWNlc3NhcnksIHVubGVzcyBzdHJpY3QgbW9kZSBpcyB0cnVlLlxuICogVGhyb3dzIGEge0BsaW5rIFZhbGlkYXRpb25FcnJvcn0gaWYgaW5wdXQgaXMgaW52YWxpZC5cbiAqIE9yaWdpbmFsIGJ5IFBpZXRlciBXdWlsbGU6IGh0dHBzOi8vZ2l0aHViLmNvbS9zaXBhL2JlY2gzMi5cbiAqXG4gKiBAcGFyYW0ge1VpbnQ4QXJyYXl9IGRhdGEgQXJyYXkgb2YgaW50ZWdlcnMgbWFkZSB1cCBvZiAnZnJvbScgYml0cy5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tIExlbmd0aCBpbiBiaXRzIG9mIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBhcnJheS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB0byBMZW5ndGggaW4gYml0cyBvZiBlbGVtZW50cyBpbiB0aGUgb3V0cHV0IGFycmF5LlxuICogQHBhcmFtIHtib29sfSBzdHJpY3RNb2RlIFJlcXVpcmUgdGhlIGNvbnZlcnNpb24gdG8gYmUgY29tcGxldGVkIHdpdGhvdXQgcGFkZGluZy5cbiAqIEByZXR1cm5zIHtVaW50OEFycmF5fVxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGRhdGEsIGZyb20sIHRvLCBzdHJpY3RNb2RlKSB7XG4gIHZhciBsZW5ndGggPSBzdHJpY3RNb2RlXG4gICAgPyBNYXRoLmZsb29yKGRhdGEubGVuZ3RoICogZnJvbSAvIHRvKVxuICAgIDogTWF0aC5jZWlsKGRhdGEubGVuZ3RoICogZnJvbSAvIHRvKTtcbiAgdmFyIG1hc2sgPSAoMSA8PCB0bykgLSAxO1xuICB2YXIgcmVzdWx0ID0gbmV3IFVpbnQ4QXJyYXkobGVuZ3RoKTtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGFjY3VtdWxhdG9yID0gMDtcbiAgdmFyIGJpdHMgPSAwO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHtcbiAgICB2YXIgdmFsdWUgPSBkYXRhW2ldO1xuICAgIHZhbGlkYXRlKDAgPD0gdmFsdWUgJiYgKHZhbHVlID4+IGZyb20pID09PSAwLCAnSW52YWxpZCB2YWx1ZTogJyArIHZhbHVlICsgJy4nKTtcbiAgICBhY2N1bXVsYXRvciA9IChhY2N1bXVsYXRvciA8PCBmcm9tKSB8IHZhbHVlO1xuICAgIGJpdHMgKz0gZnJvbTtcbiAgICB3aGlsZSAoYml0cyA+PSB0bykge1xuICAgICAgYml0cyAtPSB0bztcbiAgICAgIHJlc3VsdFtpbmRleF0gPSAoYWNjdW11bGF0b3IgPj4gYml0cykgJiBtYXNrO1xuICAgICAgKytpbmRleDtcbiAgICB9XG4gIH1cbiAgaWYgKCFzdHJpY3RNb2RlKSB7XG4gICAgaWYgKGJpdHMgPiAwKSB7XG4gICAgICByZXN1bHRbaW5kZXhdID0gKGFjY3VtdWxhdG9yIDw8ICh0byAtIGJpdHMpKSAmIG1hc2s7XG4gICAgICArK2luZGV4O1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YWxpZGF0ZShcbiAgICAgIGJpdHMgPCBmcm9tICYmICgoYWNjdW11bGF0b3IgPDwgKHRvIC0gYml0cykpICYgbWFzaykgPT09IDAsXG4gICAgICAnSW5wdXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byAnICsgdG8gKyAnIGJpdHMgd2l0aG91dCBwYWRkaW5nLCBidXQgc3RyaWN0IG1vZGUgd2FzIHVzZWQuJ1xuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxudmFyIF9zbGljZWRUb0FycmF5ID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBzbGljZUl0ZXJhdG9yKGFyciwgaSkgeyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9lID0gdW5kZWZpbmVkOyB0cnkgeyBmb3IgKHZhciBfaSA9IGFycltTeW1ib2wuaXRlcmF0b3JdKCksIF9zOyAhKF9uID0gKF9zID0gX2kubmV4dCgpKS5kb25lKTsgX24gPSB0cnVlKSB7IF9hcnIucHVzaChfcy52YWx1ZSk7IGlmIChpICYmIF9hcnIubGVuZ3RoID09PSBpKSBicmVhazsgfSB9IGNhdGNoIChlcnIpIHsgX2QgPSB0cnVlOyBfZSA9IGVycjsgfSBmaW5hbGx5IHsgdHJ5IHsgaWYgKCFfbiAmJiBfaVtcInJldHVyblwiXSkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9IHJldHVybiBmdW5jdGlvbiAoYXJyLCBpKSB7IGlmIChBcnJheS5pc0FycmF5KGFycikpIHsgcmV0dXJuIGFycjsgfSBlbHNlIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gT2JqZWN0KGFycikpIHsgcmV0dXJuIHNsaWNlSXRlcmF0b3IoYXJyLCBpKTsgfSBlbHNlIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2VcIik7IH0gfTsgfSgpO1xuXG5leHBvcnRzLnNpZ25FdGhUeCA9IHNpZ25FdGhUeDtcblxudmFyIF90cmV6b3J0eXBlcyA9IHJlcXVpcmUoJy4uL3RyZXpvcnR5cGVzJyk7XG5cbnZhciB0cmV6b3IgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfdHJlem9ydHlwZXMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG5mdW5jdGlvbiBzcGxpdFN0cmluZyhzdHIsIGxlbikge1xuICAgIGlmIChzdHIgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gWycnLCAnJ107XG4gICAgfVxuICAgIHZhciBmaXJzdCA9IHN0ci5zbGljZSgwLCBsZW4pO1xuICAgIHZhciBzZWNvbmQgPSBzdHIuc2xpY2UobGVuKTtcbiAgICByZXR1cm4gW2ZpcnN0LCBzZWNvbmRdO1xufVxuXG5mdW5jdGlvbiBwcm9jZXNzVHhSZXF1ZXN0KHNlc3Npb24sIHJlcXVlc3QsIGRhdGEpIHtcbiAgICBpZiAoIXJlcXVlc3QuZGF0YV9sZW5ndGgpIHtcbiAgICAgICAgdmFyIF92ID0gcmVxdWVzdC5zaWduYXR1cmVfdjtcbiAgICAgICAgdmFyIF9yID0gcmVxdWVzdC5zaWduYXR1cmVfcjtcbiAgICAgICAgdmFyIF9zID0gcmVxdWVzdC5zaWduYXR1cmVfcztcbiAgICAgICAgaWYgKF92ID09IG51bGwgfHwgX3IgPT0gbnVsbCB8fCBfcyA9PSBudWxsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQgcmVxdWVzdC4nKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe1xuICAgICAgICAgICAgdjogX3YsIHI6IF9yLCBzOiBfc1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICB2YXIgX3NwbGl0U3RyaW5nID0gc3BsaXRTdHJpbmcoZGF0YSwgcmVxdWVzdC5kYXRhX2xlbmd0aCAqIDIpLFxuICAgICAgICBfc3BsaXRTdHJpbmcyID0gX3NsaWNlZFRvQXJyYXkoX3NwbGl0U3RyaW5nLCAyKSxcbiAgICAgICAgZmlyc3QgPSBfc3BsaXRTdHJpbmcyWzBdLFxuICAgICAgICByZXN0ID0gX3NwbGl0U3RyaW5nMlsxXTtcblxuICAgIHJldHVybiBzZXNzaW9uLnR5cGVkQ2FsbCgnRXRoZXJldW1UeEFjaycsICdFdGhlcmV1bVR4UmVxdWVzdCcsIHsgZGF0YV9jaHVuazogZmlyc3QgfSkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgcmV0dXJuIHByb2Nlc3NUeFJlcXVlc3Qoc2Vzc2lvbiwgcmVzcG9uc2UubWVzc2FnZSwgcmVzdCk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIHN0cmlwTGVhZGluZ1plcm9lcyhzdHIpIHtcbiAgICB3aGlsZSAoL14wMC8udGVzdChzdHIpKSB7XG4gICAgICAgIHN0ciA9IHN0ci5zbGljZSgyKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cjtcbn1cblxuZnVuY3Rpb24gc2lnbkV0aFR4KHNlc3Npb24sIGFkZHJlc3Nfbiwgbm9uY2UsIGdhc19wcmljZSwgZ2FzX2xpbWl0LCB0bywgdmFsdWUsIGRhdGEsIGNoYWluX2lkKSB7XG4gICAgdmFyIGxlbmd0aCA9IGRhdGEgPT0gbnVsbCA/IDAgOiBkYXRhLmxlbmd0aCAvIDI7XG5cbiAgICB2YXIgX3NwbGl0U3RyaW5nMyA9IHNwbGl0U3RyaW5nKGRhdGEsIDEwMjQgKiAyKSxcbiAgICAgICAgX3NwbGl0U3RyaW5nNCA9IF9zbGljZWRUb0FycmF5KF9zcGxpdFN0cmluZzMsIDIpLFxuICAgICAgICBmaXJzdCA9IF9zcGxpdFN0cmluZzRbMF0sXG4gICAgICAgIHJlc3QgPSBfc3BsaXRTdHJpbmc0WzFdO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB7XG4gICAgICAgIGFkZHJlc3NfbjogYWRkcmVzc19uLFxuICAgICAgICBub25jZTogc3RyaXBMZWFkaW5nWmVyb2VzKG5vbmNlKSxcbiAgICAgICAgZ2FzX3ByaWNlOiBzdHJpcExlYWRpbmdaZXJvZXMoZ2FzX3ByaWNlKSxcbiAgICAgICAgZ2FzX2xpbWl0OiBzdHJpcExlYWRpbmdaZXJvZXMoZ2FzX2xpbWl0KSxcbiAgICAgICAgdG86IHRvLFxuICAgICAgICB2YWx1ZTogc3RyaXBMZWFkaW5nWmVyb2VzKHZhbHVlKVxuICAgIH07XG5cbiAgICBpZiAobGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIG1lc3NhZ2UgPSBfZXh0ZW5kcyh7fSwgbWVzc2FnZSwge1xuICAgICAgICAgICAgZGF0YV9sZW5ndGg6IGxlbmd0aCxcbiAgICAgICAgICAgIGRhdGFfaW5pdGlhbF9jaHVuazogZmlyc3RcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKGNoYWluX2lkICE9IG51bGwpIHtcbiAgICAgICAgbWVzc2FnZSA9IF9leHRlbmRzKHt9LCBtZXNzYWdlLCB7XG4gICAgICAgICAgICBjaGFpbl9pZDogY2hhaW5faWRcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlc3Npb24udHlwZWRDYWxsKCdFdGhlcmV1bVNpZ25UeCcsICdFdGhlcmV1bVR4UmVxdWVzdCcsIG1lc3NhZ2UpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICByZXR1cm4gcHJvY2Vzc1R4UmVxdWVzdChzZXNzaW9uLCByZXMubWVzc2FnZSwgcmVzdCk7XG4gICAgfSk7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLkNhbGxIZWxwZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfcmFuZG9tYnl0ZXMgPSByZXF1aXJlKCdyYW5kb21ieXRlcycpO1xuXG52YXIgX3JhbmRvbWJ5dGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JhbmRvbWJ5dGVzKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gYXNzZXJ0VHlwZShyZXMsIHJlc1R5cGVzKSB7XG4gICAgdmFyIHNwbGl0UmVzVHlwZXMgPSByZXNUeXBlcy5zcGxpdCgnfCcpO1xuICAgIGlmICghc3BsaXRSZXNUeXBlcy5pbmNsdWRlcyhyZXMudHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUmVzcG9uc2Ugb2YgdW5leHBlY3RlZCB0eXBlOiAnICsgcmVzLnR5cGUpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVFbnRyb3B5KGxlbikge1xuICAgIGlmIChnbG9iYWwuY3J5cHRvIHx8IGdsb2JhbC5tc0NyeXB0bykge1xuICAgICAgICByZXR1cm4gKDAsIF9yYW5kb21ieXRlczIuZGVmYXVsdCkobGVuKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Jyb3dzZXIgZG9lcyBub3Qgc3VwcG9ydCBjcnlwdG8gcmFuZG9tJyk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBmaWx0ZXJGb3JMb2codHlwZSwgbXNnKSB7XG4gICAgdmFyIGJsYWNrbGlzdCA9IHtcbiAgICAgICAgUGFzc3BocmFzZUFjazoge1xuICAgICAgICAgICAgcGFzc3BocmFzZTogJyhyZWRhY3RlZC4uLiknXG4gICAgICAgIH0sXG4gICAgICAgIENpcGhlcmVkS2V5VmFsdWU6IHtcbiAgICAgICAgICAgIHZhbHVlOiAnKHJlZGFjdGVkLi4uKSdcbiAgICAgICAgfSxcbiAgICAgICAgR2V0UHVibGljS2V5OiB7XG4gICAgICAgICAgICBhZGRyZXNzX246ICcocmVkYWN0ZWQuLi4pJ1xuICAgICAgICB9LFxuICAgICAgICBQdWJsaWNLZXk6IHtcbiAgICAgICAgICAgIG5vZGU6ICcocmVkYWN0ZWQuLi4pJyxcbiAgICAgICAgICAgIHhwdWI6ICcocmVkYWN0ZWQuLi4pJ1xuICAgICAgICB9LFxuICAgICAgICBEZWNyeXB0ZWRNZXNzYWdlOiB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnKHJlZGFjdGVkLi4uKScsXG4gICAgICAgICAgICBhZGRyZXNzOiAnKHJlZGFjdGVkLi4uKSdcbiAgICAgICAgfSxcbiAgICAgICAgRmlybXdhcmVVcGxvYWQ6IHtcbiAgICAgICAgICAgIHBheWxvYWQ6ICcuLi4nXG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgaWYgKHR5cGUgaW4gYmxhY2tsaXN0KSB7XG4gICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgbXNnLCBibGFja2xpc3RbdHlwZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBtc2c7XG4gICAgfVxufVxuXG52YXIgQ2FsbEhlbHBlciA9IGV4cG9ydHMuQ2FsbEhlbHBlciA9IGZ1bmN0aW9uICgpIHtcbiAgICBmdW5jdGlvbiBDYWxsSGVscGVyKHRyYW5zcG9ydCwgc2Vzc2lvbklkLCBzZXNzaW9uKSB7XG4gICAgICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDYWxsSGVscGVyKTtcblxuICAgICAgICB0aGlzLnRyYW5zcG9ydCA9IHRyYW5zcG9ydDtcbiAgICAgICAgdGhpcy5zZXNzaW9uSWQgPSBzZXNzaW9uSWQ7XG4gICAgICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgfVxuXG4gICAgX2NyZWF0ZUNsYXNzKENhbGxIZWxwZXIsIFt7XG4gICAgICAgIGtleTogJ3JlYWQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcmVhZCgpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5yZWFkKHRoaXMuc2Vzc2lvbklkLCB0aGlzLnNlc3Npb24uZGVidWdMaW5rKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICB2YXIgbG9nTWVzc2FnZSA9IGZpbHRlckZvckxvZyhyZXMudHlwZSwgcmVzLm1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLnNlc3Npb24uZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1t0cmV6b3IuanNdIFtjYWxsXSBSZWNlaXZlZCcsIHJlcy50eXBlLCBsb2dNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMuc2Vzc2lvbi5yZWNlaXZlRXZlbnQuZW1pdChyZXMudHlwZSwgcmVzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLnNlc3Npb24uZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1t0cmV6b3IuanNdIFtjYWxsXSBSZWNlaXZlZCBlcnJvcicsIGVycik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF90aGlzLnNlc3Npb24uZXJyb3JFdmVudC5lbWl0KGVycik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3Bvc3QnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gcG9zdCh0eXBlLCBtc2cpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgICAgICB2YXIgbG9nTWVzc2FnZSA9IGZpbHRlckZvckxvZyh0eXBlLCBtc2cpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zZXNzaW9uLmRlYnVnKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1t0cmV6b3IuanNdIFtjYWxsXSBTZW5kaW5nJywgdHlwZSwgbG9nTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlc3Npb24uc2VuZEV2ZW50LmVtaXQodHlwZSwgbXNnKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNwb3J0LnBvc3QodGhpcy5zZXNzaW9uSWQsIHR5cGUsIG1zZywgdGhpcy5zZXNzaW9uLmRlYnVnTGluaykuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpczIuc2Vzc2lvbi5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3RyZXpvci5qc10gW2NhbGxdIFJlY2VpdmVkIGVycm9yJywgZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMyLnNlc3Npb24uZXJyb3JFdmVudC5lbWl0KGVycik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZW5kcyBhbiBhc3luYyBtZXNzYWdlIHRvIHRoZSBvcGVuZWQgZGV2aWNlLlxuXG4gICAgfSwge1xuICAgICAgICBrZXk6ICdjYWxsJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIGNhbGwodHlwZSwgbXNnKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMzID0gdGhpcztcblxuICAgICAgICAgICAgdmFyIGxvZ01lc3NhZ2UgPSBmaWx0ZXJGb3JMb2codHlwZSwgbXNnKTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbi5kZWJ1Zykge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdHJlem9yLmpzXSBbY2FsbF0gU2VuZGluZycsIHR5cGUsIGxvZ01lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZXNzaW9uLnNlbmRFdmVudC5lbWl0KHR5cGUsIG1zZyk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5jYWxsKHRoaXMuc2Vzc2lvbklkLCB0eXBlLCBtc2csIHRoaXMuc2Vzc2lvbi5kZWJ1Z0xpbmspLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIHZhciBsb2dNZXNzYWdlID0gZmlsdGVyRm9yTG9nKHJlcy50eXBlLCByZXMubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMzLnNlc3Npb24uZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1t0cmV6b3IuanNdIFtjYWxsXSBSZWNlaXZlZCcsIHJlcy50eXBlLCBsb2dNZXNzYWdlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMzLnNlc3Npb24ucmVjZWl2ZUV2ZW50LmVtaXQocmVzLnR5cGUsIHJlcy5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpczMuc2Vzc2lvbi5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3RyZXpvci5qc10gW2NhbGxdIFJlY2VpdmVkIGVycm9yJywgZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMzLnNlc3Npb24uZXJyb3JFdmVudC5lbWl0KGVycik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3R5cGVkQ2FsbCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0eXBlZENhbGwodHlwZSwgcmVzVHlwZSwgbXNnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tbW9uQ2FsbCh0eXBlLCBtc2cpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgIGFzc2VydFR5cGUocmVzLCByZXNUeXBlKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19jb21tb25DYWxsJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9jb21tb25DYWxsKHR5cGUsIG1zZykge1xuICAgICAgICAgICAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGwodHlwZSwgbXNnKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXM0Ll9maWx0ZXJDb21tb25UeXBlcyhyZXMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19maWx0ZXJDb21tb25UeXBlcycsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfZmlsdGVyQ29tbW9uVHlwZXMocmVzKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKHJlcy50eXBlID09PSAnRmFpbHVyZScpIHtcbiAgICAgICAgICAgICAgICB2YXIgZSA9IG5ldyBFcnJvcihyZXMubWVzc2FnZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAvLyAkRmxvd0lzc3VlIGV4dGVuZGluZyBlcnJvcnMgaW4gRVM2IFwiY29ycmVjdGx5XCIgaXMgYSBQSVRBXG4gICAgICAgICAgICAgICAgZS5jb2RlID0gcmVzLm1lc3NhZ2UuY29kZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXMudHlwZSA9PT0gJ0J1dHRvblJlcXVlc3QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmJ1dHRvbkV2ZW50LmVtaXQocmVzLm1lc3NhZ2UuY29kZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vbkNhbGwoJ0J1dHRvbkFjaycsIHt9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcy50eXBlID09PSAnRW50cm9weVJlcXVlc3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vbkNhbGwoJ0VudHJvcHlBY2snLCB7XG4gICAgICAgICAgICAgICAgICAgIGVudHJvcHk6IGdlbmVyYXRlRW50cm9weSgzMikudG9TdHJpbmcoJ2hleCcpXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXMudHlwZSA9PT0gJ1Bpbk1hdHJpeFJlcXVlc3QnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21wdFBpbihyZXMubWVzc2FnZS50eXBlKS50aGVuKGZ1bmN0aW9uIChwaW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS5fY29tbW9uQ2FsbCgnUGluTWF0cml4QWNrJywgeyBwaW46IHBpbiB9KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczUuX2NvbW1vbkNhbGwoJ0NhbmNlbCcsIHt9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHJlcy50eXBlID09PSAnUGFzc3BocmFzZVN0YXRlUmVxdWVzdCcpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXNzaW9uLmRldmljZSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgY3VycmVudFN0YXRlID0gdGhpcy5zZXNzaW9uLmRldmljZS5wYXNzcGhyYXNlU3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZWNlaXZlZFN0YXRlID0gcmVzLm1lc3NhZ2Uuc3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3RhdGUgIT0gbnVsbCAmJiBjdXJyZW50U3RhdGUgIT09IHJlY2VpdmVkU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0RldmljZSBoYXMgZW50ZXJlZCBpbmNvbnNpc3RlbnQgc3RhdGUuIFBsZWFzZSByZWNvbm5lY3QgdGhlIGRldmljZS4nKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uLmRldmljZS5wYXNzcGhyYXNlU3RhdGUgPSByZWNlaXZlZFN0YXRlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tbW9uQ2FsbCgnUGFzc3BocmFzZVN0YXRlQWNrJywge30pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyA/Pz8gbm93aGVyZSB0byBzYXZlIHRoZSBzdGF0ZSwgdGhyb3dpbmcgZXJyb3JcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdOb3doZXJlIHRvIHNhdmUgcGFzc3BocmFzZSBzdGF0ZS4nKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChyZXMudHlwZSA9PT0gJ1Bhc3NwaHJhc2VSZXF1ZXN0Jykge1xuICAgICAgICAgICAgICAgIGlmIChyZXMubWVzc2FnZS5vbl9kZXZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gXCJmYWtlXCIgYnV0dG9uIGV2ZW50XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbi5idXR0b25FdmVudC5lbWl0KCdQYXNzcGhyYXNlT25EZXZpY2UnKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbi5kZXZpY2UgJiYgdGhpcy5zZXNzaW9uLmRldmljZS5wYXNzcGhyYXNlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21tb25DYWxsKCdQYXNzcGhyYXNlQWNrJywgeyBzdGF0ZTogdGhpcy5zZXNzaW9uLmRldmljZS5wYXNzcGhyYXNlU3RhdGUgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbW1vbkNhbGwoJ1Bhc3NwaHJhc2VBY2snLCB7fSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wcm9tcHRQYXNzcGhyYXNlKCkudGhlbihmdW5jdGlvbiAocGFzc3BocmFzZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXM1LnNlc3Npb24uZGV2aWNlICYmIF90aGlzNS5zZXNzaW9uLmRldmljZS5wYXNzcGhyYXNlU3RhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczUuX2NvbW1vbkNhbGwoJ1Bhc3NwaHJhc2VBY2snLCB7IHBhc3NwaHJhc2U6IHBhc3NwaHJhc2UsIHN0YXRlOiBfdGhpczUuc2Vzc2lvbi5kZXZpY2UucGFzc3BocmFzZVN0YXRlIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS5fY29tbW9uQ2FsbCgnUGFzc3BocmFzZUFjaycsIHsgcGFzc3BocmFzZTogcGFzc3BocmFzZSB9KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczUuX2NvbW1vbkNhbGwoJ0NhbmNlbCcsIHt9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyIHx8IGU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzLnR5cGUgPT09ICdXb3JkUmVxdWVzdCcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcHJvbXB0V29yZCgpLnRoZW4oZnVuY3Rpb24gKHdvcmQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzNS5fY29tbW9uQ2FsbCgnV29yZEFjaycsIHsgd29yZDogd29yZCB9KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczUuX2NvbW1vbkNhbGwoJ0NhbmNlbCcsIHt9KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXMpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfcHJvbXB0UGluJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9wcm9tcHRQaW4odHlwZSkge1xuICAgICAgICAgICAgdmFyIF90aGlzNiA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpczYuc2Vzc2lvbi5waW5FdmVudC5lbWl0KHR5cGUsIGZ1bmN0aW9uIChlcnIsIHBpbikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyIHx8IHBpbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocGluKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpczYuc2Vzc2lvbi5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdbdHJlem9yLmpzXSBbY2FsbF0gUElOIGNhbGxiYWNrIG5vdCBjb25maWd1cmVkLCBjYW5jZWxsaW5nIHJlcXVlc3QnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdQSU4gY2FsbGJhY2sgbm90IGNvbmZpZ3VyZWQnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19wcm9tcHRQYXNzcGhyYXNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9wcm9tcHRQYXNzcGhyYXNlKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzNyA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpczcuc2Vzc2lvbi5wYXNzcGhyYXNlRXZlbnQuZW1pdChmdW5jdGlvbiAoZXJyLCBwYXNzcGhyYXNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgfHwgcGFzc3BocmFzZSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUocGFzc3BocmFzZS5ub3JtYWxpemUoJ05GS0QnKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXM3LnNlc3Npb24uZGVidWcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignW3RyZXpvci5qc10gW2NhbGxdIFBhc3NwaHJhc2UgY2FsbGJhY2sgbm90IGNvbmZpZ3VyZWQsIGNhbmNlbGxpbmcgcmVxdWVzdCcpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Bhc3NwaHJhc2UgY2FsbGJhY2sgbm90IGNvbmZpZ3VyZWQnKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19wcm9tcHRXb3JkJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9wcm9tcHRXb3JkKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFfdGhpczguc2Vzc2lvbi53b3JkRXZlbnQuZW1pdChmdW5jdGlvbiAoZXJyLCB3b3JkKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIgfHwgd29yZCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUod29yZC50b0xvY2FsZUxvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfdGhpczguc2Vzc2lvbi5kZWJ1Zykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdbdHJlem9yLmpzXSBbY2FsbF0gV29yZCBjYWxsYmFjayBub3QgY29uZmlndXJlZCwgY2FuY2VsbGluZyByZXF1ZXN0Jyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignV29yZCBjYWxsYmFjayBub3QgY29uZmlndXJlZCcpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1dKTtcblxuICAgIHJldHVybiBDYWxsSGVscGVyO1xufSgpOyIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5kZWZhdWx0ID0gdW5kZWZpbmVkO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG52YXIgX2NsYXNzLCBfdGVtcDtcblxudmFyIF9iaXRjb2luanNMaWJaY2FzaCA9IHJlcXVpcmUoJ2JpdGNvaW5qcy1saWItemNhc2gnKTtcblxudmFyIGJpdGNvaW4gPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfYml0Y29pbmpzTGliWmNhc2gpO1xuXG52YXIgX2V2ZW50cyA9IHJlcXVpcmUoJy4vZXZlbnRzJyk7XG5cbnZhciBfZmxvd0V2ZW50cyA9IHJlcXVpcmUoJy4vZmxvdy1ldmVudHMnKTtcblxudmFyIF9kZXNjcmlwdG9yU3RyZWFtID0gcmVxdWlyZSgnLi9kZXNjcmlwdG9yLXN0cmVhbScpO1xuXG52YXIgX2Rlc2NyaXB0b3JTdHJlYW0yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGVzY3JpcHRvclN0cmVhbSk7XG5cbnZhciBfZGV2aWNlID0gcmVxdWlyZSgnLi9kZXZpY2UnKTtcblxudmFyIF9kZXZpY2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfZGV2aWNlKTtcblxudmFyIF91bmFjcXVpcmVkRGV2aWNlID0gcmVxdWlyZSgnLi91bmFjcXVpcmVkLWRldmljZScpO1xuXG52YXIgX3VuYWNxdWlyZWREZXZpY2UyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdW5hY3F1aXJlZERldmljZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxudmFyIENPTkZJR19VUkwgPSAnaHR0cHM6Ly93YWxsZXQudHJlem9yLmlvL2RhdGEvY29uZmlnX3NpZ25lZC5iaW4nO1xuXG4vLyBhIHNsaWdodCBoYWNrXG4vLyB0aGlzIGVycm9yIHN0cmluZyBpcyBoYXJkLWNvZGVkXG4vLyBpbiBib3RoIGJyaWRnZSBhbmQgZXh0ZW5zaW9uXG52YXIgV1JPTkdfUFJFVklPVVNfU0VTU0lPTl9FUlJPUl9NRVNTQUdFID0gJ3dyb25nIHByZXZpb3VzIHNlc3Npb24nO1xuXG52YXIgV0VCVVNCX0VSUk9SX1RPU1RSSU5HID0gJ05ldHdvcmtFcnJvcjogVW5hYmxlIHRvIGNsYWltIGludGVyZmFjZS4nO1xuXG4vL1xuLy8gRXZlbnRzOlxuLy9cbi8vICBjb25uZWN0OiBEZXZpY2Vcbi8vICBkaXNjb25uZWN0OiBEZXZpY2Vcbi8vICB0cmFuc3BvcnQ6IFRyYW5zcG9ydFxuLy8gIHN0cmVhbTogRGVzY3JpcHRvclN0cmVhbVxuLy9cbnZhciBEZXZpY2VMaXN0ID0gKF90ZW1wID0gX2NsYXNzID0gZnVuY3Rpb24gKF9FdmVudEVtaXR0ZXIpIHtcbiAgICBfaW5oZXJpdHMoRGV2aWNlTGlzdCwgX0V2ZW50RW1pdHRlcik7XG5cbiAgICBfY3JlYXRlQ2xhc3MoRGV2aWNlTGlzdCwgbnVsbCwgW3tcbiAgICAgICAga2V5OiAnX3NldEZldGNoJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9zZXRGZXRjaChmZXRjaCkge1xuICAgICAgICAgICAgRGV2aWNlTGlzdC5fZmV0Y2ggPSBmZXRjaDtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3NldFRyYW5zcG9ydCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfc2V0VHJhbnNwb3J0KHQpIHtcbiAgICAgICAgICAgIERldmljZUxpc3QuZGVmYXVsdFRyYW5zcG9ydCA9IHQ7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19zZXROb2RlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9zZXROb2RlKG5vZGUpIHtcbiAgICAgICAgICAgIERldmljZUxpc3Qubm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICBmdW5jdGlvbiBEZXZpY2VMaXN0KG9wdGlvbnMpIHtcbiAgICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIERldmljZUxpc3QpO1xuXG4gICAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChEZXZpY2VMaXN0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoRGV2aWNlTGlzdCkpLmNhbGwodGhpcykpO1xuXG4gICAgICAgIF90aGlzLnRyYW5zcG9ydExvYWRpbmcgPSB0cnVlO1xuICAgICAgICBfdGhpcy5zdHJlYW0gPSBudWxsO1xuICAgICAgICBfdGhpcy5kZXZpY2VzID0ge307XG4gICAgICAgIF90aGlzLnVuYWNxdWlyZWREZXZpY2VzID0ge307XG4gICAgICAgIF90aGlzLmNyZWF0aW5nRGV2aWNlcyA9IHt9O1xuICAgICAgICBfdGhpcy5zZXNzaW9ucyA9IHt9O1xuICAgICAgICBfdGhpcy5kZWJ1Z1Nlc3Npb25zID0ge307XG4gICAgICAgIF90aGlzLmVycm9yRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdlcnJvcicsIF90aGlzKTtcbiAgICAgICAgX3RoaXMudHJhbnNwb3J0RXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCd0cmFuc3BvcnQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnN0cmVhbUV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnc3RyZWFtJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5jb25uZWN0RXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQyKCdjb25uZWN0JywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5jb25uZWN0VW5hY3F1aXJlZEV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnY29ubmVjdFVuYWNxdWlyZWQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLmNoYW5nZWRTZXNzaW9uc0V2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnY2hhbmdlZFNlc3Npb25zJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5hY3F1aXJlZEV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnYWNxdWlyZWQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnJlbGVhc2VkRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdyZWxlYXNlZCcsIF90aGlzKTtcbiAgICAgICAgX3RoaXMuZGVidWdDaGFuZ2VkU2Vzc2lvbnNFdmVudCA9IG5ldyBfZmxvd0V2ZW50cy5FdmVudDEoJ2RlYnVnQ2hhbmdlZFNlc3Npb25zJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5kZWJ1Z0FjcXVpcmVkRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdkZWJ1Z0FjcXVpcmVkJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5kZWJ1Z1JlbGVhc2VkRXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdkZWJ1Z1JlbGVhc2VkJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5kaXNjb25uZWN0RXZlbnQgPSBuZXcgX2Zsb3dFdmVudHMuRXZlbnQxKCdkaXNjb25uZWN0JywgX3RoaXMpO1xuICAgICAgICBfdGhpcy5kaXNjb25uZWN0VW5hY3F1aXJlZEV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgnZGlzY29ubmVjdFVuYWNxdWlyZWQnLCBfdGhpcyk7XG4gICAgICAgIF90aGlzLnVwZGF0ZUV2ZW50ID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MSgndXBkYXRlJywgX3RoaXMpO1xuICAgICAgICBfdGhpcy51bnJlYWRhYmxlSGlkRGV2aWNlQ2hhbmdlID0gbmV3IF9mbG93RXZlbnRzLkV2ZW50MCgndW5yZWFkYWJsZUhpZERldmljZScsIF90aGlzKTtcblxuXG4gICAgICAgIF90aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICBfdGhpcy5yZXF1ZXN0TmVlZGVkID0gZmFsc2U7XG5cbiAgICAgICAgX3RoaXMudHJhbnNwb3J0RXZlbnQub24oZnVuY3Rpb24gKHRyYW5zcG9ydCkge1xuICAgICAgICAgICAgX3RoaXMudHJhbnNwb3J0ID0gdHJhbnNwb3J0O1xuICAgICAgICAgICAgX3RoaXMudHJhbnNwb3J0TG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgX3RoaXMucmVxdWVzdE5lZWRlZCA9IHRyYW5zcG9ydC5yZXF1ZXN0TmVlZGVkO1xuXG4gICAgICAgICAgICBfdGhpcy5faW5pdFN0cmVhbSh0cmFuc3BvcnQpO1xuICAgICAgICAgICAgX3RoaXMuX3NldFVucmVhZGFibGVIaWREZXZpY2VDaGFuZ2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgX3RoaXMuc3RyZWFtRXZlbnQub24oZnVuY3Rpb24gKHN0cmVhbSkge1xuICAgICAgICAgICAgX3RoaXMuc3RyZWFtID0gc3RyZWFtO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyB1c2luZyBzZXRUaW1lb3V0IHRvIGVtaXQgJ3RyYW5zcG9ydCcgaW4gbmV4dCB0aWNrLFxuICAgICAgICAvLyBzbyBwZW9wbGUgZnJvbSBvdXRzaWRlIGNhbiBhZGQgbGlzdGVuZXIgYWZ0ZXIgY29uc3RydWN0b3IgZmluaXNoZXNcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMuX2luaXRUcmFuc3BvcnQoKTtcbiAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgX3RoaXMueHB1YkRlcml2ZSA9IF90aGlzLm9wdGlvbnMueHB1YkRlcml2ZSAhPSBudWxsID8gX3RoaXMub3B0aW9ucy54cHViRGVyaXZlIDogZnVuY3Rpb24gKHhwdWIsIG5ldHdvcmssIGluZGV4KSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGJpdGNvaW4uSEROb2RlLmZyb21CYXNlNTgoeHB1YiwgbmV0d29yaywgZmFsc2UpLmRlcml2ZShpbmRleCkudG9CYXNlNTgoKSk7XG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG5cbiAgICBfY3JlYXRlQ2xhc3MoRGV2aWNlTGlzdCwgW3tcbiAgICAgICAga2V5OiAncmVxdWVzdERldmljZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiByZXF1ZXN0RGV2aWNlKCkge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNwb3J0ID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5yZXF1ZXN0RGV2aWNlKCk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2FzQXJyYXknLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gYXNBcnJheSgpIHtcbiAgICAgICAgICAgIHJldHVybiBvYmplY3RWYWx1ZXModGhpcy5kZXZpY2VzKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAndW5hY3F1aXJlZEFzQXJyYXknLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdW5hY3F1aXJlZEFzQXJyYXkoKSB7XG4gICAgICAgICAgICByZXR1cm4gb2JqZWN0VmFsdWVzKHRoaXMudW5hY3F1aXJlZERldmljZXMpO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdoYXNEZXZpY2VPclVuYWNxdWlyZWREZXZpY2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gaGFzRGV2aWNlT3JVbmFjcXVpcmVkRGV2aWNlKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXNBcnJheSgpLmxlbmd0aCArIHRoaXMudW5hY3F1aXJlZEFzQXJyYXkoKS5sZW5ndGggPiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZm9yIG15dHJlem9yIC0gcmV0dXJucyBcImJyaWRnZVwiIG9yIFwiZXh0ZW5zaW9uXCIsIG9yIHNvbWV0aGluZyBlbHNlIDopXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3RyYW5zcG9ydFR5cGUnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gdHJhbnNwb3J0VHlwZSgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zcG9ydCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNwb3J0LmFjdGl2ZU5hbWUpIHtcbiAgICAgICAgICAgICAgICAvLyAkIEZsb3dJc3N1ZVxuICAgICAgICAgICAgICAgIHZhciBhY3RpdmVOYW1lID0gdGhpcy50cmFuc3BvcnQuYWN0aXZlTmFtZTtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlTmFtZSA9PT0gJ0JyaWRnZVRyYW5zcG9ydCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdicmlkZ2UnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlTmFtZSA9PT0gJ0V4dGVuc2lvblRyYW5zcG9ydCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdleHRlbnNpb24nO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYWN0aXZlTmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC5uYW1lO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd0cmFuc3BvcnRWZXJzaW9uJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIHRyYW5zcG9ydFZlcnNpb24oKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmFuc3BvcnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zcG9ydC52ZXJzaW9uO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICd0cmFuc3BvcnRPdXRkYXRlZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB0cmFuc3BvcnRPdXRkYXRlZCgpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyYW5zcG9ydCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNwb3J0LmlzT3V0ZGF0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2NvbmZpZ1RyYW5zcG9ydCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfY29uZmlnVHJhbnNwb3J0KHRyYW5zcG9ydCkge1xuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5jb25maWcgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc3BvcnQuY29uZmlndXJlKHRoaXMub3B0aW9ucy5jb25maWcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbmZpZ1VybCA9IHRoaXMub3B0aW9ucy5jb25maWdVcmwgPT0gbnVsbCA/IENPTkZJR19VUkwgKyAnPycgKyBEYXRlLm5vdygpIDogdGhpcy5vcHRpb25zLmNvbmZpZ1VybDtcbiAgICAgICAgICAgICAgICB2YXIgZmV0Y2ggPSBEZXZpY2VMaXN0Ll9mZXRjaDtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmV0Y2goX2NvbmZpZ1VybCkudGhlbihmdW5jdGlvbiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBjb25maWcgcmVzcG9uc2UuJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgICAgICAgICB9KS50aGVuKGZ1bmN0aW9uIChjb25maWcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zcG9ydC5jb25maWd1cmUoY29uZmlnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX2luaXRUcmFuc3BvcnQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX2luaXRUcmFuc3BvcnQoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgICAgICAgICAgdmFyIHRyYW5zcG9ydCA9IHRoaXMub3B0aW9ucy50cmFuc3BvcnQgPyB0aGlzLm9wdGlvbnMudHJhbnNwb3J0IDogRGV2aWNlTGlzdC5kZWZhdWx0VHJhbnNwb3J0KCk7XG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmJyaWRnZVZlcnNpb25VcmwgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRyYW5zcG9ydC5zZXRCcmlkZ2VMYXRlc3RVcmwodGhpcy5vcHRpb25zLmJyaWRnZVZlcnNpb25VcmwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3RyZXpvci5qc10gW2RldmljZSBsaXN0XSBJbml0aWFsaXppbmcgdHJhbnNwb3J0cycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJhbnNwb3J0LmluaXQodGhpcy5vcHRpb25zLmRlYnVnKS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMyLm9wdGlvbnMuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdbdHJlem9yLmpzXSBbZGV2aWNlIGxpc3RdIENvbmZpZ3VyaW5nIHRyYW5zcG9ydHMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXMyLl9jb25maWdUcmFuc3BvcnQodHJhbnNwb3J0KS50aGVuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF90aGlzMi5vcHRpb25zLmRlYnVnSW5mbykge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1t0cmV6b3IuanNdIFtkZXZpY2UgbGlzdF0gQ29uZmlndXJpbmcgdHJhbnNwb3J0cyBkb25lJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX3RoaXMyLnRyYW5zcG9ydEV2ZW50LmVtaXQodHJhbnNwb3J0KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0sIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmIChfdGhpczIub3B0aW9ucy5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignW3RyZXpvci5qc10gW2RldmljZSBsaXN0XSBFcnJvciBpbiB0cmFuc3BvcnQnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIF90aGlzMi5lcnJvckV2ZW50LmVtaXQoZXJyb3IpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19jcmVhdGVBbmRTYXZlRGV2aWNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVBbmRTYXZlRGV2aWNlKHRyYW5zcG9ydCwgZGVzY3JpcHRvciwgc3RyZWFtLCBwcmV2aW91cykge1xuICAgICAgICAgICAgdmFyIF90aGlzMyA9IHRoaXM7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWdJbmZvKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1t0cmV6b3IuanNdIFtkZXZpY2UgbGlzdF0gQ3JlYXRpbmcgRGV2aWNlJywgZGVzY3JpcHRvciwgcHJldmlvdXMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXIgcGF0aCA9IGRlc2NyaXB0b3IucGF0aC50b1N0cmluZygpO1xuICAgICAgICAgICAgdGhpcy5jcmVhdGluZ0RldmljZXNbcGF0aF0gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlRGV2aWNlKHRyYW5zcG9ydCwgZGVzY3JpcHRvciwgc3RyZWFtLCBwcmV2aW91cykudGhlbihmdW5jdGlvbiAoZGV2aWNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGRldmljZSBpbnN0YW5jZW9mIF9kZXZpY2UyLmRlZmF1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmRldmljZXNbcGF0aF0gPSBkZXZpY2U7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpczMuY3JlYXRpbmdEZXZpY2VzW3BhdGhdO1xuICAgICAgICAgICAgICAgICAgICBfdGhpczMuY29ubmVjdEV2ZW50LmVtaXQoZGV2aWNlLCBwcmV2aW91cyk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzMy5jcmVhdGluZ0RldmljZXNbcGF0aF07XG4gICAgICAgICAgICAgICAgICAgIF90aGlzMy51bmFjcXVpcmVkRGV2aWNlc1twYXRoXSA9IGRldmljZTtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMzLmNvbm5lY3RVbmFjcXVpcmVkRXZlbnQuZW1pdChkZXZpY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbdHJlem9yLmpzXSBbZGV2aWNlIGxpc3RdIENhbm5vdCBjcmVhdGUgZGV2aWNlJywgZXJyKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfY3JlYXRlRGV2aWNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVEZXZpY2UodHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBzdHJlYW0sIHByZXZpb3VzKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgICAgICAgdmFyIGRldlJlcyA9IF9kZXZpY2UyLmRlZmF1bHQuZnJvbURlc2NyaXB0b3IodHJhbnNwb3J0LCBkZXNjcmlwdG9yLCB0aGlzKS50aGVuKGZ1bmN0aW9uIChkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNlO1xuICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgPT09IFdST05HX1BSRVZJT1VTX1NFU1NJT05fRVJST1JfTUVTU0FHRSB8fCBlcnJvci50b1N0cmluZygpID09PSBXRUJVU0JfRVJST1JfVE9TVFJJTkcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfdGhpczQuX2NyZWF0ZVVuYWNxdWlyZWREZXZpY2UodHJhbnNwb3J0LCBkZXNjcmlwdG9yLCBzdHJlYW0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM0LnVuYWNxdWlyZWREZXZpY2VzW3ByZXZpb3VzLm9yaWdpbmFsRGVzY3JpcHRvci5wYXRoLnRvU3RyaW5nKCldID0gcHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldmlvdXM7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgX3RoaXM0LmVycm9yRXZlbnQuZW1pdChlcnJvcik7XG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBkZXZSZXM7XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ19jcmVhdGVVbmFjcXVpcmVkRGV2aWNlJyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIF9jcmVhdGVVbmFjcXVpcmVkRGV2aWNlKHRyYW5zcG9ydCwgZGVzY3JpcHRvciwgc3RyZWFtKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1Z0luZm8pIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnW3RyZXpvci5qc10gW2RldmljZSBsaXN0XSBDcmVhdGluZyBVbmFjcXVpcmVkIERldmljZScsIGRlc2NyaXB0b3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBpZiAodGhpcy5nZXRTZXNzaW9uKGRlc2NyaXB0b3IucGF0aCkgPT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcIkRldmljZSBubyBsb25nZXIgY29ubmVjdGVkLlwiKTtcbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIHZhciByZXMgPSBfdW5hY3F1aXJlZERldmljZTIuZGVmYXVsdC5mcm9tRGVzY3JpcHRvcih0cmFuc3BvcnQsIGRlc2NyaXB0b3IsIHRoaXMpLnRoZW4oZnVuY3Rpb24gKGRldmljZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2U7XG4gICAgICAgICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBfdGhpczUuZXJyb3JFdmVudC5lbWl0KGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHJlcztcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnZ2V0U2Vzc2lvbicsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBnZXRTZXNzaW9uKHBhdGgsIGRlYnVnKSB7XG4gICAgICAgICAgICBpZiAoZGVidWcpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kZWJ1Z1Nlc3Npb25zW3BhdGhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbnNbcGF0aF07XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ3NldEhhcmQnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gc2V0SGFyZChwYXRoLCBzZXNzaW9uLCBkZWJ1Zykge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RyZWFtICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0cmVhbS5zZXRIYXJkKHBhdGgsIHNlc3Npb24sIGRlYnVnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVidWdTZXNzaW9uc1twYXRoXSA9IHNlc3Npb247XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbnNbcGF0aF0gPSBzZXNzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdfaW5pdFN0cmVhbScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBfaW5pdFN0cmVhbSh0cmFuc3BvcnQpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICAgICAgICB2YXIgc3RyZWFtID0gbmV3IF9kZXNjcmlwdG9yU3RyZWFtMi5kZWZhdWx0KHRyYW5zcG9ydCk7XG5cbiAgICAgICAgICAgIHN0cmVhbS51cGRhdGVFdmVudC5vbihmdW5jdGlvbiAoZGlmZikge1xuICAgICAgICAgICAgICAgIF90aGlzNi5zZXNzaW9ucyA9IHt9O1xuICAgICAgICAgICAgICAgIF90aGlzNi5kZWJ1Z1Nlc3Npb25zID0ge307XG4gICAgICAgICAgICAgICAgZGlmZi5kZXNjcmlwdG9ycy5mb3JFYWNoKGZ1bmN0aW9uIChkZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzNi5zZXNzaW9uc1tkZXNjcmlwdG9yLnBhdGgudG9TdHJpbmcoKV0gPSBkZXNjcmlwdG9yLnNlc3Npb247XG4gICAgICAgICAgICAgICAgICAgIF90aGlzNi5kZWJ1Z1Nlc3Npb25zW2Rlc2NyaXB0b3IucGF0aC50b1N0cmluZygpXSA9IGRlc2NyaXB0b3IuZGVidWdTZXNzaW9uO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgZGlmZi5jb25uZWN0ZWQuZm9yRWFjaChmdW5jdGlvbiAoZGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGF0aCA9IGRlc2NyaXB0b3IucGF0aDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBkZXNjcmlwdG9yIGlzIG51bGwgPT4gd2UgY2FuIGFjcXVpcmUgdGhlIGRldmljZVxuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXNzaW9uID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5fY3JlYXRlQW5kU2F2ZURldmljZSh0cmFuc3BvcnQsIGRlc2NyaXB0b3IsIHN0cmVhbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuY3JlYXRpbmdEZXZpY2VzW3BhdGgudG9TdHJpbmcoKV0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2Ll9jcmVhdGVVbmFjcXVpcmVkRGV2aWNlKHRyYW5zcG9ydCwgZGVzY3JpcHRvciwgc3RyZWFtKS50aGVuKGZ1bmN0aW9uIChkZXZpY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYudW5hY3F1aXJlZERldmljZXNbcGF0aC50b1N0cmluZygpXSA9IGRldmljZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgX3RoaXM2LmNyZWF0aW5nRGV2aWNlc1twYXRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5jb25uZWN0VW5hY3F1aXJlZEV2ZW50LmVtaXQoZGV2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICB2YXIgZXZlbnRzID0gW3tcbiAgICAgICAgICAgICAgICAgICAgZDogZGlmZi5jaGFuZ2VkU2Vzc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIGU6IF90aGlzNi5jaGFuZ2VkU2Vzc2lvbnNFdmVudFxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgZDogZGlmZi5hY3F1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgZTogX3RoaXM2LmFjcXVpcmVkRXZlbnRcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIGQ6IGRpZmYucmVsZWFzZWQsXG4gICAgICAgICAgICAgICAgICAgIGU6IF90aGlzNi5yZWxlYXNlZEV2ZW50XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBkOiBkaWZmLmRlYnVnQ2hhbmdlZFNlc3Npb25zLFxuICAgICAgICAgICAgICAgICAgICBlOiBfdGhpczYuZGVidWdDaGFuZ2VkU2Vzc2lvbnNFdmVudFxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgZDogZGlmZi5kZWJ1Z0FjcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBlOiBfdGhpczYuZGVidWdBY3F1aXJlZEV2ZW50XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBkOiBkaWZmLmRlYnVnUmVsZWFzZWQsXG4gICAgICAgICAgICAgICAgICAgIGU6IF90aGlzNi5kZWJ1Z1JlbGVhc2VkRXZlbnRcbiAgICAgICAgICAgICAgICB9XTtcblxuICAgICAgICAgICAgICAgIGV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gX3JlZi5kLFxuICAgICAgICAgICAgICAgICAgICAgICAgZSA9IF9yZWYuZTtcblxuICAgICAgICAgICAgICAgICAgICBkLmZvckVhY2goZnVuY3Rpb24gKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwYXRoU3RyID0gZGVzY3JpcHRvci5wYXRoLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGV2aWNlID0gX3RoaXM2LmRldmljZXNbcGF0aFN0cl07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVtaXQoZGV2aWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBkaWZmLmRpc2Nvbm5lY3RlZC5mb3JFYWNoKGZ1bmN0aW9uIChkZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBwYXRoID0gZGVzY3JpcHRvci5wYXRoO1xuICAgICAgICAgICAgICAgICAgICB2YXIgcGF0aFN0ciA9IHBhdGgudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRldmljZSA9IF90aGlzNi5kZXZpY2VzW3BhdGhTdHJdO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpczYuZGV2aWNlc1twYXRoU3RyXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzNi5kaXNjb25uZWN0RXZlbnQuZW1pdChkZXZpY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHVuYWNxdWlyZWREZXZpY2UgPSBfdGhpczYudW5hY3F1aXJlZERldmljZXNbcGF0aFN0cl07XG4gICAgICAgICAgICAgICAgICAgIGlmICh1bmFjcXVpcmVkRGV2aWNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBfdGhpczYudW5hY3F1aXJlZERldmljZXNbcGF0aFN0cl07XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGhpczYuZGlzY29ubmVjdFVuYWNxdWlyZWRFdmVudC5lbWl0KHVuYWNxdWlyZWREZXZpY2UpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBkaWZmLnJlbGVhc2VkLmZvckVhY2goZnVuY3Rpb24gKGRlc2NyaXB0b3IpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhdGggPSBkZXNjcmlwdG9yLnBhdGg7XG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXZpY2UgPSBfdGhpczYudW5hY3F1aXJlZERldmljZXNbcGF0aC50b1N0cmluZygpXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZGV2aWNlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmV2aW91cyA9IF90aGlzNi51bmFjcXVpcmVkRGV2aWNlc1twYXRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIF90aGlzNi51bmFjcXVpcmVkRGV2aWNlc1twYXRoLnRvU3RyaW5nKCldO1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM2Ll9jcmVhdGVBbmRTYXZlRGV2aWNlKHRyYW5zcG9ydCwgZGVzY3JpcHRvciwgc3RyZWFtLCBwcmV2aW91cyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIF90aGlzNi51cGRhdGVFdmVudC5lbWl0KGRpZmYpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHN0cmVhbS5lcnJvckV2ZW50Lm9uKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgICAgIF90aGlzNi5lcnJvckV2ZW50LmVtaXQoZXJyb3IpO1xuICAgICAgICAgICAgICAgIHN0cmVhbS5zdG9wKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc3RyZWFtLmxpc3RlbigpO1xuXG4gICAgICAgICAgICB0aGlzLnN0cmVhbUV2ZW50LmVtaXQoc3RyZWFtKTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnb25VbmFjcXVpcmVkQ29ubmVjdCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBvblVuYWNxdWlyZWRDb25uZWN0KHVuYWNxdWlyZWREZXZpY2UsIGxpc3RlbmVyKSB7XG4gICAgICAgICAgICB2YXIgcGF0aCA9IHVuYWNxdWlyZWREZXZpY2Uub3JpZ2luYWxEZXNjcmlwdG9yLnBhdGgudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLnVuYWNxdWlyZWREZXZpY2VzW3BhdGhdID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jcmVhdGluZ0RldmljZXNbcGF0aF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3RFdmVudC5vbihsaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRldmljZXNbcGF0aF0gIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcih0aGlzLmRldmljZXNbcGF0aF0sIHVuYWNxdWlyZWREZXZpY2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0RXZlbnQub24obGlzdGVuZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdvblVuYWNxdWlyZWREaXNjb25uZWN0JyxcbiAgICAgICAgdmFsdWU6IGZ1bmN0aW9uIG9uVW5hY3F1aXJlZERpc2Nvbm5lY3QodW5hY3F1aXJlZERldmljZSwgbGlzdGVuZXIpIHtcbiAgICAgICAgICAgIHZhciBwYXRoID0gdW5hY3F1aXJlZERldmljZS5vcmlnaW5hbERlc2NyaXB0b3IucGF0aC50b1N0cmluZygpO1xuICAgICAgICAgICAgaWYgKHRoaXMudW5hY3F1aXJlZERldmljZXNbcGF0aF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNyZWF0aW5nRGV2aWNlc1twYXRoXSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFVuYWNxdWlyZWRFdmVudC5vbihsaXN0ZW5lcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRldmljZXNbcGF0aF0gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lcih1bmFjcXVpcmVkRGV2aWNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzY29ubmVjdFVuYWNxdWlyZWRFdmVudC5vbihsaXN0ZW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ29uRGlzY29ubmVjdCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBvbkRpc2Nvbm5lY3QoZGV2aWNlLCBsaXN0ZW5lcikge1xuICAgICAgICAgICAgdmFyIHBhdGggPSBkZXZpY2Uub3JpZ2luYWxEZXNjcmlwdG9yLnBhdGgudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIGlmICh0aGlzLmRldmljZXNbcGF0aF0gPT0gbnVsbCAmJiB0aGlzLmNyZWF0aW5nRGV2aWNlc1twYXRoXSA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgbGlzdGVuZXIoZGV2aWNlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNjb25uZWN0RXZlbnQub24obGlzdGVuZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHBoeXNpY2FsIGRldmljZSBjb25uZWN0ZWQsIHJldHVybnMgaXQsIHN0ZWFscyBpdCBpZiBuZWNlc3NhcnlcblxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnc3RlYWxGaXJzdERldmljZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBzdGVhbEZpcnN0RGV2aWNlKHJlamVjdE9uRW1wdHkpIHtcbiAgICAgICAgICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgICAgICAgICB2YXIgZGV2aWNlcyA9IHRoaXMuYXNBcnJheSgpO1xuICAgICAgICAgICAgaWYgKGRldmljZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoZGV2aWNlc1swXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdW5hY3F1aXJlZERldmljZXMgPSB0aGlzLnVuYWNxdWlyZWRBc0FycmF5KCk7XG4gICAgICAgICAgICBpZiAodW5hY3F1aXJlZERldmljZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB1bmFjcXVpcmVkRGV2aWNlc1swXS5zdGVhbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlamVjdE9uRW1wdHkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdObyBkZXZpY2UgY29ubmVjdGVkJykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgICAgICBfdGhpczcuY29ubmVjdEV2ZW50Lm9uY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LnN0ZWFsRmlyc3REZXZpY2UoKS50aGVuKGZ1bmN0aW9uIChkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWplY3QoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdGVhbHMgdGhlIGZpcnN0IGRldmljZXMsIGFjcXVpcmVzIGl0IGFuZCAqbmV2ZXIqIHJlbGVhc2VzIGl0IHVudGlsIHRoZSB3aW5kb3cgaXMgY2xvc2VkXG5cbiAgICB9LCB7XG4gICAgICAgIGtleTogJ2FjcXVpcmVGaXJzdERldmljZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBhY3F1aXJlRmlyc3REZXZpY2UocmVqZWN0T25FbXB0eSkge1xuICAgICAgICAgICAgdmFyIF90aGlzOCA9IHRoaXM7XG5cbiAgICAgICAgICAgIHZhciB0aW1lb3V0UHJvbWlzZUZuID0gZnVuY3Rpb24gdGltZW91dFByb21pc2VGbih0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICAgICAgICAgIF90aGlzOC5zdGVhbEZpcnN0RGV2aWNlKHJlamVjdE9uRW1wdHkpLnRoZW4oZnVuY3Rpb24gKGRldmljZSkge1xuICAgICAgICAgICAgICAgICAgICBkZXZpY2UucnVuKGZ1bmN0aW9uIChzZXNzaW9uKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgZGV2aWNlOiBkZXZpY2UsIHNlc3Npb246IHNlc3Npb24gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIFwiaW5zaWRlXCIgcHJvbWlzZSBuZXZlciByZXNvbHZlcyBvciByZWplY3RzXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge30pO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZSA9PT0gV1JPTkdfUFJFVklPVVNfU0VTU0lPTl9FUlJPUl9NRVNTQUdFKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aW1lb3V0UHJvbWlzZUZuKDEwMDApLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOC5hY3F1aXJlRmlyc3REZXZpY2UocmVqZWN0T25FbXB0eSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAnX3NldFVucmVhZGFibGVIaWREZXZpY2VDaGFuZ2UnLFxuICAgICAgICB2YWx1ZTogZnVuY3Rpb24gX3NldFVucmVhZGFibGVIaWREZXZpY2VDaGFuZ2UoKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXM5ID0gdGhpcztcblxuICAgICAgICAgICAgaWYgKERldmljZUxpc3Qubm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIF90cmFuc3BvcnQgPSB0aGlzLnRyYW5zcG9ydDtcbiAgICAgICAgICAgICAgICBpZiAoX3RyYW5zcG9ydCA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gJEZsb3dJc3N1ZSAtIHRoaXMgYWxsIGlzIGdvaW5nIGFyb3VuZCBGbG93IDovXG4gICAgICAgICAgICAgICAgdmFyIGFjdGl2ZVRyYW5zcG9ydCA9IF90cmFuc3BvcnQuYWN0aXZlVHJhbnNwb3J0O1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUcmFuc3BvcnQgPT0gbnVsbCB8fCBhY3RpdmVUcmFuc3BvcnQubmFtZSAhPT0gJ1BhcmFsbGVsVHJhbnNwb3J0Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB3ZWJ1c2JUcmFuc3BvcnQgPSBhY3RpdmVUcmFuc3BvcnQud29ya2luZ1RyYW5zcG9ydHNbJ3dlYnVzYiddO1xuICAgICAgICAgICAgICAgIGlmICh3ZWJ1c2JUcmFuc3BvcnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG9uZSBvZiB0aGUgSElEIGZhbGxiYWNrcyBhcmUgd29ya2luZyAtPiBkbyBub3QgZGlzcGxheSB0aGUgbWVzc2FnZVxuICAgICAgICAgICAgICAgIHZhciBoaWRUcmFuc3BvcnQgPSBhY3RpdmVUcmFuc3BvcnQud29ya2luZ1RyYW5zcG9ydHNbJ2hpZCddO1xuICAgICAgICAgICAgICAgIGlmIChoaWRUcmFuc3BvcnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB3ZWJ1c2JUcmFuc3BvcnQucGx1Z2luLnVucmVhZGFibGVIaWREZXZpY2VDaGFuZ2Uub24oJ2NoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzOS51bnJlYWRhYmxlSGlkRGV2aWNlQ2hhbmdlLmVtaXQoJ2NoYW5nZScpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sIHtcbiAgICAgICAga2V5OiAndW5yZWFkYWJsZUhpZERldmljZScsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiB1bnJlYWRhYmxlSGlkRGV2aWNlKCkge1xuICAgICAgICAgICAgaWYgKERldmljZUxpc3Qubm9kZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgdmFyIF90cmFuc3BvcnQyID0gdGhpcy50cmFuc3BvcnQ7XG4gICAgICAgICAgICAgICAgaWYgKF90cmFuc3BvcnQyID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAkRmxvd0lzc3VlIC0gdGhpcyBhbGwgaXMgZ29pbmcgYXJvdW5kIEZsb3cgOi9cbiAgICAgICAgICAgICAgICB2YXIgYWN0aXZlVHJhbnNwb3J0ID0gX3RyYW5zcG9ydDIuYWN0aXZlVHJhbnNwb3J0O1xuICAgICAgICAgICAgICAgIGlmIChhY3RpdmVUcmFuc3BvcnQgPT0gbnVsbCB8fCBhY3RpdmVUcmFuc3BvcnQubmFtZSAhPT0gJ1BhcmFsbGVsVHJhbnNwb3J0Jykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB3ZWJ1c2JUcmFuc3BvcnQgPSBhY3RpdmVUcmFuc3BvcnQud29ya2luZ1RyYW5zcG9ydHNbJ3dlYnVzYiddO1xuICAgICAgICAgICAgICAgIGlmICh3ZWJ1c2JUcmFuc3BvcnQgPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG9uZSBvZiB0aGUgSElEIGZhbGxiYWNrcyBhcmUgd29ya2luZyAtPiBkbyBub3QgZGlzcGxheSB0aGUgbWVzc2FnZVxuICAgICAgICAgICAgICAgIHZhciBoaWRUcmFuc3BvcnQgPSBhY3RpdmVUcmFuc3BvcnQud29ya2luZ1RyYW5zcG9ydHNbJ2hpZCddO1xuICAgICAgICAgICAgICAgIGlmIChoaWRUcmFuc3BvcnQgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB3ZWJ1c2JUcmFuc3BvcnQucGx1Z2luLnVucmVhZGFibGVIaWREZXZpY2U7XG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwge1xuICAgICAgICBrZXk6ICdvbmJlZm9yZXVubG9hZCcsXG4gICAgICAgIHZhbHVlOiBmdW5jdGlvbiBvbmJlZm9yZXVubG9hZChjbGVhclNlc3Npb24pIHtcbiAgICAgICAgICAgIHRoaXMuYXNBcnJheSgpLmZvckVhY2goZnVuY3Rpb24gKGRldmljZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2Uub25iZWZvcmV1bmxvYWQoY2xlYXJTZXNzaW9uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gc29tZSB3ZWlyZCBpc3N1ZSBvbiBjaHJvbWUgb24gbWFjIG1ha2VzIHRoZSB3aW5kb3cgYWxpdmVcbiAgICAgICAgICAgIC8vIGV2ZW4gYWZ0ZXIgY2xvc2luZ1xuICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBzdG9wIHRoZSBzdHJlYW1cbiAgICAgICAgICAgIGlmICh0aGlzLnN0cmVhbSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJlYW0uc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMudHJhbnNwb3J0ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zcG9ydC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XSk7XG5cbiAgICByZXR1cm4gRGV2aWNlTGlzdDtcbn0oX2V2ZW50cy5FdmVudEVtaXR0ZXIpLCBfY2xhc3MuX2ZldGNoID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ05vIGZldGNoIGRlZmluZWQnKSk7XG59LCBfdGVtcCk7XG5leHBvcnRzLmRlZmF1bHQgPSBEZXZpY2VMaXN0O1xuXG5cbmZ1bmN0aW9uIG9iamVjdFZhbHVlcyhvYmplY3QpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMob2JqZWN0KS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gICAgfSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbi8vIHNsaWdodCBoYWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IHRvIGFsbG93IE5vZGUgdG8gc2V0IGl0cyBvd24gZmV0Y2hcbi8vIFJlcXVlc3QsIFJlcXVlc3RPcHRpb25zIGFuZCBSZXNwb25zZSBhcmUgYnVpbHQtaW4gdHlwZXMgb2YgRmxvdyBmb3IgZmV0Y2ggQVBJXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuc2V0RmV0Y2ggPSBzZXRGZXRjaDtcbmV4cG9ydHMudWRldkluc3RhbGxlcnMgPSB1ZGV2SW5zdGFsbGVycztcbmV4cG9ydHMubGF0ZXN0VmVyc2lvbiA9IGxhdGVzdFZlcnNpb247XG5leHBvcnRzLmluc3RhbGxlcnMgPSBpbnN0YWxsZXJzO1xudmFyIF9mZXRjaCA9IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xufSA6IHdpbmRvdy5mZXRjaDtcblxuZnVuY3Rpb24gc2V0RmV0Y2goZmV0Y2gpIHtcbiAgICBfZmV0Y2ggPSBmZXRjaDtcbn1cblxuZnVuY3Rpb24gZmlsbEluc3RhbGxlclVybChpbnN0YWxsZXIsIGRvbWFpbikge1xuICAgIHJldHVybiB7XG4gICAgICAgIHVybDogZG9tYWluICsgaW5zdGFsbGVyLnNob3J0VXJsLFxuICAgICAgICBsYWJlbDogaW5zdGFsbGVyLmxhYmVsLFxuICAgICAgICBwbGF0Zm9ybTogaW5zdGFsbGVyLnBsYXRmb3JtXG4gICAgfTtcbn1cblxudmFyIERBVEFfRE9NQUlOID0gJ2h0dHBzOi8vbXl0cmV6b3IuczMuYW1hem9uYXdzLmNvbSc7XG52YXIgQlJJREdFX1ZFUlNJT05fVVJMID0gREFUQV9ET01BSU4gKyAnL2JyaWRnZS9sYXRlc3QudHh0JztcblxudmFyIEJSSURHRV9JTlNUQUxMRVJTID0gW3tcbiAgICBzaG9ydFVybDogJy9icmlkZ2UvJXZlcnNpb24lL3RyZXpvci1icmlkZ2UtJXZlcnNpb24lLXdpbjMyLWluc3RhbGwuZXhlJyxcbiAgICBsYWJlbDogJ1dpbmRvd3MnLFxuICAgIHBsYXRmb3JtOiBbJ3dpbjMyJywgJ3dpbjY0J11cbn0sIHtcbiAgICBzaG9ydFVybDogJy9icmlkZ2UvJXZlcnNpb24lL3RyZXpvci1icmlkZ2UtJXZlcnNpb24lLnBrZycsXG4gICAgbGFiZWw6ICdNYWMgT1MgWCcsXG4gICAgcGxhdGZvcm06ICdtYWMnXG59LCB7XG4gICAgc2hvcnRVcmw6ICcvYnJpZGdlLyV2ZXJzaW9uJS90cmV6b3ItYnJpZGdlXyV2ZXJzaW9uJV9hbWQ2NC5kZWInLFxuICAgIGxhYmVsOiAnTGludXggNjQtYml0IChkZWIpJyxcbiAgICBwbGF0Zm9ybTogJ2RlYjY0J1xufSwge1xuICAgIHNob3J0VXJsOiAnL2JyaWRnZS8ldmVyc2lvbiUvdHJlem9yLWJyaWRnZS0ldmVyc2lvbiUtMS54ODZfNjQucnBtJyxcbiAgICBsYWJlbDogJ0xpbnV4IDY0LWJpdCAocnBtKScsXG4gICAgcGxhdGZvcm06ICdycG02NCdcbn0sIHtcbiAgICBzaG9ydFVybDogJy9icmlkZ2UvJXZlcnNpb24lL3RyZXpvci1icmlkZ2VfJXZlcnNpb24lX2kzODYuZGViJyxcbiAgICBsYWJlbDogJ0xpbnV4IDMyLWJpdCAoZGViKScsXG4gICAgcGxhdGZvcm06ICdkZWIzMidcbn0sIHtcbiAgICBzaG9ydFVybDogJy9icmlkZ2UvJXZlcnNpb24lL3RyZXpvci1icmlkZ2UtJXZlcnNpb24lLTEuaTM4Ni5ycG0nLFxuICAgIGxhYmVsOiAnTGludXggMzItYml0IChycG0pJyxcbiAgICBwbGF0Zm9ybTogJ3JwbTMyJ1xufV07XG5cbnZhciBVREVWX0lOU1RBTExFUlMgPSBbe1xuICAgIHNob3J0VXJsOiAnL3VkZXYvdHJlem9yLXVkZXYtMi0xLm5vYXJjaC5ycG0nLFxuICAgIGxhYmVsOiAnUlBNIHBhY2thZ2UnLFxuICAgIHBsYXRmb3JtOiBbJ3JwbTMyJywgJ3JwbTY0J11cbn0sIHtcbiAgICBzaG9ydFVybDogJy91ZGV2L3RyZXpvci11ZGV2XzJfYWxsLmRlYicsXG4gICAgbGFiZWw6ICdERUIgcGFja2FnZScsXG4gICAgcGxhdGZvcm06IFsnZGViMzInLCAnZGViNjQnXVxufV07XG5cbmZ1bmN0aW9uIHVkZXZJbnN0YWxsZXJzKG9wdGlvbnMpIHtcbiAgICB2YXIgbyA9IG9wdGlvbnMgfHwge307XG4gICAgdmFyIHBsYXRmb3JtID0gby5wbGF0Zm9ybSB8fCBwcmVmZXJyZWRQbGF0Zm9ybSgpO1xuICAgIHZhciBkb21haW4gPSBvLmRvbWFpbiB8fCBEQVRBX0RPTUFJTjtcblxuICAgIHJldHVybiBVREVWX0lOU1RBTExFUlMubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIHJldHVybiBmaWxsSW5zdGFsbGVyVXJsKGksIGRvbWFpbik7XG4gICAgfSkubWFwKGZ1bmN0aW9uICh1ZGV2KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB1cmw6IHVkZXYudXJsLFxuICAgICAgICAgICAgbGFiZWw6IHVkZXYubGFiZWwsXG4gICAgICAgICAgICBwbGF0Zm9ybTogdWRldi5wbGF0Zm9ybSxcbiAgICAgICAgICAgIHByZWZlcnJlZDogaXNQcmVmZXJyZWQodWRldi5wbGF0Zm9ybSwgcGxhdGZvcm0pXG4gICAgICAgIH07XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGxhdGVzdFZlcnNpb24ob3B0aW9ucykge1xuICAgIHZhciBvID0gb3B0aW9ucyB8fCB7fTtcbiAgICB2YXIgYnJpZGdlVXJsID0gby5icmlkZ2VVcmwgfHwgQlJJREdFX1ZFUlNJT05fVVJMO1xuICAgIHJldHVybiBfZmV0Y2goYnJpZGdlVXJsLCB7IGNyZWRlbnRpYWxzOiAnc2FtZS1vcmlnaW4nIH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG4gICAgICAgIHJldHVybiByZXNwb25zZS5vayA/IHJlc3BvbnNlLnRleHQoKSA6IHJlc3BvbnNlLnRleHQoKS50aGVuKGZ1bmN0aW9uICh0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QodGV4dCk7XG4gICAgICAgIH0pO1xuICAgIH0pLnRoZW4oZnVuY3Rpb24gKHZlcnNpb25fKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmVyc2lvbl8gIT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIHZlcnNpb24gbG9hZCByZXN1bHQuJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZlcnNpb25fLnRyaW0oKTtcbiAgICB9KTtcbn1cblxuLy8gUmV0dXJucyBhIGxpc3Qgb2YgYnJpZGdlIGluc3RhbGxlcnMsIHdpdGggZG93bmxvYWQgVVJMcyBhbmQgYSBtYXJrIG9uXG4vLyBicmlkZ2UgcHJlZmVycmVkIGZvciB0aGUgdXNlcidzIHBsYXRmb3JtLlxuZnVuY3Rpb24gaW5zdGFsbGVycyhvcHRpb25zKSB7XG4gICAgdmFyIG8gPSBvcHRpb25zIHx8IHt9O1xuICAgIHZhciB2ZXJzaW9uID0gUHJvbWlzZS5yZXNvbHZlKG8udmVyc2lvbiB8fCBsYXRlc3RWZXJzaW9uKG9wdGlvbnMpKTtcbiAgICByZXR1cm4gdmVyc2lvbi50aGVuKGZ1bmN0aW9uICh2ZXJzaW9uKSB7XG4gICAgICAgIHZhciBwbGF0Zm9ybSA9IG8ucGxhdGZvcm0gfHwgcHJlZmVycmVkUGxhdGZvcm0oKTtcbiAgICAgICAgdmFyIGRvbWFpbiA9IG8uZG9tYWluIHx8IERBVEFfRE9NQUlOO1xuXG4gICAgICAgIHJldHVybiBCUklER0VfSU5TVEFMTEVSUy5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgIHJldHVybiBmaWxsSW5zdGFsbGVyVXJsKGksIGRvbWFpbik7XG4gICAgICAgIH0pLm1hcChmdW5jdGlvbiAoYnJpZGdlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb24sXG4gICAgICAgICAgICAgICAgdXJsOiBicmlkZ2UudXJsLnJlcGxhY2UoLyV2ZXJzaW9uJS9nLCB2ZXJzaW9uKSxcbiAgICAgICAgICAgICAgICBsYWJlbDogYnJpZGdlLmxhYmVsLFxuICAgICAgICAgICAgICAgIHBsYXRmb3JtOiBicmlkZ2UucGxhdGZvcm0sXG4gICAgICAgICAgICAgICAgcHJlZmVycmVkOiBpc1ByZWZlcnJlZChicmlkZ2UucGxhdGZvcm0sIHBsYXRmb3JtKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG59XG5cbmZ1bmN0aW9uIGlzUHJlZmVycmVkKGluc3RhbGxlciwgcGxhdGZvcm0pIHtcbiAgICBpZiAodHlwZW9mIGluc3RhbGxlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8gc2luZ2xlIHBsYXRmb3JtXG4gICAgICAgIHJldHVybiBpbnN0YWxsZXIgPT09IHBsYXRmb3JtO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGFueSBvZiBtdWx0aXBsZSBwbGF0Zm9ybXNcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBpbnN0YWxsZXIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChpbnN0YWxsZXJbaV0gPT09IHBsYXRmb3JtKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gcHJlZmVycmVkUGxhdGZvcm0oKSB7XG4gICAgdmFyIHZlciA9IG5hdmlnYXRvci51c2VyQWdlbnQ7XG5cbiAgICBpZiAodmVyLm1hdGNoKC9XaW42NHxXT1c2NC8pKSByZXR1cm4gJ3dpbjY0JztcbiAgICBpZiAodmVyLm1hdGNoKC9XaW4vKSkgcmV0dXJuICd3aW4zMic7XG4gICAgaWYgKHZlci5tYXRjaCgvTWFjLykpIHJldHVybiAnbWFjJztcbiAgICBpZiAodmVyLm1hdGNoKC9MaW51eCBpWzM0NTZdODYvKSkge1xuICAgICAgICByZXR1cm4gdmVyLm1hdGNoKC9DZW50T1N8RmVkb3JhfE1hbmRyaXZhfE1hZ2VpYXxSZWQgSGF0fFNjaWVudGlmaWN8U1VTRS8pID8gJ3JwbTMyJyA6ICdkZWIzMic7XG4gICAgfVxuICAgIGlmICh2ZXIubWF0Y2goL0xpbnV4LykpIHtcbiAgICAgICAgcmV0dXJuIHZlci5tYXRjaCgvQ2VudE9TfEZlZG9yYXxNYW5kcml2YXxNYWdlaWF8UmVkIEhhdHxTY2llbnRpZmljfFNVU0UvKSA/ICdycG02NCcgOiAnZGViNjQnO1xuICAgIH1cblxuICAgIC8vIGZhbGxiYWNrIC0gd2VpcmQgT1NcbiAgICAvLyBtb3N0IGxpa2VseSB3aW5kb3dzLCBsZXQncyBzYXkgMzIgYml0XG4gICAgcmV0dXJuICd3aW4zMic7XG59IiwiKGZ1bmN0aW9uIChyb290KSB7XG4gICBcInVzZSBzdHJpY3RcIjtcblxuLyoqKioqIHVub3JtLmpzICoqKioqL1xuXG4vKlxuICogVW5pY29kZU5vcm1hbGl6ZXIgMS4wLjBcbiAqIENvcHlyaWdodCAoYykgMjAwOCBNYXRzdXphXG4gKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgKE1JVC1MSUNFTlNFLnR4dCkgYW5kIEdQTCAoR1BMLUxJQ0VOU0UudHh0KSBsaWNlbnNlcy5cbiAqICREYXRlOiAyMDA4LTA2LTA1IDE2OjQ0OjE3ICswMjAwIChUaHUsIDA1IEp1biAyMDA4KSAkXG4gKiAkUmV2OiAxMzMwOSAkXG4gKi9cblxuICAgdmFyIERFRkFVTFRfRkVBVFVSRSA9IFtudWxsLCAwLCB7fV07XG4gICB2YXIgQ0FDSEVfVEhSRVNIT0xEID0gMTA7XG4gICB2YXIgU0Jhc2UgPSAweEFDMDAsIExCYXNlID0gMHgxMTAwLCBWQmFzZSA9IDB4MTE2MSwgVEJhc2UgPSAweDExQTcsIExDb3VudCA9IDE5LCBWQ291bnQgPSAyMSwgVENvdW50ID0gMjg7XG4gICB2YXIgTkNvdW50ID0gVkNvdW50ICogVENvdW50OyAvLyA1ODhcbiAgIHZhciBTQ291bnQgPSBMQ291bnQgKiBOQ291bnQ7IC8vIDExMTcyXG5cbiAgIHZhciBVQ2hhciA9IGZ1bmN0aW9uKGNwLCBmZWF0dXJlKXtcbiAgICAgIHRoaXMuY29kZXBvaW50ID0gY3A7XG4gICAgICB0aGlzLmZlYXR1cmUgPSBmZWF0dXJlO1xuICAgfTtcblxuICAgLy8gU3RyYXRlZ2llc1xuICAgdmFyIGNhY2hlID0ge307XG4gICB2YXIgY2FjaGVDb3VudGVyID0gW107XG4gICBmb3IgKHZhciBpID0gMDsgaSA8PSAweEZGOyArK2kpe1xuICAgICAgY2FjaGVDb3VudGVyW2ldID0gMDtcbiAgIH1cblxuICAgZnVuY3Rpb24gZnJvbUNhY2hlKG5leHQsIGNwLCBuZWVkRmVhdHVyZSl7XG4gICAgICB2YXIgcmV0ID0gY2FjaGVbY3BdO1xuICAgICAgaWYoIXJldCl7XG4gICAgICAgICByZXQgPSBuZXh0KGNwLCBuZWVkRmVhdHVyZSk7XG4gICAgICAgICBpZighIXJldC5mZWF0dXJlICYmICsrY2FjaGVDb3VudGVyWyhjcCA+PiA4KSAmIDB4RkZdID4gQ0FDSEVfVEhSRVNIT0xEKXtcbiAgICAgICAgICAgIGNhY2hlW2NwXSA9IHJldDtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXQ7XG4gICB9XG5cbiAgIGZ1bmN0aW9uIGZyb21EYXRhKG5leHQsIGNwLCBuZWVkRmVhdHVyZSl7XG4gICAgICB2YXIgaGFzaCA9IGNwICYgMHhGRjAwO1xuICAgICAgdmFyIGR1bml0ID0gVUNoYXIudWRhdGFbaGFzaF0gfHwge307XG4gICAgICB2YXIgZiA9IGR1bml0W2NwXTtcbiAgICAgIHJldHVybiBmID8gbmV3IFVDaGFyKGNwLCBmKSA6IG5ldyBVQ2hhcihjcCwgREVGQVVMVF9GRUFUVVJFKTtcbiAgIH1cbiAgIGZ1bmN0aW9uIGZyb21DcE9ubHkobmV4dCwgY3AsIG5lZWRGZWF0dXJlKXtcbiAgICAgIHJldHVybiAhIW5lZWRGZWF0dXJlID8gbmV4dChjcCwgbmVlZEZlYXR1cmUpIDogbmV3IFVDaGFyKGNwLCBudWxsKTtcbiAgIH1cbiAgIGZ1bmN0aW9uIGZyb21SdWxlQmFzZWRKYW1vKG5leHQsIGNwLCBuZWVkRmVhdHVyZSl7XG4gICAgICB2YXIgajtcbiAgICAgIGlmKGNwIDwgTEJhc2UgfHwgKExCYXNlICsgTENvdW50IDw9IGNwICYmIGNwIDwgU0Jhc2UpIHx8IChTQmFzZSArIFNDb3VudCA8IGNwKSl7XG4gICAgICAgICByZXR1cm4gbmV4dChjcCwgbmVlZEZlYXR1cmUpO1xuICAgICAgfVxuICAgICAgaWYoTEJhc2UgPD0gY3AgJiYgY3AgPCBMQmFzZSArIExDb3VudCl7XG4gICAgICAgICB2YXIgYyA9IHt9O1xuICAgICAgICAgdmFyIGJhc2UgPSAoY3AgLSBMQmFzZSkgKiBWQ291bnQ7XG4gICAgICAgICBmb3IgKGogPSAwOyBqIDwgVkNvdW50OyArK2ope1xuICAgICAgICAgICAgY1tWQmFzZSArIGpdID0gU0Jhc2UgKyBUQ291bnQgKiAoaiArIGJhc2UpO1xuICAgICAgICAgfVxuICAgICAgICAgcmV0dXJuIG5ldyBVQ2hhcihjcCwgWywsY10pO1xuICAgICAgfVxuXG4gICAgICB2YXIgU0luZGV4ID0gY3AgLSBTQmFzZTtcbiAgICAgIHZhciBUSW5kZXggPSBTSW5kZXggJSBUQ291bnQ7XG4gICAgICB2YXIgZmVhdHVyZSA9IFtdO1xuICAgICAgaWYoVEluZGV4ICE9PSAwKXtcbiAgICAgICAgIGZlYXR1cmVbMF0gPSBbU0Jhc2UgKyBTSW5kZXggLSBUSW5kZXgsIFRCYXNlICsgVEluZGV4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICBmZWF0dXJlWzBdID0gW0xCYXNlICsgTWF0aC5mbG9vcihTSW5kZXggLyBOQ291bnQpLCBWQmFzZSArIE1hdGguZmxvb3IoKFNJbmRleCAlIE5Db3VudCkgLyBUQ291bnQpXTtcbiAgICAgICAgIGZlYXR1cmVbMl0gPSB7fTtcbiAgICAgICAgIGZvciAoaiA9IDE7IGogPCBUQ291bnQ7ICsrail7XG4gICAgICAgICAgICBmZWF0dXJlWzJdW1RCYXNlICsgal0gPSBjcCArIGo7XG4gICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV3IFVDaGFyKGNwLCBmZWF0dXJlKTtcbiAgIH1cbiAgIGZ1bmN0aW9uIGZyb21DcEZpbHRlcihuZXh0LCBjcCwgbmVlZEZlYXR1cmUpe1xuICAgICAgcmV0dXJuIGNwIDwgNjAgfHwgMTMzMTEgPCBjcCAmJiBjcCA8IDQyNjA3ID8gbmV3IFVDaGFyKGNwLCBERUZBVUxUX0ZFQVRVUkUpIDogbmV4dChjcCwgbmVlZEZlYXR1cmUpO1xuICAgfVxuXG4gICB2YXIgc3RyYXRlZ2llcyA9IFtmcm9tQ3BGaWx0ZXIsIGZyb21DYWNoZSwgZnJvbUNwT25seSwgZnJvbVJ1bGVCYXNlZEphbW8sIGZyb21EYXRhXTtcblxuICAgVUNoYXIuZnJvbUNoYXJDb2RlID0gc3RyYXRlZ2llcy5yZWR1Y2VSaWdodChmdW5jdGlvbiAobmV4dCwgc3RyYXRlZ3kpIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoY3AsIG5lZWRGZWF0dXJlKSB7XG4gICAgICAgICByZXR1cm4gc3RyYXRlZ3kobmV4dCwgY3AsIG5lZWRGZWF0dXJlKTtcbiAgICAgIH07XG4gICB9LCBudWxsKTtcblxuICAgVUNoYXIuaXNIaWdoU3Vycm9nYXRlID0gZnVuY3Rpb24oY3Ape1xuICAgICAgcmV0dXJuIGNwID49IDB4RDgwMCAmJiBjcCA8PSAweERCRkY7XG4gICB9O1xuICAgVUNoYXIuaXNMb3dTdXJyb2dhdGUgPSBmdW5jdGlvbihjcCl7XG4gICAgICByZXR1cm4gY3AgPj0gMHhEQzAwICYmIGNwIDw9IDB4REZGRjtcbiAgIH07XG5cbiAgIFVDaGFyLnByb3RvdHlwZS5wcmVwRmVhdHVyZSA9IGZ1bmN0aW9uKCl7XG4gICAgICBpZighdGhpcy5mZWF0dXJlKXtcbiAgICAgICAgIHRoaXMuZmVhdHVyZSA9IFVDaGFyLmZyb21DaGFyQ29kZSh0aGlzLmNvZGVwb2ludCwgdHJ1ZSkuZmVhdHVyZTtcbiAgICAgIH1cbiAgIH07XG5cbiAgIFVDaGFyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCl7XG4gICAgICBpZih0aGlzLmNvZGVwb2ludCA8IDB4MTAwMDApe1xuICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUodGhpcy5jb2RlcG9pbnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgIHZhciB4ID0gdGhpcy5jb2RlcG9pbnQgLSAweDEwMDAwO1xuICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoTWF0aC5mbG9vcih4IC8gMHg0MDApICsgMHhEODAwLCB4ICUgMHg0MDAgKyAweERDMDApO1xuICAgICAgfVxuICAgfTtcblxuICAgVUNoYXIucHJvdG90eXBlLmdldERlY29tcCA9IGZ1bmN0aW9uKCl7XG4gICAgICB0aGlzLnByZXBGZWF0dXJlKCk7XG4gICAgICByZXR1cm4gdGhpcy5mZWF0dXJlWzBdIHx8IG51bGw7XG4gICB9O1xuXG4gICBVQ2hhci5wcm90b3R5cGUuaXNDb21wYXRpYmlsaXR5ID0gZnVuY3Rpb24oKXtcbiAgICAgIHRoaXMucHJlcEZlYXR1cmUoKTtcbiAgICAgIHJldHVybiAhIXRoaXMuZmVhdHVyZVsxXSAmJiAodGhpcy5mZWF0dXJlWzFdICYgKDEgPDwgOCkpO1xuICAgfTtcbiAgIFVDaGFyLnByb3RvdHlwZS5pc0V4Y2x1ZGUgPSBmdW5jdGlvbigpe1xuICAgICAgdGhpcy5wcmVwRmVhdHVyZSgpO1xuICAgICAgcmV0dXJuICEhdGhpcy5mZWF0dXJlWzFdICYmICh0aGlzLmZlYXR1cmVbMV0gJiAoMSA8PCA5KSk7XG4gICB9O1xuICAgVUNoYXIucHJvdG90eXBlLmdldENhbm9uaWNhbENsYXNzID0gZnVuY3Rpb24oKXtcbiAgICAgIHRoaXMucHJlcEZlYXR1cmUoKTtcbiAgICAgIHJldHVybiAhIXRoaXMuZmVhdHVyZVsxXSA/ICh0aGlzLmZlYXR1cmVbMV0gJiAweGZmKSA6IDA7XG4gICB9O1xuICAgVUNoYXIucHJvdG90eXBlLmdldENvbXBvc2l0ZSA9IGZ1bmN0aW9uKGZvbGxvd2luZyl7XG4gICAgICB0aGlzLnByZXBGZWF0dXJlKCk7XG4gICAgICBpZighdGhpcy5mZWF0dXJlWzJdKXtcbiAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdmFyIGNwID0gdGhpcy5mZWF0dXJlWzJdW2ZvbGxvd2luZy5jb2RlcG9pbnRdO1xuICAgICAgcmV0dXJuIGNwID8gVUNoYXIuZnJvbUNoYXJDb2RlKGNwKSA6IG51bGw7XG4gICB9O1xuXG4gICB2YXIgVUNoYXJJdGVyYXRvciA9IGZ1bmN0aW9uKHN0cil7XG4gICAgICB0aGlzLnN0ciA9IHN0cjtcbiAgICAgIHRoaXMuY3Vyc29yID0gMDtcbiAgIH07XG4gICBVQ2hhckl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKXtcbiAgICAgIGlmKCEhdGhpcy5zdHIgJiYgdGhpcy5jdXJzb3IgPCB0aGlzLnN0ci5sZW5ndGgpe1xuICAgICAgICAgdmFyIGNwID0gdGhpcy5zdHIuY2hhckNvZGVBdCh0aGlzLmN1cnNvcisrKTtcbiAgICAgICAgIHZhciBkO1xuICAgICAgICAgaWYoVUNoYXIuaXNIaWdoU3Vycm9nYXRlKGNwKSAmJiB0aGlzLmN1cnNvciA8IHRoaXMuc3RyLmxlbmd0aCAmJiBVQ2hhci5pc0xvd1N1cnJvZ2F0ZSgoZCA9IHRoaXMuc3RyLmNoYXJDb2RlQXQodGhpcy5jdXJzb3IpKSkpe1xuICAgICAgICAgICAgY3AgPSAoY3AgLSAweEQ4MDApICogMHg0MDAgKyAoZCAtMHhEQzAwKSArIDB4MTAwMDA7XG4gICAgICAgICAgICArK3RoaXMuY3Vyc29yO1xuICAgICAgICAgfVxuICAgICAgICAgcmV0dXJuIFVDaGFyLmZyb21DaGFyQ29kZShjcCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAgdGhpcy5zdHIgPSBudWxsO1xuICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICB9O1xuXG4gICB2YXIgUmVjdXJzRGVjb21wSXRlcmF0b3IgPSBmdW5jdGlvbihpdCwgY2Fubyl7XG4gICAgICB0aGlzLml0ID0gaXQ7XG4gICAgICB0aGlzLmNhbm9uaWNhbCA9IGNhbm87XG4gICAgICB0aGlzLnJlc0J1ZiA9IFtdO1xuICAgfTtcblxuICAgUmVjdXJzRGVjb21wSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpe1xuICAgICAgZnVuY3Rpb24gcmVjdXJzaXZlRGVjb21wKGNhbm8sIHVjaGFyKXtcbiAgICAgICAgIHZhciBkZWNvbXAgPSB1Y2hhci5nZXREZWNvbXAoKTtcbiAgICAgICAgIGlmKCEhZGVjb21wICYmICEoY2FubyAmJiB1Y2hhci5pc0NvbXBhdGliaWxpdHkoKSkpe1xuICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGRlY29tcC5sZW5ndGg7ICsraSl7XG4gICAgICAgICAgICAgICB2YXIgYSA9IHJlY3Vyc2l2ZURlY29tcChjYW5vLCBVQ2hhci5mcm9tQ2hhckNvZGUoZGVjb21wW2ldKSk7XG4gICAgICAgICAgICAgICAgcmV0ID0gcmV0LmNvbmNhdChhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt1Y2hhcl07XG4gICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZih0aGlzLnJlc0J1Zi5sZW5ndGggPT09IDApe1xuICAgICAgICAgdmFyIHVjaGFyID0gdGhpcy5pdC5uZXh0KCk7XG4gICAgICAgICBpZighdWNoYXIpe1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICB9XG4gICAgICAgICB0aGlzLnJlc0J1ZiA9IHJlY3Vyc2l2ZURlY29tcCh0aGlzLmNhbm9uaWNhbCwgdWNoYXIpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVzQnVmLnNoaWZ0KCk7XG4gICB9O1xuXG4gICB2YXIgRGVjb21wSXRlcmF0b3IgPSBmdW5jdGlvbihpdCl7XG4gICAgICB0aGlzLml0ID0gaXQ7XG4gICAgICB0aGlzLnJlc0J1ZiA9IFtdO1xuICAgfTtcblxuICAgRGVjb21wSXRlcmF0b3IucHJvdG90eXBlLm5leHQgPSBmdW5jdGlvbigpe1xuICAgICAgdmFyIGNjO1xuICAgICAgaWYodGhpcy5yZXNCdWYubGVuZ3RoID09PSAwKXtcbiAgICAgICAgIGRve1xuICAgICAgICAgICAgdmFyIHVjaGFyID0gdGhpcy5pdC5uZXh0KCk7XG4gICAgICAgICAgICBpZighdWNoYXIpe1xuICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYyA9IHVjaGFyLmdldENhbm9uaWNhbENsYXNzKCk7XG4gICAgICAgICAgICB2YXIgaW5zcHQgPSB0aGlzLnJlc0J1Zi5sZW5ndGg7XG4gICAgICAgICAgICBpZihjYyAhPT0gMCl7XG4gICAgICAgICAgICAgICBmb3IoOyBpbnNwdCA+IDA7IC0taW5zcHQpe1xuICAgICAgICAgICAgICAgICAgdmFyIHVjaGFyMiA9IHRoaXMucmVzQnVmW2luc3B0IC0gMV07XG4gICAgICAgICAgICAgICAgICB2YXIgY2MyID0gdWNoYXIyLmdldENhbm9uaWNhbENsYXNzKCk7XG4gICAgICAgICAgICAgICAgICBpZihjYzIgPD0gY2Mpe1xuICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnJlc0J1Zi5zcGxpY2UoaW5zcHQsIDAsIHVjaGFyKTtcbiAgICAgICAgIH0gd2hpbGUoY2MgIT09IDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMucmVzQnVmLnNoaWZ0KCk7XG4gICB9O1xuXG4gICB2YXIgQ29tcEl0ZXJhdG9yID0gZnVuY3Rpb24oaXQpe1xuICAgICAgdGhpcy5pdCA9IGl0O1xuICAgICAgdGhpcy5wcm9jQnVmID0gW107XG4gICAgICB0aGlzLnJlc0J1ZiA9IFtdO1xuICAgICAgdGhpcy5sYXN0Q2xhc3MgPSBudWxsO1xuICAgfTtcblxuICAgQ29tcEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKXtcbiAgICAgIHdoaWxlKHRoaXMucmVzQnVmLmxlbmd0aCA9PT0gMCl7XG4gICAgICAgICB2YXIgdWNoYXIgPSB0aGlzLml0Lm5leHQoKTtcbiAgICAgICAgIGlmKCF1Y2hhcil7XG4gICAgICAgICAgICB0aGlzLnJlc0J1ZiA9IHRoaXMucHJvY0J1ZjtcbiAgICAgICAgICAgIHRoaXMucHJvY0J1ZiA9IFtdO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICB9XG4gICAgICAgICBpZih0aGlzLnByb2NCdWYubGVuZ3RoID09PSAwKXtcbiAgICAgICAgICAgIHRoaXMubGFzdENsYXNzID0gdWNoYXIuZ2V0Q2Fub25pY2FsQ2xhc3MoKTtcbiAgICAgICAgICAgIHRoaXMucHJvY0J1Zi5wdXNoKHVjaGFyKTtcbiAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YXIgc3RhcnRlciA9IHRoaXMucHJvY0J1ZlswXTtcbiAgICAgICAgICAgIHZhciBjb21wb3NpdGUgPSBzdGFydGVyLmdldENvbXBvc2l0ZSh1Y2hhcik7XG4gICAgICAgICAgICB2YXIgY2MgPSB1Y2hhci5nZXRDYW5vbmljYWxDbGFzcygpO1xuICAgICAgICAgICAgaWYoISFjb21wb3NpdGUgJiYgKHRoaXMubGFzdENsYXNzIDwgY2MgfHwgdGhpcy5sYXN0Q2xhc3MgPT09IDApKXtcbiAgICAgICAgICAgICAgIHRoaXMucHJvY0J1ZlswXSA9IGNvbXBvc2l0ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICBpZihjYyA9PT0gMCl7XG4gICAgICAgICAgICAgICAgICB0aGlzLnJlc0J1ZiA9IHRoaXMucHJvY0J1ZjtcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvY0J1ZiA9IFtdO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgdGhpcy5sYXN0Q2xhc3MgPSBjYztcbiAgICAgICAgICAgICAgIHRoaXMucHJvY0J1Zi5wdXNoKHVjaGFyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlc0J1Zi5zaGlmdCgpO1xuICAgfTtcblxuICAgdmFyIGNyZWF0ZUl0ZXJhdG9yID0gZnVuY3Rpb24obW9kZSwgc3RyKXtcbiAgICAgIHN3aXRjaChtb2RlKXtcbiAgICAgICAgIGNhc2UgXCJORkRcIjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgRGVjb21wSXRlcmF0b3IobmV3IFJlY3Vyc0RlY29tcEl0ZXJhdG9yKG5ldyBVQ2hhckl0ZXJhdG9yKHN0ciksIHRydWUpKTtcbiAgICAgICAgIGNhc2UgXCJORktEXCI6XG4gICAgICAgICAgICByZXR1cm4gbmV3IERlY29tcEl0ZXJhdG9yKG5ldyBSZWN1cnNEZWNvbXBJdGVyYXRvcihuZXcgVUNoYXJJdGVyYXRvcihzdHIpLCBmYWxzZSkpO1xuICAgICAgICAgY2FzZSBcIk5GQ1wiOlxuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wSXRlcmF0b3IobmV3IERlY29tcEl0ZXJhdG9yKG5ldyBSZWN1cnNEZWNvbXBJdGVyYXRvcihuZXcgVUNoYXJJdGVyYXRvcihzdHIpLCB0cnVlKSkpO1xuICAgICAgICAgY2FzZSBcIk5GS0NcIjpcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29tcEl0ZXJhdG9yKG5ldyBEZWNvbXBJdGVyYXRvcihuZXcgUmVjdXJzRGVjb21wSXRlcmF0b3IobmV3IFVDaGFySXRlcmF0b3Ioc3RyKSwgZmFsc2UpKSk7XG4gICAgICB9XG4gICAgICB0aHJvdyBtb2RlICsgXCIgaXMgaW52YWxpZFwiO1xuICAgfTtcbiAgIHZhciBub3JtYWxpemUgPSBmdW5jdGlvbihtb2RlLCBzdHIpe1xuICAgICAgdmFyIGl0ID0gY3JlYXRlSXRlcmF0b3IobW9kZSwgc3RyKTtcbiAgICAgIHZhciByZXQgPSBcIlwiO1xuICAgICAgdmFyIHVjaGFyO1xuICAgICAgd2hpbGUoISEodWNoYXIgPSBpdC5uZXh0KCkpKXtcbiAgICAgICAgIHJldCArPSB1Y2hhci50b1N0cmluZygpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJldDtcbiAgIH07XG5cbiAgIC8qIEFQSSBmdW5jdGlvbnMgKi9cbiAgIGZ1bmN0aW9uIG5mZChzdHIpe1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZShcIk5GRFwiLCBzdHIpO1xuICAgfVxuXG4gICBmdW5jdGlvbiBuZmtkKHN0cil7XG4gICAgICByZXR1cm4gbm9ybWFsaXplKFwiTkZLRFwiLCBzdHIpO1xuICAgfVxuXG4gICBmdW5jdGlvbiBuZmMoc3RyKXtcbiAgICAgIHJldHVybiBub3JtYWxpemUoXCJORkNcIiwgc3RyKTtcbiAgIH1cblxuICAgZnVuY3Rpb24gbmZrYyhzdHIpe1xuICAgICAgcmV0dXJuIG5vcm1hbGl6ZShcIk5GS0NcIiwgc3RyKTtcbiAgIH1cblxuLyogVW5pY29kZSBkYXRhICovXG5VQ2hhci51ZGF0YT17XG4wOns2MDpbLCx7ODI0Ojg4MTR9XSw2MTpbLCx7ODI0Ojg4MDB9XSw2MjpbLCx7ODI0Ojg4MTV9XSw2NTpbLCx7NzY4OjE5Miw3Njk6MTkzLDc3MDoxOTQsNzcxOjE5NSw3NzI6MjU2LDc3NDoyNTgsNzc1OjU1MCw3NzY6MTk2LDc3Nzo3ODQyLDc3ODoxOTcsNzgwOjQ2MSw3ODM6NTEyLDc4NTo1MTQsODAzOjc4NDAsODA1Ojc2ODAsODA4OjI2MH1dLDY2OlssLHs3NzU6NzY4Miw4MDM6NzY4NCw4MTc6NzY4Nn1dLDY3OlssLHs3Njk6MjYyLDc3MDoyNjQsNzc1OjI2Niw3ODA6MjY4LDgwNzoxOTl9XSw2ODpbLCx7Nzc1Ojc2OTAsNzgwOjI3MCw4MDM6NzY5Miw4MDc6NzY5Niw4MTM6NzY5OCw4MTc6NzY5NH1dLDY5OlssLHs3Njg6MjAwLDc2OToyMDEsNzcwOjIwMiw3NzE6Nzg2OCw3NzI6Mjc0LDc3NDoyNzYsNzc1OjI3OCw3NzY6MjAzLDc3Nzo3ODY2LDc4MDoyODIsNzgzOjUxNiw3ODU6NTE4LDgwMzo3ODY0LDgwNzo1NTIsODA4OjI4MCw4MTM6NzcwNCw4MTY6NzcwNn1dLDcwOlssLHs3NzU6NzcxMH1dLDcxOlssLHs3Njk6NTAwLDc3MDoyODQsNzcyOjc3MTIsNzc0OjI4Niw3NzU6Mjg4LDc4MDo0ODYsODA3OjI5MH1dLDcyOlssLHs3NzA6MjkyLDc3NTo3NzE0LDc3Njo3NzE4LDc4MDo1NDIsODAzOjc3MTYsODA3Ojc3MjAsODE0Ojc3MjJ9XSw3MzpbLCx7NzY4OjIwNCw3Njk6MjA1LDc3MDoyMDYsNzcxOjI5Niw3NzI6Mjk4LDc3NDozMDAsNzc1OjMwNCw3NzY6MjA3LDc3Nzo3ODgwLDc4MDo0NjMsNzgzOjUyMCw3ODU6NTIyLDgwMzo3ODgyLDgwODozMDIsODE2Ojc3MjR9XSw3NDpbLCx7NzcwOjMwOH1dLDc1OlssLHs3Njk6NzcyOCw3ODA6NDg4LDgwMzo3NzMwLDgwNzozMTAsODE3Ojc3MzJ9XSw3NjpbLCx7NzY5OjMxMyw3ODA6MzE3LDgwMzo3NzM0LDgwNzozMTUsODEzOjc3NDAsODE3Ojc3Mzh9XSw3NzpbLCx7NzY5Ojc3NDIsNzc1Ojc3NDQsODAzOjc3NDZ9XSw3ODpbLCx7NzY4OjUwNCw3Njk6MzIzLDc3MToyMDksNzc1Ojc3NDgsNzgwOjMyNyw4MDM6Nzc1MCw4MDc6MzI1LDgxMzo3NzU0LDgxNzo3NzUyfV0sNzk6Wywsezc2ODoyMTAsNzY5OjIxMSw3NzA6MjEyLDc3MToyMTMsNzcyOjMzMiw3NzQ6MzM0LDc3NTo1NTgsNzc2OjIxNCw3Nzc6Nzg4Niw3Nzk6MzM2LDc4MDo0NjUsNzgzOjUyNCw3ODU6NTI2LDc5NTo0MTYsODAzOjc4ODQsODA4OjQ5MH1dLDgwOlssLHs3Njk6Nzc2NCw3NzU6Nzc2Nn1dLDgyOlssLHs3Njk6MzQwLDc3NTo3NzY4LDc4MDozNDQsNzgzOjUyOCw3ODU6NTMwLDgwMzo3NzcwLDgwNzozNDIsODE3Ojc3NzR9XSw4MzpbLCx7NzY5OjM0Niw3NzA6MzQ4LDc3NTo3Nzc2LDc4MDozNTIsODAzOjc3NzgsODA2OjUzNiw4MDc6MzUwfV0sODQ6Wywsezc3NTo3Nzg2LDc4MDozNTYsODAzOjc3ODgsODA2OjUzOCw4MDc6MzU0LDgxMzo3NzkyLDgxNzo3NzkwfV0sODU6Wywsezc2ODoyMTcsNzY5OjIxOCw3NzA6MjE5LDc3MTozNjAsNzcyOjM2Miw3NzQ6MzY0LDc3NjoyMjAsNzc3Ojc5MTAsNzc4OjM2Niw3Nzk6MzY4LDc4MDo0NjcsNzgzOjUzMiw3ODU6NTM0LDc5NTo0MzEsODAzOjc5MDgsODA0Ojc3OTQsODA4OjM3MCw4MTM6Nzc5OCw4MTY6Nzc5Nn1dLDg2OlssLHs3NzE6NzgwNCw4MDM6NzgwNn1dLDg3OlssLHs3Njg6NzgwOCw3Njk6NzgxMCw3NzA6MzcyLDc3NTo3ODE0LDc3Njo3ODEyLDgwMzo3ODE2fV0sODg6Wywsezc3NTo3ODE4LDc3Njo3ODIwfV0sODk6Wywsezc2ODo3OTIyLDc2OToyMjEsNzcwOjM3NCw3NzE6NzkyOCw3NzI6NTYyLDc3NTo3ODIyLDc3NjozNzYsNzc3Ojc5MjYsODAzOjc5MjR9XSw5MDpbLCx7NzY5OjM3Nyw3NzA6NzgyNCw3NzU6Mzc5LDc4MDozODEsODAzOjc4MjYsODE3Ojc4Mjh9XSw5NzpbLCx7NzY4OjIyNCw3Njk6MjI1LDc3MDoyMjYsNzcxOjIyNyw3NzI6MjU3LDc3NDoyNTksNzc1OjU1MSw3NzY6MjI4LDc3Nzo3ODQzLDc3ODoyMjksNzgwOjQ2Miw3ODM6NTEzLDc4NTo1MTUsODAzOjc4NDEsODA1Ojc2ODEsODA4OjI2MX1dLDk4OlssLHs3NzU6NzY4Myw4MDM6NzY4NSw4MTc6NzY4N31dLDk5OlssLHs3Njk6MjYzLDc3MDoyNjUsNzc1OjI2Nyw3ODA6MjY5LDgwNzoyMzF9XSwxMDA6Wywsezc3NTo3NjkxLDc4MDoyNzEsODAzOjc2OTMsODA3Ojc2OTcsODEzOjc2OTksODE3Ojc2OTV9XSwxMDE6Wywsezc2ODoyMzIsNzY5OjIzMyw3NzA6MjM0LDc3MTo3ODY5LDc3MjoyNzUsNzc0OjI3Nyw3NzU6Mjc5LDc3NjoyMzUsNzc3Ojc4NjcsNzgwOjI4Myw3ODM6NTE3LDc4NTo1MTksODAzOjc4NjUsODA3OjU1Myw4MDg6MjgxLDgxMzo3NzA1LDgxNjo3NzA3fV0sMTAyOlssLHs3NzU6NzcxMX1dLDEwMzpbLCx7NzY5OjUwMSw3NzA6Mjg1LDc3Mjo3NzEzLDc3NDoyODcsNzc1OjI4OSw3ODA6NDg3LDgwNzoyOTF9XSwxMDQ6Wywsezc3MDoyOTMsNzc1Ojc3MTUsNzc2Ojc3MTksNzgwOjU0Myw4MDM6NzcxNyw4MDc6NzcyMSw4MTQ6NzcyMyw4MTc6NzgzMH1dLDEwNTpbLCx7NzY4OjIzNiw3Njk6MjM3LDc3MDoyMzgsNzcxOjI5Nyw3NzI6Mjk5LDc3NDozMDEsNzc2OjIzOSw3Nzc6Nzg4MSw3ODA6NDY0LDc4Mzo1MjEsNzg1OjUyMyw4MDM6Nzg4Myw4MDg6MzAzLDgxNjo3NzI1fV0sMTA2OlssLHs3NzA6MzA5LDc4MDo0OTZ9XSwxMDc6Wywsezc2OTo3NzI5LDc4MDo0ODksODAzOjc3MzEsODA3OjMxMSw4MTc6NzczM31dLDEwODpbLCx7NzY5OjMxNCw3ODA6MzE4LDgwMzo3NzM1LDgwNzozMTYsODEzOjc3NDEsODE3Ojc3Mzl9XSwxMDk6Wywsezc2OTo3NzQzLDc3NTo3NzQ1LDgwMzo3NzQ3fV0sMTEwOlssLHs3Njg6NTA1LDc2OTozMjQsNzcxOjI0MSw3NzU6Nzc0OSw3ODA6MzI4LDgwMzo3NzUxLDgwNzozMjYsODEzOjc3NTUsODE3Ojc3NTN9XSwxMTE6Wywsezc2ODoyNDIsNzY5OjI0Myw3NzA6MjQ0LDc3MToyNDUsNzcyOjMzMyw3NzQ6MzM1LDc3NTo1NTksNzc2OjI0Niw3Nzc6Nzg4Nyw3Nzk6MzM3LDc4MDo0NjYsNzgzOjUyNSw3ODU6NTI3LDc5NTo0MTcsODAzOjc4ODUsODA4OjQ5MX1dLDExMjpbLCx7NzY5Ojc3NjUsNzc1Ojc3Njd9XSwxMTQ6Wywsezc2OTozNDEsNzc1Ojc3NjksNzgwOjM0NSw3ODM6NTI5LDc4NTo1MzEsODAzOjc3NzEsODA3OjM0Myw4MTc6Nzc3NX1dLDExNTpbLCx7NzY5OjM0Nyw3NzA6MzQ5LDc3NTo3Nzc3LDc4MDozNTMsODAzOjc3NzksODA2OjUzNyw4MDc6MzUxfV0sMTE2OlssLHs3NzU6Nzc4Nyw3NzY6NzgzMSw3ODA6MzU3LDgwMzo3Nzg5LDgwNjo1MzksODA3OjM1NSw4MTM6Nzc5Myw4MTc6Nzc5MX1dLDExNzpbLCx7NzY4OjI0OSw3Njk6MjUwLDc3MDoyNTEsNzcxOjM2MSw3NzI6MzYzLDc3NDozNjUsNzc2OjI1Miw3Nzc6NzkxMSw3Nzg6MzY3LDc3OTozNjksNzgwOjQ2OCw3ODM6NTMzLDc4NTo1MzUsNzk1OjQzMiw4MDM6NzkwOSw4MDQ6Nzc5NSw4MDg6MzcxLDgxMzo3Nzk5LDgxNjo3Nzk3fV0sMTE4OlssLHs3NzE6NzgwNSw4MDM6NzgwN31dLDExOTpbLCx7NzY4Ojc4MDksNzY5Ojc4MTEsNzcwOjM3Myw3NzU6NzgxNSw3NzY6NzgxMyw3Nzg6NzgzMiw4MDM6NzgxN31dLDEyMDpbLCx7Nzc1Ojc4MTksNzc2Ojc4MjF9XSwxMjE6Wywsezc2ODo3OTIzLDc2OToyNTMsNzcwOjM3NSw3NzE6NzkyOSw3NzI6NTYzLDc3NTo3ODIzLDc3NjoyNTUsNzc3Ojc5MjcsNzc4Ojc4MzMsODAzOjc5MjV9XSwxMjI6Wywsezc2OTozNzgsNzcwOjc4MjUsNzc1OjM4MCw3ODA6MzgyLDgwMzo3ODI3LDgxNzo3ODI5fV0sMTYwOltbMzJdLDI1Nl0sMTY4OltbMzIsNzc2XSwyNTYsezc2ODo4MTczLDc2OTo5MDEsODM0OjgxMjl9XSwxNzA6W1s5N10sMjU2XSwxNzU6W1szMiw3NzJdLDI1Nl0sMTc4OltbNTBdLDI1Nl0sMTc5OltbNTFdLDI1Nl0sMTgwOltbMzIsNzY5XSwyNTZdLDE4MTpbWzk1Nl0sMjU2XSwxODQ6W1szMiw4MDddLDI1Nl0sMTg1OltbNDldLDI1Nl0sMTg2OltbMTExXSwyNTZdLDE4ODpbWzQ5LDgyNjAsNTJdLDI1Nl0sMTg5OltbNDksODI2MCw1MF0sMjU2XSwxOTA6W1s1MSw4MjYwLDUyXSwyNTZdLDE5MjpbWzY1LDc2OF1dLDE5MzpbWzY1LDc2OV1dLDE5NDpbWzY1LDc3MF0sLHs3Njg6Nzg0Niw3Njk6Nzg0NCw3NzE6Nzg1MCw3Nzc6Nzg0OH1dLDE5NTpbWzY1LDc3MV1dLDE5NjpbWzY1LDc3Nl0sLHs3NzI6NDc4fV0sMTk3OltbNjUsNzc4XSwsezc2OTo1MDZ9XSwxOTg6Wywsezc2OTo1MDgsNzcyOjQ4Mn1dLDE5OTpbWzY3LDgwN10sLHs3Njk6NzY4OH1dLDIwMDpbWzY5LDc2OF1dLDIwMTpbWzY5LDc2OV1dLDIwMjpbWzY5LDc3MF0sLHs3Njg6Nzg3Miw3Njk6Nzg3MCw3NzE6Nzg3Niw3Nzc6Nzg3NH1dLDIwMzpbWzY5LDc3Nl1dLDIwNDpbWzczLDc2OF1dLDIwNTpbWzczLDc2OV1dLDIwNjpbWzczLDc3MF1dLDIwNzpbWzczLDc3Nl0sLHs3Njk6NzcyNn1dLDIwOTpbWzc4LDc3MV1dLDIxMDpbWzc5LDc2OF1dLDIxMTpbWzc5LDc2OV1dLDIxMjpbWzc5LDc3MF0sLHs3Njg6Nzg5MCw3Njk6Nzg4OCw3NzE6Nzg5NCw3Nzc6Nzg5Mn1dLDIxMzpbWzc5LDc3MV0sLHs3Njk6Nzc1Niw3NzI6NTU2LDc3Njo3NzU4fV0sMjE0OltbNzksNzc2XSwsezc3Mjo1NTR9XSwyMTY6Wywsezc2OTo1MTB9XSwyMTc6W1s4NSw3NjhdXSwyMTg6W1s4NSw3NjldXSwyMTk6W1s4NSw3NzBdXSwyMjA6W1s4NSw3NzZdLCx7NzY4OjQ3NSw3Njk6NDcxLDc3Mjo0NjksNzgwOjQ3M31dLDIyMTpbWzg5LDc2OV1dLDIyNDpbWzk3LDc2OF1dLDIyNTpbWzk3LDc2OV1dLDIyNjpbWzk3LDc3MF0sLHs3Njg6Nzg0Nyw3Njk6Nzg0NSw3NzE6Nzg1MSw3Nzc6Nzg0OX1dLDIyNzpbWzk3LDc3MV1dLDIyODpbWzk3LDc3Nl0sLHs3NzI6NDc5fV0sMjI5OltbOTcsNzc4XSwsezc2OTo1MDd9XSwyMzA6Wywsezc2OTo1MDksNzcyOjQ4M31dLDIzMTpbWzk5LDgwN10sLHs3Njk6NzY4OX1dLDIzMjpbWzEwMSw3NjhdXSwyMzM6W1sxMDEsNzY5XV0sMjM0OltbMTAxLDc3MF0sLHs3Njg6Nzg3Myw3Njk6Nzg3MSw3NzE6Nzg3Nyw3Nzc6Nzg3NX1dLDIzNTpbWzEwMSw3NzZdXSwyMzY6W1sxMDUsNzY4XV0sMjM3OltbMTA1LDc2OV1dLDIzODpbWzEwNSw3NzBdXSwyMzk6W1sxMDUsNzc2XSwsezc2OTo3NzI3fV0sMjQxOltbMTEwLDc3MV1dLDI0MjpbWzExMSw3NjhdXSwyNDM6W1sxMTEsNzY5XV0sMjQ0OltbMTExLDc3MF0sLHs3Njg6Nzg5MSw3Njk6Nzg4OSw3NzE6Nzg5NSw3Nzc6Nzg5M31dLDI0NTpbWzExMSw3NzFdLCx7NzY5Ojc3NTcsNzcyOjU1Nyw3NzY6Nzc1OX1dLDI0NjpbWzExMSw3NzZdLCx7NzcyOjU1NX1dLDI0ODpbLCx7NzY5OjUxMX1dLDI0OTpbWzExNyw3NjhdXSwyNTA6W1sxMTcsNzY5XV0sMjUxOltbMTE3LDc3MF1dLDI1MjpbWzExNyw3NzZdLCx7NzY4OjQ3Niw3Njk6NDcyLDc3Mjo0NzAsNzgwOjQ3NH1dLDI1MzpbWzEyMSw3NjldXSwyNTU6W1sxMjEsNzc2XV19LFxuMjU2OnsyNTY6W1s2NSw3NzJdXSwyNTc6W1s5Nyw3NzJdXSwyNTg6W1s2NSw3NzRdLCx7NzY4Ojc4NTYsNzY5Ojc4NTQsNzcxOjc4NjAsNzc3Ojc4NTh9XSwyNTk6W1s5Nyw3NzRdLCx7NzY4Ojc4NTcsNzY5Ojc4NTUsNzcxOjc4NjEsNzc3Ojc4NTl9XSwyNjA6W1s2NSw4MDhdXSwyNjE6W1s5Nyw4MDhdXSwyNjI6W1s2Nyw3NjldXSwyNjM6W1s5OSw3NjldXSwyNjQ6W1s2Nyw3NzBdXSwyNjU6W1s5OSw3NzBdXSwyNjY6W1s2Nyw3NzVdXSwyNjc6W1s5OSw3NzVdXSwyNjg6W1s2Nyw3ODBdXSwyNjk6W1s5OSw3ODBdXSwyNzA6W1s2OCw3ODBdXSwyNzE6W1sxMDAsNzgwXV0sMjc0OltbNjksNzcyXSwsezc2ODo3NzAwLDc2OTo3NzAyfV0sMjc1OltbMTAxLDc3Ml0sLHs3Njg6NzcwMSw3Njk6NzcwM31dLDI3NjpbWzY5LDc3NF1dLDI3NzpbWzEwMSw3NzRdXSwyNzg6W1s2OSw3NzVdXSwyNzk6W1sxMDEsNzc1XV0sMjgwOltbNjksODA4XV0sMjgxOltbMTAxLDgwOF1dLDI4MjpbWzY5LDc4MF1dLDI4MzpbWzEwMSw3ODBdXSwyODQ6W1s3MSw3NzBdXSwyODU6W1sxMDMsNzcwXV0sMjg2OltbNzEsNzc0XV0sMjg3OltbMTAzLDc3NF1dLDI4ODpbWzcxLDc3NV1dLDI4OTpbWzEwMyw3NzVdXSwyOTA6W1s3MSw4MDddXSwyOTE6W1sxMDMsODA3XV0sMjkyOltbNzIsNzcwXV0sMjkzOltbMTA0LDc3MF1dLDI5NjpbWzczLDc3MV1dLDI5NzpbWzEwNSw3NzFdXSwyOTg6W1s3Myw3NzJdXSwyOTk6W1sxMDUsNzcyXV0sMzAwOltbNzMsNzc0XV0sMzAxOltbMTA1LDc3NF1dLDMwMjpbWzczLDgwOF1dLDMwMzpbWzEwNSw4MDhdXSwzMDQ6W1s3Myw3NzVdXSwzMDY6W1s3Myw3NF0sMjU2XSwzMDc6W1sxMDUsMTA2XSwyNTZdLDMwODpbWzc0LDc3MF1dLDMwOTpbWzEwNiw3NzBdXSwzMTA6W1s3NSw4MDddXSwzMTE6W1sxMDcsODA3XV0sMzEzOltbNzYsNzY5XV0sMzE0OltbMTA4LDc2OV1dLDMxNTpbWzc2LDgwN11dLDMxNjpbWzEwOCw4MDddXSwzMTc6W1s3Niw3ODBdXSwzMTg6W1sxMDgsNzgwXV0sMzE5OltbNzYsMTgzXSwyNTZdLDMyMDpbWzEwOCwxODNdLDI1Nl0sMzIzOltbNzgsNzY5XV0sMzI0OltbMTEwLDc2OV1dLDMyNTpbWzc4LDgwN11dLDMyNjpbWzExMCw4MDddXSwzMjc6W1s3OCw3ODBdXSwzMjg6W1sxMTAsNzgwXV0sMzI5OltbNzAwLDExMF0sMjU2XSwzMzI6W1s3OSw3NzJdLCx7NzY4Ojc3NjAsNzY5Ojc3NjJ9XSwzMzM6W1sxMTEsNzcyXSwsezc2ODo3NzYxLDc2OTo3NzYzfV0sMzM0OltbNzksNzc0XV0sMzM1OltbMTExLDc3NF1dLDMzNjpbWzc5LDc3OV1dLDMzNzpbWzExMSw3NzldXSwzNDA6W1s4Miw3NjldXSwzNDE6W1sxMTQsNzY5XV0sMzQyOltbODIsODA3XV0sMzQzOltbMTE0LDgwN11dLDM0NDpbWzgyLDc4MF1dLDM0NTpbWzExNCw3ODBdXSwzNDY6W1s4Myw3NjldLCx7Nzc1Ojc3ODB9XSwzNDc6W1sxMTUsNzY5XSwsezc3NTo3NzgxfV0sMzQ4OltbODMsNzcwXV0sMzQ5OltbMTE1LDc3MF1dLDM1MDpbWzgzLDgwN11dLDM1MTpbWzExNSw4MDddXSwzNTI6W1s4Myw3ODBdLCx7Nzc1Ojc3ODJ9XSwzNTM6W1sxMTUsNzgwXSwsezc3NTo3NzgzfV0sMzU0OltbODQsODA3XV0sMzU1OltbMTE2LDgwN11dLDM1NjpbWzg0LDc4MF1dLDM1NzpbWzExNiw3ODBdXSwzNjA6W1s4NSw3NzFdLCx7NzY5Ojc4MDB9XSwzNjE6W1sxMTcsNzcxXSwsezc2OTo3ODAxfV0sMzYyOltbODUsNzcyXSwsezc3Njo3ODAyfV0sMzYzOltbMTE3LDc3Ml0sLHs3NzY6NzgwM31dLDM2NDpbWzg1LDc3NF1dLDM2NTpbWzExNyw3NzRdXSwzNjY6W1s4NSw3NzhdXSwzNjc6W1sxMTcsNzc4XV0sMzY4OltbODUsNzc5XV0sMzY5OltbMTE3LDc3OV1dLDM3MDpbWzg1LDgwOF1dLDM3MTpbWzExNyw4MDhdXSwzNzI6W1s4Nyw3NzBdXSwzNzM6W1sxMTksNzcwXV0sMzc0OltbODksNzcwXV0sMzc1OltbMTIxLDc3MF1dLDM3NjpbWzg5LDc3Nl1dLDM3NzpbWzkwLDc2OV1dLDM3ODpbWzEyMiw3NjldXSwzNzk6W1s5MCw3NzVdXSwzODA6W1sxMjIsNzc1XV0sMzgxOltbOTAsNzgwXV0sMzgyOltbMTIyLDc4MF1dLDM4MzpbWzExNV0sMjU2LHs3NzU6NzgzNX1dLDQxNjpbWzc5LDc5NV0sLHs3Njg6NzkwMCw3Njk6Nzg5OCw3NzE6NzkwNCw3Nzc6NzkwMiw4MDM6NzkwNn1dLDQxNzpbWzExMSw3OTVdLCx7NzY4Ojc5MDEsNzY5Ojc4OTksNzcxOjc5MDUsNzc3Ojc5MDMsODAzOjc5MDd9XSw0MzE6W1s4NSw3OTVdLCx7NzY4Ojc5MTQsNzY5Ojc5MTIsNzcxOjc5MTgsNzc3Ojc5MTYsODAzOjc5MjB9XSw0MzI6W1sxMTcsNzk1XSwsezc2ODo3OTE1LDc2OTo3OTEzLDc3MTo3OTE5LDc3Nzo3OTE3LDgwMzo3OTIxfV0sNDM5OlssLHs3ODA6NDk0fV0sNDUyOltbNjgsMzgxXSwyNTZdLDQ1MzpbWzY4LDM4Ml0sMjU2XSw0NTQ6W1sxMDAsMzgyXSwyNTZdLDQ1NTpbWzc2LDc0XSwyNTZdLDQ1NjpbWzc2LDEwNl0sMjU2XSw0NTc6W1sxMDgsMTA2XSwyNTZdLDQ1ODpbWzc4LDc0XSwyNTZdLDQ1OTpbWzc4LDEwNl0sMjU2XSw0NjA6W1sxMTAsMTA2XSwyNTZdLDQ2MTpbWzY1LDc4MF1dLDQ2MjpbWzk3LDc4MF1dLDQ2MzpbWzczLDc4MF1dLDQ2NDpbWzEwNSw3ODBdXSw0NjU6W1s3OSw3ODBdXSw0NjY6W1sxMTEsNzgwXV0sNDY3OltbODUsNzgwXV0sNDY4OltbMTE3LDc4MF1dLDQ2OTpbWzIyMCw3NzJdXSw0NzA6W1syNTIsNzcyXV0sNDcxOltbMjIwLDc2OV1dLDQ3MjpbWzI1Miw3NjldXSw0NzM6W1syMjAsNzgwXV0sNDc0OltbMjUyLDc4MF1dLDQ3NTpbWzIyMCw3NjhdXSw0NzY6W1syNTIsNzY4XV0sNDc4OltbMTk2LDc3Ml1dLDQ3OTpbWzIyOCw3NzJdXSw0ODA6W1s1NTAsNzcyXV0sNDgxOltbNTUxLDc3Ml1dLDQ4MjpbWzE5OCw3NzJdXSw0ODM6W1syMzAsNzcyXV0sNDg2OltbNzEsNzgwXV0sNDg3OltbMTAzLDc4MF1dLDQ4ODpbWzc1LDc4MF1dLDQ4OTpbWzEwNyw3ODBdXSw0OTA6W1s3OSw4MDhdLCx7NzcyOjQ5Mn1dLDQ5MTpbWzExMSw4MDhdLCx7NzcyOjQ5M31dLDQ5MjpbWzQ5MCw3NzJdXSw0OTM6W1s0OTEsNzcyXV0sNDk0OltbNDM5LDc4MF1dLDQ5NTpbWzY1OCw3ODBdXSw0OTY6W1sxMDYsNzgwXV0sNDk3OltbNjgsOTBdLDI1Nl0sNDk4OltbNjgsMTIyXSwyNTZdLDQ5OTpbWzEwMCwxMjJdLDI1Nl0sNTAwOltbNzEsNzY5XV0sNTAxOltbMTAzLDc2OV1dLDUwNDpbWzc4LDc2OF1dLDUwNTpbWzExMCw3NjhdXSw1MDY6W1sxOTcsNzY5XV0sNTA3OltbMjI5LDc2OV1dLDUwODpbWzE5OCw3NjldXSw1MDk6W1syMzAsNzY5XV0sNTEwOltbMjE2LDc2OV1dLDUxMTpbWzI0OCw3NjldXSw2NjA0NTpbLDIyMF19LFxuNTEyOns1MTI6W1s2NSw3ODNdXSw1MTM6W1s5Nyw3ODNdXSw1MTQ6W1s2NSw3ODVdXSw1MTU6W1s5Nyw3ODVdXSw1MTY6W1s2OSw3ODNdXSw1MTc6W1sxMDEsNzgzXV0sNTE4OltbNjksNzg1XV0sNTE5OltbMTAxLDc4NV1dLDUyMDpbWzczLDc4M11dLDUyMTpbWzEwNSw3ODNdXSw1MjI6W1s3Myw3ODVdXSw1MjM6W1sxMDUsNzg1XV0sNTI0OltbNzksNzgzXV0sNTI1OltbMTExLDc4M11dLDUyNjpbWzc5LDc4NV1dLDUyNzpbWzExMSw3ODVdXSw1Mjg6W1s4Miw3ODNdXSw1Mjk6W1sxMTQsNzgzXV0sNTMwOltbODIsNzg1XV0sNTMxOltbMTE0LDc4NV1dLDUzMjpbWzg1LDc4M11dLDUzMzpbWzExNyw3ODNdXSw1MzQ6W1s4NSw3ODVdXSw1MzU6W1sxMTcsNzg1XV0sNTM2OltbODMsODA2XV0sNTM3OltbMTE1LDgwNl1dLDUzODpbWzg0LDgwNl1dLDUzOTpbWzExNiw4MDZdXSw1NDI6W1s3Miw3ODBdXSw1NDM6W1sxMDQsNzgwXV0sNTUwOltbNjUsNzc1XSwsezc3Mjo0ODB9XSw1NTE6W1s5Nyw3NzVdLCx7NzcyOjQ4MX1dLDU1MjpbWzY5LDgwN10sLHs3NzQ6NzcwOH1dLDU1MzpbWzEwMSw4MDddLCx7Nzc0Ojc3MDl9XSw1NTQ6W1syMTQsNzcyXV0sNTU1OltbMjQ2LDc3Ml1dLDU1NjpbWzIxMyw3NzJdXSw1NTc6W1syNDUsNzcyXV0sNTU4OltbNzksNzc1XSwsezc3Mjo1NjB9XSw1NTk6W1sxMTEsNzc1XSwsezc3Mjo1NjF9XSw1NjA6W1s1NTgsNzcyXV0sNTYxOltbNTU5LDc3Ml1dLDU2MjpbWzg5LDc3Ml1dLDU2MzpbWzEyMSw3NzJdXSw2NTg6Wywsezc4MDo0OTV9XSw2ODg6W1sxMDRdLDI1Nl0sNjg5OltbNjE0XSwyNTZdLDY5MDpbWzEwNl0sMjU2XSw2OTE6W1sxMTRdLDI1Nl0sNjkyOltbNjMzXSwyNTZdLDY5MzpbWzYzNV0sMjU2XSw2OTQ6W1s2NDFdLDI1Nl0sNjk1OltbMTE5XSwyNTZdLDY5NjpbWzEyMV0sMjU2XSw3Mjg6W1szMiw3NzRdLDI1Nl0sNzI5OltbMzIsNzc1XSwyNTZdLDczMDpbWzMyLDc3OF0sMjU2XSw3MzE6W1szMiw4MDhdLDI1Nl0sNzMyOltbMzIsNzcxXSwyNTZdLDczMzpbWzMyLDc3OV0sMjU2XSw3MzY6W1s2MTFdLDI1Nl0sNzM3OltbMTA4XSwyNTZdLDczODpbWzExNV0sMjU2XSw3Mzk6W1sxMjBdLDI1Nl0sNzQwOltbNjYxXSwyNTZdLDY2MjcyOlssMjIwXX0sXG43Njg6ezc2ODpbLDIzMF0sNzY5OlssMjMwXSw3NzA6WywyMzBdLDc3MTpbLDIzMF0sNzcyOlssMjMwXSw3NzM6WywyMzBdLDc3NDpbLDIzMF0sNzc1OlssMjMwXSw3NzY6WywyMzAsezc2OTo4MzZ9XSw3Nzc6WywyMzBdLDc3ODpbLDIzMF0sNzc5OlssMjMwXSw3ODA6WywyMzBdLDc4MTpbLDIzMF0sNzgyOlssMjMwXSw3ODM6WywyMzBdLDc4NDpbLDIzMF0sNzg1OlssMjMwXSw3ODY6WywyMzBdLDc4NzpbLDIzMF0sNzg4OlssMjMwXSw3ODk6WywyMzJdLDc5MDpbLDIyMF0sNzkxOlssMjIwXSw3OTI6WywyMjBdLDc5MzpbLDIyMF0sNzk0OlssMjMyXSw3OTU6WywyMTZdLDc5NjpbLDIyMF0sNzk3OlssMjIwXSw3OTg6WywyMjBdLDc5OTpbLDIyMF0sODAwOlssMjIwXSw4MDE6WywyMDJdLDgwMjpbLDIwMl0sODAzOlssMjIwXSw4MDQ6WywyMjBdLDgwNTpbLDIyMF0sODA2OlssMjIwXSw4MDc6WywyMDJdLDgwODpbLDIwMl0sODA5OlssMjIwXSw4MTA6WywyMjBdLDgxMTpbLDIyMF0sODEyOlssMjIwXSw4MTM6WywyMjBdLDgxNDpbLDIyMF0sODE1OlssMjIwXSw4MTY6WywyMjBdLDgxNzpbLDIyMF0sODE4OlssMjIwXSw4MTk6WywyMjBdLDgyMDpbLDFdLDgyMTpbLDFdLDgyMjpbLDFdLDgyMzpbLDFdLDgyNDpbLDFdLDgyNTpbLDIyMF0sODI2OlssMjIwXSw4Mjc6WywyMjBdLDgyODpbLDIyMF0sODI5OlssMjMwXSw4MzA6WywyMzBdLDgzMTpbLDIzMF0sODMyOltbNzY4XSwyMzBdLDgzMzpbWzc2OV0sMjMwXSw4MzQ6WywyMzBdLDgzNTpbWzc4N10sMjMwXSw4MzY6W1s3NzYsNzY5XSwyMzBdLDgzNzpbLDI0MF0sODM4OlssMjMwXSw4Mzk6WywyMjBdLDg0MDpbLDIyMF0sODQxOlssMjIwXSw4NDI6WywyMzBdLDg0MzpbLDIzMF0sODQ0OlssMjMwXSw4NDU6WywyMjBdLDg0NjpbLDIyMF0sODQ4OlssMjMwXSw4NDk6WywyMzBdLDg1MDpbLDIzMF0sODUxOlssMjIwXSw4NTI6WywyMjBdLDg1MzpbLDIyMF0sODU0OlssMjIwXSw4NTU6WywyMzBdLDg1NjpbLDIzMl0sODU3OlssMjIwXSw4NTg6WywyMjBdLDg1OTpbLDIzMF0sODYwOlssMjMzXSw4NjE6WywyMzRdLDg2MjpbLDIzNF0sODYzOlssMjMzXSw4NjQ6WywyMzRdLDg2NTpbLDIzNF0sODY2OlssMjMzXSw4Njc6WywyMzBdLDg2ODpbLDIzMF0sODY5OlssMjMwXSw4NzA6WywyMzBdLDg3MTpbLDIzMF0sODcyOlssMjMwXSw4NzM6WywyMzBdLDg3NDpbLDIzMF0sODc1OlssMjMwXSw4NzY6WywyMzBdLDg3NzpbLDIzMF0sODc4OlssMjMwXSw4Nzk6WywyMzBdLDg4NDpbWzY5N11dLDg5MDpbWzMyLDgzN10sMjU2XSw4OTQ6W1s1OV1dLDkwMDpbWzMyLDc2OV0sMjU2XSw5MDE6W1sxNjgsNzY5XV0sOTAyOltbOTEzLDc2OV1dLDkwMzpbWzE4M11dLDkwNDpbWzkxNyw3NjldXSw5MDU6W1s5MTksNzY5XV0sOTA2OltbOTIxLDc2OV1dLDkwODpbWzkyNyw3NjldXSw5MTA6W1s5MzMsNzY5XV0sOTExOltbOTM3LDc2OV1dLDkxMjpbWzk3MCw3NjldXSw5MTM6Wywsezc2ODo4MTIyLDc2OTo5MDIsNzcyOjgxMjEsNzc0OjgxMjAsNzg3Ojc5NDQsNzg4Ojc5NDUsODM3OjgxMjR9XSw5MTc6Wywsezc2ODo4MTM2LDc2OTo5MDQsNzg3Ojc5NjAsNzg4Ojc5NjF9XSw5MTk6Wywsezc2ODo4MTM4LDc2OTo5MDUsNzg3Ojc5NzYsNzg4Ojc5NzcsODM3OjgxNDB9XSw5MjE6Wywsezc2ODo4MTU0LDc2OTo5MDYsNzcyOjgxNTMsNzc0OjgxNTIsNzc2OjkzOCw3ODc6Nzk5Miw3ODg6Nzk5M31dLDkyNzpbLCx7NzY4OjgxODQsNzY5OjkwOCw3ODc6ODAwOCw3ODg6ODAwOX1dLDkyOTpbLCx7Nzg4OjgxNzJ9XSw5MzM6Wywsezc2ODo4MTcwLDc2OTo5MTAsNzcyOjgxNjksNzc0OjgxNjgsNzc2OjkzOSw3ODg6ODAyNX1dLDkzNzpbLCx7NzY4OjgxODYsNzY5OjkxMSw3ODc6ODA0MCw3ODg6ODA0MSw4Mzc6ODE4OH1dLDkzODpbWzkyMSw3NzZdXSw5Mzk6W1s5MzMsNzc2XV0sOTQwOltbOTQ1LDc2OV0sLHs4Mzc6ODExNn1dLDk0MTpbWzk0OSw3NjldXSw5NDI6W1s5NTEsNzY5XSwsezgzNzo4MTMyfV0sOTQzOltbOTUzLDc2OV1dLDk0NDpbWzk3MSw3NjldXSw5NDU6Wywsezc2ODo4MDQ4LDc2OTo5NDAsNzcyOjgxMTMsNzc0OjgxMTIsNzg3Ojc5MzYsNzg4Ojc5MzcsODM0OjgxMTgsODM3OjgxMTV9XSw5NDk6Wywsezc2ODo4MDUwLDc2OTo5NDEsNzg3Ojc5NTIsNzg4Ojc5NTN9XSw5NTE6Wywsezc2ODo4MDUyLDc2OTo5NDIsNzg3Ojc5NjgsNzg4Ojc5NjksODM0OjgxMzQsODM3OjgxMzF9XSw5NTM6Wywsezc2ODo4MDU0LDc2OTo5NDMsNzcyOjgxNDUsNzc0OjgxNDQsNzc2Ojk3MCw3ODc6Nzk4NCw3ODg6Nzk4NSw4MzQ6ODE1MH1dLDk1OTpbLCx7NzY4OjgwNTYsNzY5Ojk3Miw3ODc6ODAwMCw3ODg6ODAwMX1dLDk2MTpbLCx7Nzg3OjgxNjQsNzg4OjgxNjV9XSw5NjU6Wywsezc2ODo4MDU4LDc2OTo5NzMsNzcyOjgxNjEsNzc0OjgxNjAsNzc2Ojk3MSw3ODc6ODAxNiw3ODg6ODAxNyw4MzQ6ODE2Nn1dLDk2OTpbLCx7NzY4OjgwNjAsNzY5Ojk3NCw3ODc6ODAzMiw3ODg6ODAzMyw4MzQ6ODE4Miw4Mzc6ODE3OX1dLDk3MDpbWzk1Myw3NzZdLCx7NzY4OjgxNDYsNzY5OjkxMiw4MzQ6ODE1MX1dLDk3MTpbWzk2NSw3NzZdLCx7NzY4OjgxNjIsNzY5Ojk0NCw4MzQ6ODE2N31dLDk3MjpbWzk1OSw3NjldXSw5NzM6W1s5NjUsNzY5XV0sOTc0OltbOTY5LDc2OV0sLHs4Mzc6ODE4MH1dLDk3NjpbWzk0Nl0sMjU2XSw5Nzc6W1s5NTJdLDI1Nl0sOTc4OltbOTMzXSwyNTYsezc2OTo5NzksNzc2Ojk4MH1dLDk3OTpbWzk3OCw3NjldXSw5ODA6W1s5NzgsNzc2XV0sOTgxOltbOTY2XSwyNTZdLDk4MjpbWzk2MF0sMjU2XSwxMDA4OltbOTU0XSwyNTZdLDEwMDk6W1s5NjFdLDI1Nl0sMTAxMDpbWzk2Ml0sMjU2XSwxMDEyOltbOTIwXSwyNTZdLDEwMTM6W1s5NDldLDI1Nl0sMTAxNzpbWzkzMV0sMjU2XSw2NjQyMjpbLDIzMF0sNjY0MjM6WywyMzBdLDY2NDI0OlssMjMwXSw2NjQyNTpbLDIzMF0sNjY0MjY6WywyMzBdfSxcbjEwMjQ6ezEwMjQ6W1sxMDQ1LDc2OF1dLDEwMjU6W1sxMDQ1LDc3Nl1dLDEwMjc6W1sxMDQzLDc2OV1dLDEwMzA6Wywsezc3NjoxMDMxfV0sMTAzMTpbWzEwMzAsNzc2XV0sMTAzNjpbWzEwNTAsNzY5XV0sMTAzNzpbWzEwNDgsNzY4XV0sMTAzODpbWzEwNTksNzc0XV0sMTA0MDpbLCx7Nzc0OjEyMzIsNzc2OjEyMzR9XSwxMDQzOlssLHs3Njk6MTAyN31dLDEwNDU6Wywsezc2ODoxMDI0LDc3NDoxMjM4LDc3NjoxMDI1fV0sMTA0NjpbLCx7Nzc0OjEyMTcsNzc2OjEyNDR9XSwxMDQ3OlssLHs3NzY6MTI0Nn1dLDEwNDg6Wywsezc2ODoxMDM3LDc3MjoxMjUwLDc3NDoxMDQ5LDc3NjoxMjUyfV0sMTA0OTpbWzEwNDgsNzc0XV0sMTA1MDpbLCx7NzY5OjEwMzZ9XSwxMDU0OlssLHs3NzY6MTI1NH1dLDEwNTk6Wywsezc3MjoxMjYyLDc3NDoxMDM4LDc3NjoxMjY0LDc3OToxMjY2fV0sMTA2MzpbLCx7Nzc2OjEyNjh9XSwxMDY3OlssLHs3NzY6MTI3Mn1dLDEwNjk6Wywsezc3NjoxMjYwfV0sMTA3MjpbLCx7Nzc0OjEyMzMsNzc2OjEyMzV9XSwxMDc1OlssLHs3Njk6MTEwN31dLDEwNzc6Wywsezc2ODoxMTA0LDc3NDoxMjM5LDc3NjoxMTA1fV0sMTA3ODpbLCx7Nzc0OjEyMTgsNzc2OjEyNDV9XSwxMDc5OlssLHs3NzY6MTI0N31dLDEwODA6Wywsezc2ODoxMTE3LDc3MjoxMjUxLDc3NDoxMDgxLDc3NjoxMjUzfV0sMTA4MTpbWzEwODAsNzc0XV0sMTA4MjpbLCx7NzY5OjExMTZ9XSwxMDg2OlssLHs3NzY6MTI1NX1dLDEwOTE6Wywsezc3MjoxMjYzLDc3NDoxMTE4LDc3NjoxMjY1LDc3OToxMjY3fV0sMTA5NTpbLCx7Nzc2OjEyNjl9XSwxMDk5OlssLHs3NzY6MTI3M31dLDExMDE6Wywsezc3NjoxMjYxfV0sMTEwNDpbWzEwNzcsNzY4XV0sMTEwNTpbWzEwNzcsNzc2XV0sMTEwNzpbWzEwNzUsNzY5XV0sMTExMDpbLCx7Nzc2OjExMTF9XSwxMTExOltbMTExMCw3NzZdXSwxMTE2OltbMTA4Miw3NjldXSwxMTE3OltbMTA4MCw3NjhdXSwxMTE4OltbMTA5MSw3NzRdXSwxMTQwOlssLHs3ODM6MTE0Mn1dLDExNDE6Wywsezc4MzoxMTQzfV0sMTE0MjpbWzExNDAsNzgzXV0sMTE0MzpbWzExNDEsNzgzXV0sMTE1NTpbLDIzMF0sMTE1NjpbLDIzMF0sMTE1NzpbLDIzMF0sMTE1ODpbLDIzMF0sMTE1OTpbLDIzMF0sMTIxNzpbWzEwNDYsNzc0XV0sMTIxODpbWzEwNzgsNzc0XV0sMTIzMjpbWzEwNDAsNzc0XV0sMTIzMzpbWzEwNzIsNzc0XV0sMTIzNDpbWzEwNDAsNzc2XV0sMTIzNTpbWzEwNzIsNzc2XV0sMTIzODpbWzEwNDUsNzc0XV0sMTIzOTpbWzEwNzcsNzc0XV0sMTI0MDpbLCx7Nzc2OjEyNDJ9XSwxMjQxOlssLHs3NzY6MTI0M31dLDEyNDI6W1sxMjQwLDc3Nl1dLDEyNDM6W1sxMjQxLDc3Nl1dLDEyNDQ6W1sxMDQ2LDc3Nl1dLDEyNDU6W1sxMDc4LDc3Nl1dLDEyNDY6W1sxMDQ3LDc3Nl1dLDEyNDc6W1sxMDc5LDc3Nl1dLDEyNTA6W1sxMDQ4LDc3Ml1dLDEyNTE6W1sxMDgwLDc3Ml1dLDEyNTI6W1sxMDQ4LDc3Nl1dLDEyNTM6W1sxMDgwLDc3Nl1dLDEyNTQ6W1sxMDU0LDc3Nl1dLDEyNTU6W1sxMDg2LDc3Nl1dLDEyNTY6Wywsezc3NjoxMjU4fV0sMTI1NzpbLCx7Nzc2OjEyNTl9XSwxMjU4OltbMTI1Niw3NzZdXSwxMjU5OltbMTI1Nyw3NzZdXSwxMjYwOltbMTA2OSw3NzZdXSwxMjYxOltbMTEwMSw3NzZdXSwxMjYyOltbMTA1OSw3NzJdXSwxMjYzOltbMTA5MSw3NzJdXSwxMjY0OltbMTA1OSw3NzZdXSwxMjY1OltbMTA5MSw3NzZdXSwxMjY2OltbMTA1OSw3NzldXSwxMjY3OltbMTA5MSw3NzldXSwxMjY4OltbMTA2Myw3NzZdXSwxMjY5OltbMTA5NSw3NzZdXSwxMjcyOltbMTA2Nyw3NzZdXSwxMjczOltbMTA5OSw3NzZdXX0sXG4xMjgwOnsxNDE1OltbMTM4MSwxNDEwXSwyNTZdLDE0MjU6WywyMjBdLDE0MjY6WywyMzBdLDE0Mjc6WywyMzBdLDE0Mjg6WywyMzBdLDE0Mjk6WywyMzBdLDE0MzA6WywyMjBdLDE0MzE6WywyMzBdLDE0MzI6WywyMzBdLDE0MzM6WywyMzBdLDE0MzQ6WywyMjJdLDE0MzU6WywyMjBdLDE0MzY6WywyMzBdLDE0Mzc6WywyMzBdLDE0Mzg6WywyMzBdLDE0Mzk6WywyMzBdLDE0NDA6WywyMzBdLDE0NDE6WywyMzBdLDE0NDI6WywyMjBdLDE0NDM6WywyMjBdLDE0NDQ6WywyMjBdLDE0NDU6WywyMjBdLDE0NDY6WywyMjBdLDE0NDc6WywyMjBdLDE0NDg6WywyMzBdLDE0NDk6WywyMzBdLDE0NTA6WywyMjBdLDE0NTE6WywyMzBdLDE0NTI6WywyMzBdLDE0NTM6WywyMjJdLDE0NTQ6WywyMjhdLDE0NTU6WywyMzBdLDE0NTY6WywxMF0sMTQ1NzpbLDExXSwxNDU4OlssMTJdLDE0NTk6WywxM10sMTQ2MDpbLDE0XSwxNDYxOlssMTVdLDE0NjI6WywxNl0sMTQ2MzpbLDE3XSwxNDY0OlssMThdLDE0NjU6WywxOV0sMTQ2NjpbLDE5XSwxNDY3OlssMjBdLDE0Njg6WywyMV0sMTQ2OTpbLDIyXSwxNDcxOlssMjNdLDE0NzM6WywyNF0sMTQ3NDpbLDI1XSwxNDc2OlssMjMwXSwxNDc3OlssMjIwXSwxNDc5OlssMThdfSxcbjE1MzY6ezE1NTI6WywyMzBdLDE1NTM6WywyMzBdLDE1NTQ6WywyMzBdLDE1NTU6WywyMzBdLDE1NTY6WywyMzBdLDE1NTc6WywyMzBdLDE1NTg6WywyMzBdLDE1NTk6WywyMzBdLDE1NjA6WywzMF0sMTU2MTpbLDMxXSwxNTYyOlssMzJdLDE1NzA6W1sxNTc1LDE2MTldXSwxNTcxOltbMTU3NSwxNjIwXV0sMTU3MjpbWzE2MDgsMTYyMF1dLDE1NzM6W1sxNTc1LDE2MjFdXSwxNTc0OltbMTYxMCwxNjIwXV0sMTU3NTpbLCx7MTYxOToxNTcwLDE2MjA6MTU3MSwxNjIxOjE1NzN9XSwxNjA4OlssLHsxNjIwOjE1NzJ9XSwxNjEwOlssLHsxNjIwOjE1NzR9XSwxNjExOlssMjddLDE2MTI6WywyOF0sMTYxMzpbLDI5XSwxNjE0OlssMzBdLDE2MTU6WywzMV0sMTYxNjpbLDMyXSwxNjE3OlssMzNdLDE2MTg6WywzNF0sMTYxOTpbLDIzMF0sMTYyMDpbLDIzMF0sMTYyMTpbLDIyMF0sMTYyMjpbLDIyMF0sMTYyMzpbLDIzMF0sMTYyNDpbLDIzMF0sMTYyNTpbLDIzMF0sMTYyNjpbLDIzMF0sMTYyNzpbLDIzMF0sMTYyODpbLDIyMF0sMTYyOTpbLDIzMF0sMTYzMDpbLDIzMF0sMTYzMTpbLDIyMF0sMTY0ODpbLDM1XSwxNjUzOltbMTU3NSwxNjUyXSwyNTZdLDE2NTQ6W1sxNjA4LDE2NTJdLDI1Nl0sMTY1NTpbWzE3MzUsMTY1Ml0sMjU2XSwxNjU2OltbMTYxMCwxNjUyXSwyNTZdLDE3Mjg6W1sxNzQ5LDE2MjBdXSwxNzI5OlssLHsxNjIwOjE3MzB9XSwxNzMwOltbMTcyOSwxNjIwXV0sMTc0NjpbLCx7MTYyMDoxNzQ3fV0sMTc0NzpbWzE3NDYsMTYyMF1dLDE3NDk6WywsezE2MjA6MTcyOH1dLDE3NTA6WywyMzBdLDE3NTE6WywyMzBdLDE3NTI6WywyMzBdLDE3NTM6WywyMzBdLDE3NTQ6WywyMzBdLDE3NTU6WywyMzBdLDE3NTY6WywyMzBdLDE3NTk6WywyMzBdLDE3NjA6WywyMzBdLDE3NjE6WywyMzBdLDE3NjI6WywyMzBdLDE3NjM6WywyMjBdLDE3NjQ6WywyMzBdLDE3Njc6WywyMzBdLDE3Njg6WywyMzBdLDE3NzA6WywyMjBdLDE3NzE6WywyMzBdLDE3NzI6WywyMzBdLDE3NzM6WywyMjBdfSxcbjE3OTI6ezE4MDk6WywzNl0sMTg0MDpbLDIzMF0sMTg0MTpbLDIyMF0sMTg0MjpbLDIzMF0sMTg0MzpbLDIzMF0sMTg0NDpbLDIyMF0sMTg0NTpbLDIzMF0sMTg0NjpbLDIzMF0sMTg0NzpbLDIyMF0sMTg0ODpbLDIyMF0sMTg0OTpbLDIyMF0sMTg1MDpbLDIzMF0sMTg1MTpbLDIyMF0sMTg1MjpbLDIyMF0sMTg1MzpbLDIzMF0sMTg1NDpbLDIyMF0sMTg1NTpbLDIzMF0sMTg1NjpbLDIzMF0sMTg1NzpbLDIzMF0sMTg1ODpbLDIyMF0sMTg1OTpbLDIzMF0sMTg2MDpbLDIyMF0sMTg2MTpbLDIzMF0sMTg2MjpbLDIyMF0sMTg2MzpbLDIzMF0sMTg2NDpbLDIyMF0sMTg2NTpbLDIzMF0sMTg2NjpbLDIzMF0sMjAyNzpbLDIzMF0sMjAyODpbLDIzMF0sMjAyOTpbLDIzMF0sMjAzMDpbLDIzMF0sMjAzMTpbLDIzMF0sMjAzMjpbLDIzMF0sMjAzMzpbLDIzMF0sMjAzNDpbLDIyMF0sMjAzNTpbLDIzMF19LFxuMjA0ODp7MjA3MDpbLDIzMF0sMjA3MTpbLDIzMF0sMjA3MjpbLDIzMF0sMjA3MzpbLDIzMF0sMjA3NTpbLDIzMF0sMjA3NjpbLDIzMF0sMjA3NzpbLDIzMF0sMjA3ODpbLDIzMF0sMjA3OTpbLDIzMF0sMjA4MDpbLDIzMF0sMjA4MTpbLDIzMF0sMjA4MjpbLDIzMF0sMjA4MzpbLDIzMF0sMjA4NTpbLDIzMF0sMjA4NjpbLDIzMF0sMjA4NzpbLDIzMF0sMjA4OTpbLDIzMF0sMjA5MDpbLDIzMF0sMjA5MTpbLDIzMF0sMjA5MjpbLDIzMF0sMjA5MzpbLDIzMF0sMjEzNzpbLDIyMF0sMjEzODpbLDIyMF0sMjEzOTpbLDIyMF0sMjI3NjpbLDIzMF0sMjI3NzpbLDIzMF0sMjI3ODpbLDIyMF0sMjI3OTpbLDIzMF0sMjI4MDpbLDIzMF0sMjI4MTpbLDIyMF0sMjI4MjpbLDIzMF0sMjI4MzpbLDIzMF0sMjI4NDpbLDIzMF0sMjI4NTpbLDIyMF0sMjI4NjpbLDIyMF0sMjI4NzpbLDIyMF0sMjI4ODpbLDI3XSwyMjg5OlssMjhdLDIyOTA6WywyOV0sMjI5MTpbLDIzMF0sMjI5MjpbLDIzMF0sMjI5MzpbLDIzMF0sMjI5NDpbLDIyMF0sMjI5NTpbLDIzMF0sMjI5NjpbLDIzMF0sMjI5NzpbLDIyMF0sMjI5ODpbLDIyMF0sMjI5OTpbLDIzMF0sMjMwMDpbLDIzMF0sMjMwMTpbLDIzMF0sMjMwMjpbLDIzMF0sMjMwMzpbLDIzMF19LFxuMjMwNDp7MjM0NDpbLCx7MjM2NDoyMzQ1fV0sMjM0NTpbWzIzNDQsMjM2NF1dLDIzNTI6WywsezIzNjQ6MjM1M31dLDIzNTM6W1syMzUyLDIzNjRdXSwyMzU1OlssLHsyMzY0OjIzNTZ9XSwyMzU2OltbMjM1NSwyMzY0XV0sMjM2NDpbLDddLDIzODE6Wyw5XSwyMzg1OlssMjMwXSwyMzg2OlssMjIwXSwyMzg3OlssMjMwXSwyMzg4OlssMjMwXSwyMzkyOltbMjMyNSwyMzY0XSw1MTJdLDIzOTM6W1syMzI2LDIzNjRdLDUxMl0sMjM5NDpbWzIzMjcsMjM2NF0sNTEyXSwyMzk1OltbMjMzMiwyMzY0XSw1MTJdLDIzOTY6W1syMzM3LDIzNjRdLDUxMl0sMjM5NzpbWzIzMzgsMjM2NF0sNTEyXSwyMzk4OltbMjM0NywyMzY0XSw1MTJdLDIzOTk6W1syMzUxLDIzNjRdLDUxMl0sMjQ5MjpbLDddLDI1MDM6WywsezI0OTQ6MjUwNywyNTE5OjI1MDh9XSwyNTA3OltbMjUwMywyNDk0XV0sMjUwODpbWzI1MDMsMjUxOV1dLDI1MDk6Wyw5XSwyNTI0OltbMjQ2NSwyNDkyXSw1MTJdLDI1MjU6W1syNDY2LDI0OTJdLDUxMl0sMjUyNzpbWzI0NzksMjQ5Ml0sNTEyXX0sXG4yNTYwOnsyNjExOltbMjYxMCwyNjIwXSw1MTJdLDI2MTQ6W1syNjE2LDI2MjBdLDUxMl0sMjYyMDpbLDddLDI2Mzc6Wyw5XSwyNjQ5OltbMjU4MiwyNjIwXSw1MTJdLDI2NTA6W1syNTgzLDI2MjBdLDUxMl0sMjY1MTpbWzI1ODgsMjYyMF0sNTEyXSwyNjU0OltbMjYwMywyNjIwXSw1MTJdLDI3NDg6Wyw3XSwyNzY1OlssOV0sNjgxMDk6WywyMjBdLDY4MTExOlssMjMwXSw2ODE1MjpbLDIzMF0sNjgxNTM6WywxXSw2ODE1NDpbLDIyMF0sNjgxNTk6Wyw5XSw2ODMyNTpbLDIzMF0sNjgzMjY6WywyMjBdfSxcbjI4MTY6ezI4NzY6Wyw3XSwyODg3OlssLHsyODc4OjI4OTEsMjkwMjoyODg4LDI5MDM6Mjg5Mn1dLDI4ODg6W1syODg3LDI5MDJdXSwyODkxOltbMjg4NywyODc4XV0sMjg5MjpbWzI4ODcsMjkwM11dLDI4OTM6Wyw5XSwyOTA4OltbMjg0OSwyODc2XSw1MTJdLDI5MDk6W1syODUwLDI4NzZdLDUxMl0sMjk2MjpbLCx7MzAzMToyOTY0fV0sMjk2NDpbWzI5NjIsMzAzMV1dLDMwMTQ6WywsezMwMDY6MzAxOCwzMDMxOjMwMjB9XSwzMDE1OlssLHszMDA2OjMwMTl9XSwzMDE4OltbMzAxNCwzMDA2XV0sMzAxOTpbWzMwMTUsMzAwNl1dLDMwMjA6W1szMDE0LDMwMzFdXSwzMDIxOlssOV19LFxuMzA3Mjp7MzE0MjpbLCx7MzE1ODozMTQ0fV0sMzE0NDpbWzMxNDIsMzE1OF1dLDMxNDk6Wyw5XSwzMTU3OlssODRdLDMxNTg6Wyw5MV0sMzI2MDpbLDddLDMyNjM6WywsezMyODU6MzI2NH1dLDMyNjQ6W1szMjYzLDMyODVdXSwzMjcwOlssLHszMjY2OjMyNzQsMzI4NTozMjcxLDMyODY6MzI3Mn1dLDMyNzE6W1szMjcwLDMyODVdXSwzMjcyOltbMzI3MCwzMjg2XV0sMzI3NDpbWzMyNzAsMzI2Nl0sLHszMjg1OjMyNzV9XSwzMjc1OltbMzI3NCwzMjg1XV0sMzI3NzpbLDldfSxcbjMzMjg6ezMzOTg6WywsezMzOTA6MzQwMiwzNDE1OjM0MDR9XSwzMzk5OlssLHszMzkwOjM0MDN9XSwzNDAyOltbMzM5OCwzMzkwXV0sMzQwMzpbWzMzOTksMzM5MF1dLDM0MDQ6W1szMzk4LDM0MTVdXSwzNDA1OlssOV0sMzUzMDpbLDldLDM1NDU6WywsezM1MzA6MzU0NiwzNTM1OjM1NDgsMzU1MTozNTUwfV0sMzU0NjpbWzM1NDUsMzUzMF1dLDM1NDg6W1szNTQ1LDM1MzVdLCx7MzUzMDozNTQ5fV0sMzU0OTpbWzM1NDgsMzUzMF1dLDM1NTA6W1szNTQ1LDM1NTFdXX0sXG4zNTg0OnszNjM1OltbMzY2MSwzNjM0XSwyNTZdLDM2NDA6WywxMDNdLDM2NDE6WywxMDNdLDM2NDI6Wyw5XSwzNjU2OlssMTA3XSwzNjU3OlssMTA3XSwzNjU4OlssMTA3XSwzNjU5OlssMTA3XSwzNzYzOltbMzc4OSwzNzYyXSwyNTZdLDM3Njg6WywxMThdLDM3Njk6WywxMThdLDM3ODQ6WywxMjJdLDM3ODU6WywxMjJdLDM3ODY6WywxMjJdLDM3ODc6WywxMjJdLDM4MDQ6W1szNzU1LDM3MzddLDI1Nl0sMzgwNTpbWzM3NTUsMzc0NV0sMjU2XX0sXG4zODQwOnszODUyOltbMzg1MV0sMjU2XSwzODY0OlssMjIwXSwzODY1OlssMjIwXSwzODkzOlssMjIwXSwzODk1OlssMjIwXSwzODk3OlssMjE2XSwzOTA3OltbMzkwNiw0MDIzXSw1MTJdLDM5MTc6W1szOTE2LDQwMjNdLDUxMl0sMzkyMjpbWzM5MjEsNDAyM10sNTEyXSwzOTI3OltbMzkyNiw0MDIzXSw1MTJdLDM5MzI6W1szOTMxLDQwMjNdLDUxMl0sMzk0NTpbWzM5MDQsNDAyMV0sNTEyXSwzOTUzOlssMTI5XSwzOTU0OlssMTMwXSwzOTU1OltbMzk1MywzOTU0XSw1MTJdLDM5NTY6WywxMzJdLDM5NTc6W1szOTUzLDM5NTZdLDUxMl0sMzk1ODpbWzQwMTgsMzk2OF0sNTEyXSwzOTU5OltbNDAxOCwzOTY5XSwyNTZdLDM5NjA6W1s0MDE5LDM5NjhdLDUxMl0sMzk2MTpbWzQwMTksMzk2OV0sMjU2XSwzOTYyOlssMTMwXSwzOTYzOlssMTMwXSwzOTY0OlssMTMwXSwzOTY1OlssMTMwXSwzOTY4OlssMTMwXSwzOTY5OltbMzk1MywzOTY4XSw1MTJdLDM5NzA6WywyMzBdLDM5NzE6WywyMzBdLDM5NzI6Wyw5XSwzOTc0OlssMjMwXSwzOTc1OlssMjMwXSwzOTg3OltbMzk4Niw0MDIzXSw1MTJdLDM5OTc6W1szOTk2LDQwMjNdLDUxMl0sNDAwMjpbWzQwMDEsNDAyM10sNTEyXSw0MDA3OltbNDAwNiw0MDIzXSw1MTJdLDQwMTI6W1s0MDExLDQwMjNdLDUxMl0sNDAyNTpbWzM5ODQsNDAyMV0sNTEyXSw0MDM4OlssMjIwXX0sXG40MDk2Ons0MTMzOlssLHs0MTQyOjQxMzR9XSw0MTM0OltbNDEzMyw0MTQyXV0sNDE1MTpbLDddLDQxNTM6Wyw5XSw0MTU0OlssOV0sNDIzNzpbLDIyMF0sNDM0ODpbWzQzMTZdLDI1Nl0sNjk3MDI6Wyw5XSw2OTc1OTpbLDldLDY5Nzg1OlssLHs2OTgxODo2OTc4Nn1dLDY5Nzg2OltbNjk3ODUsNjk4MThdXSw2OTc4NzpbLCx7Njk4MTg6Njk3ODh9XSw2OTc4ODpbWzY5Nzg3LDY5ODE4XV0sNjk3OTc6WywsezY5ODE4OjY5ODAzfV0sNjk4MDM6W1s2OTc5Nyw2OTgxOF1dLDY5ODE3OlssOV0sNjk4MTg6Wyw3XX0sXG40MzUyOns2OTg4ODpbLDIzMF0sNjk4ODk6WywyMzBdLDY5ODkwOlssMjMwXSw2OTkzNDpbWzY5OTM3LDY5OTI3XV0sNjk5MzU6W1s2OTkzOCw2OTkyN11dLDY5OTM3OlssLHs2OTkyNzo2OTkzNH1dLDY5OTM4OlssLHs2OTkyNzo2OTkzNX1dLDY5OTM5OlssOV0sNjk5NDA6Wyw5XSw3MDAwMzpbLDddLDcwMDgwOlssOV19LFxuNDYwODp7NzAxOTc6Wyw5XSw3MDE5ODpbLDddLDcwMzc3OlssN10sNzAzNzg6Wyw5XX0sXG40ODY0Ons0OTU3OlssMjMwXSw0OTU4OlssMjMwXSw0OTU5OlssMjMwXSw3MDQ2MDpbLDddLDcwNDcxOlssLHs3MDQ2Mjo3MDQ3NSw3MDQ4Nzo3MDQ3Nn1dLDcwNDc1OltbNzA0NzEsNzA0NjJdXSw3MDQ3NjpbWzcwNDcxLDcwNDg3XV0sNzA0Nzc6Wyw5XSw3MDUwMjpbLDIzMF0sNzA1MDM6WywyMzBdLDcwNTA0OlssMjMwXSw3MDUwNTpbLDIzMF0sNzA1MDY6WywyMzBdLDcwNTA3OlssMjMwXSw3MDUwODpbLDIzMF0sNzA1MTI6WywyMzBdLDcwNTEzOlssMjMwXSw3MDUxNDpbLDIzMF0sNzA1MTU6WywyMzBdLDcwNTE2OlssMjMwXX0sXG41MTIwOns3MDg0MTpbLCx7NzA4MzI6NzA4NDQsNzA4NDI6NzA4NDMsNzA4NDU6NzA4NDZ9XSw3MDg0MzpbWzcwODQxLDcwODQyXV0sNzA4NDQ6W1s3MDg0MSw3MDgzMl1dLDcwODQ2OltbNzA4NDEsNzA4NDVdXSw3MDg1MDpbLDldLDcwODUxOlssN119LFxuNTM3Njp7NzEwOTY6WywsezcxMDg3OjcxMDk4fV0sNzEwOTc6WywsezcxMDg3OjcxMDk5fV0sNzEwOTg6W1s3MTA5Niw3MTA4N11dLDcxMDk5OltbNzEwOTcsNzEwODddXSw3MTEwMzpbLDldLDcxMTA0OlssN119LFxuNTYzMjp7NzEyMzE6Wyw5XSw3MTM1MDpbLDldLDcxMzUxOlssN119LFxuNTg4ODp7NTkwODpbLDldLDU5NDA6Wyw5XSw2MDk4OlssOV0sNjEwOTpbLDIzMF19LFxuNjE0NDp7NjMxMzpbLDIyOF19LFxuNjQwMDp7NjQ1NzpbLDIyMl0sNjQ1ODpbLDIzMF0sNjQ1OTpbLDIyMF19LFxuNjY1Njp7NjY3OTpbLDIzMF0sNjY4MDpbLDIyMF0sNjc1MjpbLDldLDY3NzM6WywyMzBdLDY3NzQ6WywyMzBdLDY3NzU6WywyMzBdLDY3NzY6WywyMzBdLDY3Nzc6WywyMzBdLDY3Nzg6WywyMzBdLDY3Nzk6WywyMzBdLDY3ODA6WywyMzBdLDY3ODM6WywyMjBdLDY4MzI6WywyMzBdLDY4MzM6WywyMzBdLDY4MzQ6WywyMzBdLDY4MzU6WywyMzBdLDY4MzY6WywyMzBdLDY4Mzc6WywyMjBdLDY4Mzg6WywyMjBdLDY4Mzk6WywyMjBdLDY4NDA6WywyMjBdLDY4NDE6WywyMjBdLDY4NDI6WywyMjBdLDY4NDM6WywyMzBdLDY4NDQ6WywyMzBdLDY4NDU6WywyMjBdfSxcbjY5MTI6ezY5MTc6WywsezY5NjU6NjkxOH1dLDY5MTg6W1s2OTE3LDY5NjVdXSw2OTE5OlssLHs2OTY1OjY5MjB9XSw2OTIwOltbNjkxOSw2OTY1XV0sNjkyMTpbLCx7Njk2NTo2OTIyfV0sNjkyMjpbWzY5MjEsNjk2NV1dLDY5MjM6WywsezY5NjU6NjkyNH1dLDY5MjQ6W1s2OTIzLDY5NjVdXSw2OTI1OlssLHs2OTY1OjY5MjZ9XSw2OTI2OltbNjkyNSw2OTY1XV0sNjkyOTpbLCx7Njk2NTo2OTMwfV0sNjkzMDpbWzY5MjksNjk2NV1dLDY5NjQ6Wyw3XSw2OTcwOlssLHs2OTY1OjY5NzF9XSw2OTcxOltbNjk3MCw2OTY1XV0sNjk3MjpbLCx7Njk2NTo2OTczfV0sNjk3MzpbWzY5NzIsNjk2NV1dLDY5NzQ6WywsezY5NjU6Njk3Nn1dLDY5NzU6WywsezY5NjU6Njk3N31dLDY5NzY6W1s2OTc0LDY5NjVdXSw2OTc3OltbNjk3NSw2OTY1XV0sNjk3ODpbLCx7Njk2NTo2OTc5fV0sNjk3OTpbWzY5NzgsNjk2NV1dLDY5ODA6Wyw5XSw3MDE5OlssMjMwXSw3MDIwOlssMjIwXSw3MDIxOlssMjMwXSw3MDIyOlssMjMwXSw3MDIzOlssMjMwXSw3MDI0OlssMjMwXSw3MDI1OlssMjMwXSw3MDI2OlssMjMwXSw3MDI3OlssMjMwXSw3MDgyOlssOV0sNzA4MzpbLDldLDcxNDI6Wyw3XSw3MTU0OlssOV0sNzE1NTpbLDldfSxcbjcxNjg6ezcyMjM6Wyw3XSw3Mzc2OlssMjMwXSw3Mzc3OlssMjMwXSw3Mzc4OlssMjMwXSw3MzgwOlssMV0sNzM4MTpbLDIyMF0sNzM4MjpbLDIyMF0sNzM4MzpbLDIyMF0sNzM4NDpbLDIyMF0sNzM4NTpbLDIyMF0sNzM4NjpbLDIzMF0sNzM4NzpbLDIzMF0sNzM4ODpbLDIyMF0sNzM4OTpbLDIyMF0sNzM5MDpbLDIyMF0sNzM5MTpbLDIyMF0sNzM5MjpbLDIzMF0sNzM5NDpbLDFdLDczOTU6WywxXSw3Mzk2OlssMV0sNzM5NzpbLDFdLDczOTg6WywxXSw3Mzk5OlssMV0sNzQwMDpbLDFdLDc0MDU6WywyMjBdLDc0MTI6WywyMzBdLDc0MTY6WywyMzBdLDc0MTc6WywyMzBdfSxcbjc0MjQ6ezc0Njg6W1s2NV0sMjU2XSw3NDY5OltbMTk4XSwyNTZdLDc0NzA6W1s2Nl0sMjU2XSw3NDcyOltbNjhdLDI1Nl0sNzQ3MzpbWzY5XSwyNTZdLDc0NzQ6W1szOThdLDI1Nl0sNzQ3NTpbWzcxXSwyNTZdLDc0NzY6W1s3Ml0sMjU2XSw3NDc3OltbNzNdLDI1Nl0sNzQ3ODpbWzc0XSwyNTZdLDc0Nzk6W1s3NV0sMjU2XSw3NDgwOltbNzZdLDI1Nl0sNzQ4MTpbWzc3XSwyNTZdLDc0ODI6W1s3OF0sMjU2XSw3NDg0OltbNzldLDI1Nl0sNzQ4NTpbWzU0Nl0sMjU2XSw3NDg2OltbODBdLDI1Nl0sNzQ4NzpbWzgyXSwyNTZdLDc0ODg6W1s4NF0sMjU2XSw3NDg5OltbODVdLDI1Nl0sNzQ5MDpbWzg3XSwyNTZdLDc0OTE6W1s5N10sMjU2XSw3NDkyOltbNTkyXSwyNTZdLDc0OTM6W1s1OTNdLDI1Nl0sNzQ5NDpbWzc0MjZdLDI1Nl0sNzQ5NTpbWzk4XSwyNTZdLDc0OTY6W1sxMDBdLDI1Nl0sNzQ5NzpbWzEwMV0sMjU2XSw3NDk4OltbNjAxXSwyNTZdLDc0OTk6W1s2MDNdLDI1Nl0sNzUwMDpbWzYwNF0sMjU2XSw3NTAxOltbMTAzXSwyNTZdLDc1MDM6W1sxMDddLDI1Nl0sNzUwNDpbWzEwOV0sMjU2XSw3NTA1OltbMzMxXSwyNTZdLDc1MDY6W1sxMTFdLDI1Nl0sNzUwNzpbWzU5Nl0sMjU2XSw3NTA4OltbNzQ0Nl0sMjU2XSw3NTA5OltbNzQ0N10sMjU2XSw3NTEwOltbMTEyXSwyNTZdLDc1MTE6W1sxMTZdLDI1Nl0sNzUxMjpbWzExN10sMjU2XSw3NTEzOltbNzQ1M10sMjU2XSw3NTE0OltbNjIzXSwyNTZdLDc1MTU6W1sxMThdLDI1Nl0sNzUxNjpbWzc0NjFdLDI1Nl0sNzUxNzpbWzk0Nl0sMjU2XSw3NTE4OltbOTQ3XSwyNTZdLDc1MTk6W1s5NDhdLDI1Nl0sNzUyMDpbWzk2Nl0sMjU2XSw3NTIxOltbOTY3XSwyNTZdLDc1MjI6W1sxMDVdLDI1Nl0sNzUyMzpbWzExNF0sMjU2XSw3NTI0OltbMTE3XSwyNTZdLDc1MjU6W1sxMThdLDI1Nl0sNzUyNjpbWzk0Nl0sMjU2XSw3NTI3OltbOTQ3XSwyNTZdLDc1Mjg6W1s5NjFdLDI1Nl0sNzUyOTpbWzk2Nl0sMjU2XSw3NTMwOltbOTY3XSwyNTZdLDc1NDQ6W1sxMDg1XSwyNTZdLDc1Nzk6W1s1OTRdLDI1Nl0sNzU4MDpbWzk5XSwyNTZdLDc1ODE6W1s1OTddLDI1Nl0sNzU4MjpbWzI0MF0sMjU2XSw3NTgzOltbNjA0XSwyNTZdLDc1ODQ6W1sxMDJdLDI1Nl0sNzU4NTpbWzYwN10sMjU2XSw3NTg2OltbNjA5XSwyNTZdLDc1ODc6W1s2MTNdLDI1Nl0sNzU4ODpbWzYxNl0sMjU2XSw3NTg5OltbNjE3XSwyNTZdLDc1OTA6W1s2MThdLDI1Nl0sNzU5MTpbWzc1NDddLDI1Nl0sNzU5MjpbWzY2OV0sMjU2XSw3NTkzOltbNjIxXSwyNTZdLDc1OTQ6W1s3NTU3XSwyNTZdLDc1OTU6W1s2NzFdLDI1Nl0sNzU5NjpbWzYyNV0sMjU2XSw3NTk3OltbNjI0XSwyNTZdLDc1OTg6W1s2MjZdLDI1Nl0sNzU5OTpbWzYyN10sMjU2XSw3NjAwOltbNjI4XSwyNTZdLDc2MDE6W1s2MjldLDI1Nl0sNzYwMjpbWzYzMl0sMjU2XSw3NjAzOltbNjQyXSwyNTZdLDc2MDQ6W1s2NDNdLDI1Nl0sNzYwNTpbWzQyN10sMjU2XSw3NjA2OltbNjQ5XSwyNTZdLDc2MDc6W1s2NTBdLDI1Nl0sNzYwODpbWzc0NTJdLDI1Nl0sNzYwOTpbWzY1MV0sMjU2XSw3NjEwOltbNjUyXSwyNTZdLDc2MTE6W1sxMjJdLDI1Nl0sNzYxMjpbWzY1Nl0sMjU2XSw3NjEzOltbNjU3XSwyNTZdLDc2MTQ6W1s2NThdLDI1Nl0sNzYxNTpbWzk1Ml0sMjU2XSw3NjE2OlssMjMwXSw3NjE3OlssMjMwXSw3NjE4OlssMjIwXSw3NjE5OlssMjMwXSw3NjIwOlssMjMwXSw3NjIxOlssMjMwXSw3NjIyOlssMjMwXSw3NjIzOlssMjMwXSw3NjI0OlssMjMwXSw3NjI1OlssMjMwXSw3NjI2OlssMjIwXSw3NjI3OlssMjMwXSw3NjI4OlssMjMwXSw3NjI5OlssMjM0XSw3NjMwOlssMjE0XSw3NjMxOlssMjIwXSw3NjMyOlssMjAyXSw3NjMzOlssMjMwXSw3NjM0OlssMjMwXSw3NjM1OlssMjMwXSw3NjM2OlssMjMwXSw3NjM3OlssMjMwXSw3NjM4OlssMjMwXSw3NjM5OlssMjMwXSw3NjQwOlssMjMwXSw3NjQxOlssMjMwXSw3NjQyOlssMjMwXSw3NjQzOlssMjMwXSw3NjQ0OlssMjMwXSw3NjQ1OlssMjMwXSw3NjQ2OlssMjMwXSw3NjQ3OlssMjMwXSw3NjQ4OlssMjMwXSw3NjQ5OlssMjMwXSw3NjUwOlssMjMwXSw3NjUxOlssMjMwXSw3NjUyOlssMjMwXSw3NjUzOlssMjMwXSw3NjU0OlssMjMwXSw3NjU1OlssMjMwXSw3NjU2OlssMjMwXSw3NjU3OlssMjMwXSw3NjU4OlssMjMwXSw3NjU5OlssMjMwXSw3NjYwOlssMjMwXSw3NjYxOlssMjMwXSw3NjYyOlssMjMwXSw3NjYzOlssMjMwXSw3NjY0OlssMjMwXSw3NjY1OlssMjMwXSw3NjY2OlssMjMwXSw3NjY3OlssMjMwXSw3NjY4OlssMjMwXSw3NjY5OlssMjMwXSw3Njc2OlssMjMzXSw3Njc3OlssMjIwXSw3Njc4OlssMjMwXSw3Njc5OlssMjIwXX0sXG43NjgwOns3NjgwOltbNjUsODA1XV0sNzY4MTpbWzk3LDgwNV1dLDc2ODI6W1s2Niw3NzVdXSw3NjgzOltbOTgsNzc1XV0sNzY4NDpbWzY2LDgwM11dLDc2ODU6W1s5OCw4MDNdXSw3Njg2OltbNjYsODE3XV0sNzY4NzpbWzk4LDgxN11dLDc2ODg6W1sxOTksNzY5XV0sNzY4OTpbWzIzMSw3NjldXSw3NjkwOltbNjgsNzc1XV0sNzY5MTpbWzEwMCw3NzVdXSw3NjkyOltbNjgsODAzXV0sNzY5MzpbWzEwMCw4MDNdXSw3Njk0OltbNjgsODE3XV0sNzY5NTpbWzEwMCw4MTddXSw3Njk2OltbNjgsODA3XV0sNzY5NzpbWzEwMCw4MDddXSw3Njk4OltbNjgsODEzXV0sNzY5OTpbWzEwMCw4MTNdXSw3NzAwOltbMjc0LDc2OF1dLDc3MDE6W1syNzUsNzY4XV0sNzcwMjpbWzI3NCw3NjldXSw3NzAzOltbMjc1LDc2OV1dLDc3MDQ6W1s2OSw4MTNdXSw3NzA1OltbMTAxLDgxM11dLDc3MDY6W1s2OSw4MTZdXSw3NzA3OltbMTAxLDgxNl1dLDc3MDg6W1s1NTIsNzc0XV0sNzcwOTpbWzU1Myw3NzRdXSw3NzEwOltbNzAsNzc1XV0sNzcxMTpbWzEwMiw3NzVdXSw3NzEyOltbNzEsNzcyXV0sNzcxMzpbWzEwMyw3NzJdXSw3NzE0OltbNzIsNzc1XV0sNzcxNTpbWzEwNCw3NzVdXSw3NzE2OltbNzIsODAzXV0sNzcxNzpbWzEwNCw4MDNdXSw3NzE4OltbNzIsNzc2XV0sNzcxOTpbWzEwNCw3NzZdXSw3NzIwOltbNzIsODA3XV0sNzcyMTpbWzEwNCw4MDddXSw3NzIyOltbNzIsODE0XV0sNzcyMzpbWzEwNCw4MTRdXSw3NzI0OltbNzMsODE2XV0sNzcyNTpbWzEwNSw4MTZdXSw3NzI2OltbMjA3LDc2OV1dLDc3Mjc6W1syMzksNzY5XV0sNzcyODpbWzc1LDc2OV1dLDc3Mjk6W1sxMDcsNzY5XV0sNzczMDpbWzc1LDgwM11dLDc3MzE6W1sxMDcsODAzXV0sNzczMjpbWzc1LDgxN11dLDc3MzM6W1sxMDcsODE3XV0sNzczNDpbWzc2LDgwM10sLHs3NzI6NzczNn1dLDc3MzU6W1sxMDgsODAzXSwsezc3Mjo3NzM3fV0sNzczNjpbWzc3MzQsNzcyXV0sNzczNzpbWzc3MzUsNzcyXV0sNzczODpbWzc2LDgxN11dLDc3Mzk6W1sxMDgsODE3XV0sNzc0MDpbWzc2LDgxM11dLDc3NDE6W1sxMDgsODEzXV0sNzc0MjpbWzc3LDc2OV1dLDc3NDM6W1sxMDksNzY5XV0sNzc0NDpbWzc3LDc3NV1dLDc3NDU6W1sxMDksNzc1XV0sNzc0NjpbWzc3LDgwM11dLDc3NDc6W1sxMDksODAzXV0sNzc0ODpbWzc4LDc3NV1dLDc3NDk6W1sxMTAsNzc1XV0sNzc1MDpbWzc4LDgwM11dLDc3NTE6W1sxMTAsODAzXV0sNzc1MjpbWzc4LDgxN11dLDc3NTM6W1sxMTAsODE3XV0sNzc1NDpbWzc4LDgxM11dLDc3NTU6W1sxMTAsODEzXV0sNzc1NjpbWzIxMyw3NjldXSw3NzU3OltbMjQ1LDc2OV1dLDc3NTg6W1syMTMsNzc2XV0sNzc1OTpbWzI0NSw3NzZdXSw3NzYwOltbMzMyLDc2OF1dLDc3NjE6W1szMzMsNzY4XV0sNzc2MjpbWzMzMiw3NjldXSw3NzYzOltbMzMzLDc2OV1dLDc3NjQ6W1s4MCw3NjldXSw3NzY1OltbMTEyLDc2OV1dLDc3NjY6W1s4MCw3NzVdXSw3NzY3OltbMTEyLDc3NV1dLDc3Njg6W1s4Miw3NzVdXSw3NzY5OltbMTE0LDc3NV1dLDc3NzA6W1s4Miw4MDNdLCx7NzcyOjc3NzJ9XSw3NzcxOltbMTE0LDgwM10sLHs3NzI6Nzc3M31dLDc3NzI6W1s3NzcwLDc3Ml1dLDc3NzM6W1s3NzcxLDc3Ml1dLDc3NzQ6W1s4Miw4MTddXSw3Nzc1OltbMTE0LDgxN11dLDc3NzY6W1s4Myw3NzVdXSw3Nzc3OltbMTE1LDc3NV1dLDc3Nzg6W1s4Myw4MDNdLCx7Nzc1Ojc3ODR9XSw3Nzc5OltbMTE1LDgwM10sLHs3NzU6Nzc4NX1dLDc3ODA6W1szNDYsNzc1XV0sNzc4MTpbWzM0Nyw3NzVdXSw3NzgyOltbMzUyLDc3NV1dLDc3ODM6W1szNTMsNzc1XV0sNzc4NDpbWzc3NzgsNzc1XV0sNzc4NTpbWzc3NzksNzc1XV0sNzc4NjpbWzg0LDc3NV1dLDc3ODc6W1sxMTYsNzc1XV0sNzc4ODpbWzg0LDgwM11dLDc3ODk6W1sxMTYsODAzXV0sNzc5MDpbWzg0LDgxN11dLDc3OTE6W1sxMTYsODE3XV0sNzc5MjpbWzg0LDgxM11dLDc3OTM6W1sxMTYsODEzXV0sNzc5NDpbWzg1LDgwNF1dLDc3OTU6W1sxMTcsODA0XV0sNzc5NjpbWzg1LDgxNl1dLDc3OTc6W1sxMTcsODE2XV0sNzc5ODpbWzg1LDgxM11dLDc3OTk6W1sxMTcsODEzXV0sNzgwMDpbWzM2MCw3NjldXSw3ODAxOltbMzYxLDc2OV1dLDc4MDI6W1szNjIsNzc2XV0sNzgwMzpbWzM2Myw3NzZdXSw3ODA0OltbODYsNzcxXV0sNzgwNTpbWzExOCw3NzFdXSw3ODA2OltbODYsODAzXV0sNzgwNzpbWzExOCw4MDNdXSw3ODA4OltbODcsNzY4XV0sNzgwOTpbWzExOSw3NjhdXSw3ODEwOltbODcsNzY5XV0sNzgxMTpbWzExOSw3NjldXSw3ODEyOltbODcsNzc2XV0sNzgxMzpbWzExOSw3NzZdXSw3ODE0OltbODcsNzc1XV0sNzgxNTpbWzExOSw3NzVdXSw3ODE2OltbODcsODAzXV0sNzgxNzpbWzExOSw4MDNdXSw3ODE4OltbODgsNzc1XV0sNzgxOTpbWzEyMCw3NzVdXSw3ODIwOltbODgsNzc2XV0sNzgyMTpbWzEyMCw3NzZdXSw3ODIyOltbODksNzc1XV0sNzgyMzpbWzEyMSw3NzVdXSw3ODI0OltbOTAsNzcwXV0sNzgyNTpbWzEyMiw3NzBdXSw3ODI2OltbOTAsODAzXV0sNzgyNzpbWzEyMiw4MDNdXSw3ODI4OltbOTAsODE3XV0sNzgyOTpbWzEyMiw4MTddXSw3ODMwOltbMTA0LDgxN11dLDc4MzE6W1sxMTYsNzc2XV0sNzgzMjpbWzExOSw3NzhdXSw3ODMzOltbMTIxLDc3OF1dLDc4MzQ6W1s5Nyw3MDJdLDI1Nl0sNzgzNTpbWzM4Myw3NzVdXSw3ODQwOltbNjUsODAzXSwsezc3MDo3ODUyLDc3NDo3ODYyfV0sNzg0MTpbWzk3LDgwM10sLHs3NzA6Nzg1Myw3NzQ6Nzg2M31dLDc4NDI6W1s2NSw3NzddXSw3ODQzOltbOTcsNzc3XV0sNzg0NDpbWzE5NCw3NjldXSw3ODQ1OltbMjI2LDc2OV1dLDc4NDY6W1sxOTQsNzY4XV0sNzg0NzpbWzIyNiw3NjhdXSw3ODQ4OltbMTk0LDc3N11dLDc4NDk6W1syMjYsNzc3XV0sNzg1MDpbWzE5NCw3NzFdXSw3ODUxOltbMjI2LDc3MV1dLDc4NTI6W1s3ODQwLDc3MF1dLDc4NTM6W1s3ODQxLDc3MF1dLDc4NTQ6W1syNTgsNzY5XV0sNzg1NTpbWzI1OSw3NjldXSw3ODU2OltbMjU4LDc2OF1dLDc4NTc6W1syNTksNzY4XV0sNzg1ODpbWzI1OCw3NzddXSw3ODU5OltbMjU5LDc3N11dLDc4NjA6W1syNTgsNzcxXV0sNzg2MTpbWzI1OSw3NzFdXSw3ODYyOltbNzg0MCw3NzRdXSw3ODYzOltbNzg0MSw3NzRdXSw3ODY0OltbNjksODAzXSwsezc3MDo3ODc4fV0sNzg2NTpbWzEwMSw4MDNdLCx7NzcwOjc4Nzl9XSw3ODY2OltbNjksNzc3XV0sNzg2NzpbWzEwMSw3NzddXSw3ODY4OltbNjksNzcxXV0sNzg2OTpbWzEwMSw3NzFdXSw3ODcwOltbMjAyLDc2OV1dLDc4NzE6W1syMzQsNzY5XV0sNzg3MjpbWzIwMiw3NjhdXSw3ODczOltbMjM0LDc2OF1dLDc4NzQ6W1syMDIsNzc3XV0sNzg3NTpbWzIzNCw3NzddXSw3ODc2OltbMjAyLDc3MV1dLDc4Nzc6W1syMzQsNzcxXV0sNzg3ODpbWzc4NjQsNzcwXV0sNzg3OTpbWzc4NjUsNzcwXV0sNzg4MDpbWzczLDc3N11dLDc4ODE6W1sxMDUsNzc3XV0sNzg4MjpbWzczLDgwM11dLDc4ODM6W1sxMDUsODAzXV0sNzg4NDpbWzc5LDgwM10sLHs3NzA6Nzg5Nn1dLDc4ODU6W1sxMTEsODAzXSwsezc3MDo3ODk3fV0sNzg4NjpbWzc5LDc3N11dLDc4ODc6W1sxMTEsNzc3XV0sNzg4ODpbWzIxMiw3NjldXSw3ODg5OltbMjQ0LDc2OV1dLDc4OTA6W1syMTIsNzY4XV0sNzg5MTpbWzI0NCw3NjhdXSw3ODkyOltbMjEyLDc3N11dLDc4OTM6W1syNDQsNzc3XV0sNzg5NDpbWzIxMiw3NzFdXSw3ODk1OltbMjQ0LDc3MV1dLDc4OTY6W1s3ODg0LDc3MF1dLDc4OTc6W1s3ODg1LDc3MF1dLDc4OTg6W1s0MTYsNzY5XV0sNzg5OTpbWzQxNyw3NjldXSw3OTAwOltbNDE2LDc2OF1dLDc5MDE6W1s0MTcsNzY4XV0sNzkwMjpbWzQxNiw3NzddXSw3OTAzOltbNDE3LDc3N11dLDc5MDQ6W1s0MTYsNzcxXV0sNzkwNTpbWzQxNyw3NzFdXSw3OTA2OltbNDE2LDgwM11dLDc5MDc6W1s0MTcsODAzXV0sNzkwODpbWzg1LDgwM11dLDc5MDk6W1sxMTcsODAzXV0sNzkxMDpbWzg1LDc3N11dLDc5MTE6W1sxMTcsNzc3XV0sNzkxMjpbWzQzMSw3NjldXSw3OTEzOltbNDMyLDc2OV1dLDc5MTQ6W1s0MzEsNzY4XV0sNzkxNTpbWzQzMiw3NjhdXSw3OTE2OltbNDMxLDc3N11dLDc5MTc6W1s0MzIsNzc3XV0sNzkxODpbWzQzMSw3NzFdXSw3OTE5OltbNDMyLDc3MV1dLDc5MjA6W1s0MzEsODAzXV0sNzkyMTpbWzQzMiw4MDNdXSw3OTIyOltbODksNzY4XV0sNzkyMzpbWzEyMSw3NjhdXSw3OTI0OltbODksODAzXV0sNzkyNTpbWzEyMSw4MDNdXSw3OTI2OltbODksNzc3XV0sNzkyNzpbWzEyMSw3NzddXSw3OTI4OltbODksNzcxXV0sNzkyOTpbWzEyMSw3NzFdXX0sXG43OTM2Ons3OTM2OltbOTQ1LDc4N10sLHs3Njg6NzkzOCw3Njk6Nzk0MCw4MzQ6Nzk0Miw4Mzc6ODA2NH1dLDc5Mzc6W1s5NDUsNzg4XSwsezc2ODo3OTM5LDc2OTo3OTQxLDgzNDo3OTQzLDgzNzo4MDY1fV0sNzkzODpbWzc5MzYsNzY4XSwsezgzNzo4MDY2fV0sNzkzOTpbWzc5MzcsNzY4XSwsezgzNzo4MDY3fV0sNzk0MDpbWzc5MzYsNzY5XSwsezgzNzo4MDY4fV0sNzk0MTpbWzc5MzcsNzY5XSwsezgzNzo4MDY5fV0sNzk0MjpbWzc5MzYsODM0XSwsezgzNzo4MDcwfV0sNzk0MzpbWzc5MzcsODM0XSwsezgzNzo4MDcxfV0sNzk0NDpbWzkxMyw3ODddLCx7NzY4Ojc5NDYsNzY5Ojc5NDgsODM0Ojc5NTAsODM3OjgwNzJ9XSw3OTQ1OltbOTEzLDc4OF0sLHs3Njg6Nzk0Nyw3Njk6Nzk0OSw4MzQ6Nzk1MSw4Mzc6ODA3M31dLDc5NDY6W1s3OTQ0LDc2OF0sLHs4Mzc6ODA3NH1dLDc5NDc6W1s3OTQ1LDc2OF0sLHs4Mzc6ODA3NX1dLDc5NDg6W1s3OTQ0LDc2OV0sLHs4Mzc6ODA3Nn1dLDc5NDk6W1s3OTQ1LDc2OV0sLHs4Mzc6ODA3N31dLDc5NTA6W1s3OTQ0LDgzNF0sLHs4Mzc6ODA3OH1dLDc5NTE6W1s3OTQ1LDgzNF0sLHs4Mzc6ODA3OX1dLDc5NTI6W1s5NDksNzg3XSwsezc2ODo3OTU0LDc2OTo3OTU2fV0sNzk1MzpbWzk0OSw3ODhdLCx7NzY4Ojc5NTUsNzY5Ojc5NTd9XSw3OTU0OltbNzk1Miw3NjhdXSw3OTU1OltbNzk1Myw3NjhdXSw3OTU2OltbNzk1Miw3NjldXSw3OTU3OltbNzk1Myw3NjldXSw3OTYwOltbOTE3LDc4N10sLHs3Njg6Nzk2Miw3Njk6Nzk2NH1dLDc5NjE6W1s5MTcsNzg4XSwsezc2ODo3OTYzLDc2OTo3OTY1fV0sNzk2MjpbWzc5NjAsNzY4XV0sNzk2MzpbWzc5NjEsNzY4XV0sNzk2NDpbWzc5NjAsNzY5XV0sNzk2NTpbWzc5NjEsNzY5XV0sNzk2ODpbWzk1MSw3ODddLCx7NzY4Ojc5NzAsNzY5Ojc5NzIsODM0Ojc5NzQsODM3OjgwODB9XSw3OTY5OltbOTUxLDc4OF0sLHs3Njg6Nzk3MSw3Njk6Nzk3Myw4MzQ6Nzk3NSw4Mzc6ODA4MX1dLDc5NzA6W1s3OTY4LDc2OF0sLHs4Mzc6ODA4Mn1dLDc5NzE6W1s3OTY5LDc2OF0sLHs4Mzc6ODA4M31dLDc5NzI6W1s3OTY4LDc2OV0sLHs4Mzc6ODA4NH1dLDc5NzM6W1s3OTY5LDc2OV0sLHs4Mzc6ODA4NX1dLDc5NzQ6W1s3OTY4LDgzNF0sLHs4Mzc6ODA4Nn1dLDc5NzU6W1s3OTY5LDgzNF0sLHs4Mzc6ODA4N31dLDc5NzY6W1s5MTksNzg3XSwsezc2ODo3OTc4LDc2OTo3OTgwLDgzNDo3OTgyLDgzNzo4MDg4fV0sNzk3NzpbWzkxOSw3ODhdLCx7NzY4Ojc5NzksNzY5Ojc5ODEsODM0Ojc5ODMsODM3OjgwODl9XSw3OTc4OltbNzk3Niw3NjhdLCx7ODM3OjgwOTB9XSw3OTc5OltbNzk3Nyw3NjhdLCx7ODM3OjgwOTF9XSw3OTgwOltbNzk3Niw3NjldLCx7ODM3OjgwOTJ9XSw3OTgxOltbNzk3Nyw3NjldLCx7ODM3OjgwOTN9XSw3OTgyOltbNzk3Niw4MzRdLCx7ODM3OjgwOTR9XSw3OTgzOltbNzk3Nyw4MzRdLCx7ODM3OjgwOTV9XSw3OTg0OltbOTUzLDc4N10sLHs3Njg6Nzk4Niw3Njk6Nzk4OCw4MzQ6Nzk5MH1dLDc5ODU6W1s5NTMsNzg4XSwsezc2ODo3OTg3LDc2OTo3OTg5LDgzNDo3OTkxfV0sNzk4NjpbWzc5ODQsNzY4XV0sNzk4NzpbWzc5ODUsNzY4XV0sNzk4ODpbWzc5ODQsNzY5XV0sNzk4OTpbWzc5ODUsNzY5XV0sNzk5MDpbWzc5ODQsODM0XV0sNzk5MTpbWzc5ODUsODM0XV0sNzk5MjpbWzkyMSw3ODddLCx7NzY4Ojc5OTQsNzY5Ojc5OTYsODM0Ojc5OTh9XSw3OTkzOltbOTIxLDc4OF0sLHs3Njg6Nzk5NSw3Njk6Nzk5Nyw4MzQ6Nzk5OX1dLDc5OTQ6W1s3OTkyLDc2OF1dLDc5OTU6W1s3OTkzLDc2OF1dLDc5OTY6W1s3OTkyLDc2OV1dLDc5OTc6W1s3OTkzLDc2OV1dLDc5OTg6W1s3OTkyLDgzNF1dLDc5OTk6W1s3OTkzLDgzNF1dLDgwMDA6W1s5NTksNzg3XSwsezc2ODo4MDAyLDc2OTo4MDA0fV0sODAwMTpbWzk1OSw3ODhdLCx7NzY4OjgwMDMsNzY5OjgwMDV9XSw4MDAyOltbODAwMCw3NjhdXSw4MDAzOltbODAwMSw3NjhdXSw4MDA0OltbODAwMCw3NjldXSw4MDA1OltbODAwMSw3NjldXSw4MDA4OltbOTI3LDc4N10sLHs3Njg6ODAxMCw3Njk6ODAxMn1dLDgwMDk6W1s5MjcsNzg4XSwsezc2ODo4MDExLDc2OTo4MDEzfV0sODAxMDpbWzgwMDgsNzY4XV0sODAxMTpbWzgwMDksNzY4XV0sODAxMjpbWzgwMDgsNzY5XV0sODAxMzpbWzgwMDksNzY5XV0sODAxNjpbWzk2NSw3ODddLCx7NzY4OjgwMTgsNzY5OjgwMjAsODM0OjgwMjJ9XSw4MDE3OltbOTY1LDc4OF0sLHs3Njg6ODAxOSw3Njk6ODAyMSw4MzQ6ODAyM31dLDgwMTg6W1s4MDE2LDc2OF1dLDgwMTk6W1s4MDE3LDc2OF1dLDgwMjA6W1s4MDE2LDc2OV1dLDgwMjE6W1s4MDE3LDc2OV1dLDgwMjI6W1s4MDE2LDgzNF1dLDgwMjM6W1s4MDE3LDgzNF1dLDgwMjU6W1s5MzMsNzg4XSwsezc2ODo4MDI3LDc2OTo4MDI5LDgzNDo4MDMxfV0sODAyNzpbWzgwMjUsNzY4XV0sODAyOTpbWzgwMjUsNzY5XV0sODAzMTpbWzgwMjUsODM0XV0sODAzMjpbWzk2OSw3ODddLCx7NzY4OjgwMzQsNzY5OjgwMzYsODM0OjgwMzgsODM3OjgwOTZ9XSw4MDMzOltbOTY5LDc4OF0sLHs3Njg6ODAzNSw3Njk6ODAzNyw4MzQ6ODAzOSw4Mzc6ODA5N31dLDgwMzQ6W1s4MDMyLDc2OF0sLHs4Mzc6ODA5OH1dLDgwMzU6W1s4MDMzLDc2OF0sLHs4Mzc6ODA5OX1dLDgwMzY6W1s4MDMyLDc2OV0sLHs4Mzc6ODEwMH1dLDgwMzc6W1s4MDMzLDc2OV0sLHs4Mzc6ODEwMX1dLDgwMzg6W1s4MDMyLDgzNF0sLHs4Mzc6ODEwMn1dLDgwMzk6W1s4MDMzLDgzNF0sLHs4Mzc6ODEwM31dLDgwNDA6W1s5MzcsNzg3XSwsezc2ODo4MDQyLDc2OTo4MDQ0LDgzNDo4MDQ2LDgzNzo4MTA0fV0sODA0MTpbWzkzNyw3ODhdLCx7NzY4OjgwNDMsNzY5OjgwNDUsODM0OjgwNDcsODM3OjgxMDV9XSw4MDQyOltbODA0MCw3NjhdLCx7ODM3OjgxMDZ9XSw4MDQzOltbODA0MSw3NjhdLCx7ODM3OjgxMDd9XSw4MDQ0OltbODA0MCw3NjldLCx7ODM3OjgxMDh9XSw4MDQ1OltbODA0MSw3NjldLCx7ODM3OjgxMDl9XSw4MDQ2OltbODA0MCw4MzRdLCx7ODM3OjgxMTB9XSw4MDQ3OltbODA0MSw4MzRdLCx7ODM3OjgxMTF9XSw4MDQ4OltbOTQ1LDc2OF0sLHs4Mzc6ODExNH1dLDgwNDk6W1s5NDBdXSw4MDUwOltbOTQ5LDc2OF1dLDgwNTE6W1s5NDFdXSw4MDUyOltbOTUxLDc2OF0sLHs4Mzc6ODEzMH1dLDgwNTM6W1s5NDJdXSw4MDU0OltbOTUzLDc2OF1dLDgwNTU6W1s5NDNdXSw4MDU2OltbOTU5LDc2OF1dLDgwNTc6W1s5NzJdXSw4MDU4OltbOTY1LDc2OF1dLDgwNTk6W1s5NzNdXSw4MDYwOltbOTY5LDc2OF0sLHs4Mzc6ODE3OH1dLDgwNjE6W1s5NzRdXSw4MDY0OltbNzkzNiw4MzddXSw4MDY1OltbNzkzNyw4MzddXSw4MDY2OltbNzkzOCw4MzddXSw4MDY3OltbNzkzOSw4MzddXSw4MDY4OltbNzk0MCw4MzddXSw4MDY5OltbNzk0MSw4MzddXSw4MDcwOltbNzk0Miw4MzddXSw4MDcxOltbNzk0Myw4MzddXSw4MDcyOltbNzk0NCw4MzddXSw4MDczOltbNzk0NSw4MzddXSw4MDc0OltbNzk0Niw4MzddXSw4MDc1OltbNzk0Nyw4MzddXSw4MDc2OltbNzk0OCw4MzddXSw4MDc3OltbNzk0OSw4MzddXSw4MDc4OltbNzk1MCw4MzddXSw4MDc5OltbNzk1MSw4MzddXSw4MDgwOltbNzk2OCw4MzddXSw4MDgxOltbNzk2OSw4MzddXSw4MDgyOltbNzk3MCw4MzddXSw4MDgzOltbNzk3MSw4MzddXSw4MDg0OltbNzk3Miw4MzddXSw4MDg1OltbNzk3Myw4MzddXSw4MDg2OltbNzk3NCw4MzddXSw4MDg3OltbNzk3NSw4MzddXSw4MDg4OltbNzk3Niw4MzddXSw4MDg5OltbNzk3Nyw4MzddXSw4MDkwOltbNzk3OCw4MzddXSw4MDkxOltbNzk3OSw4MzddXSw4MDkyOltbNzk4MCw4MzddXSw4MDkzOltbNzk4MSw4MzddXSw4MDk0OltbNzk4Miw4MzddXSw4MDk1OltbNzk4Myw4MzddXSw4MDk2OltbODAzMiw4MzddXSw4MDk3OltbODAzMyw4MzddXSw4MDk4OltbODAzNCw4MzddXSw4MDk5OltbODAzNSw4MzddXSw4MTAwOltbODAzNiw4MzddXSw4MTAxOltbODAzNyw4MzddXSw4MTAyOltbODAzOCw4MzddXSw4MTAzOltbODAzOSw4MzddXSw4MTA0OltbODA0MCw4MzddXSw4MTA1OltbODA0MSw4MzddXSw4MTA2OltbODA0Miw4MzddXSw4MTA3OltbODA0Myw4MzddXSw4MTA4OltbODA0NCw4MzddXSw4MTA5OltbODA0NSw4MzddXSw4MTEwOltbODA0Niw4MzddXSw4MTExOltbODA0Nyw4MzddXSw4MTEyOltbOTQ1LDc3NF1dLDgxMTM6W1s5NDUsNzcyXV0sODExNDpbWzgwNDgsODM3XV0sODExNTpbWzk0NSw4MzddXSw4MTE2OltbOTQwLDgzN11dLDgxMTg6W1s5NDUsODM0XSwsezgzNzo4MTE5fV0sODExOTpbWzgxMTgsODM3XV0sODEyMDpbWzkxMyw3NzRdXSw4MTIxOltbOTEzLDc3Ml1dLDgxMjI6W1s5MTMsNzY4XV0sODEyMzpbWzkwMl1dLDgxMjQ6W1s5MTMsODM3XV0sODEyNTpbWzMyLDc4N10sMjU2XSw4MTI2OltbOTUzXV0sODEyNzpbWzMyLDc4N10sMjU2LHs3Njg6ODE0MSw3Njk6ODE0Miw4MzQ6ODE0M31dLDgxMjg6W1szMiw4MzRdLDI1Nl0sODEyOTpbWzE2OCw4MzRdXSw4MTMwOltbODA1Miw4MzddXSw4MTMxOltbOTUxLDgzN11dLDgxMzI6W1s5NDIsODM3XV0sODEzNDpbWzk1MSw4MzRdLCx7ODM3OjgxMzV9XSw4MTM1OltbODEzNCw4MzddXSw4MTM2OltbOTE3LDc2OF1dLDgxMzc6W1s5MDRdXSw4MTM4OltbOTE5LDc2OF1dLDgxMzk6W1s5MDVdXSw4MTQwOltbOTE5LDgzN11dLDgxNDE6W1s4MTI3LDc2OF1dLDgxNDI6W1s4MTI3LDc2OV1dLDgxNDM6W1s4MTI3LDgzNF1dLDgxNDQ6W1s5NTMsNzc0XV0sODE0NTpbWzk1Myw3NzJdXSw4MTQ2OltbOTcwLDc2OF1dLDgxNDc6W1s5MTJdXSw4MTUwOltbOTUzLDgzNF1dLDgxNTE6W1s5NzAsODM0XV0sODE1MjpbWzkyMSw3NzRdXSw4MTUzOltbOTIxLDc3Ml1dLDgxNTQ6W1s5MjEsNzY4XV0sODE1NTpbWzkwNl1dLDgxNTc6W1s4MTkwLDc2OF1dLDgxNTg6W1s4MTkwLDc2OV1dLDgxNTk6W1s4MTkwLDgzNF1dLDgxNjA6W1s5NjUsNzc0XV0sODE2MTpbWzk2NSw3NzJdXSw4MTYyOltbOTcxLDc2OF1dLDgxNjM6W1s5NDRdXSw4MTY0OltbOTYxLDc4N11dLDgxNjU6W1s5NjEsNzg4XV0sODE2NjpbWzk2NSw4MzRdXSw4MTY3OltbOTcxLDgzNF1dLDgxNjg6W1s5MzMsNzc0XV0sODE2OTpbWzkzMyw3NzJdXSw4MTcwOltbOTMzLDc2OF1dLDgxNzE6W1s5MTBdXSw4MTcyOltbOTI5LDc4OF1dLDgxNzM6W1sxNjgsNzY4XV0sODE3NDpbWzkwMV1dLDgxNzU6W1s5Nl1dLDgxNzg6W1s4MDYwLDgzN11dLDgxNzk6W1s5NjksODM3XV0sODE4MDpbWzk3NCw4MzddXSw4MTgyOltbOTY5LDgzNF0sLHs4Mzc6ODE4M31dLDgxODM6W1s4MTgyLDgzN11dLDgxODQ6W1s5MjcsNzY4XV0sODE4NTpbWzkwOF1dLDgxODY6W1s5MzcsNzY4XV0sODE4NzpbWzkxMV1dLDgxODg6W1s5MzcsODM3XV0sODE4OTpbWzE4MF1dLDgxOTA6W1szMiw3ODhdLDI1Nix7NzY4OjgxNTcsNzY5OjgxNTgsODM0OjgxNTl9XX0sXG44MTkyOns4MTkyOltbODE5NF1dLDgxOTM6W1s4MTk1XV0sODE5NDpbWzMyXSwyNTZdLDgxOTU6W1szMl0sMjU2XSw4MTk2OltbMzJdLDI1Nl0sODE5NzpbWzMyXSwyNTZdLDgxOTg6W1szMl0sMjU2XSw4MTk5OltbMzJdLDI1Nl0sODIwMDpbWzMyXSwyNTZdLDgyMDE6W1szMl0sMjU2XSw4MjAyOltbMzJdLDI1Nl0sODIwOTpbWzgyMDhdLDI1Nl0sODIxNTpbWzMyLDgxOV0sMjU2XSw4MjI4OltbNDZdLDI1Nl0sODIyOTpbWzQ2LDQ2XSwyNTZdLDgyMzA6W1s0Niw0Niw0Nl0sMjU2XSw4MjM5OltbMzJdLDI1Nl0sODI0MzpbWzgyNDIsODI0Ml0sMjU2XSw4MjQ0OltbODI0Miw4MjQyLDgyNDJdLDI1Nl0sODI0NjpbWzgyNDUsODI0NV0sMjU2XSw4MjQ3OltbODI0NSw4MjQ1LDgyNDVdLDI1Nl0sODI1MjpbWzMzLDMzXSwyNTZdLDgyNTQ6W1szMiw3NzNdLDI1Nl0sODI2MzpbWzYzLDYzXSwyNTZdLDgyNjQ6W1s2MywzM10sMjU2XSw4MjY1OltbMzMsNjNdLDI1Nl0sODI3OTpbWzgyNDIsODI0Miw4MjQyLDgyNDJdLDI1Nl0sODI4NzpbWzMyXSwyNTZdLDgzMDQ6W1s0OF0sMjU2XSw4MzA1OltbMTA1XSwyNTZdLDgzMDg6W1s1Ml0sMjU2XSw4MzA5OltbNTNdLDI1Nl0sODMxMDpbWzU0XSwyNTZdLDgzMTE6W1s1NV0sMjU2XSw4MzEyOltbNTZdLDI1Nl0sODMxMzpbWzU3XSwyNTZdLDgzMTQ6W1s0M10sMjU2XSw4MzE1OltbODcyMl0sMjU2XSw4MzE2OltbNjFdLDI1Nl0sODMxNzpbWzQwXSwyNTZdLDgzMTg6W1s0MV0sMjU2XSw4MzE5OltbMTEwXSwyNTZdLDgzMjA6W1s0OF0sMjU2XSw4MzIxOltbNDldLDI1Nl0sODMyMjpbWzUwXSwyNTZdLDgzMjM6W1s1MV0sMjU2XSw4MzI0OltbNTJdLDI1Nl0sODMyNTpbWzUzXSwyNTZdLDgzMjY6W1s1NF0sMjU2XSw4MzI3OltbNTVdLDI1Nl0sODMyODpbWzU2XSwyNTZdLDgzMjk6W1s1N10sMjU2XSw4MzMwOltbNDNdLDI1Nl0sODMzMTpbWzg3MjJdLDI1Nl0sODMzMjpbWzYxXSwyNTZdLDgzMzM6W1s0MF0sMjU2XSw4MzM0OltbNDFdLDI1Nl0sODMzNjpbWzk3XSwyNTZdLDgzMzc6W1sxMDFdLDI1Nl0sODMzODpbWzExMV0sMjU2XSw4MzM5OltbMTIwXSwyNTZdLDgzNDA6W1s2MDFdLDI1Nl0sODM0MTpbWzEwNF0sMjU2XSw4MzQyOltbMTA3XSwyNTZdLDgzNDM6W1sxMDhdLDI1Nl0sODM0NDpbWzEwOV0sMjU2XSw4MzQ1OltbMTEwXSwyNTZdLDgzNDY6W1sxMTJdLDI1Nl0sODM0NzpbWzExNV0sMjU2XSw4MzQ4OltbMTE2XSwyNTZdLDgzNjA6W1s4MiwxMTVdLDI1Nl0sODQwMDpbLDIzMF0sODQwMTpbLDIzMF0sODQwMjpbLDFdLDg0MDM6WywxXSw4NDA0OlssMjMwXSw4NDA1OlssMjMwXSw4NDA2OlssMjMwXSw4NDA3OlssMjMwXSw4NDA4OlssMV0sODQwOTpbLDFdLDg0MTA6WywxXSw4NDExOlssMjMwXSw4NDEyOlssMjMwXSw4NDE3OlssMjMwXSw4NDIxOlssMV0sODQyMjpbLDFdLDg0MjM6WywyMzBdLDg0MjQ6WywyMjBdLDg0MjU6WywyMzBdLDg0MjY6WywxXSw4NDI3OlssMV0sODQyODpbLDIyMF0sODQyOTpbLDIyMF0sODQzMDpbLDIyMF0sODQzMTpbLDIyMF0sODQzMjpbLDIzMF19LFxuODQ0ODp7ODQ0ODpbWzk3LDQ3LDk5XSwyNTZdLDg0NDk6W1s5Nyw0NywxMTVdLDI1Nl0sODQ1MDpbWzY3XSwyNTZdLDg0NTE6W1sxNzYsNjddLDI1Nl0sODQ1MzpbWzk5LDQ3LDExMV0sMjU2XSw4NDU0OltbOTksNDcsMTE3XSwyNTZdLDg0NTU6W1s0MDBdLDI1Nl0sODQ1NzpbWzE3Niw3MF0sMjU2XSw4NDU4OltbMTAzXSwyNTZdLDg0NTk6W1s3Ml0sMjU2XSw4NDYwOltbNzJdLDI1Nl0sODQ2MTpbWzcyXSwyNTZdLDg0NjI6W1sxMDRdLDI1Nl0sODQ2MzpbWzI5NV0sMjU2XSw4NDY0OltbNzNdLDI1Nl0sODQ2NTpbWzczXSwyNTZdLDg0NjY6W1s3Nl0sMjU2XSw4NDY3OltbMTA4XSwyNTZdLDg0Njk6W1s3OF0sMjU2XSw4NDcwOltbNzgsMTExXSwyNTZdLDg0NzM6W1s4MF0sMjU2XSw4NDc0OltbODFdLDI1Nl0sODQ3NTpbWzgyXSwyNTZdLDg0NzY6W1s4Ml0sMjU2XSw4NDc3OltbODJdLDI1Nl0sODQ4MDpbWzgzLDc3XSwyNTZdLDg0ODE6W1s4NCw2OSw3Nl0sMjU2XSw4NDgyOltbODQsNzddLDI1Nl0sODQ4NDpbWzkwXSwyNTZdLDg0ODY6W1s5MzddXSw4NDg4OltbOTBdLDI1Nl0sODQ5MDpbWzc1XV0sODQ5MTpbWzE5N11dLDg0OTI6W1s2Nl0sMjU2XSw4NDkzOltbNjddLDI1Nl0sODQ5NTpbWzEwMV0sMjU2XSw4NDk2OltbNjldLDI1Nl0sODQ5NzpbWzcwXSwyNTZdLDg0OTk6W1s3N10sMjU2XSw4NTAwOltbMTExXSwyNTZdLDg1MDE6W1sxNDg4XSwyNTZdLDg1MDI6W1sxNDg5XSwyNTZdLDg1MDM6W1sxNDkwXSwyNTZdLDg1MDQ6W1sxNDkxXSwyNTZdLDg1MDU6W1sxMDVdLDI1Nl0sODUwNzpbWzcwLDY1LDg4XSwyNTZdLDg1MDg6W1s5NjBdLDI1Nl0sODUwOTpbWzk0N10sMjU2XSw4NTEwOltbOTE1XSwyNTZdLDg1MTE6W1s5MjhdLDI1Nl0sODUxMjpbWzg3MjFdLDI1Nl0sODUxNzpbWzY4XSwyNTZdLDg1MTg6W1sxMDBdLDI1Nl0sODUxOTpbWzEwMV0sMjU2XSw4NTIwOltbMTA1XSwyNTZdLDg1MjE6W1sxMDZdLDI1Nl0sODUyODpbWzQ5LDgyNjAsNTVdLDI1Nl0sODUyOTpbWzQ5LDgyNjAsNTddLDI1Nl0sODUzMDpbWzQ5LDgyNjAsNDksNDhdLDI1Nl0sODUzMTpbWzQ5LDgyNjAsNTFdLDI1Nl0sODUzMjpbWzUwLDgyNjAsNTFdLDI1Nl0sODUzMzpbWzQ5LDgyNjAsNTNdLDI1Nl0sODUzNDpbWzUwLDgyNjAsNTNdLDI1Nl0sODUzNTpbWzUxLDgyNjAsNTNdLDI1Nl0sODUzNjpbWzUyLDgyNjAsNTNdLDI1Nl0sODUzNzpbWzQ5LDgyNjAsNTRdLDI1Nl0sODUzODpbWzUzLDgyNjAsNTRdLDI1Nl0sODUzOTpbWzQ5LDgyNjAsNTZdLDI1Nl0sODU0MDpbWzUxLDgyNjAsNTZdLDI1Nl0sODU0MTpbWzUzLDgyNjAsNTZdLDI1Nl0sODU0MjpbWzU1LDgyNjAsNTZdLDI1Nl0sODU0MzpbWzQ5LDgyNjBdLDI1Nl0sODU0NDpbWzczXSwyNTZdLDg1NDU6W1s3Myw3M10sMjU2XSw4NTQ2OltbNzMsNzMsNzNdLDI1Nl0sODU0NzpbWzczLDg2XSwyNTZdLDg1NDg6W1s4Nl0sMjU2XSw4NTQ5OltbODYsNzNdLDI1Nl0sODU1MDpbWzg2LDczLDczXSwyNTZdLDg1NTE6W1s4Niw3Myw3Myw3M10sMjU2XSw4NTUyOltbNzMsODhdLDI1Nl0sODU1MzpbWzg4XSwyNTZdLDg1NTQ6W1s4OCw3M10sMjU2XSw4NTU1OltbODgsNzMsNzNdLDI1Nl0sODU1NjpbWzc2XSwyNTZdLDg1NTc6W1s2N10sMjU2XSw4NTU4OltbNjhdLDI1Nl0sODU1OTpbWzc3XSwyNTZdLDg1NjA6W1sxMDVdLDI1Nl0sODU2MTpbWzEwNSwxMDVdLDI1Nl0sODU2MjpbWzEwNSwxMDUsMTA1XSwyNTZdLDg1NjM6W1sxMDUsMTE4XSwyNTZdLDg1NjQ6W1sxMThdLDI1Nl0sODU2NTpbWzExOCwxMDVdLDI1Nl0sODU2NjpbWzExOCwxMDUsMTA1XSwyNTZdLDg1Njc6W1sxMTgsMTA1LDEwNSwxMDVdLDI1Nl0sODU2ODpbWzEwNSwxMjBdLDI1Nl0sODU2OTpbWzEyMF0sMjU2XSw4NTcwOltbMTIwLDEwNV0sMjU2XSw4NTcxOltbMTIwLDEwNSwxMDVdLDI1Nl0sODU3MjpbWzEwOF0sMjU2XSw4NTczOltbOTldLDI1Nl0sODU3NDpbWzEwMF0sMjU2XSw4NTc1OltbMTA5XSwyNTZdLDg1ODU6W1s0OCw4MjYwLDUxXSwyNTZdLDg1OTI6WywsezgyNDo4NjAyfV0sODU5NDpbLCx7ODI0Ojg2MDN9XSw4NTk2OlssLHs4MjQ6ODYyMn1dLDg2MDI6W1s4NTkyLDgyNF1dLDg2MDM6W1s4NTk0LDgyNF1dLDg2MjI6W1s4NTk2LDgyNF1dLDg2NTM6W1s4NjU2LDgyNF1dLDg2NTQ6W1s4NjYwLDgyNF1dLDg2NTU6W1s4NjU4LDgyNF1dLDg2NTY6WywsezgyNDo4NjUzfV0sODY1ODpbLCx7ODI0Ojg2NTV9XSw4NjYwOlssLHs4MjQ6ODY1NH1dfSxcbjg3MDQ6ezg3MDc6WywsezgyNDo4NzA4fV0sODcwODpbWzg3MDcsODI0XV0sODcxMjpbLCx7ODI0Ojg3MTN9XSw4NzEzOltbODcxMiw4MjRdXSw4NzE1OlssLHs4MjQ6ODcxNn1dLDg3MTY6W1s4NzE1LDgyNF1dLDg3Mzk6WywsezgyNDo4NzQwfV0sODc0MDpbWzg3MzksODI0XV0sODc0MTpbLCx7ODI0Ojg3NDJ9XSw4NzQyOltbODc0MSw4MjRdXSw4NzQ4OltbODc0Nyw4NzQ3XSwyNTZdLDg3NDk6W1s4NzQ3LDg3NDcsODc0N10sMjU2XSw4NzUxOltbODc1MCw4NzUwXSwyNTZdLDg3NTI6W1s4NzUwLDg3NTAsODc1MF0sMjU2XSw4NzY0OlssLHs4MjQ6ODc2OX1dLDg3Njk6W1s4NzY0LDgyNF1dLDg3NzE6WywsezgyNDo4NzcyfV0sODc3MjpbWzg3NzEsODI0XV0sODc3MzpbLCx7ODI0Ojg3NzV9XSw4Nzc1OltbODc3Myw4MjRdXSw4Nzc2OlssLHs4MjQ6ODc3N31dLDg3Nzc6W1s4Nzc2LDgyNF1dLDg3ODE6WywsezgyNDo4ODEzfV0sODgwMDpbWzYxLDgyNF1dLDg4MDE6WywsezgyNDo4ODAyfV0sODgwMjpbWzg4MDEsODI0XV0sODgwNDpbLCx7ODI0Ojg4MTZ9XSw4ODA1OlssLHs4MjQ6ODgxN31dLDg4MTM6W1s4NzgxLDgyNF1dLDg4MTQ6W1s2MCw4MjRdXSw4ODE1OltbNjIsODI0XV0sODgxNjpbWzg4MDQsODI0XV0sODgxNzpbWzg4MDUsODI0XV0sODgxODpbLCx7ODI0Ojg4MjB9XSw4ODE5OlssLHs4MjQ6ODgyMX1dLDg4MjA6W1s4ODE4LDgyNF1dLDg4MjE6W1s4ODE5LDgyNF1dLDg4MjI6WywsezgyNDo4ODI0fV0sODgyMzpbLCx7ODI0Ojg4MjV9XSw4ODI0OltbODgyMiw4MjRdXSw4ODI1OltbODgyMyw4MjRdXSw4ODI2OlssLHs4MjQ6ODgzMn1dLDg4Mjc6WywsezgyNDo4ODMzfV0sODgyODpbLCx7ODI0Ojg5Mjh9XSw4ODI5OlssLHs4MjQ6ODkyOX1dLDg4MzI6W1s4ODI2LDgyNF1dLDg4MzM6W1s4ODI3LDgyNF1dLDg4MzQ6WywsezgyNDo4ODM2fV0sODgzNTpbLCx7ODI0Ojg4Mzd9XSw4ODM2OltbODgzNCw4MjRdXSw4ODM3OltbODgzNSw4MjRdXSw4ODM4OlssLHs4MjQ6ODg0MH1dLDg4Mzk6WywsezgyNDo4ODQxfV0sODg0MDpbWzg4MzgsODI0XV0sODg0MTpbWzg4MzksODI0XV0sODg0OTpbLCx7ODI0Ojg5MzB9XSw4ODUwOlssLHs4MjQ6ODkzMX1dLDg4NjY6WywsezgyNDo4ODc2fV0sODg3MjpbLCx7ODI0Ojg4Nzd9XSw4ODczOlssLHs4MjQ6ODg3OH1dLDg4NzU6WywsezgyNDo4ODc5fV0sODg3NjpbWzg4NjYsODI0XV0sODg3NzpbWzg4NzIsODI0XV0sODg3ODpbWzg4NzMsODI0XV0sODg3OTpbWzg4NzUsODI0XV0sODg4MjpbLCx7ODI0Ojg5Mzh9XSw4ODgzOlssLHs4MjQ6ODkzOX1dLDg4ODQ6WywsezgyNDo4OTQwfV0sODg4NTpbLCx7ODI0Ojg5NDF9XSw4OTI4OltbODgyOCw4MjRdXSw4OTI5OltbODgyOSw4MjRdXSw4OTMwOltbODg0OSw4MjRdXSw4OTMxOltbODg1MCw4MjRdXSw4OTM4OltbODg4Miw4MjRdXSw4OTM5OltbODg4Myw4MjRdXSw4OTQwOltbODg4NCw4MjRdXSw4OTQxOltbODg4NSw4MjRdXX0sXG44OTYwOns5MDAxOltbMTIyOTZdXSw5MDAyOltbMTIyOTddXX0sXG45MjE2Ons5MzEyOltbNDldLDI1Nl0sOTMxMzpbWzUwXSwyNTZdLDkzMTQ6W1s1MV0sMjU2XSw5MzE1OltbNTJdLDI1Nl0sOTMxNjpbWzUzXSwyNTZdLDkzMTc6W1s1NF0sMjU2XSw5MzE4OltbNTVdLDI1Nl0sOTMxOTpbWzU2XSwyNTZdLDkzMjA6W1s1N10sMjU2XSw5MzIxOltbNDksNDhdLDI1Nl0sOTMyMjpbWzQ5LDQ5XSwyNTZdLDkzMjM6W1s0OSw1MF0sMjU2XSw5MzI0OltbNDksNTFdLDI1Nl0sOTMyNTpbWzQ5LDUyXSwyNTZdLDkzMjY6W1s0OSw1M10sMjU2XSw5MzI3OltbNDksNTRdLDI1Nl0sOTMyODpbWzQ5LDU1XSwyNTZdLDkzMjk6W1s0OSw1Nl0sMjU2XSw5MzMwOltbNDksNTddLDI1Nl0sOTMzMTpbWzUwLDQ4XSwyNTZdLDkzMzI6W1s0MCw0OSw0MV0sMjU2XSw5MzMzOltbNDAsNTAsNDFdLDI1Nl0sOTMzNDpbWzQwLDUxLDQxXSwyNTZdLDkzMzU6W1s0MCw1Miw0MV0sMjU2XSw5MzM2OltbNDAsNTMsNDFdLDI1Nl0sOTMzNzpbWzQwLDU0LDQxXSwyNTZdLDkzMzg6W1s0MCw1NSw0MV0sMjU2XSw5MzM5OltbNDAsNTYsNDFdLDI1Nl0sOTM0MDpbWzQwLDU3LDQxXSwyNTZdLDkzNDE6W1s0MCw0OSw0OCw0MV0sMjU2XSw5MzQyOltbNDAsNDksNDksNDFdLDI1Nl0sOTM0MzpbWzQwLDQ5LDUwLDQxXSwyNTZdLDkzNDQ6W1s0MCw0OSw1MSw0MV0sMjU2XSw5MzQ1OltbNDAsNDksNTIsNDFdLDI1Nl0sOTM0NjpbWzQwLDQ5LDUzLDQxXSwyNTZdLDkzNDc6W1s0MCw0OSw1NCw0MV0sMjU2XSw5MzQ4OltbNDAsNDksNTUsNDFdLDI1Nl0sOTM0OTpbWzQwLDQ5LDU2LDQxXSwyNTZdLDkzNTA6W1s0MCw0OSw1Nyw0MV0sMjU2XSw5MzUxOltbNDAsNTAsNDgsNDFdLDI1Nl0sOTM1MjpbWzQ5LDQ2XSwyNTZdLDkzNTM6W1s1MCw0Nl0sMjU2XSw5MzU0OltbNTEsNDZdLDI1Nl0sOTM1NTpbWzUyLDQ2XSwyNTZdLDkzNTY6W1s1Myw0Nl0sMjU2XSw5MzU3OltbNTQsNDZdLDI1Nl0sOTM1ODpbWzU1LDQ2XSwyNTZdLDkzNTk6W1s1Niw0Nl0sMjU2XSw5MzYwOltbNTcsNDZdLDI1Nl0sOTM2MTpbWzQ5LDQ4LDQ2XSwyNTZdLDkzNjI6W1s0OSw0OSw0Nl0sMjU2XSw5MzYzOltbNDksNTAsNDZdLDI1Nl0sOTM2NDpbWzQ5LDUxLDQ2XSwyNTZdLDkzNjU6W1s0OSw1Miw0Nl0sMjU2XSw5MzY2OltbNDksNTMsNDZdLDI1Nl0sOTM2NzpbWzQ5LDU0LDQ2XSwyNTZdLDkzNjg6W1s0OSw1NSw0Nl0sMjU2XSw5MzY5OltbNDksNTYsNDZdLDI1Nl0sOTM3MDpbWzQ5LDU3LDQ2XSwyNTZdLDkzNzE6W1s1MCw0OCw0Nl0sMjU2XSw5MzcyOltbNDAsOTcsNDFdLDI1Nl0sOTM3MzpbWzQwLDk4LDQxXSwyNTZdLDkzNzQ6W1s0MCw5OSw0MV0sMjU2XSw5Mzc1OltbNDAsMTAwLDQxXSwyNTZdLDkzNzY6W1s0MCwxMDEsNDFdLDI1Nl0sOTM3NzpbWzQwLDEwMiw0MV0sMjU2XSw5Mzc4OltbNDAsMTAzLDQxXSwyNTZdLDkzNzk6W1s0MCwxMDQsNDFdLDI1Nl0sOTM4MDpbWzQwLDEwNSw0MV0sMjU2XSw5MzgxOltbNDAsMTA2LDQxXSwyNTZdLDkzODI6W1s0MCwxMDcsNDFdLDI1Nl0sOTM4MzpbWzQwLDEwOCw0MV0sMjU2XSw5Mzg0OltbNDAsMTA5LDQxXSwyNTZdLDkzODU6W1s0MCwxMTAsNDFdLDI1Nl0sOTM4NjpbWzQwLDExMSw0MV0sMjU2XSw5Mzg3OltbNDAsMTEyLDQxXSwyNTZdLDkzODg6W1s0MCwxMTMsNDFdLDI1Nl0sOTM4OTpbWzQwLDExNCw0MV0sMjU2XSw5MzkwOltbNDAsMTE1LDQxXSwyNTZdLDkzOTE6W1s0MCwxMTYsNDFdLDI1Nl0sOTM5MjpbWzQwLDExNyw0MV0sMjU2XSw5MzkzOltbNDAsMTE4LDQxXSwyNTZdLDkzOTQ6W1s0MCwxMTksNDFdLDI1Nl0sOTM5NTpbWzQwLDEyMCw0MV0sMjU2XSw5Mzk2OltbNDAsMTIxLDQxXSwyNTZdLDkzOTc6W1s0MCwxMjIsNDFdLDI1Nl0sOTM5ODpbWzY1XSwyNTZdLDkzOTk6W1s2Nl0sMjU2XSw5NDAwOltbNjddLDI1Nl0sOTQwMTpbWzY4XSwyNTZdLDk0MDI6W1s2OV0sMjU2XSw5NDAzOltbNzBdLDI1Nl0sOTQwNDpbWzcxXSwyNTZdLDk0MDU6W1s3Ml0sMjU2XSw5NDA2OltbNzNdLDI1Nl0sOTQwNzpbWzc0XSwyNTZdLDk0MDg6W1s3NV0sMjU2XSw5NDA5OltbNzZdLDI1Nl0sOTQxMDpbWzc3XSwyNTZdLDk0MTE6W1s3OF0sMjU2XSw5NDEyOltbNzldLDI1Nl0sOTQxMzpbWzgwXSwyNTZdLDk0MTQ6W1s4MV0sMjU2XSw5NDE1OltbODJdLDI1Nl0sOTQxNjpbWzgzXSwyNTZdLDk0MTc6W1s4NF0sMjU2XSw5NDE4OltbODVdLDI1Nl0sOTQxOTpbWzg2XSwyNTZdLDk0MjA6W1s4N10sMjU2XSw5NDIxOltbODhdLDI1Nl0sOTQyMjpbWzg5XSwyNTZdLDk0MjM6W1s5MF0sMjU2XSw5NDI0OltbOTddLDI1Nl0sOTQyNTpbWzk4XSwyNTZdLDk0MjY6W1s5OV0sMjU2XSw5NDI3OltbMTAwXSwyNTZdLDk0Mjg6W1sxMDFdLDI1Nl0sOTQyOTpbWzEwMl0sMjU2XSw5NDMwOltbMTAzXSwyNTZdLDk0MzE6W1sxMDRdLDI1Nl0sOTQzMjpbWzEwNV0sMjU2XSw5NDMzOltbMTA2XSwyNTZdLDk0MzQ6W1sxMDddLDI1Nl0sOTQzNTpbWzEwOF0sMjU2XSw5NDM2OltbMTA5XSwyNTZdLDk0Mzc6W1sxMTBdLDI1Nl0sOTQzODpbWzExMV0sMjU2XSw5NDM5OltbMTEyXSwyNTZdLDk0NDA6W1sxMTNdLDI1Nl0sOTQ0MTpbWzExNF0sMjU2XSw5NDQyOltbMTE1XSwyNTZdLDk0NDM6W1sxMTZdLDI1Nl0sOTQ0NDpbWzExN10sMjU2XSw5NDQ1OltbMTE4XSwyNTZdLDk0NDY6W1sxMTldLDI1Nl0sOTQ0NzpbWzEyMF0sMjU2XSw5NDQ4OltbMTIxXSwyNTZdLDk0NDk6W1sxMjJdLDI1Nl0sOTQ1MDpbWzQ4XSwyNTZdfSxcbjEwNzUyOnsxMDc2NDpbWzg3NDcsODc0Nyw4NzQ3LDg3NDddLDI1Nl0sMTA4Njg6W1s1OCw1OCw2MV0sMjU2XSwxMDg2OTpbWzYxLDYxXSwyNTZdLDEwODcwOltbNjEsNjEsNjFdLDI1Nl0sMTA5NzI6W1sxMDk3Myw4MjRdLDUxMl19LFxuMTEyNjQ6ezExMzg4OltbMTA2XSwyNTZdLDExMzg5OltbODZdLDI1Nl0sMTE1MDM6WywyMzBdLDExNTA0OlssMjMwXSwxMTUwNTpbLDIzMF19LFxuMTE1MjA6ezExNjMxOltbMTE2MTddLDI1Nl0sMTE2NDc6Wyw5XSwxMTc0NDpbLDIzMF0sMTE3NDU6WywyMzBdLDExNzQ2OlssMjMwXSwxMTc0NzpbLDIzMF0sMTE3NDg6WywyMzBdLDExNzQ5OlssMjMwXSwxMTc1MDpbLDIzMF0sMTE3NTE6WywyMzBdLDExNzUyOlssMjMwXSwxMTc1MzpbLDIzMF0sMTE3NTQ6WywyMzBdLDExNzU1OlssMjMwXSwxMTc1NjpbLDIzMF0sMTE3NTc6WywyMzBdLDExNzU4OlssMjMwXSwxMTc1OTpbLDIzMF0sMTE3NjA6WywyMzBdLDExNzYxOlssMjMwXSwxMTc2MjpbLDIzMF0sMTE3NjM6WywyMzBdLDExNzY0OlssMjMwXSwxMTc2NTpbLDIzMF0sMTE3NjY6WywyMzBdLDExNzY3OlssMjMwXSwxMTc2ODpbLDIzMF0sMTE3Njk6WywyMzBdLDExNzcwOlssMjMwXSwxMTc3MTpbLDIzMF0sMTE3NzI6WywyMzBdLDExNzczOlssMjMwXSwxMTc3NDpbLDIzMF0sMTE3NzU6WywyMzBdfSxcbjExNzc2OnsxMTkzNTpbWzI3NTk3XSwyNTZdLDEyMDE5OltbNDA4NjNdLDI1Nl19LFxuMTIwMzI6ezEyMDMyOltbMTk5NjhdLDI1Nl0sMTIwMzM6W1syMDAwOF0sMjU2XSwxMjAzNDpbWzIwMDIyXSwyNTZdLDEyMDM1OltbMjAwMzFdLDI1Nl0sMTIwMzY6W1syMDA1N10sMjU2XSwxMjAzNzpbWzIwMTAxXSwyNTZdLDEyMDM4OltbMjAxMDhdLDI1Nl0sMTIwMzk6W1syMDEyOF0sMjU2XSwxMjA0MDpbWzIwMTU0XSwyNTZdLDEyMDQxOltbMjA3OTldLDI1Nl0sMTIwNDI6W1syMDgzN10sMjU2XSwxMjA0MzpbWzIwODQzXSwyNTZdLDEyMDQ0OltbMjA4NjZdLDI1Nl0sMTIwNDU6W1syMDg4Nl0sMjU2XSwxMjA0NjpbWzIwOTA3XSwyNTZdLDEyMDQ3OltbMjA5NjBdLDI1Nl0sMTIwNDg6W1syMDk4MV0sMjU2XSwxMjA0OTpbWzIwOTkyXSwyNTZdLDEyMDUwOltbMjExNDddLDI1Nl0sMTIwNTE6W1syMTI0MV0sMjU2XSwxMjA1MjpbWzIxMjY5XSwyNTZdLDEyMDUzOltbMjEyNzRdLDI1Nl0sMTIwNTQ6W1syMTMwNF0sMjU2XSwxMjA1NTpbWzIxMzEzXSwyNTZdLDEyMDU2OltbMjEzNDBdLDI1Nl0sMTIwNTc6W1syMTM1M10sMjU2XSwxMjA1ODpbWzIxMzc4XSwyNTZdLDEyMDU5OltbMjE0MzBdLDI1Nl0sMTIwNjA6W1syMTQ0OF0sMjU2XSwxMjA2MTpbWzIxNDc1XSwyNTZdLDEyMDYyOltbMjIyMzFdLDI1Nl0sMTIwNjM6W1syMjMwM10sMjU2XSwxMjA2NDpbWzIyNzYzXSwyNTZdLDEyMDY1OltbMjI3ODZdLDI1Nl0sMTIwNjY6W1syMjc5NF0sMjU2XSwxMjA2NzpbWzIyODA1XSwyNTZdLDEyMDY4OltbMjI4MjNdLDI1Nl0sMTIwNjk6W1syMjg5OV0sMjU2XSwxMjA3MDpbWzIzMzc2XSwyNTZdLDEyMDcxOltbMjM0MjRdLDI1Nl0sMTIwNzI6W1syMzU0NF0sMjU2XSwxMjA3MzpbWzIzNTY3XSwyNTZdLDEyMDc0OltbMjM1ODZdLDI1Nl0sMTIwNzU6W1syMzYwOF0sMjU2XSwxMjA3NjpbWzIzNjYyXSwyNTZdLDEyMDc3OltbMjM2NjVdLDI1Nl0sMTIwNzg6W1syNDAyN10sMjU2XSwxMjA3OTpbWzI0MDM3XSwyNTZdLDEyMDgwOltbMjQwNDldLDI1Nl0sMTIwODE6W1syNDA2Ml0sMjU2XSwxMjA4MjpbWzI0MTc4XSwyNTZdLDEyMDgzOltbMjQxODZdLDI1Nl0sMTIwODQ6W1syNDE5MV0sMjU2XSwxMjA4NTpbWzI0MzA4XSwyNTZdLDEyMDg2OltbMjQzMThdLDI1Nl0sMTIwODc6W1syNDMzMV0sMjU2XSwxMjA4ODpbWzI0MzM5XSwyNTZdLDEyMDg5OltbMjQ0MDBdLDI1Nl0sMTIwOTA6W1syNDQxN10sMjU2XSwxMjA5MTpbWzI0NDM1XSwyNTZdLDEyMDkyOltbMjQ1MTVdLDI1Nl0sMTIwOTM6W1syNTA5Nl0sMjU2XSwxMjA5NDpbWzI1MTQyXSwyNTZdLDEyMDk1OltbMjUxNjNdLDI1Nl0sMTIwOTY6W1syNTkwM10sMjU2XSwxMjA5NzpbWzI1OTA4XSwyNTZdLDEyMDk4OltbMjU5OTFdLDI1Nl0sMTIwOTk6W1syNjAwN10sMjU2XSwxMjEwMDpbWzI2MDIwXSwyNTZdLDEyMTAxOltbMjYwNDFdLDI1Nl0sMTIxMDI6W1syNjA4MF0sMjU2XSwxMjEwMzpbWzI2MDg1XSwyNTZdLDEyMTA0OltbMjYzNTJdLDI1Nl0sMTIxMDU6W1syNjM3Nl0sMjU2XSwxMjEwNjpbWzI2NDA4XSwyNTZdLDEyMTA3OltbMjc0MjRdLDI1Nl0sMTIxMDg6W1syNzQ5MF0sMjU2XSwxMjEwOTpbWzI3NTEzXSwyNTZdLDEyMTEwOltbMjc1NzFdLDI1Nl0sMTIxMTE6W1syNzU5NV0sMjU2XSwxMjExMjpbWzI3NjA0XSwyNTZdLDEyMTEzOltbMjc2MTFdLDI1Nl0sMTIxMTQ6W1syNzY2M10sMjU2XSwxMjExNTpbWzI3NjY4XSwyNTZdLDEyMTE2OltbMjc3MDBdLDI1Nl0sMTIxMTc6W1syODc3OV0sMjU2XSwxMjExODpbWzI5MjI2XSwyNTZdLDEyMTE5OltbMjkyMzhdLDI1Nl0sMTIxMjA6W1syOTI0M10sMjU2XSwxMjEyMTpbWzI5MjQ3XSwyNTZdLDEyMTIyOltbMjkyNTVdLDI1Nl0sMTIxMjM6W1syOTI3M10sMjU2XSwxMjEyNDpbWzI5Mjc1XSwyNTZdLDEyMTI1OltbMjkzNTZdLDI1Nl0sMTIxMjY6W1syOTU3Ml0sMjU2XSwxMjEyNzpbWzI5NTc3XSwyNTZdLDEyMTI4OltbMjk5MTZdLDI1Nl0sMTIxMjk6W1syOTkyNl0sMjU2XSwxMjEzMDpbWzI5OTc2XSwyNTZdLDEyMTMxOltbMjk5ODNdLDI1Nl0sMTIxMzI6W1syOTk5Ml0sMjU2XSwxMjEzMzpbWzMwMDAwXSwyNTZdLDEyMTM0OltbMzAwOTFdLDI1Nl0sMTIxMzU6W1szMDA5OF0sMjU2XSwxMjEzNjpbWzMwMzI2XSwyNTZdLDEyMTM3OltbMzAzMzNdLDI1Nl0sMTIxMzg6W1szMDM4Ml0sMjU2XSwxMjEzOTpbWzMwMzk5XSwyNTZdLDEyMTQwOltbMzA0NDZdLDI1Nl0sMTIxNDE6W1szMDY4M10sMjU2XSwxMjE0MjpbWzMwNjkwXSwyNTZdLDEyMTQzOltbMzA3MDddLDI1Nl0sMTIxNDQ6W1szMTAzNF0sMjU2XSwxMjE0NTpbWzMxMTYwXSwyNTZdLDEyMTQ2OltbMzExNjZdLDI1Nl0sMTIxNDc6W1szMTM0OF0sMjU2XSwxMjE0ODpbWzMxNDM1XSwyNTZdLDEyMTQ5OltbMzE0ODFdLDI1Nl0sMTIxNTA6W1szMTg1OV0sMjU2XSwxMjE1MTpbWzMxOTkyXSwyNTZdLDEyMTUyOltbMzI1NjZdLDI1Nl0sMTIxNTM6W1szMjU5M10sMjU2XSwxMjE1NDpbWzMyNjUwXSwyNTZdLDEyMTU1OltbMzI3MDFdLDI1Nl0sMTIxNTY6W1szMjc2OV0sMjU2XSwxMjE1NzpbWzMyNzgwXSwyNTZdLDEyMTU4OltbMzI3ODZdLDI1Nl0sMTIxNTk6W1szMjgxOV0sMjU2XSwxMjE2MDpbWzMyODk1XSwyNTZdLDEyMTYxOltbMzI5MDVdLDI1Nl0sMTIxNjI6W1szMzI1MV0sMjU2XSwxMjE2MzpbWzMzMjU4XSwyNTZdLDEyMTY0OltbMzMyNjddLDI1Nl0sMTIxNjU6W1szMzI3Nl0sMjU2XSwxMjE2NjpbWzMzMjkyXSwyNTZdLDEyMTY3OltbMzMzMDddLDI1Nl0sMTIxNjg6W1szMzMxMV0sMjU2XSwxMjE2OTpbWzMzMzkwXSwyNTZdLDEyMTcwOltbMzMzOTRdLDI1Nl0sMTIxNzE6W1szMzQwMF0sMjU2XSwxMjE3MjpbWzM0MzgxXSwyNTZdLDEyMTczOltbMzQ0MTFdLDI1Nl0sMTIxNzQ6W1szNDg4MF0sMjU2XSwxMjE3NTpbWzM0ODkyXSwyNTZdLDEyMTc2OltbMzQ5MTVdLDI1Nl0sMTIxNzc6W1szNTE5OF0sMjU2XSwxMjE3ODpbWzM1MjExXSwyNTZdLDEyMTc5OltbMzUyODJdLDI1Nl0sMTIxODA6W1szNTMyOF0sMjU2XSwxMjE4MTpbWzM1ODk1XSwyNTZdLDEyMTgyOltbMzU5MTBdLDI1Nl0sMTIxODM6W1szNTkyNV0sMjU2XSwxMjE4NDpbWzM1OTYwXSwyNTZdLDEyMTg1OltbMzU5OTddLDI1Nl0sMTIxODY6W1szNjE5Nl0sMjU2XSwxMjE4NzpbWzM2MjA4XSwyNTZdLDEyMTg4OltbMzYyNzVdLDI1Nl0sMTIxODk6W1szNjUyM10sMjU2XSwxMjE5MDpbWzM2NTU0XSwyNTZdLDEyMTkxOltbMzY3NjNdLDI1Nl0sMTIxOTI6W1szNjc4NF0sMjU2XSwxMjE5MzpbWzM2Nzg5XSwyNTZdLDEyMTk0OltbMzcwMDldLDI1Nl0sMTIxOTU6W1szNzE5M10sMjU2XSwxMjE5NjpbWzM3MzE4XSwyNTZdLDEyMTk3OltbMzczMjRdLDI1Nl0sMTIxOTg6W1szNzMyOV0sMjU2XSwxMjE5OTpbWzM4MjYzXSwyNTZdLDEyMjAwOltbMzgyNzJdLDI1Nl0sMTIyMDE6W1szODQyOF0sMjU2XSwxMjIwMjpbWzM4NTgyXSwyNTZdLDEyMjAzOltbMzg1ODVdLDI1Nl0sMTIyMDQ6W1szODYzMl0sMjU2XSwxMjIwNTpbWzM4NzM3XSwyNTZdLDEyMjA2OltbMzg3NTBdLDI1Nl0sMTIyMDc6W1szODc1NF0sMjU2XSwxMjIwODpbWzM4NzYxXSwyNTZdLDEyMjA5OltbMzg4NTldLDI1Nl0sMTIyMTA6W1szODg5M10sMjU2XSwxMjIxMTpbWzM4ODk5XSwyNTZdLDEyMjEyOltbMzg5MTNdLDI1Nl0sMTIyMTM6W1szOTA4MF0sMjU2XSwxMjIxNDpbWzM5MTMxXSwyNTZdLDEyMjE1OltbMzkxMzVdLDI1Nl0sMTIyMTY6W1szOTMxOF0sMjU2XSwxMjIxNzpbWzM5MzIxXSwyNTZdLDEyMjE4OltbMzkzNDBdLDI1Nl0sMTIyMTk6W1szOTU5Ml0sMjU2XSwxMjIyMDpbWzM5NjQwXSwyNTZdLDEyMjIxOltbMzk2NDddLDI1Nl0sMTIyMjI6W1szOTcxN10sMjU2XSwxMjIyMzpbWzM5NzI3XSwyNTZdLDEyMjI0OltbMzk3MzBdLDI1Nl0sMTIyMjU6W1szOTc0MF0sMjU2XSwxMjIyNjpbWzM5NzcwXSwyNTZdLDEyMjI3OltbNDAxNjVdLDI1Nl0sMTIyMjg6W1s0MDU2NV0sMjU2XSwxMjIyOTpbWzQwNTc1XSwyNTZdLDEyMjMwOltbNDA2MTNdLDI1Nl0sMTIyMzE6W1s0MDYzNV0sMjU2XSwxMjIzMjpbWzQwNjQzXSwyNTZdLDEyMjMzOltbNDA2NTNdLDI1Nl0sMTIyMzQ6W1s0MDY1N10sMjU2XSwxMjIzNTpbWzQwNjk3XSwyNTZdLDEyMjM2OltbNDA3MDFdLDI1Nl0sMTIyMzc6W1s0MDcxOF0sMjU2XSwxMjIzODpbWzQwNzIzXSwyNTZdLDEyMjM5OltbNDA3MzZdLDI1Nl0sMTIyNDA6W1s0MDc2M10sMjU2XSwxMjI0MTpbWzQwNzc4XSwyNTZdLDEyMjQyOltbNDA3ODZdLDI1Nl0sMTIyNDM6W1s0MDg0NV0sMjU2XSwxMjI0NDpbWzQwODYwXSwyNTZdLDEyMjQ1OltbNDA4NjRdLDI1Nl19LFxuMTIyODg6ezEyMjg4OltbMzJdLDI1Nl0sMTIzMzA6WywyMThdLDEyMzMxOlssMjI4XSwxMjMzMjpbLDIzMl0sMTIzMzM6WywyMjJdLDEyMzM0OlssMjI0XSwxMjMzNTpbLDIyNF0sMTIzNDI6W1sxMjMwNl0sMjU2XSwxMjM0NDpbWzIxMzEzXSwyNTZdLDEyMzQ1OltbMjEzMTZdLDI1Nl0sMTIzNDY6W1syMTMxN10sMjU2XSwxMjM1ODpbLCx7MTI0NDE6MTI0MzZ9XSwxMjM2MzpbLCx7MTI0NDE6MTIzNjR9XSwxMjM2NDpbWzEyMzYzLDEyNDQxXV0sMTIzNjU6WywsezEyNDQxOjEyMzY2fV0sMTIzNjY6W1sxMjM2NSwxMjQ0MV1dLDEyMzY3OlssLHsxMjQ0MToxMjM2OH1dLDEyMzY4OltbMTIzNjcsMTI0NDFdXSwxMjM2OTpbLCx7MTI0NDE6MTIzNzB9XSwxMjM3MDpbWzEyMzY5LDEyNDQxXV0sMTIzNzE6WywsezEyNDQxOjEyMzcyfV0sMTIzNzI6W1sxMjM3MSwxMjQ0MV1dLDEyMzczOlssLHsxMjQ0MToxMjM3NH1dLDEyMzc0OltbMTIzNzMsMTI0NDFdXSwxMjM3NTpbLCx7MTI0NDE6MTIzNzZ9XSwxMjM3NjpbWzEyMzc1LDEyNDQxXV0sMTIzNzc6WywsezEyNDQxOjEyMzc4fV0sMTIzNzg6W1sxMjM3NywxMjQ0MV1dLDEyMzc5OlssLHsxMjQ0MToxMjM4MH1dLDEyMzgwOltbMTIzNzksMTI0NDFdXSwxMjM4MTpbLCx7MTI0NDE6MTIzODJ9XSwxMjM4MjpbWzEyMzgxLDEyNDQxXV0sMTIzODM6WywsezEyNDQxOjEyMzg0fV0sMTIzODQ6W1sxMjM4MywxMjQ0MV1dLDEyMzg1OlssLHsxMjQ0MToxMjM4Nn1dLDEyMzg2OltbMTIzODUsMTI0NDFdXSwxMjM4ODpbLCx7MTI0NDE6MTIzODl9XSwxMjM4OTpbWzEyMzg4LDEyNDQxXV0sMTIzOTA6WywsezEyNDQxOjEyMzkxfV0sMTIzOTE6W1sxMjM5MCwxMjQ0MV1dLDEyMzkyOlssLHsxMjQ0MToxMjM5M31dLDEyMzkzOltbMTIzOTIsMTI0NDFdXSwxMjM5OTpbLCx7MTI0NDE6MTI0MDAsMTI0NDI6MTI0MDF9XSwxMjQwMDpbWzEyMzk5LDEyNDQxXV0sMTI0MDE6W1sxMjM5OSwxMjQ0Ml1dLDEyNDAyOlssLHsxMjQ0MToxMjQwMywxMjQ0MjoxMjQwNH1dLDEyNDAzOltbMTI0MDIsMTI0NDFdXSwxMjQwNDpbWzEyNDAyLDEyNDQyXV0sMTI0MDU6WywsezEyNDQxOjEyNDA2LDEyNDQyOjEyNDA3fV0sMTI0MDY6W1sxMjQwNSwxMjQ0MV1dLDEyNDA3OltbMTI0MDUsMTI0NDJdXSwxMjQwODpbLCx7MTI0NDE6MTI0MDksMTI0NDI6MTI0MTB9XSwxMjQwOTpbWzEyNDA4LDEyNDQxXV0sMTI0MTA6W1sxMjQwOCwxMjQ0Ml1dLDEyNDExOlssLHsxMjQ0MToxMjQxMiwxMjQ0MjoxMjQxM31dLDEyNDEyOltbMTI0MTEsMTI0NDFdXSwxMjQxMzpbWzEyNDExLDEyNDQyXV0sMTI0MzY6W1sxMjM1OCwxMjQ0MV1dLDEyNDQxOlssOF0sMTI0NDI6Wyw4XSwxMjQ0MzpbWzMyLDEyNDQxXSwyNTZdLDEyNDQ0OltbMzIsMTI0NDJdLDI1Nl0sMTI0NDU6WywsezEyNDQxOjEyNDQ2fV0sMTI0NDY6W1sxMjQ0NSwxMjQ0MV1dLDEyNDQ3OltbMTI0MjQsMTI0MjZdLDI1Nl0sMTI0NTQ6WywsezEyNDQxOjEyNTMyfV0sMTI0NTk6WywsezEyNDQxOjEyNDYwfV0sMTI0NjA6W1sxMjQ1OSwxMjQ0MV1dLDEyNDYxOlssLHsxMjQ0MToxMjQ2Mn1dLDEyNDYyOltbMTI0NjEsMTI0NDFdXSwxMjQ2MzpbLCx7MTI0NDE6MTI0NjR9XSwxMjQ2NDpbWzEyNDYzLDEyNDQxXV0sMTI0NjU6WywsezEyNDQxOjEyNDY2fV0sMTI0NjY6W1sxMjQ2NSwxMjQ0MV1dLDEyNDY3OlssLHsxMjQ0MToxMjQ2OH1dLDEyNDY4OltbMTI0NjcsMTI0NDFdXSwxMjQ2OTpbLCx7MTI0NDE6MTI0NzB9XSwxMjQ3MDpbWzEyNDY5LDEyNDQxXV0sMTI0NzE6WywsezEyNDQxOjEyNDcyfV0sMTI0NzI6W1sxMjQ3MSwxMjQ0MV1dLDEyNDczOlssLHsxMjQ0MToxMjQ3NH1dLDEyNDc0OltbMTI0NzMsMTI0NDFdXSwxMjQ3NTpbLCx7MTI0NDE6MTI0NzZ9XSwxMjQ3NjpbWzEyNDc1LDEyNDQxXV0sMTI0Nzc6WywsezEyNDQxOjEyNDc4fV0sMTI0Nzg6W1sxMjQ3NywxMjQ0MV1dLDEyNDc5OlssLHsxMjQ0MToxMjQ4MH1dLDEyNDgwOltbMTI0NzksMTI0NDFdXSwxMjQ4MTpbLCx7MTI0NDE6MTI0ODJ9XSwxMjQ4MjpbWzEyNDgxLDEyNDQxXV0sMTI0ODQ6WywsezEyNDQxOjEyNDg1fV0sMTI0ODU6W1sxMjQ4NCwxMjQ0MV1dLDEyNDg2OlssLHsxMjQ0MToxMjQ4N31dLDEyNDg3OltbMTI0ODYsMTI0NDFdXSwxMjQ4ODpbLCx7MTI0NDE6MTI0ODl9XSwxMjQ4OTpbWzEyNDg4LDEyNDQxXV0sMTI0OTU6WywsezEyNDQxOjEyNDk2LDEyNDQyOjEyNDk3fV0sMTI0OTY6W1sxMjQ5NSwxMjQ0MV1dLDEyNDk3OltbMTI0OTUsMTI0NDJdXSwxMjQ5ODpbLCx7MTI0NDE6MTI0OTksMTI0NDI6MTI1MDB9XSwxMjQ5OTpbWzEyNDk4LDEyNDQxXV0sMTI1MDA6W1sxMjQ5OCwxMjQ0Ml1dLDEyNTAxOlssLHsxMjQ0MToxMjUwMiwxMjQ0MjoxMjUwM31dLDEyNTAyOltbMTI1MDEsMTI0NDFdXSwxMjUwMzpbWzEyNTAxLDEyNDQyXV0sMTI1MDQ6WywsezEyNDQxOjEyNTA1LDEyNDQyOjEyNTA2fV0sMTI1MDU6W1sxMjUwNCwxMjQ0MV1dLDEyNTA2OltbMTI1MDQsMTI0NDJdXSwxMjUwNzpbLCx7MTI0NDE6MTI1MDgsMTI0NDI6MTI1MDl9XSwxMjUwODpbWzEyNTA3LDEyNDQxXV0sMTI1MDk6W1sxMjUwNywxMjQ0Ml1dLDEyNTI3OlssLHsxMjQ0MToxMjUzNX1dLDEyNTI4OlssLHsxMjQ0MToxMjUzNn1dLDEyNTI5OlssLHsxMjQ0MToxMjUzN31dLDEyNTMwOlssLHsxMjQ0MToxMjUzOH1dLDEyNTMyOltbMTI0NTQsMTI0NDFdXSwxMjUzNTpbWzEyNTI3LDEyNDQxXV0sMTI1MzY6W1sxMjUyOCwxMjQ0MV1dLDEyNTM3OltbMTI1MjksMTI0NDFdXSwxMjUzODpbWzEyNTMwLDEyNDQxXV0sMTI1NDE6WywsezEyNDQxOjEyNTQyfV0sMTI1NDI6W1sxMjU0MSwxMjQ0MV1dLDEyNTQzOltbMTI0NjcsMTI0ODhdLDI1Nl19LFxuMTI1NDQ6ezEyNTkzOltbNDM1Ml0sMjU2XSwxMjU5NDpbWzQzNTNdLDI1Nl0sMTI1OTU6W1s0NTIyXSwyNTZdLDEyNTk2OltbNDM1NF0sMjU2XSwxMjU5NzpbWzQ1MjRdLDI1Nl0sMTI1OTg6W1s0NTI1XSwyNTZdLDEyNTk5OltbNDM1NV0sMjU2XSwxMjYwMDpbWzQzNTZdLDI1Nl0sMTI2MDE6W1s0MzU3XSwyNTZdLDEyNjAyOltbNDUyOF0sMjU2XSwxMjYwMzpbWzQ1MjldLDI1Nl0sMTI2MDQ6W1s0NTMwXSwyNTZdLDEyNjA1OltbNDUzMV0sMjU2XSwxMjYwNjpbWzQ1MzJdLDI1Nl0sMTI2MDc6W1s0NTMzXSwyNTZdLDEyNjA4OltbNDM3OF0sMjU2XSwxMjYwOTpbWzQzNThdLDI1Nl0sMTI2MTA6W1s0MzU5XSwyNTZdLDEyNjExOltbNDM2MF0sMjU2XSwxMjYxMjpbWzQzODVdLDI1Nl0sMTI2MTM6W1s0MzYxXSwyNTZdLDEyNjE0OltbNDM2Ml0sMjU2XSwxMjYxNTpbWzQzNjNdLDI1Nl0sMTI2MTY6W1s0MzY0XSwyNTZdLDEyNjE3OltbNDM2NV0sMjU2XSwxMjYxODpbWzQzNjZdLDI1Nl0sMTI2MTk6W1s0MzY3XSwyNTZdLDEyNjIwOltbNDM2OF0sMjU2XSwxMjYyMTpbWzQzNjldLDI1Nl0sMTI2MjI6W1s0MzcwXSwyNTZdLDEyNjIzOltbNDQ0OV0sMjU2XSwxMjYyNDpbWzQ0NTBdLDI1Nl0sMTI2MjU6W1s0NDUxXSwyNTZdLDEyNjI2OltbNDQ1Ml0sMjU2XSwxMjYyNzpbWzQ0NTNdLDI1Nl0sMTI2Mjg6W1s0NDU0XSwyNTZdLDEyNjI5OltbNDQ1NV0sMjU2XSwxMjYzMDpbWzQ0NTZdLDI1Nl0sMTI2MzE6W1s0NDU3XSwyNTZdLDEyNjMyOltbNDQ1OF0sMjU2XSwxMjYzMzpbWzQ0NTldLDI1Nl0sMTI2MzQ6W1s0NDYwXSwyNTZdLDEyNjM1OltbNDQ2MV0sMjU2XSwxMjYzNjpbWzQ0NjJdLDI1Nl0sMTI2Mzc6W1s0NDYzXSwyNTZdLDEyNjM4OltbNDQ2NF0sMjU2XSwxMjYzOTpbWzQ0NjVdLDI1Nl0sMTI2NDA6W1s0NDY2XSwyNTZdLDEyNjQxOltbNDQ2N10sMjU2XSwxMjY0MjpbWzQ0NjhdLDI1Nl0sMTI2NDM6W1s0NDY5XSwyNTZdLDEyNjQ0OltbNDQ0OF0sMjU2XSwxMjY0NTpbWzQzNzJdLDI1Nl0sMTI2NDY6W1s0MzczXSwyNTZdLDEyNjQ3OltbNDU1MV0sMjU2XSwxMjY0ODpbWzQ1NTJdLDI1Nl0sMTI2NDk6W1s0NTU2XSwyNTZdLDEyNjUwOltbNDU1OF0sMjU2XSwxMjY1MTpbWzQ1NjNdLDI1Nl0sMTI2NTI6W1s0NTY3XSwyNTZdLDEyNjUzOltbNDU2OV0sMjU2XSwxMjY1NDpbWzQzODBdLDI1Nl0sMTI2NTU6W1s0NTczXSwyNTZdLDEyNjU2OltbNDU3NV0sMjU2XSwxMjY1NzpbWzQzODFdLDI1Nl0sMTI2NTg6W1s0MzgyXSwyNTZdLDEyNjU5OltbNDM4NF0sMjU2XSwxMjY2MDpbWzQzODZdLDI1Nl0sMTI2NjE6W1s0Mzg3XSwyNTZdLDEyNjYyOltbNDM5MV0sMjU2XSwxMjY2MzpbWzQzOTNdLDI1Nl0sMTI2NjQ6W1s0Mzk1XSwyNTZdLDEyNjY1OltbNDM5Nl0sMjU2XSwxMjY2NjpbWzQzOTddLDI1Nl0sMTI2Njc6W1s0Mzk4XSwyNTZdLDEyNjY4OltbNDM5OV0sMjU2XSwxMjY2OTpbWzQ0MDJdLDI1Nl0sMTI2NzA6W1s0NDA2XSwyNTZdLDEyNjcxOltbNDQxNl0sMjU2XSwxMjY3MjpbWzQ0MjNdLDI1Nl0sMTI2NzM6W1s0NDI4XSwyNTZdLDEyNjc0OltbNDU5M10sMjU2XSwxMjY3NTpbWzQ1OTRdLDI1Nl0sMTI2NzY6W1s0NDM5XSwyNTZdLDEyNjc3OltbNDQ0MF0sMjU2XSwxMjY3ODpbWzQ0NDFdLDI1Nl0sMTI2Nzk6W1s0NDg0XSwyNTZdLDEyNjgwOltbNDQ4NV0sMjU2XSwxMjY4MTpbWzQ0ODhdLDI1Nl0sMTI2ODI6W1s0NDk3XSwyNTZdLDEyNjgzOltbNDQ5OF0sMjU2XSwxMjY4NDpbWzQ1MDBdLDI1Nl0sMTI2ODU6W1s0NTEwXSwyNTZdLDEyNjg2OltbNDUxM10sMjU2XSwxMjY5MDpbWzE5OTY4XSwyNTZdLDEyNjkxOltbMjAxMDhdLDI1Nl0sMTI2OTI6W1sxOTk3N10sMjU2XSwxMjY5MzpbWzIyMjM1XSwyNTZdLDEyNjk0OltbMTk5NzhdLDI1Nl0sMTI2OTU6W1syMDAxM10sMjU2XSwxMjY5NjpbWzE5OTc5XSwyNTZdLDEyNjk3OltbMzAwMDJdLDI1Nl0sMTI2OTg6W1syMDA1N10sMjU2XSwxMjY5OTpbWzE5OTkzXSwyNTZdLDEyNzAwOltbMTk5NjldLDI1Nl0sMTI3MDE6W1syMjgyNV0sMjU2XSwxMjcwMjpbWzIyMzIwXSwyNTZdLDEyNzAzOltbMjAxNTRdLDI1Nl19LFxuMTI4MDA6ezEyODAwOltbNDAsNDM1Miw0MV0sMjU2XSwxMjgwMTpbWzQwLDQzNTQsNDFdLDI1Nl0sMTI4MDI6W1s0MCw0MzU1LDQxXSwyNTZdLDEyODAzOltbNDAsNDM1Nyw0MV0sMjU2XSwxMjgwNDpbWzQwLDQzNTgsNDFdLDI1Nl0sMTI4MDU6W1s0MCw0MzU5LDQxXSwyNTZdLDEyODA2OltbNDAsNDM2MSw0MV0sMjU2XSwxMjgwNzpbWzQwLDQzNjMsNDFdLDI1Nl0sMTI4MDg6W1s0MCw0MzY0LDQxXSwyNTZdLDEyODA5OltbNDAsNDM2Niw0MV0sMjU2XSwxMjgxMDpbWzQwLDQzNjcsNDFdLDI1Nl0sMTI4MTE6W1s0MCw0MzY4LDQxXSwyNTZdLDEyODEyOltbNDAsNDM2OSw0MV0sMjU2XSwxMjgxMzpbWzQwLDQzNzAsNDFdLDI1Nl0sMTI4MTQ6W1s0MCw0MzUyLDQ0NDksNDFdLDI1Nl0sMTI4MTU6W1s0MCw0MzU0LDQ0NDksNDFdLDI1Nl0sMTI4MTY6W1s0MCw0MzU1LDQ0NDksNDFdLDI1Nl0sMTI4MTc6W1s0MCw0MzU3LDQ0NDksNDFdLDI1Nl0sMTI4MTg6W1s0MCw0MzU4LDQ0NDksNDFdLDI1Nl0sMTI4MTk6W1s0MCw0MzU5LDQ0NDksNDFdLDI1Nl0sMTI4MjA6W1s0MCw0MzYxLDQ0NDksNDFdLDI1Nl0sMTI4MjE6W1s0MCw0MzYzLDQ0NDksNDFdLDI1Nl0sMTI4MjI6W1s0MCw0MzY0LDQ0NDksNDFdLDI1Nl0sMTI4MjM6W1s0MCw0MzY2LDQ0NDksNDFdLDI1Nl0sMTI4MjQ6W1s0MCw0MzY3LDQ0NDksNDFdLDI1Nl0sMTI4MjU6W1s0MCw0MzY4LDQ0NDksNDFdLDI1Nl0sMTI4MjY6W1s0MCw0MzY5LDQ0NDksNDFdLDI1Nl0sMTI4Mjc6W1s0MCw0MzcwLDQ0NDksNDFdLDI1Nl0sMTI4Mjg6W1s0MCw0MzY0LDQ0NjIsNDFdLDI1Nl0sMTI4Mjk6W1s0MCw0MzYzLDQ0NTcsNDM2NCw0NDUzLDQ1MjMsNDFdLDI1Nl0sMTI4MzA6W1s0MCw0MzYzLDQ0NTcsNDM3MCw0NDYyLDQxXSwyNTZdLDEyODMyOltbNDAsMTk5NjgsNDFdLDI1Nl0sMTI4MzM6W1s0MCwyMDEwOCw0MV0sMjU2XSwxMjgzNDpbWzQwLDE5OTc3LDQxXSwyNTZdLDEyODM1OltbNDAsMjIyMzUsNDFdLDI1Nl0sMTI4MzY6W1s0MCwyMDExNiw0MV0sMjU2XSwxMjgzNzpbWzQwLDIwODQ1LDQxXSwyNTZdLDEyODM4OltbNDAsMTk5NzEsNDFdLDI1Nl0sMTI4Mzk6W1s0MCwyMDg0Myw0MV0sMjU2XSwxMjg0MDpbWzQwLDIwMDYxLDQxXSwyNTZdLDEyODQxOltbNDAsMjEzMTMsNDFdLDI1Nl0sMTI4NDI6W1s0MCwyNjM3Niw0MV0sMjU2XSwxMjg0MzpbWzQwLDI4Nzc5LDQxXSwyNTZdLDEyODQ0OltbNDAsMjc3MDAsNDFdLDI1Nl0sMTI4NDU6W1s0MCwyNjQwOCw0MV0sMjU2XSwxMjg0NjpbWzQwLDM3MzI5LDQxXSwyNTZdLDEyODQ3OltbNDAsMjIzMDMsNDFdLDI1Nl0sMTI4NDg6W1s0MCwyNjA4NSw0MV0sMjU2XSwxMjg0OTpbWzQwLDI2NjY2LDQxXSwyNTZdLDEyODUwOltbNDAsMjYzNzcsNDFdLDI1Nl0sMTI4NTE6W1s0MCwzMTAzOCw0MV0sMjU2XSwxMjg1MjpbWzQwLDIxNTE3LDQxXSwyNTZdLDEyODUzOltbNDAsMjkzMDUsNDFdLDI1Nl0sMTI4NTQ6W1s0MCwzNjAwMSw0MV0sMjU2XSwxMjg1NTpbWzQwLDMxMDY5LDQxXSwyNTZdLDEyODU2OltbNDAsMjExNzIsNDFdLDI1Nl0sMTI4NTc6W1s0MCwyMDE5NSw0MV0sMjU2XSwxMjg1ODpbWzQwLDIxNjI4LDQxXSwyNTZdLDEyODU5OltbNDAsMjMzOTgsNDFdLDI1Nl0sMTI4NjA6W1s0MCwzMDQzNSw0MV0sMjU2XSwxMjg2MTpbWzQwLDIwMjI1LDQxXSwyNTZdLDEyODYyOltbNDAsMzYwMzksNDFdLDI1Nl0sMTI4NjM6W1s0MCwyMTMzMiw0MV0sMjU2XSwxMjg2NDpbWzQwLDMxMDg1LDQxXSwyNTZdLDEyODY1OltbNDAsMjAyNDEsNDFdLDI1Nl0sMTI4NjY6W1s0MCwzMzI1OCw0MV0sMjU2XSwxMjg2NzpbWzQwLDMzMjY3LDQxXSwyNTZdLDEyODY4OltbMjE4MzldLDI1Nl0sMTI4Njk6W1syNDE4OF0sMjU2XSwxMjg3MDpbWzI1OTkxXSwyNTZdLDEyODcxOltbMzE2MzFdLDI1Nl0sMTI4ODA6W1s4MCw4NCw2OV0sMjU2XSwxMjg4MTpbWzUwLDQ5XSwyNTZdLDEyODgyOltbNTAsNTBdLDI1Nl0sMTI4ODM6W1s1MCw1MV0sMjU2XSwxMjg4NDpbWzUwLDUyXSwyNTZdLDEyODg1OltbNTAsNTNdLDI1Nl0sMTI4ODY6W1s1MCw1NF0sMjU2XSwxMjg4NzpbWzUwLDU1XSwyNTZdLDEyODg4OltbNTAsNTZdLDI1Nl0sMTI4ODk6W1s1MCw1N10sMjU2XSwxMjg5MDpbWzUxLDQ4XSwyNTZdLDEyODkxOltbNTEsNDldLDI1Nl0sMTI4OTI6W1s1MSw1MF0sMjU2XSwxMjg5MzpbWzUxLDUxXSwyNTZdLDEyODk0OltbNTEsNTJdLDI1Nl0sMTI4OTU6W1s1MSw1M10sMjU2XSwxMjg5NjpbWzQzNTJdLDI1Nl0sMTI4OTc6W1s0MzU0XSwyNTZdLDEyODk4OltbNDM1NV0sMjU2XSwxMjg5OTpbWzQzNTddLDI1Nl0sMTI5MDA6W1s0MzU4XSwyNTZdLDEyOTAxOltbNDM1OV0sMjU2XSwxMjkwMjpbWzQzNjFdLDI1Nl0sMTI5MDM6W1s0MzYzXSwyNTZdLDEyOTA0OltbNDM2NF0sMjU2XSwxMjkwNTpbWzQzNjZdLDI1Nl0sMTI5MDY6W1s0MzY3XSwyNTZdLDEyOTA3OltbNDM2OF0sMjU2XSwxMjkwODpbWzQzNjldLDI1Nl0sMTI5MDk6W1s0MzcwXSwyNTZdLDEyOTEwOltbNDM1Miw0NDQ5XSwyNTZdLDEyOTExOltbNDM1NCw0NDQ5XSwyNTZdLDEyOTEyOltbNDM1NSw0NDQ5XSwyNTZdLDEyOTEzOltbNDM1Nyw0NDQ5XSwyNTZdLDEyOTE0OltbNDM1OCw0NDQ5XSwyNTZdLDEyOTE1OltbNDM1OSw0NDQ5XSwyNTZdLDEyOTE2OltbNDM2MSw0NDQ5XSwyNTZdLDEyOTE3OltbNDM2Myw0NDQ5XSwyNTZdLDEyOTE4OltbNDM2NCw0NDQ5XSwyNTZdLDEyOTE5OltbNDM2Niw0NDQ5XSwyNTZdLDEyOTIwOltbNDM2Nyw0NDQ5XSwyNTZdLDEyOTIxOltbNDM2OCw0NDQ5XSwyNTZdLDEyOTIyOltbNDM2OSw0NDQ5XSwyNTZdLDEyOTIzOltbNDM3MCw0NDQ5XSwyNTZdLDEyOTI0OltbNDM2Niw0NDQ5LDQ1MzUsNDM1Miw0NDU3XSwyNTZdLDEyOTI1OltbNDM2NCw0NDYyLDQzNjMsNDQ2OF0sMjU2XSwxMjkyNjpbWzQzNjMsNDQ2Ml0sMjU2XSwxMjkyODpbWzE5OTY4XSwyNTZdLDEyOTI5OltbMjAxMDhdLDI1Nl0sMTI5MzA6W1sxOTk3N10sMjU2XSwxMjkzMTpbWzIyMjM1XSwyNTZdLDEyOTMyOltbMjAxMTZdLDI1Nl0sMTI5MzM6W1syMDg0NV0sMjU2XSwxMjkzNDpbWzE5OTcxXSwyNTZdLDEyOTM1OltbMjA4NDNdLDI1Nl0sMTI5MzY6W1syMDA2MV0sMjU2XSwxMjkzNzpbWzIxMzEzXSwyNTZdLDEyOTM4OltbMjYzNzZdLDI1Nl0sMTI5Mzk6W1syODc3OV0sMjU2XSwxMjk0MDpbWzI3NzAwXSwyNTZdLDEyOTQxOltbMjY0MDhdLDI1Nl0sMTI5NDI6W1szNzMyOV0sMjU2XSwxMjk0MzpbWzIyMzAzXSwyNTZdLDEyOTQ0OltbMjYwODVdLDI1Nl0sMTI5NDU6W1syNjY2Nl0sMjU2XSwxMjk0NjpbWzI2Mzc3XSwyNTZdLDEyOTQ3OltbMzEwMzhdLDI1Nl0sMTI5NDg6W1syMTUxN10sMjU2XSwxMjk0OTpbWzI5MzA1XSwyNTZdLDEyOTUwOltbMzYwMDFdLDI1Nl0sMTI5NTE6W1szMTA2OV0sMjU2XSwxMjk1MjpbWzIxMTcyXSwyNTZdLDEyOTUzOltbMzExOTJdLDI1Nl0sMTI5NTQ6W1szMDAwN10sMjU2XSwxMjk1NTpbWzIyODk5XSwyNTZdLDEyOTU2OltbMzY5NjldLDI1Nl0sMTI5NTc6W1syMDc3OF0sMjU2XSwxMjk1ODpbWzIxMzYwXSwyNTZdLDEyOTU5OltbMjc4ODBdLDI1Nl0sMTI5NjA6W1szODkxN10sMjU2XSwxMjk2MTpbWzIwMjQxXSwyNTZdLDEyOTYyOltbMjA4ODldLDI1Nl0sMTI5NjM6W1syNzQ5MV0sMjU2XSwxMjk2NDpbWzE5OTc4XSwyNTZdLDEyOTY1OltbMjAwMTNdLDI1Nl0sMTI5NjY6W1sxOTk3OV0sMjU2XSwxMjk2NzpbWzI0MDM4XSwyNTZdLDEyOTY4OltbMjE0OTFdLDI1Nl0sMTI5Njk6W1syMTMwN10sMjU2XSwxMjk3MDpbWzIzNDQ3XSwyNTZdLDEyOTcxOltbMjMzOThdLDI1Nl0sMTI5NzI6W1szMDQzNV0sMjU2XSwxMjk3MzpbWzIwMjI1XSwyNTZdLDEyOTc0OltbMzYwMzldLDI1Nl0sMTI5NzU6W1syMTMzMl0sMjU2XSwxMjk3NjpbWzIyODEyXSwyNTZdLDEyOTc3OltbNTEsNTRdLDI1Nl0sMTI5Nzg6W1s1MSw1NV0sMjU2XSwxMjk3OTpbWzUxLDU2XSwyNTZdLDEyOTgwOltbNTEsNTddLDI1Nl0sMTI5ODE6W1s1Miw0OF0sMjU2XSwxMjk4MjpbWzUyLDQ5XSwyNTZdLDEyOTgzOltbNTIsNTBdLDI1Nl0sMTI5ODQ6W1s1Miw1MV0sMjU2XSwxMjk4NTpbWzUyLDUyXSwyNTZdLDEyOTg2OltbNTIsNTNdLDI1Nl0sMTI5ODc6W1s1Miw1NF0sMjU2XSwxMjk4ODpbWzUyLDU1XSwyNTZdLDEyOTg5OltbNTIsNTZdLDI1Nl0sMTI5OTA6W1s1Miw1N10sMjU2XSwxMjk5MTpbWzUzLDQ4XSwyNTZdLDEyOTkyOltbNDksMjYzNzZdLDI1Nl0sMTI5OTM6W1s1MCwyNjM3Nl0sMjU2XSwxMjk5NDpbWzUxLDI2Mzc2XSwyNTZdLDEyOTk1OltbNTIsMjYzNzZdLDI1Nl0sMTI5OTY6W1s1MywyNjM3Nl0sMjU2XSwxMjk5NzpbWzU0LDI2Mzc2XSwyNTZdLDEyOTk4OltbNTUsMjYzNzZdLDI1Nl0sMTI5OTk6W1s1NiwyNjM3Nl0sMjU2XSwxMzAwMDpbWzU3LDI2Mzc2XSwyNTZdLDEzMDAxOltbNDksNDgsMjYzNzZdLDI1Nl0sMTMwMDI6W1s0OSw0OSwyNjM3Nl0sMjU2XSwxMzAwMzpbWzQ5LDUwLDI2Mzc2XSwyNTZdLDEzMDA0OltbNzIsMTAzXSwyNTZdLDEzMDA1OltbMTAxLDExNCwxMDNdLDI1Nl0sMTMwMDY6W1sxMDEsODZdLDI1Nl0sMTMwMDc6W1s3Niw4NCw2OF0sMjU2XSwxMzAwODpbWzEyNDUwXSwyNTZdLDEzMDA5OltbMTI0NTJdLDI1Nl0sMTMwMTA6W1sxMjQ1NF0sMjU2XSwxMzAxMTpbWzEyNDU2XSwyNTZdLDEzMDEyOltbMTI0NThdLDI1Nl0sMTMwMTM6W1sxMjQ1OV0sMjU2XSwxMzAxNDpbWzEyNDYxXSwyNTZdLDEzMDE1OltbMTI0NjNdLDI1Nl0sMTMwMTY6W1sxMjQ2NV0sMjU2XSwxMzAxNzpbWzEyNDY3XSwyNTZdLDEzMDE4OltbMTI0NjldLDI1Nl0sMTMwMTk6W1sxMjQ3MV0sMjU2XSwxMzAyMDpbWzEyNDczXSwyNTZdLDEzMDIxOltbMTI0NzVdLDI1Nl0sMTMwMjI6W1sxMjQ3N10sMjU2XSwxMzAyMzpbWzEyNDc5XSwyNTZdLDEzMDI0OltbMTI0ODFdLDI1Nl0sMTMwMjU6W1sxMjQ4NF0sMjU2XSwxMzAyNjpbWzEyNDg2XSwyNTZdLDEzMDI3OltbMTI0ODhdLDI1Nl0sMTMwMjg6W1sxMjQ5MF0sMjU2XSwxMzAyOTpbWzEyNDkxXSwyNTZdLDEzMDMwOltbMTI0OTJdLDI1Nl0sMTMwMzE6W1sxMjQ5M10sMjU2XSwxMzAzMjpbWzEyNDk0XSwyNTZdLDEzMDMzOltbMTI0OTVdLDI1Nl0sMTMwMzQ6W1sxMjQ5OF0sMjU2XSwxMzAzNTpbWzEyNTAxXSwyNTZdLDEzMDM2OltbMTI1MDRdLDI1Nl0sMTMwMzc6W1sxMjUwN10sMjU2XSwxMzAzODpbWzEyNTEwXSwyNTZdLDEzMDM5OltbMTI1MTFdLDI1Nl0sMTMwNDA6W1sxMjUxMl0sMjU2XSwxMzA0MTpbWzEyNTEzXSwyNTZdLDEzMDQyOltbMTI1MTRdLDI1Nl0sMTMwNDM6W1sxMjUxNl0sMjU2XSwxMzA0NDpbWzEyNTE4XSwyNTZdLDEzMDQ1OltbMTI1MjBdLDI1Nl0sMTMwNDY6W1sxMjUyMV0sMjU2XSwxMzA0NzpbWzEyNTIyXSwyNTZdLDEzMDQ4OltbMTI1MjNdLDI1Nl0sMTMwNDk6W1sxMjUyNF0sMjU2XSwxMzA1MDpbWzEyNTI1XSwyNTZdLDEzMDUxOltbMTI1MjddLDI1Nl0sMTMwNTI6W1sxMjUyOF0sMjU2XSwxMzA1MzpbWzEyNTI5XSwyNTZdLDEzMDU0OltbMTI1MzBdLDI1Nl19LFxuMTMwNTY6ezEzMDU2OltbMTI0NTAsMTI0OTcsMTI1NDAsMTI0ODhdLDI1Nl0sMTMwNTc6W1sxMjQ1MCwxMjUyMywxMjUwMSwxMjQ0OV0sMjU2XSwxMzA1ODpbWzEyNDUwLDEyNTMxLDEyNTA2LDEyNDUwXSwyNTZdLDEzMDU5OltbMTI0NTAsMTI1NDAsMTI1MjNdLDI1Nl0sMTMwNjA6W1sxMjQ1MiwxMjQ5MSwxMjUzMSwxMjQ2NF0sMjU2XSwxMzA2MTpbWzEyNDUyLDEyNTMxLDEyNDgxXSwyNTZdLDEzMDYyOltbMTI0NTQsMTI0NTcsMTI1MzFdLDI1Nl0sMTMwNjM6W1sxMjQ1NiwxMjQ3MywxMjQ2MywxMjU0MCwxMjQ4OV0sMjU2XSwxMzA2NDpbWzEyNDU2LDEyNTQwLDEyNDU5LDEyNTQwXSwyNTZdLDEzMDY1OltbMTI0NTgsMTI1MzEsMTI0NzNdLDI1Nl0sMTMwNjY6W1sxMjQ1OCwxMjU0MCwxMjUxMl0sMjU2XSwxMzA2NzpbWzEyNDU5LDEyNDUyLDEyNTIyXSwyNTZdLDEzMDY4OltbMTI0NTksMTI1MjEsMTI0ODMsMTI0ODhdLDI1Nl0sMTMwNjk6W1sxMjQ1OSwxMjUyNSwxMjUyMiwxMjU0MF0sMjU2XSwxMzA3MDpbWzEyNDYwLDEyNTI1LDEyNTMxXSwyNTZdLDEzMDcxOltbMTI0NjAsMTI1MzEsMTI1MTBdLDI1Nl0sMTMwNzI6W1sxMjQ2MiwxMjQ2MF0sMjU2XSwxMzA3MzpbWzEyNDYyLDEyNDkxLDEyNTQwXSwyNTZdLDEzMDc0OltbMTI0NjEsMTI1MTcsMTI1MjIsMTI1NDBdLDI1Nl0sMTMwNzU6W1sxMjQ2MiwxMjUyMywxMjQ4MCwxMjU0MF0sMjU2XSwxMzA3NjpbWzEyNDYxLDEyNTI1XSwyNTZdLDEzMDc3OltbMTI0NjEsMTI1MjUsMTI0NjQsMTI1MjEsMTI1MTJdLDI1Nl0sMTMwNzg6W1sxMjQ2MSwxMjUyNSwxMjUxMywxMjU0MCwxMjQ4OCwxMjUyM10sMjU2XSwxMzA3OTpbWzEyNDYxLDEyNTI1LDEyNTI3LDEyNDgzLDEyNDg4XSwyNTZdLDEzMDgwOltbMTI0NjQsMTI1MjEsMTI1MTJdLDI1Nl0sMTMwODE6W1sxMjQ2NCwxMjUyMSwxMjUxMiwxMjQ4OCwxMjUzMV0sMjU2XSwxMzA4MjpbWzEyNDYzLDEyNTIzLDEyNDc2LDEyNDUyLDEyNTI1XSwyNTZdLDEzMDgzOltbMTI0NjMsMTI1MjUsMTI1NDAsMTI0OTNdLDI1Nl0sMTMwODQ6W1sxMjQ2NSwxMjU0MCwxMjQ3M10sMjU2XSwxMzA4NTpbWzEyNDY3LDEyNTIzLDEyNDkwXSwyNTZdLDEzMDg2OltbMTI0NjcsMTI1NDAsMTI1MDldLDI1Nl0sMTMwODc6W1sxMjQ2OSwxMjQ1MiwxMjQ2MywxMjUyM10sMjU2XSwxMzA4ODpbWzEyNDY5LDEyNTMxLDEyNDgxLDEyNTQwLDEyNTEyXSwyNTZdLDEzMDg5OltbMTI0NzEsMTI1MjIsMTI1MzEsMTI0NjRdLDI1Nl0sMTMwOTA6W1sxMjQ3NSwxMjUzMSwxMjQ4MV0sMjU2XSwxMzA5MTpbWzEyNDc1LDEyNTMxLDEyNDg4XSwyNTZdLDEzMDkyOltbMTI0ODAsMTI1NDAsMTI0NzNdLDI1Nl0sMTMwOTM6W1sxMjQ4NywxMjQ3MV0sMjU2XSwxMzA5NDpbWzEyNDg5LDEyNTIzXSwyNTZdLDEzMDk1OltbMTI0ODgsMTI1MzFdLDI1Nl0sMTMwOTY6W1sxMjQ5MCwxMjQ5NF0sMjU2XSwxMzA5NzpbWzEyNDk0LDEyNDgzLDEyNDg4XSwyNTZdLDEzMDk4OltbMTI0OTUsMTI0NTIsMTI0ODRdLDI1Nl0sMTMwOTk6W1sxMjQ5NywxMjU0MCwxMjQ3NSwxMjUzMSwxMjQ4OF0sMjU2XSwxMzEwMDpbWzEyNDk3LDEyNTQwLDEyNDg0XSwyNTZdLDEzMTAxOltbMTI0OTYsMTI1NDAsMTI1MjQsMTI1MjNdLDI1Nl0sMTMxMDI6W1sxMjUwMCwxMjQ1MCwxMjQ3MywxMjQ4OCwxMjUyM10sMjU2XSwxMzEwMzpbWzEyNTAwLDEyNDYzLDEyNTIzXSwyNTZdLDEzMTA0OltbMTI1MDAsMTI0NjddLDI1Nl0sMTMxMDU6W1sxMjQ5OSwxMjUyM10sMjU2XSwxMzEwNjpbWzEyNTAxLDEyNDQ5LDEyNTIxLDEyNDgzLDEyNDg5XSwyNTZdLDEzMTA3OltbMTI1MDEsMTI0NTEsMTI1NDAsMTI0ODhdLDI1Nl0sMTMxMDg6W1sxMjUwMiwxMjQ4MywxMjQ3MSwxMjQ1NSwxMjUyM10sMjU2XSwxMzEwOTpbWzEyNTAxLDEyNTIxLDEyNTMxXSwyNTZdLDEzMTEwOltbMTI1MDQsMTI0NjMsMTI0NzksMTI1NDAsMTI1MjNdLDI1Nl0sMTMxMTE6W1sxMjUwNiwxMjQ3N10sMjU2XSwxMzExMjpbWzEyNTA2LDEyNDkxLDEyNDk4XSwyNTZdLDEzMTEzOltbMTI1MDQsMTI1MjMsMTI0ODRdLDI1Nl0sMTMxMTQ6W1sxMjUwNiwxMjUzMSwxMjQ3M10sMjU2XSwxMzExNTpbWzEyNTA2LDEyNTQwLDEyNDcyXSwyNTZdLDEzMTE2OltbMTI1MDUsMTI1NDAsMTI0NzldLDI1Nl0sMTMxMTc6W1sxMjUwOSwxMjQ1MiwxMjUzMSwxMjQ4OF0sMjU2XSwxMzExODpbWzEyNTA4LDEyNTIzLDEyNDg4XSwyNTZdLDEzMTE5OltbMTI1MDcsMTI1MzFdLDI1Nl0sMTMxMjA6W1sxMjUwOSwxMjUzMSwxMjQ4OV0sMjU2XSwxMzEyMTpbWzEyNTA3LDEyNTQwLDEyNTIzXSwyNTZdLDEzMTIyOltbMTI1MDcsMTI1NDAsMTI1MzFdLDI1Nl0sMTMxMjM6W1sxMjUxMCwxMjQ1MiwxMjQ2MywxMjUyNV0sMjU2XSwxMzEyNDpbWzEyNTEwLDEyNDUyLDEyNTIzXSwyNTZdLDEzMTI1OltbMTI1MTAsMTI0ODMsMTI0OTVdLDI1Nl0sMTMxMjY6W1sxMjUxMCwxMjUyMywxMjQ2M10sMjU2XSwxMzEyNzpbWzEyNTEwLDEyNTMxLDEyNDcxLDEyNTE5LDEyNTMxXSwyNTZdLDEzMTI4OltbMTI1MTEsMTI0NjMsMTI1MjUsMTI1MzFdLDI1Nl0sMTMxMjk6W1sxMjUxMSwxMjUyMl0sMjU2XSwxMzEzMDpbWzEyNTExLDEyNTIyLDEyNDk2LDEyNTQwLDEyNTIzXSwyNTZdLDEzMTMxOltbMTI1MTMsMTI0NjBdLDI1Nl0sMTMxMzI6W1sxMjUxMywxMjQ2MCwxMjQ4OCwxMjUzMV0sMjU2XSwxMzEzMzpbWzEyNTEzLDEyNTQwLDEyNDg4LDEyNTIzXSwyNTZdLDEzMTM0OltbMTI1MTYsMTI1NDAsMTI0ODldLDI1Nl0sMTMxMzU6W1sxMjUxNiwxMjU0MCwxMjUyM10sMjU2XSwxMzEzNjpbWzEyNTE4LDEyNDUwLDEyNTMxXSwyNTZdLDEzMTM3OltbMTI1MjIsMTI0ODMsMTI0ODgsMTI1MjNdLDI1Nl0sMTMxMzg6W1sxMjUyMiwxMjUyMV0sMjU2XSwxMzEzOTpbWzEyNTIzLDEyNTAwLDEyNTQwXSwyNTZdLDEzMTQwOltbMTI1MjMsMTI1NDAsMTI1MDIsMTI1MjNdLDI1Nl0sMTMxNDE6W1sxMjUyNCwxMjUxMl0sMjU2XSwxMzE0MjpbWzEyNTI0LDEyNTMxLDEyNDg4LDEyNDY2LDEyNTMxXSwyNTZdLDEzMTQzOltbMTI1MjcsMTI0ODMsMTI0ODhdLDI1Nl0sMTMxNDQ6W1s0OCwyODg1N10sMjU2XSwxMzE0NTpbWzQ5LDI4ODU3XSwyNTZdLDEzMTQ2OltbNTAsMjg4NTddLDI1Nl0sMTMxNDc6W1s1MSwyODg1N10sMjU2XSwxMzE0ODpbWzUyLDI4ODU3XSwyNTZdLDEzMTQ5OltbNTMsMjg4NTddLDI1Nl0sMTMxNTA6W1s1NCwyODg1N10sMjU2XSwxMzE1MTpbWzU1LDI4ODU3XSwyNTZdLDEzMTUyOltbNTYsMjg4NTddLDI1Nl0sMTMxNTM6W1s1NywyODg1N10sMjU2XSwxMzE1NDpbWzQ5LDQ4LDI4ODU3XSwyNTZdLDEzMTU1OltbNDksNDksMjg4NTddLDI1Nl0sMTMxNTY6W1s0OSw1MCwyODg1N10sMjU2XSwxMzE1NzpbWzQ5LDUxLDI4ODU3XSwyNTZdLDEzMTU4OltbNDksNTIsMjg4NTddLDI1Nl0sMTMxNTk6W1s0OSw1MywyODg1N10sMjU2XSwxMzE2MDpbWzQ5LDU0LDI4ODU3XSwyNTZdLDEzMTYxOltbNDksNTUsMjg4NTddLDI1Nl0sMTMxNjI6W1s0OSw1NiwyODg1N10sMjU2XSwxMzE2MzpbWzQ5LDU3LDI4ODU3XSwyNTZdLDEzMTY0OltbNTAsNDgsMjg4NTddLDI1Nl0sMTMxNjU6W1s1MCw0OSwyODg1N10sMjU2XSwxMzE2NjpbWzUwLDUwLDI4ODU3XSwyNTZdLDEzMTY3OltbNTAsNTEsMjg4NTddLDI1Nl0sMTMxNjg6W1s1MCw1MiwyODg1N10sMjU2XSwxMzE2OTpbWzEwNCw4MCw5N10sMjU2XSwxMzE3MDpbWzEwMCw5N10sMjU2XSwxMzE3MTpbWzY1LDg1XSwyNTZdLDEzMTcyOltbOTgsOTcsMTE0XSwyNTZdLDEzMTczOltbMTExLDg2XSwyNTZdLDEzMTc0OltbMTEyLDk5XSwyNTZdLDEzMTc1OltbMTAwLDEwOV0sMjU2XSwxMzE3NjpbWzEwMCwxMDksMTc4XSwyNTZdLDEzMTc3OltbMTAwLDEwOSwxNzldLDI1Nl0sMTMxNzg6W1s3Myw4NV0sMjU2XSwxMzE3OTpbWzI0MTc5LDI1MTA0XSwyNTZdLDEzMTgwOltbMjYxNTcsMjE2NDRdLDI1Nl0sMTMxODE6W1syMjgyMywyNzQ5MV0sMjU2XSwxMzE4MjpbWzI2MTI2LDI3ODM1XSwyNTZdLDEzMTgzOltbMjY2NjYsMjQzMzUsMjAyNTAsMzEwMzhdLDI1Nl0sMTMxODQ6W1sxMTIsNjVdLDI1Nl0sMTMxODU6W1sxMTAsNjVdLDI1Nl0sMTMxODY6W1s5NTYsNjVdLDI1Nl0sMTMxODc6W1sxMDksNjVdLDI1Nl0sMTMxODg6W1sxMDcsNjVdLDI1Nl0sMTMxODk6W1s3NSw2Nl0sMjU2XSwxMzE5MDpbWzc3LDY2XSwyNTZdLDEzMTkxOltbNzEsNjZdLDI1Nl0sMTMxOTI6W1s5OSw5NywxMDhdLDI1Nl0sMTMxOTM6W1sxMDcsOTksOTcsMTA4XSwyNTZdLDEzMTk0OltbMTEyLDcwXSwyNTZdLDEzMTk1OltbMTEwLDcwXSwyNTZdLDEzMTk2OltbOTU2LDcwXSwyNTZdLDEzMTk3OltbOTU2LDEwM10sMjU2XSwxMzE5ODpbWzEwOSwxMDNdLDI1Nl0sMTMxOTk6W1sxMDcsMTAzXSwyNTZdLDEzMjAwOltbNzIsMTIyXSwyNTZdLDEzMjAxOltbMTA3LDcyLDEyMl0sMjU2XSwxMzIwMjpbWzc3LDcyLDEyMl0sMjU2XSwxMzIwMzpbWzcxLDcyLDEyMl0sMjU2XSwxMzIwNDpbWzg0LDcyLDEyMl0sMjU2XSwxMzIwNTpbWzk1Niw4NDY3XSwyNTZdLDEzMjA2OltbMTA5LDg0NjddLDI1Nl0sMTMyMDc6W1sxMDAsODQ2N10sMjU2XSwxMzIwODpbWzEwNyw4NDY3XSwyNTZdLDEzMjA5OltbMTAyLDEwOV0sMjU2XSwxMzIxMDpbWzExMCwxMDldLDI1Nl0sMTMyMTE6W1s5NTYsMTA5XSwyNTZdLDEzMjEyOltbMTA5LDEwOV0sMjU2XSwxMzIxMzpbWzk5LDEwOV0sMjU2XSwxMzIxNDpbWzEwNywxMDldLDI1Nl0sMTMyMTU6W1sxMDksMTA5LDE3OF0sMjU2XSwxMzIxNjpbWzk5LDEwOSwxNzhdLDI1Nl0sMTMyMTc6W1sxMDksMTc4XSwyNTZdLDEzMjE4OltbMTA3LDEwOSwxNzhdLDI1Nl0sMTMyMTk6W1sxMDksMTA5LDE3OV0sMjU2XSwxMzIyMDpbWzk5LDEwOSwxNzldLDI1Nl0sMTMyMjE6W1sxMDksMTc5XSwyNTZdLDEzMjIyOltbMTA3LDEwOSwxNzldLDI1Nl0sMTMyMjM6W1sxMDksODcyNSwxMTVdLDI1Nl0sMTMyMjQ6W1sxMDksODcyNSwxMTUsMTc4XSwyNTZdLDEzMjI1OltbODAsOTddLDI1Nl0sMTMyMjY6W1sxMDcsODAsOTddLDI1Nl0sMTMyMjc6W1s3Nyw4MCw5N10sMjU2XSwxMzIyODpbWzcxLDgwLDk3XSwyNTZdLDEzMjI5OltbMTE0LDk3LDEwMF0sMjU2XSwxMzIzMDpbWzExNCw5NywxMDAsODcyNSwxMTVdLDI1Nl0sMTMyMzE6W1sxMTQsOTcsMTAwLDg3MjUsMTE1LDE3OF0sMjU2XSwxMzIzMjpbWzExMiwxMTVdLDI1Nl0sMTMyMzM6W1sxMTAsMTE1XSwyNTZdLDEzMjM0OltbOTU2LDExNV0sMjU2XSwxMzIzNTpbWzEwOSwxMTVdLDI1Nl0sMTMyMzY6W1sxMTIsODZdLDI1Nl0sMTMyMzc6W1sxMTAsODZdLDI1Nl0sMTMyMzg6W1s5NTYsODZdLDI1Nl0sMTMyMzk6W1sxMDksODZdLDI1Nl0sMTMyNDA6W1sxMDcsODZdLDI1Nl0sMTMyNDE6W1s3Nyw4Nl0sMjU2XSwxMzI0MjpbWzExMiw4N10sMjU2XSwxMzI0MzpbWzExMCw4N10sMjU2XSwxMzI0NDpbWzk1Niw4N10sMjU2XSwxMzI0NTpbWzEwOSw4N10sMjU2XSwxMzI0NjpbWzEwNyw4N10sMjU2XSwxMzI0NzpbWzc3LDg3XSwyNTZdLDEzMjQ4OltbMTA3LDkzN10sMjU2XSwxMzI0OTpbWzc3LDkzN10sMjU2XSwxMzI1MDpbWzk3LDQ2LDEwOSw0Nl0sMjU2XSwxMzI1MTpbWzY2LDExM10sMjU2XSwxMzI1MjpbWzk5LDk5XSwyNTZdLDEzMjUzOltbOTksMTAwXSwyNTZdLDEzMjU0OltbNjcsODcyNSwxMDcsMTAzXSwyNTZdLDEzMjU1OltbNjcsMTExLDQ2XSwyNTZdLDEzMjU2OltbMTAwLDY2XSwyNTZdLDEzMjU3OltbNzEsMTIxXSwyNTZdLDEzMjU4OltbMTA0LDk3XSwyNTZdLDEzMjU5OltbNzIsODBdLDI1Nl0sMTMyNjA6W1sxMDUsMTEwXSwyNTZdLDEzMjYxOltbNzUsNzVdLDI1Nl0sMTMyNjI6W1s3NSw3N10sMjU2XSwxMzI2MzpbWzEwNywxMTZdLDI1Nl0sMTMyNjQ6W1sxMDgsMTA5XSwyNTZdLDEzMjY1OltbMTA4LDExMF0sMjU2XSwxMzI2NjpbWzEwOCwxMTEsMTAzXSwyNTZdLDEzMjY3OltbMTA4LDEyMF0sMjU2XSwxMzI2ODpbWzEwOSw5OF0sMjU2XSwxMzI2OTpbWzEwOSwxMDUsMTA4XSwyNTZdLDEzMjcwOltbMTA5LDExMSwxMDhdLDI1Nl0sMTMyNzE6W1s4MCw3Ml0sMjU2XSwxMzI3MjpbWzExMiw0NiwxMDksNDZdLDI1Nl0sMTMyNzM6W1s4MCw4MCw3N10sMjU2XSwxMzI3NDpbWzgwLDgyXSwyNTZdLDEzMjc1OltbMTE1LDExNF0sMjU2XSwxMzI3NjpbWzgzLDExOF0sMjU2XSwxMzI3NzpbWzg3LDk4XSwyNTZdLDEzMjc4OltbODYsODcyNSwxMDldLDI1Nl0sMTMyNzk6W1s2NSw4NzI1LDEwOV0sMjU2XSwxMzI4MDpbWzQ5LDI2MDg1XSwyNTZdLDEzMjgxOltbNTAsMjYwODVdLDI1Nl0sMTMyODI6W1s1MSwyNjA4NV0sMjU2XSwxMzI4MzpbWzUyLDI2MDg1XSwyNTZdLDEzMjg0OltbNTMsMjYwODVdLDI1Nl0sMTMyODU6W1s1NCwyNjA4NV0sMjU2XSwxMzI4NjpbWzU1LDI2MDg1XSwyNTZdLDEzMjg3OltbNTYsMjYwODVdLDI1Nl0sMTMyODg6W1s1NywyNjA4NV0sMjU2XSwxMzI4OTpbWzQ5LDQ4LDI2MDg1XSwyNTZdLDEzMjkwOltbNDksNDksMjYwODVdLDI1Nl0sMTMyOTE6W1s0OSw1MCwyNjA4NV0sMjU2XSwxMzI5MjpbWzQ5LDUxLDI2MDg1XSwyNTZdLDEzMjkzOltbNDksNTIsMjYwODVdLDI1Nl0sMTMyOTQ6W1s0OSw1MywyNjA4NV0sMjU2XSwxMzI5NTpbWzQ5LDU0LDI2MDg1XSwyNTZdLDEzMjk2OltbNDksNTUsMjYwODVdLDI1Nl0sMTMyOTc6W1s0OSw1NiwyNjA4NV0sMjU2XSwxMzI5ODpbWzQ5LDU3LDI2MDg1XSwyNTZdLDEzMjk5OltbNTAsNDgsMjYwODVdLDI1Nl0sMTMzMDA6W1s1MCw0OSwyNjA4NV0sMjU2XSwxMzMwMTpbWzUwLDUwLDI2MDg1XSwyNTZdLDEzMzAyOltbNTAsNTEsMjYwODVdLDI1Nl0sMTMzMDM6W1s1MCw1MiwyNjA4NV0sMjU2XSwxMzMwNDpbWzUwLDUzLDI2MDg1XSwyNTZdLDEzMzA1OltbNTAsNTQsMjYwODVdLDI1Nl0sMTMzMDY6W1s1MCw1NSwyNjA4NV0sMjU2XSwxMzMwNzpbWzUwLDU2LDI2MDg1XSwyNTZdLDEzMzA4OltbNTAsNTcsMjYwODVdLDI1Nl0sMTMzMDk6W1s1MSw0OCwyNjA4NV0sMjU2XSwxMzMxMDpbWzUxLDQ5LDI2MDg1XSwyNTZdLDEzMzExOltbMTAzLDk3LDEwOF0sMjU2XX0sXG4yNzEzNjp7OTI5MTI6WywxXSw5MjkxMzpbLDFdLDkyOTE0OlssMV0sOTI5MTU6WywxXSw5MjkxNjpbLDFdfSxcbjI3MzkyOns5Mjk3NjpbLDIzMF0sOTI5Nzc6WywyMzBdLDkyOTc4OlssMjMwXSw5Mjk3OTpbLDIzMF0sOTI5ODA6WywyMzBdLDkyOTgxOlssMjMwXSw5Mjk4MjpbLDIzMF19LFxuNDI0OTY6ezQyNjA3OlssMjMwXSw0MjYxMjpbLDIzMF0sNDI2MTM6WywyMzBdLDQyNjE0OlssMjMwXSw0MjYxNTpbLDIzMF0sNDI2MTY6WywyMzBdLDQyNjE3OlssMjMwXSw0MjYxODpbLDIzMF0sNDI2MTk6WywyMzBdLDQyNjIwOlssMjMwXSw0MjYyMTpbLDIzMF0sNDI2NTI6W1sxMDk4XSwyNTZdLDQyNjUzOltbMTEwMF0sMjU2XSw0MjY1NTpbLDIzMF0sNDI3MzY6WywyMzBdLDQyNzM3OlssMjMwXX0sXG40Mjc1Mjp7NDI4NjQ6W1s0Mjg2M10sMjU2XSw0MzAwMDpbWzI5NF0sMjU2XSw0MzAwMTpbWzMzOV0sMjU2XX0sXG40MzAwODp7NDMwMTQ6Wyw5XSw0MzIwNDpbLDldLDQzMjMyOlssMjMwXSw0MzIzMzpbLDIzMF0sNDMyMzQ6WywyMzBdLDQzMjM1OlssMjMwXSw0MzIzNjpbLDIzMF0sNDMyMzc6WywyMzBdLDQzMjM4OlssMjMwXSw0MzIzOTpbLDIzMF0sNDMyNDA6WywyMzBdLDQzMjQxOlssMjMwXSw0MzI0MjpbLDIzMF0sNDMyNDM6WywyMzBdLDQzMjQ0OlssMjMwXSw0MzI0NTpbLDIzMF0sNDMyNDY6WywyMzBdLDQzMjQ3OlssMjMwXSw0MzI0ODpbLDIzMF0sNDMyNDk6WywyMzBdfSxcbjQzMjY0Ons0MzMwNzpbLDIyMF0sNDMzMDg6WywyMjBdLDQzMzA5OlssMjIwXSw0MzM0NzpbLDldLDQzNDQzOlssN10sNDM0NTY6Wyw5XX0sXG40MzUyMDp7NDM2OTY6WywyMzBdLDQzNjk4OlssMjMwXSw0MzY5OTpbLDIzMF0sNDM3MDA6WywyMjBdLDQzNzAzOlssMjMwXSw0MzcwNDpbLDIzMF0sNDM3MTA6WywyMzBdLDQzNzExOlssMjMwXSw0MzcxMzpbLDIzMF0sNDM3NjY6Wyw5XX0sXG40Mzc3Njp7NDM4Njg6W1s0Mjc5MV0sMjU2XSw0Mzg2OTpbWzQzODMxXSwyNTZdLDQzODcwOltbNjE5XSwyNTZdLDQzODcxOltbNDM4NThdLDI1Nl0sNDQwMTM6Wyw5XX0sXG40ODEyODp7MTEzODIyOlssMV19LFxuNTM1MDQ6ezExOTEzNDpbWzExOTEyNywxMTkxNDFdLDUxMl0sMTE5MTM1OltbMTE5MTI4LDExOTE0MV0sNTEyXSwxMTkxMzY6W1sxMTkxMzUsMTE5MTUwXSw1MTJdLDExOTEzNzpbWzExOTEzNSwxMTkxNTFdLDUxMl0sMTE5MTM4OltbMTE5MTM1LDExOTE1Ml0sNTEyXSwxMTkxMzk6W1sxMTkxMzUsMTE5MTUzXSw1MTJdLDExOTE0MDpbWzExOTEzNSwxMTkxNTRdLDUxMl0sMTE5MTQxOlssMjE2XSwxMTkxNDI6WywyMTZdLDExOTE0MzpbLDFdLDExOTE0NDpbLDFdLDExOTE0NTpbLDFdLDExOTE0OTpbLDIyNl0sMTE5MTUwOlssMjE2XSwxMTkxNTE6WywyMTZdLDExOTE1MjpbLDIxNl0sMTE5MTUzOlssMjE2XSwxMTkxNTQ6WywyMTZdLDExOTE2MzpbLDIyMF0sMTE5MTY0OlssMjIwXSwxMTkxNjU6WywyMjBdLDExOTE2NjpbLDIyMF0sMTE5MTY3OlssMjIwXSwxMTkxNjg6WywyMjBdLDExOTE2OTpbLDIyMF0sMTE5MTcwOlssMjIwXSwxMTkxNzM6WywyMzBdLDExOTE3NDpbLDIzMF0sMTE5MTc1OlssMjMwXSwxMTkxNzY6WywyMzBdLDExOTE3NzpbLDIzMF0sMTE5MTc4OlssMjIwXSwxMTkxNzk6WywyMjBdLDExOTIxMDpbLDIzMF0sMTE5MjExOlssMjMwXSwxMTkyMTI6WywyMzBdLDExOTIxMzpbLDIzMF0sMTE5MjI3OltbMTE5MjI1LDExOTE0MV0sNTEyXSwxMTkyMjg6W1sxMTkyMjYsMTE5MTQxXSw1MTJdLDExOTIyOTpbWzExOTIyNywxMTkxNTBdLDUxMl0sMTE5MjMwOltbMTE5MjI4LDExOTE1MF0sNTEyXSwxMTkyMzE6W1sxMTkyMjcsMTE5MTUxXSw1MTJdLDExOTIzMjpbWzExOTIyOCwxMTkxNTFdLDUxMl19LFxuNTM3NjA6ezExOTM2MjpbLDIzMF0sMTE5MzYzOlssMjMwXSwxMTkzNjQ6WywyMzBdfSxcbjU0MjcyOnsxMTk4MDg6W1s2NV0sMjU2XSwxMTk4MDk6W1s2Nl0sMjU2XSwxMTk4MTA6W1s2N10sMjU2XSwxMTk4MTE6W1s2OF0sMjU2XSwxMTk4MTI6W1s2OV0sMjU2XSwxMTk4MTM6W1s3MF0sMjU2XSwxMTk4MTQ6W1s3MV0sMjU2XSwxMTk4MTU6W1s3Ml0sMjU2XSwxMTk4MTY6W1s3M10sMjU2XSwxMTk4MTc6W1s3NF0sMjU2XSwxMTk4MTg6W1s3NV0sMjU2XSwxMTk4MTk6W1s3Nl0sMjU2XSwxMTk4MjA6W1s3N10sMjU2XSwxMTk4MjE6W1s3OF0sMjU2XSwxMTk4MjI6W1s3OV0sMjU2XSwxMTk4MjM6W1s4MF0sMjU2XSwxMTk4MjQ6W1s4MV0sMjU2XSwxMTk4MjU6W1s4Ml0sMjU2XSwxMTk4MjY6W1s4M10sMjU2XSwxMTk4Mjc6W1s4NF0sMjU2XSwxMTk4Mjg6W1s4NV0sMjU2XSwxMTk4Mjk6W1s4Nl0sMjU2XSwxMTk4MzA6W1s4N10sMjU2XSwxMTk4MzE6W1s4OF0sMjU2XSwxMTk4MzI6W1s4OV0sMjU2XSwxMTk4MzM6W1s5MF0sMjU2XSwxMTk4MzQ6W1s5N10sMjU2XSwxMTk4MzU6W1s5OF0sMjU2XSwxMTk4MzY6W1s5OV0sMjU2XSwxMTk4Mzc6W1sxMDBdLDI1Nl0sMTE5ODM4OltbMTAxXSwyNTZdLDExOTgzOTpbWzEwMl0sMjU2XSwxMTk4NDA6W1sxMDNdLDI1Nl0sMTE5ODQxOltbMTA0XSwyNTZdLDExOTg0MjpbWzEwNV0sMjU2XSwxMTk4NDM6W1sxMDZdLDI1Nl0sMTE5ODQ0OltbMTA3XSwyNTZdLDExOTg0NTpbWzEwOF0sMjU2XSwxMTk4NDY6W1sxMDldLDI1Nl0sMTE5ODQ3OltbMTEwXSwyNTZdLDExOTg0ODpbWzExMV0sMjU2XSwxMTk4NDk6W1sxMTJdLDI1Nl0sMTE5ODUwOltbMTEzXSwyNTZdLDExOTg1MTpbWzExNF0sMjU2XSwxMTk4NTI6W1sxMTVdLDI1Nl0sMTE5ODUzOltbMTE2XSwyNTZdLDExOTg1NDpbWzExN10sMjU2XSwxMTk4NTU6W1sxMThdLDI1Nl0sMTE5ODU2OltbMTE5XSwyNTZdLDExOTg1NzpbWzEyMF0sMjU2XSwxMTk4NTg6W1sxMjFdLDI1Nl0sMTE5ODU5OltbMTIyXSwyNTZdLDExOTg2MDpbWzY1XSwyNTZdLDExOTg2MTpbWzY2XSwyNTZdLDExOTg2MjpbWzY3XSwyNTZdLDExOTg2MzpbWzY4XSwyNTZdLDExOTg2NDpbWzY5XSwyNTZdLDExOTg2NTpbWzcwXSwyNTZdLDExOTg2NjpbWzcxXSwyNTZdLDExOTg2NzpbWzcyXSwyNTZdLDExOTg2ODpbWzczXSwyNTZdLDExOTg2OTpbWzc0XSwyNTZdLDExOTg3MDpbWzc1XSwyNTZdLDExOTg3MTpbWzc2XSwyNTZdLDExOTg3MjpbWzc3XSwyNTZdLDExOTg3MzpbWzc4XSwyNTZdLDExOTg3NDpbWzc5XSwyNTZdLDExOTg3NTpbWzgwXSwyNTZdLDExOTg3NjpbWzgxXSwyNTZdLDExOTg3NzpbWzgyXSwyNTZdLDExOTg3ODpbWzgzXSwyNTZdLDExOTg3OTpbWzg0XSwyNTZdLDExOTg4MDpbWzg1XSwyNTZdLDExOTg4MTpbWzg2XSwyNTZdLDExOTg4MjpbWzg3XSwyNTZdLDExOTg4MzpbWzg4XSwyNTZdLDExOTg4NDpbWzg5XSwyNTZdLDExOTg4NTpbWzkwXSwyNTZdLDExOTg4NjpbWzk3XSwyNTZdLDExOTg4NzpbWzk4XSwyNTZdLDExOTg4ODpbWzk5XSwyNTZdLDExOTg4OTpbWzEwMF0sMjU2XSwxMTk4OTA6W1sxMDFdLDI1Nl0sMTE5ODkxOltbMTAyXSwyNTZdLDExOTg5MjpbWzEwM10sMjU2XSwxMTk4OTQ6W1sxMDVdLDI1Nl0sMTE5ODk1OltbMTA2XSwyNTZdLDExOTg5NjpbWzEwN10sMjU2XSwxMTk4OTc6W1sxMDhdLDI1Nl0sMTE5ODk4OltbMTA5XSwyNTZdLDExOTg5OTpbWzExMF0sMjU2XSwxMTk5MDA6W1sxMTFdLDI1Nl0sMTE5OTAxOltbMTEyXSwyNTZdLDExOTkwMjpbWzExM10sMjU2XSwxMTk5MDM6W1sxMTRdLDI1Nl0sMTE5OTA0OltbMTE1XSwyNTZdLDExOTkwNTpbWzExNl0sMjU2XSwxMTk5MDY6W1sxMTddLDI1Nl0sMTE5OTA3OltbMTE4XSwyNTZdLDExOTkwODpbWzExOV0sMjU2XSwxMTk5MDk6W1sxMjBdLDI1Nl0sMTE5OTEwOltbMTIxXSwyNTZdLDExOTkxMTpbWzEyMl0sMjU2XSwxMTk5MTI6W1s2NV0sMjU2XSwxMTk5MTM6W1s2Nl0sMjU2XSwxMTk5MTQ6W1s2N10sMjU2XSwxMTk5MTU6W1s2OF0sMjU2XSwxMTk5MTY6W1s2OV0sMjU2XSwxMTk5MTc6W1s3MF0sMjU2XSwxMTk5MTg6W1s3MV0sMjU2XSwxMTk5MTk6W1s3Ml0sMjU2XSwxMTk5MjA6W1s3M10sMjU2XSwxMTk5MjE6W1s3NF0sMjU2XSwxMTk5MjI6W1s3NV0sMjU2XSwxMTk5MjM6W1s3Nl0sMjU2XSwxMTk5MjQ6W1s3N10sMjU2XSwxMTk5MjU6W1s3OF0sMjU2XSwxMTk5MjY6W1s3OV0sMjU2XSwxMTk5Mjc6W1s4MF0sMjU2XSwxMTk5Mjg6W1s4MV0sMjU2XSwxMTk5Mjk6W1s4Ml0sMjU2XSwxMTk5MzA6W1s4M10sMjU2XSwxMTk5MzE6W1s4NF0sMjU2XSwxMTk5MzI6W1s4NV0sMjU2XSwxMTk5MzM6W1s4Nl0sMjU2XSwxMTk5MzQ6W1s4N10sMjU2XSwxMTk5MzU6W1s4OF0sMjU2XSwxMTk5MzY6W1s4OV0sMjU2XSwxMTk5Mzc6W1s5MF0sMjU2XSwxMTk5Mzg6W1s5N10sMjU2XSwxMTk5Mzk6W1s5OF0sMjU2XSwxMTk5NDA6W1s5OV0sMjU2XSwxMTk5NDE6W1sxMDBdLDI1Nl0sMTE5OTQyOltbMTAxXSwyNTZdLDExOTk0MzpbWzEwMl0sMjU2XSwxMTk5NDQ6W1sxMDNdLDI1Nl0sMTE5OTQ1OltbMTA0XSwyNTZdLDExOTk0NjpbWzEwNV0sMjU2XSwxMTk5NDc6W1sxMDZdLDI1Nl0sMTE5OTQ4OltbMTA3XSwyNTZdLDExOTk0OTpbWzEwOF0sMjU2XSwxMTk5NTA6W1sxMDldLDI1Nl0sMTE5OTUxOltbMTEwXSwyNTZdLDExOTk1MjpbWzExMV0sMjU2XSwxMTk5NTM6W1sxMTJdLDI1Nl0sMTE5OTU0OltbMTEzXSwyNTZdLDExOTk1NTpbWzExNF0sMjU2XSwxMTk5NTY6W1sxMTVdLDI1Nl0sMTE5OTU3OltbMTE2XSwyNTZdLDExOTk1ODpbWzExN10sMjU2XSwxMTk5NTk6W1sxMThdLDI1Nl0sMTE5OTYwOltbMTE5XSwyNTZdLDExOTk2MTpbWzEyMF0sMjU2XSwxMTk5NjI6W1sxMjFdLDI1Nl0sMTE5OTYzOltbMTIyXSwyNTZdLDExOTk2NDpbWzY1XSwyNTZdLDExOTk2NjpbWzY3XSwyNTZdLDExOTk2NzpbWzY4XSwyNTZdLDExOTk3MDpbWzcxXSwyNTZdLDExOTk3MzpbWzc0XSwyNTZdLDExOTk3NDpbWzc1XSwyNTZdLDExOTk3NzpbWzc4XSwyNTZdLDExOTk3ODpbWzc5XSwyNTZdLDExOTk3OTpbWzgwXSwyNTZdLDExOTk4MDpbWzgxXSwyNTZdLDExOTk4MjpbWzgzXSwyNTZdLDExOTk4MzpbWzg0XSwyNTZdLDExOTk4NDpbWzg1XSwyNTZdLDExOTk4NTpbWzg2XSwyNTZdLDExOTk4NjpbWzg3XSwyNTZdLDExOTk4NzpbWzg4XSwyNTZdLDExOTk4ODpbWzg5XSwyNTZdLDExOTk4OTpbWzkwXSwyNTZdLDExOTk5MDpbWzk3XSwyNTZdLDExOTk5MTpbWzk4XSwyNTZdLDExOTk5MjpbWzk5XSwyNTZdLDExOTk5MzpbWzEwMF0sMjU2XSwxMTk5OTU6W1sxMDJdLDI1Nl0sMTE5OTk3OltbMTA0XSwyNTZdLDExOTk5ODpbWzEwNV0sMjU2XSwxMTk5OTk6W1sxMDZdLDI1Nl0sMTIwMDAwOltbMTA3XSwyNTZdLDEyMDAwMTpbWzEwOF0sMjU2XSwxMjAwMDI6W1sxMDldLDI1Nl0sMTIwMDAzOltbMTEwXSwyNTZdLDEyMDAwNTpbWzExMl0sMjU2XSwxMjAwMDY6W1sxMTNdLDI1Nl0sMTIwMDA3OltbMTE0XSwyNTZdLDEyMDAwODpbWzExNV0sMjU2XSwxMjAwMDk6W1sxMTZdLDI1Nl0sMTIwMDEwOltbMTE3XSwyNTZdLDEyMDAxMTpbWzExOF0sMjU2XSwxMjAwMTI6W1sxMTldLDI1Nl0sMTIwMDEzOltbMTIwXSwyNTZdLDEyMDAxNDpbWzEyMV0sMjU2XSwxMjAwMTU6W1sxMjJdLDI1Nl0sMTIwMDE2OltbNjVdLDI1Nl0sMTIwMDE3OltbNjZdLDI1Nl0sMTIwMDE4OltbNjddLDI1Nl0sMTIwMDE5OltbNjhdLDI1Nl0sMTIwMDIwOltbNjldLDI1Nl0sMTIwMDIxOltbNzBdLDI1Nl0sMTIwMDIyOltbNzFdLDI1Nl0sMTIwMDIzOltbNzJdLDI1Nl0sMTIwMDI0OltbNzNdLDI1Nl0sMTIwMDI1OltbNzRdLDI1Nl0sMTIwMDI2OltbNzVdLDI1Nl0sMTIwMDI3OltbNzZdLDI1Nl0sMTIwMDI4OltbNzddLDI1Nl0sMTIwMDI5OltbNzhdLDI1Nl0sMTIwMDMwOltbNzldLDI1Nl0sMTIwMDMxOltbODBdLDI1Nl0sMTIwMDMyOltbODFdLDI1Nl0sMTIwMDMzOltbODJdLDI1Nl0sMTIwMDM0OltbODNdLDI1Nl0sMTIwMDM1OltbODRdLDI1Nl0sMTIwMDM2OltbODVdLDI1Nl0sMTIwMDM3OltbODZdLDI1Nl0sMTIwMDM4OltbODddLDI1Nl0sMTIwMDM5OltbODhdLDI1Nl0sMTIwMDQwOltbODldLDI1Nl0sMTIwMDQxOltbOTBdLDI1Nl0sMTIwMDQyOltbOTddLDI1Nl0sMTIwMDQzOltbOThdLDI1Nl0sMTIwMDQ0OltbOTldLDI1Nl0sMTIwMDQ1OltbMTAwXSwyNTZdLDEyMDA0NjpbWzEwMV0sMjU2XSwxMjAwNDc6W1sxMDJdLDI1Nl0sMTIwMDQ4OltbMTAzXSwyNTZdLDEyMDA0OTpbWzEwNF0sMjU2XSwxMjAwNTA6W1sxMDVdLDI1Nl0sMTIwMDUxOltbMTA2XSwyNTZdLDEyMDA1MjpbWzEwN10sMjU2XSwxMjAwNTM6W1sxMDhdLDI1Nl0sMTIwMDU0OltbMTA5XSwyNTZdLDEyMDA1NTpbWzExMF0sMjU2XSwxMjAwNTY6W1sxMTFdLDI1Nl0sMTIwMDU3OltbMTEyXSwyNTZdLDEyMDA1ODpbWzExM10sMjU2XSwxMjAwNTk6W1sxMTRdLDI1Nl0sMTIwMDYwOltbMTE1XSwyNTZdLDEyMDA2MTpbWzExNl0sMjU2XSwxMjAwNjI6W1sxMTddLDI1Nl0sMTIwMDYzOltbMTE4XSwyNTZdfSxcbjU0NTI4OnsxMjAwNjQ6W1sxMTldLDI1Nl0sMTIwMDY1OltbMTIwXSwyNTZdLDEyMDA2NjpbWzEyMV0sMjU2XSwxMjAwNjc6W1sxMjJdLDI1Nl0sMTIwMDY4OltbNjVdLDI1Nl0sMTIwMDY5OltbNjZdLDI1Nl0sMTIwMDcxOltbNjhdLDI1Nl0sMTIwMDcyOltbNjldLDI1Nl0sMTIwMDczOltbNzBdLDI1Nl0sMTIwMDc0OltbNzFdLDI1Nl0sMTIwMDc3OltbNzRdLDI1Nl0sMTIwMDc4OltbNzVdLDI1Nl0sMTIwMDc5OltbNzZdLDI1Nl0sMTIwMDgwOltbNzddLDI1Nl0sMTIwMDgxOltbNzhdLDI1Nl0sMTIwMDgyOltbNzldLDI1Nl0sMTIwMDgzOltbODBdLDI1Nl0sMTIwMDg0OltbODFdLDI1Nl0sMTIwMDg2OltbODNdLDI1Nl0sMTIwMDg3OltbODRdLDI1Nl0sMTIwMDg4OltbODVdLDI1Nl0sMTIwMDg5OltbODZdLDI1Nl0sMTIwMDkwOltbODddLDI1Nl0sMTIwMDkxOltbODhdLDI1Nl0sMTIwMDkyOltbODldLDI1Nl0sMTIwMDk0OltbOTddLDI1Nl0sMTIwMDk1OltbOThdLDI1Nl0sMTIwMDk2OltbOTldLDI1Nl0sMTIwMDk3OltbMTAwXSwyNTZdLDEyMDA5ODpbWzEwMV0sMjU2XSwxMjAwOTk6W1sxMDJdLDI1Nl0sMTIwMTAwOltbMTAzXSwyNTZdLDEyMDEwMTpbWzEwNF0sMjU2XSwxMjAxMDI6W1sxMDVdLDI1Nl0sMTIwMTAzOltbMTA2XSwyNTZdLDEyMDEwNDpbWzEwN10sMjU2XSwxMjAxMDU6W1sxMDhdLDI1Nl0sMTIwMTA2OltbMTA5XSwyNTZdLDEyMDEwNzpbWzExMF0sMjU2XSwxMjAxMDg6W1sxMTFdLDI1Nl0sMTIwMTA5OltbMTEyXSwyNTZdLDEyMDExMDpbWzExM10sMjU2XSwxMjAxMTE6W1sxMTRdLDI1Nl0sMTIwMTEyOltbMTE1XSwyNTZdLDEyMDExMzpbWzExNl0sMjU2XSwxMjAxMTQ6W1sxMTddLDI1Nl0sMTIwMTE1OltbMTE4XSwyNTZdLDEyMDExNjpbWzExOV0sMjU2XSwxMjAxMTc6W1sxMjBdLDI1Nl0sMTIwMTE4OltbMTIxXSwyNTZdLDEyMDExOTpbWzEyMl0sMjU2XSwxMjAxMjA6W1s2NV0sMjU2XSwxMjAxMjE6W1s2Nl0sMjU2XSwxMjAxMjM6W1s2OF0sMjU2XSwxMjAxMjQ6W1s2OV0sMjU2XSwxMjAxMjU6W1s3MF0sMjU2XSwxMjAxMjY6W1s3MV0sMjU2XSwxMjAxMjg6W1s3M10sMjU2XSwxMjAxMjk6W1s3NF0sMjU2XSwxMjAxMzA6W1s3NV0sMjU2XSwxMjAxMzE6W1s3Nl0sMjU2XSwxMjAxMzI6W1s3N10sMjU2XSwxMjAxMzQ6W1s3OV0sMjU2XSwxMjAxMzg6W1s4M10sMjU2XSwxMjAxMzk6W1s4NF0sMjU2XSwxMjAxNDA6W1s4NV0sMjU2XSwxMjAxNDE6W1s4Nl0sMjU2XSwxMjAxNDI6W1s4N10sMjU2XSwxMjAxNDM6W1s4OF0sMjU2XSwxMjAxNDQ6W1s4OV0sMjU2XSwxMjAxNDY6W1s5N10sMjU2XSwxMjAxNDc6W1s5OF0sMjU2XSwxMjAxNDg6W1s5OV0sMjU2XSwxMjAxNDk6W1sxMDBdLDI1Nl0sMTIwMTUwOltbMTAxXSwyNTZdLDEyMDE1MTpbWzEwMl0sMjU2XSwxMjAxNTI6W1sxMDNdLDI1Nl0sMTIwMTUzOltbMTA0XSwyNTZdLDEyMDE1NDpbWzEwNV0sMjU2XSwxMjAxNTU6W1sxMDZdLDI1Nl0sMTIwMTU2OltbMTA3XSwyNTZdLDEyMDE1NzpbWzEwOF0sMjU2XSwxMjAxNTg6W1sxMDldLDI1Nl0sMTIwMTU5OltbMTEwXSwyNTZdLDEyMDE2MDpbWzExMV0sMjU2XSwxMjAxNjE6W1sxMTJdLDI1Nl0sMTIwMTYyOltbMTEzXSwyNTZdLDEyMDE2MzpbWzExNF0sMjU2XSwxMjAxNjQ6W1sxMTVdLDI1Nl0sMTIwMTY1OltbMTE2XSwyNTZdLDEyMDE2NjpbWzExN10sMjU2XSwxMjAxNjc6W1sxMThdLDI1Nl0sMTIwMTY4OltbMTE5XSwyNTZdLDEyMDE2OTpbWzEyMF0sMjU2XSwxMjAxNzA6W1sxMjFdLDI1Nl0sMTIwMTcxOltbMTIyXSwyNTZdLDEyMDE3MjpbWzY1XSwyNTZdLDEyMDE3MzpbWzY2XSwyNTZdLDEyMDE3NDpbWzY3XSwyNTZdLDEyMDE3NTpbWzY4XSwyNTZdLDEyMDE3NjpbWzY5XSwyNTZdLDEyMDE3NzpbWzcwXSwyNTZdLDEyMDE3ODpbWzcxXSwyNTZdLDEyMDE3OTpbWzcyXSwyNTZdLDEyMDE4MDpbWzczXSwyNTZdLDEyMDE4MTpbWzc0XSwyNTZdLDEyMDE4MjpbWzc1XSwyNTZdLDEyMDE4MzpbWzc2XSwyNTZdLDEyMDE4NDpbWzc3XSwyNTZdLDEyMDE4NTpbWzc4XSwyNTZdLDEyMDE4NjpbWzc5XSwyNTZdLDEyMDE4NzpbWzgwXSwyNTZdLDEyMDE4ODpbWzgxXSwyNTZdLDEyMDE4OTpbWzgyXSwyNTZdLDEyMDE5MDpbWzgzXSwyNTZdLDEyMDE5MTpbWzg0XSwyNTZdLDEyMDE5MjpbWzg1XSwyNTZdLDEyMDE5MzpbWzg2XSwyNTZdLDEyMDE5NDpbWzg3XSwyNTZdLDEyMDE5NTpbWzg4XSwyNTZdLDEyMDE5NjpbWzg5XSwyNTZdLDEyMDE5NzpbWzkwXSwyNTZdLDEyMDE5ODpbWzk3XSwyNTZdLDEyMDE5OTpbWzk4XSwyNTZdLDEyMDIwMDpbWzk5XSwyNTZdLDEyMDIwMTpbWzEwMF0sMjU2XSwxMjAyMDI6W1sxMDFdLDI1Nl0sMTIwMjAzOltbMTAyXSwyNTZdLDEyMDIwNDpbWzEwM10sMjU2XSwxMjAyMDU6W1sxMDRdLDI1Nl0sMTIwMjA2OltbMTA1XSwyNTZdLDEyMDIwNzpbWzEwNl0sMjU2XSwxMjAyMDg6W1sxMDddLDI1Nl0sMTIwMjA5OltbMTA4XSwyNTZdLDEyMDIxMDpbWzEwOV0sMjU2XSwxMjAyMTE6W1sxMTBdLDI1Nl0sMTIwMjEyOltbMTExXSwyNTZdLDEyMDIxMzpbWzExMl0sMjU2XSwxMjAyMTQ6W1sxMTNdLDI1Nl0sMTIwMjE1OltbMTE0XSwyNTZdLDEyMDIxNjpbWzExNV0sMjU2XSwxMjAyMTc6W1sxMTZdLDI1Nl0sMTIwMjE4OltbMTE3XSwyNTZdLDEyMDIxOTpbWzExOF0sMjU2XSwxMjAyMjA6W1sxMTldLDI1Nl0sMTIwMjIxOltbMTIwXSwyNTZdLDEyMDIyMjpbWzEyMV0sMjU2XSwxMjAyMjM6W1sxMjJdLDI1Nl0sMTIwMjI0OltbNjVdLDI1Nl0sMTIwMjI1OltbNjZdLDI1Nl0sMTIwMjI2OltbNjddLDI1Nl0sMTIwMjI3OltbNjhdLDI1Nl0sMTIwMjI4OltbNjldLDI1Nl0sMTIwMjI5OltbNzBdLDI1Nl0sMTIwMjMwOltbNzFdLDI1Nl0sMTIwMjMxOltbNzJdLDI1Nl0sMTIwMjMyOltbNzNdLDI1Nl0sMTIwMjMzOltbNzRdLDI1Nl0sMTIwMjM0OltbNzVdLDI1Nl0sMTIwMjM1OltbNzZdLDI1Nl0sMTIwMjM2OltbNzddLDI1Nl0sMTIwMjM3OltbNzhdLDI1Nl0sMTIwMjM4OltbNzldLDI1Nl0sMTIwMjM5OltbODBdLDI1Nl0sMTIwMjQwOltbODFdLDI1Nl0sMTIwMjQxOltbODJdLDI1Nl0sMTIwMjQyOltbODNdLDI1Nl0sMTIwMjQzOltbODRdLDI1Nl0sMTIwMjQ0OltbODVdLDI1Nl0sMTIwMjQ1OltbODZdLDI1Nl0sMTIwMjQ2OltbODddLDI1Nl0sMTIwMjQ3OltbODhdLDI1Nl0sMTIwMjQ4OltbODldLDI1Nl0sMTIwMjQ5OltbOTBdLDI1Nl0sMTIwMjUwOltbOTddLDI1Nl0sMTIwMjUxOltbOThdLDI1Nl0sMTIwMjUyOltbOTldLDI1Nl0sMTIwMjUzOltbMTAwXSwyNTZdLDEyMDI1NDpbWzEwMV0sMjU2XSwxMjAyNTU6W1sxMDJdLDI1Nl0sMTIwMjU2OltbMTAzXSwyNTZdLDEyMDI1NzpbWzEwNF0sMjU2XSwxMjAyNTg6W1sxMDVdLDI1Nl0sMTIwMjU5OltbMTA2XSwyNTZdLDEyMDI2MDpbWzEwN10sMjU2XSwxMjAyNjE6W1sxMDhdLDI1Nl0sMTIwMjYyOltbMTA5XSwyNTZdLDEyMDI2MzpbWzExMF0sMjU2XSwxMjAyNjQ6W1sxMTFdLDI1Nl0sMTIwMjY1OltbMTEyXSwyNTZdLDEyMDI2NjpbWzExM10sMjU2XSwxMjAyNjc6W1sxMTRdLDI1Nl0sMTIwMjY4OltbMTE1XSwyNTZdLDEyMDI2OTpbWzExNl0sMjU2XSwxMjAyNzA6W1sxMTddLDI1Nl0sMTIwMjcxOltbMTE4XSwyNTZdLDEyMDI3MjpbWzExOV0sMjU2XSwxMjAyNzM6W1sxMjBdLDI1Nl0sMTIwMjc0OltbMTIxXSwyNTZdLDEyMDI3NTpbWzEyMl0sMjU2XSwxMjAyNzY6W1s2NV0sMjU2XSwxMjAyNzc6W1s2Nl0sMjU2XSwxMjAyNzg6W1s2N10sMjU2XSwxMjAyNzk6W1s2OF0sMjU2XSwxMjAyODA6W1s2OV0sMjU2XSwxMjAyODE6W1s3MF0sMjU2XSwxMjAyODI6W1s3MV0sMjU2XSwxMjAyODM6W1s3Ml0sMjU2XSwxMjAyODQ6W1s3M10sMjU2XSwxMjAyODU6W1s3NF0sMjU2XSwxMjAyODY6W1s3NV0sMjU2XSwxMjAyODc6W1s3Nl0sMjU2XSwxMjAyODg6W1s3N10sMjU2XSwxMjAyODk6W1s3OF0sMjU2XSwxMjAyOTA6W1s3OV0sMjU2XSwxMjAyOTE6W1s4MF0sMjU2XSwxMjAyOTI6W1s4MV0sMjU2XSwxMjAyOTM6W1s4Ml0sMjU2XSwxMjAyOTQ6W1s4M10sMjU2XSwxMjAyOTU6W1s4NF0sMjU2XSwxMjAyOTY6W1s4NV0sMjU2XSwxMjAyOTc6W1s4Nl0sMjU2XSwxMjAyOTg6W1s4N10sMjU2XSwxMjAyOTk6W1s4OF0sMjU2XSwxMjAzMDA6W1s4OV0sMjU2XSwxMjAzMDE6W1s5MF0sMjU2XSwxMjAzMDI6W1s5N10sMjU2XSwxMjAzMDM6W1s5OF0sMjU2XSwxMjAzMDQ6W1s5OV0sMjU2XSwxMjAzMDU6W1sxMDBdLDI1Nl0sMTIwMzA2OltbMTAxXSwyNTZdLDEyMDMwNzpbWzEwMl0sMjU2XSwxMjAzMDg6W1sxMDNdLDI1Nl0sMTIwMzA5OltbMTA0XSwyNTZdLDEyMDMxMDpbWzEwNV0sMjU2XSwxMjAzMTE6W1sxMDZdLDI1Nl0sMTIwMzEyOltbMTA3XSwyNTZdLDEyMDMxMzpbWzEwOF0sMjU2XSwxMjAzMTQ6W1sxMDldLDI1Nl0sMTIwMzE1OltbMTEwXSwyNTZdLDEyMDMxNjpbWzExMV0sMjU2XSwxMjAzMTc6W1sxMTJdLDI1Nl0sMTIwMzE4OltbMTEzXSwyNTZdLDEyMDMxOTpbWzExNF0sMjU2XX0sXG41NDc4NDp7MTIwMzIwOltbMTE1XSwyNTZdLDEyMDMyMTpbWzExNl0sMjU2XSwxMjAzMjI6W1sxMTddLDI1Nl0sMTIwMzIzOltbMTE4XSwyNTZdLDEyMDMyNDpbWzExOV0sMjU2XSwxMjAzMjU6W1sxMjBdLDI1Nl0sMTIwMzI2OltbMTIxXSwyNTZdLDEyMDMyNzpbWzEyMl0sMjU2XSwxMjAzMjg6W1s2NV0sMjU2XSwxMjAzMjk6W1s2Nl0sMjU2XSwxMjAzMzA6W1s2N10sMjU2XSwxMjAzMzE6W1s2OF0sMjU2XSwxMjAzMzI6W1s2OV0sMjU2XSwxMjAzMzM6W1s3MF0sMjU2XSwxMjAzMzQ6W1s3MV0sMjU2XSwxMjAzMzU6W1s3Ml0sMjU2XSwxMjAzMzY6W1s3M10sMjU2XSwxMjAzMzc6W1s3NF0sMjU2XSwxMjAzMzg6W1s3NV0sMjU2XSwxMjAzMzk6W1s3Nl0sMjU2XSwxMjAzNDA6W1s3N10sMjU2XSwxMjAzNDE6W1s3OF0sMjU2XSwxMjAzNDI6W1s3OV0sMjU2XSwxMjAzNDM6W1s4MF0sMjU2XSwxMjAzNDQ6W1s4MV0sMjU2XSwxMjAzNDU6W1s4Ml0sMjU2XSwxMjAzNDY6W1s4M10sMjU2XSwxMjAzNDc6W1s4NF0sMjU2XSwxMjAzNDg6W1s4NV0sMjU2XSwxMjAzNDk6W1s4Nl0sMjU2XSwxMjAzNTA6W1s4N10sMjU2XSwxMjAzNTE6W1s4OF0sMjU2XSwxMjAzNTI6W1s4OV0sMjU2XSwxMjAzNTM6W1s5MF0sMjU2XSwxMjAzNTQ6W1s5N10sMjU2XSwxMjAzNTU6W1s5OF0sMjU2XSwxMjAzNTY6W1s5OV0sMjU2XSwxMjAzNTc6W1sxMDBdLDI1Nl0sMTIwMzU4OltbMTAxXSwyNTZdLDEyMDM1OTpbWzEwMl0sMjU2XSwxMjAzNjA6W1sxMDNdLDI1Nl0sMTIwMzYxOltbMTA0XSwyNTZdLDEyMDM2MjpbWzEwNV0sMjU2XSwxMjAzNjM6W1sxMDZdLDI1Nl0sMTIwMzY0OltbMTA3XSwyNTZdLDEyMDM2NTpbWzEwOF0sMjU2XSwxMjAzNjY6W1sxMDldLDI1Nl0sMTIwMzY3OltbMTEwXSwyNTZdLDEyMDM2ODpbWzExMV0sMjU2XSwxMjAzNjk6W1sxMTJdLDI1Nl0sMTIwMzcwOltbMTEzXSwyNTZdLDEyMDM3MTpbWzExNF0sMjU2XSwxMjAzNzI6W1sxMTVdLDI1Nl0sMTIwMzczOltbMTE2XSwyNTZdLDEyMDM3NDpbWzExN10sMjU2XSwxMjAzNzU6W1sxMThdLDI1Nl0sMTIwMzc2OltbMTE5XSwyNTZdLDEyMDM3NzpbWzEyMF0sMjU2XSwxMjAzNzg6W1sxMjFdLDI1Nl0sMTIwMzc5OltbMTIyXSwyNTZdLDEyMDM4MDpbWzY1XSwyNTZdLDEyMDM4MTpbWzY2XSwyNTZdLDEyMDM4MjpbWzY3XSwyNTZdLDEyMDM4MzpbWzY4XSwyNTZdLDEyMDM4NDpbWzY5XSwyNTZdLDEyMDM4NTpbWzcwXSwyNTZdLDEyMDM4NjpbWzcxXSwyNTZdLDEyMDM4NzpbWzcyXSwyNTZdLDEyMDM4ODpbWzczXSwyNTZdLDEyMDM4OTpbWzc0XSwyNTZdLDEyMDM5MDpbWzc1XSwyNTZdLDEyMDM5MTpbWzc2XSwyNTZdLDEyMDM5MjpbWzc3XSwyNTZdLDEyMDM5MzpbWzc4XSwyNTZdLDEyMDM5NDpbWzc5XSwyNTZdLDEyMDM5NTpbWzgwXSwyNTZdLDEyMDM5NjpbWzgxXSwyNTZdLDEyMDM5NzpbWzgyXSwyNTZdLDEyMDM5ODpbWzgzXSwyNTZdLDEyMDM5OTpbWzg0XSwyNTZdLDEyMDQwMDpbWzg1XSwyNTZdLDEyMDQwMTpbWzg2XSwyNTZdLDEyMDQwMjpbWzg3XSwyNTZdLDEyMDQwMzpbWzg4XSwyNTZdLDEyMDQwNDpbWzg5XSwyNTZdLDEyMDQwNTpbWzkwXSwyNTZdLDEyMDQwNjpbWzk3XSwyNTZdLDEyMDQwNzpbWzk4XSwyNTZdLDEyMDQwODpbWzk5XSwyNTZdLDEyMDQwOTpbWzEwMF0sMjU2XSwxMjA0MTA6W1sxMDFdLDI1Nl0sMTIwNDExOltbMTAyXSwyNTZdLDEyMDQxMjpbWzEwM10sMjU2XSwxMjA0MTM6W1sxMDRdLDI1Nl0sMTIwNDE0OltbMTA1XSwyNTZdLDEyMDQxNTpbWzEwNl0sMjU2XSwxMjA0MTY6W1sxMDddLDI1Nl0sMTIwNDE3OltbMTA4XSwyNTZdLDEyMDQxODpbWzEwOV0sMjU2XSwxMjA0MTk6W1sxMTBdLDI1Nl0sMTIwNDIwOltbMTExXSwyNTZdLDEyMDQyMTpbWzExMl0sMjU2XSwxMjA0MjI6W1sxMTNdLDI1Nl0sMTIwNDIzOltbMTE0XSwyNTZdLDEyMDQyNDpbWzExNV0sMjU2XSwxMjA0MjU6W1sxMTZdLDI1Nl0sMTIwNDI2OltbMTE3XSwyNTZdLDEyMDQyNzpbWzExOF0sMjU2XSwxMjA0Mjg6W1sxMTldLDI1Nl0sMTIwNDI5OltbMTIwXSwyNTZdLDEyMDQzMDpbWzEyMV0sMjU2XSwxMjA0MzE6W1sxMjJdLDI1Nl0sMTIwNDMyOltbNjVdLDI1Nl0sMTIwNDMzOltbNjZdLDI1Nl0sMTIwNDM0OltbNjddLDI1Nl0sMTIwNDM1OltbNjhdLDI1Nl0sMTIwNDM2OltbNjldLDI1Nl0sMTIwNDM3OltbNzBdLDI1Nl0sMTIwNDM4OltbNzFdLDI1Nl0sMTIwNDM5OltbNzJdLDI1Nl0sMTIwNDQwOltbNzNdLDI1Nl0sMTIwNDQxOltbNzRdLDI1Nl0sMTIwNDQyOltbNzVdLDI1Nl0sMTIwNDQzOltbNzZdLDI1Nl0sMTIwNDQ0OltbNzddLDI1Nl0sMTIwNDQ1OltbNzhdLDI1Nl0sMTIwNDQ2OltbNzldLDI1Nl0sMTIwNDQ3OltbODBdLDI1Nl0sMTIwNDQ4OltbODFdLDI1Nl0sMTIwNDQ5OltbODJdLDI1Nl0sMTIwNDUwOltbODNdLDI1Nl0sMTIwNDUxOltbODRdLDI1Nl0sMTIwNDUyOltbODVdLDI1Nl0sMTIwNDUzOltbODZdLDI1Nl0sMTIwNDU0OltbODddLDI1Nl0sMTIwNDU1OltbODhdLDI1Nl0sMTIwNDU2OltbODldLDI1Nl0sMTIwNDU3OltbOTBdLDI1Nl0sMTIwNDU4OltbOTddLDI1Nl0sMTIwNDU5OltbOThdLDI1Nl0sMTIwNDYwOltbOTldLDI1Nl0sMTIwNDYxOltbMTAwXSwyNTZdLDEyMDQ2MjpbWzEwMV0sMjU2XSwxMjA0NjM6W1sxMDJdLDI1Nl0sMTIwNDY0OltbMTAzXSwyNTZdLDEyMDQ2NTpbWzEwNF0sMjU2XSwxMjA0NjY6W1sxMDVdLDI1Nl0sMTIwNDY3OltbMTA2XSwyNTZdLDEyMDQ2ODpbWzEwN10sMjU2XSwxMjA0Njk6W1sxMDhdLDI1Nl0sMTIwNDcwOltbMTA5XSwyNTZdLDEyMDQ3MTpbWzExMF0sMjU2XSwxMjA0NzI6W1sxMTFdLDI1Nl0sMTIwNDczOltbMTEyXSwyNTZdLDEyMDQ3NDpbWzExM10sMjU2XSwxMjA0NzU6W1sxMTRdLDI1Nl0sMTIwNDc2OltbMTE1XSwyNTZdLDEyMDQ3NzpbWzExNl0sMjU2XSwxMjA0Nzg6W1sxMTddLDI1Nl0sMTIwNDc5OltbMTE4XSwyNTZdLDEyMDQ4MDpbWzExOV0sMjU2XSwxMjA0ODE6W1sxMjBdLDI1Nl0sMTIwNDgyOltbMTIxXSwyNTZdLDEyMDQ4MzpbWzEyMl0sMjU2XSwxMjA0ODQ6W1szMDVdLDI1Nl0sMTIwNDg1OltbNTY3XSwyNTZdLDEyMDQ4ODpbWzkxM10sMjU2XSwxMjA0ODk6W1s5MTRdLDI1Nl0sMTIwNDkwOltbOTE1XSwyNTZdLDEyMDQ5MTpbWzkxNl0sMjU2XSwxMjA0OTI6W1s5MTddLDI1Nl0sMTIwNDkzOltbOTE4XSwyNTZdLDEyMDQ5NDpbWzkxOV0sMjU2XSwxMjA0OTU6W1s5MjBdLDI1Nl0sMTIwNDk2OltbOTIxXSwyNTZdLDEyMDQ5NzpbWzkyMl0sMjU2XSwxMjA0OTg6W1s5MjNdLDI1Nl0sMTIwNDk5OltbOTI0XSwyNTZdLDEyMDUwMDpbWzkyNV0sMjU2XSwxMjA1MDE6W1s5MjZdLDI1Nl0sMTIwNTAyOltbOTI3XSwyNTZdLDEyMDUwMzpbWzkyOF0sMjU2XSwxMjA1MDQ6W1s5MjldLDI1Nl0sMTIwNTA1OltbMTAxMl0sMjU2XSwxMjA1MDY6W1s5MzFdLDI1Nl0sMTIwNTA3OltbOTMyXSwyNTZdLDEyMDUwODpbWzkzM10sMjU2XSwxMjA1MDk6W1s5MzRdLDI1Nl0sMTIwNTEwOltbOTM1XSwyNTZdLDEyMDUxMTpbWzkzNl0sMjU2XSwxMjA1MTI6W1s5MzddLDI1Nl0sMTIwNTEzOltbODcxMV0sMjU2XSwxMjA1MTQ6W1s5NDVdLDI1Nl0sMTIwNTE1OltbOTQ2XSwyNTZdLDEyMDUxNjpbWzk0N10sMjU2XSwxMjA1MTc6W1s5NDhdLDI1Nl0sMTIwNTE4OltbOTQ5XSwyNTZdLDEyMDUxOTpbWzk1MF0sMjU2XSwxMjA1MjA6W1s5NTFdLDI1Nl0sMTIwNTIxOltbOTUyXSwyNTZdLDEyMDUyMjpbWzk1M10sMjU2XSwxMjA1MjM6W1s5NTRdLDI1Nl0sMTIwNTI0OltbOTU1XSwyNTZdLDEyMDUyNTpbWzk1Nl0sMjU2XSwxMjA1MjY6W1s5NTddLDI1Nl0sMTIwNTI3OltbOTU4XSwyNTZdLDEyMDUyODpbWzk1OV0sMjU2XSwxMjA1Mjk6W1s5NjBdLDI1Nl0sMTIwNTMwOltbOTYxXSwyNTZdLDEyMDUzMTpbWzk2Ml0sMjU2XSwxMjA1MzI6W1s5NjNdLDI1Nl0sMTIwNTMzOltbOTY0XSwyNTZdLDEyMDUzNDpbWzk2NV0sMjU2XSwxMjA1MzU6W1s5NjZdLDI1Nl0sMTIwNTM2OltbOTY3XSwyNTZdLDEyMDUzNzpbWzk2OF0sMjU2XSwxMjA1Mzg6W1s5NjldLDI1Nl0sMTIwNTM5OltbODcwNl0sMjU2XSwxMjA1NDA6W1sxMDEzXSwyNTZdLDEyMDU0MTpbWzk3N10sMjU2XSwxMjA1NDI6W1sxMDA4XSwyNTZdLDEyMDU0MzpbWzk4MV0sMjU2XSwxMjA1NDQ6W1sxMDA5XSwyNTZdLDEyMDU0NTpbWzk4Ml0sMjU2XSwxMjA1NDY6W1s5MTNdLDI1Nl0sMTIwNTQ3OltbOTE0XSwyNTZdLDEyMDU0ODpbWzkxNV0sMjU2XSwxMjA1NDk6W1s5MTZdLDI1Nl0sMTIwNTUwOltbOTE3XSwyNTZdLDEyMDU1MTpbWzkxOF0sMjU2XSwxMjA1NTI6W1s5MTldLDI1Nl0sMTIwNTUzOltbOTIwXSwyNTZdLDEyMDU1NDpbWzkyMV0sMjU2XSwxMjA1NTU6W1s5MjJdLDI1Nl0sMTIwNTU2OltbOTIzXSwyNTZdLDEyMDU1NzpbWzkyNF0sMjU2XSwxMjA1NTg6W1s5MjVdLDI1Nl0sMTIwNTU5OltbOTI2XSwyNTZdLDEyMDU2MDpbWzkyN10sMjU2XSwxMjA1NjE6W1s5MjhdLDI1Nl0sMTIwNTYyOltbOTI5XSwyNTZdLDEyMDU2MzpbWzEwMTJdLDI1Nl0sMTIwNTY0OltbOTMxXSwyNTZdLDEyMDU2NTpbWzkzMl0sMjU2XSwxMjA1NjY6W1s5MzNdLDI1Nl0sMTIwNTY3OltbOTM0XSwyNTZdLDEyMDU2ODpbWzkzNV0sMjU2XSwxMjA1Njk6W1s5MzZdLDI1Nl0sMTIwNTcwOltbOTM3XSwyNTZdLDEyMDU3MTpbWzg3MTFdLDI1Nl0sMTIwNTcyOltbOTQ1XSwyNTZdLDEyMDU3MzpbWzk0Nl0sMjU2XSwxMjA1NzQ6W1s5NDddLDI1Nl0sMTIwNTc1OltbOTQ4XSwyNTZdfSxcbjU1MDQwOnsxMjA1NzY6W1s5NDldLDI1Nl0sMTIwNTc3OltbOTUwXSwyNTZdLDEyMDU3ODpbWzk1MV0sMjU2XSwxMjA1Nzk6W1s5NTJdLDI1Nl0sMTIwNTgwOltbOTUzXSwyNTZdLDEyMDU4MTpbWzk1NF0sMjU2XSwxMjA1ODI6W1s5NTVdLDI1Nl0sMTIwNTgzOltbOTU2XSwyNTZdLDEyMDU4NDpbWzk1N10sMjU2XSwxMjA1ODU6W1s5NThdLDI1Nl0sMTIwNTg2OltbOTU5XSwyNTZdLDEyMDU4NzpbWzk2MF0sMjU2XSwxMjA1ODg6W1s5NjFdLDI1Nl0sMTIwNTg5OltbOTYyXSwyNTZdLDEyMDU5MDpbWzk2M10sMjU2XSwxMjA1OTE6W1s5NjRdLDI1Nl0sMTIwNTkyOltbOTY1XSwyNTZdLDEyMDU5MzpbWzk2Nl0sMjU2XSwxMjA1OTQ6W1s5NjddLDI1Nl0sMTIwNTk1OltbOTY4XSwyNTZdLDEyMDU5NjpbWzk2OV0sMjU2XSwxMjA1OTc6W1s4NzA2XSwyNTZdLDEyMDU5ODpbWzEwMTNdLDI1Nl0sMTIwNTk5OltbOTc3XSwyNTZdLDEyMDYwMDpbWzEwMDhdLDI1Nl0sMTIwNjAxOltbOTgxXSwyNTZdLDEyMDYwMjpbWzEwMDldLDI1Nl0sMTIwNjAzOltbOTgyXSwyNTZdLDEyMDYwNDpbWzkxM10sMjU2XSwxMjA2MDU6W1s5MTRdLDI1Nl0sMTIwNjA2OltbOTE1XSwyNTZdLDEyMDYwNzpbWzkxNl0sMjU2XSwxMjA2MDg6W1s5MTddLDI1Nl0sMTIwNjA5OltbOTE4XSwyNTZdLDEyMDYxMDpbWzkxOV0sMjU2XSwxMjA2MTE6W1s5MjBdLDI1Nl0sMTIwNjEyOltbOTIxXSwyNTZdLDEyMDYxMzpbWzkyMl0sMjU2XSwxMjA2MTQ6W1s5MjNdLDI1Nl0sMTIwNjE1OltbOTI0XSwyNTZdLDEyMDYxNjpbWzkyNV0sMjU2XSwxMjA2MTc6W1s5MjZdLDI1Nl0sMTIwNjE4OltbOTI3XSwyNTZdLDEyMDYxOTpbWzkyOF0sMjU2XSwxMjA2MjA6W1s5MjldLDI1Nl0sMTIwNjIxOltbMTAxMl0sMjU2XSwxMjA2MjI6W1s5MzFdLDI1Nl0sMTIwNjIzOltbOTMyXSwyNTZdLDEyMDYyNDpbWzkzM10sMjU2XSwxMjA2MjU6W1s5MzRdLDI1Nl0sMTIwNjI2OltbOTM1XSwyNTZdLDEyMDYyNzpbWzkzNl0sMjU2XSwxMjA2Mjg6W1s5MzddLDI1Nl0sMTIwNjI5OltbODcxMV0sMjU2XSwxMjA2MzA6W1s5NDVdLDI1Nl0sMTIwNjMxOltbOTQ2XSwyNTZdLDEyMDYzMjpbWzk0N10sMjU2XSwxMjA2MzM6W1s5NDhdLDI1Nl0sMTIwNjM0OltbOTQ5XSwyNTZdLDEyMDYzNTpbWzk1MF0sMjU2XSwxMjA2MzY6W1s5NTFdLDI1Nl0sMTIwNjM3OltbOTUyXSwyNTZdLDEyMDYzODpbWzk1M10sMjU2XSwxMjA2Mzk6W1s5NTRdLDI1Nl0sMTIwNjQwOltbOTU1XSwyNTZdLDEyMDY0MTpbWzk1Nl0sMjU2XSwxMjA2NDI6W1s5NTddLDI1Nl0sMTIwNjQzOltbOTU4XSwyNTZdLDEyMDY0NDpbWzk1OV0sMjU2XSwxMjA2NDU6W1s5NjBdLDI1Nl0sMTIwNjQ2OltbOTYxXSwyNTZdLDEyMDY0NzpbWzk2Ml0sMjU2XSwxMjA2NDg6W1s5NjNdLDI1Nl0sMTIwNjQ5OltbOTY0XSwyNTZdLDEyMDY1MDpbWzk2NV0sMjU2XSwxMjA2NTE6W1s5NjZdLDI1Nl0sMTIwNjUyOltbOTY3XSwyNTZdLDEyMDY1MzpbWzk2OF0sMjU2XSwxMjA2NTQ6W1s5NjldLDI1Nl0sMTIwNjU1OltbODcwNl0sMjU2XSwxMjA2NTY6W1sxMDEzXSwyNTZdLDEyMDY1NzpbWzk3N10sMjU2XSwxMjA2NTg6W1sxMDA4XSwyNTZdLDEyMDY1OTpbWzk4MV0sMjU2XSwxMjA2NjA6W1sxMDA5XSwyNTZdLDEyMDY2MTpbWzk4Ml0sMjU2XSwxMjA2NjI6W1s5MTNdLDI1Nl0sMTIwNjYzOltbOTE0XSwyNTZdLDEyMDY2NDpbWzkxNV0sMjU2XSwxMjA2NjU6W1s5MTZdLDI1Nl0sMTIwNjY2OltbOTE3XSwyNTZdLDEyMDY2NzpbWzkxOF0sMjU2XSwxMjA2Njg6W1s5MTldLDI1Nl0sMTIwNjY5OltbOTIwXSwyNTZdLDEyMDY3MDpbWzkyMV0sMjU2XSwxMjA2NzE6W1s5MjJdLDI1Nl0sMTIwNjcyOltbOTIzXSwyNTZdLDEyMDY3MzpbWzkyNF0sMjU2XSwxMjA2NzQ6W1s5MjVdLDI1Nl0sMTIwNjc1OltbOTI2XSwyNTZdLDEyMDY3NjpbWzkyN10sMjU2XSwxMjA2Nzc6W1s5MjhdLDI1Nl0sMTIwNjc4OltbOTI5XSwyNTZdLDEyMDY3OTpbWzEwMTJdLDI1Nl0sMTIwNjgwOltbOTMxXSwyNTZdLDEyMDY4MTpbWzkzMl0sMjU2XSwxMjA2ODI6W1s5MzNdLDI1Nl0sMTIwNjgzOltbOTM0XSwyNTZdLDEyMDY4NDpbWzkzNV0sMjU2XSwxMjA2ODU6W1s5MzZdLDI1Nl0sMTIwNjg2OltbOTM3XSwyNTZdLDEyMDY4NzpbWzg3MTFdLDI1Nl0sMTIwNjg4OltbOTQ1XSwyNTZdLDEyMDY4OTpbWzk0Nl0sMjU2XSwxMjA2OTA6W1s5NDddLDI1Nl0sMTIwNjkxOltbOTQ4XSwyNTZdLDEyMDY5MjpbWzk0OV0sMjU2XSwxMjA2OTM6W1s5NTBdLDI1Nl0sMTIwNjk0OltbOTUxXSwyNTZdLDEyMDY5NTpbWzk1Ml0sMjU2XSwxMjA2OTY6W1s5NTNdLDI1Nl0sMTIwNjk3OltbOTU0XSwyNTZdLDEyMDY5ODpbWzk1NV0sMjU2XSwxMjA2OTk6W1s5NTZdLDI1Nl0sMTIwNzAwOltbOTU3XSwyNTZdLDEyMDcwMTpbWzk1OF0sMjU2XSwxMjA3MDI6W1s5NTldLDI1Nl0sMTIwNzAzOltbOTYwXSwyNTZdLDEyMDcwNDpbWzk2MV0sMjU2XSwxMjA3MDU6W1s5NjJdLDI1Nl0sMTIwNzA2OltbOTYzXSwyNTZdLDEyMDcwNzpbWzk2NF0sMjU2XSwxMjA3MDg6W1s5NjVdLDI1Nl0sMTIwNzA5OltbOTY2XSwyNTZdLDEyMDcxMDpbWzk2N10sMjU2XSwxMjA3MTE6W1s5NjhdLDI1Nl0sMTIwNzEyOltbOTY5XSwyNTZdLDEyMDcxMzpbWzg3MDZdLDI1Nl0sMTIwNzE0OltbMTAxM10sMjU2XSwxMjA3MTU6W1s5NzddLDI1Nl0sMTIwNzE2OltbMTAwOF0sMjU2XSwxMjA3MTc6W1s5ODFdLDI1Nl0sMTIwNzE4OltbMTAwOV0sMjU2XSwxMjA3MTk6W1s5ODJdLDI1Nl0sMTIwNzIwOltbOTEzXSwyNTZdLDEyMDcyMTpbWzkxNF0sMjU2XSwxMjA3MjI6W1s5MTVdLDI1Nl0sMTIwNzIzOltbOTE2XSwyNTZdLDEyMDcyNDpbWzkxN10sMjU2XSwxMjA3MjU6W1s5MThdLDI1Nl0sMTIwNzI2OltbOTE5XSwyNTZdLDEyMDcyNzpbWzkyMF0sMjU2XSwxMjA3Mjg6W1s5MjFdLDI1Nl0sMTIwNzI5OltbOTIyXSwyNTZdLDEyMDczMDpbWzkyM10sMjU2XSwxMjA3MzE6W1s5MjRdLDI1Nl0sMTIwNzMyOltbOTI1XSwyNTZdLDEyMDczMzpbWzkyNl0sMjU2XSwxMjA3MzQ6W1s5MjddLDI1Nl0sMTIwNzM1OltbOTI4XSwyNTZdLDEyMDczNjpbWzkyOV0sMjU2XSwxMjA3Mzc6W1sxMDEyXSwyNTZdLDEyMDczODpbWzkzMV0sMjU2XSwxMjA3Mzk6W1s5MzJdLDI1Nl0sMTIwNzQwOltbOTMzXSwyNTZdLDEyMDc0MTpbWzkzNF0sMjU2XSwxMjA3NDI6W1s5MzVdLDI1Nl0sMTIwNzQzOltbOTM2XSwyNTZdLDEyMDc0NDpbWzkzN10sMjU2XSwxMjA3NDU6W1s4NzExXSwyNTZdLDEyMDc0NjpbWzk0NV0sMjU2XSwxMjA3NDc6W1s5NDZdLDI1Nl0sMTIwNzQ4OltbOTQ3XSwyNTZdLDEyMDc0OTpbWzk0OF0sMjU2XSwxMjA3NTA6W1s5NDldLDI1Nl0sMTIwNzUxOltbOTUwXSwyNTZdLDEyMDc1MjpbWzk1MV0sMjU2XSwxMjA3NTM6W1s5NTJdLDI1Nl0sMTIwNzU0OltbOTUzXSwyNTZdLDEyMDc1NTpbWzk1NF0sMjU2XSwxMjA3NTY6W1s5NTVdLDI1Nl0sMTIwNzU3OltbOTU2XSwyNTZdLDEyMDc1ODpbWzk1N10sMjU2XSwxMjA3NTk6W1s5NThdLDI1Nl0sMTIwNzYwOltbOTU5XSwyNTZdLDEyMDc2MTpbWzk2MF0sMjU2XSwxMjA3NjI6W1s5NjFdLDI1Nl0sMTIwNzYzOltbOTYyXSwyNTZdLDEyMDc2NDpbWzk2M10sMjU2XSwxMjA3NjU6W1s5NjRdLDI1Nl0sMTIwNzY2OltbOTY1XSwyNTZdLDEyMDc2NzpbWzk2Nl0sMjU2XSwxMjA3Njg6W1s5NjddLDI1Nl0sMTIwNzY5OltbOTY4XSwyNTZdLDEyMDc3MDpbWzk2OV0sMjU2XSwxMjA3NzE6W1s4NzA2XSwyNTZdLDEyMDc3MjpbWzEwMTNdLDI1Nl0sMTIwNzczOltbOTc3XSwyNTZdLDEyMDc3NDpbWzEwMDhdLDI1Nl0sMTIwNzc1OltbOTgxXSwyNTZdLDEyMDc3NjpbWzEwMDldLDI1Nl0sMTIwNzc3OltbOTgyXSwyNTZdLDEyMDc3ODpbWzk4OF0sMjU2XSwxMjA3Nzk6W1s5ODldLDI1Nl0sMTIwNzgyOltbNDhdLDI1Nl0sMTIwNzgzOltbNDldLDI1Nl0sMTIwNzg0OltbNTBdLDI1Nl0sMTIwNzg1OltbNTFdLDI1Nl0sMTIwNzg2OltbNTJdLDI1Nl0sMTIwNzg3OltbNTNdLDI1Nl0sMTIwNzg4OltbNTRdLDI1Nl0sMTIwNzg5OltbNTVdLDI1Nl0sMTIwNzkwOltbNTZdLDI1Nl0sMTIwNzkxOltbNTddLDI1Nl0sMTIwNzkyOltbNDhdLDI1Nl0sMTIwNzkzOltbNDldLDI1Nl0sMTIwNzk0OltbNTBdLDI1Nl0sMTIwNzk1OltbNTFdLDI1Nl0sMTIwNzk2OltbNTJdLDI1Nl0sMTIwNzk3OltbNTNdLDI1Nl0sMTIwNzk4OltbNTRdLDI1Nl0sMTIwNzk5OltbNTVdLDI1Nl0sMTIwODAwOltbNTZdLDI1Nl0sMTIwODAxOltbNTddLDI1Nl0sMTIwODAyOltbNDhdLDI1Nl0sMTIwODAzOltbNDldLDI1Nl0sMTIwODA0OltbNTBdLDI1Nl0sMTIwODA1OltbNTFdLDI1Nl0sMTIwODA2OltbNTJdLDI1Nl0sMTIwODA3OltbNTNdLDI1Nl0sMTIwODA4OltbNTRdLDI1Nl0sMTIwODA5OltbNTVdLDI1Nl0sMTIwODEwOltbNTZdLDI1Nl0sMTIwODExOltbNTddLDI1Nl0sMTIwODEyOltbNDhdLDI1Nl0sMTIwODEzOltbNDldLDI1Nl0sMTIwODE0OltbNTBdLDI1Nl0sMTIwODE1OltbNTFdLDI1Nl0sMTIwODE2OltbNTJdLDI1Nl0sMTIwODE3OltbNTNdLDI1Nl0sMTIwODE4OltbNTRdLDI1Nl0sMTIwODE5OltbNTVdLDI1Nl0sMTIwODIwOltbNTZdLDI1Nl0sMTIwODIxOltbNTddLDI1Nl0sMTIwODIyOltbNDhdLDI1Nl0sMTIwODIzOltbNDldLDI1Nl0sMTIwODI0OltbNTBdLDI1Nl0sMTIwODI1OltbNTFdLDI1Nl0sMTIwODI2OltbNTJdLDI1Nl0sMTIwODI3OltbNTNdLDI1Nl0sMTIwODI4OltbNTRdLDI1Nl0sMTIwODI5OltbNTVdLDI1Nl0sMTIwODMwOltbNTZdLDI1Nl0sMTIwODMxOltbNTddLDI1Nl19LFxuNTkzOTI6ezEyNTEzNjpbLDIyMF0sMTI1MTM3OlssMjIwXSwxMjUxMzg6WywyMjBdLDEyNTEzOTpbLDIyMF0sMTI1MTQwOlssMjIwXSwxMjUxNDE6WywyMjBdLDEyNTE0MjpbLDIyMF19LFxuNjA5Mjg6ezEyNjQ2NDpbWzE1NzVdLDI1Nl0sMTI2NDY1OltbMTU3Nl0sMjU2XSwxMjY0NjY6W1sxNTgwXSwyNTZdLDEyNjQ2NzpbWzE1ODNdLDI1Nl0sMTI2NDY5OltbMTYwOF0sMjU2XSwxMjY0NzA6W1sxNTg2XSwyNTZdLDEyNjQ3MTpbWzE1ODFdLDI1Nl0sMTI2NDcyOltbMTU5MV0sMjU2XSwxMjY0NzM6W1sxNjEwXSwyNTZdLDEyNjQ3NDpbWzE2MDNdLDI1Nl0sMTI2NDc1OltbMTYwNF0sMjU2XSwxMjY0NzY6W1sxNjA1XSwyNTZdLDEyNjQ3NzpbWzE2MDZdLDI1Nl0sMTI2NDc4OltbMTU4N10sMjU2XSwxMjY0Nzk6W1sxNTkzXSwyNTZdLDEyNjQ4MDpbWzE2MDFdLDI1Nl0sMTI2NDgxOltbMTU4OV0sMjU2XSwxMjY0ODI6W1sxNjAyXSwyNTZdLDEyNjQ4MzpbWzE1ODVdLDI1Nl0sMTI2NDg0OltbMTU4OF0sMjU2XSwxMjY0ODU6W1sxNTc4XSwyNTZdLDEyNjQ4NjpbWzE1NzldLDI1Nl0sMTI2NDg3OltbMTU4Ml0sMjU2XSwxMjY0ODg6W1sxNTg0XSwyNTZdLDEyNjQ4OTpbWzE1OTBdLDI1Nl0sMTI2NDkwOltbMTU5Ml0sMjU2XSwxMjY0OTE6W1sxNTk0XSwyNTZdLDEyNjQ5MjpbWzE2NDZdLDI1Nl0sMTI2NDkzOltbMTcyMl0sMjU2XSwxMjY0OTQ6W1sxNjk3XSwyNTZdLDEyNjQ5NTpbWzE2NDddLDI1Nl0sMTI2NDk3OltbMTU3Nl0sMjU2XSwxMjY0OTg6W1sxNTgwXSwyNTZdLDEyNjUwMDpbWzE2MDddLDI1Nl0sMTI2NTAzOltbMTU4MV0sMjU2XSwxMjY1MDU6W1sxNjEwXSwyNTZdLDEyNjUwNjpbWzE2MDNdLDI1Nl0sMTI2NTA3OltbMTYwNF0sMjU2XSwxMjY1MDg6W1sxNjA1XSwyNTZdLDEyNjUwOTpbWzE2MDZdLDI1Nl0sMTI2NTEwOltbMTU4N10sMjU2XSwxMjY1MTE6W1sxNTkzXSwyNTZdLDEyNjUxMjpbWzE2MDFdLDI1Nl0sMTI2NTEzOltbMTU4OV0sMjU2XSwxMjY1MTQ6W1sxNjAyXSwyNTZdLDEyNjUxNjpbWzE1ODhdLDI1Nl0sMTI2NTE3OltbMTU3OF0sMjU2XSwxMjY1MTg6W1sxNTc5XSwyNTZdLDEyNjUxOTpbWzE1ODJdLDI1Nl0sMTI2NTIxOltbMTU5MF0sMjU2XSwxMjY1MjM6W1sxNTk0XSwyNTZdLDEyNjUzMDpbWzE1ODBdLDI1Nl0sMTI2NTM1OltbMTU4MV0sMjU2XSwxMjY1Mzc6W1sxNjEwXSwyNTZdLDEyNjUzOTpbWzE2MDRdLDI1Nl0sMTI2NTQxOltbMTYwNl0sMjU2XSwxMjY1NDI6W1sxNTg3XSwyNTZdLDEyNjU0MzpbWzE1OTNdLDI1Nl0sMTI2NTQ1OltbMTU4OV0sMjU2XSwxMjY1NDY6W1sxNjAyXSwyNTZdLDEyNjU0ODpbWzE1ODhdLDI1Nl0sMTI2NTUxOltbMTU4Ml0sMjU2XSwxMjY1NTM6W1sxNTkwXSwyNTZdLDEyNjU1NTpbWzE1OTRdLDI1Nl0sMTI2NTU3OltbMTcyMl0sMjU2XSwxMjY1NTk6W1sxNjQ3XSwyNTZdLDEyNjU2MTpbWzE1NzZdLDI1Nl0sMTI2NTYyOltbMTU4MF0sMjU2XSwxMjY1NjQ6W1sxNjA3XSwyNTZdLDEyNjU2NzpbWzE1ODFdLDI1Nl0sMTI2NTY4OltbMTU5MV0sMjU2XSwxMjY1Njk6W1sxNjEwXSwyNTZdLDEyNjU3MDpbWzE2MDNdLDI1Nl0sMTI2NTcyOltbMTYwNV0sMjU2XSwxMjY1NzM6W1sxNjA2XSwyNTZdLDEyNjU3NDpbWzE1ODddLDI1Nl0sMTI2NTc1OltbMTU5M10sMjU2XSwxMjY1NzY6W1sxNjAxXSwyNTZdLDEyNjU3NzpbWzE1ODldLDI1Nl0sMTI2NTc4OltbMTYwMl0sMjU2XSwxMjY1ODA6W1sxNTg4XSwyNTZdLDEyNjU4MTpbWzE1NzhdLDI1Nl0sMTI2NTgyOltbMTU3OV0sMjU2XSwxMjY1ODM6W1sxNTgyXSwyNTZdLDEyNjU4NTpbWzE1OTBdLDI1Nl0sMTI2NTg2OltbMTU5Ml0sMjU2XSwxMjY1ODc6W1sxNTk0XSwyNTZdLDEyNjU4ODpbWzE2NDZdLDI1Nl0sMTI2NTkwOltbMTY5N10sMjU2XSwxMjY1OTI6W1sxNTc1XSwyNTZdLDEyNjU5MzpbWzE1NzZdLDI1Nl0sMTI2NTk0OltbMTU4MF0sMjU2XSwxMjY1OTU6W1sxNTgzXSwyNTZdLDEyNjU5NjpbWzE2MDddLDI1Nl0sMTI2NTk3OltbMTYwOF0sMjU2XSwxMjY1OTg6W1sxNTg2XSwyNTZdLDEyNjU5OTpbWzE1ODFdLDI1Nl0sMTI2NjAwOltbMTU5MV0sMjU2XSwxMjY2MDE6W1sxNjEwXSwyNTZdLDEyNjYwMzpbWzE2MDRdLDI1Nl0sMTI2NjA0OltbMTYwNV0sMjU2XSwxMjY2MDU6W1sxNjA2XSwyNTZdLDEyNjYwNjpbWzE1ODddLDI1Nl0sMTI2NjA3OltbMTU5M10sMjU2XSwxMjY2MDg6W1sxNjAxXSwyNTZdLDEyNjYwOTpbWzE1ODldLDI1Nl0sMTI2NjEwOltbMTYwMl0sMjU2XSwxMjY2MTE6W1sxNTg1XSwyNTZdLDEyNjYxMjpbWzE1ODhdLDI1Nl0sMTI2NjEzOltbMTU3OF0sMjU2XSwxMjY2MTQ6W1sxNTc5XSwyNTZdLDEyNjYxNTpbWzE1ODJdLDI1Nl0sMTI2NjE2OltbMTU4NF0sMjU2XSwxMjY2MTc6W1sxNTkwXSwyNTZdLDEyNjYxODpbWzE1OTJdLDI1Nl0sMTI2NjE5OltbMTU5NF0sMjU2XSwxMjY2MjU6W1sxNTc2XSwyNTZdLDEyNjYyNjpbWzE1ODBdLDI1Nl0sMTI2NjI3OltbMTU4M10sMjU2XSwxMjY2Mjk6W1sxNjA4XSwyNTZdLDEyNjYzMDpbWzE1ODZdLDI1Nl0sMTI2NjMxOltbMTU4MV0sMjU2XSwxMjY2MzI6W1sxNTkxXSwyNTZdLDEyNjYzMzpbWzE2MTBdLDI1Nl0sMTI2NjM1OltbMTYwNF0sMjU2XSwxMjY2MzY6W1sxNjA1XSwyNTZdLDEyNjYzNzpbWzE2MDZdLDI1Nl0sMTI2NjM4OltbMTU4N10sMjU2XSwxMjY2Mzk6W1sxNTkzXSwyNTZdLDEyNjY0MDpbWzE2MDFdLDI1Nl0sMTI2NjQxOltbMTU4OV0sMjU2XSwxMjY2NDI6W1sxNjAyXSwyNTZdLDEyNjY0MzpbWzE1ODVdLDI1Nl0sMTI2NjQ0OltbMTU4OF0sMjU2XSwxMjY2NDU6W1sxNTc4XSwyNTZdLDEyNjY0NjpbWzE1NzldLDI1Nl0sMTI2NjQ3OltbMTU4Ml0sMjU2XSwxMjY2NDg6W1sxNTg0XSwyNTZdLDEyNjY0OTpbWzE1OTBdLDI1Nl0sMTI2NjUwOltbMTU5Ml0sMjU2XSwxMjY2NTE6W1sxNTk0XSwyNTZdfSxcbjYxNjk2OnsxMjcyMzI6W1s0OCw0Nl0sMjU2XSwxMjcyMzM6W1s0OCw0NF0sMjU2XSwxMjcyMzQ6W1s0OSw0NF0sMjU2XSwxMjcyMzU6W1s1MCw0NF0sMjU2XSwxMjcyMzY6W1s1MSw0NF0sMjU2XSwxMjcyMzc6W1s1Miw0NF0sMjU2XSwxMjcyMzg6W1s1Myw0NF0sMjU2XSwxMjcyMzk6W1s1NCw0NF0sMjU2XSwxMjcyNDA6W1s1NSw0NF0sMjU2XSwxMjcyNDE6W1s1Niw0NF0sMjU2XSwxMjcyNDI6W1s1Nyw0NF0sMjU2XSwxMjcyNDg6W1s0MCw2NSw0MV0sMjU2XSwxMjcyNDk6W1s0MCw2Niw0MV0sMjU2XSwxMjcyNTA6W1s0MCw2Nyw0MV0sMjU2XSwxMjcyNTE6W1s0MCw2OCw0MV0sMjU2XSwxMjcyNTI6W1s0MCw2OSw0MV0sMjU2XSwxMjcyNTM6W1s0MCw3MCw0MV0sMjU2XSwxMjcyNTQ6W1s0MCw3MSw0MV0sMjU2XSwxMjcyNTU6W1s0MCw3Miw0MV0sMjU2XSwxMjcyNTY6W1s0MCw3Myw0MV0sMjU2XSwxMjcyNTc6W1s0MCw3NCw0MV0sMjU2XSwxMjcyNTg6W1s0MCw3NSw0MV0sMjU2XSwxMjcyNTk6W1s0MCw3Niw0MV0sMjU2XSwxMjcyNjA6W1s0MCw3Nyw0MV0sMjU2XSwxMjcyNjE6W1s0MCw3OCw0MV0sMjU2XSwxMjcyNjI6W1s0MCw3OSw0MV0sMjU2XSwxMjcyNjM6W1s0MCw4MCw0MV0sMjU2XSwxMjcyNjQ6W1s0MCw4MSw0MV0sMjU2XSwxMjcyNjU6W1s0MCw4Miw0MV0sMjU2XSwxMjcyNjY6W1s0MCw4Myw0MV0sMjU2XSwxMjcyNjc6W1s0MCw4NCw0MV0sMjU2XSwxMjcyNjg6W1s0MCw4NSw0MV0sMjU2XSwxMjcyNjk6W1s0MCw4Niw0MV0sMjU2XSwxMjcyNzA6W1s0MCw4Nyw0MV0sMjU2XSwxMjcyNzE6W1s0MCw4OCw0MV0sMjU2XSwxMjcyNzI6W1s0MCw4OSw0MV0sMjU2XSwxMjcyNzM6W1s0MCw5MCw0MV0sMjU2XSwxMjcyNzQ6W1sxMjMwOCw4MywxMjMwOV0sMjU2XSwxMjcyNzU6W1s2N10sMjU2XSwxMjcyNzY6W1s4Ml0sMjU2XSwxMjcyNzc6W1s2Nyw2OF0sMjU2XSwxMjcyNzg6W1s4Nyw5MF0sMjU2XSwxMjcyODA6W1s2NV0sMjU2XSwxMjcyODE6W1s2Nl0sMjU2XSwxMjcyODI6W1s2N10sMjU2XSwxMjcyODM6W1s2OF0sMjU2XSwxMjcyODQ6W1s2OV0sMjU2XSwxMjcyODU6W1s3MF0sMjU2XSwxMjcyODY6W1s3MV0sMjU2XSwxMjcyODc6W1s3Ml0sMjU2XSwxMjcyODg6W1s3M10sMjU2XSwxMjcyODk6W1s3NF0sMjU2XSwxMjcyOTA6W1s3NV0sMjU2XSwxMjcyOTE6W1s3Nl0sMjU2XSwxMjcyOTI6W1s3N10sMjU2XSwxMjcyOTM6W1s3OF0sMjU2XSwxMjcyOTQ6W1s3OV0sMjU2XSwxMjcyOTU6W1s4MF0sMjU2XSwxMjcyOTY6W1s4MV0sMjU2XSwxMjcyOTc6W1s4Ml0sMjU2XSwxMjcyOTg6W1s4M10sMjU2XSwxMjcyOTk6W1s4NF0sMjU2XSwxMjczMDA6W1s4NV0sMjU2XSwxMjczMDE6W1s4Nl0sMjU2XSwxMjczMDI6W1s4N10sMjU2XSwxMjczMDM6W1s4OF0sMjU2XSwxMjczMDQ6W1s4OV0sMjU2XSwxMjczMDU6W1s5MF0sMjU2XSwxMjczMDY6W1s3Miw4Nl0sMjU2XSwxMjczMDc6W1s3Nyw4Nl0sMjU2XSwxMjczMDg6W1s4Myw2OF0sMjU2XSwxMjczMDk6W1s4Myw4M10sMjU2XSwxMjczMTA6W1s4MCw4MCw4Nl0sMjU2XSwxMjczMTE6W1s4Nyw2N10sMjU2XSwxMjczMzg6W1s3Nyw2N10sMjU2XSwxMjczMzk6W1s3Nyw2OF0sMjU2XSwxMjczNzY6W1s2OCw3NF0sMjU2XX0sXG42MTk1Mjp7MTI3NDg4OltbMTI0MTEsMTIzNjNdLDI1Nl0sMTI3NDg5OltbMTI0NjcsMTI0NjddLDI1Nl0sMTI3NDkwOltbMTI0NjldLDI1Nl0sMTI3NTA0OltbMjUxNjNdLDI1Nl0sMTI3NTA1OltbMjMzODNdLDI1Nl0sMTI3NTA2OltbMjE0NTJdLDI1Nl0sMTI3NTA3OltbMTI0ODddLDI1Nl0sMTI3NTA4OltbMjAxMDhdLDI1Nl0sMTI3NTA5OltbMjI4MTBdLDI1Nl0sMTI3NTEwOltbMzUyOTldLDI1Nl0sMTI3NTExOltbMjI4MjVdLDI1Nl0sMTI3NTEyOltbMjAxMzJdLDI1Nl0sMTI3NTEzOltbMjYxNDRdLDI1Nl0sMTI3NTE0OltbMjg5NjFdLDI1Nl0sMTI3NTE1OltbMjYwMDldLDI1Nl0sMTI3NTE2OltbMjEwNjldLDI1Nl0sMTI3NTE3OltbMjQ0NjBdLDI1Nl0sMTI3NTE4OltbMjA4NzddLDI1Nl0sMTI3NTE5OltbMjYwMzJdLDI1Nl0sMTI3NTIwOltbMjEwMjFdLDI1Nl0sMTI3NTIxOltbMzIwNjZdLDI1Nl0sMTI3NTIyOltbMjk5ODNdLDI1Nl0sMTI3NTIzOltbMzYwMDldLDI1Nl0sMTI3NTI0OltbMjI3NjhdLDI1Nl0sMTI3NTI1OltbMjE1NjFdLDI1Nl0sMTI3NTI2OltbMjg0MzZdLDI1Nl0sMTI3NTI3OltbMjUyMzddLDI1Nl0sMTI3NTI4OltbMjU0MjldLDI1Nl0sMTI3NTI5OltbMTk5NjhdLDI1Nl0sMTI3NTMwOltbMTk5NzddLDI1Nl0sMTI3NTMxOltbMzY5MzhdLDI1Nl0sMTI3NTMyOltbMjQwMzhdLDI1Nl0sMTI3NTMzOltbMjAwMTNdLDI1Nl0sMTI3NTM0OltbMjE0OTFdLDI1Nl0sMTI3NTM1OltbMjUzNTFdLDI1Nl0sMTI3NTM2OltbMzYyMDhdLDI1Nl0sMTI3NTM3OltbMjUxNzFdLDI1Nl0sMTI3NTM4OltbMzExMDVdLDI1Nl0sMTI3NTM5OltbMzEzNTRdLDI1Nl0sMTI3NTQwOltbMjE1MTJdLDI1Nl0sMTI3NTQxOltbMjgyODhdLDI1Nl0sMTI3NTQyOltbMjYzNzddLDI1Nl0sMTI3NTQzOltbMjYzNzZdLDI1Nl0sMTI3NTQ0OltbMzAwMDNdLDI1Nl0sMTI3NTQ1OltbMjExMDZdLDI1Nl0sMTI3NTQ2OltbMjE5NDJdLDI1Nl0sMTI3NTUyOltbMTIzMDgsMjY0MTIsMTIzMDldLDI1Nl0sMTI3NTUzOltbMTIzMDgsMTk5NzcsMTIzMDldLDI1Nl0sMTI3NTU0OltbMTIzMDgsMjAxMDgsMTIzMDldLDI1Nl0sMTI3NTU1OltbMTIzMDgsMjM0MzMsMTIzMDldLDI1Nl0sMTI3NTU2OltbMTIzMDgsMjg4NTcsMTIzMDldLDI1Nl0sMTI3NTU3OltbMTIzMDgsMjUxNzEsMTIzMDldLDI1Nl0sMTI3NTU4OltbMTIzMDgsMzA0MjMsMTIzMDldLDI1Nl0sMTI3NTU5OltbMTIzMDgsMjEyMTMsMTIzMDldLDI1Nl0sMTI3NTYwOltbMTIzMDgsMjU5NDMsMTIzMDldLDI1Nl0sMTI3NTY4OltbMjQ0NzFdLDI1Nl0sMTI3NTY5OltbMjE0ODddLDI1Nl19LFxuNjM0ODg6ezE5NDU2MDpbWzIwMDI5XV0sMTk0NTYxOltbMjAwMjRdXSwxOTQ1NjI6W1syMDAzM11dLDE5NDU2MzpbWzEzMTM2Ml1dLDE5NDU2NDpbWzIwMzIwXV0sMTk0NTY1OltbMjAzOThdXSwxOTQ1NjY6W1syMDQxMV1dLDE5NDU2NzpbWzIwNDgyXV0sMTk0NTY4OltbMjA2MDJdXSwxOTQ1Njk6W1syMDYzM11dLDE5NDU3MDpbWzIwNzExXV0sMTk0NTcxOltbMjA2ODddXSwxOTQ1NzI6W1sxMzQ3MF1dLDE5NDU3MzpbWzEzMjY2Nl1dLDE5NDU3NDpbWzIwODEzXV0sMTk0NTc1OltbMjA4MjBdXSwxOTQ1NzY6W1syMDgzNl1dLDE5NDU3NzpbWzIwODU1XV0sMTk0NTc4OltbMTMyMzgwXV0sMTk0NTc5OltbMTM0OTddXSwxOTQ1ODA6W1syMDgzOV1dLDE5NDU4MTpbWzIwODc3XV0sMTk0NTgyOltbMTMyNDI3XV0sMTk0NTgzOltbMjA4ODddXSwxOTQ1ODQ6W1syMDkwMF1dLDE5NDU4NTpbWzIwMTcyXV0sMTk0NTg2OltbMjA5MDhdXSwxOTQ1ODc6W1syMDkxN11dLDE5NDU4ODpbWzE2ODQxNV1dLDE5NDU4OTpbWzIwOTgxXV0sMTk0NTkwOltbMjA5OTVdXSwxOTQ1OTE6W1sxMzUzNV1dLDE5NDU5MjpbWzIxMDUxXV0sMTk0NTkzOltbMjEwNjJdXSwxOTQ1OTQ6W1syMTEwNl1dLDE5NDU5NTpbWzIxMTExXV0sMTk0NTk2OltbMTM1ODldXSwxOTQ1OTc6W1syMTE5MV1dLDE5NDU5ODpbWzIxMTkzXV0sMTk0NTk5OltbMjEyMjBdXSwxOTQ2MDA6W1syMTI0Ml1dLDE5NDYwMTpbWzIxMjUzXV0sMTk0NjAyOltbMjEyNTRdXSwxOTQ2MDM6W1syMTI3MV1dLDE5NDYwNDpbWzIxMzIxXV0sMTk0NjA1OltbMjEzMjldXSwxOTQ2MDY6W1syMTMzOF1dLDE5NDYwNzpbWzIxMzYzXV0sMTk0NjA4OltbMjEzNzNdXSwxOTQ2MDk6W1syMTM3NV1dLDE5NDYxMDpbWzIxMzc1XV0sMTk0NjExOltbMjEzNzVdXSwxOTQ2MTI6W1sxMzM2NzZdXSwxOTQ2MTM6W1syODc4NF1dLDE5NDYxNDpbWzIxNDUwXV0sMTk0NjE1OltbMjE0NzFdXSwxOTQ2MTY6W1sxMzM5ODddXSwxOTQ2MTc6W1syMTQ4M11dLDE5NDYxODpbWzIxNDg5XV0sMTk0NjE5OltbMjE1MTBdXSwxOTQ2MjA6W1syMTY2Ml1dLDE5NDYyMTpbWzIxNTYwXV0sMTk0NjIyOltbMjE1NzZdXSwxOTQ2MjM6W1syMTYwOF1dLDE5NDYyNDpbWzIxNjY2XV0sMTk0NjI1OltbMjE3NTBdXSwxOTQ2MjY6W1syMTc3Nl1dLDE5NDYyNzpbWzIxODQzXV0sMTk0NjI4OltbMjE4NTldXSwxOTQ2Mjk6W1syMTg5Ml1dLDE5NDYzMDpbWzIxODkyXV0sMTk0NjMxOltbMjE5MTNdXSwxOTQ2MzI6W1syMTkzMV1dLDE5NDYzMzpbWzIxOTM5XV0sMTk0NjM0OltbMjE5NTRdXSwxOTQ2MzU6W1syMjI5NF1dLDE5NDYzNjpbWzIyMDIyXV0sMTk0NjM3OltbMjIyOTVdXSwxOTQ2Mzg6W1syMjA5N11dLDE5NDYzOTpbWzIyMTMyXV0sMTk0NjQwOltbMjA5OTldXSwxOTQ2NDE6W1syMjc2Nl1dLDE5NDY0MjpbWzIyNDc4XV0sMTk0NjQzOltbMjI1MTZdXSwxOTQ2NDQ6W1syMjU0MV1dLDE5NDY0NTpbWzIyNDExXV0sMTk0NjQ2OltbMjI1NzhdXSwxOTQ2NDc6W1syMjU3N11dLDE5NDY0ODpbWzIyNzAwXV0sMTk0NjQ5OltbMTM2NDIwXV0sMTk0NjUwOltbMjI3NzBdXSwxOTQ2NTE6W1syMjc3NV1dLDE5NDY1MjpbWzIyNzkwXV0sMTk0NjUzOltbMjI4MTBdXSwxOTQ2NTQ6W1syMjgxOF1dLDE5NDY1NTpbWzIyODgyXV0sMTk0NjU2OltbMTM2ODcyXV0sMTk0NjU3OltbMTM2OTM4XV0sMTk0NjU4OltbMjMwMjBdXSwxOTQ2NTk6W1syMzA2N11dLDE5NDY2MDpbWzIzMDc5XV0sMTk0NjYxOltbMjMwMDBdXSwxOTQ2NjI6W1syMzE0Ml1dLDE5NDY2MzpbWzE0MDYyXV0sMTk0NjY0OltbMTQwNzZdXSwxOTQ2NjU6W1syMzMwNF1dLDE5NDY2NjpbWzIzMzU4XV0sMTk0NjY3OltbMjMzNThdXSwxOTQ2Njg6W1sxMzc2NzJdXSwxOTQ2Njk6W1syMzQ5MV1dLDE5NDY3MDpbWzIzNTEyXV0sMTk0NjcxOltbMjM1MjddXSwxOTQ2NzI6W1syMzUzOV1dLDE5NDY3MzpbWzEzODAwOF1dLDE5NDY3NDpbWzIzNTUxXV0sMTk0Njc1OltbMjM1NThdXSwxOTQ2NzY6W1syNDQwM11dLDE5NDY3NzpbWzIzNTg2XV0sMTk0Njc4OltbMTQyMDldXSwxOTQ2Nzk6W1syMzY0OF1dLDE5NDY4MDpbWzIzNjYyXV0sMTk0NjgxOltbMjM3NDRdXSwxOTQ2ODI6W1syMzY5M11dLDE5NDY4MzpbWzEzODcyNF1dLDE5NDY4NDpbWzIzODc1XV0sMTk0Njg1OltbMTM4NzI2XV0sMTk0Njg2OltbMjM5MThdXSwxOTQ2ODc6W1syMzkxNV1dLDE5NDY4ODpbWzIzOTMyXV0sMTk0Njg5OltbMjQwMzNdXSwxOTQ2OTA6W1syNDAzNF1dLDE5NDY5MTpbWzE0MzgzXV0sMTk0NjkyOltbMjQwNjFdXSwxOTQ2OTM6W1syNDEwNF1dLDE5NDY5NDpbWzI0MTI1XV0sMTk0Njk1OltbMjQxNjldXSwxOTQ2OTY6W1sxNDQzNF1dLDE5NDY5NzpbWzEzOTY1MV1dLDE5NDY5ODpbWzE0NDYwXV0sMTk0Njk5OltbMjQyNDBdXSwxOTQ3MDA6W1syNDI0M11dLDE5NDcwMTpbWzI0MjQ2XV0sMTk0NzAyOltbMjQyNjZdXSwxOTQ3MDM6W1sxNzI5NDZdXSwxOTQ3MDQ6W1syNDMxOF1dLDE5NDcwNTpbWzE0MDA4MV1dLDE5NDcwNjpbWzE0MDA4MV1dLDE5NDcwNzpbWzMzMjgxXV0sMTk0NzA4OltbMjQzNTRdXSwxOTQ3MDk6W1syNDM1NF1dLDE5NDcxMDpbWzE0NTM1XV0sMTk0NzExOltbMTQ0MDU2XV0sMTk0NzEyOltbMTU2MTIyXV0sMTk0NzEzOltbMjQ0MThdXSwxOTQ3MTQ6W1syNDQyN11dLDE5NDcxNTpbWzE0NTYzXV0sMTk0NzE2OltbMjQ0NzRdXSwxOTQ3MTc6W1syNDUyNV1dLDE5NDcxODpbWzI0NTM1XV0sMTk0NzE5OltbMjQ1NjldXSwxOTQ3MjA6W1syNDcwNV1dLDE5NDcyMTpbWzE0NjUwXV0sMTk0NzIyOltbMTQ2MjBdXSwxOTQ3MjM6W1syNDcyNF1dLDE5NDcyNDpbWzE0MTAxMl1dLDE5NDcyNTpbWzI0Nzc1XV0sMTk0NzI2OltbMjQ5MDRdXSwxOTQ3Mjc6W1syNDkwOF1dLDE5NDcyODpbWzI0OTEwXV0sMTk0NzI5OltbMjQ5MDhdXSwxOTQ3MzA6W1syNDk1NF1dLDE5NDczMTpbWzI0OTc0XV0sMTk0NzMyOltbMjUwMTBdXSwxOTQ3MzM6W1syNDk5Nl1dLDE5NDczNDpbWzI1MDA3XV0sMTk0NzM1OltbMjUwNTRdXSwxOTQ3MzY6W1syNTA3NF1dLDE5NDczNzpbWzI1MDc4XV0sMTk0NzM4OltbMjUxMDRdXSwxOTQ3Mzk6W1syNTExNV1dLDE5NDc0MDpbWzI1MTgxXV0sMTk0NzQxOltbMjUyNjVdXSwxOTQ3NDI6W1syNTMwMF1dLDE5NDc0MzpbWzI1NDI0XV0sMTk0NzQ0OltbMTQyMDkyXV0sMTk0NzQ1OltbMjU0MDVdXSwxOTQ3NDY6W1syNTM0MF1dLDE5NDc0NzpbWzI1NDQ4XV0sMTk0NzQ4OltbMjU0NzVdXSwxOTQ3NDk6W1syNTU3Ml1dLDE5NDc1MDpbWzE0MjMyMV1dLDE5NDc1MTpbWzI1NjM0XV0sMTk0NzUyOltbMjU1NDFdXSwxOTQ3NTM6W1syNTUxM11dLDE5NDc1NDpbWzE0ODk0XV0sMTk0NzU1OltbMjU3MDVdXSwxOTQ3NTY6W1syNTcyNl1dLDE5NDc1NzpbWzI1NzU3XV0sMTk0NzU4OltbMjU3MTldXSwxOTQ3NTk6W1sxNDk1Nl1dLDE5NDc2MDpbWzI1OTM1XV0sMTk0NzYxOltbMjU5NjRdXSwxOTQ3NjI6W1sxNDMzNzBdXSwxOTQ3NjM6W1syNjA4M11dLDE5NDc2NDpbWzI2MzYwXV0sMTk0NzY1OltbMjYxODVdXSwxOTQ3NjY6W1sxNTEyOV1dLDE5NDc2NzpbWzI2MjU3XV0sMTk0NzY4OltbMTUxMTJdXSwxOTQ3Njk6W1sxNTA3Nl1dLDE5NDc3MDpbWzIwODgyXV0sMTk0NzcxOltbMjA4ODVdXSwxOTQ3NzI6W1syNjM2OF1dLDE5NDc3MzpbWzI2MjY4XV0sMTk0Nzc0OltbMzI5NDFdXSwxOTQ3NzU6W1sxNzM2OV1dLDE5NDc3NjpbWzI2MzkxXV0sMTk0Nzc3OltbMjYzOTVdXSwxOTQ3Nzg6W1syNjQwMV1dLDE5NDc3OTpbWzI2NDYyXV0sMTk0NzgwOltbMjY0NTFdXSwxOTQ3ODE6W1sxNDQzMjNdXSwxOTQ3ODI6W1sxNTE3N11dLDE5NDc4MzpbWzI2NjE4XV0sMTk0Nzg0OltbMjY1MDFdXSwxOTQ3ODU6W1syNjcwNl1dLDE5NDc4NjpbWzI2NzU3XV0sMTk0Nzg3OltbMTQ0NDkzXV0sMTk0Nzg4OltbMjY3NjZdXSwxOTQ3ODk6W1syNjY1NV1dLDE5NDc5MDpbWzI2OTAwXV0sMTk0NzkxOltbMTUyNjFdXSwxOTQ3OTI6W1syNjk0Nl1dLDE5NDc5MzpbWzI3MDQzXV0sMTk0Nzk0OltbMjcxMTRdXSwxOTQ3OTU6W1syNzMwNF1dLDE5NDc5NjpbWzE0NTA1OV1dLDE5NDc5NzpbWzI3MzU1XV0sMTk0Nzk4OltbMTUzODRdXSwxOTQ3OTk6W1syNzQyNV1dLDE5NDgwMDpbWzE0NTU3NV1dLDE5NDgwMTpbWzI3NDc2XV0sMTk0ODAyOltbMTU0MzhdXSwxOTQ4MDM6W1syNzUwNl1dLDE5NDgwNDpbWzI3NTUxXV0sMTk0ODA1OltbMjc1NzhdXSwxOTQ4MDY6W1syNzU3OV1dLDE5NDgwNzpbWzE0NjA2MV1dLDE5NDgwODpbWzEzODUwN11dLDE5NDgwOTpbWzE0NjE3MF1dLDE5NDgxMDpbWzI3NzI2XV0sMTk0ODExOltbMTQ2NjIwXV0sMTk0ODEyOltbMjc4MzldXSwxOTQ4MTM6W1syNzg1M11dLDE5NDgxNDpbWzI3NzUxXV0sMTk0ODE1OltbMjc5MjZdXX0sXG42Mzc0NDp7NjM3NDQ6W1szNTkxMl1dLDYzNzQ1OltbMjYzNTZdXSw2Mzc0NjpbWzM2NTU0XV0sNjM3NDc6W1szNjA0MF1dLDYzNzQ4OltbMjgzNjldXSw2Mzc0OTpbWzIwMDE4XV0sNjM3NTA6W1syMTQ3N11dLDYzNzUxOltbNDA4NjBdXSw2Mzc1MjpbWzQwODYwXV0sNjM3NTM6W1syMjg2NV1dLDYzNzU0OltbMzczMjldXSw2Mzc1NTpbWzIxODk1XV0sNjM3NTY6W1syMjg1Nl1dLDYzNzU3OltbMjUwNzhdXSw2Mzc1ODpbWzMwMzEzXV0sNjM3NTk6W1szMjY0NV1dLDYzNzYwOltbMzQzNjddXSw2Mzc2MTpbWzM0NzQ2XV0sNjM3NjI6W1szNTA2NF1dLDYzNzYzOltbMzcwMDddXSw2Mzc2NDpbWzI3MTM4XV0sNjM3NjU6W1syNzkzMV1dLDYzNzY2OltbMjg4ODldXSw2Mzc2NzpbWzI5NjYyXV0sNjM3Njg6W1szMzg1M11dLDYzNzY5OltbMzcyMjZdXSw2Mzc3MDpbWzM5NDA5XV0sNjM3NzE6W1syMDA5OF1dLDYzNzcyOltbMjEzNjVdXSw2Mzc3MzpbWzI3Mzk2XV0sNjM3NzQ6W1syOTIxMV1dLDYzNzc1OltbMzQzNDldXSw2Mzc3NjpbWzQwNDc4XV0sNjM3Nzc6W1syMzg4OF1dLDYzNzc4OltbMjg2NTFdXSw2Mzc3OTpbWzM0MjUzXV0sNjM3ODA6W1szNTE3Ml1dLDYzNzgxOltbMjUyODldXSw2Mzc4MjpbWzMzMjQwXV0sNjM3ODM6W1szNDg0N11dLDYzNzg0OltbMjQyNjZdXSw2Mzc4NTpbWzI2MzkxXV0sNjM3ODY6W1syODAxMF1dLDYzNzg3OltbMjk0MzZdXSw2Mzc4ODpbWzM3MDcwXV0sNjM3ODk6W1syMDM1OF1dLDYzNzkwOltbMjA5MTldXSw2Mzc5MTpbWzIxMjE0XV0sNjM3OTI6W1syNTc5Nl1dLDYzNzkzOltbMjczNDddXSw2Mzc5NDpbWzI5MjAwXV0sNjM3OTU6W1szMDQzOV1dLDYzNzk2OltbMzI3NjldXSw2Mzc5NzpbWzM0MzEwXV0sNjM3OTg6W1szNDM5Nl1dLDYzNzk5OltbMzYzMzVdXSw2MzgwMDpbWzM4NzA2XV0sNjM4MDE6W1szOTc5MV1dLDYzODAyOltbNDA0NDJdXSw2MzgwMzpbWzMwODYwXV0sNjM4MDQ6W1szMTEwM11dLDYzODA1OltbMzIxNjBdXSw2MzgwNjpbWzMzNzM3XV0sNjM4MDc6W1szNzYzNl1dLDYzODA4OltbNDA1NzVdXSw2MzgwOTpbWzM1NTQyXV0sNjM4MTA6W1syMjc1MV1dLDYzODExOltbMjQzMjRdXSw2MzgxMjpbWzMxODQwXV0sNjM4MTM6W1szMjg5NF1dLDYzODE0OltbMjkyODJdXSw2MzgxNTpbWzMwOTIyXV0sNjM4MTY6W1szNjAzNF1dLDYzODE3OltbMzg2NDddXSw2MzgxODpbWzIyNzQ0XV0sNjM4MTk6W1syMzY1MF1dLDYzODIwOltbMjcxNTVdXSw2MzgyMTpbWzI4MTIyXV0sNjM4MjI6W1syODQzMV1dLDYzODIzOltbMzIwNDddXSw2MzgyNDpbWzMyMzExXV0sNjM4MjU6W1szODQ3NV1dLDYzODI2OltbMjEyMDJdXSw2MzgyNzpbWzMyOTA3XV0sNjM4Mjg6W1syMDk1Nl1dLDYzODI5OltbMjA5NDBdXSw2MzgzMDpbWzMxMjYwXV0sNjM4MzE6W1szMjE5MF1dLDYzODMyOltbMzM3NzddXSw2MzgzMzpbWzM4NTE3XV0sNjM4MzQ6W1szNTcxMl1dLDYzODM1OltbMjUyOTVdXSw2MzgzNjpbWzI3MTM4XV0sNjM4Mzc6W1szNTU4Ml1dLDYzODM4OltbMjAwMjVdXSw2MzgzOTpbWzIzNTI3XV0sNjM4NDA6W1syNDU5NF1dLDYzODQxOltbMjk1NzVdXSw2Mzg0MjpbWzMwMDY0XV0sNjM4NDM6W1syMTI3MV1dLDYzODQ0OltbMzA5NzFdXSw2Mzg0NTpbWzIwNDE1XV0sNjM4NDY6W1syNDQ4OV1dLDYzODQ3OltbMTk5ODFdXSw2Mzg0ODpbWzI3ODUyXV0sNjM4NDk6W1syNTk3Nl1dLDYzODUwOltbMzIwMzRdXSw2Mzg1MTpbWzIxNDQzXV0sNjM4NTI6W1syMjYyMl1dLDYzODUzOltbMzA0NjVdXSw2Mzg1NDpbWzMzODY1XV0sNjM4NTU6W1szNTQ5OF1dLDYzODU2OltbMjc1NzhdXSw2Mzg1NzpbWzM2Nzg0XV0sNjM4NTg6W1syNzc4NF1dLDYzODU5OltbMjUzNDJdXSw2Mzg2MDpbWzMzNTA5XV0sNjM4NjE6W1syNTUwNF1dLDYzODYyOltbMzAwNTNdXSw2Mzg2MzpbWzIwMTQyXV0sNjM4NjQ6W1syMDg0MV1dLDYzODY1OltbMjA5MzddXSw2Mzg2NjpbWzI2NzUzXV0sNjM4Njc6W1szMTk3NV1dLDYzODY4OltbMzMzOTFdXSw2Mzg2OTpbWzM1NTM4XV0sNjM4NzA6W1szNzMyN11dLDYzODcxOltbMjEyMzddXSw2Mzg3MjpbWzIxNTcwXV0sNjM4NzM6W1syMjg5OV1dLDYzODc0OltbMjQzMDBdXSw2Mzg3NTpbWzI2MDUzXV0sNjM4NzY6W1syODY3MF1dLDYzODc3OltbMzEwMThdXSw2Mzg3ODpbWzM4MzE3XV0sNjM4Nzk6W1szOTUzMF1dLDYzODgwOltbNDA1OTldXSw2Mzg4MTpbWzQwNjU0XV0sNjM4ODI6W1syMTE0N11dLDYzODgzOltbMjYzMTBdXSw2Mzg4NDpbWzI3NTExXV0sNjM4ODU6W1szNjcwNl1dLDYzODg2OltbMjQxODBdXSw2Mzg4NzpbWzI0OTc2XV0sNjM4ODg6W1syNTA4OF1dLDYzODg5OltbMjU3NTRdXSw2Mzg5MDpbWzI4NDUxXV0sNjM4OTE6W1syOTAwMV1dLDYzODkyOltbMjk4MzNdXSw2Mzg5MzpbWzMxMTc4XV0sNjM4OTQ6W1szMjI0NF1dLDYzODk1OltbMzI4NzldXSw2Mzg5NjpbWzM2NjQ2XV0sNjM4OTc6W1szNDAzMF1dLDYzODk4OltbMzY4OTldXSw2Mzg5OTpbWzM3NzA2XV0sNjM5MDA6W1syMTAxNV1dLDYzOTAxOltbMjExNTVdXSw2MzkwMjpbWzIxNjkzXV0sNjM5MDM6W1syODg3Ml1dLDYzOTA0OltbMzUwMTBdXSw2MzkwNTpbWzM1NDk4XV0sNjM5MDY6W1syNDI2NV1dLDYzOTA3OltbMjQ1NjVdXSw2MzkwODpbWzI1NDY3XV0sNjM5MDk6W1syNzU2Nl1dLDYzOTEwOltbMzE4MDZdXSw2MzkxMTpbWzI5NTU3XV0sNjM5MTI6W1syMDE5Nl1dLDYzOTEzOltbMjIyNjVdXSw2MzkxNDpbWzIzNTI3XV0sNjM5MTU6W1syMzk5NF1dLDYzOTE2OltbMjQ2MDRdXSw2MzkxNzpbWzI5NjE4XV0sNjM5MTg6W1syOTgwMV1dLDYzOTE5OltbMzI2NjZdXSw2MzkyMDpbWzMyODM4XV0sNjM5MjE6W1szNzQyOF1dLDYzOTIyOltbMzg2NDZdXSw2MzkyMzpbWzM4NzI4XV0sNjM5MjQ6W1szODkzNl1dLDYzOTI1OltbMjAzNjNdXSw2MzkyNjpbWzMxMTUwXV0sNjM5Mjc6W1szNzMwMF1dLDYzOTI4OltbMzg1ODRdXSw2MzkyOTpbWzI0ODAxXV0sNjM5MzA6W1syMDEwMl1dLDYzOTMxOltbMjA2OThdXSw2MzkzMjpbWzIzNTM0XV0sNjM5MzM6W1syMzYxNV1dLDYzOTM0OltbMjYwMDldXSw2MzkzNTpbWzI3MTM4XV0sNjM5MzY6W1syOTEzNF1dLDYzOTM3OltbMzAyNzRdXSw2MzkzODpbWzM0MDQ0XV0sNjM5Mzk6W1szNjk4OF1dLDYzOTQwOltbNDA4NDVdXSw2Mzk0MTpbWzI2MjQ4XV0sNjM5NDI6W1szODQ0Nl1dLDYzOTQzOltbMjExMjldXSw2Mzk0NDpbWzI2NDkxXV0sNjM5NDU6W1syNjYxMV1dLDYzOTQ2OltbMjc5NjldXSw2Mzk0NzpbWzI4MzE2XV0sNjM5NDg6W1syOTcwNV1dLDYzOTQ5OltbMzAwNDFdXSw2Mzk1MDpbWzMwODI3XV0sNjM5NTE6W1szMjAxNl1dLDYzOTUyOltbMzkwMDZdXSw2Mzk1MzpbWzIwODQ1XV0sNjM5NTQ6W1syNTEzNF1dLDYzOTU1OltbMzg1MjBdXSw2Mzk1NjpbWzIwNTIzXV0sNjM5NTc6W1syMzgzM11dLDYzOTU4OltbMjgxMzhdXSw2Mzk1OTpbWzM2NjUwXV0sNjM5NjA6W1syNDQ1OV1dLDYzOTYxOltbMjQ5MDBdXSw2Mzk2MjpbWzI2NjQ3XV0sNjM5NjM6W1syOTU3NV1dLDYzOTY0OltbMzg1MzRdXSw2Mzk2NTpbWzIxMDMzXV0sNjM5NjY6W1syMTUxOV1dLDYzOTY3OltbMjM2NTNdXSw2Mzk2ODpbWzI2MTMxXV0sNjM5Njk6W1syNjQ0Nl1dLDYzOTcwOltbMjY3OTJdXSw2Mzk3MTpbWzI3ODc3XV0sNjM5NzI6W1syOTcwMl1dLDYzOTczOltbMzAxNzhdXSw2Mzk3NDpbWzMyNjMzXV0sNjM5NzU6W1szNTAyM11dLDYzOTc2OltbMzUwNDFdXSw2Mzk3NzpbWzM3MzI0XV0sNjM5Nzg6W1szODYyNl1dLDYzOTc5OltbMjEzMTFdXSw2Mzk4MDpbWzI4MzQ2XV0sNjM5ODE6W1syMTUzM11dLDYzOTgyOltbMjkxMzZdXSw2Mzk4MzpbWzI5ODQ4XV0sNjM5ODQ6W1szNDI5OF1dLDYzOTg1OltbMzg1NjNdXSw2Mzk4NjpbWzQwMDIzXV0sNjM5ODc6W1s0MDYwN11dLDYzOTg4OltbMjY1MTldXSw2Mzk4OTpbWzI4MTA3XV0sNjM5OTA6W1szMzI1Nl1dLDYzOTkxOltbMzE0MzVdXSw2Mzk5MjpbWzMxNTIwXV0sNjM5OTM6W1szMTg5MF1dLDYzOTk0OltbMjkzNzZdXSw2Mzk5NTpbWzI4ODI1XV0sNjM5OTY6W1szNTY3Ml1dLDYzOTk3OltbMjAxNjBdXSw2Mzk5ODpbWzMzNTkwXV0sNjM5OTk6W1syMTA1MF1dLDE5NDgxNjpbWzI3OTY2XV0sMTk0ODE3OltbMjgwMjNdXSwxOTQ4MTg6W1syNzk2OV1dLDE5NDgxOTpbWzI4MDA5XV0sMTk0ODIwOltbMjgwMjRdXSwxOTQ4MjE6W1syODAzN11dLDE5NDgyMjpbWzE0NjcxOF1dLDE5NDgyMzpbWzI3OTU2XV0sMTk0ODI0OltbMjgyMDddXSwxOTQ4MjU6W1syODI3MF1dLDE5NDgyNjpbWzE1NjY3XV0sMTk0ODI3OltbMjgzNjNdXSwxOTQ4Mjg6W1syODM1OV1dLDE5NDgyOTpbWzE0NzE1M11dLDE5NDgzMDpbWzI4MTUzXV0sMTk0ODMxOltbMjg1MjZdXSwxOTQ4MzI6W1sxNDcyOTRdXSwxOTQ4MzM6W1sxNDczNDJdXSwxOTQ4MzQ6W1syODYxNF1dLDE5NDgzNTpbWzI4NzI5XV0sMTk0ODM2OltbMjg3MDJdXSwxOTQ4Mzc6W1syODY5OV1dLDE5NDgzODpbWzE1NzY2XV0sMTk0ODM5OltbMjg3NDZdXSwxOTQ4NDA6W1syODc5N11dLDE5NDg0MTpbWzI4NzkxXV0sMTk0ODQyOltbMjg4NDVdXSwxOTQ4NDM6W1sxMzIzODldXSwxOTQ4NDQ6W1syODk5N11dLDE5NDg0NTpbWzE0ODA2N11dLDE5NDg0NjpbWzI5MDg0XV0sMTk0ODQ3OltbMTQ4Mzk1XV0sMTk0ODQ4OltbMjkyMjRdXSwxOTQ4NDk6W1syOTIzN11dLDE5NDg1MDpbWzI5MjY0XV0sMTk0ODUxOltbMTQ5MDAwXV0sMTk0ODUyOltbMjkzMTJdXSwxOTQ4NTM6W1syOTMzM11dLDE5NDg1NDpbWzE0OTMwMV1dLDE5NDg1NTpbWzE0OTUyNF1dLDE5NDg1NjpbWzI5NTYyXV0sMTk0ODU3OltbMjk1NzldXSwxOTQ4NTg6W1sxNjA0NF1dLDE5NDg1OTpbWzI5NjA1XV0sMTk0ODYwOltbMTYwNTZdXSwxOTQ4NjE6W1sxNjA1Nl1dLDE5NDg2MjpbWzI5NzY3XV0sMTk0ODYzOltbMjk3ODhdXSwxOTQ4NjQ6W1syOTgwOV1dLDE5NDg2NTpbWzI5ODI5XV0sMTk0ODY2OltbMjk4OThdXSwxOTQ4Njc6W1sxNjE1NV1dLDE5NDg2ODpbWzI5OTg4XV0sMTk0ODY5OltbMTUwNTgyXV0sMTk0ODcwOltbMzAwMTRdXSwxOTQ4NzE6W1sxNTA2NzRdXSwxOTQ4NzI6W1szMDA2NF1dLDE5NDg3MzpbWzEzOTY3OV1dLDE5NDg3NDpbWzMwMjI0XV0sMTk0ODc1OltbMTUxNDU3XV0sMTk0ODc2OltbMTUxNDgwXV0sMTk0ODc3OltbMTUxNjIwXV0sMTk0ODc4OltbMTYzODBdXSwxOTQ4Nzk6W1sxNjM5Ml1dLDE5NDg4MDpbWzMwNDUyXV0sMTk0ODgxOltbMTUxNzk1XV0sMTk0ODgyOltbMTUxNzk0XV0sMTk0ODgzOltbMTUxODMzXV0sMTk0ODg0OltbMTUxODU5XV0sMTk0ODg1OltbMzA0OTRdXSwxOTQ4ODY6W1szMDQ5NV1dLDE5NDg4NzpbWzMwNDk1XV0sMTk0ODg4OltbMzA1MzhdXSwxOTQ4ODk6W1sxNjQ0MV1dLDE5NDg5MDpbWzMwNjAzXV0sMTk0ODkxOltbMTY0NTRdXSwxOTQ4OTI6W1sxNjUzNF1dLDE5NDg5MzpbWzE1MjYwNV1dLDE5NDg5NDpbWzMwNzk4XV0sMTk0ODk1OltbMzA4NjBdXSwxOTQ4OTY6W1szMDkyNF1dLDE5NDg5NzpbWzE2NjExXV0sMTk0ODk4OltbMTUzMTI2XV0sMTk0ODk5OltbMzEwNjJdXSwxOTQ5MDA6W1sxNTMyNDJdXSwxOTQ5MDE6W1sxNTMyODVdXSwxOTQ5MDI6W1szMTExOV1dLDE5NDkwMzpbWzMxMjExXV0sMTk0OTA0OltbMTY2ODddXSwxOTQ5MDU6W1szMTI5Nl1dLDE5NDkwNjpbWzMxMzA2XV0sMTk0OTA3OltbMzEzMTFdXSwxOTQ5MDg6W1sxNTM5ODBdXSwxOTQ5MDk6W1sxNTQyNzldXSwxOTQ5MTA6W1sxNTQyNzldXSwxOTQ5MTE6W1szMTQ3MF1dLDE5NDkxMjpbWzE2ODk4XV0sMTk0OTEzOltbMTU0NTM5XV0sMTk0OTE0OltbMzE2ODZdXSwxOTQ5MTU6W1szMTY4OV1dLDE5NDkxNjpbWzE2OTM1XV0sMTk0OTE3OltbMTU0NzUyXV0sMTk0OTE4OltbMzE5NTRdXSwxOTQ5MTk6W1sxNzA1Nl1dLDE5NDkyMDpbWzMxOTc2XV0sMTk0OTIxOltbMzE5NzFdXSwxOTQ5MjI6W1szMjAwMF1dLDE5NDkyMzpbWzE1NTUyNl1dLDE5NDkyNDpbWzMyMDk5XV0sMTk0OTI1OltbMTcxNTNdXSwxOTQ5MjY6W1szMjE5OV1dLDE5NDkyNzpbWzMyMjU4XV0sMTk0OTI4OltbMzIzMjVdXSwxOTQ5Mjk6W1sxNzIwNF1dLDE5NDkzMDpbWzE1NjIwMF1dLDE5NDkzMTpbWzE1NjIzMV1dLDE5NDkzMjpbWzE3MjQxXV0sMTk0OTMzOltbMTU2Mzc3XV0sMTk0OTM0OltbMzI2MzRdXSwxOTQ5MzU6W1sxNTY0NzhdXSwxOTQ5MzY6W1szMjY2MV1dLDE5NDkzNzpbWzMyNzYyXV0sMTk0OTM4OltbMzI3NzNdXSwxOTQ5Mzk6W1sxNTY4OTBdXSwxOTQ5NDA6W1sxNTY5NjNdXSwxOTQ5NDE6W1szMjg2NF1dLDE5NDk0MjpbWzE1NzA5Nl1dLDE5NDk0MzpbWzMyODgwXV0sMTk0OTQ0OltbMTQ0MjIzXV0sMTk0OTQ1OltbMTczNjVdXSwxOTQ5NDY6W1szMjk0Nl1dLDE5NDk0NzpbWzMzMDI3XV0sMTk0OTQ4OltbMTc0MTldXSwxOTQ5NDk6W1szMzA4Nl1dLDE5NDk1MDpbWzIzMjIxXV0sMTk0OTUxOltbMTU3NjA3XV0sMTk0OTUyOltbMTU3NjIxXV0sMTk0OTUzOltbMTQ0Mjc1XV0sMTk0OTU0OltbMTQ0Mjg0XV0sMTk0OTU1OltbMzMyODFdXSwxOTQ5NTY6W1szMzI4NF1dLDE5NDk1NzpbWzM2NzY2XV0sMTk0OTU4OltbMTc1MTVdXSwxOTQ5NTk6W1szMzQyNV1dLDE5NDk2MDpbWzMzNDE5XV0sMTk0OTYxOltbMzM0MzddXSwxOTQ5NjI6W1syMTE3MV1dLDE5NDk2MzpbWzMzNDU3XV0sMTk0OTY0OltbMzM0NTldXSwxOTQ5NjU6W1szMzQ2OV1dLDE5NDk2NjpbWzMzNTEwXV0sMTk0OTY3OltbMTU4NTI0XV0sMTk0OTY4OltbMzM1MDldXSwxOTQ5Njk6W1szMzU2NV1dLDE5NDk3MDpbWzMzNjM1XV0sMTk0OTcxOltbMzM3MDldXSwxOTQ5NzI6W1szMzU3MV1dLDE5NDk3MzpbWzMzNzI1XV0sMTk0OTc0OltbMzM3NjddXSwxOTQ5NzU6W1szMzg3OV1dLDE5NDk3NjpbWzMzNjE5XV0sMTk0OTc3OltbMzM3MzhdXSwxOTQ5Nzg6W1szMzc0MF1dLDE5NDk3OTpbWzMzNzU2XV0sMTk0OTgwOltbMTU4Nzc0XV0sMTk0OTgxOltbMTU5MDgzXV0sMTk0OTgyOltbMTU4OTMzXV0sMTk0OTgzOltbMTc3MDddXSwxOTQ5ODQ6W1szNDAzM11dLDE5NDk4NTpbWzM0MDM1XV0sMTk0OTg2OltbMzQwNzBdXSwxOTQ5ODc6W1sxNjA3MTRdXSwxOTQ5ODg6W1szNDE0OF1dLDE5NDk4OTpbWzE1OTUzMl1dLDE5NDk5MDpbWzE3NzU3XV0sMTk0OTkxOltbMTc3NjFdXSwxOTQ5OTI6W1sxNTk2NjVdXSwxOTQ5OTM6W1sxNTk5NTRdXSwxOTQ5OTQ6W1sxNzc3MV1dLDE5NDk5NTpbWzM0Mzg0XV0sMTk0OTk2OltbMzQzOTZdXSwxOTQ5OTc6W1szNDQwN11dLDE5NDk5ODpbWzM0NDA5XV0sMTk0OTk5OltbMzQ0NzNdXSwxOTUwMDA6W1szNDQ0MF1dLDE5NTAwMTpbWzM0NTc0XV0sMTk1MDAyOltbMzQ1MzBdXSwxOTUwMDM6W1szNDY4MV1dLDE5NTAwNDpbWzM0NjAwXV0sMTk1MDA1OltbMzQ2NjddXSwxOTUwMDY6W1szNDY5NF1dLDE5NTAwNzpbWzE3ODc5XV0sMTk1MDA4OltbMzQ3ODVdXSwxOTUwMDk6W1szNDgxN11dLDE5NTAxMDpbWzE3OTEzXV0sMTk1MDExOltbMzQ5MTJdXSwxOTUwMTI6W1szNDkxNV1dLDE5NTAxMzpbWzE2MTM4M11dLDE5NTAxNDpbWzM1MDMxXV0sMTk1MDE1OltbMzUwMzhdXSwxOTUwMTY6W1sxNzk3M11dLDE5NTAxNzpbWzM1MDY2XV0sMTk1MDE4OltbMTM0OTldXSwxOTUwMTk6W1sxNjE5NjZdXSwxOTUwMjA6W1sxNjIxNTBdXSwxOTUwMjE6W1sxODExMF1dLDE5NTAyMjpbWzE4MTE5XV0sMTk1MDIzOltbMzU0ODhdXSwxOTUwMjQ6W1szNTU2NV1dLDE5NTAyNTpbWzM1NzIyXV0sMTk1MDI2OltbMzU5MjVdXSwxOTUwMjc6W1sxNjI5ODRdXSwxOTUwMjg6W1szNjAxMV1dLDE5NTAyOTpbWzM2MDMzXV0sMTk1MDMwOltbMzYxMjNdXSwxOTUwMzE6W1szNjIxNV1dLDE5NTAzMjpbWzE2MzYzMV1dLDE5NTAzMzpbWzEzMzEyNF1dLDE5NTAzNDpbWzM2Mjk5XV0sMTk1MDM1OltbMzYyODRdXSwxOTUwMzY6W1szNjMzNl1dLDE5NTAzNzpbWzEzMzM0Ml1dLDE5NTAzODpbWzM2NTY0XV0sMTk1MDM5OltbMzY2NjRdXSwxOTUwNDA6W1sxNjUzMzBdXSwxOTUwNDE6W1sxNjUzNTddXSwxOTUwNDI6W1szNzAxMl1dLDE5NTA0MzpbWzM3MTA1XV0sMTk1MDQ0OltbMzcxMzddXSwxOTUwNDU6W1sxNjU2NzhdXSwxOTUwNDY6W1szNzE0N11dLDE5NTA0NzpbWzM3NDMyXV0sMTk1MDQ4OltbMzc1OTFdXSwxOTUwNDk6W1szNzU5Ml1dLDE5NTA1MDpbWzM3NTAwXV0sMTk1MDUxOltbMzc4ODFdXSwxOTUwNTI6W1szNzkwOV1dLDE5NTA1MzpbWzE2NjkwNl1dLDE5NTA1NDpbWzM4MjgzXV0sMTk1MDU1OltbMTg4MzddXSwxOTUwNTY6W1szODMyN11dLDE5NTA1NzpbWzE2NzI4N11dLDE5NTA1ODpbWzE4OTE4XV0sMTk1MDU5OltbMzg1OTVdXSwxOTUwNjA6W1syMzk4Nl1dLDE5NTA2MTpbWzM4NjkxXV0sMTk1MDYyOltbMTY4MjYxXV0sMTk1MDYzOltbMTY4NDc0XV0sMTk1MDY0OltbMTkwNTRdXSwxOTUwNjU6W1sxOTA2Ml1dLDE5NTA2NjpbWzM4ODgwXV0sMTk1MDY3OltbMTY4OTcwXV0sMTk1MDY4OltbMTkxMjJdXSwxOTUwNjk6W1sxNjkxMTBdXSwxOTUwNzA6W1szODkyM11dLDE5NTA3MTpbWzM4OTIzXV19LFxuNjQwMDA6ezY0MDAwOltbMjA5OTldXSw2NDAwMTpbWzI0MjMwXV0sNjQwMDI6W1syNTI5OV1dLDY0MDAzOltbMzE5NThdXSw2NDAwNDpbWzIzNDI5XV0sNjQwMDU6W1syNzkzNF1dLDY0MDA2OltbMjYyOTJdXSw2NDAwNzpbWzM2NjY3XV0sNjQwMDg6W1szNDg5Ml1dLDY0MDA5OltbMzg0NzddXSw2NDAxMDpbWzM1MjExXV0sNjQwMTE6W1syNDI3NV1dLDY0MDEyOltbMjA4MDBdXSw2NDAxMzpbWzIxOTUyXV0sNjQwMTY6W1syMjYxOF1dLDY0MDE4OltbMjYyMjhdXSw2NDAyMTpbWzIwOTU4XV0sNjQwMjI6W1syOTQ4Ml1dLDY0MDIzOltbMzA0MTBdXSw2NDAyNDpbWzMxMDM2XV0sNjQwMjU6W1szMTA3MF1dLDY0MDI2OltbMzEwNzddXSw2NDAyNzpbWzMxMTE5XV0sNjQwMjg6W1szODc0Ml1dLDY0MDI5OltbMzE5MzRdXSw2NDAzMDpbWzMyNzAxXV0sNjQwMzI6W1szNDMyMl1dLDY0MDM0OltbMzU1NzZdXSw2NDAzNzpbWzM2OTIwXV0sNjQwMzg6W1szNzExN11dLDY0MDQyOltbMzkxNTFdXSw2NDA0MzpbWzM5MTY0XV0sNjQwNDQ6W1szOTIwOF1dLDY0MDQ1OltbNDAzNzJdXSw2NDA0NjpbWzM3MDg2XV0sNjQwNDc6W1szODU4M11dLDY0MDQ4OltbMjAzOThdXSw2NDA0OTpbWzIwNzExXV0sNjQwNTA6W1syMDgxM11dLDY0MDUxOltbMjExOTNdXSw2NDA1MjpbWzIxMjIwXV0sNjQwNTM6W1syMTMyOV1dLDY0MDU0OltbMjE5MTddXSw2NDA1NTpbWzIyMDIyXV0sNjQwNTY6W1syMjEyMF1dLDY0MDU3OltbMjI1OTJdXSw2NDA1ODpbWzIyNjk2XV0sNjQwNTk6W1syMzY1Ml1dLDY0MDYwOltbMjM2NjJdXSw2NDA2MTpbWzI0NzI0XV0sNjQwNjI6W1syNDkzNl1dLDY0MDYzOltbMjQ5NzRdXSw2NDA2NDpbWzI1MDc0XV0sNjQwNjU6W1syNTkzNV1dLDY0MDY2OltbMjYwODJdXSw2NDA2NzpbWzI2MjU3XV0sNjQwNjg6W1syNjc1N11dLDY0MDY5OltbMjgwMjNdXSw2NDA3MDpbWzI4MTg2XV0sNjQwNzE6W1syODQ1MF1dLDY0MDcyOltbMjkwMzhdXSw2NDA3MzpbWzI5MjI3XV0sNjQwNzQ6W1syOTczMF1dLDY0MDc1OltbMzA4NjVdXSw2NDA3NjpbWzMxMDM4XV0sNjQwNzc6W1szMTA0OV1dLDY0MDc4OltbMzEwNDhdXSw2NDA3OTpbWzMxMDU2XV0sNjQwODA6W1szMTA2Ml1dLDY0MDgxOltbMzEwNjldXSw2NDA4MjpbWzMxMTE3XV0sNjQwODM6W1szMTExOF1dLDY0MDg0OltbMzEyOTZdXSw2NDA4NTpbWzMxMzYxXV0sNjQwODY6W1szMTY4MF1dLDY0MDg3OltbMzIyNDRdXSw2NDA4ODpbWzMyMjY1XV0sNjQwODk6W1szMjMyMV1dLDY0MDkwOltbMzI2MjZdXSw2NDA5MTpbWzMyNzczXV0sNjQwOTI6W1szMzI2MV1dLDY0MDkzOltbMzM0MDFdXSw2NDA5NDpbWzMzNDAxXV0sNjQwOTU6W1szMzg3OV1dLDY0MDk2OltbMzUwODhdXSw2NDA5NzpbWzM1MjIyXV0sNjQwOTg6W1szNTU4NV1dLDY0MDk5OltbMzU2NDFdXSw2NDEwMDpbWzM2MDUxXV0sNjQxMDE6W1szNjEwNF1dLDY0MTAyOltbMzY3OTBdXSw2NDEwMzpbWzM2OTIwXV0sNjQxMDQ6W1szODYyN11dLDY0MTA1OltbMzg5MTFdXSw2NDEwNjpbWzM4OTcxXV0sNjQxMDc6W1syNDY5M11dLDY0MTA4OltbMTQ4MjA2XV0sNjQxMDk6W1szMzMwNF1dLDY0MTEyOltbMjAwMDZdXSw2NDExMzpbWzIwOTE3XV0sNjQxMTQ6W1syMDg0MF1dLDY0MTE1OltbMjAzNTJdXSw2NDExNjpbWzIwODA1XV0sNjQxMTc6W1syMDg2NF1dLDY0MTE4OltbMjExOTFdXSw2NDExOTpbWzIxMjQyXV0sNjQxMjA6W1syMTkxN11dLDY0MTIxOltbMjE4NDVdXSw2NDEyMjpbWzIxOTEzXV0sNjQxMjM6W1syMTk4Nl1dLDY0MTI0OltbMjI2MThdXSw2NDEyNTpbWzIyNzA3XV0sNjQxMjY6W1syMjg1Ml1dLDY0MTI3OltbMjI4NjhdXSw2NDEyODpbWzIzMTM4XV0sNjQxMjk6W1syMzMzNl1dLDY0MTMwOltbMjQyNzRdXSw2NDEzMTpbWzI0MjgxXV0sNjQxMzI6W1syNDQyNV1dLDY0MTMzOltbMjQ0OTNdXSw2NDEzNDpbWzI0NzkyXV0sNjQxMzU6W1syNDkxMF1dLDY0MTM2OltbMjQ4NDBdXSw2NDEzNzpbWzI0OTc0XV0sNjQxMzg6W1syNDkyOF1dLDY0MTM5OltbMjUwNzRdXSw2NDE0MDpbWzI1MTQwXV0sNjQxNDE6W1syNTU0MF1dLDY0MTQyOltbMjU2MjhdXSw2NDE0MzpbWzI1NjgyXV0sNjQxNDQ6W1syNTk0Ml1dLDY0MTQ1OltbMjYyMjhdXSw2NDE0NjpbWzI2MzkxXV0sNjQxNDc6W1syNjM5NV1dLDY0MTQ4OltbMjY0NTRdXSw2NDE0OTpbWzI3NTEzXV0sNjQxNTA6W1syNzU3OF1dLDY0MTUxOltbMjc5NjldXSw2NDE1MjpbWzI4Mzc5XV0sNjQxNTM6W1syODM2M11dLDY0MTU0OltbMjg0NTBdXSw2NDE1NTpbWzI4NzAyXV0sNjQxNTY6W1syOTAzOF1dLDY0MTU3OltbMzA2MzFdXSw2NDE1ODpbWzI5MjM3XV0sNjQxNTk6W1syOTM1OV1dLDY0MTYwOltbMjk0ODJdXSw2NDE2MTpbWzI5ODA5XV0sNjQxNjI6W1syOTk1OF1dLDY0MTYzOltbMzAwMTFdXSw2NDE2NDpbWzMwMjM3XV0sNjQxNjU6W1szMDIzOV1dLDY0MTY2OltbMzA0MTBdXSw2NDE2NzpbWzMwNDI3XV0sNjQxNjg6W1szMDQ1Ml1dLDY0MTY5OltbMzA1MzhdXSw2NDE3MDpbWzMwNTI4XV0sNjQxNzE6W1szMDkyNF1dLDY0MTcyOltbMzE0MDldXSw2NDE3MzpbWzMxNjgwXV0sNjQxNzQ6W1szMTg2N11dLDY0MTc1OltbMzIwOTFdXSw2NDE3NjpbWzMyMjQ0XV0sNjQxNzc6W1szMjU3NF1dLDY0MTc4OltbMzI3NzNdXSw2NDE3OTpbWzMzNjE4XV0sNjQxODA6W1szMzc3NV1dLDY0MTgxOltbMzQ2ODFdXSw2NDE4MjpbWzM1MTM3XV0sNjQxODM6W1szNTIwNl1dLDY0MTg0OltbMzUyMjJdXSw2NDE4NTpbWzM1NTE5XV0sNjQxODY6W1szNTU3Nl1dLDY0MTg3OltbMzU1MzFdXSw2NDE4ODpbWzM1NTg1XV0sNjQxODk6W1szNTU4Ml1dLDY0MTkwOltbMzU1NjVdXSw2NDE5MTpbWzM1NjQxXV0sNjQxOTI6W1szNTcyMl1dLDY0MTkzOltbMzYxMDRdXSw2NDE5NDpbWzM2NjY0XV0sNjQxOTU6W1szNjk3OF1dLDY0MTk2OltbMzcyNzNdXSw2NDE5NzpbWzM3NDk0XV0sNjQxOTg6W1szODUyNF1dLDY0MTk5OltbMzg2MjddXSw2NDIwMDpbWzM4NzQyXV0sNjQyMDE6W1szODg3NV1dLDY0MjAyOltbMzg5MTFdXSw2NDIwMzpbWzM4OTIzXV0sNjQyMDQ6W1szODk3MV1dLDY0MjA1OltbMzk2OThdXSw2NDIwNjpbWzQwODYwXV0sNjQyMDc6W1sxNDEzODZdXSw2NDIwODpbWzE0MTM4MF1dLDY0MjA5OltbMTQ0MzQxXV0sNjQyMTA6W1sxNTI2MV1dLDY0MjExOltbMTY0MDhdXSw2NDIxMjpbWzE2NDQxXV0sNjQyMTM6W1sxNTIxMzddXSw2NDIxNDpbWzE1NDgzMl1dLDY0MjE1OltbMTYzNTM5XV0sNjQyMTY6W1s0MDc3MV1dLDY0MjE3OltbNDA4NDZdXSwxOTUwNzI6W1szODk1M11dLDE5NTA3MzpbWzE2OTM5OF1dLDE5NTA3NDpbWzM5MTM4XV0sMTk1MDc1OltbMTkyNTFdXSwxOTUwNzY6W1szOTIwOV1dLDE5NTA3NzpbWzM5MzM1XV0sMTk1MDc4OltbMzkzNjJdXSwxOTUwNzk6W1szOTQyMl1dLDE5NTA4MDpbWzE5NDA2XV0sMTk1MDgxOltbMTcwODAwXV0sMTk1MDgyOltbMzk2OThdXSwxOTUwODM6W1s0MDAwMF1dLDE5NTA4NDpbWzQwMTg5XV0sMTk1MDg1OltbMTk2NjJdXSwxOTUwODY6W1sxOTY5M11dLDE5NTA4NzpbWzQwMjk1XV0sMTk1MDg4OltbMTcyMjM4XV0sMTk1MDg5OltbMTk3MDRdXSwxOTUwOTA6W1sxNzIyOTNdXSwxOTUwOTE6W1sxNzI1NThdXSwxOTUwOTI6W1sxNzI2ODldXSwxOTUwOTM6W1s0MDYzNV1dLDE5NTA5NDpbWzE5Nzk4XV0sMTk1MDk1OltbNDA2OTddXSwxOTUwOTY6W1s0MDcwMl1dLDE5NTA5NzpbWzQwNzA5XV0sMTk1MDk4OltbNDA3MTldXSwxOTUwOTk6W1s0MDcyNl1dLDE5NTEwMDpbWzQwNzYzXV0sMTk1MTAxOltbMTczNTY4XV19LFxuNjQyNTY6ezY0MjU2OltbMTAyLDEwMl0sMjU2XSw2NDI1NzpbWzEwMiwxMDVdLDI1Nl0sNjQyNTg6W1sxMDIsMTA4XSwyNTZdLDY0MjU5OltbMTAyLDEwMiwxMDVdLDI1Nl0sNjQyNjA6W1sxMDIsMTAyLDEwOF0sMjU2XSw2NDI2MTpbWzM4MywxMTZdLDI1Nl0sNjQyNjI6W1sxMTUsMTE2XSwyNTZdLDY0Mjc1OltbMTM5NiwxMzk4XSwyNTZdLDY0Mjc2OltbMTM5NiwxMzgxXSwyNTZdLDY0Mjc3OltbMTM5NiwxMzg3XSwyNTZdLDY0Mjc4OltbMTQwNiwxMzk4XSwyNTZdLDY0Mjc5OltbMTM5NiwxMzg5XSwyNTZdLDY0Mjg1OltbMTQ5NywxNDYwXSw1MTJdLDY0Mjg2OlssMjZdLDY0Mjg3OltbMTUyMiwxNDYzXSw1MTJdLDY0Mjg4OltbMTUwNl0sMjU2XSw2NDI4OTpbWzE0ODhdLDI1Nl0sNjQyOTA6W1sxNDkxXSwyNTZdLDY0MjkxOltbMTQ5Ml0sMjU2XSw2NDI5MjpbWzE0OTldLDI1Nl0sNjQyOTM6W1sxNTAwXSwyNTZdLDY0Mjk0OltbMTUwMV0sMjU2XSw2NDI5NTpbWzE1MTJdLDI1Nl0sNjQyOTY6W1sxNTE0XSwyNTZdLDY0Mjk3OltbNDNdLDI1Nl0sNjQyOTg6W1sxNTEzLDE0NzNdLDUxMl0sNjQyOTk6W1sxNTEzLDE0NzRdLDUxMl0sNjQzMDA6W1s2NDMyOSwxNDczXSw1MTJdLDY0MzAxOltbNjQzMjksMTQ3NF0sNTEyXSw2NDMwMjpbWzE0ODgsMTQ2M10sNTEyXSw2NDMwMzpbWzE0ODgsMTQ2NF0sNTEyXSw2NDMwNDpbWzE0ODgsMTQ2OF0sNTEyXSw2NDMwNTpbWzE0ODksMTQ2OF0sNTEyXSw2NDMwNjpbWzE0OTAsMTQ2OF0sNTEyXSw2NDMwNzpbWzE0OTEsMTQ2OF0sNTEyXSw2NDMwODpbWzE0OTIsMTQ2OF0sNTEyXSw2NDMwOTpbWzE0OTMsMTQ2OF0sNTEyXSw2NDMxMDpbWzE0OTQsMTQ2OF0sNTEyXSw2NDMxMjpbWzE0OTYsMTQ2OF0sNTEyXSw2NDMxMzpbWzE0OTcsMTQ2OF0sNTEyXSw2NDMxNDpbWzE0OTgsMTQ2OF0sNTEyXSw2NDMxNTpbWzE0OTksMTQ2OF0sNTEyXSw2NDMxNjpbWzE1MDAsMTQ2OF0sNTEyXSw2NDMxODpbWzE1MDIsMTQ2OF0sNTEyXSw2NDMyMDpbWzE1MDQsMTQ2OF0sNTEyXSw2NDMyMTpbWzE1MDUsMTQ2OF0sNTEyXSw2NDMyMzpbWzE1MDcsMTQ2OF0sNTEyXSw2NDMyNDpbWzE1MDgsMTQ2OF0sNTEyXSw2NDMyNjpbWzE1MTAsMTQ2OF0sNTEyXSw2NDMyNzpbWzE1MTEsMTQ2OF0sNTEyXSw2NDMyODpbWzE1MTIsMTQ2OF0sNTEyXSw2NDMyOTpbWzE1MTMsMTQ2OF0sNTEyXSw2NDMzMDpbWzE1MTQsMTQ2OF0sNTEyXSw2NDMzMTpbWzE0OTMsMTQ2NV0sNTEyXSw2NDMzMjpbWzE0ODksMTQ3MV0sNTEyXSw2NDMzMzpbWzE0OTksMTQ3MV0sNTEyXSw2NDMzNDpbWzE1MDgsMTQ3MV0sNTEyXSw2NDMzNTpbWzE0ODgsMTUwMF0sMjU2XSw2NDMzNjpbWzE2NDldLDI1Nl0sNjQzMzc6W1sxNjQ5XSwyNTZdLDY0MzM4OltbMTY1OV0sMjU2XSw2NDMzOTpbWzE2NTldLDI1Nl0sNjQzNDA6W1sxNjU5XSwyNTZdLDY0MzQxOltbMTY1OV0sMjU2XSw2NDM0MjpbWzE2NjJdLDI1Nl0sNjQzNDM6W1sxNjYyXSwyNTZdLDY0MzQ0OltbMTY2Ml0sMjU2XSw2NDM0NTpbWzE2NjJdLDI1Nl0sNjQzNDY6W1sxNjY0XSwyNTZdLDY0MzQ3OltbMTY2NF0sMjU2XSw2NDM0ODpbWzE2NjRdLDI1Nl0sNjQzNDk6W1sxNjY0XSwyNTZdLDY0MzUwOltbMTY1OF0sMjU2XSw2NDM1MTpbWzE2NThdLDI1Nl0sNjQzNTI6W1sxNjU4XSwyNTZdLDY0MzUzOltbMTY1OF0sMjU2XSw2NDM1NDpbWzE2NjNdLDI1Nl0sNjQzNTU6W1sxNjYzXSwyNTZdLDY0MzU2OltbMTY2M10sMjU2XSw2NDM1NzpbWzE2NjNdLDI1Nl0sNjQzNTg6W1sxNjU3XSwyNTZdLDY0MzU5OltbMTY1N10sMjU2XSw2NDM2MDpbWzE2NTddLDI1Nl0sNjQzNjE6W1sxNjU3XSwyNTZdLDY0MzYyOltbMTcwMF0sMjU2XSw2NDM2MzpbWzE3MDBdLDI1Nl0sNjQzNjQ6W1sxNzAwXSwyNTZdLDY0MzY1OltbMTcwMF0sMjU2XSw2NDM2NjpbWzE3MDJdLDI1Nl0sNjQzNjc6W1sxNzAyXSwyNTZdLDY0MzY4OltbMTcwMl0sMjU2XSw2NDM2OTpbWzE3MDJdLDI1Nl0sNjQzNzA6W1sxNjY4XSwyNTZdLDY0MzcxOltbMTY2OF0sMjU2XSw2NDM3MjpbWzE2NjhdLDI1Nl0sNjQzNzM6W1sxNjY4XSwyNTZdLDY0Mzc0OltbMTY2N10sMjU2XSw2NDM3NTpbWzE2NjddLDI1Nl0sNjQzNzY6W1sxNjY3XSwyNTZdLDY0Mzc3OltbMTY2N10sMjU2XSw2NDM3ODpbWzE2NzBdLDI1Nl0sNjQzNzk6W1sxNjcwXSwyNTZdLDY0MzgwOltbMTY3MF0sMjU2XSw2NDM4MTpbWzE2NzBdLDI1Nl0sNjQzODI6W1sxNjcxXSwyNTZdLDY0MzgzOltbMTY3MV0sMjU2XSw2NDM4NDpbWzE2NzFdLDI1Nl0sNjQzODU6W1sxNjcxXSwyNTZdLDY0Mzg2OltbMTY3N10sMjU2XSw2NDM4NzpbWzE2NzddLDI1Nl0sNjQzODg6W1sxNjc2XSwyNTZdLDY0Mzg5OltbMTY3Nl0sMjU2XSw2NDM5MDpbWzE2NzhdLDI1Nl0sNjQzOTE6W1sxNjc4XSwyNTZdLDY0MzkyOltbMTY3Ml0sMjU2XSw2NDM5MzpbWzE2NzJdLDI1Nl0sNjQzOTQ6W1sxNjg4XSwyNTZdLDY0Mzk1OltbMTY4OF0sMjU2XSw2NDM5NjpbWzE2ODFdLDI1Nl0sNjQzOTc6W1sxNjgxXSwyNTZdLDY0Mzk4OltbMTcwNV0sMjU2XSw2NDM5OTpbWzE3MDVdLDI1Nl0sNjQ0MDA6W1sxNzA1XSwyNTZdLDY0NDAxOltbMTcwNV0sMjU2XSw2NDQwMjpbWzE3MTFdLDI1Nl0sNjQ0MDM6W1sxNzExXSwyNTZdLDY0NDA0OltbMTcxMV0sMjU2XSw2NDQwNTpbWzE3MTFdLDI1Nl0sNjQ0MDY6W1sxNzE1XSwyNTZdLDY0NDA3OltbMTcxNV0sMjU2XSw2NDQwODpbWzE3MTVdLDI1Nl0sNjQ0MDk6W1sxNzE1XSwyNTZdLDY0NDEwOltbMTcxM10sMjU2XSw2NDQxMTpbWzE3MTNdLDI1Nl0sNjQ0MTI6W1sxNzEzXSwyNTZdLDY0NDEzOltbMTcxM10sMjU2XSw2NDQxNDpbWzE3MjJdLDI1Nl0sNjQ0MTU6W1sxNzIyXSwyNTZdLDY0NDE2OltbMTcyM10sMjU2XSw2NDQxNzpbWzE3MjNdLDI1Nl0sNjQ0MTg6W1sxNzIzXSwyNTZdLDY0NDE5OltbMTcyM10sMjU2XSw2NDQyMDpbWzE3MjhdLDI1Nl0sNjQ0MjE6W1sxNzI4XSwyNTZdLDY0NDIyOltbMTcyOV0sMjU2XSw2NDQyMzpbWzE3MjldLDI1Nl0sNjQ0MjQ6W1sxNzI5XSwyNTZdLDY0NDI1OltbMTcyOV0sMjU2XSw2NDQyNjpbWzE3MjZdLDI1Nl0sNjQ0Mjc6W1sxNzI2XSwyNTZdLDY0NDI4OltbMTcyNl0sMjU2XSw2NDQyOTpbWzE3MjZdLDI1Nl0sNjQ0MzA6W1sxNzQ2XSwyNTZdLDY0NDMxOltbMTc0Nl0sMjU2XSw2NDQzMjpbWzE3NDddLDI1Nl0sNjQ0MzM6W1sxNzQ3XSwyNTZdLDY0NDY3OltbMTcwOV0sMjU2XSw2NDQ2ODpbWzE3MDldLDI1Nl0sNjQ0Njk6W1sxNzA5XSwyNTZdLDY0NDcwOltbMTcwOV0sMjU2XSw2NDQ3MTpbWzE3MzVdLDI1Nl0sNjQ0NzI6W1sxNzM1XSwyNTZdLDY0NDczOltbMTczNF0sMjU2XSw2NDQ3NDpbWzE3MzRdLDI1Nl0sNjQ0NzU6W1sxNzM2XSwyNTZdLDY0NDc2OltbMTczNl0sMjU2XSw2NDQ3NzpbWzE2NTVdLDI1Nl0sNjQ0Nzg6W1sxNzM5XSwyNTZdLDY0NDc5OltbMTczOV0sMjU2XSw2NDQ4MDpbWzE3MzNdLDI1Nl0sNjQ0ODE6W1sxNzMzXSwyNTZdLDY0NDgyOltbMTczN10sMjU2XSw2NDQ4MzpbWzE3MzddLDI1Nl0sNjQ0ODQ6W1sxNzQ0XSwyNTZdLDY0NDg1OltbMTc0NF0sMjU2XSw2NDQ4NjpbWzE3NDRdLDI1Nl0sNjQ0ODc6W1sxNzQ0XSwyNTZdLDY0NDg4OltbMTYwOV0sMjU2XSw2NDQ4OTpbWzE2MDldLDI1Nl0sNjQ0OTA6W1sxNTc0LDE1NzVdLDI1Nl0sNjQ0OTE6W1sxNTc0LDE1NzVdLDI1Nl0sNjQ0OTI6W1sxNTc0LDE3NDldLDI1Nl0sNjQ0OTM6W1sxNTc0LDE3NDldLDI1Nl0sNjQ0OTQ6W1sxNTc0LDE2MDhdLDI1Nl0sNjQ0OTU6W1sxNTc0LDE2MDhdLDI1Nl0sNjQ0OTY6W1sxNTc0LDE3MzVdLDI1Nl0sNjQ0OTc6W1sxNTc0LDE3MzVdLDI1Nl0sNjQ0OTg6W1sxNTc0LDE3MzRdLDI1Nl0sNjQ0OTk6W1sxNTc0LDE3MzRdLDI1Nl0sNjQ1MDA6W1sxNTc0LDE3MzZdLDI1Nl0sNjQ1MDE6W1sxNTc0LDE3MzZdLDI1Nl0sNjQ1MDI6W1sxNTc0LDE3NDRdLDI1Nl0sNjQ1MDM6W1sxNTc0LDE3NDRdLDI1Nl0sNjQ1MDQ6W1sxNTc0LDE3NDRdLDI1Nl0sNjQ1MDU6W1sxNTc0LDE2MDldLDI1Nl0sNjQ1MDY6W1sxNTc0LDE2MDldLDI1Nl0sNjQ1MDc6W1sxNTc0LDE2MDldLDI1Nl0sNjQ1MDg6W1sxNzQwXSwyNTZdLDY0NTA5OltbMTc0MF0sMjU2XSw2NDUxMDpbWzE3NDBdLDI1Nl0sNjQ1MTE6W1sxNzQwXSwyNTZdfSxcbjY0NTEyOns2NDUxMjpbWzE1NzQsMTU4MF0sMjU2XSw2NDUxMzpbWzE1NzQsMTU4MV0sMjU2XSw2NDUxNDpbWzE1NzQsMTYwNV0sMjU2XSw2NDUxNTpbWzE1NzQsMTYwOV0sMjU2XSw2NDUxNjpbWzE1NzQsMTYxMF0sMjU2XSw2NDUxNzpbWzE1NzYsMTU4MF0sMjU2XSw2NDUxODpbWzE1NzYsMTU4MV0sMjU2XSw2NDUxOTpbWzE1NzYsMTU4Ml0sMjU2XSw2NDUyMDpbWzE1NzYsMTYwNV0sMjU2XSw2NDUyMTpbWzE1NzYsMTYwOV0sMjU2XSw2NDUyMjpbWzE1NzYsMTYxMF0sMjU2XSw2NDUyMzpbWzE1NzgsMTU4MF0sMjU2XSw2NDUyNDpbWzE1NzgsMTU4MV0sMjU2XSw2NDUyNTpbWzE1NzgsMTU4Ml0sMjU2XSw2NDUyNjpbWzE1NzgsMTYwNV0sMjU2XSw2NDUyNzpbWzE1NzgsMTYwOV0sMjU2XSw2NDUyODpbWzE1NzgsMTYxMF0sMjU2XSw2NDUyOTpbWzE1NzksMTU4MF0sMjU2XSw2NDUzMDpbWzE1NzksMTYwNV0sMjU2XSw2NDUzMTpbWzE1NzksMTYwOV0sMjU2XSw2NDUzMjpbWzE1NzksMTYxMF0sMjU2XSw2NDUzMzpbWzE1ODAsMTU4MV0sMjU2XSw2NDUzNDpbWzE1ODAsMTYwNV0sMjU2XSw2NDUzNTpbWzE1ODEsMTU4MF0sMjU2XSw2NDUzNjpbWzE1ODEsMTYwNV0sMjU2XSw2NDUzNzpbWzE1ODIsMTU4MF0sMjU2XSw2NDUzODpbWzE1ODIsMTU4MV0sMjU2XSw2NDUzOTpbWzE1ODIsMTYwNV0sMjU2XSw2NDU0MDpbWzE1ODcsMTU4MF0sMjU2XSw2NDU0MTpbWzE1ODcsMTU4MV0sMjU2XSw2NDU0MjpbWzE1ODcsMTU4Ml0sMjU2XSw2NDU0MzpbWzE1ODcsMTYwNV0sMjU2XSw2NDU0NDpbWzE1ODksMTU4MV0sMjU2XSw2NDU0NTpbWzE1ODksMTYwNV0sMjU2XSw2NDU0NjpbWzE1OTAsMTU4MF0sMjU2XSw2NDU0NzpbWzE1OTAsMTU4MV0sMjU2XSw2NDU0ODpbWzE1OTAsMTU4Ml0sMjU2XSw2NDU0OTpbWzE1OTAsMTYwNV0sMjU2XSw2NDU1MDpbWzE1OTEsMTU4MV0sMjU2XSw2NDU1MTpbWzE1OTEsMTYwNV0sMjU2XSw2NDU1MjpbWzE1OTIsMTYwNV0sMjU2XSw2NDU1MzpbWzE1OTMsMTU4MF0sMjU2XSw2NDU1NDpbWzE1OTMsMTYwNV0sMjU2XSw2NDU1NTpbWzE1OTQsMTU4MF0sMjU2XSw2NDU1NjpbWzE1OTQsMTYwNV0sMjU2XSw2NDU1NzpbWzE2MDEsMTU4MF0sMjU2XSw2NDU1ODpbWzE2MDEsMTU4MV0sMjU2XSw2NDU1OTpbWzE2MDEsMTU4Ml0sMjU2XSw2NDU2MDpbWzE2MDEsMTYwNV0sMjU2XSw2NDU2MTpbWzE2MDEsMTYwOV0sMjU2XSw2NDU2MjpbWzE2MDEsMTYxMF0sMjU2XSw2NDU2MzpbWzE2MDIsMTU4MV0sMjU2XSw2NDU2NDpbWzE2MDIsMTYwNV0sMjU2XSw2NDU2NTpbWzE2MDIsMTYwOV0sMjU2XSw2NDU2NjpbWzE2MDIsMTYxMF0sMjU2XSw2NDU2NzpbWzE2MDMsMTU3NV0sMjU2XSw2NDU2ODpbWzE2MDMsMTU4MF0sMjU2XSw2NDU2OTpbWzE2MDMsMTU4MV0sMjU2XSw2NDU3MDpbWzE2MDMsMTU4Ml0sMjU2XSw2NDU3MTpbWzE2MDMsMTYwNF0sMjU2XSw2NDU3MjpbWzE2MDMsMTYwNV0sMjU2XSw2NDU3MzpbWzE2MDMsMTYwOV0sMjU2XSw2NDU3NDpbWzE2MDMsMTYxMF0sMjU2XSw2NDU3NTpbWzE2MDQsMTU4MF0sMjU2XSw2NDU3NjpbWzE2MDQsMTU4MV0sMjU2XSw2NDU3NzpbWzE2MDQsMTU4Ml0sMjU2XSw2NDU3ODpbWzE2MDQsMTYwNV0sMjU2XSw2NDU3OTpbWzE2MDQsMTYwOV0sMjU2XSw2NDU4MDpbWzE2MDQsMTYxMF0sMjU2XSw2NDU4MTpbWzE2MDUsMTU4MF0sMjU2XSw2NDU4MjpbWzE2MDUsMTU4MV0sMjU2XSw2NDU4MzpbWzE2MDUsMTU4Ml0sMjU2XSw2NDU4NDpbWzE2MDUsMTYwNV0sMjU2XSw2NDU4NTpbWzE2MDUsMTYwOV0sMjU2XSw2NDU4NjpbWzE2MDUsMTYxMF0sMjU2XSw2NDU4NzpbWzE2MDYsMTU4MF0sMjU2XSw2NDU4ODpbWzE2MDYsMTU4MV0sMjU2XSw2NDU4OTpbWzE2MDYsMTU4Ml0sMjU2XSw2NDU5MDpbWzE2MDYsMTYwNV0sMjU2XSw2NDU5MTpbWzE2MDYsMTYwOV0sMjU2XSw2NDU5MjpbWzE2MDYsMTYxMF0sMjU2XSw2NDU5MzpbWzE2MDcsMTU4MF0sMjU2XSw2NDU5NDpbWzE2MDcsMTYwNV0sMjU2XSw2NDU5NTpbWzE2MDcsMTYwOV0sMjU2XSw2NDU5NjpbWzE2MDcsMTYxMF0sMjU2XSw2NDU5NzpbWzE2MTAsMTU4MF0sMjU2XSw2NDU5ODpbWzE2MTAsMTU4MV0sMjU2XSw2NDU5OTpbWzE2MTAsMTU4Ml0sMjU2XSw2NDYwMDpbWzE2MTAsMTYwNV0sMjU2XSw2NDYwMTpbWzE2MTAsMTYwOV0sMjU2XSw2NDYwMjpbWzE2MTAsMTYxMF0sMjU2XSw2NDYwMzpbWzE1ODQsMTY0OF0sMjU2XSw2NDYwNDpbWzE1ODUsMTY0OF0sMjU2XSw2NDYwNTpbWzE2MDksMTY0OF0sMjU2XSw2NDYwNjpbWzMyLDE2MTIsMTYxN10sMjU2XSw2NDYwNzpbWzMyLDE2MTMsMTYxN10sMjU2XSw2NDYwODpbWzMyLDE2MTQsMTYxN10sMjU2XSw2NDYwOTpbWzMyLDE2MTUsMTYxN10sMjU2XSw2NDYxMDpbWzMyLDE2MTYsMTYxN10sMjU2XSw2NDYxMTpbWzMyLDE2MTcsMTY0OF0sMjU2XSw2NDYxMjpbWzE1NzQsMTU4NV0sMjU2XSw2NDYxMzpbWzE1NzQsMTU4Nl0sMjU2XSw2NDYxNDpbWzE1NzQsMTYwNV0sMjU2XSw2NDYxNTpbWzE1NzQsMTYwNl0sMjU2XSw2NDYxNjpbWzE1NzQsMTYwOV0sMjU2XSw2NDYxNzpbWzE1NzQsMTYxMF0sMjU2XSw2NDYxODpbWzE1NzYsMTU4NV0sMjU2XSw2NDYxOTpbWzE1NzYsMTU4Nl0sMjU2XSw2NDYyMDpbWzE1NzYsMTYwNV0sMjU2XSw2NDYyMTpbWzE1NzYsMTYwNl0sMjU2XSw2NDYyMjpbWzE1NzYsMTYwOV0sMjU2XSw2NDYyMzpbWzE1NzYsMTYxMF0sMjU2XSw2NDYyNDpbWzE1NzgsMTU4NV0sMjU2XSw2NDYyNTpbWzE1NzgsMTU4Nl0sMjU2XSw2NDYyNjpbWzE1NzgsMTYwNV0sMjU2XSw2NDYyNzpbWzE1NzgsMTYwNl0sMjU2XSw2NDYyODpbWzE1NzgsMTYwOV0sMjU2XSw2NDYyOTpbWzE1NzgsMTYxMF0sMjU2XSw2NDYzMDpbWzE1NzksMTU4NV0sMjU2XSw2NDYzMTpbWzE1NzksMTU4Nl0sMjU2XSw2NDYzMjpbWzE1NzksMTYwNV0sMjU2XSw2NDYzMzpbWzE1NzksMTYwNl0sMjU2XSw2NDYzNDpbWzE1NzksMTYwOV0sMjU2XSw2NDYzNTpbWzE1NzksMTYxMF0sMjU2XSw2NDYzNjpbWzE2MDEsMTYwOV0sMjU2XSw2NDYzNzpbWzE2MDEsMTYxMF0sMjU2XSw2NDYzODpbWzE2MDIsMTYwOV0sMjU2XSw2NDYzOTpbWzE2MDIsMTYxMF0sMjU2XSw2NDY0MDpbWzE2MDMsMTU3NV0sMjU2XSw2NDY0MTpbWzE2MDMsMTYwNF0sMjU2XSw2NDY0MjpbWzE2MDMsMTYwNV0sMjU2XSw2NDY0MzpbWzE2MDMsMTYwOV0sMjU2XSw2NDY0NDpbWzE2MDMsMTYxMF0sMjU2XSw2NDY0NTpbWzE2MDQsMTYwNV0sMjU2XSw2NDY0NjpbWzE2MDQsMTYwOV0sMjU2XSw2NDY0NzpbWzE2MDQsMTYxMF0sMjU2XSw2NDY0ODpbWzE2MDUsMTU3NV0sMjU2XSw2NDY0OTpbWzE2MDUsMTYwNV0sMjU2XSw2NDY1MDpbWzE2MDYsMTU4NV0sMjU2XSw2NDY1MTpbWzE2MDYsMTU4Nl0sMjU2XSw2NDY1MjpbWzE2MDYsMTYwNV0sMjU2XSw2NDY1MzpbWzE2MDYsMTYwNl0sMjU2XSw2NDY1NDpbWzE2MDYsMTYwOV0sMjU2XSw2NDY1NTpbWzE2MDYsMTYxMF0sMjU2XSw2NDY1NjpbWzE2MDksMTY0OF0sMjU2XSw2NDY1NzpbWzE2MTAsMTU4NV0sMjU2XSw2NDY1ODpbWzE2MTAsMTU4Nl0sMjU2XSw2NDY1OTpbWzE2MTAsMTYwNV0sMjU2XSw2NDY2MDpbWzE2MTAsMTYwNl0sMjU2XSw2NDY2MTpbWzE2MTAsMTYwOV0sMjU2XSw2NDY2MjpbWzE2MTAsMTYxMF0sMjU2XSw2NDY2MzpbWzE1NzQsMTU4MF0sMjU2XSw2NDY2NDpbWzE1NzQsMTU4MV0sMjU2XSw2NDY2NTpbWzE1NzQsMTU4Ml0sMjU2XSw2NDY2NjpbWzE1NzQsMTYwNV0sMjU2XSw2NDY2NzpbWzE1NzQsMTYwN10sMjU2XSw2NDY2ODpbWzE1NzYsMTU4MF0sMjU2XSw2NDY2OTpbWzE1NzYsMTU4MV0sMjU2XSw2NDY3MDpbWzE1NzYsMTU4Ml0sMjU2XSw2NDY3MTpbWzE1NzYsMTYwNV0sMjU2XSw2NDY3MjpbWzE1NzYsMTYwN10sMjU2XSw2NDY3MzpbWzE1NzgsMTU4MF0sMjU2XSw2NDY3NDpbWzE1NzgsMTU4MV0sMjU2XSw2NDY3NTpbWzE1NzgsMTU4Ml0sMjU2XSw2NDY3NjpbWzE1NzgsMTYwNV0sMjU2XSw2NDY3NzpbWzE1NzgsMTYwN10sMjU2XSw2NDY3ODpbWzE1NzksMTYwNV0sMjU2XSw2NDY3OTpbWzE1ODAsMTU4MV0sMjU2XSw2NDY4MDpbWzE1ODAsMTYwNV0sMjU2XSw2NDY4MTpbWzE1ODEsMTU4MF0sMjU2XSw2NDY4MjpbWzE1ODEsMTYwNV0sMjU2XSw2NDY4MzpbWzE1ODIsMTU4MF0sMjU2XSw2NDY4NDpbWzE1ODIsMTYwNV0sMjU2XSw2NDY4NTpbWzE1ODcsMTU4MF0sMjU2XSw2NDY4NjpbWzE1ODcsMTU4MV0sMjU2XSw2NDY4NzpbWzE1ODcsMTU4Ml0sMjU2XSw2NDY4ODpbWzE1ODcsMTYwNV0sMjU2XSw2NDY4OTpbWzE1ODksMTU4MV0sMjU2XSw2NDY5MDpbWzE1ODksMTU4Ml0sMjU2XSw2NDY5MTpbWzE1ODksMTYwNV0sMjU2XSw2NDY5MjpbWzE1OTAsMTU4MF0sMjU2XSw2NDY5MzpbWzE1OTAsMTU4MV0sMjU2XSw2NDY5NDpbWzE1OTAsMTU4Ml0sMjU2XSw2NDY5NTpbWzE1OTAsMTYwNV0sMjU2XSw2NDY5NjpbWzE1OTEsMTU4MV0sMjU2XSw2NDY5NzpbWzE1OTIsMTYwNV0sMjU2XSw2NDY5ODpbWzE1OTMsMTU4MF0sMjU2XSw2NDY5OTpbWzE1OTMsMTYwNV0sMjU2XSw2NDcwMDpbWzE1OTQsMTU4MF0sMjU2XSw2NDcwMTpbWzE1OTQsMTYwNV0sMjU2XSw2NDcwMjpbWzE2MDEsMTU4MF0sMjU2XSw2NDcwMzpbWzE2MDEsMTU4MV0sMjU2XSw2NDcwNDpbWzE2MDEsMTU4Ml0sMjU2XSw2NDcwNTpbWzE2MDEsMTYwNV0sMjU2XSw2NDcwNjpbWzE2MDIsMTU4MV0sMjU2XSw2NDcwNzpbWzE2MDIsMTYwNV0sMjU2XSw2NDcwODpbWzE2MDMsMTU4MF0sMjU2XSw2NDcwOTpbWzE2MDMsMTU4MV0sMjU2XSw2NDcxMDpbWzE2MDMsMTU4Ml0sMjU2XSw2NDcxMTpbWzE2MDMsMTYwNF0sMjU2XSw2NDcxMjpbWzE2MDMsMTYwNV0sMjU2XSw2NDcxMzpbWzE2MDQsMTU4MF0sMjU2XSw2NDcxNDpbWzE2MDQsMTU4MV0sMjU2XSw2NDcxNTpbWzE2MDQsMTU4Ml0sMjU2XSw2NDcxNjpbWzE2MDQsMTYwNV0sMjU2XSw2NDcxNzpbWzE2MDQsMTYwN10sMjU2XSw2NDcxODpbWzE2MDUsMTU4MF0sMjU2XSw2NDcxOTpbWzE2MDUsMTU4MV0sMjU2XSw2NDcyMDpbWzE2MDUsMTU4Ml0sMjU2XSw2NDcyMTpbWzE2MDUsMTYwNV0sMjU2XSw2NDcyMjpbWzE2MDYsMTU4MF0sMjU2XSw2NDcyMzpbWzE2MDYsMTU4MV0sMjU2XSw2NDcyNDpbWzE2MDYsMTU4Ml0sMjU2XSw2NDcyNTpbWzE2MDYsMTYwNV0sMjU2XSw2NDcyNjpbWzE2MDYsMTYwN10sMjU2XSw2NDcyNzpbWzE2MDcsMTU4MF0sMjU2XSw2NDcyODpbWzE2MDcsMTYwNV0sMjU2XSw2NDcyOTpbWzE2MDcsMTY0OF0sMjU2XSw2NDczMDpbWzE2MTAsMTU4MF0sMjU2XSw2NDczMTpbWzE2MTAsMTU4MV0sMjU2XSw2NDczMjpbWzE2MTAsMTU4Ml0sMjU2XSw2NDczMzpbWzE2MTAsMTYwNV0sMjU2XSw2NDczNDpbWzE2MTAsMTYwN10sMjU2XSw2NDczNTpbWzE1NzQsMTYwNV0sMjU2XSw2NDczNjpbWzE1NzQsMTYwN10sMjU2XSw2NDczNzpbWzE1NzYsMTYwNV0sMjU2XSw2NDczODpbWzE1NzYsMTYwN10sMjU2XSw2NDczOTpbWzE1NzgsMTYwNV0sMjU2XSw2NDc0MDpbWzE1NzgsMTYwN10sMjU2XSw2NDc0MTpbWzE1NzksMTYwNV0sMjU2XSw2NDc0MjpbWzE1NzksMTYwN10sMjU2XSw2NDc0MzpbWzE1ODcsMTYwNV0sMjU2XSw2NDc0NDpbWzE1ODcsMTYwN10sMjU2XSw2NDc0NTpbWzE1ODgsMTYwNV0sMjU2XSw2NDc0NjpbWzE1ODgsMTYwN10sMjU2XSw2NDc0NzpbWzE2MDMsMTYwNF0sMjU2XSw2NDc0ODpbWzE2MDMsMTYwNV0sMjU2XSw2NDc0OTpbWzE2MDQsMTYwNV0sMjU2XSw2NDc1MDpbWzE2MDYsMTYwNV0sMjU2XSw2NDc1MTpbWzE2MDYsMTYwN10sMjU2XSw2NDc1MjpbWzE2MTAsMTYwNV0sMjU2XSw2NDc1MzpbWzE2MTAsMTYwN10sMjU2XSw2NDc1NDpbWzE2MDAsMTYxNCwxNjE3XSwyNTZdLDY0NzU1OltbMTYwMCwxNjE1LDE2MTddLDI1Nl0sNjQ3NTY6W1sxNjAwLDE2MTYsMTYxN10sMjU2XSw2NDc1NzpbWzE1OTEsMTYwOV0sMjU2XSw2NDc1ODpbWzE1OTEsMTYxMF0sMjU2XSw2NDc1OTpbWzE1OTMsMTYwOV0sMjU2XSw2NDc2MDpbWzE1OTMsMTYxMF0sMjU2XSw2NDc2MTpbWzE1OTQsMTYwOV0sMjU2XSw2NDc2MjpbWzE1OTQsMTYxMF0sMjU2XSw2NDc2MzpbWzE1ODcsMTYwOV0sMjU2XSw2NDc2NDpbWzE1ODcsMTYxMF0sMjU2XSw2NDc2NTpbWzE1ODgsMTYwOV0sMjU2XSw2NDc2NjpbWzE1ODgsMTYxMF0sMjU2XSw2NDc2NzpbWzE1ODEsMTYwOV0sMjU2XX0sXG42NDc2ODp7NjQ3Njg6W1sxNTgxLDE2MTBdLDI1Nl0sNjQ3Njk6W1sxNTgwLDE2MDldLDI1Nl0sNjQ3NzA6W1sxNTgwLDE2MTBdLDI1Nl0sNjQ3NzE6W1sxNTgyLDE2MDldLDI1Nl0sNjQ3NzI6W1sxNTgyLDE2MTBdLDI1Nl0sNjQ3NzM6W1sxNTg5LDE2MDldLDI1Nl0sNjQ3NzQ6W1sxNTg5LDE2MTBdLDI1Nl0sNjQ3NzU6W1sxNTkwLDE2MDldLDI1Nl0sNjQ3NzY6W1sxNTkwLDE2MTBdLDI1Nl0sNjQ3Nzc6W1sxNTg4LDE1ODBdLDI1Nl0sNjQ3Nzg6W1sxNTg4LDE1ODFdLDI1Nl0sNjQ3Nzk6W1sxNTg4LDE1ODJdLDI1Nl0sNjQ3ODA6W1sxNTg4LDE2MDVdLDI1Nl0sNjQ3ODE6W1sxNTg4LDE1ODVdLDI1Nl0sNjQ3ODI6W1sxNTg3LDE1ODVdLDI1Nl0sNjQ3ODM6W1sxNTg5LDE1ODVdLDI1Nl0sNjQ3ODQ6W1sxNTkwLDE1ODVdLDI1Nl0sNjQ3ODU6W1sxNTkxLDE2MDldLDI1Nl0sNjQ3ODY6W1sxNTkxLDE2MTBdLDI1Nl0sNjQ3ODc6W1sxNTkzLDE2MDldLDI1Nl0sNjQ3ODg6W1sxNTkzLDE2MTBdLDI1Nl0sNjQ3ODk6W1sxNTk0LDE2MDldLDI1Nl0sNjQ3OTA6W1sxNTk0LDE2MTBdLDI1Nl0sNjQ3OTE6W1sxNTg3LDE2MDldLDI1Nl0sNjQ3OTI6W1sxNTg3LDE2MTBdLDI1Nl0sNjQ3OTM6W1sxNTg4LDE2MDldLDI1Nl0sNjQ3OTQ6W1sxNTg4LDE2MTBdLDI1Nl0sNjQ3OTU6W1sxNTgxLDE2MDldLDI1Nl0sNjQ3OTY6W1sxNTgxLDE2MTBdLDI1Nl0sNjQ3OTc6W1sxNTgwLDE2MDldLDI1Nl0sNjQ3OTg6W1sxNTgwLDE2MTBdLDI1Nl0sNjQ3OTk6W1sxNTgyLDE2MDldLDI1Nl0sNjQ4MDA6W1sxNTgyLDE2MTBdLDI1Nl0sNjQ4MDE6W1sxNTg5LDE2MDldLDI1Nl0sNjQ4MDI6W1sxNTg5LDE2MTBdLDI1Nl0sNjQ4MDM6W1sxNTkwLDE2MDldLDI1Nl0sNjQ4MDQ6W1sxNTkwLDE2MTBdLDI1Nl0sNjQ4MDU6W1sxNTg4LDE1ODBdLDI1Nl0sNjQ4MDY6W1sxNTg4LDE1ODFdLDI1Nl0sNjQ4MDc6W1sxNTg4LDE1ODJdLDI1Nl0sNjQ4MDg6W1sxNTg4LDE2MDVdLDI1Nl0sNjQ4MDk6W1sxNTg4LDE1ODVdLDI1Nl0sNjQ4MTA6W1sxNTg3LDE1ODVdLDI1Nl0sNjQ4MTE6W1sxNTg5LDE1ODVdLDI1Nl0sNjQ4MTI6W1sxNTkwLDE1ODVdLDI1Nl0sNjQ4MTM6W1sxNTg4LDE1ODBdLDI1Nl0sNjQ4MTQ6W1sxNTg4LDE1ODFdLDI1Nl0sNjQ4MTU6W1sxNTg4LDE1ODJdLDI1Nl0sNjQ4MTY6W1sxNTg4LDE2MDVdLDI1Nl0sNjQ4MTc6W1sxNTg3LDE2MDddLDI1Nl0sNjQ4MTg6W1sxNTg4LDE2MDddLDI1Nl0sNjQ4MTk6W1sxNTkxLDE2MDVdLDI1Nl0sNjQ4MjA6W1sxNTg3LDE1ODBdLDI1Nl0sNjQ4MjE6W1sxNTg3LDE1ODFdLDI1Nl0sNjQ4MjI6W1sxNTg3LDE1ODJdLDI1Nl0sNjQ4MjM6W1sxNTg4LDE1ODBdLDI1Nl0sNjQ4MjQ6W1sxNTg4LDE1ODFdLDI1Nl0sNjQ4MjU6W1sxNTg4LDE1ODJdLDI1Nl0sNjQ4MjY6W1sxNTkxLDE2MDVdLDI1Nl0sNjQ4Mjc6W1sxNTkyLDE2MDVdLDI1Nl0sNjQ4Mjg6W1sxNTc1LDE2MTFdLDI1Nl0sNjQ4Mjk6W1sxNTc1LDE2MTFdLDI1Nl0sNjQ4NDg6W1sxNTc4LDE1ODAsMTYwNV0sMjU2XSw2NDg0OTpbWzE1NzgsMTU4MSwxNTgwXSwyNTZdLDY0ODUwOltbMTU3OCwxNTgxLDE1ODBdLDI1Nl0sNjQ4NTE6W1sxNTc4LDE1ODEsMTYwNV0sMjU2XSw2NDg1MjpbWzE1NzgsMTU4MiwxNjA1XSwyNTZdLDY0ODUzOltbMTU3OCwxNjA1LDE1ODBdLDI1Nl0sNjQ4NTQ6W1sxNTc4LDE2MDUsMTU4MV0sMjU2XSw2NDg1NTpbWzE1NzgsMTYwNSwxNTgyXSwyNTZdLDY0ODU2OltbMTU4MCwxNjA1LDE1ODFdLDI1Nl0sNjQ4NTc6W1sxNTgwLDE2MDUsMTU4MV0sMjU2XSw2NDg1ODpbWzE1ODEsMTYwNSwxNjEwXSwyNTZdLDY0ODU5OltbMTU4MSwxNjA1LDE2MDldLDI1Nl0sNjQ4NjA6W1sxNTg3LDE1ODEsMTU4MF0sMjU2XSw2NDg2MTpbWzE1ODcsMTU4MCwxNTgxXSwyNTZdLDY0ODYyOltbMTU4NywxNTgwLDE2MDldLDI1Nl0sNjQ4NjM6W1sxNTg3LDE2MDUsMTU4MV0sMjU2XSw2NDg2NDpbWzE1ODcsMTYwNSwxNTgxXSwyNTZdLDY0ODY1OltbMTU4NywxNjA1LDE1ODBdLDI1Nl0sNjQ4NjY6W1sxNTg3LDE2MDUsMTYwNV0sMjU2XSw2NDg2NzpbWzE1ODcsMTYwNSwxNjA1XSwyNTZdLDY0ODY4OltbMTU4OSwxNTgxLDE1ODFdLDI1Nl0sNjQ4Njk6W1sxNTg5LDE1ODEsMTU4MV0sMjU2XSw2NDg3MDpbWzE1ODksMTYwNSwxNjA1XSwyNTZdLDY0ODcxOltbMTU4OCwxNTgxLDE2MDVdLDI1Nl0sNjQ4NzI6W1sxNTg4LDE1ODEsMTYwNV0sMjU2XSw2NDg3MzpbWzE1ODgsMTU4MCwxNjEwXSwyNTZdLDY0ODc0OltbMTU4OCwxNjA1LDE1ODJdLDI1Nl0sNjQ4NzU6W1sxNTg4LDE2MDUsMTU4Ml0sMjU2XSw2NDg3NjpbWzE1ODgsMTYwNSwxNjA1XSwyNTZdLDY0ODc3OltbMTU4OCwxNjA1LDE2MDVdLDI1Nl0sNjQ4Nzg6W1sxNTkwLDE1ODEsMTYwOV0sMjU2XSw2NDg3OTpbWzE1OTAsMTU4MiwxNjA1XSwyNTZdLDY0ODgwOltbMTU5MCwxNTgyLDE2MDVdLDI1Nl0sNjQ4ODE6W1sxNTkxLDE2MDUsMTU4MV0sMjU2XSw2NDg4MjpbWzE1OTEsMTYwNSwxNTgxXSwyNTZdLDY0ODgzOltbMTU5MSwxNjA1LDE2MDVdLDI1Nl0sNjQ4ODQ6W1sxNTkxLDE2MDUsMTYxMF0sMjU2XSw2NDg4NTpbWzE1OTMsMTU4MCwxNjA1XSwyNTZdLDY0ODg2OltbMTU5MywxNjA1LDE2MDVdLDI1Nl0sNjQ4ODc6W1sxNTkzLDE2MDUsMTYwNV0sMjU2XSw2NDg4ODpbWzE1OTMsMTYwNSwxNjA5XSwyNTZdLDY0ODg5OltbMTU5NCwxNjA1LDE2MDVdLDI1Nl0sNjQ4OTA6W1sxNTk0LDE2MDUsMTYxMF0sMjU2XSw2NDg5MTpbWzE1OTQsMTYwNSwxNjA5XSwyNTZdLDY0ODkyOltbMTYwMSwxNTgyLDE2MDVdLDI1Nl0sNjQ4OTM6W1sxNjAxLDE1ODIsMTYwNV0sMjU2XSw2NDg5NDpbWzE2MDIsMTYwNSwxNTgxXSwyNTZdLDY0ODk1OltbMTYwMiwxNjA1LDE2MDVdLDI1Nl0sNjQ4OTY6W1sxNjA0LDE1ODEsMTYwNV0sMjU2XSw2NDg5NzpbWzE2MDQsMTU4MSwxNjEwXSwyNTZdLDY0ODk4OltbMTYwNCwxNTgxLDE2MDldLDI1Nl0sNjQ4OTk6W1sxNjA0LDE1ODAsMTU4MF0sMjU2XSw2NDkwMDpbWzE2MDQsMTU4MCwxNTgwXSwyNTZdLDY0OTAxOltbMTYwNCwxNTgyLDE2MDVdLDI1Nl0sNjQ5MDI6W1sxNjA0LDE1ODIsMTYwNV0sMjU2XSw2NDkwMzpbWzE2MDQsMTYwNSwxNTgxXSwyNTZdLDY0OTA0OltbMTYwNCwxNjA1LDE1ODFdLDI1Nl0sNjQ5MDU6W1sxNjA1LDE1ODEsMTU4MF0sMjU2XSw2NDkwNjpbWzE2MDUsMTU4MSwxNjA1XSwyNTZdLDY0OTA3OltbMTYwNSwxNTgxLDE2MTBdLDI1Nl0sNjQ5MDg6W1sxNjA1LDE1ODAsMTU4MV0sMjU2XSw2NDkwOTpbWzE2MDUsMTU4MCwxNjA1XSwyNTZdLDY0OTEwOltbMTYwNSwxNTgyLDE1ODBdLDI1Nl0sNjQ5MTE6W1sxNjA1LDE1ODIsMTYwNV0sMjU2XSw2NDkxNDpbWzE2MDUsMTU4MCwxNTgyXSwyNTZdLDY0OTE1OltbMTYwNywxNjA1LDE1ODBdLDI1Nl0sNjQ5MTY6W1sxNjA3LDE2MDUsMTYwNV0sMjU2XSw2NDkxNzpbWzE2MDYsMTU4MSwxNjA1XSwyNTZdLDY0OTE4OltbMTYwNiwxNTgxLDE2MDldLDI1Nl0sNjQ5MTk6W1sxNjA2LDE1ODAsMTYwNV0sMjU2XSw2NDkyMDpbWzE2MDYsMTU4MCwxNjA1XSwyNTZdLDY0OTIxOltbMTYwNiwxNTgwLDE2MDldLDI1Nl0sNjQ5MjI6W1sxNjA2LDE2MDUsMTYxMF0sMjU2XSw2NDkyMzpbWzE2MDYsMTYwNSwxNjA5XSwyNTZdLDY0OTI0OltbMTYxMCwxNjA1LDE2MDVdLDI1Nl0sNjQ5MjU6W1sxNjEwLDE2MDUsMTYwNV0sMjU2XSw2NDkyNjpbWzE1NzYsMTU4MiwxNjEwXSwyNTZdLDY0OTI3OltbMTU3OCwxNTgwLDE2MTBdLDI1Nl0sNjQ5Mjg6W1sxNTc4LDE1ODAsMTYwOV0sMjU2XSw2NDkyOTpbWzE1NzgsMTU4MiwxNjEwXSwyNTZdLDY0OTMwOltbMTU3OCwxNTgyLDE2MDldLDI1Nl0sNjQ5MzE6W1sxNTc4LDE2MDUsMTYxMF0sMjU2XSw2NDkzMjpbWzE1NzgsMTYwNSwxNjA5XSwyNTZdLDY0OTMzOltbMTU4MCwxNjA1LDE2MTBdLDI1Nl0sNjQ5MzQ6W1sxNTgwLDE1ODEsMTYwOV0sMjU2XSw2NDkzNTpbWzE1ODAsMTYwNSwxNjA5XSwyNTZdLDY0OTM2OltbMTU4NywxNTgyLDE2MDldLDI1Nl0sNjQ5Mzc6W1sxNTg5LDE1ODEsMTYxMF0sMjU2XSw2NDkzODpbWzE1ODgsMTU4MSwxNjEwXSwyNTZdLDY0OTM5OltbMTU5MCwxNTgxLDE2MTBdLDI1Nl0sNjQ5NDA6W1sxNjA0LDE1ODAsMTYxMF0sMjU2XSw2NDk0MTpbWzE2MDQsMTYwNSwxNjEwXSwyNTZdLDY0OTQyOltbMTYxMCwxNTgxLDE2MTBdLDI1Nl0sNjQ5NDM6W1sxNjEwLDE1ODAsMTYxMF0sMjU2XSw2NDk0NDpbWzE2MTAsMTYwNSwxNjEwXSwyNTZdLDY0OTQ1OltbMTYwNSwxNjA1LDE2MTBdLDI1Nl0sNjQ5NDY6W1sxNjAyLDE2MDUsMTYxMF0sMjU2XSw2NDk0NzpbWzE2MDYsMTU4MSwxNjEwXSwyNTZdLDY0OTQ4OltbMTYwMiwxNjA1LDE1ODFdLDI1Nl0sNjQ5NDk6W1sxNjA0LDE1ODEsMTYwNV0sMjU2XSw2NDk1MDpbWzE1OTMsMTYwNSwxNjEwXSwyNTZdLDY0OTUxOltbMTYwMywxNjA1LDE2MTBdLDI1Nl0sNjQ5NTI6W1sxNjA2LDE1ODAsMTU4MV0sMjU2XSw2NDk1MzpbWzE2MDUsMTU4MiwxNjEwXSwyNTZdLDY0OTU0OltbMTYwNCwxNTgwLDE2MDVdLDI1Nl0sNjQ5NTU6W1sxNjAzLDE2MDUsMTYwNV0sMjU2XSw2NDk1NjpbWzE2MDQsMTU4MCwxNjA1XSwyNTZdLDY0OTU3OltbMTYwNiwxNTgwLDE1ODFdLDI1Nl0sNjQ5NTg6W1sxNTgwLDE1ODEsMTYxMF0sMjU2XSw2NDk1OTpbWzE1ODEsMTU4MCwxNjEwXSwyNTZdLDY0OTYwOltbMTYwNSwxNTgwLDE2MTBdLDI1Nl0sNjQ5NjE6W1sxNjAxLDE2MDUsMTYxMF0sMjU2XSw2NDk2MjpbWzE1NzYsMTU4MSwxNjEwXSwyNTZdLDY0OTYzOltbMTYwMywxNjA1LDE2MDVdLDI1Nl0sNjQ5NjQ6W1sxNTkzLDE1ODAsMTYwNV0sMjU2XSw2NDk2NTpbWzE1ODksMTYwNSwxNjA1XSwyNTZdLDY0OTY2OltbMTU4NywxNTgyLDE2MTBdLDI1Nl0sNjQ5Njc6W1sxNjA2LDE1ODAsMTYxMF0sMjU2XSw2NTAwODpbWzE1ODksMTYwNCwxNzQ2XSwyNTZdLDY1MDA5OltbMTYwMiwxNjA0LDE3NDZdLDI1Nl0sNjUwMTA6W1sxNTc1LDE2MDQsMTYwNCwxNjA3XSwyNTZdLDY1MDExOltbMTU3NSwxNjAzLDE1NzYsMTU4NV0sMjU2XSw2NTAxMjpbWzE2MDUsMTU4MSwxNjA1LDE1ODNdLDI1Nl0sNjUwMTM6W1sxNTg5LDE2MDQsMTU5MywxNjA1XSwyNTZdLDY1MDE0OltbMTU4NSwxNTg3LDE2MDgsMTYwNF0sMjU2XSw2NTAxNTpbWzE1OTMsMTYwNCwxNjEwLDE2MDddLDI1Nl0sNjUwMTY6W1sxNjA4LDE1ODcsMTYwNCwxNjA1XSwyNTZdLDY1MDE3OltbMTU4OSwxNjA0LDE2MDldLDI1Nl0sNjUwMTg6W1sxNTg5LDE2MDQsMTYwOSwzMiwxNTc1LDE2MDQsMTYwNCwxNjA3LDMyLDE1OTMsMTYwNCwxNjEwLDE2MDcsMzIsMTYwOCwxNTg3LDE2MDQsMTYwNV0sMjU2XSw2NTAxOTpbWzE1ODAsMTYwNCwzMiwxNTgwLDE2MDQsMTU3NSwxNjA0LDE2MDddLDI1Nl0sNjUwMjA6W1sxNTg1LDE3NDAsMTU3NSwxNjA0XSwyNTZdfSxcbjY1MDI0Ons2NTA0MDpbWzQ0XSwyNTZdLDY1MDQxOltbMTIyODldLDI1Nl0sNjUwNDI6W1sxMjI5MF0sMjU2XSw2NTA0MzpbWzU4XSwyNTZdLDY1MDQ0OltbNTldLDI1Nl0sNjUwNDU6W1szM10sMjU2XSw2NTA0NjpbWzYzXSwyNTZdLDY1MDQ3OltbMTIzMTBdLDI1Nl0sNjUwNDg6W1sxMjMxMV0sMjU2XSw2NTA0OTpbWzgyMzBdLDI1Nl0sNjUwNTY6WywyMzBdLDY1MDU3OlssMjMwXSw2NTA1ODpbLDIzMF0sNjUwNTk6WywyMzBdLDY1MDYwOlssMjMwXSw2NTA2MTpbLDIzMF0sNjUwNjI6WywyMzBdLDY1MDYzOlssMjIwXSw2NTA2NDpbLDIyMF0sNjUwNjU6WywyMjBdLDY1MDY2OlssMjIwXSw2NTA2NzpbLDIyMF0sNjUwNjg6WywyMjBdLDY1MDY5OlssMjIwXSw2NTA3MjpbWzgyMjldLDI1Nl0sNjUwNzM6W1s4MjEyXSwyNTZdLDY1MDc0OltbODIxMV0sMjU2XSw2NTA3NTpbWzk1XSwyNTZdLDY1MDc2OltbOTVdLDI1Nl0sNjUwNzc6W1s0MF0sMjU2XSw2NTA3ODpbWzQxXSwyNTZdLDY1MDc5OltbMTIzXSwyNTZdLDY1MDgwOltbMTI1XSwyNTZdLDY1MDgxOltbMTIzMDhdLDI1Nl0sNjUwODI6W1sxMjMwOV0sMjU2XSw2NTA4MzpbWzEyMzA0XSwyNTZdLDY1MDg0OltbMTIzMDVdLDI1Nl0sNjUwODU6W1sxMjI5OF0sMjU2XSw2NTA4NjpbWzEyMjk5XSwyNTZdLDY1MDg3OltbMTIyOTZdLDI1Nl0sNjUwODg6W1sxMjI5N10sMjU2XSw2NTA4OTpbWzEyMzAwXSwyNTZdLDY1MDkwOltbMTIzMDFdLDI1Nl0sNjUwOTE6W1sxMjMwMl0sMjU2XSw2NTA5MjpbWzEyMzAzXSwyNTZdLDY1MDk1OltbOTFdLDI1Nl0sNjUwOTY6W1s5M10sMjU2XSw2NTA5NzpbWzgyNTRdLDI1Nl0sNjUwOTg6W1s4MjU0XSwyNTZdLDY1MDk5OltbODI1NF0sMjU2XSw2NTEwMDpbWzgyNTRdLDI1Nl0sNjUxMDE6W1s5NV0sMjU2XSw2NTEwMjpbWzk1XSwyNTZdLDY1MTAzOltbOTVdLDI1Nl0sNjUxMDQ6W1s0NF0sMjU2XSw2NTEwNTpbWzEyMjg5XSwyNTZdLDY1MTA2OltbNDZdLDI1Nl0sNjUxMDg6W1s1OV0sMjU2XSw2NTEwOTpbWzU4XSwyNTZdLDY1MTEwOltbNjNdLDI1Nl0sNjUxMTE6W1szM10sMjU2XSw2NTExMjpbWzgyMTJdLDI1Nl0sNjUxMTM6W1s0MF0sMjU2XSw2NTExNDpbWzQxXSwyNTZdLDY1MTE1OltbMTIzXSwyNTZdLDY1MTE2OltbMTI1XSwyNTZdLDY1MTE3OltbMTIzMDhdLDI1Nl0sNjUxMTg6W1sxMjMwOV0sMjU2XSw2NTExOTpbWzM1XSwyNTZdLDY1MTIwOltbMzhdLDI1Nl0sNjUxMjE6W1s0Ml0sMjU2XSw2NTEyMjpbWzQzXSwyNTZdLDY1MTIzOltbNDVdLDI1Nl0sNjUxMjQ6W1s2MF0sMjU2XSw2NTEyNTpbWzYyXSwyNTZdLDY1MTI2OltbNjFdLDI1Nl0sNjUxMjg6W1s5Ml0sMjU2XSw2NTEyOTpbWzM2XSwyNTZdLDY1MTMwOltbMzddLDI1Nl0sNjUxMzE6W1s2NF0sMjU2XSw2NTEzNjpbWzMyLDE2MTFdLDI1Nl0sNjUxMzc6W1sxNjAwLDE2MTFdLDI1Nl0sNjUxMzg6W1szMiwxNjEyXSwyNTZdLDY1MTQwOltbMzIsMTYxM10sMjU2XSw2NTE0MjpbWzMyLDE2MTRdLDI1Nl0sNjUxNDM6W1sxNjAwLDE2MTRdLDI1Nl0sNjUxNDQ6W1szMiwxNjE1XSwyNTZdLDY1MTQ1OltbMTYwMCwxNjE1XSwyNTZdLDY1MTQ2OltbMzIsMTYxNl0sMjU2XSw2NTE0NzpbWzE2MDAsMTYxNl0sMjU2XSw2NTE0ODpbWzMyLDE2MTddLDI1Nl0sNjUxNDk6W1sxNjAwLDE2MTddLDI1Nl0sNjUxNTA6W1szMiwxNjE4XSwyNTZdLDY1MTUxOltbMTYwMCwxNjE4XSwyNTZdLDY1MTUyOltbMTU2OV0sMjU2XSw2NTE1MzpbWzE1NzBdLDI1Nl0sNjUxNTQ6W1sxNTcwXSwyNTZdLDY1MTU1OltbMTU3MV0sMjU2XSw2NTE1NjpbWzE1NzFdLDI1Nl0sNjUxNTc6W1sxNTcyXSwyNTZdLDY1MTU4OltbMTU3Ml0sMjU2XSw2NTE1OTpbWzE1NzNdLDI1Nl0sNjUxNjA6W1sxNTczXSwyNTZdLDY1MTYxOltbMTU3NF0sMjU2XSw2NTE2MjpbWzE1NzRdLDI1Nl0sNjUxNjM6W1sxNTc0XSwyNTZdLDY1MTY0OltbMTU3NF0sMjU2XSw2NTE2NTpbWzE1NzVdLDI1Nl0sNjUxNjY6W1sxNTc1XSwyNTZdLDY1MTY3OltbMTU3Nl0sMjU2XSw2NTE2ODpbWzE1NzZdLDI1Nl0sNjUxNjk6W1sxNTc2XSwyNTZdLDY1MTcwOltbMTU3Nl0sMjU2XSw2NTE3MTpbWzE1NzddLDI1Nl0sNjUxNzI6W1sxNTc3XSwyNTZdLDY1MTczOltbMTU3OF0sMjU2XSw2NTE3NDpbWzE1NzhdLDI1Nl0sNjUxNzU6W1sxNTc4XSwyNTZdLDY1MTc2OltbMTU3OF0sMjU2XSw2NTE3NzpbWzE1NzldLDI1Nl0sNjUxNzg6W1sxNTc5XSwyNTZdLDY1MTc5OltbMTU3OV0sMjU2XSw2NTE4MDpbWzE1NzldLDI1Nl0sNjUxODE6W1sxNTgwXSwyNTZdLDY1MTgyOltbMTU4MF0sMjU2XSw2NTE4MzpbWzE1ODBdLDI1Nl0sNjUxODQ6W1sxNTgwXSwyNTZdLDY1MTg1OltbMTU4MV0sMjU2XSw2NTE4NjpbWzE1ODFdLDI1Nl0sNjUxODc6W1sxNTgxXSwyNTZdLDY1MTg4OltbMTU4MV0sMjU2XSw2NTE4OTpbWzE1ODJdLDI1Nl0sNjUxOTA6W1sxNTgyXSwyNTZdLDY1MTkxOltbMTU4Ml0sMjU2XSw2NTE5MjpbWzE1ODJdLDI1Nl0sNjUxOTM6W1sxNTgzXSwyNTZdLDY1MTk0OltbMTU4M10sMjU2XSw2NTE5NTpbWzE1ODRdLDI1Nl0sNjUxOTY6W1sxNTg0XSwyNTZdLDY1MTk3OltbMTU4NV0sMjU2XSw2NTE5ODpbWzE1ODVdLDI1Nl0sNjUxOTk6W1sxNTg2XSwyNTZdLDY1MjAwOltbMTU4Nl0sMjU2XSw2NTIwMTpbWzE1ODddLDI1Nl0sNjUyMDI6W1sxNTg3XSwyNTZdLDY1MjAzOltbMTU4N10sMjU2XSw2NTIwNDpbWzE1ODddLDI1Nl0sNjUyMDU6W1sxNTg4XSwyNTZdLDY1MjA2OltbMTU4OF0sMjU2XSw2NTIwNzpbWzE1ODhdLDI1Nl0sNjUyMDg6W1sxNTg4XSwyNTZdLDY1MjA5OltbMTU4OV0sMjU2XSw2NTIxMDpbWzE1ODldLDI1Nl0sNjUyMTE6W1sxNTg5XSwyNTZdLDY1MjEyOltbMTU4OV0sMjU2XSw2NTIxMzpbWzE1OTBdLDI1Nl0sNjUyMTQ6W1sxNTkwXSwyNTZdLDY1MjE1OltbMTU5MF0sMjU2XSw2NTIxNjpbWzE1OTBdLDI1Nl0sNjUyMTc6W1sxNTkxXSwyNTZdLDY1MjE4OltbMTU5MV0sMjU2XSw2NTIxOTpbWzE1OTFdLDI1Nl0sNjUyMjA6W1sxNTkxXSwyNTZdLDY1MjIxOltbMTU5Ml0sMjU2XSw2NTIyMjpbWzE1OTJdLDI1Nl0sNjUyMjM6W1sxNTkyXSwyNTZdLDY1MjI0OltbMTU5Ml0sMjU2XSw2NTIyNTpbWzE1OTNdLDI1Nl0sNjUyMjY6W1sxNTkzXSwyNTZdLDY1MjI3OltbMTU5M10sMjU2XSw2NTIyODpbWzE1OTNdLDI1Nl0sNjUyMjk6W1sxNTk0XSwyNTZdLDY1MjMwOltbMTU5NF0sMjU2XSw2NTIzMTpbWzE1OTRdLDI1Nl0sNjUyMzI6W1sxNTk0XSwyNTZdLDY1MjMzOltbMTYwMV0sMjU2XSw2NTIzNDpbWzE2MDFdLDI1Nl0sNjUyMzU6W1sxNjAxXSwyNTZdLDY1MjM2OltbMTYwMV0sMjU2XSw2NTIzNzpbWzE2MDJdLDI1Nl0sNjUyMzg6W1sxNjAyXSwyNTZdLDY1MjM5OltbMTYwMl0sMjU2XSw2NTI0MDpbWzE2MDJdLDI1Nl0sNjUyNDE6W1sxNjAzXSwyNTZdLDY1MjQyOltbMTYwM10sMjU2XSw2NTI0MzpbWzE2MDNdLDI1Nl0sNjUyNDQ6W1sxNjAzXSwyNTZdLDY1MjQ1OltbMTYwNF0sMjU2XSw2NTI0NjpbWzE2MDRdLDI1Nl0sNjUyNDc6W1sxNjA0XSwyNTZdLDY1MjQ4OltbMTYwNF0sMjU2XSw2NTI0OTpbWzE2MDVdLDI1Nl0sNjUyNTA6W1sxNjA1XSwyNTZdLDY1MjUxOltbMTYwNV0sMjU2XSw2NTI1MjpbWzE2MDVdLDI1Nl0sNjUyNTM6W1sxNjA2XSwyNTZdLDY1MjU0OltbMTYwNl0sMjU2XSw2NTI1NTpbWzE2MDZdLDI1Nl0sNjUyNTY6W1sxNjA2XSwyNTZdLDY1MjU3OltbMTYwN10sMjU2XSw2NTI1ODpbWzE2MDddLDI1Nl0sNjUyNTk6W1sxNjA3XSwyNTZdLDY1MjYwOltbMTYwN10sMjU2XSw2NTI2MTpbWzE2MDhdLDI1Nl0sNjUyNjI6W1sxNjA4XSwyNTZdLDY1MjYzOltbMTYwOV0sMjU2XSw2NTI2NDpbWzE2MDldLDI1Nl0sNjUyNjU6W1sxNjEwXSwyNTZdLDY1MjY2OltbMTYxMF0sMjU2XSw2NTI2NzpbWzE2MTBdLDI1Nl0sNjUyNjg6W1sxNjEwXSwyNTZdLDY1MjY5OltbMTYwNCwxNTcwXSwyNTZdLDY1MjcwOltbMTYwNCwxNTcwXSwyNTZdLDY1MjcxOltbMTYwNCwxNTcxXSwyNTZdLDY1MjcyOltbMTYwNCwxNTcxXSwyNTZdLDY1MjczOltbMTYwNCwxNTczXSwyNTZdLDY1Mjc0OltbMTYwNCwxNTczXSwyNTZdLDY1Mjc1OltbMTYwNCwxNTc1XSwyNTZdLDY1Mjc2OltbMTYwNCwxNTc1XSwyNTZdfSxcbjY1MjgwOns2NTI4MTpbWzMzXSwyNTZdLDY1MjgyOltbMzRdLDI1Nl0sNjUyODM6W1szNV0sMjU2XSw2NTI4NDpbWzM2XSwyNTZdLDY1Mjg1OltbMzddLDI1Nl0sNjUyODY6W1szOF0sMjU2XSw2NTI4NzpbWzM5XSwyNTZdLDY1Mjg4OltbNDBdLDI1Nl0sNjUyODk6W1s0MV0sMjU2XSw2NTI5MDpbWzQyXSwyNTZdLDY1MjkxOltbNDNdLDI1Nl0sNjUyOTI6W1s0NF0sMjU2XSw2NTI5MzpbWzQ1XSwyNTZdLDY1Mjk0OltbNDZdLDI1Nl0sNjUyOTU6W1s0N10sMjU2XSw2NTI5NjpbWzQ4XSwyNTZdLDY1Mjk3OltbNDldLDI1Nl0sNjUyOTg6W1s1MF0sMjU2XSw2NTI5OTpbWzUxXSwyNTZdLDY1MzAwOltbNTJdLDI1Nl0sNjUzMDE6W1s1M10sMjU2XSw2NTMwMjpbWzU0XSwyNTZdLDY1MzAzOltbNTVdLDI1Nl0sNjUzMDQ6W1s1Nl0sMjU2XSw2NTMwNTpbWzU3XSwyNTZdLDY1MzA2OltbNThdLDI1Nl0sNjUzMDc6W1s1OV0sMjU2XSw2NTMwODpbWzYwXSwyNTZdLDY1MzA5OltbNjFdLDI1Nl0sNjUzMTA6W1s2Ml0sMjU2XSw2NTMxMTpbWzYzXSwyNTZdLDY1MzEyOltbNjRdLDI1Nl0sNjUzMTM6W1s2NV0sMjU2XSw2NTMxNDpbWzY2XSwyNTZdLDY1MzE1OltbNjddLDI1Nl0sNjUzMTY6W1s2OF0sMjU2XSw2NTMxNzpbWzY5XSwyNTZdLDY1MzE4OltbNzBdLDI1Nl0sNjUzMTk6W1s3MV0sMjU2XSw2NTMyMDpbWzcyXSwyNTZdLDY1MzIxOltbNzNdLDI1Nl0sNjUzMjI6W1s3NF0sMjU2XSw2NTMyMzpbWzc1XSwyNTZdLDY1MzI0OltbNzZdLDI1Nl0sNjUzMjU6W1s3N10sMjU2XSw2NTMyNjpbWzc4XSwyNTZdLDY1MzI3OltbNzldLDI1Nl0sNjUzMjg6W1s4MF0sMjU2XSw2NTMyOTpbWzgxXSwyNTZdLDY1MzMwOltbODJdLDI1Nl0sNjUzMzE6W1s4M10sMjU2XSw2NTMzMjpbWzg0XSwyNTZdLDY1MzMzOltbODVdLDI1Nl0sNjUzMzQ6W1s4Nl0sMjU2XSw2NTMzNTpbWzg3XSwyNTZdLDY1MzM2OltbODhdLDI1Nl0sNjUzMzc6W1s4OV0sMjU2XSw2NTMzODpbWzkwXSwyNTZdLDY1MzM5OltbOTFdLDI1Nl0sNjUzNDA6W1s5Ml0sMjU2XSw2NTM0MTpbWzkzXSwyNTZdLDY1MzQyOltbOTRdLDI1Nl0sNjUzNDM6W1s5NV0sMjU2XSw2NTM0NDpbWzk2XSwyNTZdLDY1MzQ1OltbOTddLDI1Nl0sNjUzNDY6W1s5OF0sMjU2XSw2NTM0NzpbWzk5XSwyNTZdLDY1MzQ4OltbMTAwXSwyNTZdLDY1MzQ5OltbMTAxXSwyNTZdLDY1MzUwOltbMTAyXSwyNTZdLDY1MzUxOltbMTAzXSwyNTZdLDY1MzUyOltbMTA0XSwyNTZdLDY1MzUzOltbMTA1XSwyNTZdLDY1MzU0OltbMTA2XSwyNTZdLDY1MzU1OltbMTA3XSwyNTZdLDY1MzU2OltbMTA4XSwyNTZdLDY1MzU3OltbMTA5XSwyNTZdLDY1MzU4OltbMTEwXSwyNTZdLDY1MzU5OltbMTExXSwyNTZdLDY1MzYwOltbMTEyXSwyNTZdLDY1MzYxOltbMTEzXSwyNTZdLDY1MzYyOltbMTE0XSwyNTZdLDY1MzYzOltbMTE1XSwyNTZdLDY1MzY0OltbMTE2XSwyNTZdLDY1MzY1OltbMTE3XSwyNTZdLDY1MzY2OltbMTE4XSwyNTZdLDY1MzY3OltbMTE5XSwyNTZdLDY1MzY4OltbMTIwXSwyNTZdLDY1MzY5OltbMTIxXSwyNTZdLDY1MzcwOltbMTIyXSwyNTZdLDY1MzcxOltbMTIzXSwyNTZdLDY1MzcyOltbMTI0XSwyNTZdLDY1MzczOltbMTI1XSwyNTZdLDY1Mzc0OltbMTI2XSwyNTZdLDY1Mzc1OltbMTA2MjldLDI1Nl0sNjUzNzY6W1sxMDYzMF0sMjU2XSw2NTM3NzpbWzEyMjkwXSwyNTZdLDY1Mzc4OltbMTIzMDBdLDI1Nl0sNjUzNzk6W1sxMjMwMV0sMjU2XSw2NTM4MDpbWzEyMjg5XSwyNTZdLDY1MzgxOltbMTI1MzldLDI1Nl0sNjUzODI6W1sxMjUzMF0sMjU2XSw2NTM4MzpbWzEyNDQ5XSwyNTZdLDY1Mzg0OltbMTI0NTFdLDI1Nl0sNjUzODU6W1sxMjQ1M10sMjU2XSw2NTM4NjpbWzEyNDU1XSwyNTZdLDY1Mzg3OltbMTI0NTddLDI1Nl0sNjUzODg6W1sxMjUxNV0sMjU2XSw2NTM4OTpbWzEyNTE3XSwyNTZdLDY1MzkwOltbMTI1MTldLDI1Nl0sNjUzOTE6W1sxMjQ4M10sMjU2XSw2NTM5MjpbWzEyNTQwXSwyNTZdLDY1MzkzOltbMTI0NTBdLDI1Nl0sNjUzOTQ6W1sxMjQ1Ml0sMjU2XSw2NTM5NTpbWzEyNDU0XSwyNTZdLDY1Mzk2OltbMTI0NTZdLDI1Nl0sNjUzOTc6W1sxMjQ1OF0sMjU2XSw2NTM5ODpbWzEyNDU5XSwyNTZdLDY1Mzk5OltbMTI0NjFdLDI1Nl0sNjU0MDA6W1sxMjQ2M10sMjU2XSw2NTQwMTpbWzEyNDY1XSwyNTZdLDY1NDAyOltbMTI0NjddLDI1Nl0sNjU0MDM6W1sxMjQ2OV0sMjU2XSw2NTQwNDpbWzEyNDcxXSwyNTZdLDY1NDA1OltbMTI0NzNdLDI1Nl0sNjU0MDY6W1sxMjQ3NV0sMjU2XSw2NTQwNzpbWzEyNDc3XSwyNTZdLDY1NDA4OltbMTI0NzldLDI1Nl0sNjU0MDk6W1sxMjQ4MV0sMjU2XSw2NTQxMDpbWzEyNDg0XSwyNTZdLDY1NDExOltbMTI0ODZdLDI1Nl0sNjU0MTI6W1sxMjQ4OF0sMjU2XSw2NTQxMzpbWzEyNDkwXSwyNTZdLDY1NDE0OltbMTI0OTFdLDI1Nl0sNjU0MTU6W1sxMjQ5Ml0sMjU2XSw2NTQxNjpbWzEyNDkzXSwyNTZdLDY1NDE3OltbMTI0OTRdLDI1Nl0sNjU0MTg6W1sxMjQ5NV0sMjU2XSw2NTQxOTpbWzEyNDk4XSwyNTZdLDY1NDIwOltbMTI1MDFdLDI1Nl0sNjU0MjE6W1sxMjUwNF0sMjU2XSw2NTQyMjpbWzEyNTA3XSwyNTZdLDY1NDIzOltbMTI1MTBdLDI1Nl0sNjU0MjQ6W1sxMjUxMV0sMjU2XSw2NTQyNTpbWzEyNTEyXSwyNTZdLDY1NDI2OltbMTI1MTNdLDI1Nl0sNjU0Mjc6W1sxMjUxNF0sMjU2XSw2NTQyODpbWzEyNTE2XSwyNTZdLDY1NDI5OltbMTI1MThdLDI1Nl0sNjU0MzA6W1sxMjUyMF0sMjU2XSw2NTQzMTpbWzEyNTIxXSwyNTZdLDY1NDMyOltbMTI1MjJdLDI1Nl0sNjU0MzM6W1sxMjUyM10sMjU2XSw2NTQzNDpbWzEyNTI0XSwyNTZdLDY1NDM1OltbMTI1MjVdLDI1Nl0sNjU0MzY6W1sxMjUyN10sMjU2XSw2NTQzNzpbWzEyNTMxXSwyNTZdLDY1NDM4OltbMTI0NDFdLDI1Nl0sNjU0Mzk6W1sxMjQ0Ml0sMjU2XSw2NTQ0MDpbWzEyNjQ0XSwyNTZdLDY1NDQxOltbMTI1OTNdLDI1Nl0sNjU0NDI6W1sxMjU5NF0sMjU2XSw2NTQ0MzpbWzEyNTk1XSwyNTZdLDY1NDQ0OltbMTI1OTZdLDI1Nl0sNjU0NDU6W1sxMjU5N10sMjU2XSw2NTQ0NjpbWzEyNTk4XSwyNTZdLDY1NDQ3OltbMTI1OTldLDI1Nl0sNjU0NDg6W1sxMjYwMF0sMjU2XSw2NTQ0OTpbWzEyNjAxXSwyNTZdLDY1NDUwOltbMTI2MDJdLDI1Nl0sNjU0NTE6W1sxMjYwM10sMjU2XSw2NTQ1MjpbWzEyNjA0XSwyNTZdLDY1NDUzOltbMTI2MDVdLDI1Nl0sNjU0NTQ6W1sxMjYwNl0sMjU2XSw2NTQ1NTpbWzEyNjA3XSwyNTZdLDY1NDU2OltbMTI2MDhdLDI1Nl0sNjU0NTc6W1sxMjYwOV0sMjU2XSw2NTQ1ODpbWzEyNjEwXSwyNTZdLDY1NDU5OltbMTI2MTFdLDI1Nl0sNjU0NjA6W1sxMjYxMl0sMjU2XSw2NTQ2MTpbWzEyNjEzXSwyNTZdLDY1NDYyOltbMTI2MTRdLDI1Nl0sNjU0NjM6W1sxMjYxNV0sMjU2XSw2NTQ2NDpbWzEyNjE2XSwyNTZdLDY1NDY1OltbMTI2MTddLDI1Nl0sNjU0NjY6W1sxMjYxOF0sMjU2XSw2NTQ2NzpbWzEyNjE5XSwyNTZdLDY1NDY4OltbMTI2MjBdLDI1Nl0sNjU0Njk6W1sxMjYyMV0sMjU2XSw2NTQ3MDpbWzEyNjIyXSwyNTZdLDY1NDc0OltbMTI2MjNdLDI1Nl0sNjU0NzU6W1sxMjYyNF0sMjU2XSw2NTQ3NjpbWzEyNjI1XSwyNTZdLDY1NDc3OltbMTI2MjZdLDI1Nl0sNjU0Nzg6W1sxMjYyN10sMjU2XSw2NTQ3OTpbWzEyNjI4XSwyNTZdLDY1NDgyOltbMTI2MjldLDI1Nl0sNjU0ODM6W1sxMjYzMF0sMjU2XSw2NTQ4NDpbWzEyNjMxXSwyNTZdLDY1NDg1OltbMTI2MzJdLDI1Nl0sNjU0ODY6W1sxMjYzM10sMjU2XSw2NTQ4NzpbWzEyNjM0XSwyNTZdLDY1NDkwOltbMTI2MzVdLDI1Nl0sNjU0OTE6W1sxMjYzNl0sMjU2XSw2NTQ5MjpbWzEyNjM3XSwyNTZdLDY1NDkzOltbMTI2MzhdLDI1Nl0sNjU0OTQ6W1sxMjYzOV0sMjU2XSw2NTQ5NTpbWzEyNjQwXSwyNTZdLDY1NDk4OltbMTI2NDFdLDI1Nl0sNjU0OTk6W1sxMjY0Ml0sMjU2XSw2NTUwMDpbWzEyNjQzXSwyNTZdLDY1NTA0OltbMTYyXSwyNTZdLDY1NTA1OltbMTYzXSwyNTZdLDY1NTA2OltbMTcyXSwyNTZdLDY1NTA3OltbMTc1XSwyNTZdLDY1NTA4OltbMTY2XSwyNTZdLDY1NTA5OltbMTY1XSwyNTZdLDY1NTEwOltbODM2MV0sMjU2XSw2NTUxMjpbWzk0NzRdLDI1Nl0sNjU1MTM6W1s4NTkyXSwyNTZdLDY1NTE0OltbODU5M10sMjU2XSw2NTUxNTpbWzg1OTRdLDI1Nl0sNjU1MTY6W1s4NTk1XSwyNTZdLDY1NTE3OltbOTYzMl0sMjU2XSw2NTUxODpbWzk2NzVdLDI1Nl19XG5cbn07XG5cbiAgIC8qKioqKiBNb2R1bGUgdG8gZXhwb3J0ICovXG4gICB2YXIgdW5vcm0gPSB7XG4gICAgICBuZmM6IG5mYyxcbiAgICAgIG5mZDogbmZkLFxuICAgICAgbmZrYzogbmZrYyxcbiAgICAgIG5ma2Q6IG5ma2RcbiAgIH07XG5cbiAgIC8qZ2xvYmFscyBtb2R1bGU6dHJ1ZSxkZWZpbmU6dHJ1ZSovXG5cbiAgIC8vIENvbW1vbkpTXG4gICBpZiAodHlwZW9mIG1vZHVsZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgbW9kdWxlLmV4cG9ydHMgPSB1bm9ybTtcblxuICAgLy8gQU1EXG4gICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09IFwiZnVuY3Rpb25cIiAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICBkZWZpbmUoXCJ1bm9ybVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICByZXR1cm4gdW5vcm07XG4gICAgICB9KTtcblxuICAgLy8gR2xvYmFsXG4gICB9IGVsc2Uge1xuICAgICAgcm9vdC51bm9ybSA9IHVub3JtO1xuICAgfVxuXG4gICAvKioqKiogRXhwb3J0IGFzIHNoaW0gZm9yIFN0cmluZzo6bm9ybWFsaXplIG1ldGhvZCAqKioqKi9cbiAgIC8qXG4gICAgICBodHRwOi8vd2lraS5lY21hc2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OnNwZWNpZmljYXRpb25fZHJhZnRzI25vdmVtYmVyXzhfMjAxM19kcmFmdF9yZXZfMjFcblxuICAgICAgMjEuMS4zLjEyIFN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplKGZvcm09XCJORkNcIilcbiAgICAgIFdoZW4gdGhlIG5vcm1hbGl6ZSBtZXRob2QgaXMgY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50IGZvcm0sIHRoZSBmb2xsb3dpbmcgc3RlcHMgYXJlIHRha2VuOlxuXG4gICAgICAxLiBMZXQgTyBiZSBDaGVja09iamVjdENvZXJjaWJsZSh0aGlzIHZhbHVlKS5cbiAgICAgIDIuIExldCBTIGJlIFRvU3RyaW5nKE8pLlxuICAgICAgMy4gUmV0dXJuSWZBYnJ1cHQoUykuXG4gICAgICA0LiBJZiBmb3JtIGlzIG5vdCBwcm92aWRlZCBvciB1bmRlZmluZWQgbGV0IGZvcm0gYmUgXCJORkNcIi5cbiAgICAgIDUuIExldCBmIGJlIFRvU3RyaW5nKGZvcm0pLlxuICAgICAgNi4gUmV0dXJuSWZBYnJ1cHQoZikuXG4gICAgICA3LiBJZiBmIGlzIG5vdCBvbmUgb2YgXCJORkNcIiwgXCJORkRcIiwgXCJORktDXCIsIG9yIFwiTkZLRFwiLCB0aGVuIHRocm93IGEgUmFuZ2VFcnJvciBFeGNlcHRpb24uXG4gICAgICA4LiBMZXQgbnMgYmUgdGhlIFN0cmluZyB2YWx1ZSBpcyB0aGUgcmVzdWx0IG9mIG5vcm1hbGl6aW5nIFMgaW50byB0aGUgbm9ybWFsaXphdGlvbiBmb3JtIG5hbWVkIGJ5IGYgYXMgc3BlY2lmaWVkIGluIFVuaWNvZGUgU3RhbmRhcmQgQW5uZXggIzE1LCBVbmljb2RlTm9ybWFsaXphdG9pbiBGb3Jtcy5cbiAgICAgIDkuIFJldHVybiBucy5cblxuICAgICAgVGhlIGxlbmd0aCBwcm9wZXJ0eSBvZiB0aGUgbm9ybWFsaXplIG1ldGhvZCBpcyAwLlxuXG4gICAgICAqTk9URSogVGhlIG5vcm1hbGl6ZSBmdW5jdGlvbiBpcyBpbnRlbnRpb25hbGx5IGdlbmVyaWM7IGl0IGRvZXMgbm90IHJlcXVpcmUgdGhhdCBpdHMgdGhpcyB2YWx1ZSBiZSBhIFN0cmluZyBvYmplY3QuIFRoZXJlZm9yZSBpdCBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gb3RoZXIga2luZHMgb2Ygb2JqZWN0cyBmb3IgdXNlIGFzIGEgbWV0aG9kLlxuICAgKi9cbiAgICB1bm9ybS5zaGltQXBwbGllZCA9IGZhbHNlO1xuXG4gICBpZiAoIVN0cmluZy5wcm90b3R5cGUubm9ybWFsaXplKSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoU3RyaW5nLnByb3RvdHlwZSwgXCJub3JtYWxpemVcIiwge1xuICAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgIHZhbHVlOiBmdW5jdGlvbihmb3JtKSB7XG4gICAgICAgICAgICB2YXIgc3RyID0gXCJcIiArIHRoaXM7XG4gICAgICAgICAgICBmb3JtID0gIGZvcm0gPT09IHVuZGVmaW5lZCA/IFwiTkZDXCIgOiBmb3JtO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZm9ybSA9PT0gXCJORkNcIikge1xuICAgICAgICAgICAgICAgcmV0dXJuIHVub3JtLm5mYyhzdHIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtID09PSBcIk5GRFwiKSB7XG4gICAgICAgICAgICAgICByZXR1cm4gdW5vcm0ubmZkKHN0cik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm0gPT09IFwiTkZLQ1wiKSB7XG4gICAgICAgICAgICAgICByZXR1cm4gdW5vcm0ubmZrYyhzdHIpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtID09PSBcIk5GS0RcIikge1xuICAgICAgICAgICAgICAgcmV0dXJuIHVub3JtLm5ma2Qoc3RyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkludmFsaWQgbm9ybWFsaXphdGlvbiBmb3JtOiBcIiArIGZvcm0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHVub3JtLnNoaW1BcHBsaWVkID0gdHJ1ZTtcbiAgIH1cbn0odGhpcykpO1xuIiwiXG5cbi8vIGJyaWRnZSB2MiBpcyBoYWxmLXdheSBiZXR3ZWVuIGxvd2xldmVsIGFuZCBub3Rcbi8vIGhvd2V2ZXIsIGl0IGlzIG5vdCBkb2luZyBhY3R1YWwgc2VuZGluZyBpbi90byB0aGUgZGV2aWNlc1xuLy8gYW5kIGl0IHJlZmVycyBlbnVtZXJhdGUgdG8gYnJpZGdlXG5cbid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHVuZGVmaW5lZDtcblxudmFyIF9yZWdlbmVyYXRvciA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvcmVnZW5lcmF0b3InKTtcblxudmFyIF9yZWdlbmVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWdlbmVyYXRvcik7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbnZhciBfZGVzYywgX3ZhbHVlLCBfY2xhc3M7XG5cbnZhciBfc2VtdmVyQ29tcGFyZSA9IHJlcXVpcmUoJ3NlbXZlci1jb21wYXJlJyk7XG5cbnZhciBfc2VtdmVyQ29tcGFyZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zZW12ZXJDb21wYXJlKTtcblxudmFyIF9odHRwID0gcmVxdWlyZSgnLi9odHRwJyk7XG5cbnZhciBfaGlnaGxldmVsQ2hlY2tzID0gcmVxdWlyZSgnLi4vaGlnaGxldmVsLWNoZWNrcycpO1xuXG52YXIgY2hlY2sgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfaGlnaGxldmVsQ2hlY2tzKTtcblxudmFyIF9zZW5kID0gcmVxdWlyZSgnLi4vbG93bGV2ZWwvc2VuZCcpO1xuXG52YXIgX3BhcnNlX3Byb3RvY29sID0gcmVxdWlyZSgnLi4vbG93bGV2ZWwvcHJvdG9idWYvcGFyc2VfcHJvdG9jb2wnKTtcblxudmFyIF9yZWNlaXZlID0gcmVxdWlyZSgnLi4vbG93bGV2ZWwvcmVjZWl2ZScpO1xuXG52YXIgX2RlYnVnRGVjb3JhdG9yID0gcmVxdWlyZSgnLi4vZGVidWctZGVjb3JhdG9yJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBnZW4gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyBmdW5jdGlvbiBzdGVwKGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHN0ZXAoXCJuZXh0XCIsIHZhbHVlKTsgfSwgZnVuY3Rpb24gKGVycikgeyBzdGVwKFwidGhyb3dcIiwgZXJyKTsgfSk7IH0gfSByZXR1cm4gc3RlcChcIm5leHRcIik7IH0pOyB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVjb3JhdG9ycywgZGVzY3JpcHRvciwgY29udGV4dCkge1xuICB2YXIgZGVzYyA9IHt9O1xuICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGRlc2Nba2V5XSA9IGRlc2NyaXB0b3Jba2V5XTtcbiAgfSk7XG4gIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlO1xuICBkZXNjLmNvbmZpZ3VyYWJsZSA9ICEhZGVzYy5jb25maWd1cmFibGU7XG5cbiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7XG4gICAgZGVzYy53cml0YWJsZSA9IHRydWU7XG4gIH1cblxuICBkZXNjID0gZGVjb3JhdG9ycy5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24gKGRlc2MsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYztcbiAgfSwgZGVzYyk7XG5cbiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7XG4gICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7XG4gICAgZGVzYy5pbml0aWFsaXplciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkZXNjLmluaXRpYWxpemVyID09PSB2b2lkIDApIHtcbiAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTtcbiAgICBkZXNjID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBkZXNjO1xufVxuXG52YXIgREVGQVVMVF9VUkwgPSAnaHR0cDovLzEyNy4wLjAuMToyMTMyNSc7XG52YXIgREVGQVVMVF9WRVJTSU9OX1VSTCA9ICdodHRwczovL3dhbGxldC50cmV6b3IuaW8vZGF0YS9icmlkZ2UvbGF0ZXN0LnR4dCc7XG5cbnZhciBCcmlkZ2VUcmFuc3BvcnQgPSAoX2NsYXNzID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBCcmlkZ2VUcmFuc3BvcnQodXJsLCBuZXdlc3RWZXJzaW9uVXJsKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEJyaWRnZVRyYW5zcG9ydCk7XG5cbiAgICB0aGlzLm5hbWUgPSAnQnJpZGdlVHJhbnNwb3J0JztcbiAgICB0aGlzLnZlcnNpb24gPSAnJztcbiAgICB0aGlzLmRlYnVnID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWd1cmVkID0gZmFsc2U7XG4gICAgdGhpcy5zdG9wcGVkID0gZmFsc2U7XG4gICAgdGhpcy5yZXF1ZXN0TmVlZGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnVybCA9IHVybCA9PSBudWxsID8gREVGQVVMVF9VUkwgOiB1cmw7XG4gICAgdGhpcy5uZXdlc3RWZXJzaW9uVXJsID0gbmV3ZXN0VmVyc2lvblVybCA9PSBudWxsID8gREVGQVVMVF9WRVJTSU9OX1VSTCA6IG5ld2VzdFZlcnNpb25Vcmw7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoQnJpZGdlVHJhbnNwb3J0LCBbe1xuICAgIGtleTogJ19wb3N0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUob3B0aW9ucykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZSQoX2NvbnRleHQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0b3BwZWQpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgncmV0dXJuJywgUHJvbWlzZS5yZWplY3QoJ1RyYW5zcG9ydCBzdG9wcGVkLicpKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfaHR0cC5yZXF1ZXN0KShfZXh0ZW5kcyh7fSwgb3B0aW9ucywgeyBtZXRob2Q6ICdQT1NUJywgdXJsOiB0aGlzLnVybCArIG9wdGlvbnMudXJsLCBza2lwQ29udGVudFR5cGVIZWFkZXI6IHRydWUgfSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuYWJydXB0KCdyZXR1cm4nLCBfY29udGV4dC5zZW50KTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBfcG9zdChfeCkge1xuICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX3Bvc3Q7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdpbml0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMihkZWJ1Zykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVidWcgPSAhIWRlYnVnO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2lsZW50SW5pdCgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUyLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdChfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAnX3NpbGVudEluaXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICB2YXIgaW5mb1MsIGluZm8sIG5ld1ZlcnNpb247XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAyO1xuICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX2h0dHAucmVxdWVzdCkoe1xuICAgICAgICAgICAgICAgICAgdXJsOiB0aGlzLnVybCxcbiAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGluZm9TID0gX2NvbnRleHQzLnNlbnQ7XG4gICAgICAgICAgICAgICAgaW5mbyA9IGNoZWNrLmluZm8oaW5mb1MpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gaW5mby52ZXJzaW9uO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My50MCA9IGNoZWNrO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9odHRwLnJlcXVlc3QpKHtcbiAgICAgICAgICAgICAgICAgIHVybDogdGhpcy5uZXdlc3RWZXJzaW9uVXJsICsgJz8nICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ0dFVCdcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnQxID0gX2NvbnRleHQzLnNlbnQ7XG4gICAgICAgICAgICAgICAgbmV3VmVyc2lvbiA9IF9jb250ZXh0My50MC52ZXJzaW9uLmNhbGwoX2NvbnRleHQzLnQwLCBfY29udGV4dDMudDEpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5pc091dGRhdGVkID0gKDAsIF9zZW12ZXJDb21wYXJlMi5kZWZhdWx0KSh0aGlzLnZlcnNpb24sIG5ld1ZlcnNpb24pIDwgMDtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTMsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBfc2lsZW50SW5pdCgpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfc2lsZW50SW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2NvbmZpZ3VyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmNCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQoc2lnbmVkRGF0YSkge1xuICAgICAgICB2YXIgbWVzc2FnZXM7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlNCQoX2NvbnRleHQ0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ0LnByZXYgPSBfY29udGV4dDQubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMgPSAoMCwgX3BhcnNlX3Byb3RvY29sLnBhcnNlQ29uZmlndXJlKShzaWduZWREYXRhKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5fbWVzc2FnZXMgPSBtZXNzYWdlcztcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZShfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWd1cmU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdsaXN0ZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KG9sZCkge1xuICAgICAgICB2YXIgZGV2aWNlc1MsIGRldmljZXM7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlNSQoX2NvbnRleHQ1KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ1LnByZXYgPSBfY29udGV4dDUubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgaWYgKCEob2xkID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0JyaWRnZSB2MiBkb2VzIG5vdCBzdXBwb3J0IGxpc3RlbiB3aXRob3V0IHByZXZpb3VzLicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBfY29udGV4dDUubmV4dCA9IDQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3Qoe1xuICAgICAgICAgICAgICAgICAgdXJsOiAnL2xpc3RlbicsXG4gICAgICAgICAgICAgICAgICBib2R5OiBvbGRcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgICAgZGV2aWNlc1MgPSBfY29udGV4dDUuc2VudDtcbiAgICAgICAgICAgICAgICBkZXZpY2VzID0gY2hlY2suZGV2aWNlcyhkZXZpY2VzUyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NS5hYnJ1cHQoJ3JldHVybicsIGRldmljZXMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU1LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gbGlzdGVuKF94NCkge1xuICAgICAgICByZXR1cm4gX3JlZjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpc3RlbjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2VudW1lcmF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmNiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoKSB7XG4gICAgICAgIHZhciBkZXZpY2VzUywgZGV2aWNlcztcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDYucHJldiA9IF9jb250ZXh0Ni5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3QoeyB1cmw6ICcvZW51bWVyYXRlJyB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgZGV2aWNlc1MgPSBfY29udGV4dDYuc2VudDtcbiAgICAgICAgICAgICAgICBkZXZpY2VzID0gY2hlY2suZGV2aWNlcyhkZXZpY2VzUyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5hYnJ1cHQoJ3JldHVybicsIGRldmljZXMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU2LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZW51bWVyYXRlKCkge1xuICAgICAgICByZXR1cm4gX3JlZjYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVudW1lcmF0ZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ19hY3F1aXJlTWl4ZWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjcgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KGlucHV0LCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgdmFyIHByZXZpb3VzU3RyLCB1cmw7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ3KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ3LnByZXYgPSBfY29udGV4dDcubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgcHJldmlvdXNTdHIgPSBpbnB1dC5wcmV2aW91cyA9PSBudWxsID8gJ251bGwnIDogaW5wdXQucHJldmlvdXM7XG4gICAgICAgICAgICAgICAgdXJsID0gKGRlYnVnTGluayA/ICcvZGVidWcnIDogJycpICsgJy9hY3F1aXJlLycgKyBpbnB1dC5wYXRoICsgJy8nICsgcHJldmlvdXNTdHI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5hYnJ1cHQoJ3JldHVybicsIHRoaXMuX3Bvc3QoeyB1cmw6IHVybCB9KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTcsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBfYWNxdWlyZU1peGVkKF94NSwgX3g2KSB7XG4gICAgICAgIHJldHVybiBfcmVmNy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2FjcXVpcmVNaXhlZDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2FjcXVpcmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjggPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KGlucHV0LCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgdmFyIGFjcXVpcmVTO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTgkKF9jb250ZXh0OCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fYWNxdWlyZU1peGVkKGlucHV0LCBkZWJ1Z0xpbmspO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBhY3F1aXJlUyA9IF9jb250ZXh0OC5zZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguYWJydXB0KCdyZXR1cm4nLCBjaGVjay5hY3F1aXJlKGFjcXVpcmVTKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTgsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBhY3F1aXJlKF94NywgX3g4KSB7XG4gICAgICAgIHJldHVybiBfcmVmOC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNxdWlyZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3JlbGVhc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjkgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU5KHNlc3Npb24sIG9uY2xvc2UsIGRlYnVnTGluaykge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTkkKF9jb250ZXh0OSkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0OS5wcmV2ID0gX2NvbnRleHQ5Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMuX3Bvc3QoeyB1cmw6IChkZWJ1Z0xpbmsgPyAnL2RlYnVnJyA6ICcnKSArICcvcmVsZWFzZS8nICsgc2Vzc2lvbiB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghb25jbG9zZSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ5Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OS5hYnJ1cHQoJ3JldHVybicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICBfY29udGV4dDkubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcztcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OS5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlOSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlbGVhc2UoX3g5LCBfeDEwLCBfeDExKSB7XG4gICAgICAgIHJldHVybiBfcmVmOS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVsZWFzZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2NhbGwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjEwID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMTAoc2Vzc2lvbiwgbmFtZSwgZGF0YSwgZGVidWdMaW5rKSB7XG4gICAgICAgIHZhciBtZXNzYWdlcywgb3V0RGF0YSwgcmVzRGF0YSwganNvbkRhdGE7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMTAkKF9jb250ZXh0MTApIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDEwLnByZXYgPSBfY29udGV4dDEwLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghKHRoaXMuX21lc3NhZ2VzID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDEwLm5leHQgPSAyO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcmFuc3BvcnQgbm90IGNvbmZpZ3VyZWQuJyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIG1lc3NhZ2VzID0gdGhpcy5fbWVzc2FnZXM7XG4gICAgICAgICAgICAgICAgb3V0RGF0YSA9ICgwLCBfc2VuZC5idWlsZE9uZSkobWVzc2FnZXMsIG5hbWUsIGRhdGEpLnRvU3RyaW5nKCdoZXgnKTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDEwLm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9wb3N0KHtcbiAgICAgICAgICAgICAgICAgIHVybDogKGRlYnVnTGluayA/ICcvZGVidWcnIDogJycpICsgJy9jYWxsLycgKyBzZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgYm9keTogb3V0RGF0YVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICByZXNEYXRhID0gX2NvbnRleHQxMC5zZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEodHlwZW9mIHJlc0RhdGEgIT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQxMC5uZXh0ID0gOTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmV0dXJuaW5nIGRhdGEgaXMgbm90IHN0cmluZy4nKTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAganNvbkRhdGEgPSAoMCwgX3JlY2VpdmUucmVjZWl2ZU9uZSkobWVzc2FnZXMsIG5ldyBCdWZmZXIocmVzRGF0YSwgJ2hleCcpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMC5hYnJ1cHQoJ3JldHVybicsIGNoZWNrLmNhbGwoanNvbkRhdGEpKTtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDEwLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUxMCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNhbGwoX3gxMiwgX3gxMywgX3gxNCwgX3gxNSkge1xuICAgICAgICByZXR1cm4gX3JlZjEwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjYWxsO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAncG9zdCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmMTEgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxMShzZXNzaW9uLCBuYW1lLCBkYXRhLCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgdmFyIG1lc3NhZ2VzLCBvdXREYXRhO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTExJChfY29udGV4dDExKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQxMS5wcmV2ID0gX2NvbnRleHQxMS5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLl9tZXNzYWdlcyA9PSBudWxsKSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQxMS5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNwb3J0IG5vdCBjb25maWd1cmVkLicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBtZXNzYWdlcyA9IHRoaXMuX21lc3NhZ2VzO1xuICAgICAgICAgICAgICAgIG91dERhdGEgPSAoMCwgX3NlbmQuYnVpbGRPbmUpKG1lc3NhZ2VzLCBuYW1lLCBkYXRhKS50b1N0cmluZygnaGV4Jyk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQxMS5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcG9zdCh7XG4gICAgICAgICAgICAgICAgICB1cmw6IChkZWJ1Z0xpbmsgPyAnL2RlYnVnJyA6ICcnKSArICcvcG9zdC8nICsgc2Vzc2lvbixcbiAgICAgICAgICAgICAgICAgIGJvZHk6IG91dERhdGFcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTEuYWJydXB0KCdyZXR1cm4nKTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTEuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTExLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcG9zdChfeDE2LCBfeDE3LCBfeDE4LCBfeDE5KSB7XG4gICAgICAgIHJldHVybiBfcmVmMTEuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBvc3Q7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdyZWFkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYxMiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTEyKHNlc3Npb24sIGRlYnVnTGluaykge1xuICAgICAgICB2YXIgbWVzc2FnZXMsIHJlc0RhdGEsIGpzb25EYXRhO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTEyJChfY29udGV4dDEyKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQxMi5wcmV2ID0gX2NvbnRleHQxMi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBpZiAoISh0aGlzLl9tZXNzYWdlcyA9PSBudWxsKSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQxMi5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNwb3J0IG5vdCBjb25maWd1cmVkLicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBtZXNzYWdlcyA9IHRoaXMuX21lc3NhZ2VzO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0MTIubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc3Qoe1xuICAgICAgICAgICAgICAgICAgdXJsOiAoZGVidWdMaW5rID8gJy9kZWJ1ZycgOiAnJykgKyAnL3JlYWQvJyArIHNlc3Npb25cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgcmVzRGF0YSA9IF9jb250ZXh0MTIuc2VudDtcblxuICAgICAgICAgICAgICAgIGlmICghKHR5cGVvZiByZXNEYXRhICE9PSAnc3RyaW5nJykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0MTIubmV4dCA9IDg7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JldHVybmluZyBkYXRhIGlzIG5vdCBzdHJpbmcuJyk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGpzb25EYXRhID0gKDAsIF9yZWNlaXZlLnJlY2VpdmVPbmUpKG1lc3NhZ2VzLCBuZXcgQnVmZmVyKHJlc0RhdGEsICdoZXgnKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTIuYWJydXB0KCdyZXR1cm4nLCBjaGVjay5jYWxsKGpzb25EYXRhKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiByZWFkKF94MjAsIF94MjEpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYxMi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVhZDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3JlcXVlc3REZXZpY2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZXF1ZXN0RGV2aWNlKCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0QnJpZGdlTGF0ZXN0VXJsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QnJpZGdlTGF0ZXN0VXJsKHVybCkge1xuICAgICAgdGhpcy5uZXdlc3RWZXJzaW9uVXJsID0gdXJsO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ3N0b3AnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1dLCBbe1xuICAgIGtleTogJ3NldEZldGNoJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0RmV0Y2goZmV0Y2gsIGlzTm9kZSkge1xuICAgICAgKDAsIF9odHRwLnNldEZldGNoKShmZXRjaCwgaXNOb2RlKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gQnJpZGdlVHJhbnNwb3J0O1xufSgpLCAoX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnaW5pdCcsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2luaXQnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2NvbmZpZ3VyZScsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2NvbmZpZ3VyZScpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnbGlzdGVuJywgW19kZWJ1Z0RlY29yYXRvci5kZWJ1Z0luT3V0XSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnbGlzdGVuJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdlbnVtZXJhdGUnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdlbnVtZXJhdGUnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2FjcXVpcmUnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdhY3F1aXJlJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdyZWxlYXNlJywgW19kZWJ1Z0RlY29yYXRvci5kZWJ1Z0luT3V0XSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAncmVsZWFzZScpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnY2FsbCcsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2NhbGwnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3Bvc3QnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdwb3N0JyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdyZWFkJywgW19kZWJ1Z0RlY29yYXRvci5kZWJ1Z0luT3V0XSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAncmVhZCcpLCBfY2xhc3MucHJvdG90eXBlKSksIF9jbGFzcyk7XG5leHBvcnRzLmRlZmF1bHQgPSBCcmlkZ2VUcmFuc3BvcnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnJlcXVlc3QgPSB1bmRlZmluZWQ7XG5cbnZhciBfcmVnZW5lcmF0b3IgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yJyk7XG5cbnZhciBfcmVnZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVnZW5lcmF0b3IpO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbnZhciByZXF1ZXN0ID0gZXhwb3J0cy5yZXF1ZXN0ID0gZnVuY3Rpb24gKCkge1xuICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZShvcHRpb25zKSB7XG4gICAgdmFyIGZldGNoT3B0aW9ucywgcmVzLCByZXNUZXh0LCByZXNKc29uO1xuICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgIGZldGNoT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgbWV0aG9kOiBvcHRpb25zLm1ldGhvZCxcbiAgICAgICAgICAgICAgYm9keTogd3JhcEJvZHkob3B0aW9ucy5ib2R5KSxcbiAgICAgICAgICAgICAgY3JlZGVudGlhbHM6ICdzYW1lLW9yaWdpbicsXG4gICAgICAgICAgICAgIGhlYWRlcnM6IHt9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyB0aGlzIGlzIGp1c3QgZm9yIGZsb3d0eXBlXG5cbiAgICAgICAgICAgIGlmIChvcHRpb25zLnNraXBDb250ZW50VHlwZUhlYWRlciA9PSBudWxsIHx8IG9wdGlvbnMuc2tpcENvbnRlbnRUeXBlSGVhZGVyID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICBmZXRjaE9wdGlvbnMuaGVhZGVycyA9IF9leHRlbmRzKHt9LCBmZXRjaE9wdGlvbnMuaGVhZGVycywge1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50VHlwZShvcHRpb25zLmJvZHkgPT0gbnVsbCA/ICcnIDogb3B0aW9ucy5ib2R5KVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gTm9kZSBhcHBsaWNhdGlvbnMgbXVzdCBzcG9vZiBvcmlnaW4gZm9yIGJyaWRnZSBDT1JTXG4gICAgICAgICAgICBpZiAoX2lzTm9kZSkge1xuICAgICAgICAgICAgICBmZXRjaE9wdGlvbnMuaGVhZGVycyA9IF9leHRlbmRzKHt9LCBmZXRjaE9wdGlvbnMuaGVhZGVycywge1xuICAgICAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cHM6Ly9ub2RlLnRyZXpvci5pbydcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA1O1xuICAgICAgICAgICAgcmV0dXJuIF9mZXRjaChvcHRpb25zLnVybCwgZmV0Y2hPcHRpb25zKTtcblxuICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIHJlcyA9IF9jb250ZXh0LnNlbnQ7XG4gICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gODtcbiAgICAgICAgICAgIHJldHVybiByZXMudGV4dCgpO1xuXG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmVzVGV4dCA9IF9jb250ZXh0LnNlbnQ7XG5cbiAgICAgICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoJ3JldHVybicsIHBhcnNlUmVzdWx0KHJlc1RleHQpKTtcblxuICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICByZXNKc29uID0gcGFyc2VSZXN1bHQocmVzVGV4dCk7XG5cbiAgICAgICAgICAgIGlmICghKCh0eXBlb2YgcmVzSnNvbiA9PT0gJ3VuZGVmaW5lZCcgPyAndW5kZWZpbmVkJyA6IF90eXBlb2YocmVzSnNvbikpID09PSAnb2JqZWN0JyAmJiByZXNKc29uICE9IG51bGwgJiYgcmVzSnNvbi5lcnJvciAhPSBudWxsKSkge1xuICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gMTg7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzSnNvbi5lcnJvcik7XG5cbiAgICAgICAgICBjYXNlIDE4OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc1RleHQpO1xuXG4gICAgICAgICAgY2FzZSAxOTpcbiAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICB9KSk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3QoX3gpIHtcbiAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9O1xufSgpO1xuXG5leHBvcnRzLnNldEZldGNoID0gc2V0RmV0Y2g7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBnZW4gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyBmdW5jdGlvbiBzdGVwKGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHN0ZXAoXCJuZXh0XCIsIHZhbHVlKTsgfSwgZnVuY3Rpb24gKGVycikgeyBzdGVwKFwidGhyb3dcIiwgZXJyKTsgfSk7IH0gfSByZXR1cm4gc3RlcChcIm5leHRcIik7IH0pOyB9OyB9XG5cbi8vIHNsaWdodCBoYWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IHRvIGFsbG93IE5vZGUgdG8gc2V0IGl0cyBvd24gZmV0Y2hcbi8vIFJlcXVlc3QsIFJlcXVlc3RPcHRpb25zIGFuZCBSZXNwb25zZSBhcmUgYnVpbHQtaW4gdHlwZXMgb2YgRmxvdyBmb3IgZmV0Y2ggQVBJXG52YXIgX2ZldGNoID0gdHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgPyBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xufSA6IHdpbmRvdy5mZXRjaDtcblxudmFyIF9pc05vZGUgPSBmYWxzZTtcblxuZnVuY3Rpb24gc2V0RmV0Y2goZmV0Y2gsIGlzTm9kZSkge1xuICBfZmV0Y2ggPSBmZXRjaDtcbiAgX2lzTm9kZSA9ICEhaXNOb2RlO1xufVxuXG5mdW5jdGlvbiBjb250ZW50VHlwZShib2R5KSB7XG4gIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAoYm9keSA9PT0gJycpIHtcbiAgICAgIHJldHVybiAndGV4dC9wbGFpbic7XG4gICAgfVxuICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL2pzb24nO1xuICB9XG59XG5cbmZ1bmN0aW9uIHdyYXBCb2R5KGJvZHkpIHtcbiAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBib2R5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShib2R5KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZVJlc3VsdCh0ZXh0KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodGV4dCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdGV4dDtcbiAgfVxufSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuaW5mbyA9IGluZm87XG5leHBvcnRzLnZlcnNpb24gPSB2ZXJzaW9uO1xuZXhwb3J0cy5kZXZpY2VzID0gZGV2aWNlcztcbmV4cG9ydHMuYWNxdWlyZSA9IGFjcXVpcmU7XG5leHBvcnRzLmNhbGwgPSBjYWxsO1xuZnVuY3Rpb24gaW5mbyhyZXMpIHtcbiAgaWYgKHR5cGVvZiByZXMgIT09ICdvYmplY3QnIHx8IHJlcyA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyByZXN1bHQgdHlwZS4nKTtcbiAgfVxuICB2YXIgdmVyc2lvbiA9IHJlcy52ZXJzaW9uO1xuICBpZiAodHlwZW9mIHZlcnNpb24gIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyByZXN1bHQgdHlwZS4nKTtcbiAgfVxuICB2YXIgY29uZmlndXJlZCA9ICEhcmVzLmNvbmZpZ3VyZWQ7XG4gIHJldHVybiB7IHZlcnNpb246IHZlcnNpb24sIGNvbmZpZ3VyZWQ6IGNvbmZpZ3VyZWQgfTtcbn1cblxuLy8gaW5wdXQgY2hlY2tzIGZvciBoaWdoLWxldmVsIHRyYW5zcG9ydHNcblxuZnVuY3Rpb24gdmVyc2lvbih2ZXJzaW9uKSB7XG4gIGlmICh0eXBlb2YgdmVyc2lvbiAhPT0gJ3N0cmluZycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIHJlc3VsdCB0eXBlLicpO1xuICB9XG4gIHJldHVybiB2ZXJzaW9uLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gY29udmVydFNlc3Npb24ocikge1xuICBpZiAociA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgaWYgKHR5cGVvZiByICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgcmVzdWx0IHR5cGUuJyk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGRldmljZXMocmVzKSB7XG4gIGlmICh0eXBlb2YgcmVzICE9PSAnb2JqZWN0Jykge1xuICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgcmVzdWx0IHR5cGUuJyk7XG4gIH1cbiAgaWYgKCEocmVzIGluc3RhbmNlb2YgQXJyYXkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyByZXN1bHQgdHlwZS4nKTtcbiAgfVxuICByZXR1cm4gcmVzLm1hcChmdW5jdGlvbiAobykge1xuICAgIGlmICh0eXBlb2YgbyAhPT0gJ29iamVjdCcgfHwgbyA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIHJlc3VsdCB0eXBlLicpO1xuICAgIH1cbiAgICB2YXIgcGF0aCA9IG8ucGF0aDtcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIHJlc3VsdCB0eXBlLicpO1xuICAgIH1cbiAgICB2YXIgcGF0aFMgPSBwYXRoLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGg6IHBhdGhTLFxuICAgICAgc2Vzc2lvbjogY29udmVydFNlc3Npb24oby5zZXNzaW9uKSxcbiAgICAgIGRlYnVnU2Vzc2lvbjogY29udmVydFNlc3Npb24oby5kZWJ1Z1Nlc3Npb24pLFxuICAgICAgcHJvZHVjdDogby5wcm9kdWN0LFxuICAgICAgdmVuZG9yOiBvLnZlbmRvcixcbiAgICAgIGRlYnVnOiAhIW8uZGVidWdcbiAgICB9O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYWNxdWlyZShyZXMpIHtcbiAgaWYgKHR5cGVvZiByZXMgIT09ICdvYmplY3QnIHx8IHJlcyA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyByZXN1bHQgdHlwZS4nKTtcbiAgfVxuICB2YXIgc2Vzc2lvbiA9IHJlcy5zZXNzaW9uO1xuICBpZiAodHlwZW9mIHNlc3Npb24gIT09ICdzdHJpbmcnICYmIHR5cGVvZiBzZXNzaW9uICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgcmVzdWx0IHR5cGUuJyk7XG4gIH1cbiAgcmV0dXJuIHNlc3Npb24udG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gY2FsbChyZXMpIHtcbiAgaWYgKHR5cGVvZiByZXMgIT09ICdvYmplY3QnIHx8IHJlcyA9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyByZXN1bHQgdHlwZS4nKTtcbiAgfVxuICB2YXIgdHlwZSA9IHJlcy50eXBlO1xuICBpZiAodHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyByZXN1bHQgdHlwZS4nKTtcbiAgfVxuICB2YXIgbWVzc2FnZSA9IHJlcy5tZXNzYWdlO1xuICBpZiAodHlwZW9mIG1lc3NhZ2UgIT09ICdvYmplY3QnIHx8IG1lc3NhZ2UgPT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgcmVzdWx0IHR5cGUuJyk7XG4gIH1cbiAgcmV0dXJuIHsgdHlwZTogdHlwZSwgbWVzc2FnZTogbWVzc2FnZSB9O1xufSIsIi8qXG4gQ29weXJpZ2h0IDIwMTMgRGFuaWVsIFdpcnR6IDxkY29kZUBkY29kZS5pbz5cblxuIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBsaWNlbnNlIFByb3RvQnVmLmpzIChjKSAyMDEzIERhbmllbCBXaXJ0eiA8ZGNvZGVAZGNvZGUuaW8+XG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXG4gKiBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL1Byb3RvQnVmLmpzIGZvciBkZXRhaWxzXG4gKi9cbihmdW5jdGlvbihnbG9iYWwpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIGZ1bmN0aW9uIGluaXQoQnl0ZUJ1ZmZlcikge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUaGUgUHJvdG9CdWYgbmFtZXNwYWNlLlxuICAgICAgICAgKiBAZXhwb3J0cyBQcm90b0J1ZlxuICAgICAgICAgKiBAbmFtZXNwYWNlXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIHZhciBQcm90b0J1ZiA9IHt9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcm90b0J1Zi5qcyB2ZXJzaW9uLlxuICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuVkVSU0lPTiA9IFwiMy44LjJcIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2lyZSB0eXBlcy5cbiAgICAgICAgICogQHR5cGUge09iamVjdC48c3RyaW5nLG51bWJlcj59XG4gICAgICAgICAqIEBjb25zdFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5XSVJFX1RZUEVTID0ge307XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFZhcmludCB3aXJlIHR5cGUuXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLldJUkVfVFlQRVMuVkFSSU5UID0gMDtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRml4ZWQgNjQgYml0cyB3aXJlIHR5cGUuXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqIEBjb25zdFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5XSVJFX1RZUEVTLkJJVFM2NCA9IDE7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIExlbmd0aCBkZWxpbWl0ZWQgd2lyZSB0eXBlLlxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuV0lSRV9UWVBFUy5MREVMSU0gPSAyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTdGFydCBncm91cCB3aXJlIHR5cGUuXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqIEBjb25zdFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5XSVJFX1RZUEVTLlNUQVJUR1JPVVAgPSAzO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFbmQgZ3JvdXAgd2lyZSB0eXBlLlxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuV0lSRV9UWVBFUy5FTkRHUk9VUCA9IDQ7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEZpeGVkIDMyIGJpdHMgd2lyZSB0eXBlLlxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuV0lSRV9UWVBFUy5CSVRTMzIgPSA1O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQYWNrYWJsZSB3aXJlIHR5cGVzLlxuICAgICAgICAgKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuUEFDS0FCTEVfV0lSRV9UWVBFUyA9IFtcbiAgICAgICAgICAgIFByb3RvQnVmLldJUkVfVFlQRVMuVkFSSU5ULFxuICAgICAgICAgICAgUHJvdG9CdWYuV0lSRV9UWVBFUy5CSVRTNjQsXG4gICAgICAgICAgICBQcm90b0J1Zi5XSVJFX1RZUEVTLkJJVFMzMlxuICAgICAgICBdO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBUeXBlcy5cbiAgICAgICAgICogQGRpY3RcbiAgICAgICAgICogQHR5cGUge09iamVjdC48c3RyaW5nLHtuYW1lOiBzdHJpbmcsIHdpcmVUeXBlOiBudW1iZXJ9Pn1cbiAgICAgICAgICogQGNvbnN0XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLlRZUEVTID0ge1xuICAgICAgICAgICAgLy8gQWNjb3JkaW5nIHRvIHRoZSBwcm90b2J1ZiBzcGVjLlxuICAgICAgICAgICAgXCJpbnQzMlwiOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJpbnQzMlwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLlZBUklOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwidWludDMyXCI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInVpbnQzMlwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLlZBUklOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2ludDMyXCI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInNpbnQzMlwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLlZBUklOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiaW50NjRcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiaW50NjRcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5WQVJJTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInVpbnQ2NFwiOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJ1aW50NjRcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5WQVJJTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcInNpbnQ2NFwiOiB7XG4gICAgICAgICAgICAgICAgbmFtZTogXCJzaW50NjRcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5WQVJJTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImJvb2xcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiYm9vbFwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLlZBUklOVFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZG91YmxlXCI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImRvdWJsZVwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLkJJVFM2NFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic3RyaW5nXCI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLkxERUxJTVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiYnl0ZXNcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiYnl0ZXNcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5MREVMSU1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImZpeGVkMzJcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiZml4ZWQzMlwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLkJJVFMzMlxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2ZpeGVkMzJcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic2ZpeGVkMzJcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5CSVRTMzJcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImZpeGVkNjRcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiZml4ZWQ2NFwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLkJJVFM2NFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwic2ZpeGVkNjRcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwic2ZpeGVkNjRcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5CSVRTNjRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcImZsb2F0XCI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImZsb2F0XCIsXG4gICAgICAgICAgICAgICAgd2lyZVR5cGU6IFByb3RvQnVmLldJUkVfVFlQRVMuQklUUzMyXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgXCJlbnVtXCI6IHtcbiAgICAgICAgICAgICAgICBuYW1lOiBcImVudW1cIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5WQVJJTlRcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBcIm1lc3NhZ2VcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwibWVzc2FnZVwiLFxuICAgICAgICAgICAgICAgIHdpcmVUeXBlOiBQcm90b0J1Zi5XSVJFX1RZUEVTLkxERUxJTVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFwiZ3JvdXBcIjoge1xuICAgICAgICAgICAgICAgIG5hbWU6IFwiZ3JvdXBcIixcbiAgICAgICAgICAgICAgICB3aXJlVHlwZTogUHJvdG9CdWYuV0lSRV9UWVBFUy5TVEFSVEdST1VQXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1pbmltdW0gZmllbGQgaWQuXG4gICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAqIEBjb25zdFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5JRF9NSU4gPSAxO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXhpbXVtIGZpZWxkIGlkLlxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuSURfTUFYID0gMHgxRkZGRkZGRjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQHR5cGUgeyFmdW5jdGlvbihuZXc6IEJ5dGVCdWZmZXIsIC4uLlsqXSl9XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLkJ5dGVCdWZmZXIgPSBCeXRlQnVmZmVyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAdHlwZSB7P2Z1bmN0aW9uKG5ldzogTG9uZywgLi4uWypdKX1cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuTG9uZyA9IEJ5dGVCdWZmZXIuTG9uZyB8fCBudWxsO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJZiBzZXQgdG8gYHRydWVgLCBmaWVsZCBuYW1lcyB3aWxsIGJlIGNvbnZlcnRlZCBmcm9tIHVuZGVyc2NvcmUgbm90YXRpb24gdG8gY2FtZWwgY2FzZS4gRGVmYXVsdHMgdG8gYGZhbHNlYC5cbiAgICAgICAgICogIE11c3QgYmUgc2V0IHByaW9yIHRvIHBhcnNpbmcuXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5jb252ZXJ0RmllbGRzVG9DYW1lbENhc2UgPSBmYWxzZTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQnkgZGVmYXVsdCwgbWVzc2FnZXMgYXJlIHBvcHVsYXRlZCB3aXRoIChzZXRYLCBzZXRfeCkgYWNjZXNzb3JzIGZvciBlYWNoIGZpZWxkLiBUaGlzIGNhbiBiZSBkaXNhYmxlZCBieVxuICAgICAgICAgKiAgc2V0dGluZyB0aGlzIHRvIGBmYWxzZWAgcHJpb3IgdG8gYnVpbGRpbmcgbWVzc2FnZXMuXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5wb3B1bGF0ZUFjY2Vzc29ycyA9IHRydWU7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5VdGlsXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLlV0aWwgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgICAgICAgLy8gT2JqZWN0LmNyZWF0ZSBwb2x5ZmlsbFxuICAgICAgICAgICAgLy8gcmVmOiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kZS9kb2NzL0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9jcmVhdGVcbiAgICAgICAgICAgIGlmICghT2JqZWN0LmNyZWF0ZSlcbiAgICAgICAgICAgICAgICAvKiogQGV4cG9zZSAqL1xuICAgICAgICAgICAgICAgIE9iamVjdC5jcmVhdGUgPSBmdW5jdGlvbiAobykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignT2JqZWN0LmNyZWF0ZSBwb2x5ZmlsbCBvbmx5IGFjY2VwdHMgdGhlIGZpcnN0IHBhcmFtZXRlci4nKTtcbiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gRigpIHt9XG4gICAgICAgICAgICAgICAgICAgIEYucHJvdG90eXBlID0gbztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGKCk7XG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQcm90b0J1ZiB1dGlsaXRpZXMuXG4gICAgICAgICAgICAgKiBAZXhwb3J0cyBQcm90b0J1Zi5VdGlsXG4gICAgICAgICAgICAgKiBAbmFtZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBVdGlsID0ge307XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRmxhZyBpZiBydW5uaW5nIGluIG5vZGUgKGZzIGlzIGF2YWlsYWJsZSkgb3Igbm90LlxuICAgICAgICAgICAgICogQHR5cGUge2Jvb2xlYW59XG4gICAgICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgVXRpbC5JU19OT0RFID0gZmFsc2U7XG4gICAgICAgICAgICBcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29uc3RydWN0cyBhIFhNTEh0dHBSZXF1ZXN0IG9iamVjdC5cbiAgICAgICAgICAgICAqIEByZXR1cm4ge1hNTEh0dHBSZXF1ZXN0fVxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIFhNTEh0dHBSZXF1ZXN0IGlzIG5vdCBzdXBwb3J0ZWRcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgVXRpbC5YSFIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAvLyBObyBkZXBlbmRlbmNpZXMgcGxlYXNlLCByZWY6IGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvanMveG1saHR0cC5odG1sXG4gICAgICAgICAgICAgICAgdmFyIFhNTEh0dHBGYWN0b3JpZXMgPSBbXG4gICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHtyZXR1cm4gbmV3IFhNTEh0dHBSZXF1ZXN0KCl9LFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIil9LFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTXN4bWwzLlhNTEhUVFBcIil9LFxuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7cmV0dXJuIG5ldyBBY3RpdmVYT2JqZWN0KFwiTWljcm9zb2Z0LlhNTEhUVFBcIil9XG4gICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICAvKiogQHR5cGUgez9YTUxIdHRwUmVxdWVzdH0gKi9cbiAgICAgICAgICAgICAgICB2YXIgeGhyID0gbnVsbDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxYTUxIdHRwRmFjdG9yaWVzLmxlbmd0aDtpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgeGhyID0gWE1MSHR0cEZhY3Rvcmllc1tpXSgpOyB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlKSB7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXhocilcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJYTUxIdHRwUmVxdWVzdCBpcyBub3Qgc3VwcG9ydGVkXCIpO1xuICAgICAgICAgICAgICAgIHJldHVybiB4aHI7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEZldGNoZXMgYSByZXNvdXJjZS5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFJlc291cmNlIHBhdGhcbiAgICAgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP3N0cmluZyk9fSBjYWxsYmFjayBDYWxsYmFjayByZWNlaXZpbmcgdGhlIHJlc291cmNlJ3MgY29udGVudHMuIElmIG9taXR0ZWQgdGhlIHJlc291cmNlIHdpbGxcbiAgICAgICAgICAgICAqICAgYmUgZmV0Y2hlZCBzeW5jaHJvbm91c2x5LiBJZiB0aGUgcmVxdWVzdCBmYWlsZWQsIGNvbnRlbnRzIHdpbGwgYmUgbnVsbC5cbiAgICAgICAgICAgICAqIEByZXR1cm4gez9zdHJpbmd8dW5kZWZpbmVkfSBSZXNvdXJjZSBjb250ZW50cyBpZiBjYWxsYmFjayBpcyBvbWl0dGVkIChudWxsIGlmIHRoZSByZXF1ZXN0IGZhaWxlZCksIGVsc2UgdW5kZWZpbmVkLlxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBVdGlsLmZldGNoID0gZnVuY3Rpb24ocGF0aCwgY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2sgJiYgdHlwZW9mIGNhbGxiYWNrICE9ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAoVXRpbC5JU19OT0RFKSB7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHhociA9IFV0aWwuWEhSKCk7XG4gICAgICAgICAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCBwYXRoLCBjYWxsYmFjayA/IHRydWUgOiBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIC8vIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdVc2VyLUFnZW50JywgJ1hNTEhUVFAvMS4wJyk7XG4gICAgICAgICAgICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAndGV4dC9wbGFpbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHhoci5vdmVycmlkZU1pbWVUeXBlID09PSAnZnVuY3Rpb24nKSB4aHIub3ZlcnJpZGVNaW1lVHlwZSgndGV4dC9wbGFpbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgIT0gNCkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvKiByZW1vdGUgKi8geGhyLnN0YXR1cyA9PSAyMDAgfHwgLyogbG9jYWwgKi8gKHhoci5zdGF0dXMgPT0gMCAmJiB0eXBlb2YgeGhyLnJlc3BvbnNlVGV4dCA9PT0gJ3N0cmluZycpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayh4aHIucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PSA0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHhoci5zZW5kKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgeGhyLnNlbmQobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoLyogcmVtb3RlICovIHhoci5zdGF0dXMgPT0gMjAwIHx8IC8qIGxvY2FsICovICh4aHIuc3RhdHVzID09IDAgJiYgdHlwZW9mIHhoci5yZXNwb25zZVRleHQgPT09ICdzdHJpbmcnKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geGhyLnJlc3BvbnNlVGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXN0cyBpZiBhbiBvYmplY3QgaXMgYW4gYXJyYXkuXG4gICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAqIEBwYXJhbSB7Kn0gb2JqIE9iamVjdCB0byB0ZXN0XG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gdHJ1ZSBpZiBpdCBpcyBhbiBhcnJheSwgZWxzZSBmYWxzZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBVdGlsLmlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uKG9iaikge1xuICAgICAgICAgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IEFycmF5XVwiO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIFV0aWw7XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIExhbmd1YWdlIGV4cHJlc3Npb25zLlxuICAgICAgICAgKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLHN0cmluZ3whUmVnRXhwPn1cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYuTGFuZyA9IHtcbiAgICAgICAgICAgIE9QRU46IFwie1wiLFxuICAgICAgICAgICAgQ0xPU0U6IFwifVwiLFxuICAgICAgICAgICAgT1BUT1BFTjogXCJbXCIsXG4gICAgICAgICAgICBPUFRDTE9TRTogXCJdXCIsXG4gICAgICAgICAgICBPUFRFTkQ6IFwiLFwiLFxuICAgICAgICAgICAgRVFVQUw6IFwiPVwiLFxuICAgICAgICAgICAgRU5EOiBcIjtcIixcbiAgICAgICAgICAgIFNUUklOR09QRU46ICdcIicsXG4gICAgICAgICAgICBTVFJJTkdDTE9TRTogJ1wiJyxcbiAgICAgICAgICAgIFNUUklOR09QRU5fU1E6IFwiJ1wiLFxuICAgICAgICAgICAgU1RSSU5HQ0xPU0VfU1E6IFwiJ1wiLFxuICAgICAgICAgICAgQ09QVE9QRU46ICcoJyxcbiAgICAgICAgICAgIENPUFRDTE9TRTogJyknLFxuICAgICAgICAgICAgREVMSU06IC9bXFxzXFx7XFx9PTtcXFtcXF0sJ1wiXFwoXFwpXS9nLFxuICAgICAgICAgICAgLy8gS0VZV09SRDogL14oPzpwYWNrYWdlfG9wdGlvbnxpbXBvcnR8bWVzc2FnZXxlbnVtfGV4dGVuZHxzZXJ2aWNlfHN5bnRheHxleHRlbnNpb25zfGdyb3VwKSQvLFxuICAgICAgICAgICAgUlVMRTogL14oPzpyZXF1aXJlZHxvcHRpb25hbHxyZXBlYXRlZCkkLyxcbiAgICAgICAgICAgIFRZUEU6IC9eKD86ZG91YmxlfGZsb2F0fGludDMyfHVpbnQzMnxzaW50MzJ8aW50NjR8dWludDY0fHNpbnQ2NHxmaXhlZDMyfHNmaXhlZDMyfGZpeGVkNjR8c2ZpeGVkNjR8Ym9vbHxzdHJpbmd8Ynl0ZXMpJC8sXG4gICAgICAgICAgICBOQU1FOiAvXlthLXpBLVpfXVthLXpBLVpfMC05XSokLyxcbiAgICAgICAgICAgIFRZUEVERUY6IC9eW2EtekEtWl1bYS16QS1aXzAtOV0qJC8sXG4gICAgICAgICAgICBUWVBFUkVGOiAvXig/OlxcLj9bYS16QS1aX11bYS16QS1aXzAtOV0qKSskLyxcbiAgICAgICAgICAgIEZRVFlQRVJFRjogL14oPzpcXC5bYS16QS1aXVthLXpBLVpfMC05XSopKyQvLFxuICAgICAgICAgICAgTlVNQkVSOiAvXi0/KD86WzEtOV1bMC05XSp8MHwweFswLTlhLWZBLUZdK3wwWzAtN10rfChbMC05XSpcXC5bMC05XSsoW0VlXVsrLV0/WzAtOV0rKT8pKSQvLFxuICAgICAgICAgICAgTlVNQkVSX0RFQzogL14oPzpbMS05XVswLTldKnwwKSQvLFxuICAgICAgICAgICAgTlVNQkVSX0hFWDogL14weFswLTlhLWZBLUZdKyQvLFxuICAgICAgICAgICAgTlVNQkVSX09DVDogL14wWzAtN10rJC8sXG4gICAgICAgICAgICBOVU1CRVJfRkxUOiAvXlswLTldKlxcLlswLTldKyhbRWVdWystXT9bMC05XSspPyQvLFxuICAgICAgICAgICAgSUQ6IC9eKD86WzEtOV1bMC05XSp8MHwweFswLTlhLWZBLUZdK3wwWzAtN10rKSQvLFxuICAgICAgICAgICAgTkVHSUQ6IC9eXFwtPyg/OlsxLTldWzAtOV0qfDB8MHhbMC05YS1mQS1GXSt8MFswLTddKykkLyxcbiAgICAgICAgICAgIFdISVRFU1BBQ0U6IC9cXHMvLFxuICAgICAgICAgICAgU1RSSU5HOiAvKD86XCIoW15cIlxcXFxdKig/OlxcXFwuW15cIlxcXFxdKikqKVwiKXwoPzonKFteJ1xcXFxdKig/OlxcXFwuW14nXFxcXF0qKSopJykvZyxcbiAgICAgICAgICAgIEJPT0w6IC9eKD86dHJ1ZXxmYWxzZSkkL2lcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLkRvdFByb3RvXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLkRvdFByb3RvID0gKGZ1bmN0aW9uKFByb3RvQnVmLCBMYW5nKSB7XG4gICAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBVdGlsaXRpZXMgdG8gcGFyc2UgLnByb3RvIGZpbGVzLlxuICAgICAgICAgICAgICogQGV4cG9ydHMgUHJvdG9CdWYuRG90UHJvdG9cbiAgICAgICAgICAgICAqIEBuYW1lc3BhY2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIERvdFByb3RvID0ge307XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29uc3RydWN0cyBhIG5ldyBUb2tlbml6ZXIuXG4gICAgICAgICAgICAgKiBAZXhwb3J0cyBQcm90b0J1Zi5Eb3RQcm90by5Ub2tlbml6ZXJcbiAgICAgICAgICAgICAqIEBjbGFzcyBwcm90b3R5cGUgdG9rZW5pemVyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvdG8gUHJvdG8gdG8gdG9rZW5pemVcbiAgICAgICAgICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgVG9rZW5pemVyID0gZnVuY3Rpb24ocHJvdG8pIHtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFNvdXJjZSB0byBwYXJzZS5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZSA9IFwiXCIrcHJvdG87IC8vIEluIGNhc2UgaXQncyBhIGJ1ZmZlclxuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQ3VycmVudCBpbmRleC5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gMDtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEN1cnJlbnQgbGluZS5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmxpbmUgPSAxO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogU3RhY2tlZCB2YWx1ZXMuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge0FycmF5fVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrID0gW107XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBXaGV0aGVyIGN1cnJlbnRseSByZWFkaW5nIGEgc3RyaW5nIG9yIG5vdC5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5yZWFkaW5nU3RyaW5nID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBXaGF0ZXZlciBjaGFyYWN0ZXIgZW5kcyB0aGUgc3RyaW5nLiBFaXRoZXIgYSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlIGNoYXJhY3Rlci5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLnN0cmluZ0VuZHNXaXRoID0gTGFuZy5TVFJJTkdDTE9TRTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLkRvdFByb3RvLlRva2VuaXplci5wcm90b3R5cGVcbiAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgVG9rZW5pemVyUHJvdG90eXBlID0gVG9rZW5pemVyLnByb3RvdHlwZTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZWFkcyBhIHN0cmluZyBiZWdpbm5pbmcgYXQgdGhlIGN1cnJlbnQgaW5kZXguXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBzdHJpbmdcbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCdzIG5vdCBhIHZhbGlkIHN0cmluZ1xuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgVG9rZW5pemVyUHJvdG90eXBlLl9yZWFkU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgTGFuZy5TVFJJTkcubGFzdEluZGV4ID0gdGhpcy5pbmRleC0xOyAvLyBJbmNsdWRlIHRoZSBvcGVuIHF1b3RlXG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoO1xuICAgICAgICAgICAgICAgIGlmICgobWF0Y2ggPSBMYW5nLlNUUklORy5leGVjKHRoaXMuc291cmNlKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHMgPSB0eXBlb2YgbWF0Y2hbMV0gIT09ICd1bmRlZmluZWQnID8gbWF0Y2hbMV0gOiBtYXRjaFsyXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IExhbmcuU1RSSU5HLmxhc3RJbmRleDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRoaXMuc3RyaW5nRW5kc1dpdGgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGF0IGxpbmUgXCIrdGhpcy5saW5lK1wiLCBpbmRleCBcIit0aGlzLmluZGV4KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogR2V0cyB0aGUgbmV4dCB0b2tlbiBhbmQgYWR2YW5jZXMgYnkgb25lLlxuICAgICAgICAgICAgICogQHJldHVybiB7P3N0cmluZ30gVG9rZW4gb3IgYG51bGxgIG9uIEVPRlxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIGl0J3Mgbm90IGEgdmFsaWQgcHJvdG8gZmlsZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBUb2tlbml6ZXJQcm90b3R5cGUubmV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YWNrLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN0YWNrLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPj0gdGhpcy5zb3VyY2UubGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsgLy8gTm8gbW9yZSB0b2tlbnNcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWFkaW5nU3RyaW5nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZGluZ1N0cmluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fcmVhZFN0cmluZygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgcmVwZWF0LCBsYXN0O1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgcmVwZWF0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIC8vIFN0cmlwIHdoaXRlIHNwYWNlc1xuICAgICAgICAgICAgICAgICAgICB3aGlsZSAoTGFuZy5XSElURVNQQUNFLnRlc3QobGFzdCA9IHRoaXMuc291cmNlLmNoYXJBdCh0aGlzLmluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5kZXgrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0ID09PSBcIlxcblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGluZSsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IHRoaXMuc291cmNlLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBTdHJpcCBjb21tZW50c1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zb3VyY2UuY2hhckF0KHRoaXMuaW5kZXgpID09PSAnLycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNvdXJjZS5jaGFyQXQoKyt0aGlzLmluZGV4KSA9PT0gJy8nKSB7IC8vIFNpbmdsZSBsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRoaXMuc291cmNlLmNoYXJBdCh0aGlzLmluZGV4KSAhPT0gXCJcXG5cIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4ID09IHRoaXMuc291cmNlLmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5lKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3VyY2UuY2hhckF0KHRoaXMuaW5kZXgpID09PSAnKicpIHsgLyogQmxvY2sgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGxhc3QrKGxhc3Q9dGhpcy5zb3VyY2UuY2hhckF0KHRoaXMuaW5kZXgpKSAhPT0gJyovJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluZGV4Kys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0ID09PSBcIlxcblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5saW5lKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmluZGV4ID09PSB0aGlzLnNvdXJjZS5sZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCsrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGVhdCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIlVudGVybWluYXRlZCBjb21tZW50IGF0IGxpbmUgXCIrdGhpcy5saW5lK1wiOiAvXCIrdGhpcy5zb3VyY2UuY2hhckF0KHRoaXMuaW5kZXgpKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHJlcGVhdCk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IHRoaXMuc291cmNlLmxlbmd0aCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSBuZXh0IHRva2VuXG4gICAgICAgICAgICAgICAgdmFyIGVuZCA9IHRoaXMuaW5kZXg7XG4gICAgICAgICAgICAgICAgTGFuZy5ERUxJTS5sYXN0SW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIHZhciBkZWxpbSA9IExhbmcuREVMSU0udGVzdCh0aGlzLnNvdXJjZS5jaGFyQXQoZW5kKSk7XG4gICAgICAgICAgICAgICAgaWYgKCFkZWxpbSkge1xuICAgICAgICAgICAgICAgICAgICArK2VuZDtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUoZW5kIDwgdGhpcy5zb3VyY2UubGVuZ3RoICYmICFMYW5nLkRFTElNLnRlc3QodGhpcy5zb3VyY2UuY2hhckF0KGVuZCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgZW5kKys7XG4gICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICsrZW5kO1xuICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMuc291cmNlLnN1YnN0cmluZyh0aGlzLmluZGV4LCB0aGlzLmluZGV4ID0gZW5kKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IExhbmcuU1RSSU5HT1BFTilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkaW5nU3RyaW5nID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHJpbmdFbmRzV2l0aCA9IExhbmcuU1RSSU5HQ0xPU0U7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPT09IExhbmcuU1RSSU5HT1BFTl9TUSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkaW5nU3RyaW5nID0gdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdHJpbmdFbmRzV2l0aCA9IExhbmcuU1RSSU5HQ0xPU0VfU1E7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQZWVrcyBmb3IgdGhlIG5leHQgdG9rZW4uXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBUb2tlbiBvciBgbnVsbGAgb24gRU9GXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQncyBub3QgYSB2YWxpZCBwcm90byBmaWxlXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFRva2VuaXplclByb3RvdHlwZS5wZWVrID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciB0b2tlbiA9IHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFjay5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2tbMF07XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBvZiBcIlRva2VuaXplcihpbmRleC9sZW5ndGgpXCJcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgVG9rZW5pemVyUHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiVG9rZW5pemVyKFwiK3RoaXMuaW5kZXgrXCIvXCIrdGhpcy5zb3VyY2UubGVuZ3RoK1wiIGF0IGxpbmUgXCIrdGhpcy5saW5lK1wiKVwiO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuRG90UHJvdG8uVG9rZW5pemVyXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIERvdFByb3RvLlRva2VuaXplciA9IFRva2VuaXplcjtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IFBhcnNlci5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLkRvdFByb3RvLlBhcnNlclxuICAgICAgICAgICAgICogQGNsYXNzIHByb3RvdHlwZSBwYXJzZXJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBwcm90byBQcm90b2NvbCBzb3VyY2VcbiAgICAgICAgICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgUGFyc2VyID0gZnVuY3Rpb24ocHJvdG8pIHtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFRva2VuaXplci5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7UHJvdG9CdWYuRG90UHJvdG8uVG9rZW5pemVyfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLnRuID0gbmV3IFRva2VuaXplcihwcm90byk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5Eb3RQcm90by5QYXJzZXIucHJvdG90eXBlXG4gICAgICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIFBhcnNlclByb3RvdHlwZSA9IFBhcnNlci5wcm90b3R5cGU7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUnVucyB0aGUgcGFyc2VyLlxuICAgICAgICAgICAgICogQHJldHVybiB7e3BhY2thZ2U6IHN0cmluZ3xudWxsLCBtZXNzYWdlczogQXJyYXkuPG9iamVjdD4sIGVudW1zOiBBcnJheS48b2JqZWN0PiwgaW1wb3J0czogQXJyYXkuPHN0cmluZz4sIG9wdGlvbnM6IG9iamVjdDxzdHJpbmcsKj59fVxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzb3VyY2UgY2Fubm90IGJlIHBhcnNlZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdG9wTGV2ZWwgPSB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIltST09UXVwiLCAvLyB0ZW1wb3JhcnlcbiAgICAgICAgICAgICAgICAgICAgXCJwYWNrYWdlXCI6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICAgICAgICAgIFwiZW51bXNcIjogW10sXG4gICAgICAgICAgICAgICAgICAgIFwiaW1wb3J0c1wiOiBbXSxcbiAgICAgICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgICAgICBcInNlcnZpY2VzXCI6IFtdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB2YXIgdG9rZW4sIGhlYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHdoaWxlKHRva2VuID0gdGhpcy50bi5uZXh0KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncGFja2FnZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFoZWFkIHx8IHRvcExldmVsW1wicGFja2FnZVwiXSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIHBhY2thZ2UgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcExldmVsW1wicGFja2FnZVwiXSA9IHRoaXMuX3BhcnNlUGFja2FnZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpbXBvcnQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVhZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIGltcG9ydCBhdCBsaW5lIFwiK3RoaXMudG4ubGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wTGV2ZWwuaW1wb3J0cy5wdXNoKHRoaXMuX3BhcnNlSW1wb3J0KHRva2VuKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtZXNzYWdlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU1lc3NhZ2UodG9wTGV2ZWwsIG51bGwsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbnVtJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUVudW0odG9wTGV2ZWwsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaGVhZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIG9wdGlvbiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VPcHRpb24odG9wTGV2ZWwsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NlcnZpY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlU2VydmljZSh0b3BMZXZlbCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZXh0ZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUV4dGVuZCh0b3BMZXZlbCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3ludGF4JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUlnbm9yZWRTdGF0ZW1lbnQodG9wTGV2ZWwsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbmV4cGVjdGVkIHRva2VuIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRvcExldmVsW1wibmFtZVwiXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdG9wTGV2ZWw7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhcnNlcyBhIG51bWJlciB2YWx1ZS5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YWwgTnVtYmVyIHZhbHVlIHRvIHBhcnNlXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtudW1iZXJ9IE51bWJlclxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBudW1iZXIgdmFsdWUgaXMgaW52YWxpZFxuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLl9wYXJzZU51bWJlciA9IGZ1bmN0aW9uKHZhbCkge1xuICAgICAgICAgICAgICAgIHZhciBzaWduID0gMTtcbiAgICAgICAgICAgICAgICBpZiAodmFsLmNoYXJBdCgwKSA9PSAnLScpXG4gICAgICAgICAgICAgICAgICAgIHNpZ24gPSAtMSxcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgICAgICBpZiAoTGFuZy5OVU1CRVJfREVDLnRlc3QodmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24qcGFyc2VJbnQodmFsLCAxMCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoTGFuZy5OVU1CRVJfSEVYLnRlc3QodmFsKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNpZ24qcGFyc2VJbnQodmFsLnN1YnN0cmluZygyKSwgMTYpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKExhbmcuTlVNQkVSX09DVC50ZXN0KHZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaWduKnBhcnNlSW50KHZhbC5zdWJzdHJpbmcoMSksIDgpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKExhbmcuTlVNQkVSX0ZMVC50ZXN0KHZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzaWduKnBhcnNlRmxvYXQodmFsKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgbnVtYmVyIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIisoc2lnbiA8IDAgPyAnLScgOiAnJykrdmFsKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGEgKHBvc3NpYmx5IG11bHRpbGluZSkgc3RyaW5nLlxuICAgICAgICAgICAgICogQHJldHVybnMge3N0cmluZ31cbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFBhcnNlclByb3RvdHlwZS5fcGFyc2VTdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBcIlwiLCB0b2tlbjtcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7IC8vIEtub3duIHRvIGJlID0gdGhpcy50bi5zdHJpbmdFbmRzV2l0aFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSB0aGlzLnRuLnN0cmluZ0VuZHNXaXRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGVuZCBvZiBzdHJpbmcgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLnBlZWsoKTtcbiAgICAgICAgICAgICAgICB9IHdoaWxlICh0b2tlbiA9PT0gTGFuZy5TVFJJTkdPUEVOIHx8IHRva2VuID09PSBMYW5nLlNUUklOR09QRU5fU1EpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGFuIElEIHZhbHVlLlxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhbCBJRCB2YWx1ZSB0byBwYXJzZVxuICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbmVnIFdoZXRoZXIgdGhlIElEIG1heSBiZSBuZWdhdGl2ZSwgZGVmYXVsdHMgdG8gYGZhbHNlYFxuICAgICAgICAgICAgICogQHJldHVybnMge251bWJlcn0gSURcbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgSUQgdmFsdWUgaXMgaW52YWxpZFxuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLl9wYXJzZUlkID0gZnVuY3Rpb24odmFsLCBuZWcpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSAtMTtcbiAgICAgICAgICAgICAgICB2YXIgc2lnbiA9IDE7XG4gICAgICAgICAgICAgICAgaWYgKHZhbC5jaGFyQXQoMCkgPT0gJy0nKVxuICAgICAgICAgICAgICAgICAgICBzaWduID0gLTEsXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5zdWJzdHJpbmcoMSk7XG4gICAgICAgICAgICAgICAgaWYgKExhbmcuTlVNQkVSX0RFQy50ZXN0KHZhbCkpXG4gICAgICAgICAgICAgICAgICAgIGlkID0gcGFyc2VJbnQodmFsKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChMYW5nLk5VTUJFUl9IRVgudGVzdCh2YWwpKVxuICAgICAgICAgICAgICAgICAgICBpZCA9IHBhcnNlSW50KHZhbC5zdWJzdHJpbmcoMiksIDE2KTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChMYW5nLk5VTUJFUl9PQ1QudGVzdCh2YWwpKVxuICAgICAgICAgICAgICAgICAgICBpZCA9IHBhcnNlSW50KHZhbC5zdWJzdHJpbmcoMSksIDgpO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGlkIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIisoc2lnbiA8IDAgPyAnLScgOiAnJykrdmFsKTtcbiAgICAgICAgICAgICAgICBpZCA9IChzaWduKmlkKXwwOyAvLyBGb3JjZSB0byAzMmJpdFxuICAgICAgICAgICAgICAgIGlmICghbmVnICYmIGlkIDwgMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGlkIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIisoc2lnbiA8IDAgPyAnLScgOiAnJykrdmFsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaWQ7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhcnNlcyB0aGUgcGFja2FnZSBkZWZpbml0aW9uLlxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gUGFja2FnZSBuYW1lXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHBhY2thZ2UgZGVmaW5pdGlvbiBjYW5ub3QgYmUgcGFyc2VkXG4gICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUuX3BhcnNlUGFja2FnZSA9IGZ1bmN0aW9uKHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUxhbmcuVFlQRVJFRi50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHBhY2thZ2UgbmFtZSBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIHZhciBwa2cgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPSBMYW5nLkVORClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGVuZCBvZiBwYWNrYWdlIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBrZztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGFuIGltcG9ydCBkZWZpbml0aW9uLlxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gSW1wb3J0IGZpbGUgbmFtZVxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBpbXBvcnQgZGVmaW5pdGlvbiBjYW5ub3QgYmUgcGFyc2VkXG4gICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUuX3BhcnNlSW1wb3J0ID0gZnVuY3Rpb24odG9rZW4pIHtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ucGVlaygpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gXCJwdWJsaWNcIilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50bi5uZXh0KCksXG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5wZWVrKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBMYW5nLlNUUklOR09QRU4gJiYgdG9rZW4gIT09IExhbmcuU1RSSU5HT1BFTl9TUSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHN0YXJ0IG9mIGltcG9ydCBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIHZhciBpbXBvcnRlZCA9IHRoaXMuX3BhcnNlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IExhbmcuRU5EKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgZW5kIG9mIGltcG9ydCBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiBpbXBvcnRlZDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGEgbmFtZXNwYWNlIG9wdGlvbi5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJlbnQgUGFyZW50IGRlZmluaXRpb25cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBJbml0aWFsIHRva2VuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG9wdGlvbiBjYW5ub3QgYmUgcGFyc2VkXG4gICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUuX3BhcnNlT3B0aW9uID0gZnVuY3Rpb24ocGFyZW50LCB0b2tlbikge1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgdmFyIGN1c3RvbSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBMYW5nLkNPUFRPUEVOKVxuICAgICAgICAgICAgICAgICAgICBjdXN0b20gPSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICghTGFuZy5UWVBFUkVGLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gYWxsb3cgb3B0aW9ucyBvZiB0aGUgZm9ybSBnb29nbGUucHJvdG9idWYuKiBzaW5jZSB0aGV5IHdpbGwganVzdCBnZXQgaWdub3JlZCBhbnl3YXlzXG4gICAgICAgICAgICAgICAgICAgIGlmICghL2dvb2dsZVxcLnByb3RvYnVmXFwuLy50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBvcHRpb24gbmFtZSBpbiBtZXNzYWdlIFwiK3BhcmVudC5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b20pIHsgLy8gKG15X21ldGhvZF9vcHRpb24pLmZvbywgKG15X21ldGhvZF9vcHRpb24pLCBzb21lX21ldGhvZF9vcHRpb24sIChmb28ubXlfb3B0aW9uKS5iYXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBMYW5nLkNPUFRDTE9TRSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBlbmQgaW4gbWVzc2FnZSBcIitwYXJlbnQubmFtZStcIiwgb3B0aW9uIFwiK25hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICcoJytuYW1lKycpJztcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKExhbmcuRlFUWVBFUkVGLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSB0b2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5FUVVBTClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIG9wZXJhdG9yIGluIG1lc3NhZ2UgXCIrcGFyZW50Lm5hbWUrXCIsIG9wdGlvbiBcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5wZWVrKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBMYW5nLlNUUklOR09QRU4gfHwgdG9rZW4gPT09IExhbmcuU1RSSU5HT1BFTl9TUSlcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9wYXJzZVN0cmluZygpO1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKExhbmcuTlVNQkVSLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9wYXJzZU51bWJlcih0b2tlbiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKExhbmcuQk9PTC50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdG9rZW4gPT09ICd0cnVlJztcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoTGFuZy5UWVBFUkVGLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIG9wdGlvbiB2YWx1ZSBpbiBtZXNzYWdlIFwiK3BhcmVudC5uYW1lK1wiLCBvcHRpb24gXCIrbmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5FTkQpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBlbmQgb2Ygb3B0aW9uIGluIG1lc3NhZ2UgXCIrcGFyZW50Lm5hbWUrXCIsIG9wdGlvbiBcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgcGFyZW50W1wib3B0aW9uc1wiXVtuYW1lXSA9IHZhbHVlO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYXJzZXMgYW4gaWdub3JlZCBzdGF0ZW1lbnQgb2YgdGhlIGZvcm0gWydrZXl3b3JkJywgLi4uLCAnOyddLlxuICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IHBhcmVudCBQYXJlbnQgZGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleXdvcmQgSW5pdGlhbCB0b2tlblxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBkaXJlY3RpdmUgY2Fubm90IGJlIHBhcnNlZFxuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLl9wYXJzZUlnbm9yZWRTdGF0ZW1lbnQgPSBmdW5jdGlvbihwYXJlbnQsIGtleXdvcmQpIHtcbiAgICAgICAgICAgICAgICB2YXIgdG9rZW47XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIlVuZXhwZWN0ZWQgRU9GIGluIFwiK3BhcmVudC5uYW1lK1wiLCBcIitrZXl3b3JkK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBMYW5nLkVORClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYXJzZXMgYSBzZXJ2aWNlIGRlZmluaXRpb24uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gcGFyZW50IFBhcmVudCBkZWZpbml0aW9uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gSW5pdGlhbCB0b2tlblxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzZXJ2aWNlIGNhbm5vdCBiZSBwYXJzZWRcbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFBhcnNlclByb3RvdHlwZS5fcGFyc2VTZXJ2aWNlID0gZnVuY3Rpb24ocGFyZW50LCB0b2tlbikge1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFMYW5nLk5BTUUudGVzdCh0b2tlbikpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBzZXJ2aWNlIG5hbWUgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IHRva2VuO1xuICAgICAgICAgICAgICAgIHZhciBzdmMgPSB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBcInJwY1wiOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5PUEVOKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgc3RhcnQgb2Ygc2VydmljZSBcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IFwib3B0aW9uXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU9wdGlvbihzdmMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPT09ICdycGMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VTZXJ2aWNlUlBDKHN2YywgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbiAhPT0gTGFuZy5DTE9TRSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB0eXBlIG9mIHNlcnZpY2UgXCIrbmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRva2VuICE9PSBMYW5nLkNMT1NFKTtcbiAgICAgICAgICAgICAgICBwYXJlbnRbXCJzZXJ2aWNlc1wiXS5wdXNoKHN2Yyk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhcnNlcyBhIFJQQyBzZXJ2aWNlIGRlZmluaXRpb24gb2YgdGhlIGZvcm0gWydycGMnLCBuYW1lLCAocmVxdWVzdCksICdyZXR1cm5zJywgKHJlc3BvbnNlKV0uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gc3ZjIFBhcmVudCBkZWZpbml0aW9uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gSW5pdGlhbCB0b2tlblxuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLl9wYXJzZVNlcnZpY2VSUEMgPSBmdW5jdGlvbihzdmMsIHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdmFyIHR5cGUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICghTGFuZy5OQU1FLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgbWV0aG9kIG5hbWUgaW4gc2VydmljZSBcIitzdmNbXCJuYW1lXCJdK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB2YXIgbWV0aG9kID0ge1xuICAgICAgICAgICAgICAgICAgICBcInJlcXVlc3RcIjogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgXCJyZXNwb25zZVwiOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge31cbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBMYW5nLkNPUFRPUEVOKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgc3RhcnQgb2YgcmVxdWVzdCB0eXBlIGluIHNlcnZpY2UgXCIrc3ZjW1wibmFtZVwiXStcIiNcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUxhbmcuVFlQRVJFRi50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHJlcXVlc3QgdHlwZSBpbiBzZXJ2aWNlIFwiK3N2Y1tcIm5hbWVcIl0rXCIjXCIrbmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIG1ldGhvZFtcInJlcXVlc3RcIl0gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPSBMYW5nLkNPUFRDTE9TRSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGVuZCBvZiByZXF1ZXN0IHR5cGUgaW4gc2VydmljZSBcIitzdmNbXCJuYW1lXCJdK1wiI1wiK25hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi50b0xvd2VyQ2FzZSgpICE9PSBcInJldHVybnNcIilcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGRlbGltaXRlciBpbiBzZXJ2aWNlIFwiK3N2Y1tcIm5hbWVcIl0rXCIjXCIrbmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuICE9IExhbmcuQ09QVE9QRU4pXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBzdGFydCBvZiByZXNwb25zZSB0eXBlIGluIHNlcnZpY2UgXCIrc3ZjW1wibmFtZVwiXStcIiNcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBtZXRob2RbXCJyZXNwb25zZVwiXSA9IHRva2VuO1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBMYW5nLkNPUFRDTE9TRSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGVuZCBvZiByZXNwb25zZSB0eXBlIGluIHNlcnZpY2UgXCIrc3ZjW1wibmFtZVwiXStcIiNcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IExhbmcuT1BFTikge1xuICAgICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSAnb3B0aW9uJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU9wdGlvbihtZXRob2QsIHRva2VuKTsgLy8gPC0gd2lsbCBmYWlsIGZvciB0aGUgY3VzdG9tLW9wdGlvbnMgZXhhbXBsZVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gIT09IExhbmcuQ0xPU0UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHN0YXJ0IG9mIG9wdGlvbiBpbnNlcnZpY2UgXCIrc3ZjW1wibmFtZVwiXStcIiNcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRva2VuICE9PSBMYW5nLkNMT1NFKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG4ucGVlaygpID09PSBMYW5nLkVORClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodG9rZW4gIT09IExhbmcuRU5EKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgZGVsaW1pdGVyIGluIHNlcnZpY2UgXCIrc3ZjW1wibmFtZVwiXStcIiNcIituYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdmNbdHlwZV0gPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICBzdmNbdHlwZV0gPSB7fTtcbiAgICAgICAgICAgICAgICBzdmNbdHlwZV1bbmFtZV0gPSBtZXRob2Q7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhcnNlcyBhIG1lc3NhZ2UgZGVmaW5pdGlvbi5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJlbnQgUGFyZW50IGRlZmluaXRpb25cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBmbGQgRmllbGQgZGVmaW5pdGlvbiBpZiB0aGlzIGlzIGEgZ3JvdXAsIG90aGVyd2lzZSBgbnVsbGBcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBGaXJzdCB0b2tlblxuICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0fVxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBtZXNzYWdlIGNhbm5vdCBiZSBwYXJzZWRcbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFBhcnNlclByb3RvdHlwZS5fcGFyc2VNZXNzYWdlID0gZnVuY3Rpb24ocGFyZW50LCBmbGQsIHRva2VuKSB7XG4gICAgICAgICAgICAgICAgLyoqIEBkaWN0ICovXG4gICAgICAgICAgICAgICAgdmFyIG1zZyA9IHt9OyAvLyBOb3RlOiBBdCBzb21lIHBvaW50IHdlIG1pZ2h0IHdhbnQgdG8gZXhjbHVkZSB0aGUgcGFyc2VyLCBzbyB3ZSBuZWVkIGEgZGljdC5cbiAgICAgICAgICAgICAgICB2YXIgaXNHcm91cCA9IHRva2VuID09PSBcImdyb3VwXCI7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUxhbmcuTkFNRS50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIFwiKyhpc0dyb3VwID8gXCJncm91cFwiIDogXCJtZXNzYWdlXCIpK1wiIG5hbWVcIisocGFyZW50ID8gXCIgaW4gbWVzc2FnZSBcIitwYXJlbnRbXCJuYW1lXCJdIDogXCJcIikrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICBtc2dbXCJuYW1lXCJdID0gdG9rZW47XG4gICAgICAgICAgICAgICAgaWYgKGlzR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBMYW5nLkVRVUFMKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGlkIGFzc2lnbm1lbnQgYWZ0ZXIgZ3JvdXAgXCIrbXNnLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsZFtcImlkXCJdID0gdGhpcy5fcGFyc2VJZCh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBmaWVsZCBpZCB2YWx1ZSBmb3IgZ3JvdXAgXCIrbXNnLm5hbWUrXCIjXCIrZmxkLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBtc2dbXCJpc0dyb3VwXCJdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbXNnW1wiZmllbGRzXCJdID0gW107IC8vIE5vdGU6IFVzaW5nIGFycmF5cyB0byBzdXBwb3J0IGFsc28gYnJvd3NlciB0aGF0IGNhbm5vdCBwcmVzZXJ2ZSBvcmRlciBvZiBvYmplY3Qga2V5cy5cbiAgICAgICAgICAgICAgICBtc2dbXCJlbnVtc1wiXSA9IFtdO1xuICAgICAgICAgICAgICAgIG1zZ1tcIm1lc3NhZ2VzXCJdID0gW107XG4gICAgICAgICAgICAgICAgbXNnW1wib3B0aW9uc1wiXSA9IHt9O1xuICAgICAgICAgICAgICAgIG1zZ1tcIm9uZW9mc1wiXSA9IHt9O1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBMYW5nLk9QVE9QRU4gJiYgZmxkKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUZpZWxkT3B0aW9ucyhtc2csIGZsZCwgdG9rZW4pLFxuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5PUEVOKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgc3RhcnQgb2YgXCIrKGlzR3JvdXAgPyBcImdyb3VwXCIgOiBcIm1lc3NhZ2VcIikrXCIgXCIrbXNnLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAvLyBtc2dbXCJleHRlbnNpb25zXCJdID0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IExhbmcuQ0xPU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5wZWVrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IExhbmcuRU5EKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTGFuZy5SVUxFLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VNZXNzYWdlRmllbGQobXNnLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID09PSBcIm9uZW9mXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU1lc3NhZ2VPbmVPZihtc2csIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPT09IFwiZW51bVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFbnVtKG1zZywgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0b2tlbiA9PT0gXCJtZXNzYWdlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU1lc3NhZ2UobXNnLCBudWxsLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID09PSBcIm9wdGlvblwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VPcHRpb24obXNnLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID09PSBcImV4dGVuc2lvbnNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIG1zZ1tcImV4dGVuc2lvbnNcIl0gPSB0aGlzLl9wYXJzZUV4dGVuc2lvbnMobXNnLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID09PSBcImV4dGVuZFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VFeHRlbmQobXNnLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB0b2tlbiBpbiBtZXNzYWdlIFwiK21zZy5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcGFyZW50W1wibWVzc2FnZXNcIl0ucHVzaChtc2cpO1xuICAgICAgICAgICAgICAgIHJldHVybiBtc2c7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhcnNlcyBhIG1lc3NhZ2UgZmllbGQuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gbXNnIE1lc3NhZ2UgZGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHshT2JqZWN0fSBGaWVsZCBkZXNjcmlwdG9yXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgZmllbGQgY2Fubm90IGJlIHBhcnNlZFxuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLl9wYXJzZU1lc3NhZ2VGaWVsZCA9IGZ1bmN0aW9uKG1zZywgdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAvKiogQGRpY3QgKi9cbiAgICAgICAgICAgICAgICB2YXIgZmxkID0ge30sIGdycCA9IG51bGw7XG4gICAgICAgICAgICAgICAgZmxkW1wicnVsZVwiXSA9IHRva2VuO1xuICAgICAgICAgICAgICAgIC8qKiBAZGljdCAqL1xuICAgICAgICAgICAgICAgIGZsZFtcIm9wdGlvbnNcIl0gPSB7fTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gXCJncm91cFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFwiQSBbbGVnYWN5XSBncm91cCBzaW1wbHkgY29tYmluZXMgYSBuZXN0ZWQgbWVzc2FnZSB0eXBlIGFuZCBhIGZpZWxkIGludG8gYSBzaW5nbGUgZGVjbGFyYXRpb24uIEluIHlvdXJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29kZSwgeW91IGNhbiB0cmVhdCB0aGlzIG1lc3NhZ2UganVzdCBhcyBpZiBpdCBoYWQgYSBSZXN1bHQgdHlwZSBmaWVsZCBjYWxsZWQgcmVzdWx0ICh0aGUgbGF0dGVyIG5hbWUgaXNcbiAgICAgICAgICAgICAgICAgICAgLy8gY29udmVydGVkIHRvIGxvd2VyLWNhc2Ugc28gdGhhdCBpdCBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSBmb3JtZXIpLlwiXG4gICAgICAgICAgICAgICAgICAgIGdycCA9IHRoaXMuX3BhcnNlTWVzc2FnZShtc2csIGZsZCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIS9eW0EtWl0vLnRlc3QoZ3JwW1wibmFtZVwiXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcignR3JvdXAgbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgY2FwaXRhbCBsZXR0ZXInKTtcbiAgICAgICAgICAgICAgICAgICAgZmxkW1widHlwZVwiXSA9IGdycFtcIm5hbWVcIl07XG4gICAgICAgICAgICAgICAgICAgIGZsZFtcIm5hbWVcIl0gPSBncnBbXCJuYW1lXCJdLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5wZWVrKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gTGFuZy5FTkQpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmcuVFlQRS50ZXN0KHRva2VuKSAmJiAhTGFuZy5UWVBFUkVGLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGZpZWxkIHR5cGUgaW4gbWVzc2FnZSBcIittc2cubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBmbGRbXCJ0eXBlXCJdID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghTGFuZy5OQU1FLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGZpZWxkIG5hbWUgaW4gbWVzc2FnZSBcIittc2cubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBmbGRbXCJuYW1lXCJdID0gdG9rZW47XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5FUVVBTClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB0b2tlbiBpbiBmaWVsZCBcIittc2cubmFtZStcIiNcIitmbGQubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmxkW1wiaWRcIl0gPSB0aGlzLl9wYXJzZUlkKHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGZpZWxkIGlkIGluIG1lc3NhZ2UgXCIrbXNnLm5hbWUrXCIjXCIrZmxkLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IExhbmcuT1BUT1BFTilcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlRmllbGRPcHRpb25zKG1zZywgZmxkLCB0b2tlbiksXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IExhbmcuRU5EKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGRlbGltaXRlciBpbiBtZXNzYWdlIFwiK21zZy5uYW1lK1wiI1wiK2ZsZC5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1zZ1tcImZpZWxkc1wiXS5wdXNoKGZsZCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZsZDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGEgbWVzc2FnZSBvbmVvZi5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBtc2cgTWVzc2FnZSBkZWZpbml0aW9uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gSW5pdGlhbCB0b2tlblxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBtZXNzYWdlIG9uZW9mIGNhbm5vdCBiZSBwYXJzZWRcbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFBhcnNlclByb3RvdHlwZS5fcGFyc2VNZXNzYWdlT25lT2YgPSBmdW5jdGlvbihtc2csIHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUxhbmcuTkFNRS50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIG9uZW9mIG5hbWUgaW4gbWVzc2FnZSBcIittc2cubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdG9rZW4sXG4gICAgICAgICAgICAgICAgICAgIGZsZDtcbiAgICAgICAgICAgICAgICB2YXIgZmllbGRzID0gW107XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IExhbmcuT1BFTilcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHN0YXJ0IG9mIG9uZW9mIFwiK25hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICB3aGlsZSAodGhpcy50bi5wZWVrKCkgIT09IExhbmcuQ0xPU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgZmxkID0gdGhpcy5fcGFyc2VNZXNzYWdlRmllbGQobXNnLCBcIm9wdGlvbmFsXCIpO1xuICAgICAgICAgICAgICAgICAgICBmbGRbXCJvbmVvZlwiXSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkcy5wdXNoKGZsZFtcImlkXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgbXNnW1wib25lb2ZzXCJdW25hbWVdID0gZmllbGRzO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYXJzZXMgYSBzZXQgb2YgZmllbGQgb3B0aW9uIGRlZmluaXRpb25zLlxuICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG1zZyBNZXNzYWdlIGRlZmluaXRpb25cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBmbGQgRmllbGQgZGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzc2FnZSBmaWVsZCBvcHRpb25zIGNhbm5vdCBiZSBwYXJzZWRcbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFBhcnNlclByb3RvdHlwZS5fcGFyc2VGaWVsZE9wdGlvbnMgPSBmdW5jdGlvbihtc2csIGZsZCwgdG9rZW4pIHtcbiAgICAgICAgICAgICAgICB2YXIgZmlyc3QgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBMYW5nLk9QVENMT1NFKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID09PSBMYW5nLk9QVEVORCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBzdGFydCBvZiBvcHRpb25zIGluIG1lc3NhZ2UgXCIrbXNnLm5hbWUrXCIjXCIrZmxkLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGFyc2VGaWVsZE9wdGlvbihtc2csIGZsZCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYXJzZXMgYSBzaW5nbGUgZmllbGQgb3B0aW9uLlxuICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG1zZyBNZXNzYWdlIGRlZmluaXRpb25cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBmbGQgRmllbGQgZGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzYWdlIGZpZWxkIG9wdGlvbiBjYW5ub3QgYmUgcGFyc2VkXG4gICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUuX3BhcnNlRmllbGRPcHRpb24gPSBmdW5jdGlvbihtc2csIGZsZCwgdG9rZW4pIHtcbiAgICAgICAgICAgICAgICB2YXIgY3VzdG9tID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBMYW5nLkNPUFRPUEVOKVxuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpLFxuICAgICAgICAgICAgICAgICAgICBjdXN0b20gPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICghTGFuZy5UWVBFUkVGLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgZmllbGQgb3B0aW9uIGluIFwiK21zZy5uYW1lK1wiI1wiK2ZsZC5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChjdXN0b20pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuICE9PSBMYW5nLkNPUFRDTE9TRSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBkZWxpbWl0ZXIgaW4gXCIrbXNnLm5hbWUrXCIjXCIrZmxkLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICcoJytuYW1lKycpJztcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKExhbmcuRlFUWVBFUkVGLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSArPSB0b2tlbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5FUVVBTClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHRva2VuIGluIFwiK21zZy5uYW1lK1wiI1wiK2ZsZC5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5wZWVrKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBMYW5nLlNUUklOR09QRU4gfHwgdG9rZW4gPT09IExhbmcuU1RSSU5HT1BFTl9TUSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMuX3BhcnNlU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChMYW5nLk5VTUJFUi50ZXN0KHRva2VuLCB0cnVlKSlcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLl9wYXJzZU51bWJlcih0aGlzLnRuLm5leHQoKSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoTGFuZy5CT09MLnRlc3QodG9rZW4pKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHRoaXMudG4ubmV4dCgpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChMYW5nLlRZUEVSRUYudGVzdCh0b2tlbikpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy50bi5uZXh0KCk7IC8vIFRPRE86IFJlc29sdmU/XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgdmFsdWUgaW4gbWVzc2FnZSBcIittc2cubmFtZStcIiNcIitmbGQubmFtZStcIiwgb3B0aW9uIFwiK25hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICBmbGRbXCJvcHRpb25zXCJdW25hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFBhcnNlcyBhbiBlbnVtLlxuICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3R9IG1zZyBNZXNzYWdlIGRlZmluaXRpb25cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBJbml0aWFsIHRva2VuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGVudW0gY2Fubm90IGJlIHBhcnNlZFxuICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLl9wYXJzZUVudW0gPSBmdW5jdGlvbihtc2csIHRva2VuKSB7XG4gICAgICAgICAgICAgICAgLyoqIEBkaWN0ICovXG4gICAgICAgICAgICAgICAgdmFyIGVubSA9IHt9O1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCFMYW5nLk5BTUUudGVzdCh0b2tlbikpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBlbnVtIG5hbWUgaW4gbWVzc2FnZSBcIittc2cubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIGVubVtcIm5hbWVcIl0gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5PUEVOKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgc3RhcnQgb2YgZW51bSBcIitlbm0ubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIGVubVtcInZhbHVlc1wiXSA9IFtdO1xuICAgICAgICAgICAgICAgIGVubVtcIm9wdGlvbnNcIl0gPSB7fTtcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gTGFuZy5DTE9TRSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLnBlZWsoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gTGFuZy5FTkQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gJ29wdGlvbicpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU9wdGlvbihlbm0sIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmcuTkFNRS50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgbmFtZSBpbiBlbnVtIFwiK2VubS5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZUVudW1WYWx1ZShlbm0sIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpO1xuICAgICAgICAgICAgICAgIG1zZ1tcImVudW1zXCJdLnB1c2goZW5tKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGFuIGVudW0gdmFsdWUuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZW5tIEVudW0gZGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW51bSB2YWx1ZSBjYW5ub3QgYmUgcGFyc2VkXG4gICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUuX3BhcnNlRW51bVZhbHVlID0gZnVuY3Rpb24oZW5tLCB0b2tlbikge1xuICAgICAgICAgICAgICAgIC8qKiBAZGljdCAqL1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSB7fTtcbiAgICAgICAgICAgICAgICB2YWxbXCJuYW1lXCJdID0gdG9rZW47XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IExhbmcuRVFVQUwpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB0b2tlbiBpbiBlbnVtIFwiK2VubS5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICB2YWxbXCJpZFwiXSA9IHRoaXMuX3BhcnNlSWQodG9rZW4sIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGlkIGluIGVudW0gXCIrZW5tLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZW5tW1widmFsdWVzXCJdLnB1c2godmFsKTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gTGFuZy5PUFRPUEVOKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBvcHQgPSB7ICdvcHRpb25zJyA6IHt9IH07IC8vIFRPRE86IEFjdHVhbGx5IGV4cG9zZSB0aGVtIHNvbWVob3cuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlRmllbGRPcHRpb25zKGVubSwgb3B0LCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5FTkQpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBkZWxpbWl0ZXIgaW4gZW51bSBcIitlbm0ubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBQYXJzZXMgYW4gZXh0ZW5zaW9ucyBzdGF0ZW1lbnQuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gbXNnIE1lc3NhZ2Ugb2JqZWN0XG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gSW5pdGlhbCB0b2tlblxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBleHRlbnNpb25zIHN0YXRlbWVudCBjYW5ub3QgYmUgcGFyc2VkXG4gICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBQYXJzZXJQcm90b3R5cGUuX3BhcnNlRXh0ZW5zaW9ucyA9IGZ1bmN0aW9uKG1zZywgdG9rZW4pIHtcbiAgICAgICAgICAgICAgICAvKiogQHR5cGUge0FycmF5LjxudW1iZXI+fSAqL1xuICAgICAgICAgICAgICAgIHZhciByYW5nZSA9IFtdO1xuICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuID09PSBcIm1pblwiKSAvLyBGSVhNRTogRG9lcyB0aGUgb2ZmaWNpYWwgaW1wbGVtZW50YXRpb24gc3VwcG9ydCB0aGlzP1xuICAgICAgICAgICAgICAgICAgICByYW5nZS5wdXNoKFByb3RvQnVmLklEX01JTik7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodG9rZW4gPT09IFwibWF4XCIpXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnB1c2goUHJvdG9CdWYuSURfTUFYKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHJhbmdlLnB1c2godGhpcy5fcGFyc2VOdW1iZXIodG9rZW4pKTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gJ3RvJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGV4dGVuc2lvbnMgZGVsaW1pdGVyIGluIG1lc3NhZ2UgXCIrbXNnLm5hbWUrXCIgYXQgbGluZSBcIit0aGlzLnRuLmxpbmUrXCI6IFwiK3Rva2VuKTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PT0gXCJtaW5cIilcbiAgICAgICAgICAgICAgICAgICAgcmFuZ2UucHVzaChQcm90b0J1Zi5JRF9NSU4pO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRva2VuID09PSBcIm1heFwiKVxuICAgICAgICAgICAgICAgICAgICByYW5nZS5wdXNoKFByb3RvQnVmLklEX01BWCk7XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICByYW5nZS5wdXNoKHRoaXMuX3BhcnNlTnVtYmVyKHRva2VuKSk7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAodG9rZW4gIT09IExhbmcuRU5EKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgZXh0ZW5zaW9ucyBkZWxpbWl0ZXIgaW4gbWVzc2FnZSBcIittc2cubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIHJldHVybiByYW5nZTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUGFyc2VzIGFuIGV4dGVuZCBibG9jay5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJlbnQgUGFyZW50IG9iamVjdFxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEluaXRpYWwgdG9rZW5cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZXh0ZW5kIGJsb2NrIGNhbm5vdCBiZSBwYXJzZWRcbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFBhcnNlclByb3RvdHlwZS5fcGFyc2VFeHRlbmQgPSBmdW5jdGlvbihwYXJlbnQsIHRva2VuKSB7XG4gICAgICAgICAgICAgICAgdG9rZW4gPSB0aGlzLnRuLm5leHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIUxhbmcuVFlQRVJFRi50ZXN0KHRva2VuKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIG1lc3NhZ2UgbmFtZSBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIC8qKiBAZGljdCAqL1xuICAgICAgICAgICAgICAgIHZhciBleHQgPSB7fTtcbiAgICAgICAgICAgICAgICBleHRbXCJyZWZcIl0gPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBleHRbXCJmaWVsZHNcIl0gPSBbXTtcbiAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbiAhPT0gTGFuZy5PUEVOKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgc3RhcnQgb2YgZXh0ZW5kIFwiK2V4dC5uYW1lK1wiIGF0IGxpbmUgXCIrdGhpcy50bi5saW5lK1wiOiBcIit0b2tlbik7XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IHRoaXMudG4ubmV4dCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT09IExhbmcuQ0xPU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gdGhpcy50bi5wZWVrKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4gPT0gTGFuZy5FTkQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50bi5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChMYW5nLlJVTEUudGVzdCh0b2tlbikpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJzZU1lc3NhZ2VGaWVsZChleHQsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHRva2VuIGluIGV4dGVuZCBcIitleHQubmFtZStcIiBhdCBsaW5lIFwiK3RoaXMudG4ubGluZStcIjogXCIrdG9rZW4pO1xuICAgICAgICAgICAgICAgIH0gd2hpbGUgKHRydWUpO1xuICAgICAgICAgICAgICAgIHBhcmVudFtcIm1lc3NhZ2VzXCJdLnB1c2goZXh0KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZXh0O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0LlxuICAgICAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHJlcHJlc2VudGF0aW9uIGFzIG9mIFwiUGFyc2VyXCJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUGFyc2VyUHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiUGFyc2VyXCI7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5Eb3RQcm90by5QYXJzZXJcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgRG90UHJvdG8uUGFyc2VyID0gUGFyc2VyO1xuXG4gICAgICAgICAgICByZXR1cm4gRG90UHJvdG87XG5cbiAgICAgICAgfSkoUHJvdG9CdWYsIFByb3RvQnVmLkxhbmcpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5SZWZsZWN0ID0gKGZ1bmN0aW9uKFByb3RvQnVmKSB7XG4gICAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZWZsZWN0aW9uIHR5cGVzLlxuICAgICAgICAgICAgICogQGV4cG9ydHMgUHJvdG9CdWYuUmVmbGVjdFxuICAgICAgICAgICAgICogQG5hbWVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgUmVmbGVjdCA9IHt9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnN0cnVjdHMgYSBSZWZsZWN0IGJhc2UgY2xhc3MuXG4gICAgICAgICAgICAgKiBAZXhwb3J0cyBQcm90b0J1Zi5SZWZsZWN0LlRcbiAgICAgICAgICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICogQGFic3RyYWN0XG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5CdWlsZGVyfSBidWlsZGVyIEJ1aWxkZXIgcmVmZXJlbmNlXG4gICAgICAgICAgICAgKiBAcGFyYW0gez9Qcm90b0J1Zi5SZWZsZWN0LlR9IHBhcmVudCBQYXJlbnQgb2JqZWN0XG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBPYmplY3QgbmFtZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgVCA9IGZ1bmN0aW9uKGJ1aWxkZXIsIHBhcmVudCwgbmFtZSkge1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQnVpbGRlciByZWZlcmVuY2UuXG4gICAgICAgICAgICAgICAgICogQHR5cGUgeyFQcm90b0J1Zi5CdWlsZGVyfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkZXIgPSBidWlsZGVyO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogUGFyZW50IG9iamVjdC5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7P1Byb3RvQnVmLlJlZmxlY3QuVH1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBPYmplY3QgbmFtZSBpbiBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEZ1bGx5IHF1YWxpZmllZCBjbGFzcyBuYW1lXG4gICAgICAgICAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWU7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5SZWZsZWN0LlQucHJvdG90eXBlXG4gICAgICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIFRQcm90b3R5cGUgPSBULnByb3RvdHlwZTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZXR1cm5zIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGlzIG9iamVjdC5cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IEZ1bGx5IHF1YWxpZmllZCBuYW1lIGFzIG9mIFwiLlBBVEguVE8uVEhJU1wiXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFRQcm90b3R5cGUuZnFuID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSB0aGlzLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHB0ciA9IHRoaXM7XG4gICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBwdHIgPSBwdHIucGFyZW50O1xuICAgICAgICAgICAgICAgICAgICBpZiAocHRyID09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHB0ci5uYW1lK1wiLlwiK25hbWU7XG4gICAgICAgICAgICAgICAgfSB3aGlsZSAodHJ1ZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBSZWZsZWN0IG9iamVjdCAoaXRzIGZ1bGx5IHF1YWxpZmllZCBuYW1lKS5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGluY2x1ZGVDbGFzcyBTZXQgdG8gdHJ1ZSB0byBpbmNsdWRlIHRoZSBjbGFzcyBuYW1lLiBEZWZhdWx0cyB0byBmYWxzZS5cbiAgICAgICAgICAgICAqIEByZXR1cm4gU3RyaW5nIHJlcHJlc2VudGF0aW9uXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFRQcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbihpbmNsdWRlQ2xhc3MpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGluY2x1ZGVDbGFzcyA/IHRoaXMuY2xhc3NOYW1lICsgXCIgXCIgOiBcIlwiKSArIHRoaXMuZnFuKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJ1aWxkcyB0aGlzIHR5cGUuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhpcyB0eXBlIGNhbm5vdCBiZSBidWlsdCBkaXJlY3RseVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBUUHJvdG90eXBlLmJ1aWxkID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodGhpcy50b1N0cmluZyh0cnVlKStcIiBjYW5ub3QgYmUgYnVpbHQgZGlyZWN0bHlcIik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5SZWZsZWN0LlRcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUmVmbGVjdC5UID0gVDtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IE5hbWVzcGFjZS5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuTmFtZXNwYWNlXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5CdWlsZGVyfSBidWlsZGVyIEJ1aWxkZXIgcmVmZXJlbmNlXG4gICAgICAgICAgICAgKiBAcGFyYW0gez9Qcm90b0J1Zi5SZWZsZWN0Lk5hbWVzcGFjZX0gcGFyZW50IE5hbWVzcGFjZSBwYXJlbnRcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWVzcGFjZSBuYW1lXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+PX0gb3B0aW9ucyBOYW1lc3BhY2Ugb3B0aW9uc1xuICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgKiBAZXh0ZW5kcyBQcm90b0J1Zi5SZWZsZWN0LlRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIE5hbWVzcGFjZSA9IGZ1bmN0aW9uKGJ1aWxkZXIsIHBhcmVudCwgbmFtZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIFQuY2FsbCh0aGlzLCBidWlsZGVyLCBwYXJlbnQsIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG92ZXJyaWRlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBcIk5hbWVzcGFjZVwiO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQ2hpbGRyZW4gaW5zaWRlIHRoZSBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgICAgICogQHR5cGUgeyFBcnJheS48UHJvdG9CdWYuUmVmbGVjdC5UPn1cbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBPcHRpb25zLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHshT2JqZWN0LjxzdHJpbmcsICo+fVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5SZWZsZWN0Lk5hbWVzcGFjZS5wcm90b3R5cGVcbiAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgTmFtZXNwYWNlUHJvdG90eXBlID0gTmFtZXNwYWNlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVC5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJldHVybnMgYW4gYXJyYXkgb2YgdGhlIG5hbWVzcGFjZSdzIGNoaWxkcmVuLlxuICAgICAgICAgICAgICogQHBhcmFtIHtQcm90b0J1Zi5SZWZsZWN0LlQ9fSB0eXBlIEZpbHRlciB0eXBlIChyZXR1cm5zIGluc3RhbmNlcyBvZiB0aGlzIHR5cGUgb25seSkuIERlZmF1bHRzIHRvIG51bGwgKGFsbCBjaGlsZHJlbikuXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtBcnJheS48UHJvdG9CdWYuUmVmbGVjdC5UPn1cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgTmFtZXNwYWNlUHJvdG90eXBlLmdldENoaWxkcmVuID0gZnVuY3Rpb24odHlwZSkge1xuICAgICAgICAgICAgICAgIHR5cGUgPSB0eXBlIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4uc2xpY2UoKTtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGs9dGhpcy5jaGlsZHJlbi5sZW5ndGg7IGk8azsgKytpKVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jaGlsZHJlbltpXSBpbnN0YW5jZW9mIHR5cGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWRkcyBhIGNoaWxkIHRvIHRoZSBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge1Byb3RvQnVmLlJlZmxlY3QuVH0gY2hpbGQgQ2hpbGRcbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgY2hpbGQgY2Fubm90IGJlIGFkZGVkIChkdXBsaWNhdGUpXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE5hbWVzcGFjZVByb3RvdHlwZS5hZGRDaGlsZCA9IGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgICAgICAgICAgdmFyIG90aGVyO1xuICAgICAgICAgICAgICAgIGlmIChvdGhlciA9IHRoaXMuZ2V0Q2hpbGQoY2hpbGQubmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVHJ5IHRvIHJldmVydCBjYW1lbGNhc2UgdHJhbnNmb3JtYXRpb24gb24gY29sbGlzaW9uXG4gICAgICAgICAgICAgICAgICAgIGlmIChvdGhlciBpbnN0YW5jZW9mIE1lc3NhZ2UuRmllbGQgJiYgb3RoZXIubmFtZSAhPT0gb3RoZXIub3JpZ2luYWxOYW1lICYmIHRoaXMuZ2V0Q2hpbGQob3RoZXIub3JpZ2luYWxOYW1lKSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIG90aGVyLm5hbWUgPSBvdGhlci5vcmlnaW5hbE5hbWU7IC8vIFJldmVydCBwcmV2aW91cyBmaXJzdCAoZWZmZWN0aXZlbHkga2VlcHMgYm90aCBvcmlnaW5hbHMpXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkIGluc3RhbmNlb2YgTWVzc2FnZS5GaWVsZCAmJiBjaGlsZC5uYW1lICE9PSBjaGlsZC5vcmlnaW5hbE5hbWUgJiYgdGhpcy5nZXRDaGlsZChjaGlsZC5vcmlnaW5hbE5hbWUpID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGQubmFtZSA9IGNoaWxkLm9yaWdpbmFsTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJEdXBsaWNhdGUgbmFtZSBpbiBuYW1lc3BhY2UgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrY2hpbGQubmFtZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdldHMgYSBjaGlsZCBieSBpdHMgbmFtZSBvciBpZC5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gbmFtZU9ySWQgQ2hpbGQgbmFtZSBvciBpZFxuICAgICAgICAgICAgICogQHJldHVybiB7P1Byb3RvQnVmLlJlZmxlY3QuVH0gVGhlIGNoaWxkIG9yIG51bGwgaWYgbm90IGZvdW5kXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE5hbWVzcGFjZVByb3RvdHlwZS5nZXRDaGlsZCA9IGZ1bmN0aW9uKG5hbWVPcklkKSB7XG4gICAgICAgICAgICAgICAgdmFyIGtleSA9IHR5cGVvZiBuYW1lT3JJZCA9PT0gJ251bWJlcicgPyAnaWQnIDogJ25hbWUnO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaz10aGlzLmNoaWxkcmVuLmxlbmd0aDsgaTxrOyArK2kpXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmNoaWxkcmVuW2ldW2tleV0gPT09IG5hbWVPcklkKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW5baV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc29sdmVzIGEgcmVmbGVjdCBvYmplY3QgaW5zaWRlIG9mIHRoaXMgbmFtZXNwYWNlLlxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHFuIFF1YWxpZmllZCBuYW1lIHRvIHJlc29sdmVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGV4Y2x1ZGVGaWVsZHMgRXhjbHVkZXMgZmllbGRzLCBkZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHs/UHJvdG9CdWYuUmVmbGVjdC5OYW1lc3BhY2V9IFRoZSByZXNvbHZlZCB0eXBlIG9yIG51bGwgaWYgbm90IGZvdW5kXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE5hbWVzcGFjZVByb3RvdHlwZS5yZXNvbHZlID0gZnVuY3Rpb24ocW4sIGV4Y2x1ZGVGaWVsZHMpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFydCA9IHFuLnNwbGl0KFwiLlwiKSxcbiAgICAgICAgICAgICAgICAgICAgcHRyID0gdGhpcyxcbiAgICAgICAgICAgICAgICAgICAgaSA9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHBhcnRbaV0gPT09IFwiXCIpIHsgLy8gRnVsbHkgcXVhbGlmaWVkIG5hbWUsIGUuZy4gXCIuTXkuTWVzc2FnZSdcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHB0ci5wYXJlbnQgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICBwdHIgPSBwdHIucGFyZW50O1xuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBjaGlsZDtcbiAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkID0gcHRyLmdldENoaWxkKHBhcnRbaV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZCB8fCAhKGNoaWxkIGluc3RhbmNlb2YgUmVmbGVjdC5UKSB8fCAoZXhjbHVkZUZpZWxkcyAmJiBjaGlsZCBpbnN0YW5jZW9mIFJlZmxlY3QuTWVzc2FnZS5GaWVsZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHIgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcHRyID0gY2hpbGQ7IGkrKztcbiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoaSA8IHBhcnQubGVuZ3RoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHB0ciAhPSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIEZvdW5kXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsc2Ugc2VhcmNoIHRoZSBwYXJlbnRcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQucmVzb2x2ZShxbiwgZXhjbHVkZUZpZWxkcyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IHdoaWxlIChwdHIgIT0gbnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHB0cjtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnVpbGRzIHRoZSBuYW1lc3BhY2UgYW5kIHJldHVybnMgdGhlIHJ1bnRpbWUgY291bnRlcnBhcnQuXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtPYmplY3QuPHN0cmluZyxGdW5jdGlvbnxPYmplY3Q+fSBSdW50aW1lIG5hbWVzcGFjZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBOYW1lc3BhY2VQcm90b3R5cGUuYnVpbGQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAvKiogQGRpY3QgKi9cbiAgICAgICAgICAgICAgICB2YXIgbnMgPSB7fTtcbiAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLmNoaWxkcmVuO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaz1jaGlsZHJlbi5sZW5ndGgsIGNoaWxkOyBpPGs7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoY2hpbGQgaW5zdGFuY2VvZiBOYW1lc3BhY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICBuc1tjaGlsZC5uYW1lXSA9IGNoaWxkLmJ1aWxkKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgXCIkb3B0aW9uc1wiLCB7IFwidmFsdWVcIjogdGhpcy5idWlsZE9wdCgpIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBucztcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnVpbGRzIHRoZSBuYW1lc3BhY2UncyAnJG9wdGlvbnMnIHByb3BlcnR5LlxuICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0LjxzdHJpbmcsKj59XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE5hbWVzcGFjZVByb3RvdHlwZS5idWlsZE9wdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBvcHQgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMub3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBrPWtleXMubGVuZ3RoOyBpPGs7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHRoaXMub3B0aW9uc1trZXlzW2ldXTtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogT3B0aW9ucyBhcmUgbm90IHJlc29sdmVkLCB5ZXQuXG4gICAgICAgICAgICAgICAgICAgIC8vIGlmICh2YWwgaW5zdGFuY2VvZiBOYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gICAgIG9wdFtrZXldID0gdmFsLmJ1aWxkKCk7XG4gICAgICAgICAgICAgICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG9wdFtrZXldID0gdmFsO1xuICAgICAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBvcHQ7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEdldHMgdGhlIHZhbHVlIGFzc2lnbmVkIHRvIHRoZSBvcHRpb24gd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZz19IG5hbWUgUmV0dXJucyB0aGUgb3B0aW9uIHZhbHVlIGlmIHNwZWNpZmllZCwgb3RoZXJ3aXNlIGFsbCBvcHRpb25zIGFyZSByZXR1cm5lZC5cbiAgICAgICAgICAgICAqIEByZXR1cm4geyp8T2JqZWN0LjxzdHJpbmcsKj59bnVsbH0gT3B0aW9uIHZhbHVlIG9yIE5VTEwgaWYgdGhlcmUgaXMgbm8gc3VjaCBvcHRpb25cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgTmFtZXNwYWNlUHJvdG90eXBlLmdldE9wdGlvbiA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zO1xuICAgICAgICAgICAgICAgIHJldHVybiB0eXBlb2YgdGhpcy5vcHRpb25zW25hbWVdICE9PSAndW5kZWZpbmVkJyA/IHRoaXMub3B0aW9uc1tuYW1lXSA6IG51bGw7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5SZWZsZWN0Lk5hbWVzcGFjZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBSZWZsZWN0Lk5hbWVzcGFjZSA9IE5hbWVzcGFjZTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IE1lc3NhZ2UuXG4gICAgICAgICAgICAgKiBAZXhwb3J0cyBQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLkJ1aWxkZXJ9IGJ1aWxkZXIgQnVpbGRlciByZWZlcmVuY2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLlJlZmxlY3QuTmFtZXNwYWNlfSBwYXJlbnQgUGFyZW50IG1lc3NhZ2Ugb3IgbmFtZXNwYWNlXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBNZXNzYWdlIG5hbWVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj49fSBvcHRpb25zIE1lc3NhZ2Ugb3B0aW9uc1xuICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gaXNHcm91cCBgdHJ1ZWAgaWYgdGhpcyBpcyBhIGxlZ2FjeSBncm91cFxuICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgKiBAZXh0ZW5kcyBQcm90b0J1Zi5SZWZsZWN0Lk5hbWVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgTWVzc2FnZSA9IGZ1bmN0aW9uKGJ1aWxkZXIsIHBhcmVudCwgbmFtZSwgb3B0aW9ucywgaXNHcm91cCkge1xuICAgICAgICAgICAgICAgIE5hbWVzcGFjZS5jYWxsKHRoaXMsIGJ1aWxkZXIsIHBhcmVudCwgbmFtZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBAb3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IFwiTWVzc2FnZVwiO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRXh0ZW5zaW9ucyByYW5nZS5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuc2lvbnMgPSBbUHJvdG9CdWYuSURfTUlOLCBQcm90b0J1Zi5JRF9NQVhdO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogUnVudGltZSBtZXNzYWdlIGNsYXNzLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHs/ZnVuY3Rpb24obmV3OlByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSl9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhenogPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogV2hldGhlciB0aGlzIGlzIGEgbGVnYWN5IGdyb3VwIG9yIG5vdC5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5pc0dyb3VwID0gISFpc0dyb3VwO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBjYWNoZWQgY29sbGVjdGlvbnMgYXJlIHVzZWQgdG8gZWZmaWNpZW50bHkgaXRlcmF0ZSBvdmVyIG9yIGxvb2sgdXAgZmllbGRzIHdoZW4gZGVjb2RpbmcuXG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBDYWNoZWQgZmllbGRzLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHs/QXJyYXkuPCFQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGQ+fVxuICAgICAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5fZmllbGRzID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIENhY2hlZCBmaWVsZHMgYnkgaWQuXG4gICAgICAgICAgICAgICAgICogQHR5cGUgez9PYmplY3QuPG51bWJlciwhUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkZpZWxkPn1cbiAgICAgICAgICAgICAgICAgKiBAcHJpdmF0ZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkc0J5SWQgPSBudWxsO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQ2FjaGVkIGZpZWxkcyBieSBuYW1lLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHs/T2JqZWN0LjxzdHJpbmcsIVByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5GaWVsZD59XG4gICAgICAgICAgICAgICAgICogQHByaXZhdGVcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLl9maWVsZHNCeU5hbWUgPSBudWxsO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLnByb3RvdHlwZVxuICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBNZXNzYWdlUHJvdG90eXBlID0gTWVzc2FnZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE5hbWVzcGFjZS5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJ1aWxkcyB0aGUgbWVzc2FnZSBhbmQgcmV0dXJucyB0aGUgcnVudGltZSBjb3VudGVycGFydCwgd2hpY2ggaXMgYSBmdWxseSBmdW5jdGlvbmFsIGNsYXNzLlxuICAgICAgICAgICAgICogQHNlZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHJlYnVpbGQgV2hldGhlciB0byByZWJ1aWxkIG9yIG5vdCwgZGVmYXVsdHMgdG8gZmFsc2VcbiAgICAgICAgICAgICAqIEByZXR1cm4ge1Byb3RvQnVmLlJlZmxlY3QuTWVzc2FnZX0gTWVzc2FnZSBjbGFzc1xuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBtZXNzYWdlIGNhbm5vdCBiZSBidWlsdFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLmJ1aWxkID0gZnVuY3Rpb24ocmVidWlsZCkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNsYXp6ICYmICFyZWJ1aWxkKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jbGF6ejtcblxuICAgICAgICAgICAgICAgIC8vIENyZWF0ZSB0aGUgcnVudGltZSBNZXNzYWdlIGNsYXNzIGluIGl0cyBvd24gc2NvcGVcbiAgICAgICAgICAgICAgICB2YXIgY2xhenogPSAoZnVuY3Rpb24oUHJvdG9CdWYsIFQpIHtcblxuICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGRzID0gVC5nZXRDaGlsZHJlbihQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgb25lb2ZzID0gVC5nZXRDaGlsZHJlbihQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuT25lT2YpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHJ1bnRpbWUgTWVzc2FnZS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAqIEBjbGFzcyBCYXJlYm9uZSBvZiBhbGwgcnVudGltZSBtZXNzYWdlcy5cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHshT2JqZWN0LjxzdHJpbmcsKj58c3RyaW5nfSB2YWx1ZXMgUHJlc2V0IHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0gey4uLnN0cmluZ30gdmFyX2FyZ3NcbiAgICAgICAgICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgY3JlYXRlZFxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgdmFyIE1lc3NhZ2UgPSBmdW5jdGlvbih2YWx1ZXMsIHZhcl9hcmdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UuY2FsbCh0aGlzKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIHZpcnR1YWwgb25lb2YgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBrPW9uZW9mcy5sZW5ndGg7IGk8azsgKytpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbb25lb2ZzW2ldLm5hbWVdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENyZWF0ZSBmaWVsZHMgYW5kIHNldCBkZWZhdWx0IHZhbHVlc1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTAsIGs9ZmllbGRzLmxlbmd0aDsgaTxrOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSBmaWVsZHNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tmaWVsZC5uYW1lXSA9IGZpZWxkLnJlcGVhdGVkID8gW10gOiBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5yZXF1aXJlZCAmJiBmaWVsZC5kZWZhdWx0VmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbZmllbGQubmFtZV0gPSBmaWVsZC5kZWZhdWx0VmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBmaWVsZCB2YWx1ZXMgZnJvbSBhIHZhbHVlcyBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiB0eXBlb2YgdmFsdWVzID09PSAnb2JqZWN0JyAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3QgYW5vdGhlciBNZXNzYWdlICovIHR5cGVvZiB2YWx1ZXMuZW5jb2RlICE9PSAnZnVuY3Rpb24nICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdCBhIHJlcGVhdGVkIGZpZWxkICovICFQcm90b0J1Zi5VdGlsLmlzQXJyYXkodmFsdWVzKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub3QgYSBCeXRlQnVmZmVyICovICEodmFsdWVzIGluc3RhbmNlb2YgQnl0ZUJ1ZmZlcikgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbm90IGFuIEFycmF5QnVmZmVyICovICEodmFsdWVzIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdCBhIExvbmcgKi8gIShQcm90b0J1Zi5Mb25nICYmIHZhbHVlcyBpbnN0YW5jZW9mIFByb3RvQnVmLkxvbmcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXModmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTAsIGs9a2V5cy5sZW5ndGg7IGk8azsgKytpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2V0KGtleXNbaV0sIHZhbHVlc1trZXlzW2ldXSk7IC8vIE1heSB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSAvLyBTZXQgZmllbGQgdmFsdWVzIGZyb20gYXJndW1lbnRzLCBpbiBkZWNsYXJhdGlvbiBvcmRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MCwgaz1hcmd1bWVudHMubGVuZ3RoOyBpPGs7ICsraSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJHNldChmaWVsZHNbaV0ubmFtZSwgYXJndW1lbnRzW2ldKTsgLy8gTWF5IHRocm93XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UucHJvdG90eXBlXG4gICAgICAgICAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgdmFyIE1lc3NhZ2VQcm90b3R5cGUgPSBNZXNzYWdlLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlLnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIEFkZHMgYSB2YWx1ZSB0byBhIHJlcGVhdGVkIGZpZWxkLlxuICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjYWRkXG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEZpZWxkIG5hbWVcbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBhZGRcbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9Bc3NlcnQgV2hldGhlciB0byBhc3NlcnQgdGhlIHZhbHVlIG9yIG5vdCAoYXNzZXJ0cyBieSBkZWZhdWx0KVxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBhZGRlZFxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGtleSwgdmFsdWUsIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZmllbGQgPSBULl9maWVsZHNCeU5hbWVba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0aGlzK1wiI1wiK2tleStcIiBpcyB1bmRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZmllbGQgaW5zdGFuY2VvZiBQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0aGlzK1wiI1wiK2tleStcIiBpcyBub3QgYSBmaWVsZDogXCIrZmllbGQudG9TdHJpbmcodHJ1ZSkpOyAvLyBNYXkgdGhyb3cgaWYgaXQncyBhbiBlbnVtIG9yIGVtYmVkZGVkIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpZWxkLnJlcGVhdGVkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0aGlzK1wiI1wiK2tleStcIiBpcyBub3QgYSByZXBlYXRlZCBmaWVsZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzW2ZpZWxkLm5hbWVdID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbZmllbGQubmFtZV0gPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbZmllbGQubmFtZV0ucHVzaChub0Fzc2VydCA/IHZhbHVlIDogZmllbGQudmVyaWZ5VmFsdWUodmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogQWRkcyBhIHZhbHVlIHRvIGEgcmVwZWF0ZWQgZmllbGQuIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHtAbGluayBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjYWRkfS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlIyRhZGRcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgRmllbGQgbmFtZVxuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGFkZFxuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub0Fzc2VydCBXaGV0aGVyIHRvIGFzc2VydCB0aGUgdmFsdWUgb3Igbm90IChhc3NlcnRzIGJ5IGRlZmF1bHQpXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIGFkZGVkXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuJGFkZCA9IE1lc3NhZ2VQcm90b3R5cGUuYWRkO1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBTZXRzIGEgZmllbGQncyB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI3NldFxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXlcbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWYWx1ZSB0byBzZXRcbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9Bc3NlcnQgV2hldGhlciB0byBub3QgYXNzZXJ0IGZvciBhbiBhY3R1YWwgZmllbGQgLyBwcm9wZXIgdmFsdWUgdHlwZSwgZGVmYXVsdHMgdG8gYGZhbHNlYFxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJucyB7IVByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZX0gdGhpc1xuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBzZXRcbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihrZXksIHZhbHVlLCBub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleSAmJiB0eXBlb2Yga2V5ID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4ga2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5Lmhhc093blByb3BlcnR5KGkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2V0KGksIGtleVtpXSwgbm9Bc3NlcnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gVC5fZmllbGRzQnlOYW1lW2tleV07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IodGhpcytcIiNcIitrZXkrXCIgaXMgbm90IGEgZmllbGQ6IHVuZGVmaW5lZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShmaWVsZCBpbnN0YW5jZW9mIFByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5GaWVsZCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHRoaXMrXCIjXCIra2V5K1wiIGlzIG5vdCBhIGZpZWxkOiBcIitmaWVsZC50b1N0cmluZyh0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tmaWVsZC5uYW1lXSA9ICh2YWx1ZSA9IGZpZWxkLnZlcmlmeVZhbHVlKHZhbHVlKSk7IC8vIE1heSB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkLm5hbWVdID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQub25lb2YpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXNbZmllbGQub25lb2YubmFtZV0gIT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3RoaXNbZmllbGQub25lb2YubmFtZV1dID0gbnVsbDsgLy8gVW5zZXQgdGhlIHByZXZpb3VzIChmaWVsZCBuYW1lIGlzIHRoZSBvbmVvZiBmaWVsZCdzIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkLm9uZW9mLm5hbWVdID0gZmllbGQubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpZWxkLm9uZW9mLm5hbWUgPT09IGtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tmaWVsZC5vbmVvZi5uYW1lXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogU2V0cyBhIGZpZWxkJ3MgdmFsdWUuIFRoaXMgaXMgYW4gYWxpYXMgZm9yIFtAbGluayBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2Ujc2V0fS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlIyRzZXRcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgS2V5XG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gc2V0XG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gbm90IGFzc2VydCB0aGUgdmFsdWUsIGRlZmF1bHRzIHRvIGBmYWxzZWBcbiAgICAgICAgICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgc2V0XG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuJHNldCA9IE1lc3NhZ2VQcm90b3R5cGUuc2V0O1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBHZXRzIGEgZmllbGQncyB2YWx1ZS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI2dldFxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IGtleSBLZXlcbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9Bc3NlcnQgV2hldGhlciB0byBub3QgYXNzZXJ0IGZvciBhbiBhY3R1YWwgZmllbGQsIGRlZmF1bHRzIHRvIGBmYWxzZWBcbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7Kn0gVmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIGlzIG5vIHN1Y2ggZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihrZXksIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9Bc3NlcnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNba2V5XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmaWVsZCA9IFQuX2ZpZWxkc0J5TmFtZVtrZXldO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaWVsZCB8fCAhKGZpZWxkIGluc3RhbmNlb2YgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkZpZWxkKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcih0aGlzK1wiI1wiK2tleStcIiBpcyBub3QgYSBmaWVsZDogdW5kZWZpbmVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoZmllbGQgaW5zdGFuY2VvZiBQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKHRoaXMrXCIjXCIra2V5K1wiIGlzIG5vdCBhIGZpZWxkOiBcIitmaWVsZC50b1N0cmluZyh0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpc1tmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogR2V0cyBhIGZpZWxkJ3MgdmFsdWUuIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHtAbGluayBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjJGdldH0uXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSMkZ2V0XG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IEtleVxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHsqfSBWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgaXMgbm8gc3VjaCBmaWVsZFxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLiRnZXQgPSBNZXNzYWdlUHJvdG90eXBlLmdldDtcblxuICAgICAgICAgICAgICAgICAgICAvLyBHZXR0ZXJzIGFuZCBzZXR0ZXJzXG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpZWxkID0gZmllbGRzW2ldO1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gc2V0dGVycyBmb3IgZXh0ZW5zaW9uIGZpZWxkcyBhcyB0aGVzZSBhcmUgbmFtZWQgYnkgdGhlaXIgZnFuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQgaW5zdGFuY2VvZiBQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRXh0ZW5zaW9uRmllbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChULmJ1aWxkZXIub3B0aW9uc1sncG9wdWxhdGVBY2Nlc3NvcnMnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb24oZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0L2dldFtTb21lVmFsdWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBOYW1lID0gZmllbGQub3JpZ2luYWxOYW1lLnJlcGxhY2UoLyhfW2EtekEtWl0pL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2gudG9VcHBlckNhc2UoKS5yZXBsYWNlKCdfJywnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0gTmFtZS5zdWJzdHJpbmcoMCwxKS50b1VwcGVyQ2FzZSgpICsgTmFtZS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0L2dldF9bc29tZV92YWx1ZV0gRklYTUU6IERvIHdlIHJlYWxseSBuZWVkIHRoZXNlP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbmFtZSA9IGZpZWxkLm9yaWdpbmFsTmFtZS5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJfXCIrbWF0Y2g7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgY3VycmVudCBmaWVsZCdzIHVuYm91bmQgc2V0dGVyIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub0Fzc2VydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJucyB7IVByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2V0dGVyID0gZnVuY3Rpb24odmFsdWUsIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW2ZpZWxkLm5hbWVdID0gbm9Bc3NlcnQgPyB2YWx1ZSA6IGZpZWxkLnZlcmlmeVZhbHVlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgY3VycmVudCBmaWVsZCdzIHVuYm91bmQgZ2V0dGVyIGZ1bmN0aW9uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQHJldHVybnMgeyp9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdldHRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNbZmllbGQubmFtZV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFNldHMgYSB2YWx1ZS4gVGhpcyBtZXRob2QgaXMgcHJlc2VudCBmb3IgZWFjaCBmaWVsZCwgYnV0IG9ubHkgaWYgdGhlcmUgaXMgbm8gbmFtZSBjb25mbGljdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICBhbm90aGVyIGZpZWxkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2Ujc2V0W1NvbWVGaWVsZF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gbm90IGFzc2VydCB0aGUgdmFsdWUsIGRlZmF1bHRzIHRvIGBmYWxzZWBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQHJldHVybnMgeyFQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2V9IHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQGFic3RyYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIHNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFQuZ2V0Q2hpbGQoXCJzZXRcIitOYW1lKSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGVbXCJzZXRcIitOYW1lXSA9IHNldHRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogU2V0cyBhIHZhbHVlLiBUaGlzIG1ldGhvZCBpcyBwcmVzZW50IGZvciBlYWNoIGZpZWxkLCBidXQgb25seSBpZiB0aGVyZSBpcyBubyBuYW1lIGNvbmZsaWN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogIGFub3RoZXIgZmllbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNzZXRfW3NvbWVfZmllbGRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIHNldFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub0Fzc2VydCBXaGV0aGVyIHRvIG5vdCBhc3NlcnQgdGhlIHZhbHVlLCBkZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm5zIHshUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlfSB0aGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBhYnN0cmFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChULmdldENoaWxkKFwic2V0X1wiK25hbWUpID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZVtcInNldF9cIituYW1lXSA9IHNldHRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogR2V0cyBhIHZhbHVlLiBUaGlzIG1ldGhvZCBpcyBwcmVzZW50IGZvciBlYWNoIGZpZWxkLCBidXQgb25seSBpZiB0aGVyZSBpcyBubyBuYW1lIGNvbmZsaWN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogIGFub3RoZXIgZmllbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNnZXRbU29tZUZpZWxkXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQGFic3RyYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4geyp9IFRoZSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFQuZ2V0Q2hpbGQoXCJnZXRcIitOYW1lKSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGVbXCJnZXRcIitOYW1lXSA9IGdldHRlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogR2V0cyBhIHZhbHVlLiBUaGlzIG1ldGhvZCBpcyBwcmVzZW50IGZvciBlYWNoIGZpZWxkLCBidXQgb25seSBpZiB0aGVyZSBpcyBubyBuYW1lIGNvbmZsaWN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogIGFub3RoZXIgZmllbGQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNnZXRfW3NvbWVfZmllbGRdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHsqfSBUaGUgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQGFic3RyYWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoVC5nZXRDaGlsZChcImdldF9cIituYW1lKSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGVbXCJnZXRfXCIrbmFtZV0gPSBnZXR0ZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KShmaWVsZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAvLyBFbi0vZGVjb2RpbmdcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogRW5jb2RlcyB0aGUgbWVzc2FnZS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlIyRlbmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7KCFCeXRlQnVmZmVyfGJvb2xlYW4pPX0gYnVmZmVyIEJ5dGVCdWZmZXIgdG8gZW5jb2RlIHRvLiBXaWxsIGNyZWF0ZSBhIG5ldyBvbmUgYW5kIGZsaXAgaXQgaWYgb21pdHRlZC5cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9WZXJpZnkgV2hldGhlciB0byBub3QgdmVyaWZ5IGZpZWxkIHZhbHVlcywgZGVmYXVsdHMgdG8gYGZhbHNlYFxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHshQnl0ZUJ1ZmZlcn0gRW5jb2RlZCBtZXNzYWdlIGFzIGEgQnl0ZUJ1ZmZlclxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGVuY29kZWQgQnl0ZUJ1ZmZlciBpbiB0aGUgYGVuY29kZWRgIHByb3BlcnR5IG9uIHRoZSBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKiBAc2VlIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNlbmNvZGU2NFxuICAgICAgICAgICAgICAgICAgICAgKiBAc2VlIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNlbmNvZGVIZXhcbiAgICAgICAgICAgICAgICAgICAgICogQHNlZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjZW5jb2RlQUJcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24oYnVmZmVyLCBub1ZlcmlmeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdib29sZWFuJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub1ZlcmlmeSA9IGJ1ZmZlcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNOZXcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYnVmZmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBCeXRlQnVmZmVyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxlID0gYnVmZmVyLmxpdHRsZUVuZGlhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVC5lbmNvZGUodGhpcywgYnVmZmVyLkxFKCksIG5vVmVyaWZ5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGlzTmV3ID8gYnVmZmVyLmZsaXAoKSA6IGJ1ZmZlcikuTEUobGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5MRShsZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIENhbGN1bGF0ZXMgdGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlLlxuICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjY2FsY3VsYXRlXG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBCeXRlIGxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGNhbGN1bGF0ZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLlxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLmNhbGN1bGF0ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFQuY2FsY3VsYXRlKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBFbmNvZGVzIHRoZSB2YXJpbnQzMiBsZW5ndGgtZGVsaW1pdGVkIG1lc3NhZ2UuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNlbmNvZGVEZWxpbWl0ZWRcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7KCFCeXRlQnVmZmVyfGJvb2xlYW4pPX0gYnVmZmVyIEJ5dGVCdWZmZXIgdG8gZW5jb2RlIHRvLiBXaWxsIGNyZWF0ZSBhIG5ldyBvbmUgYW5kIGZsaXAgaXQgaWYgb21pdHRlZC5cbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7IUJ5dGVCdWZmZXJ9IEVuY29kZWQgbWVzc2FnZSBhcyBhIEJ5dGVCdWZmZXJcbiAgICAgICAgICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBtZXNzYWdlIGNhbm5vdCBiZSBlbmNvZGVkIG9yIGlmIHJlcXVpcmVkIGZpZWxkcyBhcmUgbWlzc2luZy4gVGhlIGxhdGVyIHN0aWxsXG4gICAgICAgICAgICAgICAgICAgICAqICByZXR1cm5zIHRoZSBlbmNvZGVkIEJ5dGVCdWZmZXIgaW4gdGhlIGBlbmNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlRGVsaW1pdGVkID0gZnVuY3Rpb24oYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNOZXcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYnVmZmVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBCeXRlQnVmZmVyKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNOZXcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuYyA9IG5ldyBCeXRlQnVmZmVyKCkuTEUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIFQuZW5jb2RlKHRoaXMsIGVuYykuZmxpcCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLndyaXRlVmFyaW50MzIoZW5jLnJlbWFpbmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoZW5jKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc05ldyA/IGJ1ZmZlci5mbGlwKCkgOiBidWZmZXI7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIERpcmVjdGx5IGVuY29kZXMgdGhlIG1lc3NhZ2UgdG8gYW4gQXJyYXlCdWZmZXIuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNlbmNvZGVBQlxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7QXJyYXlCdWZmZXJ9IEVuY29kZWQgbWVzc2FnZSBhcyBBcnJheUJ1ZmZlclxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGVuY29kZWQgQXJyYXlCdWZmZXIgaW4gdGhlIGBlbmNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlQUIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlKCkudG9BcnJheUJ1ZmZlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW1wiZW5jb2RlZFwiXSkgZVtcImVuY29kZWRcIl0gPSBlW1wiZW5jb2RlZFwiXS50b0FycmF5QnVmZmVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3coZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIFJldHVybnMgdGhlIG1lc3NhZ2UgYXMgYW4gQXJyYXlCdWZmZXIuIFRoaXMgaXMgYW4gYWxpYXMgZm9yIHtAbGluayBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjZW5jb2RlQUJ9LlxuICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjdG9BcnJheUJ1ZmZlclxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7QXJyYXlCdWZmZXJ9IEVuY29kZWQgbWVzc2FnZSBhcyBBcnJheUJ1ZmZlclxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGVuY29kZWQgQXJyYXlCdWZmZXIgaW4gdGhlIGBlbmNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUudG9BcnJheUJ1ZmZlciA9IE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlQUI7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIERpcmVjdGx5IGVuY29kZXMgdGhlIG1lc3NhZ2UgdG8gYSBub2RlIEJ1ZmZlci5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI2VuY29kZU5CXG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHshQnVmZmVyfVxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQsIG5vdCBydW5uaW5nIHVuZGVyIG5vZGUuanMgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZVxuICAgICAgICAgICAgICAgICAgICAgKiAgbWlzc2luZy4gVGhlIGxhdGVyIHN0aWxsIHJldHVybnMgdGhlIGVuY29kZWQgbm9kZSBCdWZmZXIgaW4gdGhlIGBlbmNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlTkIgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlKCkudG9CdWZmZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtcImVuY29kZWRcIl0pIGVbXCJlbmNvZGVkXCJdID0gZVtcImVuY29kZWRcIl0udG9CdWZmZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogUmV0dXJucyB0aGUgbWVzc2FnZSBhcyBhIG5vZGUgQnVmZmVyLiBUaGlzIGlzIGFuIGFsaWFzIGZvciB7QGxpbmsgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI2VuY29kZU5CfS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI3RvQnVmZmVyXG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHshQnVmZmVyfVxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGVuY29kZWQgbm9kZSBCdWZmZXIgaW4gdGhlIGBlbmNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUudG9CdWZmZXIgPSBNZXNzYWdlUHJvdG90eXBlLmVuY29kZU5CO1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBEaXJlY3RseSBlbmNvZGVzIHRoZSBtZXNzYWdlIHRvIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLlxuICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjZW5jb2RlNjRcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gQmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdW5kZXJseWluZyBidWZmZXIgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXJcbiAgICAgICAgICAgICAgICAgICAgICogIHN0aWxsIHJldHVybnMgdGhlIGVuY29kZWQgYmFzZTY0IHN0cmluZyBpbiB0aGUgYGVuY29kZWRgIHByb3BlcnR5IG9uIHRoZSBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZS5lbmNvZGU2NCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbmNvZGUoKS50b0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlW1wiZW5jb2RlZFwiXSkgZVtcImVuY29kZWRcIl0gPSBlW1wiZW5jb2RlZFwiXS50b0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93KGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlIGFzIGEgYmFzZTY0IGVuY29kZWQgc3RyaW5nLiBUaGlzIGlzIGFuIGFsaWFzIGZvciB7QGxpbmsgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI2VuY29kZTY0fS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI3RvQmFzZTY0XG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IEJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGVuY29kZWQgYmFzZTY0IHN0cmluZyBpbiB0aGUgYGVuY29kZWRgIHByb3BlcnR5IG9uIHRoZSBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZS50b0Jhc2U2NCA9IE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlNjQ7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIERpcmVjdGx5IGVuY29kZXMgdGhlIG1lc3NhZ2UgdG8gYSBoZXggZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNlbmNvZGVIZXhcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gSGV4IGVuY29kZWQgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdW5kZXJseWluZyBidWZmZXIgY2Fubm90IGJlIGVuY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXJcbiAgICAgICAgICAgICAgICAgICAgICogIHN0aWxsIHJldHVybnMgdGhlIGVuY29kZWQgaGV4IHN0cmluZyBpbiB0aGUgYGVuY29kZWRgIHByb3BlcnR5IG9uIHRoZSBlcnJvci5cbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZS5lbmNvZGVIZXggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZW5jb2RlKCkudG9IZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZVtcImVuY29kZWRcIl0pIGVbXCJlbmNvZGVkXCJdID0gZVtcImVuY29kZWRcIl0udG9IZXgoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogUmV0dXJucyB0aGUgbWVzc2FnZSBhcyBhIGhleCBlbmNvZGVkIHN0cmluZy4gVGhpcyBpcyBhbiBhbGlhcyBmb3Ige0BsaW5rIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSNlbmNvZGVIZXh9LlxuICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UjdG9IZXhcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4ge3N0cmluZ30gSGV4IGVuY29kZWQgc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgZW5jb2RlZCBvciBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmcuIFRoZSBsYXRlciBzdGlsbFxuICAgICAgICAgICAgICAgICAgICAgKiAgcmV0dXJucyB0aGUgZW5jb2RlZCBoZXggc3RyaW5nIGluIHRoZSBgZW5jb2RlZGAgcHJvcGVydHkgb24gdGhlIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLnRvSGV4ID0gTWVzc2FnZVByb3RvdHlwZS5lbmNvZGVIZXg7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIENsb25lcyBhIG1lc3NhZ2Ugb2JqZWN0IHRvIGEgcmF3IG9iamVjdC5cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHsqfSBvYmogT2JqZWN0IHRvIGNsb25lXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gaW5jbHVkZUJpbmFyeUFzQmFzZTY0IFdoZXRoZXIgdG8gaW5jbHVkZSBiaW5hcnkgZGF0YSBhcyBiYXNlNjQgc3RyaW5ncyBvciBub3RcbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybnMgeyp9IENsb25lZCBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBjbG9uZVJhdyhvYmosIGluY2x1ZGVCaW5hcnlBc0Jhc2U2NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsb25lID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIG9iailcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmhhc093blByb3BlcnR5KGkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmpbaV0gPT09IG51bGwgfHwgdHlwZW9mIG9ialtpXSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZVtpXSA9IG9ialtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAob2JqW2ldIGluc3RhbmNlb2YgQnl0ZUJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVCaW5hcnlBc0Jhc2U2NClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZVtpXSA9IG9ialtpXS50b0Jhc2U2NCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgLy8gaXMgYSBub24tbnVsbCBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lW2ldID0gY2xvbmVSYXcob2JqW2ldLCBpbmNsdWRlQmluYXJ5QXNCYXNlNjQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbG9uZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBSZXR1cm5zIHRoZSBtZXNzYWdlJ3MgcmF3IHBheWxvYWQuXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGluY2x1ZGVCaW5hcnlBc0Jhc2U2NCBXaGV0aGVyIHRvIGluY2x1ZGUgYmluYXJ5IGRhdGEgYXMgYmFzZTY0IHN0cmluZ3Mgb3Igbm90LCBkZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm5zIHtPYmplY3QuPHN0cmluZywqPn0gUmF3IHBheWxvYWRcbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZVByb3RvdHlwZS50b1JhdyA9IGZ1bmN0aW9uKGluY2x1ZGVCaW5hcnlBc0Jhc2U2NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNsb25lUmF3KHRoaXMsICEhaW5jbHVkZUJpbmFyeUFzQmFzZTY0KTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogRGVjb2RlcyBhIG1lc3NhZ2UgZnJvbSB0aGUgc3BlY2lmaWVkIGJ1ZmZlciBvciBzdHJpbmcuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZS5kZWNvZGVcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7IUJ5dGVCdWZmZXJ8IUFycmF5QnVmZmVyfCFCdWZmZXJ8c3RyaW5nfSBidWZmZXIgQnVmZmVyIHRvIGRlY29kZSBmcm9tXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gZW5jIEVuY29kaW5nIGlmIGJ1ZmZlciBpcyBhIHN0cmluZzogaGV4LCB1dGY4IChub3QgcmVjb21tZW5kZWQpLCBkZWZhdWx0cyB0byBiYXNlNjRcbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7IVByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZX0gRGVjb2RlZCBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgZGVjb2RlZCBvciBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmcuIFRoZSBsYXRlciBzdGlsbFxuICAgICAgICAgICAgICAgICAgICAgKiAgcmV0dXJucyB0aGUgZGVjb2RlZCBtZXNzYWdlIHdpdGggbWlzc2luZyBmaWVsZHMgaW4gdGhlIGBkZWNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICogQHNlZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UuZGVjb2RlNjRcbiAgICAgICAgICAgICAgICAgICAgICogQHNlZSBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UuZGVjb2RlSGV4XG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlLmRlY29kZSA9IGZ1bmN0aW9uKGJ1ZmZlciwgZW5jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gQnl0ZUJ1ZmZlci53cmFwKGJ1ZmZlciwgZW5jID8gZW5jIDogXCJiYXNlNjRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSBidWZmZXIgaW5zdGFuY2VvZiBCeXRlQnVmZmVyID8gYnVmZmVyIDogQnl0ZUJ1ZmZlci53cmFwKGJ1ZmZlcik7IC8vIE1heSB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxlID0gYnVmZmVyLmxpdHRsZUVuZGlhbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9IFQuZGVjb2RlKGJ1ZmZlci5MRSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuTEUobGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtc2c7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLkxFKGxlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyhlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogRGVjb2RlcyBhIHZhcmludDMyIGxlbmd0aC1kZWxpbWl0ZWQgbWVzc2FnZSBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyIG9yIHN0cmluZy5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlLmRlY29kZURlbGltaXRlZFxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHshQnl0ZUJ1ZmZlcnwhQXJyYXlCdWZmZXJ8IUJ1ZmZlcnxzdHJpbmd9IGJ1ZmZlciBCdWZmZXIgdG8gZGVjb2RlIGZyb21cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBlbmMgRW5jb2RpbmcgaWYgYnVmZmVyIGlzIGEgc3RyaW5nOiBoZXgsIHV0ZjggKG5vdCByZWNvbW1lbmRlZCksIGRlZmF1bHRzIHRvIGJhc2U2NFxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHtQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2V9IERlY29kZWQgbWVzc2FnZSBvciBgbnVsbGAgaWYgbm90IGVub3VnaCBieXRlcyBhcmUgYXZhaWxhYmxlIHlldFxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGRlY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGRlY29kZWQgbWVzc2FnZSB3aXRoIG1pc3NpbmcgZmllbGRzIGluIHRoZSBgZGVjb2RlZGAgcHJvcGVydHkgb24gdGhlIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlLmRlY29kZURlbGltaXRlZCA9IGZ1bmN0aW9uKGJ1ZmZlciwgZW5jKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJ1ZmZlciA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyID0gQnl0ZUJ1ZmZlci53cmFwKGJ1ZmZlciwgZW5jID8gZW5jIDogXCJiYXNlNjRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIgPSBidWZmZXIgaW5zdGFuY2VvZiBCeXRlQnVmZmVyID8gYnVmZmVyIDogQnl0ZUJ1ZmZlci53cmFwKGJ1ZmZlcik7IC8vIE1heSB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5yZW1haW5pbmcoKSA8IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2ZmID0gYnVmZmVyLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gPSBidWZmZXIucmVhZFZhcmludDMyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLnJlbWFpbmluZygpIDwgbGVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLm9mZnNldCA9IG9mZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1zZyA9IFQuZGVjb2RlKGJ1ZmZlci5zbGljZShidWZmZXIub2Zmc2V0LCBidWZmZXIub2Zmc2V0ICsgbGVuKS5MRSgpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIub2Zmc2V0ICs9IGxlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXNnO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLm9mZnNldCArPSBsZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBEZWNvZGVzIHRoZSBtZXNzYWdlIGZyb20gdGhlIHNwZWNpZmllZCBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZS5kZWNvZGU2NFxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBTdHJpbmcgdG8gZGVjb2RlIGZyb21cbiAgICAgICAgICAgICAgICAgICAgICogQHJldHVybiB7IVByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZX0gRGVjb2RlZCBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgZGVjb2RlZCBvciBpZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3NpbmcuIFRoZSBsYXRlciBzdGlsbFxuICAgICAgICAgICAgICAgICAgICAgKiAgcmV0dXJucyB0aGUgZGVjb2RlZCBtZXNzYWdlIHdpdGggbWlzc2luZyBmaWVsZHMgaW4gdGhlIGBkZWNvZGVkYCBwcm9wZXJ0eSBvbiB0aGUgZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UuZGVjb2RlNjQgPSBmdW5jdGlvbihzdHIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBNZXNzYWdlLmRlY29kZShzdHIsIFwiYmFzZTY0XCIpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBEZWNvZGVzIHRoZSBtZXNzYWdlIGZyb20gdGhlIHNwZWNpZmllZCBoZXggZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZS5kZWNvZGVIZXhcbiAgICAgICAgICAgICAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nIHRvIGRlY29kZSBmcm9tXG4gICAgICAgICAgICAgICAgICAgICAqIEByZXR1cm4geyFQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2V9IERlY29kZWQgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGRlY29kZWQgb3IgaWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nLiBUaGUgbGF0ZXIgc3RpbGxcbiAgICAgICAgICAgICAgICAgICAgICogIHJldHVybnMgdGhlIGRlY29kZWQgbWVzc2FnZSB3aXRoIG1pc3NpbmcgZmllbGRzIGluIHRoZSBgZGVjb2RlZGAgcHJvcGVydHkgb24gdGhlIGVycm9yLlxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlLmRlY29kZUhleCA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1lc3NhZ2UuZGVjb2RlKHN0ciwgXCJoZXhcIik7XG4gICAgICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gVXRpbGl0eVxuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBSZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgTWVzc2FnZS5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlI3RvU3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBvZiBcIi5GdWxseS5RdWFsaWZpZWQuTWVzc2FnZU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVC50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFByb3BlcnRpZXNcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogT3B0aW9ucy5cbiAgICAgICAgICAgICAgICAgICAgICogQG5hbWUgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlLiRvcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAqIEB0eXBlIHtPYmplY3QuPHN0cmluZywqPn1cbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgdmFyICRvcHRpb25zOyAvLyBjY1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBSZWZsZWN0aW9uIHR5cGUuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSMkdHlwZVxuICAgICAgICAgICAgICAgICAgICAgKiBAdHlwZSB7IVByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgdmFyICR0eXBlOyAvLyBjY1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpXG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTWVzc2FnZSwgJyRvcHRpb25zJywgeyBcInZhbHVlXCI6IFQuYnVpbGRPcHQoKSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNZXNzYWdlUHJvdG90eXBlLCBcIiR0eXBlXCIsIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gVDsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE1lc3NhZ2U7XG5cbiAgICAgICAgICAgICAgICB9KShQcm90b0J1ZiwgdGhpcyk7XG5cbiAgICAgICAgICAgICAgICAvLyBTdGF0aWMgZW51bXMgYW5kIHByb3RvdHlwZWQgc3ViLW1lc3NhZ2VzIC8gY2FjaGVkIGNvbGxlY3Rpb25zXG4gICAgICAgICAgICAgICAgdGhpcy5fZmllbGRzID0gW107XG4gICAgICAgICAgICAgICAgdGhpcy5fZmllbGRzQnlJZCA9IHt9O1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkc0J5TmFtZSA9IHt9O1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaz10aGlzLmNoaWxkcmVuLmxlbmd0aCwgY2hpbGQ7IGk8azsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkID0gdGhpcy5jaGlsZHJlbltpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgRW51bSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXp6W2NoaWxkLm5hbWVdID0gY2hpbGQuYnVpbGQoKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2hpbGQgaW5zdGFuY2VvZiBNZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhenpbY2hpbGQubmFtZV0gPSBjaGlsZC5idWlsZCgpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjaGlsZCBpbnN0YW5jZW9mIE1lc3NhZ2UuRmllbGQpXG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5idWlsZCgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmllbGRzLnB1c2goY2hpbGQpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZmllbGRzQnlJZFtjaGlsZC5pZF0gPSBjaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpZWxkc0J5TmFtZVtjaGlsZC5uYW1lXSA9IGNoaWxkO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghKGNoaWxkIGluc3RhbmNlb2YgTWVzc2FnZS5PbmVPZikgJiYgIShjaGlsZCBpbnN0YW5jZW9mIEV4dGVuc2lvbikpIC8vIE5vdCBidWlsdFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHJlZmxlY3QgY2hpbGQgb2YgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrY2hpbGRyZW5baV0udG9TdHJpbmcodHJ1ZSkpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNsYXp6ID0gY2xheno7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuY29kZXMgYSBydW50aW1lIG1lc3NhZ2UncyBjb250ZW50cyB0byB0aGUgc3BlY2lmaWVkIGJ1ZmZlci5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZX0gbWVzc2FnZSBSdW50aW1lIG1lc3NhZ2UgdG8gZW5jb2RlXG4gICAgICAgICAgICAgKiBAcGFyYW0ge0J5dGVCdWZmZXJ9IGJ1ZmZlciBCeXRlQnVmZmVyIHRvIHdyaXRlIHRvXG4gICAgICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub1ZlcmlmeSBXaGV0aGVyIHRvIG5vdCB2ZXJpZnkgZmllbGQgdmFsdWVzLCBkZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtCeXRlQnVmZmVyfSBUaGUgQnl0ZUJ1ZmZlciBmb3IgY2hhaW5pbmdcbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiByZXF1aXJlZCBmaWVsZHMgYXJlIG1pc3Npbmcgb3IgdGhlIG1lc3NhZ2UgY2Fubm90IGJlIGVuY29kZWQgZm9yIGFub3RoZXIgcmVhc29uXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuZW5jb2RlID0gZnVuY3Rpb24obWVzc2FnZSwgYnVmZmVyLCBub1ZlcmlmeSkge1xuICAgICAgICAgICAgICAgIHZhciBmaWVsZE1pc3NpbmcgPSBudWxsLFxuICAgICAgICAgICAgICAgICAgICBmaWVsZDtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGs9dGhpcy5fZmllbGRzLmxlbmd0aCwgdmFsOyBpPGs7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IHRoaXMuX2ZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gbWVzc2FnZVtmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnJlcXVpcmVkICYmIHZhbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkTWlzc2luZyA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZE1pc3NpbmcgPSBmaWVsZDtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5lbmNvZGUobm9WZXJpZnkgPyB2YWwgOiBmaWVsZC52ZXJpZnlWYWx1ZSh2YWwpLCBidWZmZXIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZmllbGRNaXNzaW5nICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcihcIk1pc3NpbmcgYXQgbGVhc3Qgb25lIHJlcXVpcmVkIGZpZWxkIGZvciBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiOiBcIitmaWVsZE1pc3NpbmcpO1xuICAgICAgICAgICAgICAgICAgICBlcnJbXCJlbmNvZGVkXCJdID0gYnVmZmVyOyAvLyBTdGlsbCBleHBvc2Ugd2hhdCB3ZSBnb3RcbiAgICAgICAgICAgICAgICAgICAgdGhyb3coZXJyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlcjtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FsY3VsYXRlcyBhIHJ1bnRpbWUgbWVzc2FnZSdzIGJ5dGUgbGVuZ3RoLlxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlfSBtZXNzYWdlIFJ1bnRpbWUgbWVzc2FnZSB0byBlbmNvZGVcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IEJ5dGUgbGVuZ3RoXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgcmVxdWlyZWQgZmllbGRzIGFyZSBtaXNzaW5nIG9yIHRoZSBtZXNzYWdlIGNhbm5vdCBiZSBjYWxjdWxhdGVkIGZvciBhbm90aGVyIHJlYXNvblxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBNZXNzYWdlUHJvdG90eXBlLmNhbGN1bGF0ZSA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBuPTAsIGk9MCwgaz10aGlzLl9maWVsZHMubGVuZ3RoLCBmaWVsZCwgdmFsOyBpPGs7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IHRoaXMuX2ZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gbWVzc2FnZVtmaWVsZC5uYW1lXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnJlcXVpcmVkICYmIHZhbCA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJNaXNzaW5nIGF0IGxlYXN0IG9uZSByZXF1aXJlZCBmaWVsZCBmb3IgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrZmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBuICs9IGZpZWxkLmNhbGN1bGF0ZSh2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbjtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogU2tpcHMgYWxsIGRhdGEgdW50aWwgdGhlIGVuZCBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwIGhhcyBiZWVuIHJlYWNoZWQuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gZXhwZWN0ZWRJZCBFeHBlY3RlZCBHUk9VUEVORCBpZFxuICAgICAgICAgICAgICogQHBhcmFtIHshQnl0ZUJ1ZmZlcn0gYnVmIEJ5dGVCdWZmZXJcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgYSB2YWx1ZSBhcyBiZWVuIHNraXBwZWQsIGBmYWxzZWAgaWYgdGhlIGVuZCBoYXMgYmVlbiByZWFjaGVkXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQgd2Fzbid0IHBvc3NpYmxlIHRvIGZpbmQgdGhlIGVuZCBvZiB0aGUgZ3JvdXAgKGJ1ZmZlciBvdmVycnVuIG9yIGVuZCB0YWcgbWlzbWF0Y2gpXG4gICAgICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgZnVuY3Rpb24gc2tpcFRpbGxHcm91cEVuZChleHBlY3RlZElkLCBidWYpIHtcbiAgICAgICAgICAgICAgICB2YXIgdGFnID0gYnVmLnJlYWRWYXJpbnQzMigpLCAvLyBUaHJvd3Mgb24gT09CXG4gICAgICAgICAgICAgICAgICAgIHdpcmVUeXBlID0gdGFnICYgMHgwNyxcbiAgICAgICAgICAgICAgICAgICAgaWQgPSB0YWcgPj4gMztcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHdpcmVUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuV0lSRV9UWVBFUy5WQVJJTlQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBkbyB0YWcgPSBidWYucmVhZFVpbnQ4KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoKHRhZyAmIDB4ODApID09PSAweDgwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLldJUkVfVFlQRVMuQklUUzY0OlxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmLm9mZnNldCArPSA4O1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuV0lSRV9UWVBFUy5MREVMSU06XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWcgPSBidWYucmVhZFZhcmludDMyKCk7IC8vIHJlYWRzIHRoZSB2YXJpbnRcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5vZmZzZXQgKz0gdGFnOyAgICAgICAgLy8gc2tpcHMgbiBieXRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuV0lSRV9UWVBFUy5TVEFSVEdST1VQOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcFRpbGxHcm91cEVuZChpZCwgYnVmKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLldJUkVfVFlQRVMuRU5ER1JPVVA6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWQgPT09IGV4cGVjdGVkSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBHUk9VUEVORCBhZnRlciB1bmtub3duIGdyb3VwOiBcIitpZCtcIiAoXCIrZXhwZWN0ZWRJZCtcIiBleHBlY3RlZClcIik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuV0lSRV9UWVBFUy5CSVRTMzI6XG4gICAgICAgICAgICAgICAgICAgICAgICBidWYub2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB3aXJlIHR5cGUgaW4gdW5rbm93biBncm91cCBcIitleHBlY3RlZElkK1wiOiBcIit3aXJlVHlwZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERlY29kZXMgYW4gZW5jb2RlZCBtZXNzYWdlIGFuZCByZXR1cm5zIHRoZSBkZWNvZGVkIG1lc3NhZ2UuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge0J5dGVCdWZmZXJ9IGJ1ZmZlciBCeXRlQnVmZmVyIHRvIGRlY29kZSBmcm9tXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IGxlbmd0aCBNZXNzYWdlIGxlbmd0aC4gRGVmYXVsdHMgdG8gZGVjb2RlIGFsbCB0aGUgYXZhaWxhYmxlIGRhdGEuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IGV4cGVjdGVkR3JvdXBFbmRJZCBFeHBlY3RlZCBHUk9VUEVORCBpZCBpZiB0aGlzIGlzIGEgbGVnYWN5IGdyb3VwXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2V9IERlY29kZWQgbWVzc2FnZVxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBtZXNzYWdlIGNhbm5vdCBiZSBkZWNvZGVkXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE1lc3NhZ2VQcm90b3R5cGUuZGVjb2RlID0gZnVuY3Rpb24oYnVmZmVyLCBsZW5ndGgsIGV4cGVjdGVkR3JvdXBFbmRJZCkge1xuICAgICAgICAgICAgICAgIGxlbmd0aCA9IHR5cGVvZiBsZW5ndGggPT09ICdudW1iZXInID8gbGVuZ3RoIDogLTE7XG4gICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gYnVmZmVyLm9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgbXNnID0gbmV3ICh0aGlzLmNsYXp6KSgpLFxuICAgICAgICAgICAgICAgICAgICB0YWcsIHdpcmVUeXBlLCBpZCwgZmllbGQ7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGJ1ZmZlci5vZmZzZXQgPCBzdGFydCtsZW5ndGggfHwgKGxlbmd0aCA9PT0gLTEgJiYgYnVmZmVyLnJlbWFpbmluZygpID4gMCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFnID0gYnVmZmVyLnJlYWRWYXJpbnQzMigpO1xuICAgICAgICAgICAgICAgICAgICB3aXJlVHlwZSA9IHRhZyAmIDB4MDc7XG4gICAgICAgICAgICAgICAgICAgIGlkID0gdGFnID4+IDM7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXJlVHlwZSA9PT0gUHJvdG9CdWYuV0lSRV9UWVBFUy5FTkRHUk9VUCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkICE9PSBleHBlY3RlZEdyb3VwRW5kSWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGdyb3VwIGVuZCBpbmRpY2F0b3IgZm9yIFwiK3RoaXMudG9TdHJpbmcodHJ1ZSkrXCI6IFwiK2lkK1wiIChcIisoZXhwZWN0ZWRHcm91cEVuZElkID8gZXhwZWN0ZWRHcm91cEVuZElkK1wiIGV4cGVjdGVkXCIgOiBcIm5vdCBhIGdyb3VwXCIpK1wiKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGZpZWxkID0gdGhpcy5fZmllbGRzQnlJZFtpZF0pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcIm1lc3NhZ2VzIGNyZWF0ZWQgYnkgeW91ciBuZXcgY29kZSBjYW4gYmUgcGFyc2VkIGJ5IHlvdXIgb2xkIGNvZGU6IG9sZCBiaW5hcmllcyBzaW1wbHkgaWdub3JlIHRoZSBuZXcgZmllbGQgd2hlbiBwYXJzaW5nLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHdpcmVUeXBlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5XSVJFX1RZUEVTLlZBUklOVDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnJlYWRWYXJpbnQzMigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLldJUkVfVFlQRVMuQklUUzMyOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIub2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuV0lSRV9UWVBFUy5CSVRTNjQ6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vZmZzZXQgKz0gODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5XSVJFX1RZUEVTLkxERUxJTTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IGJ1ZmZlci5yZWFkVmFyaW50MzIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLm9mZnNldCArPSBsZW47XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuV0lSRV9UWVBFUy5TVEFSVEdST1VQOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoc2tpcFRpbGxHcm91cEVuZChpZCwgYnVmZmVyKSkge31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHdpcmUgdHlwZSBmb3IgdW5rbm93biBmaWVsZCBcIitpZCtcIiBpbiBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiI2RlY29kZTogXCIrd2lyZVR5cGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkLnJlcGVhdGVkICYmICFmaWVsZC5vcHRpb25zW1wicGFja2VkXCJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2ZpZWxkLm5hbWVdLnB1c2goZmllbGQuZGVjb2RlKHdpcmVUeXBlLCBidWZmZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBtc2dbZmllbGQubmFtZV0gPSBmaWVsZC5kZWNvZGUod2lyZVR5cGUsIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmllbGQub25lb2YpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc1tmaWVsZC5vbmVvZi5uYW1lXSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1t0aGlzW2ZpZWxkLm9uZW9mLm5hbWVdXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2ZpZWxkLm9uZW9mLm5hbWVdID0gZmllbGQubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGFsbCByZXF1aXJlZCBmaWVsZHMgYXJlIHByZXNlbnQgYW5kIHNldCBkZWZhdWx0IHZhbHVlcyBmb3Igb3B0aW9uYWwgZmllbGRzIHRoYXQgYXJlIG5vdFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaz10aGlzLl9maWVsZHMubGVuZ3RoOyBpPGs7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBmaWVsZCA9IHRoaXMuX2ZpZWxkc1tpXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1zZ1tmaWVsZC5uYW1lXSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZC5yZXF1aXJlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcihcIk1pc3NpbmcgYXQgbGVhc3Qgb25lIHJlcXVpcmVkIGZpZWxkIGZvciBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiOiBcIitmaWVsZC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJbXCJkZWNvZGVkXCJdID0gbXNnOyAvLyBTdGlsbCBleHBvc2Ugd2hhdCB3ZSBnb3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyhlcnIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWVsZC5kZWZhdWx0VmFsdWUgIT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnW2ZpZWxkLm5hbWVdID0gZmllbGQuZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbXNnO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFJlZmxlY3QuTWVzc2FnZSA9IE1lc3NhZ2U7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29uc3RydWN0cyBhIG5ldyBNZXNzYWdlIEZpZWxkLlxuICAgICAgICAgICAgICogQGV4cG9ydHMgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkZpZWxkXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5CdWlsZGVyfSBidWlsZGVyIEJ1aWxkZXIgcmVmZXJlbmNlXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2V9IG1lc3NhZ2UgTWVzc2FnZSByZWZlcmVuY2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBydWxlIFJ1bGUsIG9uZSBvZiByZXF1cmllZCwgb3B0aW9uYWwsIHJlcGVhdGVkXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBEYXRhIHR5cGUsIGUuZy4gaW50MzJcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIEZpZWxkIG5hbWVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpZCBVbmlxdWUgZmllbGQgaWRcbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj49fSBvcHRpb25zIE9wdGlvbnNcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5PbmVPZj19IG9uZW9mIEVuY2xvc2luZyBPbmVPZlxuICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgKiBAZXh0ZW5kcyBQcm90b0J1Zi5SZWZsZWN0LlRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIEZpZWxkID0gZnVuY3Rpb24oYnVpbGRlciwgbWVzc2FnZSwgcnVsZSwgdHlwZSwgbmFtZSwgaWQsIG9wdGlvbnMsIG9uZW9mKSB7XG4gICAgICAgICAgICAgICAgVC5jYWxsKHRoaXMsIGJ1aWxkZXIsIG1lc3NhZ2UsIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG92ZXJyaWRlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBcIk1lc3NhZ2UuRmllbGRcIjtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE1lc3NhZ2UgZmllbGQgcmVxdWlyZWQgZmxhZy5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1aXJlZCA9IHJ1bGUgPT09IFwicmVxdWlyZWRcIjtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE1lc3NhZ2UgZmllbGQgcmVwZWF0ZWQgZmxhZy5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBlYXRlZCA9IHJ1bGUgPT09IFwicmVwZWF0ZWRcIjtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE1lc3NhZ2UgZmllbGQgdHlwZS4gVHlwZSByZWZlcmVuY2Ugc3RyaW5nIGlmIHVucmVzb2x2ZWQsIHByb3RvYnVmIHR5cGUgaWYgcmVzb2x2ZWQuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge3N0cmluZ3x7bmFtZTogc3RyaW5nLCB3aXJlVHlwZTogbnVtYmVyfX1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy50eXBlID0gdHlwZTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFJlc29sdmVkIHR5cGUgcmVmZXJlbmNlIGluc2lkZSB0aGUgZ2xvYmFsIG5hbWVzcGFjZS5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7UHJvdG9CdWYuUmVmbGVjdC5UfG51bGx9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRUeXBlID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFVuaXF1ZSBtZXNzYWdlIGZpZWxkIGlkLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuaWQgPSBpZDtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIE1lc3NhZ2UgZmllbGQgb3B0aW9ucy5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCo+fVxuICAgICAgICAgICAgICAgICAqIEBkaWN0XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBEZWZhdWx0IHZhbHVlLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHsqfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmRlZmF1bHRWYWx1ZSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBFbmNsb3NpbmcgT25lT2YuXG4gICAgICAgICAgICAgICAgICogQHR5cGUgez9Qcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuT25lT2Z9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMub25lb2YgPSBvbmVvZiB8fCBudWxsO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogT3JpZ2luYWwgZmllbGQgbmFtZS5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLm9yaWdpbmFsTmFtZSA9IHRoaXMubmFtZTsgLy8gVXNlZCB0byByZXZlcnQgY2FtZWxjYXNlIHRyYW5zZm9ybWF0aW9uIG9uIG5hbWluZyBjb2xsaXNpb25zXG5cbiAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IGZpZWxkIG5hbWVzIHRvIGNhbWVsIGNhc2Ugbm90YXRpb24gaWYgdGhlIG92ZXJyaWRlIGlzIHNldFxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmJ1aWxkZXIub3B0aW9uc1snY29udmVydEZpZWxkc1RvQ2FtZWxDYXNlJ10gJiYgISh0aGlzIGluc3RhbmNlb2YgTWVzc2FnZS5FeHRlbnNpb25GaWVsZCkpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmFtZSA9IEZpZWxkLl90b0NhbWVsQ2FzZSh0aGlzLm5hbWUpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb252ZXJ0cyBhIGZpZWxkIG5hbWUgdG8gY2FtZWwgY2FzZS5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIExpa2VseSB1bmRlcnNjb3JlIG5vdGF0ZWQgbmFtZVxuICAgICAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gQ2FtZWwgY2FzZSBub3RhdGVkIG5hbWVcbiAgICAgICAgICAgICAqIEBwcml2YXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEZpZWxkLl90b0NhbWVsQ2FzZSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmFtZS5yZXBsYWNlKC9fKFthLXpBLVpdKS9nLCBmdW5jdGlvbigkMCwgJDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQxLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGQucHJvdG90eXBlXG4gICAgICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIEZpZWxkUHJvdG90eXBlID0gRmllbGQucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShULnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnVpbGRzIHRoZSBmaWVsZC5cbiAgICAgICAgICAgICAqIEBvdmVycmlkZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBGaWVsZFByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVmYXVsdFZhbHVlID0gdHlwZW9mIHRoaXMub3B0aW9uc1snZGVmYXVsdCddICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgICAgICAgICA/IHRoaXMudmVyaWZ5VmFsdWUodGhpcy5vcHRpb25zWydkZWZhdWx0J10pIDogbnVsbDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFrZXMgYSBMb25nIGZyb20gYSB2YWx1ZS5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7e2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXIsIHVuc2lnbmVkOiBib29sZWFufXxzdHJpbmd8bnVtYmVyfSB2YWx1ZSBWYWx1ZVxuICAgICAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gdW5zaWduZWQgV2hldGhlciB1bnNpZ25lZCBvciBub3QsIGRlZmF1bHRzIHRvIHJldXNlIGl0IGZyb20gTG9uZy1saWtlIG9iamVjdHMgb3IgdG8gc2lnbmVkIGZvclxuICAgICAgICAgICAgICogIHN0cmluZ3MgYW5kIG51bWJlcnNcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHshTG9uZ31cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgdmFsdWUgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIExvbmdcbiAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBmdW5jdGlvbiBta0xvbmcodmFsdWUsIHVuc2lnbmVkKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZS5sb3cgPT09ICdudW1iZXInICYmIHR5cGVvZiB2YWx1ZS5oaWdoID09PSAnbnVtYmVyJyAmJiB0eXBlb2YgdmFsdWUudW5zaWduZWQgPT09ICdib29sZWFuJ1xuICAgICAgICAgICAgICAgICAgICAmJiB2YWx1ZS5sb3cgPT09IHZhbHVlLmxvdyAmJiB2YWx1ZS5oaWdoID09PSB2YWx1ZS5oaWdoKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb3RvQnVmLkxvbmcodmFsdWUubG93LCB2YWx1ZS5oaWdoLCB0eXBlb2YgdW5zaWduZWQgPT09ICd1bmRlZmluZWQnID8gdmFsdWUudW5zaWduZWQgOiB1bnNpZ25lZCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm90b0J1Zi5Mb25nLmZyb21TdHJpbmcodmFsdWUsIHVuc2lnbmVkIHx8IGZhbHNlLCAxMCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm90b0J1Zi5Mb25nLmZyb21OdW1iZXIodmFsdWUsIHVuc2lnbmVkIHx8IGZhbHNlKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIm5vdCBjb252ZXJ0aWJsZSB0byBMb25nXCIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgY2FuIGJlIHNldCBmb3IgdGhpcyBmaWVsZC5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gY2hlY2tcbiAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHNraXBSZXBlYXRlZCBXaGV0aGVyIHRvIHNraXAgdGhlIHJlcGVhdGVkIHZhbHVlIGNoZWNrIG9yIG5vdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHsqfSBWZXJpZmllZCwgbWF5YmUgYWRqdXN0ZWQsIHZhbHVlXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHZhbHVlIGNhbm5vdCBiZSBzZXQgZm9yIHRoaXMgZmllbGRcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgRmllbGRQcm90b3R5cGUudmVyaWZ5VmFsdWUgPSBmdW5jdGlvbih2YWx1ZSwgc2tpcFJlcGVhdGVkKSB7XG4gICAgICAgICAgICAgICAgc2tpcFJlcGVhdGVkID0gc2tpcFJlcGVhdGVkIHx8IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhciBmYWlsID0gZnVuY3Rpb24odmFsLCBtc2cpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHZhbHVlIGZvciBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiIG9mIHR5cGUgXCIrdGhpcy50eXBlLm5hbWUrXCI6IFwiK3ZhbCtcIiAoXCIrbXNnK1wiKVwiKTtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyk7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSB7IC8vIE5VTEwgdmFsdWVzIGZvciBvcHRpb25hbCBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVxdWlyZWQpXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHR5cGVvZiB2YWx1ZSwgXCJyZXF1aXJlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlcGVhdGVkICYmICFza2lwUmVwZWF0ZWQpIHsgLy8gUmVwZWF0ZWQgdmFsdWVzIGFzIGFycmF5c1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVByb3RvQnVmLlV0aWwuaXNBcnJheSh2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IFt2YWx1ZV07XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8dmFsdWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMucHVzaCh0aGlzLnZlcmlmeVZhbHVlKHZhbHVlW2ldLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIEFsbCBub24tcmVwZWF0ZWQgZmllbGRzIGV4cGVjdCBubyBhcnJheVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXBlYXRlZCAmJiBQcm90b0J1Zi5VdGlsLmlzQXJyYXkodmFsdWUpKVxuICAgICAgICAgICAgICAgICAgICBmYWlsKHR5cGVvZiB2YWx1ZSwgXCJubyBhcnJheSBleHBlY3RlZFwiKTtcblxuICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIFNpZ25lZCAzMmJpdFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiaW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzaW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzZml4ZWQzMlwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjY291bnQgZm9yICFOYU46IHZhbHVlID09PSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgKHZhbHVlID09PSB2YWx1ZSAmJiB2YWx1ZSAlIDEgIT09IDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwodHlwZW9mIHZhbHVlLCBcIm5vdCBhbiBpbnRlZ2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlID4gNDI5NDk2NzI5NSA/IHZhbHVlIHwgMCA6IHZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIFVuc2lnbmVkIDMyYml0XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJ1aW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgKHZhbHVlID09PSB2YWx1ZSAmJiB2YWx1ZSAlIDEgIT09IDApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwodHlwZW9mIHZhbHVlLCBcIm5vdCBhbiBpbnRlZ2VyXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/IHZhbHVlID4+PiAwIDogdmFsdWU7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gU2lnbmVkIDY0Yml0XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJpbnQ2NFwiXTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInNpbnQ2NFwiXTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInNmaXhlZDY0XCJdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHJvdG9CdWYuTG9uZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWtMb25nKHZhbHVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHR5cGVvZiB2YWx1ZSwgZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCh0eXBlb2YgdmFsdWUsIFwicmVxdWlyZXMgTG9uZy5qc1wiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIFVuc2lnbmVkIDY0Yml0XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJ1aW50NjRcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDY0XCJdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHJvdG9CdWYuTG9uZylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWtMb25nKHZhbHVlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwodHlwZW9mIHZhbHVlLCBlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHR5cGVvZiB2YWx1ZSwgXCJyZXF1aXJlcyBMb25nLmpzXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQm9vbFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiYm9vbFwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdib29sZWFuJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHR5cGVvZiB2YWx1ZSwgXCJub3QgYSBib29sZWFuXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZsb2F0XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmbG9hdFwiXTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImRvdWJsZVwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwodHlwZW9mIHZhbHVlLCBcIm5vdCBhIG51bWJlclwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGgtZGVsaW1pdGVkIHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wic3RyaW5nXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgJiYgISh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIFN0cmluZykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCh0eXBlb2YgdmFsdWUsIFwibm90IGEgc3RyaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCIrdmFsdWU7IC8vIENvbnZlcnQgU3RyaW5nIG9iamVjdCB0byBzdHJpbmdcblxuICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGgtZGVsaW1pdGVkIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJieXRlc1wiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChCeXRlQnVmZmVyLmlzQnl0ZUJ1ZmZlcih2YWx1ZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJ5dGVCdWZmZXIud3JhcCh2YWx1ZSwgXCJiYXNlNjRcIik7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RhbnQgZW51bSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZW51bVwiXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlcyA9IHRoaXMucmVzb2x2ZWRUeXBlLmdldENoaWxkcmVuKEVudW0uVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8dmFsdWVzLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0ubmFtZSA9PSB2YWx1ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlc1tpXS5pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZXNbaV0uaWQgPT0gdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZXNbaV0uaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHZhbHVlLCBcIm5vdCBhIHZhbGlkIGVudW0gdmFsdWVcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gRW1iZWRkZWQgbWVzc2FnZVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZ3JvdXBcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJtZXNzYWdlXCJdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlIHx8IHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCh0eXBlb2YgdmFsdWUsIFwib2JqZWN0IGV4cGVjdGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgdGhpcy5yZXNvbHZlZFR5cGUuY2xhenopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWlzbWF0Y2hlZCB0eXBlOiBDb252ZXJ0IHRvIG9iamVjdCAoc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGNvZGVJTy9Qcm90b0J1Zi5qcy9pc3N1ZXMvMTgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpIGluIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaGFzT3duUHJvcGVydHkoaSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpbaV0gPSB2YWx1ZVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG9iajtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVsc2UgbGV0J3MgdHJ5IHRvIGNvbnN0cnVjdCBvbmUgZnJvbSBhIGtleS12YWx1ZSBvYmplY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgKHRoaXMucmVzb2x2ZWRUeXBlLmNsYXp6KSh2YWx1ZSk7IC8vIE1heSB0aHJvdyBmb3IgYSBodW5kcmVkIG9mIHJlYXNvbnNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBlbmQgaGVyZVxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiW0lOVEVSTkFMXSBJbGxlZ2FsIHZhbHVlIGZvciBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiOiBcIit2YWx1ZStcIiAodW5kZWZpbmVkIHR5cGUgXCIrdGhpcy50eXBlK1wiKVwiKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5jb2RlcyB0aGUgc3BlY2lmaWVkIGZpZWxkIHZhbHVlIHRvIHRoZSBzcGVjaWZpZWQgYnVmZmVyLlxuICAgICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBWZXJpZmllZCBmaWVsZCB2YWx1ZVxuICAgICAgICAgICAgICogQHBhcmFtIHtCeXRlQnVmZmVyfSBidWZmZXIgQnl0ZUJ1ZmZlciB0byBlbmNvZGUgdG9cbiAgICAgICAgICAgICAqIEByZXR1cm4ge0J5dGVCdWZmZXJ9IFRoZSBCeXRlQnVmZmVyIGZvciBjaGFpbmluZ1xuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBmaWVsZCBjYW5ub3QgYmUgZW5jb2RlZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBGaWVsZFByb3RvdHlwZS5lbmNvZGUgPSBmdW5jdGlvbih2YWx1ZSwgYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gbnVsbCB8fCB0eXBlb2YgdGhpcy50eXBlICE9PSAnb2JqZWN0JylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJbSU5URVJOQUxdIFVucmVzb2x2ZWQgdHlwZSBpbiBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiOiBcIit0aGlzLnR5cGUpO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCAodGhpcy5yZXBlYXRlZCAmJiB2YWx1ZS5sZW5ndGggPT0gMCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7IC8vIE9wdGlvbmFsIG9taXR0ZWRcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcIk9ubHkgcmVwZWF0ZWQgZmllbGRzIG9mIHByaW1pdGl2ZSBudW1lcmljIHR5cGVzICh0eXBlcyB3aGljaCB1c2UgdGhlIHZhcmludCwgMzItYml0LCBvciA2NC1iaXQgd2lyZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gdHlwZXMpIGNhbiBiZSBkZWNsYXJlZCAncGFja2VkJy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1tcInBhY2tlZFwiXSAmJiBQcm90b0J1Zi5QQUNLQUJMRV9XSVJFX1RZUEVTLmluZGV4T2YodGhpcy50eXBlLndpcmVUeXBlKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gXCJBbGwgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSBmaWVsZCBhcmUgcGFja2VkIGludG8gYSBzaW5nbGUga2V5LXZhbHVlIHBhaXIgd2l0aCB3aXJlIHR5cGUgMlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChsZW5ndGgtZGVsaW1pdGVkKS4gRWFjaCBlbGVtZW50IGlzIGVuY29kZWQgdGhlIHNhbWUgd2F5IGl0IHdvdWxkIGJlIG5vcm1hbGx5LCBleGNlcHQgd2l0aG91dCBhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGFnIHByZWNlZGluZyBpdC5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDMyKCh0aGlzLmlkIDw8IDMpIHwgUHJvdG9CdWYuV0lSRV9UWVBFUy5MREVMSU0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5lbnN1cmVDYXBhY2l0eShidWZmZXIub2Zmc2V0ICs9IDEpOyAvLyBXZSBkbyBub3Qga25vdyB0aGUgbGVuZ3RoIHlldCwgc28gbGV0J3MgYXNzdW1lIGEgdmFyaW50IG9mIGxlbmd0aCAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0ID0gYnVmZmVyLm9mZnNldDsgLy8gUmVtZW1iZXIgd2hlcmUgdGhlIGNvbnRlbnRzIGJlZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8dmFsdWUubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RlVmFsdWUodmFsdWVbaV0sIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxlbiA9IGJ1ZmZlci5vZmZzZXQtc3RhcnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmludExlbiA9IEJ5dGVCdWZmZXIuY2FsY3VsYXRlVmFyaW50MzIobGVuKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyaW50TGVuID4gMSkgeyAvLyBXZSBuZWVkIHRvIG1vdmUgdGhlIGNvbnRlbnRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50cyA9IGJ1ZmZlci5zbGljZShzdGFydCwgYnVmZmVyLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IHZhcmludExlbi0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIub2Zmc2V0ID0gc3RhcnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY29udGVudHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMihsZW4sIHN0YXJ0LXZhcmludExlbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwiSWYgeW91ciBtZXNzYWdlIGRlZmluaXRpb24gaGFzIHJlcGVhdGVkIGVsZW1lbnRzICh3aXRob3V0IHRoZSBbcGFja2VkPXRydWVdIG9wdGlvbiksIHRoZSBlbmNvZGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVzc2FnZSBoYXMgemVybyBvciBtb3JlIGtleS12YWx1ZSBwYWlycyB3aXRoIHRoZSBzYW1lIHRhZyBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHZhbHVlLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMigodGhpcy5pZCA8PCAzKSB8IHRoaXMudHlwZS53aXJlVHlwZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW5jb2RlVmFsdWUodmFsdWVbaV0sIGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLndyaXRlVmFyaW50MzIoKHRoaXMuaWQgPDwgMykgfCB0aGlzLnR5cGUud2lyZVR5cGUpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmNvZGVWYWx1ZSh2YWx1ZSwgYnVmZmVyKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB2YWx1ZSBmb3IgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrdmFsdWUrXCIgKFwiK2UrXCIpXCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBFbmNvZGVzIGEgdmFsdWUgdG8gdGhlIHNwZWNpZmllZCBidWZmZXIuIERvZXMgbm90IGVuY29kZSB0aGUga2V5LlxuICAgICAgICAgICAgICogQHBhcmFtIHsqfSB2YWx1ZSBGaWVsZCB2YWx1ZVxuICAgICAgICAgICAgICogQHBhcmFtIHtCeXRlQnVmZmVyfSBidWZmZXIgQnl0ZUJ1ZmZlciB0byBlbmNvZGUgdG9cbiAgICAgICAgICAgICAqIEByZXR1cm4ge0J5dGVCdWZmZXJ9IFRoZSBCeXRlQnVmZmVyIGZvciBjaGFpbmluZ1xuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgZW5jb2RlZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBGaWVsZFByb3RvdHlwZS5lbmNvZGVWYWx1ZSA9IGZ1bmN0aW9uKHZhbHVlLCBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBidWZmZXI7IC8vIE5vdGhpbmcgdG8gZW5jb2RlXG4gICAgICAgICAgICAgICAgLy8gVGFnIGhhcyBhbHJlYWR5IGJlZW4gd3JpdHRlblxuXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gMzJiaXQgc2lnbmVkIHZhcmludFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiaW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBcIklmIHlvdSB1c2UgaW50MzIgb3IgaW50NjQgYXMgdGhlIHR5cGUgZm9yIGEgbmVnYXRpdmUgbnVtYmVyLCB0aGUgcmVzdWx0aW5nIHZhcmludCBpcyBhbHdheXMgdGVuIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsb25nIOKAkyBpdCBpcywgZWZmZWN0aXZlbHksIHRyZWF0ZWQgbGlrZSBhIHZlcnkgbGFyZ2UgdW5zaWduZWQgaW50ZWdlci5cIiAoc2VlICMxMjIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgPCAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDY0KHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAvLyAzMmJpdCB1bnNpZ25lZCB2YXJpbnRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInVpbnQzMlwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDMyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIDMyYml0IHZhcmludCB6aWctemFnXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzaW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMlppZ1phZyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAvLyBGaXhlZCB1bnNpZ25lZCAzMmJpdFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZml4ZWQzMlwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVVpbnQzMih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAvLyBGaXhlZCBzaWduZWQgMzJiaXRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInNmaXhlZDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLndyaXRlSW50MzIodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gNjRiaXQgdmFyaW50IGFzLWlzXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJpbnQ2NFwiXTpcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInVpbnQ2NFwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDY0KHZhbHVlKTsgLy8gdGhyb3dzXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAvLyA2NGJpdCB2YXJpbnQgemlnLXphZ1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wic2ludDY0XCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLndyaXRlVmFyaW50NjRaaWdaYWcodmFsdWUpOyAvLyB0aHJvd3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZpeGVkIHVuc2lnbmVkIDY0Yml0XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDY0XCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLndyaXRlVWludDY0KHZhbHVlKTsgLy8gdGhyb3dzXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAvLyBGaXhlZCBzaWduZWQgNjRiaXRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInNmaXhlZDY0XCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLndyaXRlSW50NjQodmFsdWUpOyAvLyB0aHJvd3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEJvb2xcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImJvb2xcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMih2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAnZmFsc2UnID8gMCA6ICEhdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDMyKHZhbHVlID8gMSA6IDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RhbnQgZW51bSB2YWx1ZVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZW51bVwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDMyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIDMyYml0IGZsb2F0XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmbG9hdFwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZUZsb2F0MzIodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gNjRiaXQgZmxvYXRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImRvdWJsZVwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZUZsb2F0NjQodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoLWRlbGltaXRlZCBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInN0cmluZ1wiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoLWRlbGltaXRlZCBieXRlc1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiYnl0ZXNcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUucmVtYWluaW5nKCkgPCAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB2YWx1ZSBmb3IgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrdmFsdWUucmVtYWluaW5nKCkrXCIgYnl0ZXMgcmVtYWluaW5nXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHByZXZPZmZzZXQgPSB2YWx1ZS5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMih2YWx1ZS5yZW1haW5pbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLm9mZnNldCA9IHByZXZPZmZzZXQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICAvLyBFbWJlZGRlZCBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJtZXNzYWdlXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJiID0gbmV3IEJ5dGVCdWZmZXIoKS5MRSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlZFR5cGUuZW5jb2RlKHZhbHVlLCBiYik7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIud3JpdGVWYXJpbnQzMihiYi5vZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChiYi5mbGlwKCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTGVnYWN5IGdyb3VwXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJncm91cFwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRUeXBlLmVuY29kZSh2YWx1ZSwgYnVmZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci53cml0ZVZhcmludDMyKCh0aGlzLmlkIDw8IDMpIHwgUHJvdG9CdWYuV0lSRV9UWVBFUy5FTkRHUk9VUCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGVuZCBoZXJlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIltJTlRFUk5BTF0gSWxsZWdhbCB2YWx1ZSB0byBlbmNvZGUgaW4gXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrdmFsdWUrXCIgKHVua25vd24gdHlwZSlcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhbGN1bGF0ZXMgdGhlIGxlbmd0aCBvZiB0aGlzIGZpZWxkJ3MgdmFsdWUgb24gdGhlIG5ldHdvcmsgbGV2ZWwuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEZpZWxkIHZhbHVlXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBCeXRlIGxlbmd0aFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBGaWVsZFByb3RvdHlwZS5jYWxjdWxhdGUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy52ZXJpZnlWYWx1ZSh2YWx1ZSk7IC8vIE1heSB0aHJvd1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IG51bGwgfHwgdHlwZW9mIHRoaXMudHlwZSAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiW0lOVEVSTkFMXSBVbnJlc29sdmVkIHR5cGUgaW4gXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrdGhpcy50eXBlKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgKHRoaXMucmVwZWF0ZWQgJiYgdmFsdWUubGVuZ3RoID09IDApKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsgLy8gT3B0aW9uYWwgb21pdHRlZFxuICAgICAgICAgICAgICAgIHZhciBuID0gMDtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXBlYXRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGksIG5pO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uc1tcInBhY2tlZFwiXSAmJiBQcm90b0J1Zi5QQUNLQUJMRV9XSVJFX1RZUEVTLmluZGV4T2YodGhpcy50eXBlLndpcmVUeXBlKSA+PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbiArPSBCeXRlQnVmZmVyLmNhbGN1bGF0ZVZhcmludDMyKCh0aGlzLmlkIDw8IDMpIHwgUHJvdG9CdWYuV0lSRV9UWVBFUy5MREVMSU0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx2YWx1ZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmkgKz0gdGhpcy5jYWxjdWxhdGVWYWx1ZSh2YWx1ZVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbiArPSBCeXRlQnVmZmVyLmNhbGN1bGF0ZVZhcmludDMyKG5pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuICs9IG5pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx2YWx1ZS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiArPSBCeXRlQnVmZmVyLmNhbGN1bGF0ZVZhcmludDMyKCh0aGlzLmlkIDw8IDMpIHwgdGhpcy50eXBlLndpcmVUeXBlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiArPSB0aGlzLmNhbGN1bGF0ZVZhbHVlKHZhbHVlW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG4gKz0gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMigodGhpcy5pZCA8PCAzKSB8IHRoaXMudHlwZS53aXJlVHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBuICs9IHRoaXMuY2FsY3VsYXRlVmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgdmFsdWUgZm9yIFwiK3RoaXMudG9TdHJpbmcodHJ1ZSkrXCI6IFwiK3ZhbHVlK1wiIChcIitlK1wiKVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhbGN1bGF0ZXMgdGhlIGJ5dGUgbGVuZ3RoIG9mIGEgdmFsdWUuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyp9IHZhbHVlIEZpZWxkIHZhbHVlXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBCeXRlIGxlbmd0aFxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSB2YWx1ZSBjYW5ub3QgYmUgY2FsY3VsYXRlZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBGaWVsZFByb3RvdHlwZS5jYWxjdWxhdGVWYWx1ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gMDsgLy8gTm90aGluZyB0byBlbmNvZGVcbiAgICAgICAgICAgICAgICAvLyBUYWcgaGFzIGFscmVhZHkgYmVlbiB3cml0dGVuXG4gICAgICAgICAgICAgICAgdmFyIG47XG4gICAgICAgICAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImludDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlIDwgMCA/IEJ5dGVCdWZmZXIuY2FsY3VsYXRlVmFyaW50NjQodmFsdWUpIDogQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJ1aW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzaW50MzJcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMihCeXRlQnVmZmVyLnppZ1phZ0VuY29kZTMyKHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wic2ZpeGVkMzJcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmbG9hdFwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiA0O1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiaW50NjRcIl06XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJ1aW50NjRcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQ2NCh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzaW50NjRcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQ2NChCeXRlQnVmZmVyLnppZ1phZ0VuY29kZTY0KHZhbHVlKSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDY0XCJdOlxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wic2ZpeGVkNjRcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gODtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImJvb2xcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImVudW1cIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJkb3VibGVcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gODtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInN0cmluZ1wiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBCeXRlQnVmZmVyLmNhbGN1bGF0ZVVURjhCeXRlcyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMihuKSArIG47XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJieXRlc1wiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5yZW1haW5pbmcoKSA8IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHZhbHVlIGZvciBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiOiBcIit2YWx1ZS5yZW1haW5pbmcoKStcIiBieXRlcyByZW1haW5pbmdcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQzMih2YWx1ZS5yZW1haW5pbmcoKSkgKyB2YWx1ZS5yZW1haW5pbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcIm1lc3NhZ2VcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICBuID0gdGhpcy5yZXNvbHZlZFR5cGUuY2FsY3VsYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCeXRlQnVmZmVyLmNhbGN1bGF0ZVZhcmludDMyKG4pICsgbjtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImdyb3VwXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHRoaXMucmVzb2x2ZWRUeXBlLmNhbGN1bGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbiArIEJ5dGVCdWZmZXIuY2FsY3VsYXRlVmFyaW50MzIoKHRoaXMuaWQgPDwgMykgfCBQcm90b0J1Zi5XSVJFX1RZUEVTLkVOREdST1VQKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGVuZCBoZXJlXG4gICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJbSU5URVJOQUxdIElsbGVnYWwgdmFsdWUgdG8gZW5jb2RlIGluIFwiK3RoaXMudG9TdHJpbmcodHJ1ZSkrXCI6IFwiK3ZhbHVlK1wiICh1bmtub3duIHR5cGUpXCIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEZWNvZGUgdGhlIGZpZWxkIHZhbHVlIGZyb20gdGhlIHNwZWNpZmllZCBidWZmZXIuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gd2lyZVR5cGUgTGVhZGluZyB3aXJlIHR5cGVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7Qnl0ZUJ1ZmZlcn0gYnVmZmVyIEJ5dGVCdWZmZXIgdG8gZGVjb2RlIGZyb21cbiAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHNraXBSZXBlYXRlZCBXaGV0aGVyIHRvIHNraXAgdGhlIHJlcGVhdGVkIGNoZWNrIG9yIG5vdC4gRGVmYXVsdHMgdG8gZmFsc2UuXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHsqfSBEZWNvZGVkIHZhbHVlXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGZpZWxkIGNhbm5vdCBiZSBkZWNvZGVkXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEZpZWxkUHJvdG90eXBlLmRlY29kZSA9IGZ1bmN0aW9uKHdpcmVUeXBlLCBidWZmZXIsIHNraXBSZXBlYXRlZCkge1xuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSwgbkJ5dGVzO1xuICAgICAgICAgICAgICAgIGlmICh3aXJlVHlwZSAhPSB0aGlzLnR5cGUud2lyZVR5cGUgJiYgKHNraXBSZXBlYXRlZCB8fCAod2lyZVR5cGUgIT0gUHJvdG9CdWYuV0lSRV9UWVBFUy5MREVMSU0gfHwgIXRoaXMucmVwZWF0ZWQpKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHdpcmUgdHlwZSBmb3IgZmllbGQgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrd2lyZVR5cGUrXCIgKFwiK3RoaXMudHlwZS53aXJlVHlwZStcIiBleHBlY3RlZClcIik7XG4gICAgICAgICAgICAgICAgaWYgKHdpcmVUeXBlID09IFByb3RvQnVmLldJUkVfVFlQRVMuTERFTElNICYmIHRoaXMucmVwZWF0ZWQgJiYgdGhpcy5vcHRpb25zW1wicGFja2VkXCJdICYmIFByb3RvQnVmLlBBQ0tBQkxFX1dJUkVfVFlQRVMuaW5kZXhPZih0aGlzLnR5cGUud2lyZVR5cGUpID49IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFza2lwUmVwZWF0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5CeXRlcyA9IGJ1ZmZlci5yZWFkVmFyaW50MzIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5CeXRlcyA9IGJ1ZmZlci5vZmZzZXQgKyBuQnl0ZXM7IC8vIExpbWl0XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsdWVzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYnVmZmVyLm9mZnNldCA8IG5CeXRlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMucHVzaCh0aGlzLmRlY29kZSh0aGlzLnR5cGUud2lyZVR5cGUsIGJ1ZmZlciwgdHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSBuZXh0IHZhbHVlIG90aGVyd2lzZS4uLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgICAgICAgICAvLyAzMmJpdCBzaWduZWQgdmFyaW50XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJpbnQzMlwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZFZhcmludDMyKCkgfCAwO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIDMyYml0IHVuc2lnbmVkIHZhcmludFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1widWludDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkVmFyaW50MzIoKSA+Pj4gMDtcblxuICAgICAgICAgICAgICAgICAgICAvLyAzMmJpdCBzaWduZWQgdmFyaW50IHppZy16YWdcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInNpbnQzMlwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZFZhcmludDMyWmlnWmFnKCkgfCAwO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZpeGVkIDMyYml0IHVuc2lnbmVkXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkVWludDMyKCkgPj4+IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInNmaXhlZDMyXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkSW50MzIoKSB8IDA7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gNjRiaXQgc2lnbmVkIHZhcmludFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiaW50NjRcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlYWRWYXJpbnQ2NCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIDY0Yml0IHVuc2lnbmVkIHZhcmludFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1widWludDY0XCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkVmFyaW50NjQoKS50b1Vuc2lnbmVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gNjRiaXQgc2lnbmVkIHZhcmludCB6aWctemFnXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzaW50NjRcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyLnJlYWRWYXJpbnQ2NFppZ1phZygpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIEZpeGVkIDY0Yml0IHVuc2lnbmVkXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJmaXhlZDY0XCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkVWludDY0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gRml4ZWQgNjRiaXQgc2lnbmVkXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJzZml4ZWQ2NFwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZEludDY0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQm9vbCB2YXJpbnRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImJvb2xcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gISFidWZmZXIucmVhZFZhcmludDMyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3RhbnQgZW51bSB2YWx1ZSAodmFyaW50KVxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZW51bVwiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgQnVpbGRlci5NZXNzYWdlI3NldCB3aWxsIGFscmVhZHkgdGhyb3dcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZFZhcmludDMyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gMzJiaXQgZmxvYXRcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcImZsb2F0XCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkRmxvYXQoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyA2NGJpdCBmbG9hdFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZG91YmxlXCJdOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJ1ZmZlci5yZWFkRG91YmxlKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoLWRlbGltaXRlZCBzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBQcm90b0J1Zi5UWVBFU1tcInN0cmluZ1wiXTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXIucmVhZFZTdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBMZW5ndGgtZGVsaW1pdGVkIGJ5dGVzXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJieXRlc1wiXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgbkJ5dGVzID0gYnVmZmVyLnJlYWRWYXJpbnQzMigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5yZW1haW5pbmcoKSA8IG5CeXRlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgbnVtYmVyIG9mIGJ5dGVzIGZvciBcIit0aGlzLnRvU3RyaW5nKHRydWUpK1wiOiBcIituQnl0ZXMrXCIgcmVxdWlyZWQgYnV0IGdvdCBvbmx5IFwiK2J1ZmZlci5yZW1haW5pbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGJ1ZmZlci5jbG9uZSgpOyAvLyBPZmZzZXQgYWxyZWFkeSBzZXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLmxpbWl0ID0gdmFsdWUub2Zmc2V0K25CeXRlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vZmZzZXQgKz0gbkJ5dGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gTGVuZ3RoLWRlbGltaXRlZCBlbWJlZGRlZCBtZXNzYWdlXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgUHJvdG9CdWYuVFlQRVNbXCJtZXNzYWdlXCJdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuQnl0ZXMgPSBidWZmZXIucmVhZFZhcmludDMyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFR5cGUuZGVjb2RlKGJ1ZmZlciwgbkJ5dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC8vIExlZ2FjeSBncm91cFxuICAgICAgICAgICAgICAgICAgICBjYXNlIFByb3RvQnVmLlRZUEVTW1wiZ3JvdXBcIl06XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFR5cGUuZGVjb2RlKGJ1ZmZlciwgLTEsIHRoaXMuaWQpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBuZXZlciBlbmQgaGVyZVxuICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiW0lOVEVSTkFMXSBJbGxlZ2FsIHdpcmUgdHlwZSBmb3IgXCIrdGhpcy50b1N0cmluZyh0cnVlKStcIjogXCIrd2lyZVR5cGUpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkZpZWxkXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFJlZmxlY3QuTWVzc2FnZS5GaWVsZCA9IEZpZWxkO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnN0cnVjdHMgYSBuZXcgTWVzc2FnZSBFeHRlbnNpb25GaWVsZC5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5FeHRlbnNpb25GaWVsZFxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuQnVpbGRlcn0gYnVpbGRlciBCdWlsZGVyIHJlZmVyZW5jZVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlfSBtZXNzYWdlIE1lc3NhZ2UgcmVmZXJlbmNlXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcnVsZSBSdWxlLCBvbmUgb2YgcmVxdXJpZWQsIG9wdGlvbmFsLCByZXBlYXRlZFxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgRGF0YSB0eXBlLCBlLmcuIGludDMyXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBGaWVsZCBuYW1lXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gaWQgVW5pcXVlIGZpZWxkIGlkXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+PX0gb3B0aW9ucyBPcHRpb25zXG4gICAgICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICAgICAqIEBleHRlbmRzIFByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5GaWVsZFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgRXh0ZW5zaW9uRmllbGQgPSBmdW5jdGlvbihidWlsZGVyLCBtZXNzYWdlLCBydWxlLCB0eXBlLCBuYW1lLCBpZCwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIEZpZWxkLmNhbGwodGhpcywgYnVpbGRlciwgbWVzc2FnZSwgcnVsZSwgdHlwZSwgbmFtZSwgaWQsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRXh0ZW5zaW9uIHJlZmVyZW5jZS5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7IVByb3RvQnVmLlJlZmxlY3QuRXh0ZW5zaW9ufVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmV4dGVuc2lvbjtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEV4dGVuZHMgRmllbGRcbiAgICAgICAgICAgIEV4dGVuc2lvbkZpZWxkLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRmllbGQucHJvdG90eXBlKTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkV4dGVuc2lvbkZpZWxkXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFJlZmxlY3QuTWVzc2FnZS5FeHRlbnNpb25GaWVsZCA9IEV4dGVuc2lvbkZpZWxkO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnN0cnVjdHMgYSBuZXcgTWVzc2FnZSBPbmVPZi5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5PbmVPZlxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuQnVpbGRlcn0gYnVpbGRlciBCdWlsZGVyIHJlZmVyZW5jZVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlfSBtZXNzYWdlIE1lc3NhZ2UgcmVmZXJlbmNlXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBPbmVPZiBuYW1lXG4gICAgICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICAgICAqIEBleHRlbmRzIFByb3RvQnVmLlJlZmxlY3QuVFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgT25lT2YgPSBmdW5jdGlvbihidWlsZGVyLCBtZXNzYWdlLCBuYW1lKSB7XG4gICAgICAgICAgICAgICAgVC5jYWxsKHRoaXMsIGJ1aWxkZXIsIG1lc3NhZ2UsIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRW5jbG9zZWQgZmllbGRzLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHshQXJyYXkuPCFQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGQ+fVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmZpZWxkcyA9IFtdO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLk9uZU9mXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFJlZmxlY3QuTWVzc2FnZS5PbmVPZiA9IE9uZU9mO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnN0cnVjdHMgYSBuZXcgRW51bS5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuRW51bVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuQnVpbGRlcn0gYnVpbGRlciBCdWlsZGVyIHJlZmVyZW5jZVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuUmVmbGVjdC5UfSBwYXJlbnQgUGFyZW50IFJlZmxlY3Qgb2JqZWN0XG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBFbnVtIG5hbWVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj49fSBvcHRpb25zIEVudW0gb3B0aW9uc1xuICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgKiBAZXh0ZW5kcyBQcm90b0J1Zi5SZWZsZWN0Lk5hbWVzcGFjZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgRW51bSA9IGZ1bmN0aW9uKGJ1aWxkZXIsIHBhcmVudCwgbmFtZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIE5hbWVzcGFjZS5jYWxsKHRoaXMsIGJ1aWxkZXIsIHBhcmVudCwgbmFtZSwgb3B0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBAb3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IFwiRW51bVwiO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogUnVudGltZSBlbnVtIG9iamVjdC5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsbnVtYmVyPnxudWxsfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLm9iamVjdCA9IG51bGw7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEBhbGlhcyBQcm90b0J1Zi5SZWZsZWN0LkVudW0ucHJvdG90eXBlXG4gICAgICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIEVudW1Qcm90b3R5cGUgPSBFbnVtLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTmFtZXNwYWNlLnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQnVpbGRzIHRoaXMgZW51bSBhbmQgcmV0dXJucyB0aGUgcnVudGltZSBjb3VudGVycGFydC5cbiAgICAgICAgICAgICAqIEByZXR1cm4ge09iamVjdDxzdHJpbmcsKj59XG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEVudW1Qcm90b3R5cGUuYnVpbGQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB2YXIgZW5tID0ge30sXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMuZ2V0Q2hpbGRyZW4oRW51bS5WYWx1ZSk7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBrPXZhbHVlcy5sZW5ndGg7IGk8azsgKytpKVxuICAgICAgICAgICAgICAgICAgICBlbm1bdmFsdWVzW2ldWyduYW1lJ11dID0gdmFsdWVzW2ldWydpZCddO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbm0sICckb3B0aW9ucycsIHsgXCJ2YWx1ZVwiOiB0aGlzLmJ1aWxkT3B0KCkgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0ID0gZW5tO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5FbnVtXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFJlZmxlY3QuRW51bSA9IEVudW07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29uc3RydWN0cyBhIG5ldyBFbnVtIFZhbHVlLlxuICAgICAgICAgICAgICogQGV4cG9ydHMgUHJvdG9CdWYuUmVmbGVjdC5FbnVtLlZhbHVlXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5CdWlsZGVyfSBidWlsZGVyIEJ1aWxkZXIgcmVmZXJlbmNlXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5SZWZsZWN0LkVudW19IGVubSBFbnVtIHJlZmVyZW5jZVxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgRmllbGQgbmFtZVxuICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGlkIFVuaXF1ZSBmaWVsZCBpZFxuICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgKiBAZXh0ZW5kcyBQcm90b0J1Zi5SZWZsZWN0LlRcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIFZhbHVlID0gZnVuY3Rpb24oYnVpbGRlciwgZW5tLCBuYW1lLCBpZCkge1xuICAgICAgICAgICAgICAgIFQuY2FsbCh0aGlzLCBidWlsZGVyLCBlbm0sIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG92ZXJyaWRlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBcIkVudW0uVmFsdWVcIjtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFVuaXF1ZSBlbnVtIHZhbHVlIGlkLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuaWQgPSBpZDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEV4dGVuZHMgVFxuICAgICAgICAgICAgVmFsdWUucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShULnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLlJlZmxlY3QuRW51bS5WYWx1ZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBSZWZsZWN0LkVudW0uVmFsdWUgPSBWYWx1ZTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBbiBleHRlbnNpb24gKGZpZWxkKS5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuRXh0ZW5zaW9uXG4gICAgICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLkJ1aWxkZXJ9IGJ1aWxkZXIgQnVpbGRlciByZWZlcmVuY2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLlJlZmxlY3QuVH0gcGFyZW50IFBhcmVudCBvYmplY3RcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE9iamVjdCBuYW1lXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UuRmllbGR9IGZpZWxkIEV4dGVuc2lvbiBmaWVsZFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgRXh0ZW5zaW9uID0gZnVuY3Rpb24oYnVpbGRlciwgcGFyZW50LCBuYW1lLCBmaWVsZCkge1xuICAgICAgICAgICAgICAgIFQuY2FsbCh0aGlzLCBidWlsZGVyLCBwYXJlbnQsIG5hbWUpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogRXh0ZW5kZWQgbWVzc2FnZSBmaWVsZC5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7IVByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5GaWVsZH1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gRXh0ZW5kcyBUXG4gICAgICAgICAgICBFeHRlbnNpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShULnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLlJlZmxlY3QuRXh0ZW5zaW9uXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIFJlZmxlY3QuRXh0ZW5zaW9uID0gRXh0ZW5zaW9uO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnN0cnVjdHMgYSBuZXcgU2VydmljZS5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuU2VydmljZVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuQnVpbGRlcn0gYnVpbGRlciBCdWlsZGVyIHJlZmVyZW5jZVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuUmVmbGVjdC5OYW1lc3BhY2V9IHJvb3QgUm9vdFxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgU2VydmljZSBuYW1lXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+PX0gb3B0aW9ucyBPcHRpb25zXG4gICAgICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICAgICAqIEBleHRlbmRzIFByb3RvQnVmLlJlZmxlY3QuTmFtZXNwYWNlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBTZXJ2aWNlID0gZnVuY3Rpb24oYnVpbGRlciwgcm9vdCwgbmFtZSwgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIE5hbWVzcGFjZS5jYWxsKHRoaXMsIGJ1aWxkZXIsIHJvb3QsIG5hbWUsIG9wdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogQG92ZXJyaWRlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBcIlNlcnZpY2VcIjtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEJ1aWx0IHJ1bnRpbWUgc2VydmljZSBjbGFzcy5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7P2Z1bmN0aW9uKG5ldzpQcm90b0J1Zi5CdWlsZGVyLlNlcnZpY2UpfVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhenogPSBudWxsO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlLnByb3RvdHlwZVxuICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBTZXJ2aWNlUHJvdG90eXBlID0gU2VydmljZS5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKE5hbWVzcGFjZS5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJ1aWxkcyB0aGUgc2VydmljZSBhbmQgcmV0dXJucyB0aGUgcnVudGltZSBjb3VudGVycGFydCwgd2hpY2ggaXMgYSBmdWxseSBmdW5jdGlvbmFsIGNsYXNzLlxuICAgICAgICAgICAgICogQHNlZSBQcm90b0J1Zi5CdWlsZGVyLlNlcnZpY2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHJlYnVpbGQgV2hldGhlciB0byByZWJ1aWxkIG9yIG5vdFxuICAgICAgICAgICAgICogQHJldHVybiB7RnVuY3Rpb259IFNlcnZpY2UgY2xhc3NcbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgbWVzc2FnZSBjYW5ub3QgYmUgYnVpbHRcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgU2VydmljZVByb3RvdHlwZS5idWlsZCA9IGZ1bmN0aW9uKHJlYnVpbGQpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jbGF6eiAmJiAhcmVidWlsZClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xheno7XG5cbiAgICAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIHJ1bnRpbWUgU2VydmljZSBjbGFzcyBpbiBpdHMgb3duIHNjb3BlXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2xhenogPSAoZnVuY3Rpb24oUHJvdG9CdWYsIFQpIHtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogQ29uc3RydWN0cyBhIG5ldyBydW50aW1lIFNlcnZpY2UuXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZywgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlLCBmdW5jdGlvbihFcnJvciwgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlPSkpPX0gcnBjSW1wbCBSUEMgaW1wbGVtZW50YXRpb24gcmVjZWl2aW5nIHRoZSBtZXRob2QgbmFtZSBhbmQgdGhlIG1lc3NhZ2VcbiAgICAgICAgICAgICAgICAgICAgICogQGNsYXNzIEJhcmVib25lIG9mIGFsbCBydW50aW1lIHNlcnZpY2VzLlxuICAgICAgICAgICAgICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBzZXJ2aWNlIGNhbm5vdCBiZSBjcmVhdGVkXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICB2YXIgU2VydmljZSA9IGZ1bmN0aW9uKHJwY0ltcGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIFByb3RvQnVmLkJ1aWxkZXIuU2VydmljZS5jYWxsKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICAgICAqIFNlcnZpY2UgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgKiBAbmFtZSBQcm90b0J1Zi5CdWlsZGVyLlNlcnZpY2UjcnBjSW1wbFxuICAgICAgICAgICAgICAgICAgICAgICAgICogQHR5cGUgeyFmdW5jdGlvbihzdHJpbmcsIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZSwgZnVuY3Rpb24oRXJyb3IsIFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZT0pKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ycGNJbXBsID0gcnBjSW1wbCB8fCBmdW5jdGlvbihuYW1lLCBtc2csIGNhbGxiYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB3aGF0IGEgdXNlciBoYXMgdG8gaW1wbGVtZW50OiBBIGZ1bmN0aW9uIHJlY2VpdmluZyB0aGUgbWV0aG9kIG5hbWUsIHRoZSBhY3R1YWwgbWVzc2FnZSB0b1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgKHR5cGUgY2hlY2tlZCkgYW5kIHRoZSBjYWxsYmFjayB0aGF0J3MgZWl0aGVyIHByb3ZpZGVkIHdpdGggdGhlIGVycm9yIGFzIGl0cyBmaXJzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFyZ3VtZW50IG9yIG51bGwgYW5kIHRoZSBhY3R1YWwgcmVzcG9uc2UgbWVzc2FnZS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQodGhpcywgRXJyb3IoXCJOb3QgaW1wbGVtZW50ZWQsIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vUHJvdG9CdWYuanMvd2lraS9TZXJ2aWNlc1wiKSksIDApOyAvLyBNdXN0IGJlIGFzeW5jIVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLkJ1aWxkZXIuU2VydmljZS5wcm90b3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgICAgICB2YXIgU2VydmljZVByb3RvdHlwZSA9IFNlcnZpY2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQcm90b0J1Zi5CdWlsZGVyLlNlcnZpY2UucHJvdG90eXBlKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFNlcnZpY2UsIFwiJG9wdGlvbnNcIiwgeyBcInZhbHVlXCI6IFQuYnVpbGRPcHQoKSB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXJ2aWNlUHJvdG90eXBlLCBcIiRvcHRpb25zXCIsIHsgXCJ2YWx1ZVwiOiBTZXJ2aWNlW1wiJG9wdGlvbnNcIl0gfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICAgICAqIEFzeW5jaHJvbm91c2x5IHBlcmZvcm1zIGFuIFJQQyBjYWxsIHVzaW5nIHRoZSBnaXZlbiBSUEMgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuU2VydmljZS5bTWV0aG9kXVxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHshZnVuY3Rpb24oc3RyaW5nLCBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2UsIGZ1bmN0aW9uKEVycm9yLCBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2U9KSl9IHJwY0ltcGwgUlBDIGltcGxlbWVudGF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7UHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlfSByZXEgUmVxdWVzdFxuICAgICAgICAgICAgICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKEVycm9yLCAoUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlfEJ5dGVCdWZmZXJ8QnVmZmVyfHN0cmluZyk9KX0gY2FsbGJhY2sgQ2FsbGJhY2sgcmVjZWl2aW5nXG4gICAgICAgICAgICAgICAgICAgICAqICB0aGUgZXJyb3IgaWYgYW55IGFuZCB0aGUgcmVzcG9uc2UgZWl0aGVyIGFzIGEgcHJlLXBhcnNlZCBtZXNzYWdlIG9yIGFzIGl0cyByYXcgYnl0ZXNcbiAgICAgICAgICAgICAgICAgICAgICogQGFic3RyYWN0XG4gICAgICAgICAgICAgICAgICAgICAqL1xuXG4gICAgICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAgICAgKiBBc3luY2hyb25vdXNseSBwZXJmb3JtcyBhbiBSUEMgY2FsbCB1c2luZyB0aGUgaW5zdGFuY2UncyBSUEMgaW1wbGVtZW50YXRpb24uXG4gICAgICAgICAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLkJ1aWxkZXIuU2VydmljZSNbTWV0aG9kXVxuICAgICAgICAgICAgICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICogQHBhcmFtIHtQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2V9IHJlcSBSZXF1ZXN0XG4gICAgICAgICAgICAgICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oRXJyb3IsIChQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2V8Qnl0ZUJ1ZmZlcnxCdWZmZXJ8c3RyaW5nKT0pfSBjYWxsYmFjayBDYWxsYmFjayByZWNlaXZpbmdcbiAgICAgICAgICAgICAgICAgICAgICogIHRoZSBlcnJvciBpZiBhbnkgYW5kIHRoZSByZXNwb25zZSBlaXRoZXIgYXMgYSBwcmUtcGFyc2VkIG1lc3NhZ2Ugb3IgYXMgaXRzIHJhdyBieXRlc1xuICAgICAgICAgICAgICAgICAgICAgKiBAYWJzdHJhY3RcbiAgICAgICAgICAgICAgICAgICAgICovXG5cbiAgICAgICAgICAgICAgICAgICAgdmFyIHJwYyA9IFQuZ2V0Q2hpbGRyZW4oUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlLlJQQ01ldGhvZCk7XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxycGMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvbihtZXRob2QpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlcnZpY2UjTWV0aG9kKG1lc3NhZ2UsIGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VQcm90b3R5cGVbbWV0aG9kLm5hbWVdID0gZnVuY3Rpb24ocmVxLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXEgfHwgIShyZXEgaW5zdGFuY2VvZiBtZXRob2QucmVzb2x2ZWRSZXF1ZXN0VHlwZS5jbGF6eikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNhbGxiYWNrLmJpbmQodGhpcywgRXJyb3IoXCJJbGxlZ2FsIHJlcXVlc3QgdHlwZSBwcm92aWRlZCB0byBzZXJ2aWNlIG1ldGhvZCBcIitULm5hbWUrXCIjXCIrbWV0aG9kLm5hbWUpKSwgMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ycGNJbXBsKG1ldGhvZC5mcW4oKSwgcmVxLCBmdW5jdGlvbihlcnIsIHJlcykgeyAvLyBBc3N1bWVzIHRoYXQgdGhpcyBpcyBwcm9wZXJseSBhc3luY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeyByZXMgPSBtZXRob2QucmVzb2x2ZWRSZXNwb25zZVR5cGUuY2xhenouZGVjb2RlKHJlcyk7IH0gY2F0Y2ggKG5vdEFCdWZmZXIpIHt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMgfHwgIShyZXMgaW5zdGFuY2VvZiBtZXRob2QucmVzb2x2ZWRSZXNwb25zZVR5cGUuY2xhenopKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yKFwiSWxsZWdhbCByZXNwb25zZSB0eXBlIHJlY2VpdmVkIGluIHNlcnZpY2UgbWV0aG9kIFwiKyBULm5hbWUrXCIjXCIrbWV0aG9kLm5hbWUpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCByZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChjYWxsYmFjay5iaW5kKHRoaXMsIGVyciksIDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlcnZpY2UuTWV0aG9kKHJwY0ltcGwsIG1lc3NhZ2UsIGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VbbWV0aG9kLm5hbWVdID0gZnVuY3Rpb24ocnBjSW1wbCwgcmVxLCBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU2VydmljZShycGNJbXBsKVttZXRob2QubmFtZV0ocmVxLCBjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXJ2aWNlW21ldGhvZC5uYW1lXSwgXCIkb3B0aW9uc1wiLCB7IFwidmFsdWVcIjogbWV0aG9kLmJ1aWxkT3B0KCkgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTZXJ2aWNlUHJvdG90eXBlW21ldGhvZC5uYW1lXSwgXCIkb3B0aW9uc1wiLCB7IFwidmFsdWVcIjogU2VydmljZVttZXRob2QubmFtZV1bXCIkb3B0aW9uc1wiXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKHJwY1tpXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VydmljZTtcblxuICAgICAgICAgICAgICAgIH0pKFByb3RvQnVmLCB0aGlzKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLlJlZmxlY3QuU2VydmljZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBSZWZsZWN0LlNlcnZpY2UgPSBTZXJ2aWNlO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEFic3RyYWN0IHNlcnZpY2UgbWV0aG9kLlxuICAgICAgICAgICAgICogQGV4cG9ydHMgUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlLk1ldGhvZFxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuQnVpbGRlcn0gYnVpbGRlciBCdWlsZGVyIHJlZmVyZW5jZVxuICAgICAgICAgICAgICogQHBhcmFtIHshUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlfSBzdmMgU2VydmljZVxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTWV0aG9kIG5hbWVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0LjxzdHJpbmcsKj49fSBvcHRpb25zIE9wdGlvbnNcbiAgICAgICAgICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICogQGV4dGVuZHMgUHJvdG9CdWYuUmVmbGVjdC5UXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBNZXRob2QgPSBmdW5jdGlvbihidWlsZGVyLCBzdmMsIG5hbWUsIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBULmNhbGwodGhpcywgYnVpbGRlciwgc3ZjLCBuYW1lKTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEBvdmVycmlkZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gXCJTZXJ2aWNlLk1ldGhvZFwiO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogT3B0aW9ucy5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsICo+fVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlLk1ldGhvZC5wcm90b3R5cGVcbiAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgTWV0aG9kUHJvdG90eXBlID0gTWV0aG9kLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoVC5wcm90b3R5cGUpO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEJ1aWxkcyB0aGUgbWV0aG9kJ3MgJyRvcHRpb25zJyBwcm9wZXJ0eS5cbiAgICAgICAgICAgICAqIEBuYW1lIFByb3RvQnVmLlJlZmxlY3QuU2VydmljZS5NZXRob2QjYnVpbGRPcHRcbiAgICAgICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgICAgICogQHJldHVybiB7T2JqZWN0LjxzdHJpbmcsKj59XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIE1ldGhvZFByb3RvdHlwZS5idWlsZE9wdCA9IE5hbWVzcGFjZVByb3RvdHlwZS5idWlsZE9wdDtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlLk1ldGhvZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBSZWZsZWN0LlNlcnZpY2UuTWV0aG9kID0gTWV0aG9kO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJQQyBzZXJ2aWNlIG1ldGhvZC5cbiAgICAgICAgICAgICAqIEBleHBvcnRzIFByb3RvQnVmLlJlZmxlY3QuU2VydmljZS5SUENNZXRob2RcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLkJ1aWxkZXJ9IGJ1aWxkZXIgQnVpbGRlciByZWZlcmVuY2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7IVByb3RvQnVmLlJlZmxlY3QuU2VydmljZX0gc3ZjIFNlcnZpY2VcbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE1ldGhvZCBuYW1lXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmVxdWVzdCBSZXF1ZXN0IG1lc3NhZ2UgbmFtZVxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHJlc3BvbnNlIFJlc3BvbnNlIG1lc3NhZ2UgbmFtZVxuICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywqPj19IG9wdGlvbnMgT3B0aW9uc1xuICAgICAgICAgICAgICogQGNvbnN0cnVjdG9yXG4gICAgICAgICAgICAgKiBAZXh0ZW5kcyBQcm90b0J1Zi5SZWZsZWN0LlNlcnZpY2UuTWV0aG9kXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBSUENNZXRob2QgPSBmdW5jdGlvbihidWlsZGVyLCBzdmMsIG5hbWUsIHJlcXVlc3QsIHJlc3BvbnNlLCBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgTWV0aG9kLmNhbGwodGhpcywgYnVpbGRlciwgc3ZjLCBuYW1lLCBvcHRpb25zKTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEBvdmVycmlkZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuY2xhc3NOYW1lID0gXCJTZXJ2aWNlLlJQQ01ldGhvZFwiO1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogUmVxdWVzdCBtZXNzYWdlIG5hbWUuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5yZXF1ZXN0TmFtZSA9IHJlcXVlc3Q7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSZXNwb25zZSBtZXNzYWdlIG5hbWUuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNwb25zZU5hbWUgPSByZXNwb25zZTtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIFJlc29sdmVkIHJlcXVlc3QgbWVzc2FnZSB0eXBlLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHtQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZWRSZXF1ZXN0VHlwZSA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSZXNvbHZlZCByZXNwb25zZSBtZXNzYWdlIHR5cGUuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge1Byb3RvQnVmLlJlZmxlY3QuTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlZFJlc3BvbnNlVHlwZSA9IG51bGw7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvLyBFeHRlbmRzIE1ldGhvZFxuICAgICAgICAgICAgUlBDTWV0aG9kLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoTWV0aG9kLnByb3RvdHlwZSk7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQGFsaWFzIFByb3RvQnVmLlJlZmxlY3QuU2VydmljZS5SUENNZXRob2RcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgUmVmbGVjdC5TZXJ2aWNlLlJQQ01ldGhvZCA9IFJQQ01ldGhvZDtcblxuICAgICAgICAgICAgcmV0dXJuIFJlZmxlY3Q7XG5cbiAgICAgICAgfSkoUHJvdG9CdWYpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuQnVpbGRlclxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5CdWlsZGVyID0gKGZ1bmN0aW9uKFByb3RvQnVmLCBMYW5nLCBSZWZsZWN0KSB7XG4gICAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEJ1aWxkZXIuXG4gICAgICAgICAgICAgKiBAZXhwb3J0cyBQcm90b0J1Zi5CdWlsZGVyXG4gICAgICAgICAgICAgKiBAY2xhc3MgUHJvdmlkZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gYnVpbGQgcHJvdG9jb2wgbWVzc2FnZXMuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+PX0gb3B0aW9ucyBPcHRpb25zXG4gICAgICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIEJ1aWxkZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOYW1lc3BhY2UuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge1Byb3RvQnVmLlJlZmxlY3QuTmFtZXNwYWNlfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLm5zID0gbmV3IFJlZmxlY3QuTmFtZXNwYWNlKHRoaXMsIG51bGwsIFwiXCIpOyAvLyBHbG9iYWwgbmFtZXNwYWNlXG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBOYW1lc3BhY2UgcG9pbnRlci5cbiAgICAgICAgICAgICAgICAgKiBAdHlwZSB7UHJvdG9CdWYuUmVmbGVjdC5UfVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLnB0ciA9IHRoaXMubnM7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBSZXNvbHZlZCBmbGFnLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLnJlc29sdmVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBUaGUgY3VycmVudCBidWlsZGluZyByZXN1bHQuXG4gICAgICAgICAgICAgICAgICogQHR5cGUge09iamVjdC48c3RyaW5nLFByb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZXxPYmplY3Q+fG51bGx9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMucmVzdWx0ID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgICAqIEltcG9ydGVkIGZpbGVzLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHtBcnJheS48c3RyaW5nPn1cbiAgICAgICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlcyA9IHt9O1xuXG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgICAgICogSW1wb3J0IHJvb3Qgb3ZlcnJpZGUuXG4gICAgICAgICAgICAgICAgICogQHR5cGUgez9zdHJpbmd9XG4gICAgICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0Um9vdCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgKiBPcHRpb25zLlxuICAgICAgICAgICAgICAgICAqIEB0eXBlIHshT2JqZWN0LjxzdHJpbmcsICo+fVxuICAgICAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBAYWxpYXMgUHJvdG9CdWYuQnVpbGRlci5wcm90b3R5cGVcbiAgICAgICAgICAgICAqIEBpbm5lclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgQnVpbGRlclByb3RvdHlwZSA9IEJ1aWxkZXIucHJvdG90eXBlO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlc2V0cyB0aGUgcG9pbnRlciB0byB0aGUgcm9vdCBuYW1lc3BhY2UuXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEJ1aWxkZXJQcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnB0ciA9IHRoaXMubnM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERlZmluZXMgYSBwYWNrYWdlIG9uIHRvcCBvZiB0aGUgY3VycmVudCBwb2ludGVyIHBvc2l0aW9uIGFuZCBwbGFjZXMgdGhlIHBvaW50ZXIgb24gaXQuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcGtnXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+PX0gb3B0aW9uc1xuICAgICAgICAgICAgICogQHJldHVybiB7UHJvdG9CdWYuQnVpbGRlcn0gdGhpc1xuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwYWNrYWdlIG5hbWUgaXMgaW52YWxpZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyUHJvdG90eXBlLmRlZmluZSA9IGZ1bmN0aW9uKHBrZywgb3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGtnICE9PSAnc3RyaW5nJyB8fCAhTGFuZy5UWVBFUkVGLnRlc3QocGtnKSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHBhY2thZ2U6IFwiK3BrZyk7XG4gICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBwa2cuc3BsaXQoXCIuXCIpLCBpO1xuICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHBhcnQubGVuZ3RoOyBpKyspIC8vIFRvIGJlIGFic29sdXRlbHkgc3VyZVxuICAgICAgICAgICAgICAgICAgICBpZiAoIUxhbmcuTkFNRS50ZXN0KHBhcnRbaV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHBhY2thZ2U6IFwiK3BhcnRbaV0pO1xuICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHBhcnQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHRyLmdldENoaWxkKHBhcnRbaV0pID09PSBudWxsKSAvLyBLZWVwIGV4aXN0aW5nIG5hbWVzcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIuYWRkQ2hpbGQobmV3IFJlZmxlY3QuTmFtZXNwYWNlKHRoaXMsIHRoaXMucHRyLCBwYXJ0W2ldLCBvcHRpb25zKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHRyID0gdGhpcy5wdHIuZ2V0Q2hpbGQocGFydFtpXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXN0cyBpZiBhIGRlZmluaXRpb24gaXMgYSB2YWxpZCBtZXNzYWdlIGRlZmluaXRpb24uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+fSBkZWYgRGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB2YWxpZCwgZWxzZSBmYWxzZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyLmlzVmFsaWRNZXNzYWdlID0gZnVuY3Rpb24oZGVmKSB7XG4gICAgICAgICAgICAgICAgLy8gTWVzc2FnZXMgcmVxdWlyZSBhIHN0cmluZyBuYW1lXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZbXCJuYW1lXCJdICE9PSAnc3RyaW5nJyB8fCAhTGFuZy5OQU1FLnRlc3QoZGVmW1wibmFtZVwiXSkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAvLyBNZXNzYWdlcyBtdXN0IG5vdCBjb250YWluIHZhbHVlcyAodGhhdCdkIGJlIGFuIGVudW0pIG9yIG1ldGhvZHMgKHRoYXQnZCBiZSBhIHNlcnZpY2UpXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZbXCJ2YWx1ZXNcIl0gIT09ICd1bmRlZmluZWQnIHx8IHR5cGVvZiBkZWZbXCJycGNcIl0gIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gRmllbGRzLCBlbnVtcyBhbmQgbWVzc2FnZXMgYXJlIGFycmF5cyBpZiBwcm92aWRlZFxuICAgICAgICAgICAgICAgIHZhciBpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmW1wiZmllbGRzXCJdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVByb3RvQnVmLlV0aWwuaXNBcnJheShkZWZbXCJmaWVsZHNcIl0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWRzID0gW10sIGlkOyAvLyBJRHMgbXVzdCBiZSB1bmlxdWVcbiAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8ZGVmW1wiZmllbGRzXCJdLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIUJ1aWxkZXIuaXNWYWxpZE1lc3NhZ2VGaWVsZChkZWZbXCJmaWVsZHNcIl1baV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkID0gcGFyc2VJbnQoZGVmW1wiZmllbGRzXCJdW2ldW1wiaWRcIl0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHMuaW5kZXhPZihpZCkgPj0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZHMucHVzaChpZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWRzID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZbXCJlbnVtc1wiXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFQcm90b0J1Zi5VdGlsLmlzQXJyYXkoZGVmW1wiZW51bXNcIl0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxkZWZbXCJlbnVtc1wiXS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQnVpbGRlci5pc1ZhbGlkRW51bShkZWZbXCJlbnVtc1wiXVtpXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlZltcIm1lc3NhZ2VzXCJdICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIVByb3RvQnVmLlV0aWwuaXNBcnJheShkZWZbXCJtZXNzYWdlc1wiXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGRlZltcIm1lc3NhZ2VzXCJdLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFCdWlsZGVyLmlzVmFsaWRNZXNzYWdlKGRlZltcIm1lc3NhZ2VzXCJdW2ldKSAmJiAhQnVpbGRlci5pc1ZhbGlkRXh0ZW5kKGRlZltcIm1lc3NhZ2VzXCJdW2ldKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmW1wiZXh0ZW5zaW9uc1wiXSAhPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIGlmICghUHJvdG9CdWYuVXRpbC5pc0FycmF5KGRlZltcImV4dGVuc2lvbnNcIl0pIHx8IGRlZltcImV4dGVuc2lvbnNcIl0ubGVuZ3RoICE9PSAyIHx8IHR5cGVvZiBkZWZbXCJleHRlbnNpb25zXCJdWzBdICE9PSAnbnVtYmVyJyB8fCB0eXBlb2YgZGVmW1wiZXh0ZW5zaW9uc1wiXVsxXSAhPT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRlc3RzIGlmIGEgZGVmaW5pdGlvbiBpcyBhIHZhbGlkIG1lc3NhZ2UgZmllbGQgZGVmaW5pdGlvbi5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkZWYgRGVmaW5pdGlvblxuICAgICAgICAgICAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB2YWxpZCwgZWxzZSBmYWxzZVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyLmlzVmFsaWRNZXNzYWdlRmllbGQgPSBmdW5jdGlvbihkZWYpIHtcbiAgICAgICAgICAgICAgICAvLyBNZXNzYWdlIGZpZWxkcyByZXF1aXJlIGEgc3RyaW5nIHJ1bGUsIG5hbWUgYW5kIHR5cGUgYW5kIGFuIGlkXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZbXCJydWxlXCJdICE9PSAnc3RyaW5nJyB8fCB0eXBlb2YgZGVmW1wibmFtZVwiXSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGRlZltcInR5cGVcIl0gIT09ICdzdHJpbmcnIHx8IHR5cGVvZiBkZWZbXCJpZFwiXSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICBpZiAoIUxhbmcuUlVMRS50ZXN0KGRlZltcInJ1bGVcIl0pIHx8ICFMYW5nLk5BTUUudGVzdChkZWZbXCJuYW1lXCJdKSB8fCAhTGFuZy5UWVBFUkVGLnRlc3QoZGVmW1widHlwZVwiXSkgfHwgIUxhbmcuSUQudGVzdChcIlwiK2RlZltcImlkXCJdKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmW1wib3B0aW9uc1wiXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW9ucyBhcmUgb2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlZltcIm9wdGlvbnNcIl0gIT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBPcHRpb25zIGFyZSA8c3RyaW5nLHN0cmluZ3xudW1iZXJ8Ym9vbGVhbj5cbiAgICAgICAgICAgICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhkZWZbXCJvcHRpb25zXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBrZXk7IGk8a2V5cy5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgKGtleSA9IGtleXNbaV0pICE9PSAnc3RyaW5nJyB8fCAodHlwZW9mIGRlZltcIm9wdGlvbnNcIl1ba2V5XSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGRlZltcIm9wdGlvbnNcIl1ba2V5XSAhPT0gJ251bWJlcicgJiYgdHlwZW9mIGRlZltcIm9wdGlvbnNcIl1ba2V5XSAhPT0gJ2Jvb2xlYW4nKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXN0cyBpZiBhIGRlZmluaXRpb24gaXMgYSB2YWxpZCBlbnVtIGRlZmluaXRpb24uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZGVmIERlZmluaXRpb25cbiAgICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdmFsaWQsIGVsc2UgZmFsc2VcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnVpbGRlci5pc1ZhbGlkRW51bSA9IGZ1bmN0aW9uKGRlZikge1xuICAgICAgICAgICAgICAgIC8vIEVudW1zIHJlcXVpcmUgYSBzdHJpbmcgbmFtZVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmW1wibmFtZVwiXSAhPT0gJ3N0cmluZycgfHwgIUxhbmcuTkFNRS50ZXN0KGRlZltcIm5hbWVcIl0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgLy8gRW51bXMgcmVxdWlyZSBhdCBsZWFzdCBvbmUgdmFsdWVcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlZltcInZhbHVlc1wiXSA9PT0gJ3VuZGVmaW5lZCcgfHwgIVByb3RvQnVmLlV0aWwuaXNBcnJheShkZWZbXCJ2YWx1ZXNcIl0pIHx8IGRlZltcInZhbHVlc1wiXS5sZW5ndGggPT0gMClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxkZWZbXCJ2YWx1ZXNcIl0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVmFsdWVzIGFyZSBvYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmW1widmFsdWVzXCJdW2ldICE9IFwib2JqZWN0XCIpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIC8vIFZhbHVlcyByZXF1aXJlIGEgc3RyaW5nIG5hbWUgYW5kIGFuIGlkXG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZGVmW1widmFsdWVzXCJdW2ldW1wibmFtZVwiXSAhPT0gJ3N0cmluZycgfHwgdHlwZW9mIGRlZltcInZhbHVlc1wiXVtpXVtcImlkXCJdID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFMYW5nLk5BTUUudGVzdChkZWZbXCJ2YWx1ZXNcIl1baV1bXCJuYW1lXCJdKSB8fCAhTGFuZy5ORUdJRC50ZXN0KFwiXCIrZGVmW1widmFsdWVzXCJdW2ldW1wiaWRcIl0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBpbXBvcnRhbnQgaWYgdGhlcmUgYXJlIG90aGVyIGZpZWxkcyBiZWNhdXNlIFtcInZhbHVlc1wiXSBpcyBhbHJlYWR5IHVuaXF1ZVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDcmVhdGVzIHRocyBzcGVjaWZpZWQgcHJvdG9jb2wgdHlwZXMgYXQgdGhlIGN1cnJlbnQgcG9pbnRlciBwb3NpdGlvbi5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7QXJyYXkuPE9iamVjdC48c3RyaW5nLCo+Pn0gZGVmcyBNZXNzYWdlcywgZW51bXMgb3Igc2VydmljZXMgdG8gY3JlYXRlXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtQcm90b0J1Zi5CdWlsZGVyfSB0aGlzXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYSBtZXNzYWdlIGRlZmluaXRpb24gaXMgaW52YWxpZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyUHJvdG90eXBlLmNyZWF0ZSA9IGZ1bmN0aW9uKGRlZnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWRlZnMpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOyAvLyBOb3RoaW5nIHRvIGNyZWF0ZVxuICAgICAgICAgICAgICAgIGlmICghUHJvdG9CdWYuVXRpbC5pc0FycmF5KGRlZnMpKVxuICAgICAgICAgICAgICAgICAgICBkZWZzID0gW2RlZnNdO1xuICAgICAgICAgICAgICAgIGlmIChkZWZzLmxlbmd0aCA9PSAwKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcblxuICAgICAgICAgICAgICAgIC8vIEl0J3MgcXVpdGUgaGFyZCB0byBrZWVwIHRyYWNrIG9mIHNjb3BlcyBhbmQgbWVtb3J5IGhlcmUsIHNvIGxldCdzIGRvIHRoaXMgaXRlcmF0aXZlbHkuXG4gICAgICAgICAgICAgICAgdmFyIHN0YWNrID0gW107XG4gICAgICAgICAgICAgICAgc3RhY2sucHVzaChkZWZzKTsgLy8gT25lIGxldmVsIFthLCBiLCBjXVxuICAgICAgICAgICAgICAgIHdoaWxlIChzdGFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlZnMgPSBzdGFjay5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFByb3RvQnVmLlV0aWwuaXNBcnJheShkZWZzKSkgeyAvLyBTdGFjayBhbHdheXMgY29udGFpbnMgZW50aXJlIG5hbWVzcGFjZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChkZWZzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGVmID0gZGVmcy5zaGlmdCgpOyAvLyBOYW1lc3BhY2UgYWx3YXlzIGNvbnRhaW5zIGFuIGFycmF5IG9mIG1lc3NhZ2VzLCBlbnVtcyBhbmQgc2VydmljZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQnVpbGRlci5pc1ZhbGlkTWVzc2FnZShkZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvYmogPSBuZXcgUmVmbGVjdC5NZXNzYWdlKHRoaXMsIHRoaXMucHRyLCBkZWZbXCJuYW1lXCJdLCBkZWZbXCJvcHRpb25zXCJdLCBkZWZbXCJpc0dyb3VwXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIE9uZU9mc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb25lb2ZzID0ge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWZbXCJvbmVvZnNcIl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZGVmW1wib25lb2ZzXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaz1rZXlzLmxlbmd0aDsgaTxrOyArK2kpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmFkZENoaWxkKG9uZW9mc1trZXlzW2ldXSA9IG5ldyBSZWZsZWN0Lk1lc3NhZ2UuT25lT2YodGhpcywgb2JqLCBrZXlzW2ldKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGZpZWxkc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmW1wiZmllbGRzXCJdICYmIGRlZltcImZpZWxkc1wiXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MCwgaz1kZWZbXCJmaWVsZHNcIl0ubGVuZ3RoOyBpPGs7ICsraSkgeyAvLyBpOms9RmllbGRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZsZCA9IGRlZlsnZmllbGRzJ11baV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5nZXRDaGlsZChmbGRbJ2lkJ10pICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkR1cGxpY2F0ZSBmaWVsZCBpZCBpbiBtZXNzYWdlIFwiK29iai5uYW1lK1wiOiBcIitmbGRbJ2lkJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGRbXCJvcHRpb25zXCJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvcHRzID0gT2JqZWN0LmtleXMoZmxkW1wib3B0aW9uc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9IDAsbD1vcHRzLmxlbmd0aDsgajxsOyArK2opIHsgLy8gajpsPU9wdGlvbiBuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzW2pdICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgZmllbGQgb3B0aW9uIG5hbWUgaW4gbWVzc2FnZSBcIitvYmoubmFtZStcIiNcIitmbGRbXCJuYW1lXCJdK1wiOiBcIitvcHRzW2pdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmxkW1wib3B0aW9uc1wiXVtvcHRzW2pdXSAhPT0gJ3N0cmluZycgJiYgdHlwZW9mIGZsZFtcIm9wdGlvbnNcIl1bb3B0c1tqXV0gIT09ICdudW1iZXInICYmIHR5cGVvZiBmbGRbXCJvcHRpb25zXCJdW29wdHNbal1dICE9PSAnYm9vbGVhbicpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGZpZWxkIG9wdGlvbiB2YWx1ZSBpbiBtZXNzYWdlIFwiK29iai5uYW1lK1wiI1wiK2ZsZFtcIm5hbWVcIl0rXCIjXCIrb3B0c1tqXStcIjogXCIrZmxkW1wib3B0aW9uc1wiXVtvcHRzW2pdXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG9uZW9mID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZsZFtcIm9uZW9mXCJdID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmVvZiA9IG9uZW9mc1tmbGRbXCJvbmVvZlwiXV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb25lb2YgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIG9uZW9mIGluIG1lc3NhZ2UgXCIrb2JqLm5hbWUrXCIjXCIrZmxkW1wibmFtZVwiXStcIjogXCIrZmxkW1wib25lb2ZcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGQgPSBuZXcgUmVmbGVjdC5NZXNzYWdlLkZpZWxkKHRoaXMsIG9iaiwgZmxkW1wicnVsZVwiXSwgZmxkW1widHlwZVwiXSwgZmxkW1wibmFtZVwiXSwgZmxkW1wiaWRcIl0sIGZsZFtcIm9wdGlvbnNcIl0sIG9uZW9mKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob25lb2YpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uZW9mLmZpZWxkcy5wdXNoKGZsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmFkZENoaWxkKGZsZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHVzaCBlbnVtcyBhbmQgbWVzc2FnZXMgdG8gc3RhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN1Yk9iaiA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRlZltcImVudW1zXCJdICE9PSAndW5kZWZpbmVkJyAmJiBkZWZbJ2VudW1zJ10ubGVuZ3RoID4gMClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGRlZltcImVudW1zXCJdLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk9iai5wdXNoKGRlZltcImVudW1zXCJdW2ldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZltcIm1lc3NhZ2VzXCJdICYmIGRlZltcIm1lc3NhZ2VzXCJdLmxlbmd0aCA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxkZWZbXCJtZXNzYWdlc1wiXS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJPYmoucHVzaChkZWZbXCJtZXNzYWdlc1wiXVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNldCBleHRlbnNpb24gcmFuZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZltcImV4dGVuc2lvbnNcIl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5leHRlbnNpb25zID0gZGVmW1wiZXh0ZW5zaW9uc1wiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouZXh0ZW5zaW9uc1swXSA8IFByb3RvQnVmLklEX01JTilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZXh0ZW5zaW9uc1swXSA9IFByb3RvQnVmLklEX01JTjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmouZXh0ZW5zaW9uc1sxXSA+IFByb3RvQnVmLklEX01BWClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZXh0ZW5zaW9uc1sxXSA9IFByb3RvQnVmLklEX01BWDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB0ci5hZGRDaGlsZChvYmopOyAvLyBBZGQgdG8gY3VycmVudCBuYW1lc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1Yk9iai5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGRlZnMpOyAvLyBQdXNoIHRoZSBjdXJyZW50IGxldmVsIGJhY2tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMgPSBzdWJPYmo7IC8vIENvbnRpbnVlIHByb2Nlc3Npbmcgc3ViIGxldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJPYmogPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIgPSBvYmo7IC8vIEFuZCBtb3ZlIHRoZSBwb2ludGVyIHRvIHRoaXMgbmFtZXNwYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViT2JqID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEJ1aWxkZXIuaXNWYWxpZEVudW0oZGVmKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBuZXcgUmVmbGVjdC5FbnVtKHRoaXMsIHRoaXMucHRyLCBkZWZbXCJuYW1lXCJdLCBkZWZbXCJvcHRpb25zXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8ZGVmW1widmFsdWVzXCJdLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmFkZENoaWxkKG5ldyBSZWZsZWN0LkVudW0uVmFsdWUodGhpcywgb2JqLCBkZWZbXCJ2YWx1ZXNcIl1baV1bXCJuYW1lXCJdLCBkZWZbXCJ2YWx1ZXNcIl1baV1bXCJpZFwiXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB0ci5hZGRDaGlsZChvYmopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQnVpbGRlci5pc1ZhbGlkU2VydmljZShkZWYpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iaiA9IG5ldyBSZWZsZWN0LlNlcnZpY2UodGhpcywgdGhpcy5wdHIsIGRlZltcIm5hbWVcIl0sIGRlZltcIm9wdGlvbnNcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgaW4gZGVmW1wicnBjXCJdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlZltcInJwY1wiXS5oYXNPd25Qcm9wZXJ0eShpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYWRkQ2hpbGQobmV3IFJlZmxlY3QuU2VydmljZS5SUENNZXRob2QodGhpcywgb2JqLCBpLCBkZWZbXCJycGNcIl1baV1bXCJyZXF1ZXN0XCJdLCBkZWZbXCJycGNcIl1baV1bXCJyZXNwb25zZVwiXSwgZGVmW1wicnBjXCJdW2ldW1wib3B0aW9uc1wiXSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB0ci5hZGRDaGlsZChvYmopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmogPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQnVpbGRlci5pc1ZhbGlkRXh0ZW5kKGRlZikpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gdGhpcy5wdHIucmVzb2x2ZShkZWZbXCJyZWZcIl0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxkZWZbXCJmaWVsZHNcIl0ubGVuZ3RoOyBpKyspIHsgLy8gaT1GaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmdldENoaWxkKGRlZlsnZmllbGRzJ11baV1bJ2lkJ10pICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkR1cGxpY2F0ZSBleHRlbmRlZCBmaWVsZCBpZCBpbiBtZXNzYWdlIFwiK29iai5uYW1lK1wiOiBcIitkZWZbJ2ZpZWxkcyddW2ldWydpZCddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVmWydmaWVsZHMnXVtpXVsnaWQnXSA8IG9iai5leHRlbnNpb25zWzBdIHx8IGRlZlsnZmllbGRzJ11baV1bJ2lkJ10gPiBvYmouZXh0ZW5zaW9uc1sxXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIGV4dGVuZGVkIGZpZWxkIGlkIGluIG1lc3NhZ2UgXCIrb2JqLm5hbWUrXCI6IFwiK2RlZlsnZmllbGRzJ11baV1bJ2lkJ10rXCIgKFwiK29iai5leHRlbnNpb25zLmpvaW4oJyB0byAnKStcIiBleHBlY3RlZClcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCBleHRlbnNpb24gZmllbGQgbmFtZXMgdG8gY2FtZWwgY2FzZSBub3RhdGlvbiBpZiB0aGUgb3ZlcnJpZGUgaXMgc2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBkZWZbXCJmaWVsZHNcIl1baV1bXCJuYW1lXCJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnNbJ2NvbnZlcnRGaWVsZHNUb0NhbWVsQ2FzZSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gUmVmbGVjdC5NZXNzYWdlLkZpZWxkLl90b0NhbWVsQ2FzZShkZWZbXCJmaWVsZHNcIl1baV1bXCJuYW1lXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWUgIzE2MTogRXh0ZW5zaW9ucyB1c2UgdGhlaXIgZnVsbHkgcXVhbGlmaWVkIG5hbWUgYXMgdGhlaXIgcnVudGltZSBrZXkgYW5kLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxkID0gbmV3IFJlZmxlY3QuTWVzc2FnZS5FeHRlbnNpb25GaWVsZCh0aGlzLCBvYmosIGRlZltcImZpZWxkc1wiXVtpXVtcInJ1bGVcIl0sIGRlZltcImZpZWxkc1wiXVtpXVtcInR5cGVcIl0sIHRoaXMucHRyLmZxbigpKycuJytuYW1lLCBkZWZbXCJmaWVsZHNcIl1baV1bXCJpZFwiXSwgZGVmW1wiZmllbGRzXCJdW2ldW1wib3B0aW9uc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gLi4uYXJlIGFkZGVkIG9uIHRvcCBvZiB0aGUgY3VycmVudCBuYW1lc3BhY2UgYXMgYW4gZXh0ZW5zaW9uIHdoaWNoIGlzIHVzZWQgZm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVzb2x2aW5nIHRoZWlyIHR5cGUgbGF0ZXIgb24gKHRoZSBleHRlbnNpb24gYWx3YXlzIGtlZXBzIHRoZSBvcmlnaW5hbCBuYW1lIHRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJldmVudCBuYW1pbmcgY29sbGlzaW9ucylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXh0ID0gbmV3IFJlZmxlY3QuRXh0ZW5zaW9uKHRoaXMsIHRoaXMucHRyLCBkZWZbXCJmaWVsZHNcIl1baV1bXCJuYW1lXCJdLCBmbGQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsZC5leHRlbnNpb24gPSBleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIuYWRkQ2hpbGQoZXh0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouYWRkQ2hpbGQoZmxkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghL1xcLj9nb29nbGVcXC5wcm90b2J1ZlxcLi8udGVzdChkZWZbXCJyZWZcIl0pKSAvLyBTaWxlbnRseSBza2lwIGludGVybmFsIGV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiRXh0ZW5kZWQgbWVzc2FnZSBcIitkZWZbXCJyZWZcIl0rXCIgaXMgbm90IGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiTm90IGEgdmFsaWQgZGVmaW5pdGlvbjogXCIrSlNPTi5zdHJpbmdpZnkoZGVmKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJyZWFrIGdvZXMgaGVyZVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiTm90IGEgdmFsaWQgbmFtZXNwYWNlOiBcIitKU09OLnN0cmluZ2lmeShkZWZzKSk7XG4gICAgICAgICAgICAgICAgICAgIGRlZnMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnB0ciA9IHRoaXMucHRyLnBhcmVudDsgLy8gVGhpcyBuYW1lc3BhY2UgaXMgcyBkb25lXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZWQgPSBmYWxzZTsgLy8gUmVxdWlyZSByZS1yZXNvbHZlXG4gICAgICAgICAgICAgICAgdGhpcy5yZXN1bHQgPSBudWxsOyAvLyBSZXF1aXJlIHJlLWJ1aWxkXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEltcG9ydHMgYW5vdGhlciBkZWZpbml0aW9uIGludG8gdGhpcyBidWlsZGVyLlxuICAgICAgICAgICAgICogQHBhcmFtIHtPYmplY3QuPHN0cmluZywqPn0ganNvbiBQYXJzZWQgaW1wb3J0XG4gICAgICAgICAgICAgKiBAcGFyYW0geyhzdHJpbmd8e3Jvb3Q6IHN0cmluZywgZmlsZTogc3RyaW5nfSk9fSBmaWxlbmFtZSBJbXBvcnRlZCBmaWxlIG5hbWVcbiAgICAgICAgICAgICAqIEByZXR1cm4ge1Byb3RvQnVmLkJ1aWxkZXJ9IHRoaXNcbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZGVmaW5pdGlvbiBvciBmaWxlIGNhbm5vdCBiZSBpbXBvcnRlZFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyUHJvdG90eXBlW1wiaW1wb3J0XCJdID0gZnVuY3Rpb24oanNvbiwgZmlsZW5hbWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZpbGVuYW1lID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoUHJvdG9CdWYuVXRpbC5JU19OT0RFKVxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSByZXF1aXJlKFwicGF0aFwiKVsncmVzb2x2ZSddKGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXNbZmlsZW5hbWVdID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsgLy8gU2tpcCBkdXBsaWNhdGUgaW1wb3J0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZXNbZmlsZW5hbWVdID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKCEhanNvblsnaW1wb3J0cyddICYmIGpzb25bJ2ltcG9ydHMnXS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpbXBvcnRSb290LCBkZWxpbSA9ICcvJywgcmVzZXRSb290ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZmlsZW5hbWUgPT09ICdvYmplY3QnKSB7IC8vIElmIGFuIGltcG9ydCByb290IGlzIHNwZWNpZmllZCwgb3ZlcnJpZGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0Um9vdCA9IGZpbGVuYW1lW1wicm9vdFwiXTsgcmVzZXRSb290ID0gdHJ1ZTsgLy8gLi4uIGFuZCByZXNldCBhZnRlcndhcmRzXG4gICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRSb290ID0gdGhpcy5pbXBvcnRSb290O1xuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZVtcImZpbGVcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1wb3J0Um9vdC5pbmRleE9mKFwiXFxcXFwiKSA+PSAwIHx8IGZpbGVuYW1lLmluZGV4T2YoXCJcXFxcXCIpID49IDApIGRlbGltID0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBmaWxlbmFtZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmltcG9ydFJvb3QpIC8vIElmIGltcG9ydCByb290IGlzIG92ZXJyaWRkZW4sIHVzZSBpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydFJvb3QgPSB0aGlzLmltcG9ydFJvb3Q7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsgLy8gT3RoZXJ3aXNlIGNvbXB1dGUgZnJvbSBmaWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaWxlbmFtZS5pbmRleE9mKFwiL1wiKSA+PSAwKSB7IC8vIFVuaXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0Um9vdCA9IGZpbGVuYW1lLnJlcGxhY2UoL1xcL1teXFwvXSokLywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvKiAvZmlsZS5wcm90byAqLyBpbXBvcnRSb290ID09PSBcIlwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0Um9vdCA9IFwiL1wiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZW5hbWUuaW5kZXhPZihcIlxcXFxcIikgPj0gMCkgeyAvLyBXaW5kb3dzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydFJvb3QgPSBmaWxlbmFtZS5yZXBsYWNlKC9cXFxcW15cXFxcXSokLywgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGltID0gJ1xcXFwnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRSb290ID0gXCIuXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0Um9vdCA9IG51bGw7XG5cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGpzb25bJ2ltcG9ydHMnXS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBqc29uWydpbXBvcnRzJ11baV0gPT09ICdzdHJpbmcnKSB7IC8vIEltcG9ydCBmaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbXBvcnRSb290KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkNhbm5vdCBkZXRlcm1pbmUgaW1wb3J0IHJvb3Q6IEZpbGUgbmFtZSBpcyB1bmtub3duXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpbXBvcnRGaWxlbmFtZSA9IGpzb25bJ2ltcG9ydHMnXVtpXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL15nb29nbGVcXC9wcm90b2J1ZlxcLy8udGVzdChpbXBvcnRGaWxlbmFtZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBOb3QgbmVlZGVkIGFuZCB0aGVyZWZvcmUgbm90IHVzZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRGaWxlbmFtZSA9IGltcG9ydFJvb3QrZGVsaW0raW1wb3J0RmlsZW5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsZXNbaW1wb3J0RmlsZW5hbWVdID09PSB0cnVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gQWxyZWFkeSBpbXBvcnRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFwucHJvdG8kL2kudGVzdChpbXBvcnRGaWxlbmFtZSkgJiYgIVByb3RvQnVmLkRvdFByb3RvKSAgICAgLy8gSWYgdGhpcyBpcyBhIE5PUEFSU0UgYnVpbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0RmlsZW5hbWUgPSBpbXBvcnRGaWxlbmFtZS5yZXBsYWNlKC9cXC5wcm90byQvLCBcIi5qc29uXCIpOyAvLyBhbHdheXMgbG9hZCB0aGUgSlNPTiBmaWxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gUHJvdG9CdWYuVXRpbC5mZXRjaChpbXBvcnRGaWxlbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRzID09PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkZhaWxlZCB0byBpbXBvcnQgJ1wiK2ltcG9ydEZpbGVuYW1lK1wiJyBpbiAnXCIrZmlsZW5hbWUrXCInOiBGaWxlIG5vdCBmb3VuZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1xcLmpzb24kL2kudGVzdChpbXBvcnRGaWxlbmFtZSkpIC8vIEFsd2F5cyBwb3NzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW1wiaW1wb3J0XCJdKEpTT04ucGFyc2UoY29udGVudHMrXCJcIiksIGltcG9ydEZpbGVuYW1lKTsgLy8gTWF5IHRocm93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW1wiaW1wb3J0XCJdKChuZXcgUHJvdG9CdWYuRG90UHJvdG8uUGFyc2VyKGNvbnRlbnRzK1wiXCIpKS5wYXJzZSgpLCBpbXBvcnRGaWxlbmFtZSk7IC8vIE1heSB0aHJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIC8vIEltcG9ydCBzdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbGVuYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW1wiaW1wb3J0XCJdKGpzb25bJ2ltcG9ydHMnXVtpXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoL1xcLihcXHcrKSQvLnRlc3QoZmlsZW5hbWUpKSAvLyBXaXRoIGV4dGVuc2lvbjogQXBwZW5kIF9pbXBvcnROIHRvIHRoZSBuYW1lIHBvcnRpb24gdG8gbWFrZSBpdCB1bmlxdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tcImltcG9ydFwiXShqc29uWydpbXBvcnRzJ11baV0sIGZpbGVuYW1lLnJlcGxhY2UoL14oLispXFwuKFxcdyspJC8sIGZ1bmN0aW9uKCQwLCAkMSwgJDIpIHsgcmV0dXJuICQxK1wiX2ltcG9ydFwiK2krXCIuXCIrJDI7IH0pKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIC8vIFdpdGhvdXQgZXh0ZW5zaW9uOiBBcHBlbmQgX2ltcG9ydE4gdG8gbWFrZSBpdCB1bmlxdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc1tcImltcG9ydFwiXShqc29uWydpbXBvcnRzJ11baV0sIGZpbGVuYW1lK1wiX2ltcG9ydFwiK2kpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNldFJvb3QpIC8vIFJlc2V0IGltcG9ydCByb290IG92ZXJyaWRlIHdoZW4gYWxsIGltcG9ydHMgYXJlIGRvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0Um9vdCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChqc29uWydtZXNzYWdlcyddKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChqc29uWydwYWNrYWdlJ10pXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRlZmluZShqc29uWydwYWNrYWdlJ10sIGpzb25bXCJvcHRpb25zXCJdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGUoanNvblsnbWVzc2FnZXMnXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGpzb25bJ2VudW1zJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25bJ3BhY2thZ2UnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lKGpzb25bJ3BhY2thZ2UnXSwganNvbltcIm9wdGlvbnNcIl0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZShqc29uWydlbnVtcyddKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoanNvblsnc2VydmljZXMnXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoanNvblsncGFja2FnZSddKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWZpbmUoanNvblsncGFja2FnZSddLCBqc29uW1wib3B0aW9uc1wiXSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3JlYXRlKGpzb25bJ3NlcnZpY2VzJ10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChqc29uWydleHRlbmRzJ10pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGpzb25bJ3BhY2thZ2UnXSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGVmaW5lKGpzb25bJ3BhY2thZ2UnXSwganNvbltcIm9wdGlvbnNcIl0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNyZWF0ZShqc29uWydleHRlbmRzJ10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXN0cyBpZiBhIGRlZmluaXRpb24gaXMgYSB2YWxpZCBzZXJ2aWNlIGRlZmluaXRpb24uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZGVmIERlZmluaXRpb25cbiAgICAgICAgICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgdmFsaWQsIGVsc2UgZmFsc2VcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnVpbGRlci5pc1ZhbGlkU2VydmljZSA9IGZ1bmN0aW9uKGRlZikge1xuICAgICAgICAgICAgICAgIC8vIFNlcnZpY2VzIHJlcXVpcmUgYSBzdHJpbmcgbmFtZSBhbmQgYW4gcnBjIG9iamVjdFxuICAgICAgICAgICAgICAgIHJldHVybiAhKHR5cGVvZiBkZWZbXCJuYW1lXCJdICE9PSAnc3RyaW5nJyB8fCAhTGFuZy5OQU1FLnRlc3QoZGVmW1wibmFtZVwiXSkgfHwgdHlwZW9mIGRlZltcInJwY1wiXSAhPT0gJ29iamVjdCcpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBUZXN0cyBpZiBhIGRlZmluaXRpb24gaXMgYSB2YWxpZCBleHRlbnNpb24uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge09iamVjdH0gZGVmIERlZmluaXRpb25cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSB0cnVlIGlmIHZhbGlkLCBlbHNlIGZhbHNlXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnVpbGRlci5pc1ZhbGlkRXh0ZW5kID0gZnVuY3Rpb24oZGVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZbXCJyZWZcIl0gIT09ICdzdHJpbmcnIHx8ICFMYW5nLlRZUEVSRUYudGVzdChkZWZbXCJyZWZcIl0pKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkZWZbXCJmaWVsZHNcIl0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghUHJvdG9CdWYuVXRpbC5pc0FycmF5KGRlZltcImZpZWxkc1wiXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHZhciBpZHMgPSBbXSwgaWQ7IC8vIElEcyBtdXN0IGJlIHVuaXF1ZSAoZG9lcyBub3QgeWV0IHRlc3QgZm9yIHRoZSBleHRlbmRlZCBtZXNzYWdlJ3MgaWRzKVxuICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxkZWZbXCJmaWVsZHNcIl0ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghQnVpbGRlci5pc1ZhbGlkTWVzc2FnZUZpZWxkKGRlZltcImZpZWxkc1wiXVtpXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQgPSBwYXJzZUludChkZWZbXCJpZFwiXSwgMTApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkcy5pbmRleE9mKGlkKSA+PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkcy5wdXNoKGlkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZHMgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmVzb2x2ZXMgYWxsIG5hbWVzcGFjZSBvYmplY3RzLlxuICAgICAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIGEgdHlwZSBjYW5ub3QgYmUgcmVzb2x2ZWRcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnVpbGRlclByb3RvdHlwZS5yZXNvbHZlQWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgLy8gUmVzb2x2ZSBhbGwgcmVmbGVjdGVkIG9iamVjdHNcbiAgICAgICAgICAgICAgICB2YXIgcmVzO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnB0ciA9PSBudWxsIHx8IHR5cGVvZiB0aGlzLnB0ci50eXBlID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBEb25lIChhbHJlYWR5IHJlc29sdmVkKVxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnB0ciBpbnN0YW5jZW9mIFJlZmxlY3QuTmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEJ1aWxkIGFsbCBjaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLnB0ci5jaGlsZHJlbjtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0gMCwgaz1jaGlsZHJlbi5sZW5ndGg7IGk8azsgKytpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIgPSBjaGlsZHJlbltpXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZUFsbCgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5wdHIgaW5zdGFuY2VvZiBSZWZsZWN0Lk1lc3NhZ2UuRmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFMYW5nLlRZUEUudGVzdCh0aGlzLnB0ci50eXBlKSkgeyAvLyBSZXNvbHZlIHR5cGUuLi5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghTGFuZy5UWVBFUkVGLnRlc3QodGhpcy5wdHIudHlwZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHR5cGUgcmVmZXJlbmNlIGluIFwiK3RoaXMucHRyLnRvU3RyaW5nKHRydWUpK1wiOiBcIit0aGlzLnB0ci50eXBlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9ICh0aGlzLnB0ciBpbnN0YW5jZW9mIFJlZmxlY3QuTWVzc2FnZS5FeHRlbnNpb25GaWVsZCA/IHRoaXMucHRyLmV4dGVuc2lvbi5wYXJlbnQgOiB0aGlzLnB0ci5wYXJlbnQpLnJlc29sdmUodGhpcy5wdHIudHlwZSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIlVucmVzb2x2YWJsZSB0eXBlIHJlZmVyZW5jZSBpbiBcIit0aGlzLnB0ci50b1N0cmluZyh0cnVlKStcIjogXCIrdGhpcy5wdHIudHlwZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnB0ci5yZXNvbHZlZFR5cGUgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzIGluc3RhbmNlb2YgUmVmbGVjdC5FbnVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHRyLnR5cGUgPSBQcm90b0J1Zi5UWVBFU1tcImVudW1cIl07XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZXMgaW5zdGFuY2VvZiBSZWZsZWN0Lk1lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIudHlwZSA9IHJlcy5pc0dyb3VwID8gUHJvdG9CdWYuVFlQRVNbXCJncm91cFwiXSA6IFByb3RvQnVmLlRZUEVTW1wibWVzc2FnZVwiXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgdHlwZSByZWZlcmVuY2UgaW4gXCIrdGhpcy5wdHIudG9TdHJpbmcodHJ1ZSkrXCI6IFwiK3RoaXMucHRyLnR5cGUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHRyLnR5cGUgPSBQcm90b0J1Zi5UWVBFU1t0aGlzLnB0ci50eXBlXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHRyIGluc3RhbmNlb2YgUHJvdG9CdWYuUmVmbGVjdC5FbnVtLlZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gYnVpbGQgZW51bSB2YWx1ZXMgKGJ1aWx0IGluIGVudW0pXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnB0ciBpbnN0YW5jZW9mIFByb3RvQnVmLlJlZmxlY3QuU2VydmljZS5NZXRob2QpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHRyIGluc3RhbmNlb2YgUHJvdG9CdWYuUmVmbGVjdC5TZXJ2aWNlLlJQQ01ldGhvZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gdGhpcy5wdHIucGFyZW50LnJlc29sdmUodGhpcy5wdHIucmVxdWVzdE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMgfHwgIShyZXMgaW5zdGFuY2VvZiBQcm90b0J1Zi5SZWZsZWN0Lk1lc3NhZ2UpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCB0eXBlIHJlZmVyZW5jZSBpbiBcIit0aGlzLnB0ci50b1N0cmluZyh0cnVlKStcIjogXCIrdGhpcy5wdHIucmVxdWVzdE5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIucmVzb2x2ZWRSZXF1ZXN0VHlwZSA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHRoaXMucHRyLnBhcmVudC5yZXNvbHZlKHRoaXMucHRyLnJlc3BvbnNlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJlcyB8fCAhKHJlcyBpbnN0YW5jZW9mIFByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJJbGxlZ2FsIHR5cGUgcmVmZXJlbmNlIGluIFwiK3RoaXMucHRyLnRvU3RyaW5nKHRydWUpK1wiOiBcIit0aGlzLnB0ci5yZXNwb25zZU5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wdHIucmVzb2x2ZWRSZXNwb25zZVR5cGUgPSByZXM7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBTaG91bGQgbm90IGhhcHBlbiBhcyBub3RoaW5nIGVsc2UgaXMgaW1wbGVtZW50ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IEVycm9yKFwiSWxsZWdhbCBzZXJ2aWNlIHR5cGUgaW4gXCIrdGhpcy5wdHIudG9TdHJpbmcodHJ1ZSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICghKHRoaXMucHRyIGluc3RhbmNlb2YgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLk9uZU9mKSAmJiAhKHRoaXMucHRyIGluc3RhbmNlb2YgUHJvdG9CdWYuUmVmbGVjdC5FeHRlbnNpb24pKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgb2JqZWN0IGluIG5hbWVzcGFjZTogXCIrdHlwZW9mKHRoaXMucHRyKStcIjpcIit0aGlzLnB0cik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCdWlsZHMgdGhlIHByb3RvY29sLiBUaGlzIHdpbGwgZmlyc3QgdHJ5IHRvIHJlc29sdmUgYWxsIGRlZmluaXRpb25zIGFuZCwgaWYgdGhpcyBoYXMgYmVlbiBzdWNjZXNzZnVsLFxuICAgICAgICAgICAgICogcmV0dXJuIHRoZSBidWlsdCBwYWNrYWdlLlxuICAgICAgICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBwYXRoIFNwZWNpZmllcyB3aGF0IHRvIHJldHVybi4gSWYgb21pdHRlZCwgdGhlIGVudGlyZSBuYW1lc3BhY2Ugd2lsbCBiZSByZXR1cm5lZC5cbiAgICAgICAgICAgICAqIEByZXR1cm4ge1Byb3RvQnVmLkJ1aWxkZXIuTWVzc2FnZXxPYmplY3QuPHN0cmluZywqPn1cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBhIHR5cGUgY291bGQgbm90IGJlIHJlc29sdmVkXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEJ1aWxkZXJQcm90b3R5cGUuYnVpbGQgPSBmdW5jdGlvbihwYXRoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5yZXNvbHZlZClcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNvbHZlQWxsKCksXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzb2x2ZWQgPSB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdCA9IG51bGw7IC8vIFJlcXVpcmUgcmUtYnVpbGRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5yZXN1bHQgPT0gbnVsbCkgLy8gKFJlLSlCdWlsZFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc3VsdCA9IHRoaXMubnMuYnVpbGQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIXBhdGgpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc3VsdDtcbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnQgPSBwYXRoLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHB0ciA9IHRoaXMucmVzdWx0OyAvLyBCdWlsZCBuYW1lc3BhY2UgcG9pbnRlciAobm8gaGFzQ2hpbGQgZXRjLilcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBhcnQubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHRyW3BhcnRbaV1dKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IHB0cltwYXJ0W2ldXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB0ciA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwdHI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBTaW1pbGFyIHRvIHtAbGluayBQcm90b0J1Zi5CdWlsZGVyI2J1aWxkfSwgYnV0IGxvb2tzIHVwIHRoZSBpbnRlcm5hbCByZWZsZWN0aW9uIGRlc2NyaXB0b3IuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge3N0cmluZz19IHBhdGggU3BlY2lmaWVzIHdoYXQgdG8gcmV0dXJuLiBJZiBvbWl0dGVkLCB0aGUgZW50aXJlIG5hbWVzcGFjZSB3aWlsIGJlIHJldHVybmVkLlxuICAgICAgICAgICAgICogQHJldHVybiB7UHJvdG9CdWYuUmVmbGVjdC5UfSBSZWZsZWN0aW9uIGRlc2NyaXB0b3Igb3IgYG51bGxgIGlmIG5vdCBmb3VuZFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyUHJvdG90eXBlLmxvb2t1cCA9IGZ1bmN0aW9uKHBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcGF0aCA/IHRoaXMubnMucmVzb2x2ZShwYXRoKSA6IHRoaXMubnM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuXG4gICAgICAgICAgICAgKiBAcmV0dXJuIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvbiBhcyBvZiBcIkJ1aWxkZXJcIlxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCdWlsZGVyUHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiQnVpbGRlclwiO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLy8gUHNldWRvIHR5cGVzIGRvY3VtZW50ZWQgaW4gUmVmbGVjdC5qcy5cbiAgICAgICAgICAgIC8vIEV4aXN0IGZvciB0aGUgc29sZSBwdXJwb3NlIG9mIGJlaW5nIGFibGUgdG8gXCIuLi4gaW5zdGFuY2VvZiBQcm90b0J1Zi5CdWlsZGVyLk1lc3NhZ2VcIiBldGMuXG4gICAgICAgICAgICBCdWlsZGVyLk1lc3NhZ2UgPSBmdW5jdGlvbigpIHt9O1xuICAgICAgICAgICAgQnVpbGRlci5TZXJ2aWNlID0gZnVuY3Rpb24oKSB7fTtcblxuICAgICAgICAgICAgcmV0dXJuIEJ1aWxkZXI7XG5cbiAgICAgICAgfSkoUHJvdG9CdWYsIFByb3RvQnVmLkxhbmcsIFByb3RvQnVmLlJlZmxlY3QpO1xuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIExvYWRzIGEgLnByb3RvIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgQnVpbGRlci5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3RvIC5wcm90byBmaWxlIGNvbnRlbnRzXG4gICAgICAgICAqIEBwYXJhbSB7KFByb3RvQnVmLkJ1aWxkZXJ8c3RyaW5nfHtyb290OiBzdHJpbmcsIGZpbGU6IHN0cmluZ30pPX0gYnVpbGRlciBCdWlsZGVyIHRvIGFwcGVuZCB0by4gV2lsbCBjcmVhdGUgYSBuZXcgb25lIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEBwYXJhbSB7KHN0cmluZ3x7cm9vdDogc3RyaW5nLCBmaWxlOiBzdHJpbmd9KT19IGZpbGVuYW1lIFRoZSBjb3JyZXNwb25kaW5nIGZpbGUgbmFtZSBpZiBrbm93bi4gTXVzdCBiZSBzcGVjaWZpZWQgZm9yIGltcG9ydHMuXG4gICAgICAgICAqIEByZXR1cm4ge1Byb3RvQnVmLkJ1aWxkZXJ9IEJ1aWxkZXIgdG8gY3JlYXRlIG5ldyBtZXNzYWdlc1xuICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGRlZmluaXRpb24gY2Fubm90IGJlIHBhcnNlZCBvciBidWlsdFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5sb2FkUHJvdG8gPSBmdW5jdGlvbihwcm90bywgYnVpbGRlciwgZmlsZW5hbWUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYnVpbGRlciA9PT0gJ3N0cmluZycgfHwgKGJ1aWxkZXIgJiYgdHlwZW9mIGJ1aWxkZXJbXCJmaWxlXCJdID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnVpbGRlcltcInJvb3RcIl0gPT09ICdzdHJpbmcnKSlcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGJ1aWxkZXIsXG4gICAgICAgICAgICAgICAgYnVpbGRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiBQcm90b0J1Zi5sb2FkSnNvbigobmV3IFByb3RvQnVmLkRvdFByb3RvLlBhcnNlcihwcm90bykpLnBhcnNlKCksIGJ1aWxkZXIsIGZpbGVuYW1lKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTG9hZHMgYSAucHJvdG8gc3RyaW5nIGFuZCByZXR1cm5zIHRoZSBCdWlsZGVyLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBQcm90b0J1Zi5sb2FkUHJvdG99LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb3RvIC5wcm90byBmaWxlIGNvbnRlbnRzXG4gICAgICAgICAqIEBwYXJhbSB7KFByb3RvQnVmLkJ1aWxkZXJ8c3RyaW5nKT19IGJ1aWxkZXIgQnVpbGRlciB0byBhcHBlbmQgdG8uIFdpbGwgY3JlYXRlIGEgbmV3IG9uZSBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcGFyYW0geyhzdHJpbmd8e3Jvb3Q6IHN0cmluZywgZmlsZTogc3RyaW5nfSk9fSBmaWxlbmFtZSBUaGUgY29ycmVzcG9uZGluZyBmaWxlIG5hbWUgaWYga25vd24uIE11c3QgYmUgc3BlY2lmaWVkIGZvciBpbXBvcnRzLlxuICAgICAgICAgKiBAcmV0dXJuIHtQcm90b0J1Zi5CdWlsZGVyfSBCdWlsZGVyIHRvIGNyZWF0ZSBuZXcgbWVzc2FnZXNcbiAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBkZWZpbml0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgYnVpbHRcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYucHJvdG9Gcm9tU3RyaW5nID0gUHJvdG9CdWYubG9hZFByb3RvOyAvLyBMZWdhY3lcblxuICAgICAgICAvKipcbiAgICAgICAgICogTG9hZHMgYSAucHJvdG8gZmlsZSBhbmQgcmV0dXJucyB0aGUgQnVpbGRlci5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd8e3Jvb3Q6IHN0cmluZywgZmlsZTogc3RyaW5nfX0gZmlsZW5hbWUgUGF0aCB0byBwcm90byBmaWxlIG9yIGFuIG9iamVjdCBzcGVjaWZ5aW5nICdmaWxlJyB3aXRoXG4gICAgICAgICAqICBhbiBvdmVycmlkZGVuICdyb290JyBwYXRoIGZvciBhbGwgaW1wb3J0ZWQgZmlsZXMuXG4gICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0Vycm9yLCAhUHJvdG9CdWYuQnVpbGRlcj0pPX0gY2FsbGJhY2sgQ2FsbGJhY2sgdGhhdCB3aWxsIHJlY2VpdmUgYG51bGxgIGFzIHRoZSBmaXJzdCBhbmRcbiAgICAgICAgICogIHRoZSBCdWlsZGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIHRoZSBlcnJvciBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIElmIG9taXR0ZWQsIHRoZVxuICAgICAgICAgKiAgZmlsZSB3aWxsIGJlIHJlYWQgc3luY2hyb25vdXNseSBhbmQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgQnVpbGRlci5cbiAgICAgICAgICogQHBhcmFtIHtQcm90b0J1Zi5CdWlsZGVyPX0gYnVpbGRlciBCdWlsZGVyIHRvIGFwcGVuZCB0by4gV2lsbCBjcmVhdGUgYSBuZXcgb25lIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm4gez9Qcm90b0J1Zi5CdWlsZGVyfHVuZGVmaW5lZH0gVGhlIEJ1aWxkZXIgaWYgc3luY2hyb25vdXMgKG5vIGNhbGxiYWNrIHNwZWNpZmllZCwgd2lsbCBiZSBOVUxMIGlmIHRoZVxuICAgICAgICAgKiAgIHJlcXVlc3QgaGFzIGZhaWxlZCksIGVsc2UgdW5kZWZpbmVkXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLmxvYWRQcm90b0ZpbGUgPSBmdW5jdGlvbihmaWxlbmFtZSwgY2FsbGJhY2ssIGJ1aWxkZXIpIHtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayAmJiB0eXBlb2YgY2FsbGJhY2sgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgIGJ1aWxkZXIgPSBjYWxsYmFjayxcbiAgICAgICAgICAgICAgICBjYWxsYmFjayA9IG51bGw7XG4gICAgICAgICAgICBlbHNlIGlmICghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrICE9PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChjYWxsYmFjaylcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvdG9CdWYuVXRpbC5mZXRjaCh0eXBlb2YgZmlsZW5hbWUgPT09ICdzdHJpbmcnID8gZmlsZW5hbWUgOiBmaWxlbmFtZVtcInJvb3RcIl0rXCIvXCIrZmlsZW5hbWVbXCJmaWxlXCJdLCBmdW5jdGlvbihjb250ZW50cykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudHMgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVycm9yKFwiRmFpbGVkIHRvIGZldGNoIGZpbGVcIikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhudWxsLCBQcm90b0J1Zi5sb2FkUHJvdG8oY29udGVudHMsIGJ1aWxkZXIsIGZpbGVuYW1lKSk7XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB2YXIgY29udGVudHMgPSBQcm90b0J1Zi5VdGlsLmZldGNoKHR5cGVvZiBmaWxlbmFtZSA9PT0gJ29iamVjdCcgPyBmaWxlbmFtZVtcInJvb3RcIl0rXCIvXCIrZmlsZW5hbWVbXCJmaWxlXCJdIDogZmlsZW5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbnRlbnRzID09PSBudWxsID8gbnVsbCA6IFByb3RvQnVmLmxvYWRQcm90byhjb250ZW50cywgYnVpbGRlciwgZmlsZW5hbWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMb2FkcyBhIC5wcm90byBmaWxlIGFuZCByZXR1cm5zIHRoZSBCdWlsZGVyLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBQcm90b0J1Zi5sb2FkUHJvdG9GaWxlfS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfHtyb290OiBzdHJpbmcsIGZpbGU6IHN0cmluZ319IGZpbGVuYW1lIFBhdGggdG8gcHJvdG8gZmlsZSBvciBhbiBvYmplY3Qgc3BlY2lmeWluZyAnZmlsZScgd2l0aFxuICAgICAgICAgKiAgYW4gb3ZlcnJpZGRlbiAncm9vdCcgcGF0aCBmb3IgYWxsIGltcG9ydGVkIGZpbGVzLlxuICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9FcnJvciwgIVByb3RvQnVmLkJ1aWxkZXI9KT19IGNhbGxiYWNrIENhbGxiYWNrIHRoYXQgd2lsbCByZWNlaXZlIGBudWxsYCBhcyB0aGUgZmlyc3QgYW5kXG4gICAgICAgICAqICB0aGUgQnVpbGRlciBhcyBpdHMgc2Vjb25kIGFyZ3VtZW50IG9uIHN1Y2Nlc3MsIG90aGVyd2lzZSB0aGUgZXJyb3IgYXMgaXRzIGZpcnN0IGFyZ3VtZW50LiBJZiBvbWl0dGVkLCB0aGVcbiAgICAgICAgICogIGZpbGUgd2lsbCBiZSByZWFkIHN5bmNocm9ub3VzbHkgYW5kIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4gdGhlIEJ1aWxkZXIuXG4gICAgICAgICAqIEBwYXJhbSB7UHJvdG9CdWYuQnVpbGRlcj19IGJ1aWxkZXIgQnVpbGRlciB0byBhcHBlbmQgdG8uIFdpbGwgY3JlYXRlIGEgbmV3IG9uZSBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJuIHshUHJvdG9CdWYuQnVpbGRlcnx1bmRlZmluZWR9IFRoZSBCdWlsZGVyIGlmIHN5bmNocm9ub3VzIChubyBjYWxsYmFjayBzcGVjaWZpZWQsIHdpbGwgYmUgTlVMTCBpZiB0aGVcbiAgICAgICAgICogICByZXF1ZXN0IGhhcyBmYWlsZWQpLCBlbHNlIHVuZGVmaW5lZFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5wcm90b0Zyb21GaWxlID0gUHJvdG9CdWYubG9hZFByb3RvRmlsZTsgLy8gTGVnYWN5XG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ29uc3RydWN0cyBhIG5ldyBlbXB0eSBCdWlsZGVyLlxuICAgICAgICAgKiBAcGFyYW0ge09iamVjdC48c3RyaW5nLCo+PX0gb3B0aW9ucyBCdWlsZGVyIG9wdGlvbnMsIGRlZmF1bHRzIHRvIGdsb2JhbCBvcHRpb25zIHNldCBvbiBQcm90b0J1ZlxuICAgICAgICAgKiBAcmV0dXJuIHshUHJvdG9CdWYuQnVpbGRlcn0gQnVpbGRlclxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBQcm90b0J1Zi5uZXdCdWlsZGVyID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgICAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnNbJ2NvbnZlcnRGaWVsZHNUb0NhbWVsQ2FzZSddID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBvcHRpb25zWydjb252ZXJ0RmllbGRzVG9DYW1lbENhc2UnXSA9IFByb3RvQnVmLmNvbnZlcnRGaWVsZHNUb0NhbWVsQ2FzZTtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uc1sncG9wdWxhdGVBY2Nlc3NvcnMnXSA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgb3B0aW9uc1sncG9wdWxhdGVBY2Nlc3NvcnMnXSA9IFByb3RvQnVmLnBvcHVsYXRlQWNjZXNzb3JzO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm90b0J1Zi5CdWlsZGVyKG9wdGlvbnMpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBMb2FkcyBhIC5qc29uIGRlZmluaXRpb24gYW5kIHJldHVybnMgdGhlIEJ1aWxkZXIuXG4gICAgICAgICAqIEBwYXJhbSB7ISp8c3RyaW5nfSBqc29uIEpTT04gZGVmaW5pdGlvblxuICAgICAgICAgKiBAcGFyYW0geyhQcm90b0J1Zi5CdWlsZGVyfHN0cmluZ3x7cm9vdDogc3RyaW5nLCBmaWxlOiBzdHJpbmd9KT19IGJ1aWxkZXIgQnVpbGRlciB0byBhcHBlbmQgdG8uIFdpbGwgY3JlYXRlIGEgbmV3IG9uZSBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcGFyYW0geyhzdHJpbmd8e3Jvb3Q6IHN0cmluZywgZmlsZTogc3RyaW5nfSk9fSBmaWxlbmFtZSBUaGUgY29ycmVzcG9uZGluZyBmaWxlIG5hbWUgaWYga25vd24uIE11c3QgYmUgc3BlY2lmaWVkIGZvciBpbXBvcnRzLlxuICAgICAgICAgKiBAcmV0dXJuIHtQcm90b0J1Zi5CdWlsZGVyfSBCdWlsZGVyIHRvIGNyZWF0ZSBuZXcgbWVzc2FnZXNcbiAgICAgICAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBkZWZpbml0aW9uIGNhbm5vdCBiZSBwYXJzZWQgb3IgYnVpbHRcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgUHJvdG9CdWYubG9hZEpzb24gPSBmdW5jdGlvbihqc29uLCBidWlsZGVyLCBmaWxlbmFtZSkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBidWlsZGVyID09PSAnc3RyaW5nJyB8fCAoYnVpbGRlciAmJiB0eXBlb2YgYnVpbGRlcltcImZpbGVcIl0gPT09ICdzdHJpbmcnICYmIHR5cGVvZiBidWlsZGVyW1wicm9vdFwiXSA9PT0gJ3N0cmluZycpKVxuICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gYnVpbGRlcixcbiAgICAgICAgICAgICAgICBidWlsZGVyID0gbnVsbDtcbiAgICAgICAgICAgIGlmICghYnVpbGRlciB8fCB0eXBlb2YgYnVpbGRlciAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgYnVpbGRlciA9IFByb3RvQnVmLm5ld0J1aWxkZXIoKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YganNvbiA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAganNvbiA9IEpTT04ucGFyc2UoanNvbik7XG4gICAgICAgICAgICBidWlsZGVyW1wiaW1wb3J0XCJdKGpzb24sIGZpbGVuYW1lKTtcbiAgICAgICAgICAgIGJ1aWxkZXIucmVzb2x2ZUFsbCgpO1xuICAgICAgICAgICAgcmV0dXJuIGJ1aWxkZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIExvYWRzIGEgLmpzb24gZmlsZSBhbmQgcmV0dXJucyB0aGUgQnVpbGRlci5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd8IXtyb290OiBzdHJpbmcsIGZpbGU6IHN0cmluZ319IGZpbGVuYW1lIFBhdGggdG8ganNvbiBmaWxlIG9yIGFuIG9iamVjdCBzcGVjaWZ5aW5nICdmaWxlJyB3aXRoXG4gICAgICAgICAqICBhbiBvdmVycmlkZGVuICdyb290JyBwYXRoIGZvciBhbGwgaW1wb3J0ZWQgZmlsZXMuXG4gICAgICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oP0Vycm9yLCAhUHJvdG9CdWYuQnVpbGRlcj0pPX0gY2FsbGJhY2sgQ2FsbGJhY2sgdGhhdCB3aWxsIHJlY2VpdmUgYG51bGxgIGFzIHRoZSBmaXJzdCBhbmRcbiAgICAgICAgICogIHRoZSBCdWlsZGVyIGFzIGl0cyBzZWNvbmQgYXJndW1lbnQgb24gc3VjY2Vzcywgb3RoZXJ3aXNlIHRoZSBlcnJvciBhcyBpdHMgZmlyc3QgYXJndW1lbnQuIElmIG9taXR0ZWQsIHRoZVxuICAgICAgICAgKiAgZmlsZSB3aWxsIGJlIHJlYWQgc3luY2hyb25vdXNseSBhbmQgdGhpcyBmdW5jdGlvbiB3aWxsIHJldHVybiB0aGUgQnVpbGRlci5cbiAgICAgICAgICogQHBhcmFtIHtQcm90b0J1Zi5CdWlsZGVyPX0gYnVpbGRlciBCdWlsZGVyIHRvIGFwcGVuZCB0by4gV2lsbCBjcmVhdGUgYSBuZXcgb25lIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm4gez9Qcm90b0J1Zi5CdWlsZGVyfHVuZGVmaW5lZH0gVGhlIEJ1aWxkZXIgaWYgc3luY2hyb25vdXMgKG5vIGNhbGxiYWNrIHNwZWNpZmllZCwgd2lsbCBiZSBOVUxMIGlmIHRoZVxuICAgICAgICAgKiAgIHJlcXVlc3QgaGFzIGZhaWxlZCksIGVsc2UgdW5kZWZpbmVkXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIFByb3RvQnVmLmxvYWRKc29uRmlsZSA9IGZ1bmN0aW9uKGZpbGVuYW1lLCBjYWxsYmFjaywgYnVpbGRlcikge1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrICYmIHR5cGVvZiBjYWxsYmFjayA9PT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgYnVpbGRlciA9IGNhbGxiYWNrLFxuICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgICAgIGVsc2UgaWYgKCFjYWxsYmFjayB8fCB0eXBlb2YgY2FsbGJhY2sgIT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSBudWxsO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrKVxuICAgICAgICAgICAgICAgIHJldHVybiBQcm90b0J1Zi5VdGlsLmZldGNoKHR5cGVvZiBmaWxlbmFtZSA9PT0gJ3N0cmluZycgPyBmaWxlbmFtZSA6IGZpbGVuYW1lW1wicm9vdFwiXStcIi9cIitmaWxlbmFtZVtcImZpbGVcIl0sIGZ1bmN0aW9uKGNvbnRlbnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250ZW50cyA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRXJyb3IoXCJGYWlsZWQgdG8gZmV0Y2ggZmlsZVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIFByb3RvQnVmLmxvYWRKc29uKEpTT04ucGFyc2UoY29udGVudHMpLCBidWlsZGVyLCBmaWxlbmFtZSkpO1xuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdmFyIGNvbnRlbnRzID0gUHJvdG9CdWYuVXRpbC5mZXRjaCh0eXBlb2YgZmlsZW5hbWUgPT09ICdvYmplY3QnID8gZmlsZW5hbWVbXCJyb290XCJdK1wiL1wiK2ZpbGVuYW1lW1wiZmlsZVwiXSA6IGZpbGVuYW1lKTtcbiAgICAgICAgICAgIHJldHVybiBjb250ZW50cyA9PT0gbnVsbCA/IG51bGwgOiBQcm90b0J1Zi5sb2FkSnNvbihKU09OLnBhcnNlKGNvbnRlbnRzKSwgYnVpbGRlciwgZmlsZW5hbWUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJldHVybiBQcm90b0J1ZjtcbiAgICB9XG5cbiAgICBtb2R1bGUuZXhwb3J0cyA9IGluaXQocmVxdWlyZShcImJ5dGVidWZmZXItb2xkLWZpeGVkLXdlYnBhY2tcIikpO1xuXG59KSh0aGlzKTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyByZXNvbHZlcyAuIGFuZCAuLiBlbGVtZW50cyBpbiBhIHBhdGggYXJyYXkgd2l0aCBkaXJlY3RvcnkgbmFtZXMgdGhlcmVcbi8vIG11c3QgYmUgbm8gc2xhc2hlcywgZW1wdHkgZWxlbWVudHMsIG9yIGRldmljZSBuYW1lcyAoYzpcXCkgaW4gdGhlIGFycmF5XG4vLyAoc28gYWxzbyBubyBsZWFkaW5nIGFuZCB0cmFpbGluZyBzbGFzaGVzIC0gaXQgZG9lcyBub3QgZGlzdGluZ3Vpc2hcbi8vIHJlbGF0aXZlIGFuZCBhYnNvbHV0ZSBwYXRocylcbmZ1bmN0aW9uIG5vcm1hbGl6ZUFycmF5KHBhcnRzLCBhbGxvd0Fib3ZlUm9vdCkge1xuICAvLyBpZiB0aGUgcGF0aCB0cmllcyB0byBnbyBhYm92ZSB0aGUgcm9vdCwgYHVwYCBlbmRzIHVwID4gMFxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgbGFzdCA9IHBhcnRzW2ldO1xuICAgIGlmIChsYXN0ID09PSAnLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICB9IGVsc2UgaWYgKGxhc3QgPT09ICcuLicpIHtcbiAgICAgIHBhcnRzLnNwbGljZShpLCAxKTtcbiAgICAgIHVwKys7XG4gICAgfSBlbHNlIGlmICh1cCkge1xuICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgcGF0aCBpcyBhbGxvd2VkIHRvIGdvIGFib3ZlIHRoZSByb290LCByZXN0b3JlIGxlYWRpbmcgLi5zXG4gIGlmIChhbGxvd0Fib3ZlUm9vdCkge1xuICAgIGZvciAoOyB1cC0tOyB1cCkge1xuICAgICAgcGFydHMudW5zaGlmdCgnLi4nKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFydHM7XG59XG5cbi8vIFNwbGl0IGEgZmlsZW5hbWUgaW50byBbcm9vdCwgZGlyLCBiYXNlbmFtZSwgZXh0XSwgdW5peCB2ZXJzaW9uXG4vLyAncm9vdCcgaXMganVzdCBhIHNsYXNoLCBvciBub3RoaW5nLlxudmFyIHNwbGl0UGF0aFJlID1cbiAgICAvXihcXC8/fCkoW1xcc1xcU10qPykoKD86XFwuezEsMn18W15cXC9dKz98KShcXC5bXi5cXC9dKnwpKSg/OltcXC9dKikkLztcbnZhciBzcGxpdFBhdGggPSBmdW5jdGlvbihmaWxlbmFtZSkge1xuICByZXR1cm4gc3BsaXRQYXRoUmUuZXhlYyhmaWxlbmFtZSkuc2xpY2UoMSk7XG59O1xuXG4vLyBwYXRoLnJlc29sdmUoW2Zyb20gLi4uXSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlc29sdmUgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc29sdmVkUGF0aCA9ICcnLFxuICAgICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSA+PSAtMSAmJiAhcmVzb2x2ZWRBYnNvbHV0ZTsgaS0tKSB7XG4gICAgdmFyIHBhdGggPSAoaSA+PSAwKSA/IGFyZ3VtZW50c1tpXSA6IHByb2Nlc3MuY3dkKCk7XG5cbiAgICAvLyBTa2lwIGVtcHR5IGFuZCBpbnZhbGlkIGVudHJpZXNcbiAgICBpZiAodHlwZW9mIHBhdGggIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudHMgdG8gcGF0aC5yZXNvbHZlIG11c3QgYmUgc3RyaW5ncycpO1xuICAgIH0gZWxzZSBpZiAoIXBhdGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJlc29sdmVkUGF0aCA9IHBhdGggKyAnLycgKyByZXNvbHZlZFBhdGg7XG4gICAgcmVzb2x2ZWRBYnNvbHV0ZSA9IHBhdGguY2hhckF0KDApID09PSAnLyc7XG4gIH1cblxuICAvLyBBdCB0aGlzIHBvaW50IHRoZSBwYXRoIHNob3VsZCBiZSByZXNvbHZlZCB0byBhIGZ1bGwgYWJzb2x1dGUgcGF0aCwgYnV0XG4gIC8vIGhhbmRsZSByZWxhdGl2ZSBwYXRocyB0byBiZSBzYWZlIChtaWdodCBoYXBwZW4gd2hlbiBwcm9jZXNzLmN3ZCgpIGZhaWxzKVxuXG4gIC8vIE5vcm1hbGl6ZSB0aGUgcGF0aFxuICByZXNvbHZlZFBhdGggPSBub3JtYWxpemVBcnJheShmaWx0ZXIocmVzb2x2ZWRQYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIXJlc29sdmVkQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICByZXR1cm4gKChyZXNvbHZlZEFic29sdXRlID8gJy8nIDogJycpICsgcmVzb2x2ZWRQYXRoKSB8fCAnLic7XG59O1xuXG4vLyBwYXRoLm5vcm1hbGl6ZShwYXRoKVxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5ub3JtYWxpemUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciBpc0Fic29sdXRlID0gZXhwb3J0cy5pc0Fic29sdXRlKHBhdGgpLFxuICAgICAgdHJhaWxpbmdTbGFzaCA9IHN1YnN0cihwYXRoLCAtMSkgPT09ICcvJztcblxuICAvLyBOb3JtYWxpemUgdGhlIHBhdGhcbiAgcGF0aCA9IG5vcm1hbGl6ZUFycmF5KGZpbHRlcihwYXRoLnNwbGl0KCcvJyksIGZ1bmN0aW9uKHApIHtcbiAgICByZXR1cm4gISFwO1xuICB9KSwgIWlzQWJzb2x1dGUpLmpvaW4oJy8nKTtcblxuICBpZiAoIXBhdGggJiYgIWlzQWJzb2x1dGUpIHtcbiAgICBwYXRoID0gJy4nO1xuICB9XG4gIGlmIChwYXRoICYmIHRyYWlsaW5nU2xhc2gpIHtcbiAgICBwYXRoICs9ICcvJztcbiAgfVxuXG4gIHJldHVybiAoaXNBYnNvbHV0ZSA/ICcvJyA6ICcnKSArIHBhdGg7XG59O1xuXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHJldHVybiBwYXRoLmNoYXJBdCgwKSA9PT0gJy8nO1xufTtcblxuLy8gcG9zaXggdmVyc2lvblxuZXhwb3J0cy5qb2luID0gZnVuY3Rpb24oKSB7XG4gIHZhciBwYXRocyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMCk7XG4gIHJldHVybiBleHBvcnRzLm5vcm1hbGl6ZShmaWx0ZXIocGF0aHMsIGZ1bmN0aW9uKHAsIGluZGV4KSB7XG4gICAgaWYgKHR5cGVvZiBwICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnRzIHRvIHBhdGguam9pbiBtdXN0IGJlIHN0cmluZ3MnKTtcbiAgICB9XG4gICAgcmV0dXJuIHA7XG4gIH0pLmpvaW4oJy8nKSk7XG59O1xuXG5cbi8vIHBhdGgucmVsYXRpdmUoZnJvbSwgdG8pXG4vLyBwb3NpeCB2ZXJzaW9uXG5leHBvcnRzLnJlbGF0aXZlID0gZnVuY3Rpb24oZnJvbSwgdG8pIHtcbiAgZnJvbSA9IGV4cG9ydHMucmVzb2x2ZShmcm9tKS5zdWJzdHIoMSk7XG4gIHRvID0gZXhwb3J0cy5yZXNvbHZlKHRvKS5zdWJzdHIoMSk7XG5cbiAgZnVuY3Rpb24gdHJpbShhcnIpIHtcbiAgICB2YXIgc3RhcnQgPSAwO1xuICAgIGZvciAoOyBzdGFydCA8IGFyci5sZW5ndGg7IHN0YXJ0KyspIHtcbiAgICAgIGlmIChhcnJbc3RhcnRdICE9PSAnJykgYnJlYWs7XG4gICAgfVxuXG4gICAgdmFyIGVuZCA9IGFyci5sZW5ndGggLSAxO1xuICAgIGZvciAoOyBlbmQgPj0gMDsgZW5kLS0pIHtcbiAgICAgIGlmIChhcnJbZW5kXSAhPT0gJycpIGJyZWFrO1xuICAgIH1cblxuICAgIGlmIChzdGFydCA+IGVuZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcnIuc2xpY2Uoc3RhcnQsIGVuZCAtIHN0YXJ0ICsgMSk7XG4gIH1cblxuICB2YXIgZnJvbVBhcnRzID0gdHJpbShmcm9tLnNwbGl0KCcvJykpO1xuICB2YXIgdG9QYXJ0cyA9IHRyaW0odG8uc3BsaXQoJy8nKSk7XG5cbiAgdmFyIGxlbmd0aCA9IE1hdGgubWluKGZyb21QYXJ0cy5sZW5ndGgsIHRvUGFydHMubGVuZ3RoKTtcbiAgdmFyIHNhbWVQYXJ0c0xlbmd0aCA9IGxlbmd0aDtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgIGlmIChmcm9tUGFydHNbaV0gIT09IHRvUGFydHNbaV0pIHtcbiAgICAgIHNhbWVQYXJ0c0xlbmd0aCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICB2YXIgb3V0cHV0UGFydHMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IHNhbWVQYXJ0c0xlbmd0aDsgaSA8IGZyb21QYXJ0cy5sZW5ndGg7IGkrKykge1xuICAgIG91dHB1dFBhcnRzLnB1c2goJy4uJyk7XG4gIH1cblxuICBvdXRwdXRQYXJ0cyA9IG91dHB1dFBhcnRzLmNvbmNhdCh0b1BhcnRzLnNsaWNlKHNhbWVQYXJ0c0xlbmd0aCkpO1xuXG4gIHJldHVybiBvdXRwdXRQYXJ0cy5qb2luKCcvJyk7XG59O1xuXG5leHBvcnRzLnNlcCA9ICcvJztcbmV4cG9ydHMuZGVsaW1pdGVyID0gJzonO1xuXG5leHBvcnRzLmRpcm5hbWUgPSBmdW5jdGlvbihwYXRoKSB7XG4gIHZhciByZXN1bHQgPSBzcGxpdFBhdGgocGF0aCksXG4gICAgICByb290ID0gcmVzdWx0WzBdLFxuICAgICAgZGlyID0gcmVzdWx0WzFdO1xuXG4gIGlmICghcm9vdCAmJiAhZGlyKSB7XG4gICAgLy8gTm8gZGlybmFtZSB3aGF0c29ldmVyXG4gICAgcmV0dXJuICcuJztcbiAgfVxuXG4gIGlmIChkaXIpIHtcbiAgICAvLyBJdCBoYXMgYSBkaXJuYW1lLCBzdHJpcCB0cmFpbGluZyBzbGFzaFxuICAgIGRpciA9IGRpci5zdWJzdHIoMCwgZGlyLmxlbmd0aCAtIDEpO1xuICB9XG5cbiAgcmV0dXJuIHJvb3QgKyBkaXI7XG59O1xuXG5cbmV4cG9ydHMuYmFzZW5hbWUgPSBmdW5jdGlvbihwYXRoLCBleHQpIHtcbiAgdmFyIGYgPSBzcGxpdFBhdGgocGF0aClbMl07XG4gIC8vIFRPRE86IG1ha2UgdGhpcyBjb21wYXJpc29uIGNhc2UtaW5zZW5zaXRpdmUgb24gd2luZG93cz9cbiAgaWYgKGV4dCAmJiBmLnN1YnN0cigtMSAqIGV4dC5sZW5ndGgpID09PSBleHQpIHtcbiAgICBmID0gZi5zdWJzdHIoMCwgZi5sZW5ndGggLSBleHQubGVuZ3RoKTtcbiAgfVxuICByZXR1cm4gZjtcbn07XG5cblxuZXhwb3J0cy5leHRuYW1lID0gZnVuY3Rpb24ocGF0aCkge1xuICByZXR1cm4gc3BsaXRQYXRoKHBhdGgpWzNdO1xufTtcblxuZnVuY3Rpb24gZmlsdGVyICh4cywgZikge1xuICAgIGlmICh4cy5maWx0ZXIpIHJldHVybiB4cy5maWx0ZXIoZik7XG4gICAgdmFyIHJlcyA9IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgeHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGYoeHNbaV0sIGksIHhzKSkgcmVzLnB1c2goeHNbaV0pO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xufVxuXG4vLyBTdHJpbmcucHJvdG90eXBlLnN1YnN0ciAtIG5lZ2F0aXZlIGluZGV4IGRvbid0IHdvcmsgaW4gSUU4XG52YXIgc3Vic3RyID0gJ2FiJy5zdWJzdHIoLTEpID09PSAnYidcbiAgICA/IGZ1bmN0aW9uIChzdHIsIHN0YXJ0LCBsZW4pIHsgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbikgfVxuICAgIDogZnVuY3Rpb24gKHN0ciwgc3RhcnQsIGxlbikge1xuICAgICAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IHN0ci5sZW5ndGggKyBzdGFydDtcbiAgICAgICAgcmV0dXJuIHN0ci5zdWJzdHIoc3RhcnQsIGxlbik7XG4gICAgfVxuO1xuIiwiLypcbiBDb3B5cmlnaHQgMjAxMy0yMDE0IERhbmllbCBXaXJ0eiA8ZGNvZGVAZGNvZGUuaW8+XG5cbiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAbGljZW5zZSBCeXRlQnVmZmVyLmpzIChjKSAyMDEzLTIwMTQgRGFuaWVsIFdpcnR6IDxkY29kZUBkY29kZS5pbz5cbiAqIFRoaXMgdmVyc2lvbiBvZiBCeXRlQnVmZmVyLmpzIHVzZXMgYW4gQXJyYXlCdWZmZXIgYXMgaXRzIGJhY2tpbmcgYnVmZmVyIHdoaWNoIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBEYXRhVmlldyBhbmQgaXNcbiAqIGNvbXBhdGlibGUgd2l0aCBtb2Rlcm4gYnJvd3NlcnMuXG4gKiBSZWxlYXNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXG4gKiBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL0J5dGVCdWZmZXIuanMgZm9yIGRldGFpbHNcbiAqLyAvL1xuKGZ1bmN0aW9uKGdsb2JhbCkge1xuICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtmdW5jdGlvbihuZXc6IExvbmcsIG51bWJlciwgbnVtYmVyLCBib29sZWFuPSk9fSBMb25nXG4gICAgICogQHJldHVybnMge2Z1bmN0aW9uKG5ldzogQnl0ZUJ1ZmZlciwgbnVtYmVyPSwgYm9vbGVhbj0sIGJvb2xlYW49KX19XG4gICAgICogQGlubmVyXG4gICAgICovXG4gICAgZnVuY3Rpb24gbG9hZEJ5dGVCdWZmZXIoTG9uZykge1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IEJ5dGVCdWZmZXIuXG4gICAgICAgICAqIEBjbGFzcyBUaGUgc3dpc3MgYXJteSBrbmlmZSBmb3IgYmluYXJ5IGRhdGEgaW4gSmF2YVNjcmlwdC5cbiAgICAgICAgICogQGV4cG9ydHMgQnl0ZUJ1ZmZlclxuICAgICAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBjYXBhY2l0eSBJbml0aWFsIGNhcGFjaXR5LiBEZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0NBUEFDSVRZfS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbGl0dGxlRW5kaWFuIFdoZXRoZXIgdG8gdXNlIGxpdHRsZSBvciBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIuIERlZmF1bHRzIHRvXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0VORElBTn0uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gc2tpcCBhc3NlcnRpb25zIG9mIG9mZnNldHMgYW5kIHZhbHVlcy4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLkRFRkFVTFRfTk9BU1NFUlR9LlxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICB2YXIgQnl0ZUJ1ZmZlciA9IGZ1bmN0aW9uKGNhcGFjaXR5LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNhcGFjaXR5ICAgICA9PT0gJ3VuZGVmaW5lZCcpIGNhcGFjaXR5ICAgICA9IEJ5dGVCdWZmZXIuREVGQVVMVF9DQVBBQ0lUWTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgbGl0dGxlRW5kaWFuID09PSAndW5kZWZpbmVkJykgbGl0dGxlRW5kaWFuID0gQnl0ZUJ1ZmZlci5ERUZBVUxUX0VORElBTjtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygbm9Bc3NlcnQgICAgID09PSAndW5kZWZpbmVkJykgbm9Bc3NlcnQgICAgID0gQnl0ZUJ1ZmZlci5ERUZBVUxUX05PQVNTRVJUO1xuICAgICAgICAgICAgaWYgKCFub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGNhcGFjaXR5ID0gY2FwYWNpdHkgfCAwO1xuICAgICAgICAgICAgICAgIGlmIChjYXBhY2l0eSA8IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIGNhcGFjaXR5XCIpO1xuICAgICAgICAgICAgICAgIGxpdHRsZUVuZGlhbiA9ICEhbGl0dGxlRW5kaWFuO1xuICAgICAgICAgICAgICAgIG5vQXNzZXJ0ID0gISFub0Fzc2VydDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBCYWNraW5nIGJ1ZmZlci5cbiAgICAgICAgICAgICAqIEB0eXBlIHshQXJyYXlCdWZmZXJ9XG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gY2FwYWNpdHkgPT09IDAgPyBFTVBUWV9CVUZGRVIgOiBuZXcgQXJyYXlCdWZmZXIoY2FwYWNpdHkpO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERhdGEgdmlldyB0byBtYW5pcHVsYXRlIHRoZSBiYWNraW5nIGJ1ZmZlci4gQmVjb21lcyBgbnVsbGAgaWYgdGhlIGJhY2tpbmcgYnVmZmVyIGhhcyBhIGNhcGFjaXR5IG9mIGAwYC5cbiAgICAgICAgICAgICAqIEB0eXBlIHs/RGF0YVZpZXd9XG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMudmlldyA9IGNhcGFjaXR5ID09PSAwID8gbnVsbCA6IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZmZlcik7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWJzb2x1dGUgcmVhZC93cml0ZSBvZmZzZXQuXG4gICAgICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICogQHNlZSBCeXRlQnVmZmVyI2ZsaXBcbiAgICAgICAgICAgICAqIEBzZWUgQnl0ZUJ1ZmZlciNjbGVhclxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogTWFya2VkIG9mZnNldC5cbiAgICAgICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKiBAc2VlIEJ5dGVCdWZmZXIjbWFya1xuICAgICAgICAgICAgICogQHNlZSBCeXRlQnVmZmVyI3Jlc2V0XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHRoaXMubWFya2VkT2Zmc2V0ID0gLTE7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQWJzb2x1dGUgbGltaXQgb2YgdGhlIGNvbnRhaW5lZCBkYXRhLiBTZXQgdG8gdGhlIGJhY2tpbmcgYnVmZmVyJ3MgY2FwYWNpdHkgdXBvbiBhbGxvY2F0aW9uLlxuICAgICAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqIEBzZWUgQnl0ZUJ1ZmZlciNmbGlwXG4gICAgICAgICAgICAgKiBAc2VlIEJ5dGVCdWZmZXIjY2xlYXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5saW1pdCA9IGNhcGFjaXR5O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdoZXRoZXIgdG8gdXNlIGxpdHRsZSBlbmRpYW4gYnl0ZSBvcmRlciwgZGVmYXVsdHMgdG8gYGZhbHNlYCBmb3IgYmlnIGVuZGlhbi5cbiAgICAgICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB0aGlzLmxpdHRsZUVuZGlhbiA9IHR5cGVvZiBsaXR0bGVFbmRpYW4gIT09ICd1bmRlZmluZWQnID8gISFsaXR0bGVFbmRpYW4gOiBmYWxzZTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXaGV0aGVyIHRvIHNraXAgYXNzZXJ0aW9ucyBvZiBvZmZzZXRzIGFuZCB2YWx1ZXMsIGRlZmF1bHRzIHRvIGBmYWxzZWAuXG4gICAgICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdGhpcy5ub0Fzc2VydCA9ICEhbm9Bc3NlcnQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEJ5dGVCdWZmZXIgdmVyc2lvbi5cbiAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICogQGNvbnN0XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuVkVSU0lPTiA9IFwiMy41LjVcIjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTGl0dGxlIGVuZGlhbiBjb25zdGFudCB0aGF0IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgaXRzIGJvb2xlYW4gdmFsdWUuIEV2YWx1YXRlcyB0byBgdHJ1ZWAuXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5MSVRUTEVfRU5ESUFOID0gdHJ1ZTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQmlnIGVuZGlhbiBjb25zdGFudCB0aGF0IGNhbiBiZSB1c2VkIGluc3RlYWQgb2YgaXRzIGJvb2xlYW4gdmFsdWUuIEV2YWx1YXRlcyB0byBgZmFsc2VgLlxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICogQGNvbnN0XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuQklHX0VORElBTiA9IGZhbHNlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWZhdWx0IGluaXRpYWwgY2FwYWNpdHkgb2YgYDE2YC5cbiAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5ERUZBVUxUX0NBUEFDSVRZID0gMTY7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlZmF1bHQgZW5kaWFuZXNzIG9mIGBmYWxzZWAgZm9yIGJpZyBlbmRpYW4uXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLkRFRkFVTFRfRU5ESUFOID0gQnl0ZUJ1ZmZlci5CSUdfRU5ESUFOO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBEZWZhdWx0IG5vIGFzc2VydGlvbnMgZmxhZyBvZiBgZmFsc2VgLlxuICAgICAgICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5ERUZBVUxUX05PQVNTRVJUID0gZmFsc2U7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEEgYExvbmdgIGNsYXNzIGZvciByZXByZXNlbnRpbmcgYSA2NC1iaXQgdHdvJ3MtY29tcGxlbWVudCBpbnRlZ2VyIHZhbHVlLiBNYXkgYmUgYG51bGxgIGlmIExvbmcuanMgaGFzIG5vdCBiZWVuIGxvYWRlZFxuICAgICAgICAgKiAgYW5kIGludDY0IHN1cHBvcnQgaXMgbm90IGF2YWlsYWJsZS5cbiAgICAgICAgICogQHR5cGUgez9Mb25nfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZGNvZGVJTy9Mb25nLmpzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuTG9uZyA9IExvbmcgfHwgbnVsbDtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQGFsaWFzIEJ5dGVCdWZmZXIucHJvdG90eXBlXG4gICAgICAgICAqIEBpbm5lclxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIEJ5dGVCdWZmZXJQcm90b3R5cGUgPSBCeXRlQnVmZmVyLnByb3RvdHlwZTtcblxuICAgICAgICAvLyBoZWxwZXJzXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEB0eXBlIHshQXJyYXlCdWZmZXJ9XG4gICAgICAgICAqIEBpbm5lclxuICAgICAgICAgKi9cbiAgICAgICAgdmFyIEVNUFRZX0JVRkZFUiA9IG5ldyBBcnJheUJ1ZmZlcigwKTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogU3RyaW5nLmZyb21DaGFyQ29kZSByZWZlcmVuY2UgZm9yIGNvbXBpbGUtdGltZSByZW5hbWluZy5cbiAgICAgICAgICogQHR5cGUge2Z1bmN0aW9uKC4uLm51bWJlcik6c3RyaW5nfVxuICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICovXG4gICAgICAgIHZhciBzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgc291cmNlIGZ1bmN0aW9uIGZvciBhIHN0cmluZy5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHMgU3RyaW5nIHRvIHJlYWQgZnJvbVxuICAgICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24oKTpudW1iZXJ8bnVsbH0gU291cmNlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbmV4dCBjaGFyIGNvZGUgcmVzcGVjdGl2ZWx5IGBudWxsYCBpZiB0aGVyZSBhcmVcbiAgICAgICAgICogIG5vIG1vcmUgY2hhcmFjdGVycyBsZWZ0LlxuICAgICAgICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIHRoZSBhcmd1bWVudCBpcyBpbnZhbGlkXG4gICAgICAgICAqIEBpbm5lclxuICAgICAgICAgKi9cbiAgICAgICAgZnVuY3Rpb24gc3RyaW5nU291cmNlKHMpIHtcbiAgICAgICAgICAgIHZhciBpPTA7IHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gaSA8IHMubGVuZ3RoID8gcy5jaGFyQ29kZUF0KGkrKykgOiBudWxsO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgZGVzdGluYXRpb24gZnVuY3Rpb24gZm9yIGEgc3RyaW5nLlxuICAgICAgICAgKiBAcmV0dXJucyB7ZnVuY3Rpb24obnVtYmVyPSk6dW5kZWZpbmVkfHN0cmluZ30gRGVzdGluYXRpb24gZnVuY3Rpb24gc3VjY2Vzc2l2ZWx5IGNhbGxlZCB3aXRoIHRoZSBuZXh0IGNoYXIgY29kZS5cbiAgICAgICAgICogIFJldHVybnMgdGhlIGZpbmFsIHN0cmluZyB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy5cbiAgICAgICAgICogQGlubmVyXG4gICAgICAgICAqL1xuICAgICAgICBmdW5jdGlvbiBzdHJpbmdEZXN0aW5hdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBjcyA9IFtdLCBwcyA9IFtdOyByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcy5qb2luKCcnKStzdHJpbmdGcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjcyk7XG4gICAgICAgICAgICAgICAgaWYgKGNzLmxlbmd0aCArIGFyZ3VtZW50cy5sZW5ndGggPiAxMDI0KVxuICAgICAgICAgICAgICAgICAgICBwcy5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNzKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBjcy5sZW5ndGggPSAwO1xuICAgICAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KGNzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBBbGxvY2F0ZXMgYSBuZXcgQnl0ZUJ1ZmZlciBiYWNrZWQgYnkgYSBidWZmZXIgb2YgdGhlIHNwZWNpZmllZCBjYXBhY2l0eS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBjYXBhY2l0eSBJbml0aWFsIGNhcGFjaXR5LiBEZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0NBUEFDSVRZfS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbGl0dGxlRW5kaWFuIFdoZXRoZXIgdG8gdXNlIGxpdHRsZSBvciBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIuIERlZmF1bHRzIHRvXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0VORElBTn0uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gc2tpcCBhc3NlcnRpb25zIG9mIG9mZnNldHMgYW5kIHZhbHVlcy4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLkRFRkFVTFRfTk9BU1NFUlR9LlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuYWxsb2NhdGUgPSBmdW5jdGlvbihjYXBhY2l0eSwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBCeXRlQnVmZmVyKGNhcGFjaXR5LCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ29uY2F0ZW5hdGVzIG11bHRpcGxlIEJ5dGVCdWZmZXJzIGludG8gb25lLlxuICAgICAgICAgKiBAcGFyYW0geyFBcnJheS48IUJ5dGVCdWZmZXJ8IUFycmF5QnVmZmVyfCFVaW50OEFycmF5fHN0cmluZz59IGJ1ZmZlcnMgQnVmZmVycyB0byBjb25jYXRlbmF0ZVxuICAgICAgICAgKiBAcGFyYW0geyhzdHJpbmd8Ym9vbGVhbik9fSBlbmNvZGluZyBTdHJpbmcgZW5jb2RpbmcgaWYgYGJ1ZmZlcnNgIGNvbnRhaW5zIGEgc3RyaW5nIChcImJhc2U2NFwiLCBcImhleFwiLCBcImJpbmFyeVwiLFxuICAgICAgICAgKiAgZGVmYXVsdHMgdG8gXCJ1dGY4XCIpXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGxpdHRsZUVuZGlhbiBXaGV0aGVyIHRvIHVzZSBsaXR0bGUgb3IgYmlnIGVuZGlhbiBieXRlIG9yZGVyIGZvciB0aGUgcmVzdWx0aW5nIEJ5dGVCdWZmZXIuIERlZmF1bHRzXG4gICAgICAgICAqICB0byB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0VORElBTn0uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gc2tpcCBhc3NlcnRpb25zIG9mIG9mZnNldHMgYW5kIHZhbHVlcyBmb3IgdGhlIHJlc3VsdGluZyBCeXRlQnVmZmVyLiBEZWZhdWx0cyB0b1xuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIuREVGQVVMVF9OT0FTU0VSVH0uXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gQ29uY2F0ZW5hdGVkIEJ5dGVCdWZmZXJcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5jb25jYXQgPSBmdW5jdGlvbihidWZmZXJzLCBlbmNvZGluZywgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBub0Fzc2VydCA9IGxpdHRsZUVuZGlhbjtcbiAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW4gPSBlbmNvZGluZztcbiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjYXBhY2l0eSA9IDA7XG4gICAgICAgICAgICBmb3IgKHZhciBpPTAsIGs9YnVmZmVycy5sZW5ndGgsIGxlbmd0aDsgaTxrOyArK2kpIHtcbiAgICAgICAgICAgICAgICBpZiAoIUJ5dGVCdWZmZXIuaXNCeXRlQnVmZmVyKGJ1ZmZlcnNbaV0pKVxuICAgICAgICAgICAgICAgICAgICBidWZmZXJzW2ldID0gQnl0ZUJ1ZmZlci53cmFwKGJ1ZmZlcnNbaV0sIGVuY29kaW5nKTtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBidWZmZXJzW2ldLmxpbWl0IC0gYnVmZmVyc1tpXS5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDApIGNhcGFjaXR5ICs9IGxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjYXBhY2l0eSA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEJ5dGVCdWZmZXIoMCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCk7XG4gICAgICAgICAgICB2YXIgYmIgPSBuZXcgQnl0ZUJ1ZmZlcihjYXBhY2l0eSwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCksXG4gICAgICAgICAgICAgICAgYmk7XG4gICAgICAgICAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJiLmJ1ZmZlcik7XG4gICAgICAgICAgICBpPTA7IHdoaWxlIChpPGspIHtcbiAgICAgICAgICAgICAgICBiaSA9IGJ1ZmZlcnNbaSsrXTtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSBiaS5saW1pdCAtIGJpLm9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAobGVuZ3RoIDw9IDApIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJpLmJ1ZmZlcikuc3ViYXJyYXkoYmkub2Zmc2V0LCBiaS5saW1pdCksIGJiLm9mZnNldCk7XG4gICAgICAgICAgICAgICAgYmIub2Zmc2V0ICs9IGxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJiLmxpbWl0ID0gYmIub2Zmc2V0O1xuICAgICAgICAgICAgYmIub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgIHJldHVybiBiYjtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogVGVzdHMgaWYgdGhlIHNwZWNpZmllZCB0eXBlIGlzIGEgQnl0ZUJ1ZmZlci5cbiAgICAgICAgICogQHBhcmFtIHsqfSBiYiBCeXRlQnVmZmVyIHRvIHRlc3RcbiAgICAgICAgICogQHJldHVybnMge2Jvb2xlYW59IGB0cnVlYCBpZiBpdCBpcyBhIEJ5dGVCdWZmZXIsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuaXNCeXRlQnVmZmVyID0gZnVuY3Rpb24oYmIpIHtcbiAgICAgICAgICAgIHJldHVybiAoYmIgJiYgYmIgaW5zdGFuY2VvZiBCeXRlQnVmZmVyKSA9PT0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIGJhY2tpbmcgYnVmZmVyIHR5cGUuXG4gICAgICAgICAqIEByZXR1cm5zIHtGdW5jdGlvbn0gYEJ1ZmZlcmAgZm9yIE5CIGJ1aWxkcywgYEFycmF5QnVmZmVyYCBmb3IgQUIgYnVpbGRzIChjbGFzc2VzKVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLnR5cGUgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBBcnJheUJ1ZmZlcjtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JhcHMgYSBidWZmZXIgb3IgYSBzdHJpbmcuIFNldHMgdGhlIGFsbG9jYXRlZCBCeXRlQnVmZmVyJ3Mge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSB0byBgMGAgYW5kIGl0c1xuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIjbGltaXR9IHRvIHRoZSBsZW5ndGggb2YgdGhlIHdyYXBwZWQgZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHshQnl0ZUJ1ZmZlcnwhQXJyYXlCdWZmZXJ8IVVpbnQ4QXJyYXl8c3RyaW5nfCFBcnJheS48bnVtYmVyPn0gYnVmZmVyIEFueXRoaW5nIHRoYXQgY2FuIGJlIHdyYXBwZWRcbiAgICAgICAgICogQHBhcmFtIHsoc3RyaW5nfGJvb2xlYW4pPX0gZW5jb2RpbmcgU3RyaW5nIGVuY29kaW5nIGlmIGBidWZmZXJgIGlzIGEgc3RyaW5nIChcImJhc2U2NFwiLCBcImhleFwiLCBcImJpbmFyeVwiLCBkZWZhdWx0cyB0b1xuICAgICAgICAgKiAgXCJ1dGY4XCIpXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGxpdHRsZUVuZGlhbiBXaGV0aGVyIHRvIHVzZSBsaXR0bGUgb3IgYmlnIGVuZGlhbiBieXRlIG9yZGVyLiBEZWZhdWx0cyB0b1xuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIuREVGQVVMVF9FTkRJQU59LlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub0Fzc2VydCBXaGV0aGVyIHRvIHNraXAgYXNzZXJ0aW9ucyBvZiBvZmZzZXRzIGFuZCB2YWx1ZXMuIERlZmF1bHRzIHRvXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX05PQVNTRVJUfS5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSBBIEJ5dGVCdWZmZXIgd3JhcHBpbmcgYGJ1ZmZlcmBcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci53cmFwID0gZnVuY3Rpb24oYnVmZmVyLCBlbmNvZGluZywgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICBub0Fzc2VydCA9IGxpdHRsZUVuZGlhbjtcbiAgICAgICAgICAgICAgICBsaXR0bGVFbmRpYW4gPSBlbmNvZGluZztcbiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0eXBlb2YgYnVmZmVyID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyA9IFwidXRmOFwiO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImJhc2U2NFwiOlxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEJ5dGVCdWZmZXIuZnJvbUJhc2U2NChidWZmZXIsIGxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCJoZXhcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCeXRlQnVmZmVyLmZyb21IZXgoYnVmZmVyLCBsaXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgICAgICAgICBjYXNlIFwiYmluYXJ5XCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5mcm9tQmluYXJ5KGJ1ZmZlciwgbGl0dGxlRW5kaWFuKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcInV0ZjhcIjpcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBCeXRlQnVmZmVyLmZyb21VVEY4KGJ1ZmZlciwgbGl0dGxlRW5kaWFuKTtcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBcImRlYnVnXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQnl0ZUJ1ZmZlci5mcm9tRGVidWcoYnVmZmVyLCBsaXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbnN1cHBvcnRlZCBlbmNvZGluZzogXCIrZW5jb2RpbmcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChidWZmZXIgPT09IG51bGwgfHwgdHlwZW9mIGJ1ZmZlciAhPT0gJ29iamVjdCcpXG4gICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBidWZmZXJcIik7XG4gICAgICAgICAgICB2YXIgYmI7XG4gICAgICAgICAgICBpZiAoQnl0ZUJ1ZmZlci5pc0J5dGVCdWZmZXIoYnVmZmVyKSkge1xuICAgICAgICAgICAgICAgIGJiID0gQnl0ZUJ1ZmZlclByb3RvdHlwZS5jbG9uZS5jYWxsKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYmIubWFya2VkT2Zmc2V0ID0gLTE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGJiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHsgLy8gRXh0cmFjdCBBcnJheUJ1ZmZlciBmcm9tIFVpbnQ4QXJyYXlcbiAgICAgICAgICAgICAgICBiYiA9IG5ldyBCeXRlQnVmZmVyKDAsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpO1xuICAgICAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoID4gMCkgeyAvLyBBdm9pZCByZWZlcmVuY2VzIHRvIG1vcmUgdGhhbiBvbmUgRU1QVFlfQlVGRkVSXG4gICAgICAgICAgICAgICAgICAgIGJiLmJ1ZmZlciA9IGJ1ZmZlci5idWZmZXI7XG4gICAgICAgICAgICAgICAgICAgIGJiLm9mZnNldCA9IGJ1ZmZlci5ieXRlT2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICBiYi5saW1pdCA9IGJ1ZmZlci5ieXRlT2Zmc2V0ICsgYnVmZmVyLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYmIudmlldyA9IGJ1ZmZlci5sZW5ndGggPiAwID8gbmV3IERhdGFWaWV3KGJ1ZmZlci5idWZmZXIpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGJ1ZmZlciBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSB7IC8vIFJldXNlIEFycmF5QnVmZmVyXG4gICAgICAgICAgICAgICAgYmIgPSBuZXcgQnl0ZUJ1ZmZlcigwLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KTtcbiAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLmJ5dGVMZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIGJiLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICAgICAgYmIub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgYmIubGltaXQgPSBidWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgYmIudmlldyA9IGJ1ZmZlci5ieXRlTGVuZ3RoID4gMCA/IG5ldyBEYXRhVmlldyhidWZmZXIpIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChidWZmZXIpID09PSBcIltvYmplY3QgQXJyYXldXCIpIHsgLy8gQ3JlYXRlIGZyb20gb2N0ZXRzXG4gICAgICAgICAgICAgICAgYmIgPSBuZXcgQnl0ZUJ1ZmZlcihidWZmZXIubGVuZ3RoLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KTtcbiAgICAgICAgICAgICAgICBiYi5saW1pdCA9IGJ1ZmZlci5sZW5ndGg7XG4gICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8YnVmZmVyLmxlbmd0aDsgKytpKVxuICAgICAgICAgICAgICAgICAgICBiYi52aWV3LnNldFVpbnQ4KGksIGJ1ZmZlcltpXSk7XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGJ1ZmZlclwiKTsgLy8gT3RoZXJ3aXNlIGZhaWxcbiAgICAgICAgICAgIHJldHVybiBiYjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0eXBlcy9pbnRzL2ludDhcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGFuIDhiaXQgc2lnbmVkIGludGVnZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBhZHZhbmNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDFgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlSW50OCA9IGZ1bmN0aW9uKHZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IHZhbHVlICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSB8PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICB2YXIgY2FwYWNpdHkwID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTApXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5MCAqPSAyKSA+IG9mZnNldCA/IGNhcGFjaXR5MCA6IG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgLT0gMTtcbiAgICAgICAgICAgIHRoaXMudmlldy5zZXRJbnQ4KG9mZnNldCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB0aGlzLm9mZnNldCArPSAxO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyaXRlcyBhbiA4Yml0IHNpZ25lZCBpbnRlZ2VyLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBCeXRlQnVmZmVyI3dyaXRlSW50OH0uXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgYWR2YW5jZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGAxYCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUJ5dGUgPSBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlSW50ODtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYW4gOGJpdCBzaWduZWQgaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHJlYWQgZnJvbS4gV2lsbCB1c2UgYW5kIGFkdmFuY2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgMWAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMSA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIisxK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmlldy5nZXRJbnQ4KG9mZnNldCk7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDE7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGFuIDhiaXQgc2lnbmVkIGludGVnZXIuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIEJ5dGVCdWZmZXIjcmVhZEludDh9LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHJlYWQgZnJvbS4gV2lsbCB1c2UgYW5kIGFkdmFuY2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgMWAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRCeXRlID0gQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkSW50ODtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGFuIDhiaXQgdW5zaWduZWQgaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGFkdmFuY2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgMWAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVVaW50OCA9IGZ1bmN0aW9uKHZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IHZhbHVlICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmZzZXQgKz0gMTtcbiAgICAgICAgICAgIHZhciBjYXBhY2l0eTEgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MSlcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgoY2FwYWNpdHkxICo9IDIpID4gb2Zmc2V0ID8gY2FwYWNpdHkxIDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSAxO1xuICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCwgdmFsdWUpO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB0aGlzLm9mZnNldCArPSAxO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGFuIDhiaXQgdW5zaWduZWQgaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHJlYWQgZnJvbS4gV2lsbCB1c2UgYW5kIGFkdmFuY2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgMWAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRVaW50OCA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDEgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMStcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gMTtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0eXBlcy9pbnRzL2ludDE2XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyaXRlcyBhIDE2Yml0IHNpZ25lZCBpbnRlZ2VyLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgYWR2YW5jZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGAyYCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBvZmZzZXRgIG9yIGB2YWx1ZWAgaXMgbm90IGEgdmFsaWQgbnVtYmVyXG4gICAgICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGBvZmZzZXRgIGlzIG91dCBvZiBib3VuZHNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUludDE2ID0gZnVuY3Rpb24odmFsdWUsIG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgdmFsdWUgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHZhbHVlOiBcIit2YWx1ZStcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIHZhbHVlIHw9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgICAgIHZhciBjYXBhY2l0eTIgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MilcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgoY2FwYWNpdHkyICo9IDIpID4gb2Zmc2V0ID8gY2FwYWNpdHkyIDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSAyO1xuICAgICAgICAgICAgdGhpcy52aWV3LnNldEludDE2KG9mZnNldCwgdmFsdWUsIHRoaXMubGl0dGxlRW5kaWFuKTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gMjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYSAxNmJpdCBzaWduZWQgaW50ZWdlci4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgQnl0ZUJ1ZmZlciN3cml0ZUludDE2fS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBhZHZhbmNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDJgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYG9mZnNldGAgb3IgYHZhbHVlYCBpcyBub3QgYSB2YWxpZCBudW1iZXJcbiAgICAgICAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYG9mZnNldGAgaXMgb3V0IG9mIGJvdW5kc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlU2hvcnQgPSBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlSW50MTY7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGEgMTZiaXQgc2lnbmVkIGludGVnZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBhZHZhbmNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDJgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAgICAgICAgICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgb2Zmc2V0YCBpcyBub3QgYSB2YWxpZCBudW1iZXJcbiAgICAgICAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYG9mZnNldGAgaXMgb3V0IG9mIGJvdW5kc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRJbnQxNiA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDIgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMitcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZpZXcuZ2V0SW50MTYob2Zmc2V0LCB0aGlzLmxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDI7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGEgMTZiaXQgc2lnbmVkIGludGVnZXIuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIEJ5dGVCdWZmZXIjcmVhZEludDE2fS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBhZHZhbmNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDJgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAgICAgICAgICogQHRocm93cyB7VHlwZUVycm9yfSBJZiBgb2Zmc2V0YCBpcyBub3QgYSB2YWxpZCBudW1iZXJcbiAgICAgICAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYG9mZnNldGAgaXMgb3V0IG9mIGJvdW5kc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRTaG9ydCA9IEJ5dGVCdWZmZXJQcm90b3R5cGUucmVhZEludDE2O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYSAxNmJpdCB1bnNpZ25lZCBpbnRlZ2VyLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgYWR2YW5jZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGAyYCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBvZmZzZXRgIG9yIGB2YWx1ZWAgaXMgbm90IGEgdmFsaWQgbnVtYmVyXG4gICAgICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGBvZmZzZXRgIGlzIG91dCBvZiBib3VuZHNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZVVpbnQxNiA9IGZ1bmN0aW9uKHZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IHZhbHVlICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmZzZXQgKz0gMjtcbiAgICAgICAgICAgIHZhciBjYXBhY2l0eTMgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MylcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgoY2FwYWNpdHkzICo9IDIpID4gb2Zmc2V0ID8gY2FwYWNpdHkzIDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSAyO1xuICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQxNihvZmZzZXQsIHZhbHVlLCB0aGlzLmxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDI7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYSAxNmJpdCB1bnNpZ25lZCBpbnRlZ2VyLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgYWR2YW5jZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGAyYCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBWYWx1ZSByZWFkXG4gICAgICAgICAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYG9mZnNldGAgaXMgbm90IGEgdmFsaWQgbnVtYmVyXG4gICAgICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGBvZmZzZXRgIGlzIG91dCBvZiBib3VuZHNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkVWludDE2ID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMiA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIisyK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmlldy5nZXRVaW50MTYob2Zmc2V0LCB0aGlzLmxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDI7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdHlwZXMvaW50cy9pbnQzMlxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYSAzMmJpdCBzaWduZWQgaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDRgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVJbnQzMiA9IGZ1bmN0aW9uKHZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IHZhbHVlICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICB2YWx1ZSB8PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICB2YXIgY2FwYWNpdHk0ID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTQpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5NCAqPSAyKSA+IG9mZnNldCA/IGNhcGFjaXR5NCA6IG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgLT0gNDtcbiAgICAgICAgICAgIHRoaXMudmlldy5zZXRJbnQzMihvZmZzZXQsIHZhbHVlLCB0aGlzLmxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGEgMzJiaXQgc2lnbmVkIGludGVnZXIuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIEJ5dGVCdWZmZXIjd3JpdGVJbnQzMn0uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGA0YCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlSW50ID0gQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUludDMyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFkcyBhIDMyYml0IHNpZ25lZCBpbnRlZ2VyLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgNGAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRJbnQzMiA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDQgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrNCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZpZXcuZ2V0SW50MzIob2Zmc2V0LCB0aGlzLmxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGEgMzJiaXQgc2lnbmVkIGludGVnZXIuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIEJ5dGVCdWZmZXIjcmVhZEludDMyfS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHJlYWQgZnJvbS4gV2lsbCB1c2UgYW5kIGFkdmFuY2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgNGAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gVmFsdWUgcmVhZFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRJbnQgPSBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRJbnQzMjtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGEgMzJiaXQgdW5zaWduZWQgaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDRgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVVaW50MzIgPSBmdW5jdGlvbih2YWx1ZSwgb2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJyB8fCB2YWx1ZSAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgdmFsdWU6IFwiK3ZhbHVlK1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgdmFsdWUgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICB2YXIgY2FwYWNpdHk1ID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTUpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5NSAqPSAyKSA+IG9mZnNldCA/IGNhcGFjaXR5NSA6IG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgLT0gNDtcbiAgICAgICAgICAgIHRoaXMudmlldy5zZXRVaW50MzIob2Zmc2V0LCB2YWx1ZSwgdGhpcy5saXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB0aGlzLm9mZnNldCArPSA0O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGEgMzJiaXQgdW5zaWduZWQgaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHJlYWQgZnJvbS4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDRgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFZhbHVlIHJlYWRcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkVWludDMyID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgNCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIis0K1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmlldy5nZXRVaW50MzIob2Zmc2V0LCB0aGlzLmxpdHRsZUVuZGlhbik7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdHlwZXMvaW50cy9pbnQ2NFxuXG4gICAgICAgIGlmIChMb25nKSB7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV3JpdGVzIGEgNjRiaXQgc2lnbmVkIGludGVnZXIuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcnwhTG9uZ30gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDhgIGlmIG9taXR0ZWQuXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUludDY0ID0gZnVuY3Rpb24odmFsdWUsIG9mZnNldCkge1xuICAgICAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBMb25nLmZyb21OdW1iZXIodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBMb25nLmZyb21TdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghKHZhbHVlICYmIHZhbHVlIGluc3RhbmNlb2YgTG9uZykpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHZhbHVlOiBcIit2YWx1ZStcIiAobm90IGFuIGludGVnZXIgb3IgTG9uZylcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIiswK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IExvbmcuZnJvbVN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IDg7XG4gICAgICAgICAgICAgICAgdmFyIGNhcGFjaXR5NiA9IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5NilcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5NiAqPSAyKSA+IG9mZnNldCA/IGNhcGFjaXR5NiA6IG9mZnNldCk7XG4gICAgICAgICAgICAgICAgb2Zmc2V0IC09IDg7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubGl0dGxlRW5kaWFuKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5zZXRJbnQzMihvZmZzZXQgICwgdmFsdWUubG93ICwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5zZXRJbnQzMihvZmZzZXQrNCwgdmFsdWUuaGlnaCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldEludDMyKG9mZnNldCAgLCB2YWx1ZS5oaWdoLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5zZXRJbnQzMihvZmZzZXQrNCwgdmFsdWUubG93ICwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdyaXRlcyBhIDY0Yml0IHNpZ25lZCBpbnRlZ2VyLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBCeXRlQnVmZmVyI3dyaXRlSW50NjR9LlxuICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXJ8IUxvbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGA4YCBpZiBvbWl0dGVkLlxuICAgICAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVMb25nID0gQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUludDY0O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlYWRzIGEgNjRiaXQgc2lnbmVkIGludGVnZXIuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgOGAgaWYgb21pdHRlZC5cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHshTG9uZ31cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkSW50NjQgPSBmdW5jdGlvbihvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgOCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrOCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMubGl0dGxlRW5kaWFuXG4gICAgICAgICAgICAgICAgICAgID8gbmV3IExvbmcodGhpcy52aWV3LmdldEludDMyKG9mZnNldCAgLCB0cnVlICksIHRoaXMudmlldy5nZXRJbnQzMihvZmZzZXQrNCwgdHJ1ZSApLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgTG9uZyh0aGlzLnZpZXcuZ2V0SW50MzIob2Zmc2V0KzQsIGZhbHNlKSwgdGhpcy52aWV3LmdldEludDMyKG9mZnNldCAgLCBmYWxzZSksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ICs9IDg7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZWFkcyBhIDY0Yml0IHNpZ25lZCBpbnRlZ2VyLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBCeXRlQnVmZmVyI3JlYWRJbnQ2NH0uXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgOGAgaWYgb21pdHRlZC5cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHshTG9uZ31cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkTG9uZyA9IEJ5dGVCdWZmZXJQcm90b3R5cGUucmVhZEludDY0O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdyaXRlcyBhIDY0Yml0IHVuc2lnbmVkIGludGVnZXIuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcnwhTG9uZ30gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDhgIGlmIG9taXR0ZWQuXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZVVpbnQ2NCA9IGZ1bmN0aW9uKHZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoISh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIExvbmcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhbiBpbnRlZ2VyIG9yIExvbmcpXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IExvbmcuZnJvbU51bWJlcih2YWx1ZSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBMb25nLmZyb21TdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgICAgIG9mZnNldCArPSA4O1xuICAgICAgICAgICAgICAgIHZhciBjYXBhY2l0eTcgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTcpXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVzaXplKChjYXBhY2l0eTcgKj0gMikgPiBvZmZzZXQgPyBjYXBhY2l0eTcgOiBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIG9mZnNldCAtPSA4O1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxpdHRsZUVuZGlhbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0SW50MzIob2Zmc2V0ICAsIHZhbHVlLmxvdyAsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0SW50MzIob2Zmc2V0KzQsIHZhbHVlLmhpZ2gsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5zZXRJbnQzMihvZmZzZXQgICwgdmFsdWUuaGlnaCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0SW50MzIob2Zmc2V0KzQsIHZhbHVlLmxvdyAsIGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB0aGlzLm9mZnNldCArPSA4O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBSZWFkcyBhIDY0Yml0IHVuc2lnbmVkIGludGVnZXIuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgOGAgaWYgb21pdHRlZC5cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHshTG9uZ31cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkVWludDY0ID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDggPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzgrXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLmxpdHRsZUVuZGlhblxuICAgICAgICAgICAgICAgICAgICA/IG5ldyBMb25nKHRoaXMudmlldy5nZXRJbnQzMihvZmZzZXQgICwgdHJ1ZSApLCB0aGlzLnZpZXcuZ2V0SW50MzIob2Zmc2V0KzQsIHRydWUgKSwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgTG9uZyh0aGlzLnZpZXcuZ2V0SW50MzIob2Zmc2V0KzQsIGZhbHNlKSwgdGhpcy52aWV3LmdldEludDMyKG9mZnNldCAgLCBmYWxzZSksIHRydWUpO1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgIH0gLy8gTG9uZ1xuXG5cbiAgICAgICAgLy8gdHlwZXMvZmxvYXRzL2Zsb2F0MzJcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGEgMzJiaXQgZmxvYXQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGA0YCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUZsb2F0MzIgPSBmdW5jdGlvbih2YWx1ZSwgb2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhIG51bWJlcilcIik7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIHZhciBjYXBhY2l0eTggPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5OClcbiAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgoY2FwYWNpdHk4ICo9IDIpID4gb2Zmc2V0ID8gY2FwYWNpdHk4IDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSA0O1xuICAgICAgICAgICAgdGhpcy52aWV3LnNldEZsb2F0MzIob2Zmc2V0LCB2YWx1ZSwgdGhpcy5saXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB0aGlzLm9mZnNldCArPSA0O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyaXRlcyBhIDMyYml0IGZsb2F0LiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBCeXRlQnVmZmVyI3dyaXRlRmxvYXQzMn0uXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgNGAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVGbG9hdCA9IEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVGbG9hdDMyO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFkcyBhIDMyYml0IGZsb2F0LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgNGAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkRmxvYXQzMiA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDQgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrNCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdmFsdWUgPSB0aGlzLnZpZXcuZ2V0RmxvYXQzMihvZmZzZXQsIHRoaXMubGl0dGxlRW5kaWFuKTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gNDtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYSAzMmJpdCBmbG9hdC4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgQnl0ZUJ1ZmZlciNyZWFkRmxvYXQzMn0uXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgNGAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkRmxvYXQgPSBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRGbG9hdDMyO1xuXG4gICAgICAgIC8vIHR5cGVzL2Zsb2F0cy9mbG9hdDY0XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyaXRlcyBhIDY0Yml0IGZsb2F0LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVmFsdWUgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSBgOGAgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVGbG9hdDY0ID0gZnVuY3Rpb24odmFsdWUsIG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgdmFsdWU6IFwiK3ZhbHVlK1wiIChub3QgYSBudW1iZXIpXCIpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb2Zmc2V0ICs9IDg7XG4gICAgICAgICAgICB2YXIgY2FwYWNpdHk5ID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTkpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5OSAqPSAyKSA+IG9mZnNldCA/IGNhcGFjaXR5OSA6IG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgLT0gODtcbiAgICAgICAgICAgIHRoaXMudmlldy5zZXRGbG9hdDY0KG9mZnNldCwgdmFsdWUsIHRoaXMubGl0dGxlRW5kaWFuKTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gODtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYSA2NGJpdCBmbG9hdC4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgQnl0ZUJ1ZmZlciN3cml0ZUZsb2F0NjR9LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgYDhgIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlRG91YmxlID0gQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUZsb2F0NjQ7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlYWRzIGEgNjRiaXQgZmxvYXQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGA4YCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRGbG9hdDY0ID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgOCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIis4K1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMudmlldy5nZXRGbG9hdDY0KG9mZnNldCwgdGhpcy5saXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB0aGlzLm9mZnNldCArPSA4O1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFkcyBhIDY0Yml0IGZsb2F0LiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBCeXRlQnVmZmVyI3JlYWRGbG9hdDY0fS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IGA4YCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWREb3VibGUgPSBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRGbG9hdDY0O1xuXG5cbiAgICAgICAgLy8gdHlwZXMvdmFyaW50cy92YXJpbnQzMlxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBNYXhpbXVtIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCB0byBzdG9yZSBhIDMyYml0IGJhc2UgMTI4IHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5NQVhfVkFSSU5UMzJfQllURVMgPSA1O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYWxjdWxhdGVzIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIGEgMzJiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byBlbmNvZGVcbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gTnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkLiBDYXBwZWQgdG8ge0BsaW5rIEJ5dGVCdWZmZXIuTUFYX1ZBUklOVDMyX0JZVEVTfVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLmNhbGN1bGF0ZVZhcmludDMyID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICAgICAgICAgIC8vIHJlZjogc3JjL2dvb2dsZS9wcm90b2J1Zi9pby9jb2RlZF9zdHJlYW0uY2NcbiAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPj4+IDA7XG4gICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA8IDEgPDwgNyApIHJldHVybiAxO1xuICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUgPCAxIDw8IDE0KSByZXR1cm4gMjtcbiAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlIDwgMSA8PCAyMSkgcmV0dXJuIDM7XG4gICAgICAgICAgICBlbHNlIGlmICh2YWx1ZSA8IDEgPDwgMjgpIHJldHVybiA0O1xuICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogWmlnemFnIGVuY29kZXMgYSBzaWduZWQgMzJiaXQgaW50ZWdlciBzbyB0aGF0IGl0IGNhbiBiZSBlZmZlY3RpdmVseSB1c2VkIHdpdGggdmFyaW50IGVuY29kaW5nLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBTaWduZWQgMzJiaXQgaW50ZWdlclxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBVbnNpZ25lZCB6aWd6YWcgZW5jb2RlZCAzMmJpdCBpbnRlZ2VyXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuemlnWmFnRW5jb2RlMzIgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICByZXR1cm4gKCgobiB8PSAwKSA8PCAxKSBeIChuID4+IDMxKSkgPj4+IDA7IC8vIHJlZjogc3JjL2dvb2dsZS9wcm90b2J1Zi93aXJlX2Zvcm1hdF9saXRlLmhcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRGVjb2RlcyBhIHppZ3phZyBlbmNvZGVkIHNpZ25lZCAzMmJpdCBpbnRlZ2VyLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbiBVbnNpZ25lZCB6aWd6YWcgZW5jb2RlZCAzMmJpdCBpbnRlZ2VyXG4gICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCAzMmJpdCBpbnRlZ2VyXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuemlnWmFnRGVjb2RlMzIgPSBmdW5jdGlvbihuKSB7XG4gICAgICAgICAgICByZXR1cm4gKChuID4+PiAxKSBeIC0obiAmIDEpKSB8IDA7IC8vIC8vIHJlZjogc3JjL2dvb2dsZS9wcm90b2J1Zi93aXJlX2Zvcm1hdF9saXRlLmhcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGEgMzJiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHdyaXR0ZW4gaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfG51bWJlcn0gdGhpcyBpZiBgb2Zmc2V0YCBpcyBvbWl0dGVkLCBlbHNlIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZVZhcmludDMyID0gZnVuY3Rpb24odmFsdWUsIG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgdmFsdWUgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHZhbHVlOiBcIit2YWx1ZStcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIHZhbHVlIHw9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IEJ5dGVCdWZmZXIuY2FsY3VsYXRlVmFyaW50MzIodmFsdWUpLFxuICAgICAgICAgICAgICAgIGI7XG4gICAgICAgICAgICBvZmZzZXQgKz0gc2l6ZTtcbiAgICAgICAgICAgIHZhciBjYXBhY2l0eTEwID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTEwKVxuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplKChjYXBhY2l0eTEwICo9IDIpID4gb2Zmc2V0ID8gY2FwYWNpdHkxMCA6IG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgLT0gc2l6ZTtcbiAgICAgICAgICAgIC8vIHJlZjogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9zZWFyY2hmcmFtZSNXVGVpYm9rRjZnRS90cnVuay9zcmMvZ29vZ2xlL3Byb3RvYnVmL2lvL2NvZGVkX3N0cmVhbS5jY1xuICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCwgYiA9IHZhbHVlIHwgMHg4MCk7XG4gICAgICAgICAgICB2YWx1ZSA+Pj49IDA7XG4gICAgICAgICAgICBpZiAodmFsdWUgPj0gMSA8PCA3KSB7XG4gICAgICAgICAgICAgICAgYiA9ICh2YWx1ZSA+PiA3KSB8IDB4ODA7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCsxLCBiKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPj0gMSA8PCAxNCkge1xuICAgICAgICAgICAgICAgICAgICBiID0gKHZhbHVlID4+IDE0KSB8IDB4ODA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrMiwgYik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+PSAxIDw8IDIxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gKHZhbHVlID4+IDIxKSB8IDB4ODA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0VWludDgob2Zmc2V0KzMsIGIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID49IDEgPDwgMjgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0VWludDgob2Zmc2V0KzQsICh2YWx1ZSA+PiAyOCkgJiAweDBGKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gNTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCszLCBiICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSA9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0VWludDgob2Zmc2V0KzIsIGIgJiAweDdGKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemUgPSAzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCsxLCBiICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIHNpemUgPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCwgYiAmIDB4N0YpO1xuICAgICAgICAgICAgICAgIHNpemUgPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gc2l6ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzaXplO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYSB6aWctemFnIGVuY29kZWQgMzJiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHdyaXR0ZW4gaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfG51bWJlcn0gdGhpcyBpZiBgb2Zmc2V0YCBpcyBvbWl0dGVkLCBlbHNlIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZVZhcmludDMyWmlnWmFnID0gZnVuY3Rpb24odmFsdWUsIG9mZnNldCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMud3JpdGVWYXJpbnQzMihCeXRlQnVmZmVyLnppZ1phZ0VuY29kZTMyKHZhbHVlKSwgb2Zmc2V0KTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYSAzMmJpdCBiYXNlIDEyOCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHJlYWQgZnJvbS4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgdGhlIG51bWJlciBvZiBieXRlc1xuICAgICAgICAgKiAgd3JpdHRlbiBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfCF7dmFsdWU6IG51bWJlciwgbGVuZ3RoOiBudW1iZXJ9fSBUaGUgdmFsdWUgcmVhZCBpZiBvZmZzZXQgaXMgb21pdHRlZCwgZWxzZSB0aGUgdmFsdWUgcmVhZFxuICAgICAgICAgKiAgYW5kIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHJlYWQuXG4gICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCdzIG5vdCBhIHZhbGlkIHZhcmludC4gSGFzIGEgcHJvcGVydHkgYHRydW5jYXRlZCA9IHRydWVgIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggZGF0YSBhdmFpbGFibGVcbiAgICAgICAgICogIHRvIGZ1bGx5IGRlY29kZSB0aGUgdmFyaW50LlxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRWYXJpbnQzMiA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDEgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMStcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyByZWY6IHNyYy9nb29nbGUvcHJvdG9idWYvaW8vY29kZWRfc3RyZWFtLmNjXG4gICAgICAgICAgICB2YXIgc2l6ZSA9IDAsXG4gICAgICAgICAgICAgICAgdmFsdWUgPSAwID4+PiAwLFxuICAgICAgICAgICAgICAgIHRlbXAsXG4gICAgICAgICAgICAgICAgaW9mZnNldDtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgICBpb2Zmc2V0ID0gb2Zmc2V0K3NpemU7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0ICYmIGlvZmZzZXQgPiB0aGlzLmxpbWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcihcIlRydW5jYXRlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgZXJyWyd0cnVuY2F0ZWQnXSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGVtcCA9IHRoaXMudmlldy5nZXRVaW50OChpb2Zmc2V0KTtcbiAgICAgICAgICAgICAgICBpZiAoc2l6ZSA8IDUpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlIHw9ICgodGVtcCYweDdGKTw8KDcqc2l6ZSkpID4+PiAwO1xuICAgICAgICAgICAgICAgICsrc2l6ZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKCh0ZW1wICYgMHg4MCkgPT09IDB4ODApO1xuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSB8IDA7IC8vIE1ha2Ugc3VyZSB0byBkaXNjYXJkIHRoZSBoaWdoZXIgb3JkZXIgYml0c1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gc2l6ZTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFwidmFsdWVcIjogdmFsdWUsXG4gICAgICAgICAgICAgICAgXCJsZW5ndGhcIjogc2l6ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYSB6aWctemFnIGVuY29kZWQgMzJiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHdyaXR0ZW4gaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcnwhe3ZhbHVlOiBudW1iZXIsIGxlbmd0aDogbnVtYmVyfX0gVGhlIHZhbHVlIHJlYWQgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIHZhbHVlIHJlYWRcbiAgICAgICAgICogIGFuZCB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkLlxuICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgaXQncyBub3QgYSB2YWxpZCB2YXJpbnRcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkVmFyaW50MzJaaWdaYWcgPSBmdW5jdGlvbihvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnJlYWRWYXJpbnQzMihvZmZzZXQpO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKVxuICAgICAgICAgICAgICAgIHZhbFtcInZhbHVlXCJdID0gQnl0ZUJ1ZmZlci56aWdaYWdEZWNvZGUzMih2YWxbXCJ2YWx1ZVwiXSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdmFsID0gQnl0ZUJ1ZmZlci56aWdaYWdEZWNvZGUzMih2YWwpO1xuICAgICAgICAgICAgcmV0dXJuIHZhbDtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0eXBlcy92YXJpbnRzL3ZhcmludDY0XG5cbiAgICAgICAgaWYgKExvbmcpIHtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBNYXhpbXVtIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCB0byBzdG9yZSBhIDY0Yml0IGJhc2UgMTI4IHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyLlxuICAgICAgICAgICAgICogQHR5cGUge251bWJlcn1cbiAgICAgICAgICAgICAqIEBjb25zdFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCeXRlQnVmZmVyLk1BWF9WQVJJTlQ2NF9CWVRFUyA9IDEwO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhbGN1bGF0ZXMgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVxdWlyZWQgdG8gc3RvcmUgYSA2NGJpdCBiYXNlIDEyOCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlci5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfCFMb25nfSB2YWx1ZSBWYWx1ZSB0byBlbmNvZGVcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IE51bWJlciBvZiBieXRlcyByZXF1aXJlZC4gQ2FwcGVkIHRvIHtAbGluayBCeXRlQnVmZmVyLk1BWF9WQVJJTlQ2NF9CWVRFU31cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlci5jYWxjdWxhdGVWYXJpbnQ2NCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IExvbmcuZnJvbVN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgLy8gcmVmOiBzcmMvZ29vZ2xlL3Byb3RvYnVmL2lvL2NvZGVkX3N0cmVhbS5jY1xuICAgICAgICAgICAgICAgIHZhciBwYXJ0MCA9IHZhbHVlLnRvSW50KCkgPj4+IDAsXG4gICAgICAgICAgICAgICAgICAgIHBhcnQxID0gdmFsdWUuc2hpZnRSaWdodFVuc2lnbmVkKDI4KS50b0ludCgpID4+PiAwLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0MiA9IHZhbHVlLnNoaWZ0UmlnaHRVbnNpZ25lZCg1NikudG9JbnQoKSA+Pj4gMDtcbiAgICAgICAgICAgICAgICBpZiAocGFydDIgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFydDEgPT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnQwIDwgMSA8PCAxNClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDAgPCAxIDw8IDcgPyAxIDogMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDAgPCAxIDw8IDIxID8gMyA6IDQ7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFydDEgPCAxIDw8IDE0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0MSA8IDEgPDwgNyA/IDUgOiA2O1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJ0MSA8IDEgPDwgMjEgPyA3IDogODtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFydDIgPCAxIDw8IDcgPyA5IDogMTA7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFppZ3phZyBlbmNvZGVzIGEgc2lnbmVkIDY0Yml0IGludGVnZXIgc28gdGhhdCBpdCBjYW4gYmUgZWZmZWN0aXZlbHkgdXNlZCB3aXRoIHZhcmludCBlbmNvZGluZy5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfCFMb25nfSB2YWx1ZSBTaWduZWQgbG9uZ1xuICAgICAgICAgICAgICogQHJldHVybnMgeyFMb25nfSBVbnNpZ25lZCB6aWd6YWcgZW5jb2RlZCBsb25nXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEJ5dGVCdWZmZXIuemlnWmFnRW5jb2RlNjQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IExvbmcuZnJvbU51bWJlcih2YWx1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tU3RyaW5nKHZhbHVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUudW5zaWduZWQgIT09IGZhbHNlKSB2YWx1ZSA9IHZhbHVlLnRvU2lnbmVkKCk7XG4gICAgICAgICAgICAgICAgLy8gcmVmOiBzcmMvZ29vZ2xlL3Byb3RvYnVmL3dpcmVfZm9ybWF0X2xpdGUuaFxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zaGlmdExlZnQoMSkueG9yKHZhbHVlLnNoaWZ0UmlnaHQoNjMpKS50b1Vuc2lnbmVkKCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIERlY29kZXMgYSB6aWd6YWcgZW5jb2RlZCBzaWduZWQgNjRiaXQgaW50ZWdlci5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfSB2YWx1ZSBVbnNpZ25lZCB6aWd6YWcgZW5jb2RlZCBsb25nIG9yIEphdmFTY3JpcHQgbnVtYmVyXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7IUxvbmd9IFNpZ25lZCBsb25nXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEJ5dGVCdWZmZXIuemlnWmFnRGVjb2RlNjQgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IExvbmcuZnJvbU51bWJlcih2YWx1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tU3RyaW5nKHZhbHVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUudW5zaWduZWQgIT09IGZhbHNlKSB2YWx1ZSA9IHZhbHVlLnRvU2lnbmVkKCk7XG4gICAgICAgICAgICAgICAgLy8gcmVmOiBzcmMvZ29vZ2xlL3Byb3RvYnVmL3dpcmVfZm9ybWF0X2xpdGUuaFxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS5zaGlmdFJpZ2h0VW5zaWduZWQoMSkueG9yKHZhbHVlLmFuZChMb25nLk9ORSkudG9TaWduZWQoKS5uZWdhdGUoKSkudG9TaWduZWQoKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV3JpdGVzIGEgNjRiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcnxMb25nfSB2YWx1ZSBWYWx1ZSB0byB3cml0ZVxuICAgICAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAgICAgKiAgd3JpdHRlbiBpZiBvbWl0dGVkLlxuICAgICAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfG51bWJlcn0gYHRoaXNgIGlmIG9mZnNldCBpcyBvbWl0dGVkLCBlbHNlIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4gICAgICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVWYXJpbnQ2NCA9IGZ1bmN0aW9uKHZhbHVlLCBvZmZzZXQpIHtcbiAgICAgICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tTnVtYmVyKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoISh2YWx1ZSAmJiB2YWx1ZSBpbnN0YW5jZW9mIExvbmcpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB2YWx1ZTogXCIrdmFsdWUrXCIgKG5vdCBhbiBpbnRlZ2VyIG9yIExvbmcpXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IExvbmcuZnJvbU51bWJlcih2YWx1ZSwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gTG9uZy5mcm9tU3RyaW5nKHZhbHVlLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUudW5zaWduZWQgIT09IGZhbHNlKSB2YWx1ZSA9IHZhbHVlLnRvU2lnbmVkKCk7XG4gICAgICAgICAgICAgICAgdmFyIHNpemUgPSBCeXRlQnVmZmVyLmNhbGN1bGF0ZVZhcmludDY0KHZhbHVlKSxcbiAgICAgICAgICAgICAgICAgICAgcGFydDAgPSB2YWx1ZS50b0ludCgpID4+PiAwLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0MSA9IHZhbHVlLnNoaWZ0UmlnaHRVbnNpZ25lZCgyOCkudG9JbnQoKSA+Pj4gMCxcbiAgICAgICAgICAgICAgICAgICAgcGFydDIgPSB2YWx1ZS5zaGlmdFJpZ2h0VW5zaWduZWQoNTYpLnRvSW50KCkgPj4+IDA7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ICs9IHNpemU7XG4gICAgICAgICAgICAgICAgdmFyIGNhcGFjaXR5MTEgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTExKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2l6ZSgoY2FwYWNpdHkxMSAqPSAyKSA+IG9mZnNldCA/IGNhcGFjaXR5MTEgOiBvZmZzZXQpO1xuICAgICAgICAgICAgICAgIG9mZnNldCAtPSBzaXplO1xuICAgICAgICAgICAgICAgIHN3aXRjaCAoc2l6ZSkge1xuICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOiB0aGlzLnZpZXcuc2V0VWludDgob2Zmc2V0KzksIChwYXJ0MiA+Pj4gIDcpICYgMHgwMSk7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgOSA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrOCwgc2l6ZSAhPT0gOSA/IChwYXJ0MiAgICAgICApIHwgMHg4MCA6IChwYXJ0MiAgICAgICApICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgOCA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrNywgc2l6ZSAhPT0gOCA/IChwYXJ0MSA+Pj4gMjEpIHwgMHg4MCA6IChwYXJ0MSA+Pj4gMjEpICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNyA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrNiwgc2l6ZSAhPT0gNyA/IChwYXJ0MSA+Pj4gMTQpIHwgMHg4MCA6IChwYXJ0MSA+Pj4gMTQpICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNiA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrNSwgc2l6ZSAhPT0gNiA/IChwYXJ0MSA+Pj4gIDcpIHwgMHg4MCA6IChwYXJ0MSA+Pj4gIDcpICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNSA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrNCwgc2l6ZSAhPT0gNSA/IChwYXJ0MSAgICAgICApIHwgMHg4MCA6IChwYXJ0MSAgICAgICApICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgNCA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrMywgc2l6ZSAhPT0gNCA/IChwYXJ0MCA+Pj4gMjEpIHwgMHg4MCA6IChwYXJ0MCA+Pj4gMjEpICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMyA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrMiwgc2l6ZSAhPT0gMyA/IChwYXJ0MCA+Pj4gMTQpIHwgMHg4MCA6IChwYXJ0MCA+Pj4gMTQpICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMiA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQrMSwgc2l6ZSAhPT0gMiA/IChwYXJ0MCA+Pj4gIDcpIHwgMHg4MCA6IChwYXJ0MCA+Pj4gIDcpICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgMSA6IHRoaXMudmlldy5zZXRVaW50OChvZmZzZXQgICwgc2l6ZSAhPT0gMSA/IChwYXJ0MCAgICAgICApIHwgMHg4MCA6IChwYXJ0MCAgICAgICApICYgMHg3Rik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCArPSBzaXplO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2l6ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFdyaXRlcyBhIHppZy16YWcgZW5jb2RlZCA2NGJpdCBiYXNlIDEyOCB2YXJpYWJsZS1sZW5ndGggaW50ZWdlci5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfExvbmd9IHZhbHVlIFZhbHVlIHRvIHdyaXRlXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gd3JpdGUgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICAgICAqICB3cml0dGVuIGlmIG9taXR0ZWQuXG4gICAgICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ8bnVtYmVyfSBgdGhpc2AgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi5cbiAgICAgICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZVZhcmludDY0WmlnWmFnID0gZnVuY3Rpb24odmFsdWUsIG9mZnNldCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLndyaXRlVmFyaW50NjQoQnl0ZUJ1ZmZlci56aWdaYWdFbmNvZGU2NCh2YWx1ZSksIG9mZnNldCk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFJlYWRzIGEgNjRiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuIFJlcXVpcmVzIExvbmcuanMuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAgICAgKiAgcmVhZCBpZiBvbWl0dGVkLlxuICAgICAgICAgICAgICogQHJldHVybnMgeyFMb25nfCF7dmFsdWU6IExvbmcsIGxlbmd0aDogbnVtYmVyfX0gVGhlIHZhbHVlIHJlYWQgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIHZhbHVlIHJlYWQgYW5kXG4gICAgICAgICAgICAgKiAgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC5cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCdzIG5vdCBhIHZhbGlkIHZhcmludFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRWYXJpbnQ2NCA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAxID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIisxK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gcmVmOiBzcmMvZ29vZ2xlL3Byb3RvYnVmL2lvL2NvZGVkX3N0cmVhbS5jY1xuICAgICAgICAgICAgICAgIHZhciBzdGFydCA9IG9mZnNldCxcbiAgICAgICAgICAgICAgICAgICAgcGFydDAgPSAwLFxuICAgICAgICAgICAgICAgICAgICBwYXJ0MSA9IDAsXG4gICAgICAgICAgICAgICAgICAgIHBhcnQyID0gMCxcbiAgICAgICAgICAgICAgICAgICAgYiAgPSAwO1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KyspOyBwYXJ0MCAgPSAoYiAmIDB4N0YpICAgICAgOyBpZiAoYiAmIDB4ODApIHtcbiAgICAgICAgICAgICAgICBiID0gdGhpcy52aWV3LmdldFVpbnQ4KG9mZnNldCsrKTsgcGFydDAgfD0gKGIgJiAweDdGKSA8PCAgNzsgaWYgKGIgJiAweDgwKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMudmlldy5nZXRVaW50OChvZmZzZXQrKyk7IHBhcnQwIHw9IChiICYgMHg3RikgPDwgMTQ7IGlmIChiICYgMHg4MCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KyspOyBwYXJ0MCB8PSAoYiAmIDB4N0YpIDw8IDIxOyBpZiAoYiAmIDB4ODApIHtcbiAgICAgICAgICAgICAgICBiID0gdGhpcy52aWV3LmdldFVpbnQ4KG9mZnNldCsrKTsgcGFydDEgID0gKGIgJiAweDdGKSAgICAgIDsgaWYgKGIgJiAweDgwKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMudmlldy5nZXRVaW50OChvZmZzZXQrKyk7IHBhcnQxIHw9IChiICYgMHg3RikgPDwgIDc7IGlmIChiICYgMHg4MCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KyspOyBwYXJ0MSB8PSAoYiAmIDB4N0YpIDw8IDE0OyBpZiAoYiAmIDB4ODApIHtcbiAgICAgICAgICAgICAgICBiID0gdGhpcy52aWV3LmdldFVpbnQ4KG9mZnNldCsrKTsgcGFydDEgfD0gKGIgJiAweDdGKSA8PCAyMTsgaWYgKGIgJiAweDgwKSB7XG4gICAgICAgICAgICAgICAgYiA9IHRoaXMudmlldy5nZXRVaW50OChvZmZzZXQrKyk7IHBhcnQyICA9IChiICYgMHg3RikgICAgICA7IGlmIChiICYgMHg4MCkge1xuICAgICAgICAgICAgICAgIGIgPSB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KyspOyBwYXJ0MiB8PSAoYiAmIDB4N0YpIDw8ICA3OyBpZiAoYiAmIDB4ODApIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIkJ1ZmZlciBvdmVycnVuXCIpOyB9fX19fX19fX19XG4gICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gTG9uZy5mcm9tQml0cyhwYXJ0MCB8IChwYXJ0MSA8PCAyOCksIChwYXJ0MSA+Pj4gNCkgfCAocGFydDIpIDw8IDI0LCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSc6IHZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCc6IG9mZnNldC1zdGFydFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogUmVhZHMgYSB6aWctemFnIGVuY29kZWQgNjRiaXQgYmFzZSAxMjggdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuIFJlcXVpcmVzIExvbmcuanMuXG4gICAgICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAgICAgKiAgcmVhZCBpZiBvbWl0dGVkLlxuICAgICAgICAgICAgICogQHJldHVybnMgeyFMb25nfCF7dmFsdWU6IExvbmcsIGxlbmd0aDogbnVtYmVyfX0gVGhlIHZhbHVlIHJlYWQgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIHZhbHVlIHJlYWQgYW5kXG4gICAgICAgICAgICAgKiAgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC5cbiAgICAgICAgICAgICAqIEB0aHJvd3Mge0Vycm9yfSBJZiBpdCdzIG5vdCBhIHZhbGlkIHZhcmludFxuICAgICAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRWYXJpbnQ2NFppZ1phZyA9IGZ1bmN0aW9uKG9mZnNldCkge1xuICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnJlYWRWYXJpbnQ2NChvZmZzZXQpO1xuICAgICAgICAgICAgICAgIGlmICh2YWwgJiYgdmFsWyd2YWx1ZSddIGluc3RhbmNlb2YgTG9uZylcbiAgICAgICAgICAgICAgICAgICAgdmFsW1widmFsdWVcIl0gPSBCeXRlQnVmZmVyLnppZ1phZ0RlY29kZTY0KHZhbFtcInZhbHVlXCJdKTtcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IEJ5dGVCdWZmZXIuemlnWmFnRGVjb2RlNjQodmFsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICB9IC8vIExvbmdcblxuXG4gICAgICAgIC8vIHR5cGVzL3N0cmluZ3MvY3N0cmluZ1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYSBOVUxMLXRlcm1pbmF0ZWQgVVRGOCBlbmNvZGVkIHN0cmluZy4gRm9yIHRoaXMgdG8gd29yayB0aGUgc3BlY2lmaWVkIHN0cmluZyBtdXN0IG5vdCBjb250YWluIGFueSBOVUxMXG4gICAgICAgICAqICBjaGFyYWN0ZXJzIGl0c2VsZi5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBTdHJpbmcgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICBjb250YWluZWQgaW4gYHN0cmAgKyAxIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcnxudW1iZXJ9IHRoaXMgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlblxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlQ1N0cmluZyA9IGZ1bmN0aW9uKHN0ciwgb2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB2YXIgaSxcbiAgICAgICAgICAgICAgICBrID0gc3RyLmxlbmd0aDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IE5vdCBhIHN0cmluZ1wiKTtcbiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxrOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN0ci5jaGFyQ29kZUF0KGkpID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgc3RyOiBDb250YWlucyBOVUxMLWNoYXJhY3RlcnNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gVVRGOCBzdHJpbmdzIGRvIG5vdCBjb250YWluIHplcm8gYnl0ZXMgaW4gYmV0d2VlbiBleGNlcHQgZm9yIHRoZSB6ZXJvIGNoYXJhY3Rlciwgc286XG4gICAgICAgICAgICBrID0gdXRmeC5jYWxjdWxhdGVVVEYxNmFzVVRGOChzdHJpbmdTb3VyY2Uoc3RyKSlbMV07XG4gICAgICAgICAgICBvZmZzZXQgKz0gaysxO1xuICAgICAgICAgICAgdmFyIGNhcGFjaXR5MTIgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MTIpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5MTIgKj0gMikgPiBvZmZzZXQgPyBjYXBhY2l0eTEyIDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSBrKzE7XG4gICAgICAgICAgICB1dGZ4LmVuY29kZVVURjE2dG9VVEY4KHN0cmluZ1NvdXJjZShzdHIpLCBmdW5jdGlvbihiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCsrLCBiKTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0VWludDgob2Zmc2V0KyssIDApO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaztcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYSBOVUxMLXRlcm1pbmF0ZWQgVVRGOCBlbmNvZGVkIHN0cmluZy4gRm9yIHRoaXMgdG8gd29yayB0aGUgc3RyaW5nIHJlYWQgbXVzdCBub3QgY29udGFpbiBhbnkgTlVMTCBjaGFyYWN0ZXJzXG4gICAgICAgICAqICBpdHNlbGYuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHJlYWQgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ3whe3N0cmluZzogc3RyaW5nLCBsZW5ndGg6IG51bWJlcn19IFRoZSBzdHJpbmcgcmVhZCBpZiBvZmZzZXQgaXMgb21pdHRlZCwgZWxzZSB0aGUgc3RyaW5nXG4gICAgICAgICAqICByZWFkIGFuZCB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkLlxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRDU3RyaW5nID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMSA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIisxK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdGFydCA9IG9mZnNldCxcbiAgICAgICAgICAgICAgICB0ZW1wO1xuICAgICAgICAgICAgLy8gVVRGOCBzdHJpbmdzIGRvIG5vdCBjb250YWluIHplcm8gYnl0ZXMgaW4gYmV0d2VlbiBleGNlcHQgZm9yIHRoZSB6ZXJvIGNoYXJhY3RlciBpdHNlbGYsIHNvOlxuICAgICAgICAgICAgdmFyIHNkLCBiID0gLTE7XG4gICAgICAgICAgICB1dGZ4LmRlY29kZVVURjh0b1VURjE2KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIGlmIChiID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0ID49IHRoaXMubGltaXQpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiBUcnVuY2F0ZWQgZGF0YSwgXCIrb2Zmc2V0K1wiIDwgXCIrdGhpcy5saW1pdCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChiID0gdGhpcy52aWV3LmdldFVpbnQ4KG9mZnNldCsrKSkgPT09IDAgPyBudWxsIDogYjtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgc2QgPSBzdHJpbmdEZXN0aW5hdGlvbigpLCB0cnVlKTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiBzZCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBcInN0cmluZ1wiOiBzZCgpLFxuICAgICAgICAgICAgICAgICAgICBcImxlbmd0aFwiOiBvZmZzZXQgLSBzdGFydFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdHlwZXMvc3RyaW5ncy9pc3RyaW5nXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFdyaXRlcyBhIGxlbmd0aCBhcyB1aW50MzIgcHJlZml4ZWQgVVRGOCBlbmNvZGVkIHN0cmluZy5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBTdHJpbmcgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICB3cml0dGVuIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcnxudW1iZXJ9IGB0aGlzYCBpZiBgb2Zmc2V0YCBpcyBvbWl0dGVkLCBlbHNlIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKiBAc2VlIEJ5dGVCdWZmZXIjd3JpdGVWYXJpbnQzMlxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS53cml0ZUlTdHJpbmcgPSBmdW5jdGlvbihzdHIsIG9mZnNldCkge1xuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHN0cjogTm90IGEgc3RyaW5nXCIpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHN0YXJ0ID0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIGs7XG4gICAgICAgICAgICBrID0gdXRmeC5jYWxjdWxhdGVVVEYxNmFzVVRGOChzdHJpbmdTb3VyY2Uoc3RyKSwgdGhpcy5ub0Fzc2VydClbMV07XG4gICAgICAgICAgICBvZmZzZXQgKz0gNCtrO1xuICAgICAgICAgICAgdmFyIGNhcGFjaXR5MTMgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MTMpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5MTMgKj0gMikgPiBvZmZzZXQgPyBjYXBhY2l0eTEzIDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSA0K2s7XG4gICAgICAgICAgICB0aGlzLnZpZXcuc2V0VWludDMyKG9mZnNldCwgaywgdGhpcy5saXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICB1dGZ4LmVuY29kZVVURjE2dG9VVEY4KHN0cmluZ1NvdXJjZShzdHIpLCBmdW5jdGlvbihiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCsrLCBiKTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBzdGFydCArIDQgKyBrKVxuICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiBUcnVuY2F0ZWQgZGF0YSwgXCIrb2Zmc2V0K1wiID09IFwiKyhvZmZzZXQrNCtrKSk7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZmZzZXQgLSBzdGFydDtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYSBsZW5ndGggYXMgdWludDMyIHByZWZpeGVkIFVURjggZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byByZWFkIGZyb20uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHJlYWQgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ3whe3N0cmluZzogc3RyaW5nLCBsZW5ndGg6IG51bWJlcn19IFRoZSBzdHJpbmcgcmVhZCBpZiBvZmZzZXQgaXMgb21pdHRlZCwgZWxzZSB0aGUgc3RyaW5nXG4gICAgICAgICAqICByZWFkIGFuZCB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyByZWFkLlxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqIEBzZWUgQnl0ZUJ1ZmZlciNyZWFkVmFyaW50MzJcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUucmVhZElTdHJpbmcgPSBmdW5jdGlvbihvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyA0ID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzQrXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHRlbXAgPSAwLFxuICAgICAgICAgICAgICAgIHN0YXJ0ID0gb2Zmc2V0LFxuICAgICAgICAgICAgICAgIHN0cjtcbiAgICAgICAgICAgIHRlbXAgPSB0aGlzLnZpZXcuZ2V0VWludDMyKG9mZnNldCwgdGhpcy5saXR0bGVFbmRpYW4pO1xuICAgICAgICAgICAgb2Zmc2V0ICs9IDQ7XG4gICAgICAgICAgICB2YXIgayA9IG9mZnNldCArIHRlbXAsXG4gICAgICAgICAgICAgICAgc2Q7XG4gICAgICAgICAgICB1dGZ4LmRlY29kZVVURjh0b1VURjE2KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgPCBrID8gdGhpcy52aWV3LmdldFVpbnQ4KG9mZnNldCsrKSA6IG51bGw7XG4gICAgICAgICAgICB9LmJpbmQodGhpcyksIHNkID0gc3RyaW5nRGVzdGluYXRpb24oKSwgdGhpcy5ub0Fzc2VydCk7XG4gICAgICAgICAgICBzdHIgPSBzZCgpO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0cjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyc6IHN0cixcbiAgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCc6IG9mZnNldCAtIHN0YXJ0XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyB0eXBlcy9zdHJpbmdzL3V0ZjhzdHJpbmdcblxuICAgICAgICAvKipcbiAgICAgICAgICogTWV0cmljcyByZXByZXNlbnRpbmcgbnVtYmVyIG9mIFVURjggY2hhcmFjdGVycy4gRXZhbHVhdGVzIHRvIGBjYC5cbiAgICAgICAgICogQHR5cGUge3N0cmluZ31cbiAgICAgICAgICogQGNvbnN0XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuTUVUUklDU19DSEFSUyA9ICdjJztcblxuICAgICAgICAvKipcbiAgICAgICAgICogTWV0cmljcyByZXByZXNlbnRpbmcgbnVtYmVyIG9mIGJ5dGVzLiBFdmFsdWF0ZXMgdG8gYGJgLlxuICAgICAgICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5NRVRSSUNTX0JZVEVTID0gJ2InO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYW4gVVRGOCBlbmNvZGVkIHN0cmluZy5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBTdHJpbmcgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ8bnVtYmVyfSB0aGlzIGlmIG9mZnNldCBpcyBvbWl0dGVkLCBlbHNlIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVVVEY4U3RyaW5nID0gZnVuY3Rpb24oc3RyLCBvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2Zmc2V0ICE9PSAnbnVtYmVyJyB8fCBvZmZzZXQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgKyAwID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiAwIDw9IFwiK29mZnNldCtcIiAoK1wiKzArXCIpIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGs7XG4gICAgICAgICAgICB2YXIgc3RhcnQgPSBvZmZzZXQ7XG4gICAgICAgICAgICBrID0gdXRmeC5jYWxjdWxhdGVVVEYxNmFzVVRGOChzdHJpbmdTb3VyY2Uoc3RyKSlbMV07XG4gICAgICAgICAgICBvZmZzZXQgKz0gaztcbiAgICAgICAgICAgIHZhciBjYXBhY2l0eTE0ID0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aDtcbiAgICAgICAgICAgIGlmIChvZmZzZXQgPiBjYXBhY2l0eTE0KVxuICAgICAgICAgICAgICAgIHRoaXMucmVzaXplKChjYXBhY2l0eTE0ICo9IDIpID4gb2Zmc2V0ID8gY2FwYWNpdHkxNCA6IG9mZnNldCk7XG4gICAgICAgICAgICBvZmZzZXQgLT0gaztcbiAgICAgICAgICAgIHV0ZnguZW5jb2RlVVRGMTZ0b1VURjgoc3RyaW5nU291cmNlKHN0ciksIGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXcuc2V0VWludDgob2Zmc2V0KyssIGIpO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpKTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAtIHN0YXJ0O1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBXcml0ZXMgYW4gVVRGOCBlbmNvZGVkIHN0cmluZy4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgQnl0ZUJ1ZmZlciN3cml0ZVVURjhTdHJpbmd9LlxuICAgICAgICAgKiBAZnVuY3Rpb25cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBTdHJpbmcgdG8gd3JpdGVcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHdyaXRlIHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ8bnVtYmVyfSB0aGlzIGlmIG9mZnNldCBpcyBvbWl0dGVkLCBlbHNlIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVTdHJpbmcgPSBCeXRlQnVmZmVyUHJvdG90eXBlLndyaXRlVVRGOFN0cmluZztcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIFVURjggY2hhcmFjdGVycyBvZiBhIHN0cmluZy4gSmF2YVNjcmlwdCBpdHNlbGYgdXNlcyBVVEYtMTYsIHNvIHRoYXQgYSBzdHJpbmcnc1xuICAgICAgICAgKiAgYGxlbmd0aGAgcHJvcGVydHkgZG9lcyBub3QgcmVmbGVjdCBpdHMgYWN0dWFsIFVURjggc2l6ZSBpZiBpdCBjb250YWlucyBjb2RlIHBvaW50cyBsYXJnZXIgdGhhbiAweEZGRkYuXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFN0cmluZyB0byBjYWxjdWxhdGVcbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gTnVtYmVyIG9mIFVURjggY2hhcmFjdGVyc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLmNhbGN1bGF0ZVVURjhDaGFycyA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgcmV0dXJuIHV0ZnguY2FsY3VsYXRlVVRGMTZhc1VURjgoc3RyaW5nU291cmNlKHN0cikpWzBdO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDYWxjdWxhdGVzIHRoZSBudW1iZXIgb2YgVVRGOCBieXRlcyBvZiBhIHN0cmluZy5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nIHRvIGNhbGN1bGF0ZVxuICAgICAgICAgKiBAcmV0dXJucyB7bnVtYmVyfSBOdW1iZXIgb2YgVVRGOCBieXRlc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLmNhbGN1bGF0ZVVURjhCeXRlcyA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgcmV0dXJuIHV0ZnguY2FsY3VsYXRlVVRGMTZhc1VURjgoc3RyaW5nU291cmNlKHN0cikpWzFdO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFkcyBhbiBVVEY4IGVuY29kZWQgc3RyaW5nLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIE51bWJlciBvZiBjaGFyYWN0ZXJzIG9yIGJ5dGVzIHRvIHJlYWQuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nPX0gbWV0cmljcyBNZXRyaWNzIHNwZWNpZnlpbmcgd2hhdCBgbGVuZ3RoYCBpcyBtZWFudCB0byBjb3VudC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLk1FVFJJQ1NfQ0hBUlN9LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICByZWFkIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd8IXtzdHJpbmc6IHN0cmluZywgbGVuZ3RoOiBudW1iZXJ9fSBUaGUgc3RyaW5nIHJlYWQgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIHN0cmluZ1xuICAgICAgICAgKiAgcmVhZCBhbmQgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkVVRGOFN0cmluZyA9IGZ1bmN0aW9uKGxlbmd0aCwgbWV0cmljcywgb2Zmc2V0KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIG1ldHJpY3MgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbWV0cmljcztcbiAgICAgICAgICAgICAgICBtZXRyaWNzID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBtZXRyaWNzID09PSAndW5kZWZpbmVkJykgbWV0cmljcyA9IEJ5dGVCdWZmZXIuTUVUUklDU19DSEFSUztcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBsZW5ndGggJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGxlbmd0aDogXCIrbGVuZ3RoK1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgbGVuZ3RoIHw9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaSA9IDAsXG4gICAgICAgICAgICAgICAgc3RhcnQgPSBvZmZzZXQsXG4gICAgICAgICAgICAgICAgc2Q7XG4gICAgICAgICAgICBpZiAobWV0cmljcyA9PT0gQnl0ZUJ1ZmZlci5NRVRSSUNTX0NIQVJTKSB7IC8vIFRoZSBzYW1lIGZvciBub2RlIGFuZCB0aGUgYnJvd3NlclxuICAgICAgICAgICAgICAgIHNkID0gc3RyaW5nRGVzdGluYXRpb24oKTtcbiAgICAgICAgICAgICAgICB1dGZ4LmRlY29kZVVURjgoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBpIDwgbGVuZ3RoICYmIG9mZnNldCA8IHRoaXMubGltaXQgPyB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KyspIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksIGZ1bmN0aW9uKGNwKSB7XG4gICAgICAgICAgICAgICAgICAgICsraTsgdXRmeC5VVEY4dG9VVEYxNihjcCwgc2QpO1xuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICAgICAgaWYgKGkgIT09IGxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IFRydW5jYXRlZCBkYXRhLCBcIitpK1wiID09IFwiK2xlbmd0aCk7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2QoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIjogc2QoKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibGVuZ3RoXCI6IG9mZnNldCAtIHN0YXJ0XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChtZXRyaWNzID09PSBCeXRlQnVmZmVyLk1FVFJJQ1NfQllURVMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogXCIrb2Zmc2V0K1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIGxlbmd0aCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrbGVuZ3RoK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIGsgPSBvZmZzZXQgKyBsZW5ndGg7XG4gICAgICAgICAgICAgICAgdXRmeC5kZWNvZGVVVEY4dG9VVEYxNihmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mZnNldCA8IGsgPyB0aGlzLnZpZXcuZ2V0VWludDgob2Zmc2V0KyspIDogbnVsbDtcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcyksIHNkID0gc3RyaW5nRGVzdGluYXRpb24oKSwgdGhpcy5ub0Fzc2VydCk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCAhPT0gaylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IFRydW5jYXRlZCBkYXRhLCBcIitvZmZzZXQrXCIgPT0gXCIrayk7XG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2QoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyc6IHNkKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAnbGVuZ3RoJzogb2Zmc2V0IC0gc3RhcnRcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJVbnN1cHBvcnRlZCBtZXRyaWNzOiBcIittZXRyaWNzKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUmVhZHMgYW4gVVRGOCBlbmNvZGVkIHN0cmluZy4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgQnl0ZUJ1ZmZlciNyZWFkVVRGOFN0cmluZ30uXG4gICAgICAgICAqIEBmdW5jdGlvblxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcn0gbGVuZ3RoIE51bWJlciBvZiBjaGFyYWN0ZXJzIG9yIGJ5dGVzIHRvIHJlYWRcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBtZXRyaWNzIE1ldHJpY3Mgc3BlY2lmeWluZyB3aGF0IGBuYCBpcyBtZWFudCB0byBjb3VudC4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLk1FVFJJQ1NfQ0hBUlN9LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICByZWFkIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd8IXtzdHJpbmc6IHN0cmluZywgbGVuZ3RoOiBudW1iZXJ9fSBUaGUgc3RyaW5nIHJlYWQgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIHN0cmluZ1xuICAgICAgICAgKiAgcmVhZCBhbmQgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkU3RyaW5nID0gQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZWFkVVRGOFN0cmluZztcblxuICAgICAgICAvLyB0eXBlcy9zdHJpbmdzL3ZzdHJpbmdcblxuICAgICAgICAvKipcbiAgICAgICAgICogV3JpdGVzIGEgbGVuZ3RoIGFzIHZhcmludDMyIHByZWZpeGVkIFVURjggZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nIHRvIHdyaXRlXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byB3cml0ZSB0by4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgdGhlIG51bWJlciBvZiBieXRlc1xuICAgICAgICAgKiAgd3JpdHRlbiBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ8bnVtYmVyfSBgdGhpc2AgaWYgYG9mZnNldGAgaXMgb21pdHRlZCwgZWxzZSB0aGUgYWN0dWFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICogQHNlZSBCeXRlQnVmZmVyI3dyaXRlVmFyaW50MzJcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUud3JpdGVWU3RyaW5nID0gZnVuY3Rpb24oc3RyLCBvZmZzZXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnO1xuICAgICAgICAgICAgaWYgKHJlbGF0aXZlKSBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IE5vdCBhIHN0cmluZ1wiKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIiswK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzdGFydCA9IG9mZnNldCxcbiAgICAgICAgICAgICAgICBrLCBsO1xuICAgICAgICAgICAgayA9IHV0ZnguY2FsY3VsYXRlVVRGMTZhc1VURjgoc3RyaW5nU291cmNlKHN0ciksIHRoaXMubm9Bc3NlcnQpWzFdO1xuICAgICAgICAgICAgbCA9IEJ5dGVCdWZmZXIuY2FsY3VsYXRlVmFyaW50MzIoayk7XG4gICAgICAgICAgICBvZmZzZXQgKz0gbCtrO1xuICAgICAgICAgICAgdmFyIGNhcGFjaXR5MTUgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MTUpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5MTUgKj0gMikgPiBvZmZzZXQgPyBjYXBhY2l0eTE1IDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSBsK2s7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdGhpcy53cml0ZVZhcmludDMyKGssIG9mZnNldCk7XG4gICAgICAgICAgICB1dGZ4LmVuY29kZVVURjE2dG9VVEY4KHN0cmluZ1NvdXJjZShzdHIpLCBmdW5jdGlvbihiKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52aWV3LnNldFVpbnQ4KG9mZnNldCsrLCBiKTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgICAgICBpZiAob2Zmc2V0ICE9PSBzdGFydCtrK2wpXG4gICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IFRydW5jYXRlZCBkYXRhLCBcIitvZmZzZXQrXCIgPT0gXCIrKG9mZnNldCtrK2wpKTtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mZnNldCAtIHN0YXJ0O1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZWFkcyBhIGxlbmd0aCBhcyB2YXJpbnQzMiBwcmVmaXhlZCBVVEY4IGVuY29kZWQgc3RyaW5nLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IG9mZnNldCBPZmZzZXQgdG8gcmVhZCBmcm9tLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICByZWFkIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd8IXtzdHJpbmc6IHN0cmluZywgbGVuZ3RoOiBudW1iZXJ9fSBUaGUgc3RyaW5nIHJlYWQgaWYgb2Zmc2V0IGlzIG9taXR0ZWQsIGVsc2UgdGhlIHN0cmluZ1xuICAgICAgICAgKiAgcmVhZCBhbmQgdGhlIGFjdHVhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKiBAc2VlIEJ5dGVCdWZmZXIjcmVhZFZhcmludDMyXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJlYWRWU3RyaW5nID0gZnVuY3Rpb24ob2Zmc2V0KSB7XG4gICAgICAgICAgICB2YXIgcmVsYXRpdmUgPSB0eXBlb2Ygb2Zmc2V0ID09PSAndW5kZWZpbmVkJztcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMSA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIisxK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB0ZW1wID0gdGhpcy5yZWFkVmFyaW50MzIob2Zmc2V0KSxcbiAgICAgICAgICAgICAgICBzdGFydCA9IG9mZnNldCxcbiAgICAgICAgICAgICAgICBzdHI7XG4gICAgICAgICAgICBvZmZzZXQgKz0gdGVtcFsnbGVuZ3RoJ107XG4gICAgICAgICAgICB0ZW1wID0gdGVtcFsndmFsdWUnXTtcbiAgICAgICAgICAgIHZhciBrID0gb2Zmc2V0ICsgdGVtcCxcbiAgICAgICAgICAgICAgICBzZCA9IHN0cmluZ0Rlc3RpbmF0aW9uKCk7XG4gICAgICAgICAgICB1dGZ4LmRlY29kZVVURjh0b1VURjE2KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgPCBrID8gdGhpcy52aWV3LmdldFVpbnQ4KG9mZnNldCsrKSA6IG51bGw7XG4gICAgICAgICAgICB9LmJpbmQodGhpcyksIHNkLCB0aGlzLm5vQXNzZXJ0KTtcbiAgICAgICAgICAgIHN0ciA9IHNkKCk7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RyO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAnc3RyaW5nJzogc3RyLFxuICAgICAgICAgICAgICAgICAgICAnbGVuZ3RoJzogb2Zmc2V0IC0gc3RhcnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFwcGVuZHMgc29tZSBkYXRhIHRvIHRoaXMgQnl0ZUJ1ZmZlci4gVGhpcyB3aWxsIG92ZXJ3cml0ZSBhbnkgY29udGVudHMgYmVoaW5kIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IHVwIHRvIHRoZSBhcHBlbmRlZFxuICAgICAgICAgKiAgZGF0YSdzIGxlbmd0aC5cbiAgICAgICAgICogQHBhcmFtIHshQnl0ZUJ1ZmZlcnwhQXJyYXlCdWZmZXJ8IVVpbnQ4QXJyYXl8c3RyaW5nfSBzb3VyY2UgRGF0YSB0byBhcHBlbmQuIElmIGBzb3VyY2VgIGlzIGEgQnl0ZUJ1ZmZlciwgaXRzIG9mZnNldHNcbiAgICAgICAgICogIHdpbGwgYmUgbW9kaWZpZWQgYWNjb3JkaW5nIHRvIHRoZSBwZXJmb3JtZWQgcmVhZCBvcGVyYXRpb24uXG4gICAgICAgICAqIEBwYXJhbSB7KHN0cmluZ3xudW1iZXIpPX0gZW5jb2RpbmcgRW5jb2RpbmcgaWYgYGRhdGFgIGlzIGEgc3RyaW5nIChcImJhc2U2NFwiLCBcImhleFwiLCBcImJpbmFyeVwiLCBkZWZhdWx0cyB0byBcInV0ZjhcIilcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIGFwcGVuZCBhdC4gV2lsbCB1c2UgYW5kIGluY3JlYXNlIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYnkgdGhlIG51bWJlciBvZiBieXRlc1xuICAgICAgICAgKiAgcmVhZCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKiBAZXhhbXBsZSBBIHJlbGF0aXZlIGA8MDEgMDI+MDMuYXBwZW5kKDwwNCAwNT4pYCB3aWxsIHJlc3VsdCBpbiBgPDAxIDAyIDA0IDA1PiwgMDQgMDV8YFxuICAgICAgICAgKiBAZXhhbXBsZSBBbiBhYnNvbHV0ZSBgPDAxIDAyPjAzLmFwcGVuZCgwNCAwNT4sIDEpYCB3aWxsIHJlc3VsdCBpbiBgPDAxIDA0PjA1LCAwNCAwNXxgXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZW5jb2RpbmcsIG9mZnNldCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGVuY29kaW5nO1xuICAgICAgICAgICAgICAgIGVuY29kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShzb3VyY2UgaW5zdGFuY2VvZiBCeXRlQnVmZmVyKSlcbiAgICAgICAgICAgICAgICBzb3VyY2UgPSBCeXRlQnVmZmVyLndyYXAoc291cmNlLCBlbmNvZGluZyk7XG4gICAgICAgICAgICB2YXIgbGVuZ3RoID0gc291cmNlLmxpbWl0IC0gc291cmNlLm9mZnNldDtcbiAgICAgICAgICAgIGlmIChsZW5ndGggPD0gMCkgcmV0dXJuIHRoaXM7IC8vIE5vdGhpbmcgdG8gYXBwZW5kXG4gICAgICAgICAgICBvZmZzZXQgKz0gbGVuZ3RoO1xuICAgICAgICAgICAgdmFyIGNhcGFjaXR5MTYgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGNhcGFjaXR5MTYpXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNpemUoKGNhcGFjaXR5MTYgKj0gMikgPiBvZmZzZXQgPyBjYXBhY2l0eTE2IDogb2Zmc2V0KTtcbiAgICAgICAgICAgIG9mZnNldCAtPSBsZW5ndGg7XG4gICAgICAgICAgICBuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlciwgb2Zmc2V0KS5zZXQobmV3IFVpbnQ4QXJyYXkoc291cmNlLmJ1ZmZlcikuc3ViYXJyYXkoc291cmNlLm9mZnNldCwgc291cmNlLmxpbWl0KSk7XG4gICAgICAgICAgICBzb3VyY2Uub2Zmc2V0ICs9IGxlbmd0aDtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gbGVuZ3RoO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEFwcGVuZHMgdGhpcyBCeXRlQnVmZmVyJ3MgY29udGVudHMgdG8gYW5vdGhlciBCeXRlQnVmZmVyLiBUaGlzIHdpbGwgb3ZlcndyaXRlIGFueSBjb250ZW50cyBhdCBhbmQgYWZ0ZXIgdGhlXG4gICAgICAgICAgICBzcGVjaWZpZWQgb2Zmc2V0IHVwIHRvIHRoZSBsZW5ndGggb2YgdGhpcyBCeXRlQnVmZmVyJ3MgZGF0YS5cbiAgICAgICAgICogQHBhcmFtIHshQnl0ZUJ1ZmZlcn0gdGFyZ2V0IFRhcmdldCBCeXRlQnVmZmVyXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byBhcHBlbmQgdG8uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHJlYWQgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICogQHNlZSBCeXRlQnVmZmVyI2FwcGVuZFxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5hcHBlbmRUbyA9IGZ1bmN0aW9uKHRhcmdldCwgb2Zmc2V0KSB7XG4gICAgICAgICAgICB0YXJnZXQuYXBwZW5kKHRoaXMsIG9mZnNldCk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRW5hYmxlcyBvciBkaXNhYmxlcyBhc3NlcnRpb25zIG9mIGFyZ3VtZW50IHR5cGVzIGFuZCBvZmZzZXRzLiBBc3NlcnRpb25zIGFyZSBlbmFibGVkIGJ5IGRlZmF1bHQgYnV0IHlvdSBjYW4gb3B0IHRvXG4gICAgICAgICAqICBkaXNhYmxlIHRoZW0gaWYgeW91ciBjb2RlIGFscmVhZHkgbWFrZXMgc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgdmFsaWQuXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYXNzZXJ0IGB0cnVlYCB0byBlbmFibGUgYXNzZXJ0aW9ucywgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUuYXNzZXJ0ID0gZnVuY3Rpb24oYXNzZXJ0KSB7XG4gICAgICAgICAgICB0aGlzLm5vQXNzZXJ0ID0gIWFzc2VydDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBHZXRzIHRoZSBjYXBhY2l0eSBvZiB0aGlzIEJ5dGVCdWZmZXIncyBiYWNraW5nIGJ1ZmZlci5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gQ2FwYWNpdHkgb2YgdGhlIGJhY2tpbmcgYnVmZmVyXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUuY2FwYWNpdHkgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDbGVhcnMgdGhpcyBCeXRlQnVmZmVyJ3Mgb2Zmc2V0cyBieSBzZXR0aW5nIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gdG8gYDBgIGFuZCB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0gdG8gdGhlXG4gICAgICAgICAqICBiYWNraW5nIGJ1ZmZlcidzIGNhcGFjaXR5LiBEaXNjYXJkcyB7QGxpbmsgQnl0ZUJ1ZmZlciNtYXJrZWRPZmZzZXR9LlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgdGhpcy5saW1pdCA9IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgICB0aGlzLm1hcmtlZE9mZnNldCA9IC0xO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIENyZWF0ZXMgYSBjbG9uZWQgaW5zdGFuY2Ugb2YgdGhpcyBCeXRlQnVmZmVyLCBwcmVzZXQgd2l0aCB0aGlzIEJ5dGVCdWZmZXIncyB2YWx1ZXMgZm9yIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0sXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlciNtYXJrZWRPZmZzZXR9IGFuZCB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGNvcHkgV2hldGhlciB0byBjb3B5IHRoZSBiYWNraW5nIGJ1ZmZlciBvciB0byByZXR1cm4gYW5vdGhlciB2aWV3IG9uIHRoZSBzYW1lLCBkZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gQ2xvbmVkIGluc3RhbmNlXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbihjb3B5KSB7XG4gICAgICAgICAgICB2YXIgYmIgPSBuZXcgQnl0ZUJ1ZmZlcigwLCB0aGlzLmxpdHRsZUVuZGlhbiwgdGhpcy5ub0Fzc2VydCk7XG4gICAgICAgICAgICBpZiAoY29weSkge1xuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKS5zZXQodGhpcy5idWZmZXIpO1xuICAgICAgICAgICAgICAgIGJiLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICBiYi52aWV3ID0gbmV3IERhdGFWaWV3KGJ1ZmZlcik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJiLmJ1ZmZlciA9IHRoaXMuYnVmZmVyO1xuICAgICAgICAgICAgICAgIGJiLnZpZXcgPSB0aGlzLnZpZXc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYi5vZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGJiLm1hcmtlZE9mZnNldCA9IHRoaXMubWFya2VkT2Zmc2V0O1xuICAgICAgICAgICAgYmIubGltaXQgPSB0aGlzLmxpbWl0O1xuICAgICAgICAgICAgcmV0dXJuIGJiO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb21wYWN0cyB0aGlzIEJ5dGVCdWZmZXIgdG8gYmUgYmFja2VkIGJ5IGEge0BsaW5rIEJ5dGVCdWZmZXIjYnVmZmVyfSBvZiBpdHMgY29udGVudHMnIGxlbmd0aC4gQ29udGVudHMgYXJlIHRoZSBieXRlc1xuICAgICAgICAgKiAgYmV0d2VlbiB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGFuZCB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uIFdpbGwgc2V0IGBvZmZzZXQgPSAwYCBhbmQgYGxpbWl0ID0gY2FwYWNpdHlgIGFuZFxuICAgICAgICAgKiAgYWRhcHQge0BsaW5rIEJ5dGVCdWZmZXIjbWFya2VkT2Zmc2V0fSB0byB0aGUgc2FtZSByZWxhdGl2ZSBwb3NpdGlvbiBpZiBzZXQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYmVnaW4gT2Zmc2V0IHRvIHN0YXJ0IGF0LCBkZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9XG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZW5kIE9mZnNldCB0byBlbmQgYXQsIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI2xpbWl0fVxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5jb21wYWN0ID0gZnVuY3Rpb24oYmVnaW4sIGVuZCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBiZWdpbiA9PT0gJ3VuZGVmaW5lZCcpIGJlZ2luID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVuZCA9PT0gJ3VuZGVmaW5lZCcpIGVuZCA9IHRoaXMubGltaXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGJlZ2luICE9PSAnbnVtYmVyJyB8fCBiZWdpbiAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgYmVnaW46IE5vdCBhbiBpbnRlZ2VyXCIpO1xuICAgICAgICAgICAgICAgIGJlZ2luID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVuZCAhPT0gJ251bWJlcicgfHwgZW5kICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBlbmQ6IE5vdCBhbiBpbnRlZ2VyXCIpO1xuICAgICAgICAgICAgICAgIGVuZCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKGJlZ2luIDwgMCB8fCBiZWdpbiA+IGVuZCB8fCBlbmQgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCByYW5nZTogMCA8PSBcIitiZWdpbitcIiA8PSBcIitlbmQrXCIgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYmVnaW4gPT09IDAgJiYgZW5kID09PSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOyAvLyBBbHJlYWR5IGNvbXBhY3RlZFxuICAgICAgICAgICAgdmFyIGxlbiA9IGVuZCAtIGJlZ2luO1xuICAgICAgICAgICAgaWYgKGxlbiA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gRU1QVFlfQlVGRkVSO1xuICAgICAgICAgICAgICAgIHRoaXMudmlldyA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWFya2VkT2Zmc2V0ID49IDApIHRoaXMubWFya2VkT2Zmc2V0IC09IGJlZ2luO1xuICAgICAgICAgICAgICAgIHRoaXMub2Zmc2V0ID0gMDtcbiAgICAgICAgICAgICAgICB0aGlzLmxpbWl0ID0gMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobGVuKTtcbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KGJ1ZmZlcikuc2V0KG5ldyBVaW50OEFycmF5KHRoaXMuYnVmZmVyKS5zdWJhcnJheShiZWdpbiwgZW5kKSk7XG4gICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIHRoaXMudmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpO1xuICAgICAgICAgICAgaWYgKHRoaXMubWFya2VkT2Zmc2V0ID49IDApIHRoaXMubWFya2VkT2Zmc2V0IC09IGJlZ2luO1xuICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgdGhpcy5saW1pdCA9IGxlbjtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDcmVhdGVzIGEgY29weSBvZiB0aGlzIEJ5dGVCdWZmZXIncyBjb250ZW50cy4gQ29udGVudHMgYXJlIHRoZSBieXRlcyBiZXR3ZWVuIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYW5kXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYmVnaW4gQmVnaW4gb2Zmc2V0LCBkZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IGVuZCBFbmQgb2Zmc2V0LCBkZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gQ29weVxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbihiZWdpbiwgZW5kKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJlZ2luID09PSAndW5kZWZpbmVkJykgYmVnaW4gPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kID09PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5saW1pdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gIT09ICdudW1iZXInIHx8IGJlZ2luICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBiZWdpbjogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgYmVnaW4gPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCBlbmQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGVuZDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgZW5kID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPCAwIHx8IGJlZ2luID4gZW5kIHx8IGVuZCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiAwIDw9IFwiK2JlZ2luK1wiIDw9IFwiK2VuZCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiZWdpbiA9PT0gZW5kKVxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQnl0ZUJ1ZmZlcigwLCB0aGlzLmxpdHRsZUVuZGlhbiwgdGhpcy5ub0Fzc2VydCk7XG4gICAgICAgICAgICB2YXIgY2FwYWNpdHkgPSBlbmQgLSBiZWdpbixcbiAgICAgICAgICAgICAgICBiYiA9IG5ldyBCeXRlQnVmZmVyKGNhcGFjaXR5LCB0aGlzLmxpdHRsZUVuZGlhbiwgdGhpcy5ub0Fzc2VydCk7XG4gICAgICAgICAgICBiYi5vZmZzZXQgPSAwO1xuICAgICAgICAgICAgYmIubGltaXQgPSBjYXBhY2l0eTtcbiAgICAgICAgICAgIGlmIChiYi5tYXJrZWRPZmZzZXQgPj0gMCkgYmIubWFya2VkT2Zmc2V0IC09IGJlZ2luO1xuICAgICAgICAgICAgdGhpcy5jb3B5VG8oYmIsIDAsIGJlZ2luLCBlbmQpO1xuICAgICAgICAgICAgcmV0dXJuIGJiO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDb3BpZXMgdGhpcyBCeXRlQnVmZmVyJ3MgY29udGVudHMgdG8gYW5vdGhlciBCeXRlQnVmZmVyLiBDb250ZW50cyBhcmUgdGhlIGJ5dGVzIGJldHdlZW4ge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBhbmRcbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyI2xpbWl0fS5cbiAgICAgICAgICogQHBhcmFtIHshQnl0ZUJ1ZmZlcn0gdGFyZ2V0IFRhcmdldCBCeXRlQnVmZmVyXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gdGFyZ2V0T2Zmc2V0IE9mZnNldCB0byBjb3B5IHRvLiBXaWxsIHVzZSBhbmQgaW5jcmVhc2UgdGhlIHRhcmdldCdzIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH1cbiAgICAgICAgICogIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGlmIG9taXR0ZWQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gc291cmNlT2Zmc2V0IE9mZnNldCB0byBzdGFydCBjb3B5aW5nIGZyb20uIFdpbGwgdXNlIGFuZCBpbmNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZVxuICAgICAgICAgKiAgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IHNvdXJjZUxpbWl0IE9mZnNldCB0byBlbmQgY29weWluZyBmcm9tLCBkZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH1cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUuY29weVRvID0gZnVuY3Rpb24odGFyZ2V0LCB0YXJnZXRPZmZzZXQsIHNvdXJjZU9mZnNldCwgc291cmNlTGltaXQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRSZWxhdGl2ZTtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICghQnl0ZUJ1ZmZlci5pc0J5dGVCdWZmZXIodGFyZ2V0KSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCB0YXJnZXQ6IE5vdCBhIEJ5dGVCdWZmZXJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRPZmZzZXQgPSAodGFyZ2V0UmVsYXRpdmUgPSB0eXBlb2YgdGFyZ2V0T2Zmc2V0ID09PSAndW5kZWZpbmVkJykgPyB0YXJnZXQub2Zmc2V0IDogdGFyZ2V0T2Zmc2V0IHwgMDtcbiAgICAgICAgICAgIHNvdXJjZU9mZnNldCA9IChyZWxhdGl2ZSA9IHR5cGVvZiBzb3VyY2VPZmZzZXQgPT09ICd1bmRlZmluZWQnKSA/IHRoaXMub2Zmc2V0IDogc291cmNlT2Zmc2V0IHwgMDtcbiAgICAgICAgICAgIHNvdXJjZUxpbWl0ID0gdHlwZW9mIHNvdXJjZUxpbWl0ID09PSAndW5kZWZpbmVkJyA/IHRoaXMubGltaXQgOiBzb3VyY2VMaW1pdCB8IDA7XG5cbiAgICAgICAgICAgIGlmICh0YXJnZXRPZmZzZXQgPCAwIHx8IHRhcmdldE9mZnNldCA+IHRhcmdldC5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCB0YXJnZXQgcmFuZ2U6IDAgPD0gXCIrdGFyZ2V0T2Zmc2V0K1wiIDw9IFwiK3RhcmdldC5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICBpZiAoc291cmNlT2Zmc2V0IDwgMCB8fCBzb3VyY2VMaW1pdCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgc291cmNlIHJhbmdlOiAwIDw9IFwiK3NvdXJjZU9mZnNldCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcblxuICAgICAgICAgICAgdmFyIGxlbiA9IHNvdXJjZUxpbWl0IC0gc291cmNlT2Zmc2V0O1xuICAgICAgICAgICAgaWYgKGxlbiA9PT0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OyAvLyBOb3RoaW5nIHRvIGNvcHlcblxuICAgICAgICAgICAgdGFyZ2V0LmVuc3VyZUNhcGFjaXR5KHRhcmdldE9mZnNldCArIGxlbik7XG5cbiAgICAgICAgICAgIG5ldyBVaW50OEFycmF5KHRhcmdldC5idWZmZXIpLnNldChuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcikuc3ViYXJyYXkoc291cmNlT2Zmc2V0LCBzb3VyY2VMaW1pdCksIHRhcmdldE9mZnNldCk7XG5cbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSkgdGhpcy5vZmZzZXQgKz0gbGVuO1xuICAgICAgICAgICAgaWYgKHRhcmdldFJlbGF0aXZlKSB0YXJnZXQub2Zmc2V0ICs9IGxlbjtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1ha2VzIHN1cmUgdGhhdCB0aGlzIEJ5dGVCdWZmZXIgaXMgYmFja2VkIGJ5IGEge0BsaW5rIEJ5dGVCdWZmZXIjYnVmZmVyfSBvZiBhdCBsZWFzdCB0aGUgc3BlY2lmaWVkIGNhcGFjaXR5LiBJZiB0aGVcbiAgICAgICAgICogIGN1cnJlbnQgY2FwYWNpdHkgaXMgZXhjZWVkZWQsIGl0IHdpbGwgYmUgZG91YmxlZC4gSWYgZG91YmxlIHRoZSBjdXJyZW50IGNhcGFjaXR5IGlzIGxlc3MgdGhhbiB0aGUgcmVxdWlyZWQgY2FwYWNpdHksXG4gICAgICAgICAqICB0aGUgcmVxdWlyZWQgY2FwYWNpdHkgd2lsbCBiZSB1c2VkIGluc3RlYWQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjYXBhY2l0eSBSZXF1aXJlZCBjYXBhY2l0eVxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5lbnN1cmVDYXBhY2l0eSA9IGZ1bmN0aW9uKGNhcGFjaXR5KSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGg7XG4gICAgICAgICAgICBpZiAoY3VycmVudCA8IGNhcGFjaXR5KVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnJlc2l6ZSgoY3VycmVudCAqPSAyKSA+IGNhcGFjaXR5ID8gY3VycmVudCA6IGNhcGFjaXR5KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBPdmVyd3JpdGVzIHRoaXMgQnl0ZUJ1ZmZlcidzIGNvbnRlbnRzIHdpdGggdGhlIHNwZWNpZmllZCB2YWx1ZS4gQ29udGVudHMgYXJlIHRoZSBieXRlcyBiZXR3ZWVuXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGFuZCB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gdmFsdWUgQnl0ZSB2YWx1ZSB0byBmaWxsIHdpdGguIElmIGdpdmVuIGFzIGEgc3RyaW5nLCB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIHVzZWQuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYmVnaW4gQmVnaW4gb2Zmc2V0LiBXaWxsIHVzZSBhbmQgaW5jcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICB3cml0dGVuIGlmIG9taXR0ZWQuIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZW5kIEVuZCBvZmZzZXQsIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI2xpbWl0fS5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICogQGV4YW1wbGUgYHNvbWVCeXRlQnVmZmVyLmNsZWFyKCkuZmlsbCgwKWAgZmlsbHMgdGhlIGVudGlyZSBiYWNraW5nIGJ1ZmZlciB3aXRoIHplcm9lc1xuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24odmFsdWUsIGJlZ2luLCBlbmQpIHtcbiAgICAgICAgICAgIHZhciByZWxhdGl2ZSA9IHR5cGVvZiBiZWdpbiA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIGJlZ2luID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiAwKVxuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gPT09ICd1bmRlZmluZWQnKSBiZWdpbiA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgPT09ICd1bmRlZmluZWQnKSBlbmQgPSB0aGlzLmxpbWl0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgdmFsdWUgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHZhbHVlOiBcIit2YWx1ZStcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIHZhbHVlIHw9IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBiZWdpbiAhPT0gJ251bWJlcicgfHwgYmVnaW4gJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGJlZ2luOiBOb3QgYW4gaW50ZWdlclwiKTtcbiAgICAgICAgICAgICAgICBiZWdpbiA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgIT09ICdudW1iZXInIHx8IGVuZCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgZW5kOiBOb3QgYW4gaW50ZWdlclwiKTtcbiAgICAgICAgICAgICAgICBlbmQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChiZWdpbiA8IDAgfHwgYmVnaW4gPiBlbmQgfHwgZW5kID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IDAgPD0gXCIrYmVnaW4rXCIgPD0gXCIrZW5kK1wiIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGJlZ2luID49IGVuZClcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpczsgLy8gTm90aGluZyB0byBmaWxsXG4gICAgICAgICAgICB3aGlsZSAoYmVnaW4gPCBlbmQpIHRoaXMudmlldy5zZXRVaW50OChiZWdpbisrLCB2YWx1ZSk7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIHRoaXMub2Zmc2V0ID0gYmVnaW47XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogTWFrZXMgdGhpcyBCeXRlQnVmZmVyIHJlYWR5IGZvciBhIG5ldyBzZXF1ZW5jZSBvZiB3cml0ZSBvciByZWxhdGl2ZSByZWFkIG9wZXJhdGlvbnMuIFNldHMgYGxpbWl0ID0gb2Zmc2V0YCBhbmRcbiAgICAgICAgICogIGBvZmZzZXQgPSAwYC4gTWFrZSBzdXJlIGFsd2F5cyB0byBmbGlwIGEgQnl0ZUJ1ZmZlciB3aGVuIGFsbCByZWxhdGl2ZSByZWFkIG9yIHdyaXRlIG9wZXJhdGlvbnMgYXJlIGNvbXBsZXRlLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5mbGlwID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICB0aGlzLmxpbWl0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIE1hcmtzIGFuIG9mZnNldCBvbiB0aGlzIEJ5dGVCdWZmZXIgdG8gYmUgdXNlZCBsYXRlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIG1hcmsuIERlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0uXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBvZmZzZXRgIGlzIG5vdCBhIHZhbGlkIG51bWJlclxuICAgICAgICAgKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBJZiBgb2Zmc2V0YCBpcyBvdXQgb2YgYm91bmRzXG4gICAgICAgICAqIEBzZWUgQnl0ZUJ1ZmZlciNyZXNldFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLm1hcmsgPSBmdW5jdGlvbihvZmZzZXQpIHtcbiAgICAgICAgICAgIG9mZnNldCA9IHR5cGVvZiBvZmZzZXQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5vZmZzZXQgOiBvZmZzZXQ7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9mZnNldCAhPT0gJ251bWJlcicgfHwgb2Zmc2V0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IFwiK29mZnNldCtcIiAobm90IGFuIGludGVnZXIpXCIpO1xuICAgICAgICAgICAgICAgIG9mZnNldCA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKG9mZnNldCA8IDAgfHwgb2Zmc2V0ICsgMCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIG9mZnNldDogMCA8PSBcIitvZmZzZXQrXCIgKCtcIiswK1wiKSA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubWFya2VkT2Zmc2V0ID0gb2Zmc2V0O1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTZXRzIHRoZSBieXRlIG9yZGVyLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGxpdHRsZUVuZGlhbiBgdHJ1ZWAgZm9yIGxpdHRsZSBlbmRpYW4gYnl0ZSBvcmRlciwgYGZhbHNlYCBmb3IgYmlnIGVuZGlhblxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5vcmRlciA9IGZ1bmN0aW9uKGxpdHRsZUVuZGlhbikge1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsaXR0bGVFbmRpYW4gIT09ICdib29sZWFuJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBsaXR0bGVFbmRpYW46IE5vdCBhIGJvb2xlYW5cIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxpdHRsZUVuZGlhbiA9ICEhbGl0dGxlRW5kaWFuO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN3aXRjaGVzICh0bykgbGl0dGxlIGVuZGlhbiBieXRlIG9yZGVyLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBsaXR0bGVFbmRpYW4gRGVmYXVsdHMgdG8gYHRydWVgLCBvdGhlcndpc2UgdXNlcyBiaWcgZW5kaWFuXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLkxFID0gZnVuY3Rpb24obGl0dGxlRW5kaWFuKSB7XG4gICAgICAgICAgICB0aGlzLmxpdHRsZUVuZGlhbiA9IHR5cGVvZiBsaXR0bGVFbmRpYW4gIT09ICd1bmRlZmluZWQnID8gISFsaXR0bGVFbmRpYW4gOiB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFN3aXRjaGVzICh0bykgYmlnIGVuZGlhbiBieXRlIG9yZGVyLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBiaWdFbmRpYW4gRGVmYXVsdHMgdG8gYHRydWVgLCBvdGhlcndpc2UgdXNlcyBsaXR0bGUgZW5kaWFuXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLkJFID0gZnVuY3Rpb24oYmlnRW5kaWFuKSB7XG4gICAgICAgICAgICB0aGlzLmxpdHRsZUVuZGlhbiA9IHR5cGVvZiBiaWdFbmRpYW4gIT09ICd1bmRlZmluZWQnID8gIWJpZ0VuZGlhbiA6IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBQcmVwZW5kcyBzb21lIGRhdGEgdG8gdGhpcyBCeXRlQnVmZmVyLiBUaGlzIHdpbGwgb3ZlcndyaXRlIGFueSBjb250ZW50cyBiZWZvcmUgdGhlIHNwZWNpZmllZCBvZmZzZXQgdXAgdG8gdGhlXG4gICAgICAgICAqICBwcmVwZW5kZWQgZGF0YSdzIGxlbmd0aC4gSWYgdGhlcmUgaXMgbm90IGVub3VnaCBzcGFjZSBhdmFpbGFibGUgYmVmb3JlIHRoZSBzcGVjaWZpZWQgYG9mZnNldGAsIHRoZSBiYWNraW5nIGJ1ZmZlclxuICAgICAgICAgKiAgd2lsbCBiZSByZXNpemVkIGFuZCBpdHMgY29udGVudHMgbW92ZWQgYWNjb3JkaW5nbHkuXG4gICAgICAgICAqIEBwYXJhbSB7IUJ5dGVCdWZmZXJ8c3RyaW5nfCFBcnJheUJ1ZmZlcn0gc291cmNlIERhdGEgdG8gcHJlcGVuZC4gSWYgYHNvdXJjZWAgaXMgYSBCeXRlQnVmZmVyLCBpdHMgb2Zmc2V0IHdpbGwgYmVcbiAgICAgICAgICogIG1vZGlmaWVkIGFjY29yZGluZyB0byB0aGUgcGVyZm9ybWVkIHJlYWQgb3BlcmF0aW9uLlxuICAgICAgICAgKiBAcGFyYW0geyhzdHJpbmd8bnVtYmVyKT19IGVuY29kaW5nIEVuY29kaW5nIGlmIGBkYXRhYCBpcyBhIHN0cmluZyAoXCJiYXNlNjRcIiwgXCJoZXhcIiwgXCJiaW5hcnlcIiwgZGVmYXVsdHMgdG8gXCJ1dGY4XCIpXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gb2Zmc2V0IE9mZnNldCB0byBwcmVwZW5kIGF0LiBXaWxsIHVzZSBhbmQgZGVjcmVhc2Uge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzXG4gICAgICAgICAqICBwcmVwZW5kZWQgaWYgb21pdHRlZC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICogQGV4YW1wbGUgQSByZWxhdGl2ZSBgMDA8MDEgMDIgMDM+LnByZXBlbmQoPDA0IDA1PilgIHJlc3VsdHMgaW4gYDwwNCAwNSAwMSAwMiAwMz4sIDA0IDA1fGBcbiAgICAgICAgICogQGV4YW1wbGUgQW4gYWJzb2x1dGUgYDAwPDAxIDAyIDAzPi5wcmVwZW5kKDwwNCAwNT4sIDIpYCByZXN1bHRzIGluIGAwNDwwNSAwMiAwMz4sIDA0IDA1fGBcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uKHNvdXJjZSwgZW5jb2RpbmcsIG9mZnNldCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIG9mZnNldCA9IGVuY29kaW5nO1xuICAgICAgICAgICAgICAgIGVuY29kaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlbGF0aXZlID0gdHlwZW9mIG9mZnNldCA9PT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgICAgICBpZiAocmVsYXRpdmUpIG9mZnNldCA9IHRoaXMub2Zmc2V0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBcIitvZmZzZXQrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCArIDAgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBvZmZzZXQ6IDAgPD0gXCIrb2Zmc2V0K1wiICgrXCIrMCtcIikgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIShzb3VyY2UgaW5zdGFuY2VvZiBCeXRlQnVmZmVyKSlcbiAgICAgICAgICAgICAgICBzb3VyY2UgPSBCeXRlQnVmZmVyLndyYXAoc291cmNlLCBlbmNvZGluZyk7XG4gICAgICAgICAgICB2YXIgbGVuID0gc291cmNlLmxpbWl0IC0gc291cmNlLm9mZnNldDtcbiAgICAgICAgICAgIGlmIChsZW4gPD0gMCkgcmV0dXJuIHRoaXM7IC8vIE5vdGhpbmcgdG8gcHJlcGVuZFxuICAgICAgICAgICAgdmFyIGRpZmYgPSBsZW4gLSBvZmZzZXQ7XG4gICAgICAgICAgICB2YXIgYXJyYXlWaWV3O1xuICAgICAgICAgICAgaWYgKGRpZmYgPiAwKSB7IC8vIE5vdCBlbm91Z2ggc3BhY2UgYmVmb3JlIG9mZnNldCwgc28gcmVzaXplICsgbW92ZVxuICAgICAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIodGhpcy5idWZmZXIuYnl0ZUxlbmd0aCArIGRpZmYpO1xuICAgICAgICAgICAgICAgIGFycmF5VmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgYXJyYXlWaWV3LnNldChuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcikuc3ViYXJyYXkob2Zmc2V0LCB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKSwgbGVuKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJ1ZmZlciA9IGJ1ZmZlcjtcbiAgICAgICAgICAgICAgICB0aGlzLnZpZXcgPSBuZXcgRGF0YVZpZXcoYnVmZmVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCArPSBkaWZmO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLm1hcmtlZE9mZnNldCA+PSAwKSB0aGlzLm1hcmtlZE9mZnNldCArPSBkaWZmO1xuICAgICAgICAgICAgICAgIHRoaXMubGltaXQgKz0gZGlmZjtcbiAgICAgICAgICAgICAgICBvZmZzZXQgKz0gZGlmZjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYXJyYXlWaWV3ID0gbmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXJyYXlWaWV3LnNldChuZXcgVWludDhBcnJheShzb3VyY2UuYnVmZmVyKS5zdWJhcnJheShzb3VyY2Uub2Zmc2V0LCBzb3VyY2UubGltaXQpLCBvZmZzZXQgLSBsZW4pO1xuICAgICAgICAgICAgc291cmNlLm9mZnNldCA9IHNvdXJjZS5saW1pdDtcbiAgICAgICAgICAgIGlmIChyZWxhdGl2ZSlcbiAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCAtPSBsZW47XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogUHJlcGVuZHMgdGhpcyBCeXRlQnVmZmVyIHRvIGFub3RoZXIgQnl0ZUJ1ZmZlci4gVGhpcyB3aWxsIG92ZXJ3cml0ZSBhbnkgY29udGVudHMgYmVmb3JlIHRoZSBzcGVjaWZpZWQgb2Zmc2V0IHVwIHRvIHRoZVxuICAgICAgICAgKiAgcHJlcGVuZGVkIGRhdGEncyBsZW5ndGguIElmIHRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXZhaWxhYmxlIGJlZm9yZSB0aGUgc3BlY2lmaWVkIGBvZmZzZXRgLCB0aGUgYmFja2luZyBidWZmZXJcbiAgICAgICAgICogIHdpbGwgYmUgcmVzaXplZCBhbmQgaXRzIGNvbnRlbnRzIG1vdmVkIGFjY29yZGluZ2x5LlxuICAgICAgICAgKiBAcGFyYW0geyFCeXRlQnVmZmVyfSB0YXJnZXQgVGFyZ2V0IEJ5dGVCdWZmZXJcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBvZmZzZXQgT2Zmc2V0IHRvIHByZXBlbmQgYXQuIFdpbGwgdXNlIGFuZCBkZWNyZWFzZSB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXNcbiAgICAgICAgICogIHByZXBlbmRlZCBpZiBvbWl0dGVkLlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IHRoaXNcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKiBAc2VlIEJ5dGVCdWZmZXIjcHJlcGVuZFxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5wcmVwZW5kVG8gPSBmdW5jdGlvbih0YXJnZXQsIG9mZnNldCkge1xuICAgICAgICAgICAgdGFyZ2V0LnByZXBlbmQodGhpcywgb2Zmc2V0KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogUHJpbnRzIGRlYnVnIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgQnl0ZUJ1ZmZlcidzIGNvbnRlbnRzLlxuICAgICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKHN0cmluZyk9fSBvdXQgT3V0cHV0IGZ1bmN0aW9uIHRvIGNhbGwsIGRlZmF1bHRzIHRvIGNvbnNvbGUubG9nXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUucHJpbnREZWJ1ZyA9IGZ1bmN0aW9uKG91dCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBvdXQgIT09ICdmdW5jdGlvbicpIG91dCA9IGNvbnNvbGUubG9nLmJpbmQoY29uc29sZSk7XG4gICAgICAgICAgICBvdXQoXG4gICAgICAgICAgICAgICAgdGhpcy50b1N0cmluZygpK1wiXFxuXCIrXG4gICAgICAgICAgICAgICAgXCItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXFxuXCIrXG4gICAgICAgICAgICAgICAgdGhpcy50b0RlYnVnKC8qIGNvbHVtbnMgKi8gdHJ1ZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEdldHMgdGhlIG51bWJlciBvZiByZW1haW5pbmcgcmVhZGFibGUgYnl0ZXMuIENvbnRlbnRzIGFyZSB0aGUgYnl0ZXMgYmV0d2VlbiB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGFuZFxuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIjbGltaXR9LCBzbyB0aGlzIHJldHVybnMgYGxpbWl0IC0gb2Zmc2V0YC5cbiAgICAgICAgICogQHJldHVybnMge251bWJlcn0gUmVtYWluaW5nIHJlYWRhYmxlIGJ5dGVzLiBNYXkgYmUgbmVnYXRpdmUgaWYgYG9mZnNldCA+IGxpbWl0YC5cbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS5yZW1haW5pbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxpbWl0IC0gdGhpcy5vZmZzZXQ7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXNldHMgdGhpcyBCeXRlQnVmZmVyJ3Mge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fS4gSWYgYW4gb2Zmc2V0IGhhcyBiZWVuIG1hcmtlZCB0aHJvdWdoIHtAbGluayBCeXRlQnVmZmVyI21hcmt9XG4gICAgICAgICAqICBiZWZvcmUsIGBvZmZzZXRgIHdpbGwgYmUgc2V0IHRvIHtAbGluayBCeXRlQnVmZmVyI21hcmtlZE9mZnNldH0sIHdoaWNoIHdpbGwgdGhlbiBiZSBkaXNjYXJkZWQuIElmIG5vIG9mZnNldCBoYXMgYmVlblxuICAgICAgICAgKiAgbWFya2VkLCBzZXRzIGBvZmZzZXQgPSAwYC5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSB0aGlzXG4gICAgICAgICAqIEBzZWUgQnl0ZUJ1ZmZlciNtYXJrXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hcmtlZE9mZnNldCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLm1hcmtlZE9mZnNldDtcbiAgICAgICAgICAgICAgICB0aGlzLm1hcmtlZE9mZnNldCA9IC0xO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlc2l6ZXMgdGhpcyBCeXRlQnVmZmVyIHRvIGJlIGJhY2tlZCBieSBhIGJ1ZmZlciBvZiBhdCBsZWFzdCB0aGUgZ2l2ZW4gY2FwYWNpdHkuIFdpbGwgZG8gbm90aGluZyBpZiBhbHJlYWR5IHRoYXRcbiAgICAgICAgICogIGxhcmdlIG9yIGxhcmdlci5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGNhcGFjaXR5IENhcGFjaXR5IHJlcXVpcmVkXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBjYXBhY2l0eWAgaXMgbm90IGEgbnVtYmVyXG4gICAgICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGBjYXBhY2l0eSA8IDBgXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUucmVzaXplID0gZnVuY3Rpb24oY2FwYWNpdHkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2FwYWNpdHkgIT09ICdudW1iZXInIHx8IGNhcGFjaXR5ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBjYXBhY2l0eTogXCIrY2FwYWNpdHkrXCIgKG5vdCBhbiBpbnRlZ2VyKVwiKTtcbiAgICAgICAgICAgICAgICBjYXBhY2l0eSB8PSAwO1xuICAgICAgICAgICAgICAgIGlmIChjYXBhY2l0eSA8IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIGNhcGFjaXR5OiAwIDw9IFwiK2NhcGFjaXR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoIDwgY2FwYWNpdHkpIHtcbiAgICAgICAgICAgICAgICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKGNhcGFjaXR5KTtcbiAgICAgICAgICAgICAgICBuZXcgVWludDhBcnJheShidWZmZXIpLnNldChuZXcgVWludDhBcnJheSh0aGlzLmJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgIHRoaXMuYnVmZmVyID0gYnVmZmVyO1xuICAgICAgICAgICAgICAgIHRoaXMudmlldyA9IG5ldyBEYXRhVmlldyhidWZmZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXZlcnNlcyB0aGlzIEJ5dGVCdWZmZXIncyBjb250ZW50cy5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBiZWdpbiBPZmZzZXQgdG8gc3RhcnQgYXQsIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH1cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBlbmQgT2Zmc2V0IHRvIGVuZCBhdCwgZGVmYXVsdHMgdG8ge0BsaW5rIEJ5dGVCdWZmZXIjbGltaXR9XG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnJldmVyc2UgPSBmdW5jdGlvbihiZWdpbiwgZW5kKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJlZ2luID09PSAndW5kZWZpbmVkJykgYmVnaW4gPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kID09PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5saW1pdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gIT09ICdudW1iZXInIHx8IGJlZ2luICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBiZWdpbjogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgYmVnaW4gPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCBlbmQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGVuZDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgZW5kID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPCAwIHx8IGJlZ2luID4gZW5kIHx8IGVuZCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiAwIDw9IFwiK2JlZ2luK1wiIDw9IFwiK2VuZCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiZWdpbiA9PT0gZW5kKVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzOyAvLyBOb3RoaW5nIHRvIHJldmVyc2VcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5yZXZlcnNlLmNhbGwobmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIpLnN1YmFycmF5KGJlZ2luLCBlbmQpKTtcbiAgICAgICAgICAgIHRoaXMudmlldyA9IG5ldyBEYXRhVmlldyh0aGlzLmJ1ZmZlcik7IC8vIEZJWE1FOiBXaHkgZXhhY3RseSBpcyB0aGlzIG5lY2Vzc2FyeT9cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuICAgICAgICAvKipcbiAgICAgICAgICogU2tpcHMgdGhlIG5leHQgYGxlbmd0aGAgYnl0ZXMuIFRoaXMgd2lsbCBqdXN0IGFkdmFuY2VcbiAgICAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCBOdW1iZXIgb2YgYnl0ZXMgdG8gc2tpcC4gTWF5IGFsc28gYmUgbmVnYXRpdmUgdG8gbW92ZSB0aGUgb2Zmc2V0IGJhY2suXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gdGhpc1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnNraXAgPSBmdW5jdGlvbihsZW5ndGgpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGVuZ3RoICE9PSAnbnVtYmVyJyB8fCBsZW5ndGggJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGxlbmd0aDogXCIrbGVuZ3RoK1wiIChub3QgYW4gaW50ZWdlcilcIik7XG4gICAgICAgICAgICAgICAgbGVuZ3RoIHw9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQgKyBsZW5ndGg7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKFwiSWxsZWdhbCBsZW5ndGg6IDAgPD0gXCIrdGhpcy5vZmZzZXQrXCIgKyBcIitsZW5ndGgrXCIgPD0gXCIrdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLm9mZnNldCA9IG9mZnNldDtcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTbGljZXMgdGhpcyBCeXRlQnVmZmVyIGJ5IGNyZWF0aW5nIGEgY2xvbmVkIGluc3RhbmNlIHdpdGggYG9mZnNldCA9IGJlZ2luYCBhbmQgYGxpbWl0ID0gZW5kYC5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBiZWdpbiBCZWdpbiBvZmZzZXQsIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0uXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gZW5kIEVuZCBvZmZzZXQsIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI2xpbWl0fS5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSBDbG9uZSBvZiB0aGlzIEJ5dGVCdWZmZXIgd2l0aCBzbGljaW5nIGFwcGxpZWQsIGJhY2tlZCBieSB0aGUgc2FtZSB7QGxpbmsgQnl0ZUJ1ZmZlciNidWZmZXJ9XG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUuc2xpY2UgPSBmdW5jdGlvbihiZWdpbiwgZW5kKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJlZ2luID09PSAndW5kZWZpbmVkJykgYmVnaW4gPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kID09PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5saW1pdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gIT09ICdudW1iZXInIHx8IGJlZ2luICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBiZWdpbjogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgYmVnaW4gPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCBlbmQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGVuZDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgZW5kID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPCAwIHx8IGJlZ2luID4gZW5kIHx8IGVuZCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiAwIDw9IFwiK2JlZ2luK1wiIDw9IFwiK2VuZCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBiYiA9IHRoaXMuY2xvbmUoKTtcbiAgICAgICAgICAgIGJiLm9mZnNldCA9IGJlZ2luO1xuICAgICAgICAgICAgYmIubGltaXQgPSBlbmQ7XG4gICAgICAgICAgICByZXR1cm4gYmI7XG4gICAgICAgIH07XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBSZXR1cm5zIGEgY29weSBvZiB0aGUgYmFja2luZyBidWZmZXIgdGhhdCBjb250YWlucyB0aGlzIEJ5dGVCdWZmZXIncyBjb250ZW50cy4gQ29udGVudHMgYXJlIHRoZSBieXRlcyBiZXR3ZWVuXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9IGFuZCB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uIFdpbGwgdHJhbnNwYXJlbnRseSB7QGxpbmsgQnl0ZUJ1ZmZlciNmbGlwfSB0aGlzXG4gICAgICAgICAqICBCeXRlQnVmZmVyIGlmIGBvZmZzZXQgPiBsaW1pdGAgYnV0IHRoZSBhY3R1YWwgb2Zmc2V0cyByZW1haW4gdW50b3VjaGVkLlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBmb3JjZUNvcHkgSWYgYHRydWVgIHJldHVybnMgYSBjb3B5LCBvdGhlcndpc2UgcmV0dXJucyBhIHZpZXcgcmVmZXJlbmNpbmcgdGhlIHNhbWUgbWVtb3J5IGlmXG4gICAgICAgICAqICBwb3NzaWJsZS4gRGVmYXVsdHMgdG8gYGZhbHNlYFxuICAgICAgICAgKiBAcmV0dXJucyB7IUFycmF5QnVmZmVyfSBDb250ZW50cyBhcyBhbiBBcnJheUJ1ZmZlclxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnRvQnVmZmVyID0gZnVuY3Rpb24oZm9yY2VDb3B5KSB7XG4gICAgICAgICAgICB2YXIgb2Zmc2V0ID0gdGhpcy5vZmZzZXQsXG4gICAgICAgICAgICAgICAgbGltaXQgPSB0aGlzLmxpbWl0O1xuICAgICAgICAgICAgaWYgKG9mZnNldCA+IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgdmFyIHQgPSBvZmZzZXQ7XG4gICAgICAgICAgICAgICAgb2Zmc2V0ID0gbGltaXQ7XG4gICAgICAgICAgICAgICAgbGltaXQgPSB0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBvZmZzZXQgIT09ICdudW1iZXInIHx8IG9mZnNldCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgb2Zmc2V0OiBOb3QgYW4gaW50ZWdlclwiKTtcbiAgICAgICAgICAgICAgICBvZmZzZXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgbGltaXQgIT09ICdudW1iZXInIHx8IGxpbWl0ICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBsaW1pdDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgbGltaXQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPCAwIHx8IG9mZnNldCA+IGxpbWl0IHx8IGxpbWl0ID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IDAgPD0gXCIrb2Zmc2V0K1wiIDw9IFwiK2xpbWl0K1wiIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gTk9URTogSXQncyBub3QgcG9zc2libGUgdG8gaGF2ZSBhbm90aGVyIEFycmF5QnVmZmVyIHJlZmVyZW5jZSB0aGUgc2FtZSBtZW1vcnkgYXMgdGhlIGJhY2tpbmcgYnVmZmVyLiBUaGlzIGlzXG4gICAgICAgICAgICAvLyBwb3NzaWJsZSB3aXRoIFVpbnQ4QXJyYXkjc3ViYXJyYXkgb25seSwgYnV0IHdlIGhhdmUgdG8gcmV0dXJuIGFuIEFycmF5QnVmZmVyIGJ5IGNvbnRyYWN0LiBTbzpcbiAgICAgICAgICAgIGlmICghZm9yY2VDb3B5ICYmIG9mZnNldCA9PT0gMCAmJiBsaW1pdCA9PT0gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvZmZzZXQgPT09IGxpbWl0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIEVNUFRZX0JVRkZFUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIobGltaXQgLSBvZmZzZXQpO1xuICAgICAgICAgICAgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKS5zZXQobmV3IFVpbnQ4QXJyYXkodGhpcy5idWZmZXIpLnN1YmFycmF5KG9mZnNldCwgbGltaXQpLCAwKTtcbiAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJldHVybnMgYSByYXcgYnVmZmVyIGNvbXBhY3RlZCB0byBjb250YWluIHRoaXMgQnl0ZUJ1ZmZlcidzIGNvbnRlbnRzLiBDb250ZW50cyBhcmUgdGhlIGJ5dGVzIGJldHdlZW5cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYW5kIHtAbGluayBCeXRlQnVmZmVyI2xpbWl0fS4gV2lsbCB0cmFuc3BhcmVudGx5IHtAbGluayBCeXRlQnVmZmVyI2ZsaXB9IHRoaXNcbiAgICAgICAgICogIEJ5dGVCdWZmZXIgaWYgYG9mZnNldCA+IGxpbWl0YCBidXQgdGhlIGFjdHVhbCBvZmZzZXRzIHJlbWFpbiB1bnRvdWNoZWQuIFRoaXMgaXMgYW4gYWxpYXMgb2ZcbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyI3RvQnVmZmVyfS5cbiAgICAgICAgICogQGZ1bmN0aW9uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGZvcmNlQ29weSBJZiBgdHJ1ZWAgcmV0dXJucyBhIGNvcHksIG90aGVyd2lzZSByZXR1cm5zIGEgdmlldyByZWZlcmVuY2luZyB0aGUgc2FtZSBtZW1vcnkuXG4gICAgICAgICAqICBEZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAqIEByZXR1cm5zIHshQXJyYXlCdWZmZXJ9IENvbnRlbnRzIGFzIGFuIEFycmF5QnVmZmVyXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUudG9BcnJheUJ1ZmZlciA9IEJ5dGVCdWZmZXJQcm90b3R5cGUudG9CdWZmZXI7XG5cblxuICAgICAgICAvKipcbiAgICAgICAgICogQ29udmVydHMgdGhlIEJ5dGVCdWZmZXIncyBjb250ZW50cyB0byBhIHN0cmluZy5cbiAgICAgICAgICogQHBhcmFtIHtzdHJpbmc9fSBlbmNvZGluZyBPdXRwdXQgZW5jb2RpbmcuIFJldHVybnMgYW4gaW5mb3JtYXRpdmUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGlmIG9taXR0ZWQgYnV0IGFsc28gYWxsb3dzXG4gICAgICAgICAqICBkaXJlY3QgY29udmVyc2lvbiB0byBcInV0ZjhcIiwgXCJoZXhcIiwgXCJiYXNlNjRcIiBhbmQgXCJiaW5hcnlcIiBlbmNvZGluZy4gXCJkZWJ1Z1wiIHJldHVybnMgYSBoZXggcmVwcmVzZW50YXRpb24gd2l0aFxuICAgICAgICAgKiAgaGlnaGxpZ2h0ZWQgb2Zmc2V0cy5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBiZWdpbiBPZmZzZXQgdG8gYmVnaW4gYXQsIGRlZmF1bHRzIHRvIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH1cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBlbmQgT2Zmc2V0IHRvIGVuZCBhdCwgZGVmYXVsdHMgdG8ge0BsaW5rIEJ5dGVCdWZmZXIjbGltaXR9XG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyByZXByZXNlbnRhdGlvblxuICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYGVuY29kaW5nYCBpcyBpbnZhbGlkXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXJQcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbihlbmNvZGluZywgYmVnaW4sIGVuZCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiQnl0ZUJ1ZmZlckFCKG9mZnNldD1cIit0aGlzLm9mZnNldCtcIixtYXJrZWRPZmZzZXQ9XCIrdGhpcy5tYXJrZWRPZmZzZXQrXCIsbGltaXQ9XCIrdGhpcy5saW1pdCtcIixjYXBhY2l0eT1cIit0aGlzLmNhcGFjaXR5KCkrXCIpXCI7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgICAgICBlbmNvZGluZyA9IFwidXRmOFwiLFxuICAgICAgICAgICAgICAgIGJlZ2luID0gZW5jb2RpbmcsXG4gICAgICAgICAgICAgICAgZW5kID0gYmVnaW47XG4gICAgICAgICAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInV0ZjhcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9VVEY4KGJlZ2luLCBlbmQpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJiYXNlNjRcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9CYXNlNjQoYmVnaW4sIGVuZCk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImhleFwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0hleChiZWdpbiwgZW5kKTtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYmluYXJ5XCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvQmluYXJ5KGJlZ2luLCBlbmQpO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJkZWJ1Z1wiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b0RlYnVnKCk7XG4gICAgICAgICAgICAgICAgY2FzZSBcImNvbHVtbnNcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudG9Db2x1bW5zKCk7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJVbnN1cHBvcnRlZCBlbmNvZGluZzogXCIrZW5jb2RpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIGx4aXYtZW1iZWRkYWJsZVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBseGl2LWVtYmVkZGFibGUgKGMpIDIwMTQgRGFuaWVsIFdpcnR6IDxkY29kZUBkY29kZS5pbz5cbiAgICAgICAgICogUmVsZWFzZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxuICAgICAgICAgKiBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL2x4aXYgZm9yIGRldGFpbHNcbiAgICAgICAgICovXG4gICAgICAgIHZhciBseGl2ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBseGl2IG5hbWVzcGFjZS5cbiAgICAgICAgICAgICAqIEB0eXBlIHshT2JqZWN0LjxzdHJpbmcsKj59XG4gICAgICAgICAgICAgKiBAZXhwb3J0cyBseGl2XG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBseGl2ID0ge307XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2hhcmFjdGVyIGNvZGVzIGZvciBvdXRwdXQuXG4gICAgICAgICAgICAgKiBAdHlwZSB7IUFycmF5LjxudW1iZXI+fVxuICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHZhciBhb3V0ID0gW1xuICAgICAgICAgICAgICAgIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLFxuICAgICAgICAgICAgICAgIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDg3LCA4OCwgODksIDkwLCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLFxuICAgICAgICAgICAgICAgIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LCAxMDgsIDEwOSwgMTEwLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAxMTcsIDExOCxcbiAgICAgICAgICAgICAgICAxMTksIDEyMCwgMTIxLCAxMjIsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDU3LCA0MywgNDdcbiAgICAgICAgICAgIF07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2hhcmFjdGVyIGNvZGVzIGZvciBpbnB1dC5cbiAgICAgICAgICAgICAqIEB0eXBlIHshQXJyYXkuPG51bWJlcj59XG4gICAgICAgICAgICAgKiBAaW5uZXJcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdmFyIGFpbiA9IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBrPWFvdXQubGVuZ3RoOyBpPGs7ICsraSlcbiAgICAgICAgICAgICAgICBhaW5bYW91dFtpXV0gPSBpO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIEVuY29kZXMgYnl0ZXMgdG8gYmFzZTY0IGNoYXIgY29kZXMuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbigpOm51bWJlcnxudWxsfSBzcmMgQnl0ZXMgc291cmNlIGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBuZXh0IGJ5dGUgcmVzcGVjdGl2ZWx5IGBudWxsYCBpZlxuICAgICAgICAgICAgICogIHRoZXJlIGFyZSBubyBtb3JlIGJ5dGVzIGxlZnQuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbihudW1iZXIpfSBkc3QgQ2hhcmFjdGVycyBkZXN0aW5hdGlvbiBhcyBhIGZ1bmN0aW9uIHN1Y2Nlc3NpdmVseSBjYWxsZWQgd2l0aCBlYWNoIGVuY29kZWQgY2hhclxuICAgICAgICAgICAgICogIGNvZGUuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGx4aXYuZW5jb2RlID0gZnVuY3Rpb24oc3JjLCBkc3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgYiwgdDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGIgPSBzcmMoKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZHN0KGFvdXRbKGI+PjIpJjB4M2ZdKTtcbiAgICAgICAgICAgICAgICAgICAgdCA9IChiJjB4Myk8PDQ7XG4gICAgICAgICAgICAgICAgICAgIGlmICgoYiA9IHNyYygpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdCB8PSAoYj4+NCkmMHhmO1xuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KGFvdXRbKHR8KChiPj40KSYweGYpKSYweDNmXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0ID0gKGImMHhmKTw8MjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYiA9IHNyYygpKSAhPT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QoYW91dFsodHwoKGI+PjYpJjB4MykpJjB4M2ZdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QoYW91dFtiJjB4M2ZdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QoYW91dFt0JjB4M2ZdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QoNjEpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdChhb3V0W3QmMHgzZl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KDYxKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdCg2MSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEZWNvZGVzIGJhc2U2NCBjaGFyIGNvZGVzIHRvIGJ5dGVzLlxuICAgICAgICAgICAgICogQHBhcmFtIHshZnVuY3Rpb24oKTpudW1iZXJ8bnVsbH0gc3JjIENoYXJhY3RlcnMgc291cmNlIGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBuZXh0IGNoYXIgY29kZSByZXNwZWN0aXZlbHlcbiAgICAgICAgICAgICAqICBgbnVsbGAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgY2hhcmFjdGVycyBsZWZ0LlxuICAgICAgICAgICAgICogQHBhcmFtIHshZnVuY3Rpb24obnVtYmVyKX0gZHN0IEJ5dGVzIGRlc3RpbmF0aW9uIGFzIGEgZnVuY3Rpb24gc3VjY2Vzc2l2ZWx5IGNhbGxlZCB3aXRoIHRoZSBuZXh0IGJ5dGUuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYSBjaGFyYWN0ZXIgY29kZSBpcyBpbnZhbGlkXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGx4aXYuZGVjb2RlID0gZnVuY3Rpb24oc3JjLCBkc3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgYywgdDEsIHQyO1xuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGZhaWwoYykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihcIklsbGVnYWwgY2hhcmFjdGVyIGNvZGU6IFwiK2MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoKGMgPSBzcmMoKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdDEgPSBhaW5bY107XG4gICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdDEgPT09ICd1bmRlZmluZWQnKSBmYWlsKGMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGMgPSBzcmMoKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHQyID0gYWluW2NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0MiA9PT0gJ3VuZGVmaW5lZCcpIGZhaWwoYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBkc3QoKHQxPDwyKT4+PjB8KHQyJjB4MzApPj40KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYyA9IHNyYygpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQxID0gYWluW2NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdDEgPT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PT0gNjEpIGJyZWFrOyBlbHNlIGZhaWwoYyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KCgodDImMHhmKTw8NCk+Pj4wfCh0MSYweDNjKT4+Mik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjID0gc3JjKCkpICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQyID0gYWluW2NdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHQyID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09PSA2MSkgYnJlYWs7IGVsc2UgZmFpbChjKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0KCgodDEmMHgzKTw8Nik+Pj4wfHQyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIFRlc3RzIGlmIGEgc3RyaW5nIGlzIHZhbGlkIGJhc2U2NC5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nIHRvIHRlc3RcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtib29sZWFufSBgdHJ1ZWAgaWYgdmFsaWQsIG90aGVyd2lzZSBgZmFsc2VgXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGx4aXYudGVzdCA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgICAgIHJldHVybiAvXig/OltBLVphLXowLTkrL117NH0pKig/OltBLVphLXowLTkrL117Mn09PXxbQS1aYS16MC05Ky9dezN9PSk/JC8udGVzdChzdHIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgcmV0dXJuIGx4aXY7XG4gICAgICAgIH0oKTtcblxuICAgICAgICAvLyBlbmNvZGluZ3MvYmFzZTY0XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVuY29kZXMgdGhpcyBCeXRlQnVmZmVyJ3MgY29udGVudHMgdG8gYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYmVnaW4gT2Zmc2V0IHRvIGJlZ2luIGF0LCBkZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IGVuZCBPZmZzZXQgdG8gZW5kIGF0LCBkZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnRvQmFzZTY0ID0gZnVuY3Rpb24oYmVnaW4sIGVuZCkge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBiZWdpbiA9PT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgYmVnaW4gPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgICAgICBlbmQgPSB0aGlzLmxpbWl0O1xuICAgICAgICAgICAgaWYgKCF0aGlzLm5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBiZWdpbiAhPT0gJ251bWJlcicgfHwgYmVnaW4gJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGJlZ2luOiBOb3QgYW4gaW50ZWdlclwiKTtcbiAgICAgICAgICAgICAgICBiZWdpbiA+Pj49IDA7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBlbmQgIT09ICdudW1iZXInIHx8IGVuZCAlIDEgIT09IDApXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgZW5kOiBOb3QgYW4gaW50ZWdlclwiKTtcbiAgICAgICAgICAgICAgICBlbmQgPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmIChiZWdpbiA8IDAgfHwgYmVnaW4gPiBlbmQgfHwgZW5kID4gdGhpcy5idWZmZXIuYnl0ZUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IDAgPD0gXCIrYmVnaW4rXCIgPD0gXCIrZW5kK1wiIDw9IFwiK3RoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHNkOyBseGl2LmVuY29kZShmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYmVnaW4gPCBlbmQgPyB0aGlzLnZpZXcuZ2V0VWludDgoYmVnaW4rKykgOiBudWxsO1xuICAgICAgICAgICAgfS5iaW5kKHRoaXMpLCBzZCA9IHN0cmluZ0Rlc3RpbmF0aW9uKCkpO1xuICAgICAgICAgICAgcmV0dXJuIHNkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlY29kZXMgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gYSBCeXRlQnVmZmVyLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFN0cmluZyB0byBkZWNvZGVcbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbGl0dGxlRW5kaWFuIFdoZXRoZXIgdG8gdXNlIGxpdHRsZSBvciBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIuIERlZmF1bHRzIHRvXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0VORElBTn0uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gc2tpcCBhc3NlcnRpb25zIG9mIG9mZnNldHMgYW5kIHZhbHVlcy4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLkRFRkFVTFRfTk9BU1NFUlR9LlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IEJ5dGVCdWZmZXJcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5mcm9tQmFzZTY0ID0gZnVuY3Rpb24oc3RyLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHN0cjogTm90IGEgc3RyaW5nXCIpO1xuICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoICUgNCAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IExlbmd0aCBub3QgYSBtdWx0aXBsZSBvZiA0XCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGJiID0gbmV3IEJ5dGVCdWZmZXIoc3RyLmxlbmd0aC80KjMsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpLFxuICAgICAgICAgICAgICAgIGkgPSAwO1xuICAgICAgICAgICAgbHhpdi5kZWNvZGUoc3RyaW5nU291cmNlKHN0ciksIGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICAgICAgICBiYi52aWV3LnNldFVpbnQ4KGkrKywgYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJiLmxpbWl0ID0gaTtcbiAgICAgICAgICAgIHJldHVybiBiYjtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRW5jb2RlcyBhIGJpbmFyeSBzdHJpbmcgdG8gYmFzZTY0IGxpa2UgYHdpbmRvdy5idG9hYCBkb2VzLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIEJpbmFyeSBzdHJpbmdcbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gQmFzZTY0IGVuY29kZWQgc3RyaW5nXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy5idG9hXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuYnRvYSA9IGZ1bmN0aW9uKHN0cikge1xuICAgICAgICAgICAgcmV0dXJuIEJ5dGVCdWZmZXIuZnJvbUJpbmFyeShzdHIpLnRvQmFzZTY0KCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlY29kZXMgYSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gYmluYXJ5IGxpa2UgYHdpbmRvdy5hdG9iYCBkb2VzLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gYjY0IEJhc2U2NCBlbmNvZGVkIHN0cmluZ1xuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBCaW5hcnkgc3RyaW5nXG4gICAgICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy5hdG9iXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuYXRvYiA9IGZ1bmN0aW9uKGI2NCkge1xuICAgICAgICAgICAgcmV0dXJuIEJ5dGVCdWZmZXIuZnJvbUJhc2U2NChiNjQpLnRvQmluYXJ5KCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gZW5jb2RpbmdzL2JpbmFyeVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBFbmNvZGVzIHRoaXMgQnl0ZUJ1ZmZlciB0byBhIGJpbmFyeSBlbmNvZGVkIHN0cmluZywgdGhhdCBpcyB1c2luZyBvbmx5IGNoYXJhY3RlcnMgMHgwMC0weEZGIGFzIGJ5dGVzLlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IGJlZ2luIE9mZnNldCB0byBiZWdpbiBhdC4gRGVmYXVsdHMgdG8ge0BsaW5rIEJ5dGVCdWZmZXIjb2Zmc2V0fS5cbiAgICAgICAgICogQHBhcmFtIHtudW1iZXI9fSBlbmQgT2Zmc2V0IHRvIGVuZCBhdC4gRGVmYXVsdHMgdG8ge0BsaW5rIEJ5dGVCdWZmZXIjbGltaXR9LlxuICAgICAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBCaW5hcnkgZW5jb2RlZCBzdHJpbmdcbiAgICAgICAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYG9mZnNldCA+IGxpbWl0YFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnRvQmluYXJ5ID0gZnVuY3Rpb24oYmVnaW4sIGVuZCkge1xuICAgICAgICAgICAgYmVnaW4gPSB0eXBlb2YgYmVnaW4gPT09ICd1bmRlZmluZWQnID8gdGhpcy5vZmZzZXQgOiBiZWdpbjtcbiAgICAgICAgICAgIGVuZCA9IHR5cGVvZiBlbmQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5saW1pdCA6IGVuZDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gIT09ICdudW1iZXInIHx8IGJlZ2luICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBiZWdpbjogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgYmVnaW4gPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCBlbmQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGVuZDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgZW5kID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPCAwIHx8IGJlZ2luID4gZW5kIHx8IGVuZCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiAwIDw9IFwiK2JlZ2luK1wiIDw9IFwiK2VuZCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChiZWdpbiA9PT0gZW5kKVxuICAgICAgICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICAgICAgdmFyIGNjID0gW10sIHB0ID0gW107XG4gICAgICAgICAgICB3aGlsZSAoYmVnaW4gPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBjYy5wdXNoKHRoaXMudmlldy5nZXRVaW50OChiZWdpbisrKSk7XG4gICAgICAgICAgICAgICAgaWYgKGNjLmxlbmd0aCA+PSAxMDI0KVxuICAgICAgICAgICAgICAgICAgICBwdC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjYykpLFxuICAgICAgICAgICAgICAgICAgICBjYyA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHB0LmpvaW4oJycpICsgU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsIGNjKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogRGVjb2RlcyBhIGJpbmFyeSBlbmNvZGVkIHN0cmluZywgdGhhdCBpcyB1c2luZyBvbmx5IGNoYXJhY3RlcnMgMHgwMC0weEZGIGFzIGJ5dGVzLCB0byBhIEJ5dGVCdWZmZXIuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nIHRvIGRlY29kZVxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBsaXR0bGVFbmRpYW4gV2hldGhlciB0byB1c2UgbGl0dGxlIG9yIGJpZyBlbmRpYW4gYnl0ZSBvcmRlci4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLkRFRkFVTFRfRU5ESUFOfS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9Bc3NlcnQgV2hldGhlciB0byBza2lwIGFzc2VydGlvbnMgb2Ygb2Zmc2V0cyBhbmQgdmFsdWVzLiBEZWZhdWx0cyB0b1xuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIuREVGQVVMVF9OT0FTU0VSVH0uXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gQnl0ZUJ1ZmZlclxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLmZyb21CaW5hcnkgPSBmdW5jdGlvbihzdHIsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgICAgICAgICAgIGlmICghbm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0ciAhPT0gJ3N0cmluZycpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgc3RyOiBOb3QgYSBzdHJpbmdcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgaSA9IDAsIGsgPSBzdHIubGVuZ3RoLCBjaGFyQ29kZSxcbiAgICAgICAgICAgICAgICBiYiA9IG5ldyBCeXRlQnVmZmVyKGssIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpO1xuICAgICAgICAgICAgd2hpbGUgKGk8aykge1xuICAgICAgICAgICAgICAgIGNoYXJDb2RlID0gc3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgICAgICAgICAgICAgaWYgKCFub0Fzc2VydCAmJiBjaGFyQ29kZSA+IDI1NSlcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgY2hhckNvZGUgYXQgXCIraStcIjogMCA8PSBcIitjaGFyQ29kZStcIiA8PSAyNTVcIik7XG4gICAgICAgICAgICAgICAgYmIudmlldy5zZXRVaW50OChpKyssIGNoYXJDb2RlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJiLmxpbWl0ID0gaztcbiAgICAgICAgICAgIHJldHVybiBiYjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBlbmNvZGluZ3MvZGVidWdcblxuICAgICAgICAvKipcbiAgICAgICAgICogRW5jb2RlcyB0aGlzIEJ5dGVCdWZmZXIgdG8gYSBoZXggZW5jb2RlZCBzdHJpbmcgd2l0aCBtYXJrZWQgb2Zmc2V0cy4gT2Zmc2V0IHN5bWJvbHMgYXJlOlxuICAgICAgICAgKiAqIGA8YCA6IG9mZnNldCxcbiAgICAgICAgICogKiBgJ2AgOiBtYXJrZWRPZmZzZXQsXG4gICAgICAgICAqICogYD5gIDogbGltaXQsXG4gICAgICAgICAqICogYHxgIDogb2Zmc2V0IGFuZCBsaW1pdCxcbiAgICAgICAgICogKiBgW2AgOiBvZmZzZXQgYW5kIG1hcmtlZE9mZnNldCxcbiAgICAgICAgICogKiBgXWAgOiBtYXJrZWRPZmZzZXQgYW5kIGxpbWl0LFxuICAgICAgICAgKiAqIGAhYCA6IG9mZnNldCwgbWFya2VkT2Zmc2V0IGFuZCBsaW1pdFxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBjb2x1bW5zIElmIGB0cnVlYCByZXR1cm5zIHR3byBjb2x1bW5zIGhleCArIGFzY2lpLCBkZWZhdWx0cyB0byBgZmFsc2VgXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd8IUFycmF5LjxzdHJpbmc+fSBEZWJ1ZyBzdHJpbmcgb3IgYXJyYXkgb2YgbGluZXMgaWYgYGFzQXJyYXkgPSB0cnVlYFxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqIEBleGFtcGxlIGA+MDAnMDEgMDI8MDNgIGNvbnRhaW5zIGZvdXIgYnl0ZXMgd2l0aCBgbGltaXQ9MCwgbWFya2VkT2Zmc2V0PTEsIG9mZnNldD0zYFxuICAgICAgICAgKiBAZXhhbXBsZSBgMDBbMDEgMDIgMDM+YCBjb250YWlucyBmb3VyIGJ5dGVzIHdpdGggYG9mZnNldD1tYXJrZWRPZmZzZXQ9MSwgbGltaXQ9NGBcbiAgICAgICAgICogQGV4YW1wbGUgYDAwfDAxIDAyIDAzYCBjb250YWlucyBmb3VyIGJ5dGVzIHdpdGggYG9mZnNldD1saW1pdD0xLCBtYXJrZWRPZmZzZXQ9LTFgXG4gICAgICAgICAqIEBleGFtcGxlIGB8YCBjb250YWlucyB6ZXJvIGJ5dGVzIHdpdGggYG9mZnNldD1saW1pdD0wLCBtYXJrZWRPZmZzZXQ9LTFgXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnRvRGVidWcgPSBmdW5jdGlvbihjb2x1bW5zKSB7XG4gICAgICAgICAgICB2YXIgaSA9IC0xLFxuICAgICAgICAgICAgICAgIGsgPSB0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoLFxuICAgICAgICAgICAgICAgIGIsXG4gICAgICAgICAgICAgICAgaGV4ID0gXCJcIixcbiAgICAgICAgICAgICAgICBhc2MgPSBcIlwiLFxuICAgICAgICAgICAgICAgIG91dCA9IFwiXCI7XG4gICAgICAgICAgICB3aGlsZSAoaTxrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLnZpZXcuZ2V0VWludDgoaSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiIDwgMHgxMCkgaGV4ICs9IFwiMFwiK2IudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaGV4ICs9IGIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2x1bW5zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhc2MgKz0gYiA+IDMyICYmIGIgPCAxMjcgPyBTdHJpbmcuZnJvbUNoYXJDb2RlKGIpIDogJy4nO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICsraTtcbiAgICAgICAgICAgICAgICBpZiAoY29sdW1ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgaSAlIDE2ID09PSAwICYmIGkgIT09IGspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChoZXgubGVuZ3RoIDwgMyoxNiszKSBoZXggKz0gXCIgXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXQgKz0gaGV4K2FzYytcIlxcblwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGV4ID0gYXNjID0gXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaSA9PT0gdGhpcy5vZmZzZXQgJiYgaSA9PT0gdGhpcy5saW1pdClcbiAgICAgICAgICAgICAgICAgICAgaGV4ICs9IGkgPT09IHRoaXMubWFya2VkT2Zmc2V0ID8gXCIhXCIgOiBcInxcIjtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09PSB0aGlzLm9mZnNldClcbiAgICAgICAgICAgICAgICAgICAgaGV4ICs9IGkgPT09IHRoaXMubWFya2VkT2Zmc2V0ID8gXCJbXCIgOiBcIjxcIjtcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09PSB0aGlzLmxpbWl0KVxuICAgICAgICAgICAgICAgICAgICBoZXggKz0gaSA9PT0gdGhpcy5tYXJrZWRPZmZzZXQgPyBcIl1cIiA6IFwiPlwiO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgaGV4ICs9IGkgPT09IHRoaXMubWFya2VkT2Zmc2V0ID8gXCInXCIgOiAoY29sdW1ucyB8fCAoaSAhPT0gMCAmJiBpICE9PSBrKSA/IFwiIFwiIDogXCJcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29sdW1ucyAmJiBoZXggIT09IFwiIFwiKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGhleC5sZW5ndGggPCAzKjE2KzMpIGhleCArPSBcIiBcIjtcbiAgICAgICAgICAgICAgICBvdXQgKz0gaGV4K2FzYytcIlxcblwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbnMgPyBvdXQgOiBoZXg7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlY29kZXMgYSBoZXggZW5jb2RlZCBzdHJpbmcgd2l0aCBtYXJrZWQgb2Zmc2V0cyB0byBhIEJ5dGVCdWZmZXIuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgRGVidWcgc3RyaW5nIHRvIGRlY29kZSAobm90IGJlIGdlbmVyYXRlZCB3aXRoIGBjb2x1bW5zID0gdHJ1ZWApXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IGxpdHRsZUVuZGlhbiBXaGV0aGVyIHRvIHVzZSBsaXR0bGUgb3IgYmlnIGVuZGlhbiBieXRlIG9yZGVyLiBEZWZhdWx0cyB0b1xuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIuREVGQVVMVF9FTkRJQU59LlxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub0Fzc2VydCBXaGV0aGVyIHRvIHNraXAgYXNzZXJ0aW9ucyBvZiBvZmZzZXRzIGFuZCB2YWx1ZXMuIERlZmF1bHRzIHRvXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX05PQVNTRVJUfS5cbiAgICAgICAgICogQHJldHVybnMgeyFCeXRlQnVmZmVyfSBCeXRlQnVmZmVyXG4gICAgICAgICAqIEBleHBvc2VcbiAgICAgICAgICogQHNlZSBCeXRlQnVmZmVyI3RvRGVidWdcbiAgICAgICAgICovXG4gICAgICAgIEJ5dGVCdWZmZXIuZnJvbURlYnVnID0gZnVuY3Rpb24oc3RyLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICB2YXIgayA9IHN0ci5sZW5ndGgsXG4gICAgICAgICAgICAgICAgYmIgPSBuZXcgQnl0ZUJ1ZmZlcigoKGsrMSkvMyl8MCwgbGl0dGxlRW5kaWFuLCBub0Fzc2VydCk7XG4gICAgICAgICAgICB2YXIgaSA9IDAsIGogPSAwLCBjaCwgYixcbiAgICAgICAgICAgICAgICBycyA9IGZhbHNlLCAvLyBSZXF1aXJlIHN5bWJvbCBuZXh0XG4gICAgICAgICAgICAgICAgaG8gPSBmYWxzZSwgaG0gPSBmYWxzZSwgaGwgPSBmYWxzZSwgLy8gQWxyZWFkeSBoYXMgb2Zmc2V0LCBtYXJrZWRPZmZzZXQsIGxpbWl0P1xuICAgICAgICAgICAgICAgIGZhaWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHdoaWxlIChpPGspIHtcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKGNoID0gc3RyLmNoYXJBdChpKyspKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJyEnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChobyB8fCBobSB8fCBobCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvID0gaG0gPSBobCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5vZmZzZXQgPSBiYi5tYXJrZWRPZmZzZXQgPSBiYi5saW1pdCA9IGo7XG4gICAgICAgICAgICAgICAgICAgICAgICBycyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ3wnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChobyB8fCBobCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvID0gaGwgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYmIub2Zmc2V0ID0gYmIubGltaXQgPSBqO1xuICAgICAgICAgICAgICAgICAgICAgICAgcnMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaG8gfHwgaG0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCA9IHRydWU7IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobyA9IGhtID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJiLm9mZnNldCA9IGJiLm1hcmtlZE9mZnNldCA9IGo7XG4gICAgICAgICAgICAgICAgICAgICAgICBycyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJzwnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChobykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJiLm9mZnNldCA9IGo7XG4gICAgICAgICAgICAgICAgICAgICAgICBycyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ10nOlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChobCB8fCBobSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsID0gaG0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYmIubGltaXQgPSBiYi5tYXJrZWRPZmZzZXQgPSBqO1xuICAgICAgICAgICAgICAgICAgICAgICAgcnMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBjYXNlICc+JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCA9IHRydWU7IGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBobCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5saW1pdCA9IGo7XG4gICAgICAgICAgICAgICAgICAgICAgICBycyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgXCInXCI6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOyBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG0gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgYmIubWFya2VkT2Zmc2V0ID0gajtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgY2FzZSAnICc6XG4gICAgICAgICAgICAgICAgICAgICAgICBycyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOyBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBiID0gcGFyc2VJbnQoY2grc3RyLmNoYXJBdChpKyspLCAxNik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKGIpIHx8IGIgPCAwIHx8IGIgPiAyNTUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgc3RyOiBOb3QgYSBkZWJ1ZyBlbmNvZGVkIHN0cmluZ1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGJiLnZpZXcuc2V0VWludDgoaisrLCBiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGZhaWwpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFR5cGVFcnJvcihcIklsbGVnYWwgc3RyOiBJbnZhbGlkIHN5bWJvbCBhdCBcIitpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbm9Bc3NlcnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWhvIHx8ICFobClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IE1pc3Npbmcgb2Zmc2V0IG9yIGxpbWl0XCIpO1xuICAgICAgICAgICAgICAgIGlmIChqPGJiLmJ1ZmZlci5ieXRlTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHN0cjogTm90IGEgZGVidWcgZW5jb2RlZCBzdHJpbmcgKGlzIGl0IGhleD8pIFwiK2orXCIgPCBcIitrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBiYjtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBlbmNvZGluZ3MvaGV4XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIEVuY29kZXMgdGhpcyBCeXRlQnVmZmVyJ3MgY29udGVudHMgdG8gYSBoZXggZW5jb2RlZCBzdHJpbmcuXG4gICAgICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gYmVnaW4gT2Zmc2V0IHRvIGJlZ2luIGF0LiBEZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNvZmZzZXR9LlxuICAgICAgICAgKiBAcGFyYW0ge251bWJlcj19IGVuZCBPZmZzZXQgdG8gZW5kIGF0LiBEZWZhdWx0cyB0byB7QGxpbmsgQnl0ZUJ1ZmZlciNsaW1pdH0uXG4gICAgICAgICAqIEByZXR1cm5zIHtzdHJpbmd9IEhleCBlbmNvZGVkIHN0cmluZ1xuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyUHJvdG90eXBlLnRvSGV4ID0gZnVuY3Rpb24oYmVnaW4sIGVuZCkge1xuICAgICAgICAgICAgYmVnaW4gPSB0eXBlb2YgYmVnaW4gPT09ICd1bmRlZmluZWQnID8gdGhpcy5vZmZzZXQgOiBiZWdpbjtcbiAgICAgICAgICAgIGVuZCA9IHR5cGVvZiBlbmQgPT09ICd1bmRlZmluZWQnID8gdGhpcy5saW1pdCA6IGVuZDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gIT09ICdudW1iZXInIHx8IGJlZ2luICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBiZWdpbjogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgYmVnaW4gPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCBlbmQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGVuZDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgZW5kID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPCAwIHx8IGJlZ2luID4gZW5kIHx8IGVuZCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiAwIDw9IFwiK2JlZ2luK1wiIDw9IFwiK2VuZCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBvdXQgPSBuZXcgQXJyYXkoZW5kIC0gYmVnaW4pLFxuICAgICAgICAgICAgICAgIGI7XG4gICAgICAgICAgICB3aGlsZSAoYmVnaW4gPCBlbmQpIHtcbiAgICAgICAgICAgICAgICBiID0gdGhpcy52aWV3LmdldFVpbnQ4KGJlZ2luKyspO1xuICAgICAgICAgICAgICAgIGlmIChiIDwgMHgxMClcbiAgICAgICAgICAgICAgICAgICAgb3V0LnB1c2goXCIwXCIsIGIudG9TdHJpbmcoMTYpKTtcbiAgICAgICAgICAgICAgICBlbHNlIG91dC5wdXNoKGIudG9TdHJpbmcoMTYpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvdXQuam9pbignJyk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlY29kZXMgYSBoZXggZW5jb2RlZCBzdHJpbmcgdG8gYSBCeXRlQnVmZmVyLlxuICAgICAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFN0cmluZyB0byBkZWNvZGVcbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbGl0dGxlRW5kaWFuIFdoZXRoZXIgdG8gdXNlIGxpdHRsZSBvciBiaWcgZW5kaWFuIGJ5dGUgb3JkZXIuIERlZmF1bHRzIHRvXG4gICAgICAgICAqICB7QGxpbmsgQnl0ZUJ1ZmZlci5ERUZBVUxUX0VORElBTn0uXG4gICAgICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IG5vQXNzZXJ0IFdoZXRoZXIgdG8gc2tpcCBhc3NlcnRpb25zIG9mIG9mZnNldHMgYW5kIHZhbHVlcy4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLkRFRkFVTFRfTk9BU1NFUlR9LlxuICAgICAgICAgKiBAcmV0dXJucyB7IUJ5dGVCdWZmZXJ9IEJ5dGVCdWZmZXJcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlci5mcm9tSGV4ID0gZnVuY3Rpb24oc3RyLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdHIgIT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIHN0cjogTm90IGEgc3RyaW5nXCIpO1xuICAgICAgICAgICAgICAgIGlmIChzdHIubGVuZ3RoICUgMiAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IExlbmd0aCBub3QgYSBtdWx0aXBsZSBvZiAyXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGsgPSBzdHIubGVuZ3RoLFxuICAgICAgICAgICAgICAgIGJiID0gbmV3IEJ5dGVCdWZmZXIoKGsgLyAyKSB8IDAsIGxpdHRsZUVuZGlhbiksXG4gICAgICAgICAgICAgICAgYjtcbiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgaj0wOyBpPGs7IGkrPTIpIHtcbiAgICAgICAgICAgICAgICBiID0gcGFyc2VJbnQoc3RyLnN1YnN0cmluZyhpLCBpKzIpLCAxNik7XG4gICAgICAgICAgICAgICAgaWYgKCFub0Fzc2VydClcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0Zpbml0ZShiKSB8fCBiIDwgMCB8fCBiID4gMjU1KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IENvbnRhaW5zIG5vbi1oZXggY2hhcmFjdGVyc1wiKTtcbiAgICAgICAgICAgICAgICBiYi52aWV3LnNldFVpbnQ4KGorKywgYik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBiYi5saW1pdCA9IGo7XG4gICAgICAgICAgICByZXR1cm4gYmI7XG4gICAgICAgIH07XG5cbiAgICAgICAgLy8gdXRmeC1lbWJlZGRhYmxlXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIHV0ZngtZW1iZWRkYWJsZSAoYykgMjAxNCBEYW5pZWwgV2lydHogPGRjb2RlQGRjb2RlLmlvPlxuICAgICAgICAgKiBSZWxlYXNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wXG4gICAgICAgICAqIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Rjb2RlSU8vdXRmeCBmb3IgZGV0YWlsc1xuICAgICAgICAgKi9cbiAgICAgICAgdmFyIHV0ZnggPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIFwidXNlIHN0cmljdFwiO1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIHV0ZnggbmFtZXNwYWNlLlxuICAgICAgICAgICAgICogQGlubmVyXG4gICAgICAgICAgICAgKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCo+fVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB2YXIgdXRmeCA9IHt9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIE1heGltdW0gdmFsaWQgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAqIEB0eXBlIHtudW1iZXJ9XG4gICAgICAgICAgICAgKiBAY29uc3RcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdXRmeC5NQVhfQ09ERVBPSU5UID0gMHgxMEZGRkY7XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRW5jb2RlcyBVVEY4IGNvZGUgcG9pbnRzIHRvIFVURjggYnl0ZXMuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyghZnVuY3Rpb24oKTpudW1iZXJ8bnVsbCkgfCBudW1iZXJ9IHNyYyBDb2RlIHBvaW50cyBzb3VyY2UsIGVpdGhlciBhcyBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbmV4dCBjb2RlIHBvaW50XG4gICAgICAgICAgICAgKiAgcmVzcGVjdGl2ZWx5IGBudWxsYCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBjb2RlIHBvaW50cyBsZWZ0IG9yIGEgc2luZ2xlIG51bWVyaWMgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7IWZ1bmN0aW9uKG51bWJlcil9IGRzdCBCeXRlcyBkZXN0aW5hdGlvbiBhcyBhIGZ1bmN0aW9uIHN1Y2Nlc3NpdmVseSBjYWxsZWQgd2l0aCB0aGUgbmV4dCBieXRlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHV0ZnguZW5jb2RlVVRGOCA9IGZ1bmN0aW9uKHNyYywgZHN0KSB7XG4gICAgICAgICAgICAgICAgdmFyIGNwID0gbnVsbDtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHNyYyA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICAgICAgICAgIGNwID0gc3JjLFxuICAgICAgICAgICAgICAgICAgICBzcmMgPSBmdW5jdGlvbigpIHsgcmV0dXJuIG51bGw7IH07XG4gICAgICAgICAgICAgICAgd2hpbGUgKGNwICE9PSBudWxsIHx8IChjcCA9IHNyYygpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoY3AgPCAweDgwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KGNwJjB4N0YpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjcCA8IDB4ODAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KCgoY3A+PjYpJjB4MUYpfDB4QzApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KChjcCYweDNGKXwweDgwKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3AgPCAweDEwMDAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KCgoY3A+PjEyKSYweDBGKXwweEUwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdCgoKGNwPj42KSYweDNGKXwweDgwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdCgoY3AmMHgzRil8MHg4MCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdCgoKGNwPj4xOCkmMHgwNyl8MHhGMCksXG4gICAgICAgICAgICAgICAgICAgICAgICBkc3QoKChjcD4+MTIpJjB4M0YpfDB4ODApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KCgoY3A+PjYpJjB4M0YpfDB4ODApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KChjcCYweDNGKXwweDgwKTtcbiAgICAgICAgICAgICAgICAgICAgY3AgPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogRGVjb2RlcyBVVEY4IGJ5dGVzIHRvIFVURjggY29kZSBwb2ludHMuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbigpOm51bWJlcnxudWxsfSBzcmMgQnl0ZXMgc291cmNlIGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBuZXh0IGJ5dGUgcmVzcGVjdGl2ZWx5IGBudWxsYCBpZiB0aGVyZVxuICAgICAgICAgICAgICogIGFyZSBubyBtb3JlIGJ5dGVzIGxlZnQuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbihudW1iZXIpfSBkc3QgQ29kZSBwb2ludHMgZGVzdGluYXRpb24gYXMgYSBmdW5jdGlvbiBzdWNjZXNzaXZlbHkgY2FsbGVkIHdpdGggZWFjaCBkZWNvZGVkIGNvZGUgcG9pbnQuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBJZiBhIHN0YXJ0aW5nIGJ5dGUgaXMgaW52YWxpZCBpbiBVVEY4XG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGxhc3Qgc2VxdWVuY2UgaXMgdHJ1bmNhdGVkLiBIYXMgYW4gYXJyYXkgcHJvcGVydHkgYGJ5dGVzYCBob2xkaW5nIHRoZVxuICAgICAgICAgICAgICogIHJlbWFpbmluZyBieXRlcy5cbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgdXRmeC5kZWNvZGVVVEY4ID0gZnVuY3Rpb24oc3JjLCBkc3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgYSwgYiwgYywgZCwgZmFpbCA9IGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICAgICAgICAgICAgYiA9IGIuc2xpY2UoMCwgYi5pbmRleE9mKG51bGwpKTtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKGIudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgIGVyci5uYW1lID0gXCJUcnVuY2F0ZWRFcnJvclwiO1xuICAgICAgICAgICAgICAgICAgICBlcnJbJ2J5dGVzJ10gPSBiO1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGEgPSBzcmMoKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKChhJjB4ODApID09PSAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KGEpO1xuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgoYSYweEUwKSA9PT0gMHhDMClcbiAgICAgICAgICAgICAgICAgICAgICAgICgoYiA9IHNyYygpKSA9PT0gbnVsbCkgJiYgZmFpbChbYSwgYl0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgZHN0KCgoYSYweDFGKTw8NikgfCAoYiYweDNGKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChhJjB4RjApID09PSAweEUwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChiPXNyYygpKSA9PT0gbnVsbCB8fCAoYz1zcmMoKSkgPT09IG51bGwpICYmIGZhaWwoW2EsIGIsIGNdKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdCgoKGEmMHgwRik8PDEyKSB8ICgoYiYweDNGKTw8NikgfCAoYyYweDNGKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKChhJjB4RjgpID09PSAweEYwKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChiPXNyYygpKSA9PT0gbnVsbCB8fCAoYz1zcmMoKSkgPT09IG51bGwgfHwgKGQ9c3JjKCkpID09PSBudWxsKSAmJiBmYWlsKFthLCBiLCBjICxkXSksXG4gICAgICAgICAgICAgICAgICAgICAgICBkc3QoKChhJjB4MDcpPDwxOCkgfCAoKGImMHgzRik8PDEyKSB8ICgoYyYweDNGKTw8NikgfCAoZCYweDNGKSk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgc3RhcnRpbmcgYnl0ZTogXCIrYSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBDb252ZXJ0cyBVVEYxNiBjaGFyYWN0ZXJzIHRvIFVURjggY29kZSBwb2ludHMuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbigpOm51bWJlcnxudWxsfSBzcmMgQ2hhcmFjdGVycyBzb3VyY2UgYXMgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG5leHQgY2hhciBjb2RlIHJlc3BlY3RpdmVseVxuICAgICAgICAgICAgICogIGBudWxsYCBpZiB0aGVyZSBhcmUgbm8gbW9yZSBjaGFyYWN0ZXJzIGxlZnQuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbihudW1iZXIpfSBkc3QgQ29kZSBwb2ludHMgZGVzdGluYXRpb24gYXMgYSBmdW5jdGlvbiBzdWNjZXNzaXZlbHkgY2FsbGVkIHdpdGggZWFjaCBjb252ZXJ0ZWQgY29kZVxuICAgICAgICAgICAgICogIHBvaW50LlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1dGZ4LlVURjE2dG9VVEY4ID0gZnVuY3Rpb24oc3JjLCBkc3QpIHtcbiAgICAgICAgICAgICAgICB2YXIgYzEsIGMyID0gbnVsbDtcbiAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGMxID0gYzIgIT09IG51bGwgPyBjMiA6IHNyYygpKSA9PT0gbnVsbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYzEgPj0gMHhEODAwICYmIGMxIDw9IDB4REZGRikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjMiA9IHNyYygpKSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjMiA+PSAweERDMDAgJiYgYzIgPD0gMHhERkZGKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdCgoYzEtMHhEODAwKSoweDQwMCtjMi0weERDMDArMHgxMDAwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMyID0gbnVsbDsgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGRzdChjMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChjMiAhPT0gbnVsbCkgZHN0KGMyKTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ29udmVydHMgVVRGOCBjb2RlIHBvaW50cyB0byBVVEYxNiBjaGFyYWN0ZXJzLlxuICAgICAgICAgICAgICogQHBhcmFtIHsoIWZ1bmN0aW9uKCk6bnVtYmVyfG51bGwpIHwgbnVtYmVyfSBzcmMgQ29kZSBwb2ludHMgc291cmNlLCBlaXRoZXIgYXMgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG5leHQgY29kZSBwb2ludFxuICAgICAgICAgICAgICogIHJlc3BlY3RpdmVseSBgbnVsbGAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgY29kZSBwb2ludHMgbGVmdCBvciBhIHNpbmdsZSBudW1lcmljIGNvZGUgcG9pbnQuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbihudW1iZXIpfSBkc3QgQ2hhcmFjdGVycyBkZXN0aW5hdGlvbiBhcyBhIGZ1bmN0aW9uIHN1Y2Nlc3NpdmVseSBjYWxsZWQgd2l0aCBlYWNoIGNvbnZlcnRlZCBjaGFyIGNvZGUuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBJZiBhIGNvZGUgcG9pbnQgaXMgb3V0IG9mIHJhbmdlXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHV0ZnguVVRGOHRvVVRGMTYgPSBmdW5jdGlvbihzcmMsIGRzdCkge1xuICAgICAgICAgICAgICAgIHZhciBjcCA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzcmMgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgICAgICBjcCA9IHNyYywgc3JjID0gZnVuY3Rpb24oKSB7IHJldHVybiBudWxsOyB9O1xuICAgICAgICAgICAgICAgIHdoaWxlIChjcCAhPT0gbnVsbCB8fCAoY3AgPSBzcmMoKSkgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNwIDw9IDB4RkZGRilcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdChjcCk7XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGNwIC09IDB4MTAwMDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBkc3QoKGNwPj4xMCkrMHhEODAwKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzdCgoY3AlMHg0MDApKzB4REMwMCk7XG4gICAgICAgICAgICAgICAgICAgIGNwID0gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENvbnZlcnRzIGFuZCBlbmNvZGVzIFVURjE2IGNoYXJhY3RlcnMgdG8gVVRGOCBieXRlcy5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7IWZ1bmN0aW9uKCk6bnVtYmVyfG51bGx9IHNyYyBDaGFyYWN0ZXJzIHNvdXJjZSBhcyBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbmV4dCBjaGFyIGNvZGUgcmVzcGVjdGl2ZWx5IGBudWxsYFxuICAgICAgICAgICAgICogIGlmIHRoZXJlIGFyZSBubyBtb3JlIGNoYXJhY3RlcnMgbGVmdC5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7IWZ1bmN0aW9uKG51bWJlcil9IGRzdCBCeXRlcyBkZXN0aW5hdGlvbiBhcyBhIGZ1bmN0aW9uIHN1Y2Nlc3NpdmVseSBjYWxsZWQgd2l0aCB0aGUgbmV4dCBieXRlLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1dGZ4LmVuY29kZVVURjE2dG9VVEY4ID0gZnVuY3Rpb24oc3JjLCBkc3QpIHtcbiAgICAgICAgICAgICAgICB1dGZ4LlVURjE2dG9VVEY4KHNyYywgZnVuY3Rpb24oY3ApIHtcbiAgICAgICAgICAgICAgICAgICAgdXRmeC5lbmNvZGVVVEY4KGNwLCBkc3QpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBEZWNvZGVzIGFuZCBjb252ZXJ0cyBVVEY4IGJ5dGVzIHRvIFVURjE2IGNoYXJhY3RlcnMuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbigpOm51bWJlcnxudWxsfSBzcmMgQnl0ZXMgc291cmNlIGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBuZXh0IGJ5dGUgcmVzcGVjdGl2ZWx5IGBudWxsYCBpZiB0aGVyZVxuICAgICAgICAgICAgICogIGFyZSBubyBtb3JlIGJ5dGVzIGxlZnQuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyFmdW5jdGlvbihudW1iZXIpfSBkc3QgQ2hhcmFjdGVycyBkZXN0aW5hdGlvbiBhcyBhIGZ1bmN0aW9uIHN1Y2Nlc3NpdmVseSBjYWxsZWQgd2l0aCBlYWNoIGNvbnZlcnRlZCBjaGFyIGNvZGUuXG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtSYW5nZUVycm9yfSBJZiBhIHN0YXJ0aW5nIGJ5dGUgaXMgaW52YWxpZCBpbiBVVEY4XG4gICAgICAgICAgICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGxhc3Qgc2VxdWVuY2UgaXMgdHJ1bmNhdGVkLiBIYXMgYW4gYXJyYXkgcHJvcGVydHkgYGJ5dGVzYCBob2xkaW5nIHRoZSByZW1haW5pbmcgYnl0ZXMuXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHV0ZnguZGVjb2RlVVRGOHRvVVRGMTYgPSBmdW5jdGlvbihzcmMsIGRzdCkge1xuICAgICAgICAgICAgICAgIHV0ZnguZGVjb2RlVVRGOChzcmMsIGZ1bmN0aW9uKGNwKSB7XG4gICAgICAgICAgICAgICAgICAgIHV0ZnguVVRGOHRvVVRGMTYoY3AsIGRzdCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhbGN1bGF0ZXMgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFuIFVURjggY29kZSBwb2ludC5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7bnVtYmVyfSBjcCBVVEY4IGNvZGUgcG9pbnRcbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IEJ5dGUgbGVuZ3RoXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIHV0ZnguY2FsY3VsYXRlQ29kZVBvaW50ID0gZnVuY3Rpb24oY3ApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKGNwIDwgMHg4MCkgPyAxIDogKGNwIDwgMHg4MDApID8gMiA6IChjcCA8IDB4MTAwMDApID8gMyA6IDQ7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAqIENhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiBVVEY4IGJ5dGVzIHJlcXVpcmVkIHRvIHN0b3JlIFVURjggY29kZSBwb2ludHMuXG4gICAgICAgICAgICAgKiBAcGFyYW0geyghZnVuY3Rpb24oKTpudW1iZXJ8bnVsbCl9IHNyYyBDb2RlIHBvaW50cyBzb3VyY2UgYXMgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG5leHQgY29kZSBwb2ludCByZXNwZWN0aXZlbHlcbiAgICAgICAgICAgICAqICBgbnVsbGAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgY29kZSBwb2ludHMgbGVmdC5cbiAgICAgICAgICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgVVRGOCBieXRlcyByZXF1aXJlZFxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1dGZ4LmNhbGN1bGF0ZVVURjggPSBmdW5jdGlvbihzcmMpIHtcbiAgICAgICAgICAgICAgICB2YXIgY3AsIGw9MDtcbiAgICAgICAgICAgICAgICB3aGlsZSAoKGNwID0gc3JjKCkpICE9PSBudWxsKVxuICAgICAgICAgICAgICAgICAgICBsICs9IHV0ZnguY2FsY3VsYXRlQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogQ2FsY3VsYXRlcyB0aGUgbnVtYmVyIG9mIFVURjggY29kZSBwb2ludHMgcmVzcGVjdGl2ZWx5IFVURjggYnl0ZXMgcmVxdWlyZWQgdG8gc3RvcmUgVVRGMTYgY2hhciBjb2Rlcy5cbiAgICAgICAgICAgICAqIEBwYXJhbSB7KCFmdW5jdGlvbigpOm51bWJlcnxudWxsKX0gc3JjIENoYXJhY3RlcnMgc291cmNlIGFzIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBuZXh0IGNoYXIgY29kZSByZXNwZWN0aXZlbHlcbiAgICAgICAgICAgICAqICBgbnVsbGAgaWYgdGhlcmUgYXJlIG5vIG1vcmUgY2hhcmFjdGVycyBsZWZ0LlxuICAgICAgICAgICAgICogQHJldHVybnMgeyFBcnJheS48bnVtYmVyPn0gVGhlIG51bWJlciBvZiBVVEY4IGNvZGUgcG9pbnRzIGF0IGluZGV4IDAgYW5kIHRoZSBudW1iZXIgb2YgVVRGOCBieXRlcyByZXF1aXJlZCBhdCBpbmRleCAxLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICB1dGZ4LmNhbGN1bGF0ZVVURjE2YXNVVEY4ID0gZnVuY3Rpb24oc3JjKSB7XG4gICAgICAgICAgICAgICAgdmFyIG49MCwgbD0wO1xuICAgICAgICAgICAgICAgIHV0ZnguVVRGMTZ0b1VURjgoc3JjLCBmdW5jdGlvbihjcCkge1xuICAgICAgICAgICAgICAgICAgICArK247IGwgKz0gdXRmeC5jYWxjdWxhdGVDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbbixsXTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHJldHVybiB1dGZ4O1xuICAgICAgICB9KCk7XG5cbiAgICAgICAgLy8gZW5jb2RpbmdzL3V0ZjhcblxuICAgICAgICAvKipcbiAgICAgICAgICogRW5jb2RlcyB0aGlzIEJ5dGVCdWZmZXIncyBjb250ZW50cyBiZXR3ZWVuIHtAbGluayBCeXRlQnVmZmVyI29mZnNldH0gYW5kIHtAbGluayBCeXRlQnVmZmVyI2xpbWl0fSB0byBhbiBVVEY4IGVuY29kZWRcbiAgICAgICAgICogIHN0cmluZy5cbiAgICAgICAgICogQHJldHVybnMge3N0cmluZ30gSGV4IGVuY29kZWQgc3RyaW5nXG4gICAgICAgICAqIEB0aHJvd3Mge1JhbmdlRXJyb3J9IElmIGBvZmZzZXQgPiBsaW1pdGBcbiAgICAgICAgICogQGV4cG9zZVxuICAgICAgICAgKi9cbiAgICAgICAgQnl0ZUJ1ZmZlclByb3RvdHlwZS50b1VURjggPSBmdW5jdGlvbihiZWdpbiwgZW5kKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGJlZ2luID09PSAndW5kZWZpbmVkJykgYmVnaW4gPSB0aGlzLm9mZnNldDtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kID09PSAndW5kZWZpbmVkJykgZW5kID0gdGhpcy5saW1pdDtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub0Fzc2VydCkge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYmVnaW4gIT09ICdudW1iZXInIHx8IGJlZ2luICUgMSAhPT0gMClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBiZWdpbjogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgYmVnaW4gPj4+PSAwO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZW5kICE9PSAnbnVtYmVyJyB8fCBlbmQgJSAxICE9PSAwKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBUeXBlRXJyb3IoXCJJbGxlZ2FsIGVuZDogTm90IGFuIGludGVnZXJcIik7XG4gICAgICAgICAgICAgICAgZW5kID4+Pj0gMDtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPCAwIHx8IGJlZ2luID4gZW5kIHx8IGVuZCA+IHRoaXMuYnVmZmVyLmJ5dGVMZW5ndGgpXG4gICAgICAgICAgICAgICAgICAgIHRocm93IFJhbmdlRXJyb3IoXCJJbGxlZ2FsIHJhbmdlOiAwIDw9IFwiK2JlZ2luK1wiIDw9IFwiK2VuZCtcIiA8PSBcIit0aGlzLmJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBzZDsgdHJ5IHtcbiAgICAgICAgICAgICAgICB1dGZ4LmRlY29kZVVURjh0b1VURjE2KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYmVnaW4gPCBlbmQgPyB0aGlzLnZpZXcuZ2V0VWludDgoYmVnaW4rKykgOiBudWxsO1xuICAgICAgICAgICAgICAgIH0uYmluZCh0aGlzKSwgc2QgPSBzdHJpbmdEZXN0aW5hdGlvbigpKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoYmVnaW4gIT09IGVuZClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgUmFuZ2VFcnJvcihcIklsbGVnYWwgcmFuZ2U6IFRydW5jYXRlZCBkYXRhLCBcIitiZWdpbitcIiAhPSBcIitlbmQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHNkKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlY29kZXMgYW4gVVRGOCBlbmNvZGVkIHN0cmluZyB0byBhIEJ5dGVCdWZmZXIuXG4gICAgICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgU3RyaW5nIHRvIGRlY29kZVxuICAgICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBsaXR0bGVFbmRpYW4gV2hldGhlciB0byB1c2UgbGl0dGxlIG9yIGJpZyBlbmRpYW4gYnl0ZSBvcmRlci4gRGVmYXVsdHMgdG9cbiAgICAgICAgICogIHtAbGluayBCeXRlQnVmZmVyLkRFRkFVTFRfRU5ESUFOfS5cbiAgICAgICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9Bc3NlcnQgV2hldGhlciB0byBza2lwIGFzc2VydGlvbnMgb2Ygb2Zmc2V0cyBhbmQgdmFsdWVzLiBEZWZhdWx0cyB0b1xuICAgICAgICAgKiAge0BsaW5rIEJ5dGVCdWZmZXIuREVGQVVMVF9OT0FTU0VSVH0uXG4gICAgICAgICAqIEByZXR1cm5zIHshQnl0ZUJ1ZmZlcn0gQnl0ZUJ1ZmZlclxuICAgICAgICAgKiBAZXhwb3NlXG4gICAgICAgICAqL1xuICAgICAgICBCeXRlQnVmZmVyLmZyb21VVEY4ID0gZnVuY3Rpb24oc3RyLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSB7XG4gICAgICAgICAgICBpZiAoIW5vQXNzZXJ0KVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc3RyICE9PSAnc3RyaW5nJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgVHlwZUVycm9yKFwiSWxsZWdhbCBzdHI6IE5vdCBhIHN0cmluZ1wiKTtcbiAgICAgICAgICAgIHZhciBiYiA9IG5ldyBCeXRlQnVmZmVyKHV0ZnguY2FsY3VsYXRlVVRGMTZhc1VURjgoc3RyaW5nU291cmNlKHN0ciksIHRydWUpWzFdLCBsaXR0bGVFbmRpYW4sIG5vQXNzZXJ0KSxcbiAgICAgICAgICAgICAgICBpID0gMDtcbiAgICAgICAgICAgIHV0ZnguZW5jb2RlVVRGMTZ0b1VURjgoc3RyaW5nU291cmNlKHN0ciksIGZ1bmN0aW9uKGIpIHtcbiAgICAgICAgICAgICAgICBiYi52aWV3LnNldFVpbnQ4KGkrKywgYik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJiLmxpbWl0ID0gaTtcbiAgICAgICAgICAgIHJldHVybiBiYjtcbiAgICAgICAgfTtcblxuXG4gICAgICAgIHJldHVybiBCeXRlQnVmZmVyO1xuICAgIH1cblxuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHZhciBMb25nOyB0cnkgeyBMb25nID0gcmVxdWlyZShcImxvbmdcIik7IH0gY2F0Y2ggKGUpIHt9XG4gICAgICAgICAgICByZXR1cm4gbG9hZEJ5dGVCdWZmZXIoTG9uZyk7XG4gICAgICAgIH0pKCk7XG5cbn0pKHRoaXMpO1xuIiwiLypcclxuIENvcHlyaWdodCAyMDEzIERhbmllbCBXaXJ0eiA8ZGNvZGVAZGNvZGUuaW8+XHJcbiBDb3B5cmlnaHQgMjAwOSBUaGUgQ2xvc3VyZSBMaWJyYXJ5IEF1dGhvcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcblxyXG4gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxyXG5cclxuIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG5cclxuIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMtSVNcIiBCQVNJUyxcclxuIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxyXG4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBsaWNlbnNlIExvbmcuanMgKGMpIDIwMTMgRGFuaWVsIFdpcnR6IDxkY29kZUBkY29kZS5pbz5cclxuICogUmVsZWFzZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMFxyXG4gKiBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL0xvbmcuanMgZm9yIGRldGFpbHNcclxuICovXHJcbihmdW5jdGlvbihnbG9iYWwsIGZhY3RvcnkpIHtcclxuXHJcbiAgICAvKiBBTUQgKi8gaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lW1wiYW1kXCJdKVxyXG4gICAgICAgIGRlZmluZShbXSwgZmFjdG9yeSk7XHJcbiAgICAvKiBDb21tb25KUyAqLyBlbHNlIGlmICh0eXBlb2YgcmVxdWlyZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiICYmIG1vZHVsZSAmJiBtb2R1bGVbXCJleHBvcnRzXCJdKVxyXG4gICAgICAgIG1vZHVsZVtcImV4cG9ydHNcIl0gPSBmYWN0b3J5KCk7XHJcbiAgICAvKiBHbG9iYWwgKi8gZWxzZVxyXG4gICAgICAgIChnbG9iYWxbXCJkY29kZUlPXCJdID0gZ2xvYmFsW1wiZGNvZGVJT1wiXSB8fCB7fSlbXCJMb25nXCJdID0gZmFjdG9yeSgpO1xyXG5cclxufSkodGhpcywgZnVuY3Rpb24oKSB7XHJcbiAgICBcInVzZSBzdHJpY3RcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdHMgYSA2NCBiaXQgdHdvJ3MtY29tcGxlbWVudCBpbnRlZ2VyLCBnaXZlbiBpdHMgbG93IGFuZCBoaWdoIDMyIGJpdCB2YWx1ZXMgYXMgKnNpZ25lZCogaW50ZWdlcnMuXHJcbiAgICAgKiAgU2VlIHRoZSBmcm9tKiBmdW5jdGlvbnMgYmVsb3cgZm9yIG1vcmUgY29udmVuaWVudCB3YXlzIG9mIGNvbnN0cnVjdGluZyBMb25ncy5cclxuICAgICAqIEBleHBvcnRzIExvbmdcclxuICAgICAqIEBjbGFzcyBBIExvbmcgY2xhc3MgZm9yIHJlcHJlc2VudGluZyBhIDY0IGJpdCB0d28ncy1jb21wbGVtZW50IGludGVnZXIgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gbG93IFRoZSBsb3cgKHNpZ25lZCkgMzIgYml0cyBvZiB0aGUgbG9uZ1xyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGhpZ2ggVGhlIGhpZ2ggKHNpZ25lZCkgMzIgYml0cyBvZiB0aGUgbG9uZ1xyXG4gICAgICogQHBhcmFtIHtib29sZWFuPX0gdW5zaWduZWQgV2hldGhlciB1bnNpZ25lZCBvciBub3QsIGRlZmF1bHRzIHRvIGBmYWxzZWAgZm9yIHNpZ25lZFxyXG4gICAgICogQGNvbnN0cnVjdG9yXHJcbiAgICAgKi9cclxuICAgIGZ1bmN0aW9uIExvbmcobG93LCBoaWdoLCB1bnNpZ25lZCkge1xyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiBUaGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgdmFsdWUuXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKiBAZXhwb3NlXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgdGhpcy5sb3cgPSBsb3d8MDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICogVGhlIGhpZ2ggMzIgYml0cyBhcyBhIHNpZ25lZCB2YWx1ZS5cclxuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICAgICAqIEBleHBvc2VcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmhpZ2ggPSBoaWdofDA7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIFdoZXRoZXIgdW5zaWduZWQgb3Igbm90LlxyXG4gICAgICAgICAqIEB0eXBlIHtib29sZWFufVxyXG4gICAgICAgICAqIEBleHBvc2VcclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLnVuc2lnbmVkID0gISF1bnNpZ25lZDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUaGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSBsb25nIGlzIHRoZSB0d28gZ2l2ZW4gc2lnbmVkLCAzMi1iaXQgdmFsdWVzLlxyXG4gICAgLy8gV2UgdXNlIDMyLWJpdCBwaWVjZXMgYmVjYXVzZSB0aGVzZSBhcmUgdGhlIHNpemUgb2YgaW50ZWdlcnMgb24gd2hpY2hcclxuICAgIC8vIEphdmFzY3JpcHQgcGVyZm9ybXMgYml0LW9wZXJhdGlvbnMuICBGb3Igb3BlcmF0aW9ucyBsaWtlIGFkZGl0aW9uIGFuZFxyXG4gICAgLy8gbXVsdGlwbGljYXRpb24sIHdlIHNwbGl0IGVhY2ggbnVtYmVyIGludG8gMTYgYml0IHBpZWNlcywgd2hpY2ggY2FuIGVhc2lseSBiZVxyXG4gICAgLy8gbXVsdGlwbGllZCB3aXRoaW4gSmF2YXNjcmlwdCdzIGZsb2F0aW5nLXBvaW50IHJlcHJlc2VudGF0aW9uIHdpdGhvdXQgb3ZlcmZsb3dcclxuICAgIC8vIG9yIGNoYW5nZSBpbiBzaWduLlxyXG4gICAgLy9cclxuICAgIC8vIEluIHRoZSBhbGdvcml0aG1zIGJlbG93LCB3ZSBmcmVxdWVudGx5IHJlZHVjZSB0aGUgbmVnYXRpdmUgY2FzZSB0byB0aGVcclxuICAgIC8vIHBvc2l0aXZlIGNhc2UgYnkgbmVnYXRpbmcgdGhlIGlucHV0KHMpIGFuZCB0aGVuIHBvc3QtcHJvY2Vzc2luZyB0aGUgcmVzdWx0LlxyXG4gICAgLy8gTm90ZSB0aGF0IHdlIG11c3QgQUxXQVlTIGNoZWNrIHNwZWNpYWxseSB3aGV0aGVyIHRob3NlIHZhbHVlcyBhcmUgTUlOX1ZBTFVFXHJcbiAgICAvLyAoLTJeNjMpIGJlY2F1c2UgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUUgKHNpbmNlIDJeNjMgY2Fubm90IGJlIHJlcHJlc2VudGVkIGFzXHJcbiAgICAvLyBhIHBvc2l0aXZlIG51bWJlciwgaXQgb3ZlcmZsb3dzIGJhY2sgaW50byBhIG5lZ2F0aXZlKS4gIE5vdCBoYW5kbGluZyB0aGlzXHJcbiAgICAvLyBjYXNlIHdvdWxkIG9mdGVuIHJlc3VsdCBpbiBpbmZpbml0ZSByZWN1cnNpb24uXHJcbiAgICAvL1xyXG4gICAgLy8gQ29tbW9uIGNvbnN0YW50IHZhbHVlcyBaRVJPLCBPTkUsIE5FR19PTkUsIGV0Yy4gYXJlIGRlZmluZWQgYmVsb3cgdGhlIGZyb20qXHJcbiAgICAvLyBtZXRob2RzIG9uIHdoaWNoIHRoZXkgZGVwZW5kLlxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQW4gaW5kaWNhdG9yIHVzZWQgdG8gcmVsaWFibHkgZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBpcyBhIExvbmcgb3Igbm90LlxyXG4gICAgICogQHR5cGUge2Jvb2xlYW59XHJcbiAgICAgKiBAY29uc3RcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIExvbmcuX19pc0xvbmdfXztcclxuXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoTG9uZy5wcm90b3R5cGUsIFwiX19pc0xvbmdfX1wiLCB7XHJcbiAgICAgICAgdmFsdWU6IHRydWUsXHJcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZVxyXG4gICAgfSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXN0cyBpZiB0aGUgc3BlY2lmaWVkIG9iamVjdCBpcyBhIExvbmcuXHJcbiAgICAgKiBAcGFyYW0geyp9IG9iaiBPYmplY3RcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLmlzTG9uZyA9IGZ1bmN0aW9uIGlzTG9uZyhvYmopIHtcclxuICAgICAgICByZXR1cm4gKG9iaiAmJiBvYmpbXCJfX2lzTG9uZ19fXCJdKSA9PT0gdHJ1ZTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBIGNhY2hlIG9mIHRoZSBMb25nIHJlcHJlc2VudGF0aW9ucyBvZiBzbWFsbCBpbnRlZ2VyIHZhbHVlcy5cclxuICAgICAqIEB0eXBlIHshT2JqZWN0fVxyXG4gICAgICogQGlubmVyXHJcbiAgICAgKi9cclxuICAgIHZhciBJTlRfQ0FDSEUgPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgY2FjaGUgb2YgdGhlIExvbmcgcmVwcmVzZW50YXRpb25zIG9mIHNtYWxsIHVuc2lnbmVkIGludGVnZXIgdmFsdWVzLlxyXG4gICAgICogQHR5cGUgeyFPYmplY3R9XHJcbiAgICAgKiBAaW5uZXJcclxuICAgICAqL1xyXG4gICAgdmFyIFVJTlRfQ0FDSEUgPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYSBMb25nIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gMzIgYml0IGludGVnZXIgdmFsdWUuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgVGhlIDMyIGJpdCBpbnRlZ2VyIGluIHF1ZXN0aW9uXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSB1bnNpZ25lZCBXaGV0aGVyIHVuc2lnbmVkIG9yIG5vdCwgZGVmYXVsdHMgdG8gYGZhbHNlYCBmb3Igc2lnbmVkXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9IFRoZSBjb3JyZXNwb25kaW5nIExvbmcgdmFsdWVcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5mcm9tSW50ID0gZnVuY3Rpb24gZnJvbUludCh2YWx1ZSwgdW5zaWduZWQpIHtcclxuICAgICAgICB2YXIgb2JqLCBjYWNoZWRPYmo7XHJcbiAgICAgICAgaWYgKCF1bnNpZ25lZCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IHZhbHVlIHwgMDtcclxuICAgICAgICAgICAgaWYgKC0xMjggPD0gdmFsdWUgJiYgdmFsdWUgPCAxMjgpIHtcclxuICAgICAgICAgICAgICAgIGNhY2hlZE9iaiA9IElOVF9DQUNIRVt2YWx1ZV07XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FjaGVkT2JqKVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZWRPYmo7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb2JqID0gbmV3IExvbmcodmFsdWUsIHZhbHVlIDwgMCA/IC0xIDogMCwgZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAoLTEyOCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDEyOClcclxuICAgICAgICAgICAgICAgIElOVF9DQUNIRVt2YWx1ZV0gPSBvYmo7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSA+Pj4gMDtcclxuICAgICAgICAgICAgaWYgKDAgPD0gdmFsdWUgJiYgdmFsdWUgPCAyNTYpIHtcclxuICAgICAgICAgICAgICAgIGNhY2hlZE9iaiA9IFVJTlRfQ0FDSEVbdmFsdWVdO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhY2hlZE9iailcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FjaGVkT2JqO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9iaiA9IG5ldyBMb25nKHZhbHVlLCAodmFsdWUgfCAwKSA8IDAgPyAtMSA6IDAsIHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoMCA8PSB2YWx1ZSAmJiB2YWx1ZSA8IDI1NilcclxuICAgICAgICAgICAgICAgIFVJTlRfQ0FDSEVbdmFsdWVdID0gb2JqO1xyXG4gICAgICAgICAgICByZXR1cm4gb2JqO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgTG9uZyByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHZhbHVlLCBwcm92aWRlZCB0aGF0IGl0IGlzIGEgZmluaXRlIG51bWJlci4gT3RoZXJ3aXNlLCB6ZXJvIGlzIHJldHVybmVkLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHZhbHVlIFRoZSBudW1iZXIgaW4gcXVlc3Rpb25cclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbj19IHVuc2lnbmVkIFdoZXRoZXIgdW5zaWduZWQgb3Igbm90LCBkZWZhdWx0cyB0byBgZmFsc2VgIGZvciBzaWduZWRcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gVGhlIGNvcnJlc3BvbmRpbmcgTG9uZyB2YWx1ZVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLmZyb21OdW1iZXIgPSBmdW5jdGlvbiBmcm9tTnVtYmVyKHZhbHVlLCB1bnNpZ25lZCkge1xyXG4gICAgICAgIHVuc2lnbmVkID0gISF1bnNpZ25lZDtcclxuICAgICAgICBpZiAoaXNOYU4odmFsdWUpIHx8ICFpc0Zpbml0ZSh2YWx1ZSkpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLlpFUk87XHJcbiAgICAgICAgaWYgKCF1bnNpZ25lZCAmJiB2YWx1ZSA8PSAtVFdPX1BXUl82M19EQkwpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLk1JTl9WQUxVRTtcclxuICAgICAgICBpZiAoIXVuc2lnbmVkICYmIHZhbHVlICsgMSA+PSBUV09fUFdSXzYzX0RCTClcclxuICAgICAgICAgICAgcmV0dXJuIExvbmcuTUFYX1ZBTFVFO1xyXG4gICAgICAgIGlmICh1bnNpZ25lZCAmJiB2YWx1ZSA+PSBUV09fUFdSXzY0X0RCTClcclxuICAgICAgICAgICAgcmV0dXJuIExvbmcuTUFYX1VOU0lHTkVEX1ZBTFVFO1xyXG4gICAgICAgIGlmICh2YWx1ZSA8IDApXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLmZyb21OdW1iZXIoLXZhbHVlLCB1bnNpZ25lZCkubmVnYXRlKCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBMb25nKCh2YWx1ZSAlIFRXT19QV1JfMzJfREJMKSB8IDAsICh2YWx1ZSAvIFRXT19QV1JfMzJfREJMKSB8IDAsIHVuc2lnbmVkKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgTG9uZyByZXByZXNlbnRpbmcgdGhlIDY0IGJpdCBpbnRlZ2VyIHRoYXQgY29tZXMgYnkgY29uY2F0ZW5hdGluZyB0aGUgZ2l2ZW4gbG93IGFuZCBoaWdoIGJpdHMuIEVhY2ggaXNcclxuICAgICAqICBhc3N1bWVkIHRvIHVzZSAzMiBiaXRzLlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGxvd0JpdHMgVGhlIGxvdyAzMiBiaXRzXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaGlnaEJpdHMgVGhlIGhpZ2ggMzIgYml0c1xyXG4gICAgICogQHBhcmFtIHtib29sZWFuPX0gdW5zaWduZWQgV2hldGhlciB1bnNpZ25lZCBvciBub3QsIGRlZmF1bHRzIHRvIGBmYWxzZWAgZm9yIHNpZ25lZFxyXG4gICAgICogQHJldHVybnMgeyFMb25nfSBUaGUgY29ycmVzcG9uZGluZyBMb25nIHZhbHVlXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcuZnJvbUJpdHMgPSBmdW5jdGlvbiBmcm9tQml0cyhsb3dCaXRzLCBoaWdoQml0cywgdW5zaWduZWQpIHtcclxuICAgICAgICByZXR1cm4gbmV3IExvbmcobG93Qml0cywgaGlnaEJpdHMsIHVuc2lnbmVkKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgTG9uZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gc3RyaW5nLCB3cml0dGVuIHVzaW5nIHRoZSBzcGVjaWZpZWQgcmFkaXguXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBMb25nXHJcbiAgICAgKiBAcGFyYW0geyhib29sZWFufG51bWJlcik9fSB1bnNpZ25lZCBXaGV0aGVyIHVuc2lnbmVkIG9yIG5vdCwgZGVmYXVsdHMgdG8gYGZhbHNlYCBmb3Igc2lnbmVkXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcj19IHJhZGl4IFRoZSByYWRpeCBpbiB3aGljaCB0aGUgdGV4dCBpcyB3cml0dGVuICgyLTM2KSwgZGVmYXVsdHMgdG8gMTBcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gVGhlIGNvcnJlc3BvbmRpbmcgTG9uZyB2YWx1ZVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLmZyb21TdHJpbmcgPSBmdW5jdGlvbiBmcm9tU3RyaW5nKHN0ciwgdW5zaWduZWQsIHJhZGl4KSB7XHJcbiAgICAgICAgaWYgKHN0ci5sZW5ndGggPT09IDApXHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdudW1iZXIgZm9ybWF0IGVycm9yOiBlbXB0eSBzdHJpbmcnKTtcclxuICAgICAgICBpZiAoc3RyID09PSBcIk5hTlwiIHx8IHN0ciA9PT0gXCJJbmZpbml0eVwiIHx8IHN0ciA9PT0gXCIrSW5maW5pdHlcIiB8fCBzdHIgPT09IFwiLUluZmluaXR5XCIpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLlpFUk87XHJcbiAgICAgICAgaWYgKHR5cGVvZiB1bnNpZ25lZCA9PT0gJ251bWJlcicpIC8vIEZvciBnb29nLm1hdGgubG9uZyBjb21wYXRpYmlsaXR5XHJcbiAgICAgICAgICAgIHJhZGl4ID0gdW5zaWduZWQsXHJcbiAgICAgICAgICAgIHVuc2lnbmVkID0gZmFsc2U7XHJcbiAgICAgICAgcmFkaXggPSByYWRpeCB8fCAxMDtcclxuICAgICAgICBpZiAocmFkaXggPCAyIHx8IDM2IDwgcmFkaXgpXHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XHJcblxyXG4gICAgICAgIHZhciBwO1xyXG4gICAgICAgIGlmICgocCA9IHN0ci5pbmRleE9mKCctJykpID4gMClcclxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoJ251bWJlciBmb3JtYXQgZXJyb3I6IGludGVyaW9yIFwiLVwiIGNoYXJhY3RlcjogJyArIHN0cik7XHJcbiAgICAgICAgZWxzZSBpZiAocCA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIExvbmcuZnJvbVN0cmluZyhzdHIuc3Vic3RyaW5nKDEpLCB1bnNpZ25lZCwgcmFkaXgpLm5lZ2F0ZSgpO1xyXG5cclxuICAgICAgICAvLyBEbyBzZXZlcmFsICg4KSBkaWdpdHMgZWFjaCB0aW1lIHRocm91Z2ggdGhlIGxvb3AsIHNvIGFzIHRvXHJcbiAgICAgICAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXHJcbiAgICAgICAgdmFyIHJhZGl4VG9Qb3dlciA9IExvbmcuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgOCkpO1xyXG5cclxuICAgICAgICB2YXIgcmVzdWx0ID0gTG9uZy5aRVJPO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSArPSA4KSB7XHJcbiAgICAgICAgICAgIHZhciBzaXplID0gTWF0aC5taW4oOCwgc3RyLmxlbmd0aCAtIGkpO1xyXG4gICAgICAgICAgICB2YXIgdmFsdWUgPSBwYXJzZUludChzdHIuc3Vic3RyaW5nKGksIGkgKyBzaXplKSwgcmFkaXgpO1xyXG4gICAgICAgICAgICBpZiAoc2l6ZSA8IDgpIHtcclxuICAgICAgICAgICAgICAgIHZhciBwb3dlciA9IExvbmcuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgc2l6ZSkpO1xyXG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0Lm11bHRpcGx5KHBvd2VyKS5hZGQoTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQubXVsdGlwbHkocmFkaXhUb1Bvd2VyKTtcclxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5hZGQoTG9uZy5mcm9tTnVtYmVyKHZhbHVlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzdWx0LnVuc2lnbmVkID0gdW5zaWduZWQ7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0cyB0aGUgc3BlY2lmaWVkIHZhbHVlIHRvIGEgTG9uZy5cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ3whe2xvdzogbnVtYmVyLCBoaWdoOiBudW1iZXIsIHVuc2lnbmVkOiBib29sZWFufX0gdmFsIFZhbHVlXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcuZnJvbVZhbHVlID0gZnVuY3Rpb24gZnJvbVZhbHVlKHZhbCkge1xyXG4gICAgICAgIGlmICh2YWwgLyogaXMgY29tcGF0aWJsZSAqLyBpbnN0YW5jZW9mIExvbmcpXHJcbiAgICAgICAgICAgIHJldHVybiB2YWw7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKVxyXG4gICAgICAgICAgICByZXR1cm4gTG9uZy5mcm9tTnVtYmVyKHZhbCk7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKVxyXG4gICAgICAgICAgICByZXR1cm4gTG9uZy5mcm9tU3RyaW5nKHZhbCk7XHJcbiAgICAgICAgLy8gVGhyb3dzIGZvciBub24tb2JqZWN0cywgY29udmVydHMgbm9uLWluc3RhbmNlb2YgTG9uZzpcclxuICAgICAgICByZXR1cm4gbmV3IExvbmcodmFsLmxvdywgdmFsLmhpZ2gsIHZhbC51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIE5PVEU6IHRoZSBjb21waWxlciBzaG91bGQgaW5saW5lIHRoZXNlIGNvbnN0YW50IHZhbHVlcyBiZWxvdyBhbmQgdGhlbiByZW1vdmUgdGhlc2UgdmFyaWFibGVzLCBzbyB0aGVyZSBzaG91bGQgYmVcclxuICAgIC8vIG5vIHJ1bnRpbWUgcGVuYWx0eSBmb3IgdGhlc2UuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQGNvbnN0XHJcbiAgICAgKiBAaW5uZXJcclxuICAgICAqL1xyXG4gICAgdmFyIFRXT19QV1JfMTZfREJMID0gMSA8PCAxNjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAY29uc3RcclxuICAgICAqIEBpbm5lclxyXG4gICAgICovXHJcbiAgICB2YXIgVFdPX1BXUl8yNF9EQkwgPSAxIDw8IDI0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAqIEBjb25zdFxyXG4gICAgICogQGlubmVyXHJcbiAgICAgKi9cclxuICAgIHZhciBUV09fUFdSXzMyX0RCTCA9IFRXT19QV1JfMTZfREJMICogVFdPX1BXUl8xNl9EQkw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAdHlwZSB7bnVtYmVyfVxyXG4gICAgICogQGNvbnN0XHJcbiAgICAgKiBAaW5uZXJcclxuICAgICAqL1xyXG4gICAgdmFyIFRXT19QV1JfNjRfREJMID0gVFdPX1BXUl8zMl9EQkwgKiBUV09fUFdSXzMyX0RCTDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEB0eXBlIHtudW1iZXJ9XHJcbiAgICAgKiBAY29uc3RcclxuICAgICAqIEBpbm5lclxyXG4gICAgICovXHJcbiAgICB2YXIgVFdPX1BXUl82M19EQkwgPSBUV09fUFdSXzY0X0RCTCAvIDI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAdHlwZSB7IUxvbmd9XHJcbiAgICAgKiBAY29uc3RcclxuICAgICAqIEBpbm5lclxyXG4gICAgICovXHJcbiAgICB2YXIgVFdPX1BXUl8yNCA9IExvbmcuZnJvbUludChUV09fUFdSXzI0X0RCTCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaWduZWQgemVyby5cclxuICAgICAqIEB0eXBlIHshTG9uZ31cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5aRVJPID0gTG9uZy5mcm9tSW50KDApO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5zaWduZWQgemVyby5cclxuICAgICAqIEB0eXBlIHshTG9uZ31cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5VWkVSTyA9IExvbmcuZnJvbUludCgwLCB0cnVlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNpZ25lZCBvbmUuXHJcbiAgICAgKiBAdHlwZSB7IUxvbmd9XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcuT05FID0gTG9uZy5mcm9tSW50KDEpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVW5zaWduZWQgb25lLlxyXG4gICAgICogQHR5cGUgeyFMb25nfVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLlVPTkUgPSBMb25nLmZyb21JbnQoMSwgdHJ1ZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTaWduZWQgbmVnYXRpdmUgb25lLlxyXG4gICAgICogQHR5cGUgeyFMb25nfVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLk5FR19PTkUgPSBMb25nLmZyb21JbnQoLTEpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4aW11bSBzaWduZWQgdmFsdWUuXHJcbiAgICAgKiBAdHlwZSB7IUxvbmd9XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcuTUFYX1ZBTFVFID0gTG9uZy5mcm9tQml0cygweEZGRkZGRkZGfDAsIDB4N0ZGRkZGRkZ8MCwgZmFsc2UpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTWF4aW11bSB1bnNpZ25lZCB2YWx1ZS5cclxuICAgICAqIEB0eXBlIHshTG9uZ31cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5NQVhfVU5TSUdORURfVkFMVUUgPSBMb25nLmZyb21CaXRzKDB4RkZGRkZGRkZ8MCwgMHhGRkZGRkZGRnwwLCB0cnVlKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1pbmltdW0gc2lnbmVkIHZhbHVlLlxyXG4gICAgICogQHR5cGUgeyFMb25nfVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLk1JTl9WQUxVRSA9IExvbmcuZnJvbUJpdHMoMCwgMHg4MDAwMDAwMHwwLCBmYWxzZSk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb252ZXJ0cyB0aGUgTG9uZyB0byBhIDMyIGJpdCBpbnRlZ2VyLCBhc3N1bWluZyBpdCBpcyBhIDMyIGJpdCBpbnRlZ2VyLlxyXG4gICAgICogQHJldHVybnMge251bWJlcn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUudG9JbnQgPSBmdW5jdGlvbiB0b0ludCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy51bnNpZ25lZCA/IHRoaXMubG93ID4+PiAwIDogdGhpcy5sb3c7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhlIExvbmcgdG8gYSB0aGUgbmVhcmVzdCBmbG9hdGluZy1wb2ludCByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHZhbHVlIChkb3VibGUsIDUzIGJpdCBtYW50aXNzYSkuXHJcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS50b051bWJlciA9IGZ1bmN0aW9uIHRvTnVtYmVyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnVuc2lnbmVkKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKHRoaXMuaGlnaCA+Pj4gMCkgKiBUV09fUFdSXzMyX0RCTCkgKyAodGhpcy5sb3cgPj4+IDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5oaWdoICogVFdPX1BXUl8zMl9EQkwgKyAodGhpcy5sb3cgPj4+IDApO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnRzIHRoZSBMb25nIHRvIGEgc3RyaW5nIHdyaXR0ZW4gaW4gdGhlIHNwZWNpZmllZCByYWRpeC5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyPX0gcmFkaXggUmFkaXggKDItMzYpLCBkZWZhdWx0cyB0byAxMFxyXG4gICAgICogQHJldHVybnMge3N0cmluZ31cclxuICAgICAqIEBvdmVycmlkZVxyXG4gICAgICogQHRocm93cyB7UmFuZ2VFcnJvcn0gSWYgYHJhZGl4YCBpcyBvdXQgb2YgcmFuZ2VcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZyhyYWRpeCkge1xyXG4gICAgICAgIHJhZGl4ID0gcmFkaXggfHwgMTA7XHJcbiAgICAgICAgaWYgKHJhZGl4IDwgMiB8fCAzNiA8IHJhZGl4KVxyXG4gICAgICAgICAgICB0aHJvdyBSYW5nZUVycm9yKCdyYWRpeCBvdXQgb2YgcmFuZ2U6ICcgKyByYWRpeCk7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNaZXJvKCkpXHJcbiAgICAgICAgICAgIHJldHVybiAnMCc7XHJcbiAgICAgICAgdmFyIHJlbTtcclxuICAgICAgICBpZiAodGhpcy5pc05lZ2F0aXZlKCkpIHsgLy8gVW5zaWduZWQgTG9uZ3MgYXJlIG5ldmVyIG5lZ2F0aXZlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmVxdWFscyhMb25nLk1JTl9WQUxVRSkpIHtcclxuICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gY2hhbmdlIHRoZSBMb25nIHZhbHVlIGJlZm9yZSBpdCBjYW4gYmUgbmVnYXRlZCwgc28gd2UgcmVtb3ZlXHJcbiAgICAgICAgICAgICAgICAvLyB0aGUgYm90dG9tLW1vc3QgZGlnaXQgaW4gdGhpcyBiYXNlIGFuZCB0aGVuIHJlY3Vyc2UgdG8gZG8gdGhlIHJlc3QuXHJcbiAgICAgICAgICAgICAgICB2YXIgcmFkaXhMb25nID0gTG9uZy5mcm9tTnVtYmVyKHJhZGl4KTtcclxuICAgICAgICAgICAgICAgIHZhciBkaXYgPSB0aGlzLmRpdmlkZShyYWRpeExvbmcpO1xyXG4gICAgICAgICAgICAgICAgcmVtID0gZGl2Lm11bHRpcGx5KHJhZGl4TG9uZykuc3VidHJhY3QodGhpcyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGl2LnRvU3RyaW5nKHJhZGl4KSArIHJlbS50b0ludCgpLnRvU3RyaW5nKHJhZGl4KTtcclxuICAgICAgICAgICAgfSBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJy0nICsgdGhpcy5uZWdhdGUoKS50b1N0cmluZyhyYWRpeCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEbyBzZXZlcmFsICg2KSBkaWdpdHMgZWFjaCB0aW1lIHRocm91Z2ggdGhlIGxvb3AsIHNvIGFzIHRvXHJcbiAgICAgICAgLy8gbWluaW1pemUgdGhlIGNhbGxzIHRvIHRoZSB2ZXJ5IGV4cGVuc2l2ZSBlbXVsYXRlZCBkaXYuXHJcbiAgICAgICAgdmFyIHJhZGl4VG9Qb3dlciA9IExvbmcuZnJvbU51bWJlcihNYXRoLnBvdyhyYWRpeCwgNiksIHRoaXMudW5zaWduZWQpO1xyXG4gICAgICAgIHJlbSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHJlc3VsdCA9ICcnO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICAgIHZhciByZW1EaXYgPSByZW0uZGl2aWRlKHJhZGl4VG9Qb3dlciksXHJcbiAgICAgICAgICAgICAgICBpbnR2YWwgPSByZW0uc3VidHJhY3QocmVtRGl2Lm11bHRpcGx5KHJhZGl4VG9Qb3dlcikpLnRvSW50KCkgPj4+IDAsXHJcbiAgICAgICAgICAgICAgICBkaWdpdHMgPSBpbnR2YWwudG9TdHJpbmcocmFkaXgpO1xyXG4gICAgICAgICAgICByZW0gPSByZW1EaXY7XHJcbiAgICAgICAgICAgIGlmIChyZW0uaXNaZXJvKCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGlnaXRzICsgcmVzdWx0O1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHdoaWxlIChkaWdpdHMubGVuZ3RoIDwgNilcclxuICAgICAgICAgICAgICAgICAgICBkaWdpdHMgPSAnMCcgKyBkaWdpdHM7XHJcbiAgICAgICAgICAgICAgICByZXN1bHQgPSAnJyArIGRpZ2l0cyArIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIHRoZSBoaWdoIDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBoaWdoIGJpdHNcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuZ2V0SGlnaEJpdHMgPSBmdW5jdGlvbiBnZXRIaWdoQml0cygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5oaWdoO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIGhpZ2ggMzIgYml0cyBhcyBhbiB1bnNpZ25lZCBpbnRlZ2VyLlxyXG4gICAgICogQHJldHVybnMge251bWJlcn0gVW5zaWduZWQgaGlnaCBiaXRzXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmdldEhpZ2hCaXRzVW5zaWduZWQgPSBmdW5jdGlvbiBnZXRIaWdoQml0c1Vuc2lnbmVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2ggPj4+IDA7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbG93IDMyIGJpdHMgYXMgYSBzaWduZWQgaW50ZWdlci5cclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFNpZ25lZCBsb3cgYml0c1xyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5nZXRMb3dCaXRzID0gZnVuY3Rpb24gZ2V0TG93Qml0cygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb3c7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbG93IDMyIGJpdHMgYXMgYW4gdW5zaWduZWQgaW50ZWdlci5cclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IFVuc2lnbmVkIGxvdyBiaXRzXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmdldExvd0JpdHNVbnNpZ25lZCA9IGZ1bmN0aW9uIGdldExvd0JpdHNVbnNpZ25lZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb3cgPj4+IDA7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyB0aGUgbnVtYmVyIG9mIGJpdHMgbmVlZGVkIHRvIHJlcHJlc2VudCB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhpcyBMb25nLlxyXG4gICAgICogQHJldHVybnMge251bWJlcn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuZ2V0TnVtQml0c0FicyA9IGZ1bmN0aW9uIGdldE51bUJpdHNBYnMoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSAvLyBVbnNpZ25lZCBMb25ncyBhcmUgbmV2ZXIgbmVnYXRpdmVcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZXF1YWxzKExvbmcuTUlOX1ZBTFVFKSA/IDY0IDogdGhpcy5uZWdhdGUoKS5nZXROdW1CaXRzQWJzKCk7XHJcbiAgICAgICAgdmFyIHZhbCA9IHRoaXMuaGlnaCAhPSAwID8gdGhpcy5oaWdoIDogdGhpcy5sb3c7XHJcbiAgICAgICAgZm9yICh2YXIgYml0ID0gMzE7IGJpdCA+IDA7IGJpdC0tKVxyXG4gICAgICAgICAgICBpZiAoKHZhbCAmICgxIDw8IGJpdCkpICE9IDApXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICByZXR1cm4gdGhpcy5oaWdoICE9IDAgPyBiaXQgKyAzMyA6IGJpdCArIDE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgZXF1YWxzIHplcm8uXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuaXNaZXJvID0gZnVuY3Rpb24gaXNaZXJvKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmhpZ2ggPT09IDAgJiYgdGhpcy5sb3cgPT09IDA7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgaXMgbmVnYXRpdmUuXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuaXNOZWdhdGl2ZSA9IGZ1bmN0aW9uIGlzTmVnYXRpdmUoKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnVuc2lnbmVkICYmIHRoaXMuaGlnaCA8IDA7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgaXMgcG9zaXRpdmUuXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuaXNQb3NpdGl2ZSA9IGZ1bmN0aW9uIGlzUG9zaXRpdmUoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudW5zaWduZWQgfHwgdGhpcy5oaWdoID49IDA7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgaXMgb2RkLlxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmlzT2RkID0gZnVuY3Rpb24gaXNPZGQoKSB7XHJcbiAgICAgICAgcmV0dXJuICh0aGlzLmxvdyAmIDEpID09PSAxO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlc3RzIGlmIHRoaXMgTG9uZydzIHZhbHVlIGlzIGV2ZW4uXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuaXNFdmVuID0gZnVuY3Rpb24gaXNFdmVuKCkge1xyXG4gICAgICAgIHJldHVybiAodGhpcy5sb3cgJiAxKSA9PT0gMDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXN0cyBpZiB0aGlzIExvbmcncyB2YWx1ZSBlcXVhbHMgdGhlIHNwZWNpZmllZCdzLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmVxdWFscyA9IGZ1bmN0aW9uIGVxdWFscyhvdGhlcikge1xyXG4gICAgICAgIGlmICghTG9uZy5pc0xvbmcob3RoZXIpKVxyXG4gICAgICAgICAgICBvdGhlciA9IExvbmcuZnJvbVZhbHVlKG90aGVyKTtcclxuICAgICAgICBpZiAodGhpcy51bnNpZ25lZCAhPT0gb3RoZXIudW5zaWduZWQgJiYgKHRoaXMuaGlnaCA+Pj4gMzEpID09PSAxICYmIChvdGhlci5oaWdoID4+PiAzMSkgPT09IDEpXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5oaWdoID09PSBvdGhlci5oaWdoICYmIHRoaXMubG93ID09PSBvdGhlci5sb3c7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgZXF1YWxzIHRoZSBzcGVjaWZpZWQncy4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgTG9uZyNlcXVhbHN9LlxyXG4gICAgICogQGZ1bmN0aW9uXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5lcSA9IExvbmcucHJvdG90eXBlLmVxdWFscztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlc3RzIGlmIHRoaXMgTG9uZydzIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgc3BlY2lmaWVkJ3MuXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUubm90RXF1YWxzID0gZnVuY3Rpb24gbm90RXF1YWxzKG90aGVyKSB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLmVxdWFscygvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlc3RzIGlmIHRoaXMgTG9uZydzIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgc3BlY2lmaWVkJ3MuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIExvbmcjbm90RXF1YWxzfS5cclxuICAgICAqIEBmdW5jdGlvblxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcubmVxID0gTG9uZy5wcm90b3R5cGUubm90RXF1YWxzO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgaXMgbGVzcyB0aGFuIHRoZSBzcGVjaWZpZWQncy5cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5sZXNzVGhhbiA9IGZ1bmN0aW9uIGxlc3NUaGFuKG90aGVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY29tcGFyZSgvKiB2YWxpZGF0ZXMgKi8gb3RoZXIpIDwgMDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXN0cyBpZiB0aGlzIExvbmcncyB2YWx1ZSBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCdzLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBMb25nI2xlc3NUaGFufS5cclxuICAgICAqIEBmdW5jdGlvblxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmx0ID0gTG9uZy5wcm90b3R5cGUubGVzc1RoYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXN0cyBpZiB0aGlzIExvbmcncyB2YWx1ZSBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbCA9IGZ1bmN0aW9uIGxlc3NUaGFuT3JFcXVhbChvdGhlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoLyogdmFsaWRhdGVzICovIG90aGVyKSA8PSAwO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlc3RzIGlmIHRoaXMgTG9uZydzIHZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0aGUgc3BlY2lmaWVkJ3MuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIExvbmcjbGVzc1RoYW5PckVxdWFsfS5cclxuICAgICAqIEBmdW5jdGlvblxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciB2YWx1ZVxyXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmx0ZSA9IExvbmcucHJvdG90eXBlLmxlc3NUaGFuT3JFcXVhbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlc3RzIGlmIHRoaXMgTG9uZydzIHZhbHVlIGlzIGdyZWF0ZXIgdGhhbiB0aGUgc3BlY2lmaWVkJ3MuXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIHZhbHVlXHJcbiAgICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuZ3JlYXRlclRoYW4gPSBmdW5jdGlvbiBncmVhdGVyVGhhbihvdGhlcikge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbXBhcmUoLyogdmFsaWRhdGVzICovIG90aGVyKSA+IDA7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzcGVjaWZpZWQncy4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgTG9uZyNncmVhdGVyVGhhbn0uXHJcbiAgICAgKiBAZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5ndCA9IExvbmcucHJvdG90eXBlLmdyZWF0ZXJUaGFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVzdHMgaWYgdGhpcyBMb25nJ3MgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRoZSBzcGVjaWZpZWQncy5cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWwgPSBmdW5jdGlvbiBncmVhdGVyVGhhbk9yRXF1YWwob3RoZXIpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb21wYXJlKC8qIHZhbGlkYXRlcyAqLyBvdGhlcikgPj0gMDtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZXN0cyBpZiB0aGlzIExvbmcncyB2YWx1ZSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHNwZWNpZmllZCdzLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBMb25nI2dyZWF0ZXJUaGFuT3JFcXVhbH0uXHJcbiAgICAgKiBAZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcclxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5ndGUgPSBMb25nLnByb3RvdHlwZS5ncmVhdGVyVGhhbk9yRXF1YWw7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb21wYXJlcyB0aGlzIExvbmcncyB2YWx1ZSB3aXRoIHRoZSBzcGVjaWZpZWQncy5cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ30gb3RoZXIgT3RoZXIgdmFsdWVcclxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9IDAgaWYgdGhleSBhcmUgdGhlIHNhbWUsIDEgaWYgdGhlIHRoaXMgaXMgZ3JlYXRlciBhbmQgLTFcclxuICAgICAqICBpZiB0aGUgZ2l2ZW4gb25lIGlzIGdyZWF0ZXJcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUob3RoZXIpIHtcclxuICAgICAgICBpZiAoIUxvbmcuaXNMb25nKG90aGVyKSlcclxuICAgICAgICAgICAgb3RoZXIgPSBMb25nLmZyb21WYWx1ZShvdGhlcik7XHJcbiAgICAgICAgaWYgKHRoaXMuZXF1YWxzKG90aGVyKSlcclxuICAgICAgICAgICAgcmV0dXJuIDA7XHJcbiAgICAgICAgdmFyIHRoaXNOZWcgPSB0aGlzLmlzTmVnYXRpdmUoKSxcclxuICAgICAgICAgICAgb3RoZXJOZWcgPSBvdGhlci5pc05lZ2F0aXZlKCk7XHJcbiAgICAgICAgaWYgKHRoaXNOZWcgJiYgIW90aGVyTmVnKVxyXG4gICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgaWYgKCF0aGlzTmVnICYmIG90aGVyTmVnKVxyXG4gICAgICAgICAgICByZXR1cm4gMTtcclxuICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHRoZSBzaWduIGJpdHMgYXJlIHRoZSBzYW1lXHJcbiAgICAgICAgaWYgKCF0aGlzLnVuc2lnbmVkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdChvdGhlcikuaXNOZWdhdGl2ZSgpID8gLTEgOiAxO1xyXG4gICAgICAgIC8vIEJvdGggYXJlIHBvc2l0aXZlIGlmIGF0IGxlYXN0IG9uZSBpcyB1bnNpZ25lZFxyXG4gICAgICAgIHJldHVybiAob3RoZXIuaGlnaCA+Pj4gMCkgPiAodGhpcy5oaWdoID4+PiAwKSB8fCAob3RoZXIuaGlnaCA9PT0gdGhpcy5oaWdoICYmIChvdGhlci5sb3cgPj4+IDApID4gKHRoaXMubG93ID4+PiAwKSkgPyAtMSA6IDE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogTmVnYXRlcyB0aGlzIExvbmcncyB2YWx1ZS5cclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gTmVnYXRlZCBMb25nXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLm5lZ2F0ZSA9IGZ1bmN0aW9uIG5lZ2F0ZSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMudW5zaWduZWQgJiYgdGhpcy5lcXVhbHMoTG9uZy5NSU5fVkFMVUUpKVxyXG4gICAgICAgICAgICByZXR1cm4gTG9uZy5NSU5fVkFMVUU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubm90KCkuYWRkKExvbmcuT05FKTtcclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBOZWdhdGVzIHRoaXMgTG9uZydzIHZhbHVlLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBMb25nI25lZ2F0ZX0uXHJcbiAgICAgKiBAZnVuY3Rpb25cclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gTmVnYXRlZCBMb25nXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLm5lZyA9IExvbmcucHJvdG90eXBlLm5lZ2F0ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIExvbmcuXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IGFkZGVuZCBBZGRlbmRcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gU3VtXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZChhZGRlbmQpIHtcclxuICAgICAgICBpZiAoIUxvbmcuaXNMb25nKGFkZGVuZCkpXHJcbiAgICAgICAgICAgIGFkZGVuZCA9IExvbmcuZnJvbVZhbHVlKGFkZGVuZCk7XHJcblxyXG4gICAgICAgIC8vIERpdmlkZSBlYWNoIG51bWJlciBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIHN1bSB0aGUgY2h1bmtzLlxyXG5cclxuICAgICAgICB2YXIgYTQ4ID0gdGhpcy5oaWdoID4+PiAxNjtcclxuICAgICAgICB2YXIgYTMyID0gdGhpcy5oaWdoICYgMHhGRkZGO1xyXG4gICAgICAgIHZhciBhMTYgPSB0aGlzLmxvdyA+Pj4gMTY7XHJcbiAgICAgICAgdmFyIGEwMCA9IHRoaXMubG93ICYgMHhGRkZGO1xyXG5cclxuICAgICAgICB2YXIgYjQ4ID0gYWRkZW5kLmhpZ2ggPj4+IDE2O1xyXG4gICAgICAgIHZhciBiMzIgPSBhZGRlbmQuaGlnaCAmIDB4RkZGRjtcclxuICAgICAgICB2YXIgYjE2ID0gYWRkZW5kLmxvdyA+Pj4gMTY7XHJcbiAgICAgICAgdmFyIGIwMCA9IGFkZGVuZC5sb3cgJiAweEZGRkY7XHJcblxyXG4gICAgICAgIHZhciBjNDggPSAwLCBjMzIgPSAwLCBjMTYgPSAwLCBjMDAgPSAwO1xyXG4gICAgICAgIGMwMCArPSBhMDAgKyBiMDA7XHJcbiAgICAgICAgYzE2ICs9IGMwMCA+Pj4gMTY7XHJcbiAgICAgICAgYzAwICY9IDB4RkZGRjtcclxuICAgICAgICBjMTYgKz0gYTE2ICsgYjE2O1xyXG4gICAgICAgIGMzMiArPSBjMTYgPj4+IDE2O1xyXG4gICAgICAgIGMxNiAmPSAweEZGRkY7XHJcbiAgICAgICAgYzMyICs9IGEzMiArIGIzMjtcclxuICAgICAgICBjNDggKz0gYzMyID4+PiAxNjtcclxuICAgICAgICBjMzIgJj0gMHhGRkZGO1xyXG4gICAgICAgIGM0OCArPSBhNDggKyBiNDg7XHJcbiAgICAgICAgYzQ4ICY9IDB4RkZGRjtcclxuICAgICAgICByZXR1cm4gTG9uZy5mcm9tQml0cygoYzE2IDw8IDE2KSB8IGMwMCwgKGM0OCA8PCAxNikgfCBjMzIsIHRoaXMudW5zaWduZWQpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBMb25nLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBzdWJ0cmFoZW5kIFN1YnRyYWhlbmRcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gRGlmZmVyZW5jZVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5zdWJ0cmFjdCA9IGZ1bmN0aW9uIHN1YnRyYWN0KHN1YnRyYWhlbmQpIHtcclxuICAgICAgICBpZiAoIUxvbmcuaXNMb25nKHN1YnRyYWhlbmQpKVxyXG4gICAgICAgICAgICBzdWJ0cmFoZW5kID0gTG9uZy5mcm9tVmFsdWUoc3VidHJhaGVuZCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHN1YnRyYWhlbmQubmVnYXRlKCkpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2Ugb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBMb25nLiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBMb25nI3N1YnRyYWN0fS5cclxuICAgICAqIEBmdW5jdGlvblxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBzdWJ0cmFoZW5kIFN1YnRyYWhlbmRcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gRGlmZmVyZW5jZVxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5zdWIgPSBMb25nLnByb3RvdHlwZS5zdWJ0cmFjdDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHByb2R1Y3Qgb2YgdGhpcyBhbmQgdGhlIHNwZWNpZmllZCBMb25nLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBtdWx0aXBsaWVyIE11bHRpcGxpZXJcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gUHJvZHVjdFxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5tdWx0aXBseSA9IGZ1bmN0aW9uIG11bHRpcGx5KG11bHRpcGxpZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pc1plcm8oKSlcclxuICAgICAgICAgICAgcmV0dXJuIExvbmcuWkVSTztcclxuICAgICAgICBpZiAoIUxvbmcuaXNMb25nKG11bHRpcGxpZXIpKVxyXG4gICAgICAgICAgICBtdWx0aXBsaWVyID0gTG9uZy5mcm9tVmFsdWUobXVsdGlwbGllcik7XHJcbiAgICAgICAgaWYgKG11bHRpcGxpZXIuaXNaZXJvKCkpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLlpFUk87XHJcbiAgICAgICAgaWYgKHRoaXMuZXF1YWxzKExvbmcuTUlOX1ZBTFVFKSlcclxuICAgICAgICAgICAgcmV0dXJuIG11bHRpcGxpZXIuaXNPZGQoKSA/IExvbmcuTUlOX1ZBTFVFIDogTG9uZy5aRVJPO1xyXG4gICAgICAgIGlmIChtdWx0aXBsaWVyLmVxdWFscyhMb25nLk1JTl9WQUxVRSkpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT2RkKCkgPyBMb25nLk1JTl9WQUxVRSA6IExvbmcuWkVSTztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNOZWdhdGl2ZSgpKSB7XHJcbiAgICAgICAgICAgIGlmIChtdWx0aXBsaWVyLmlzTmVnYXRpdmUoKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLm11bHRpcGx5KG11bHRpcGxpZXIubmVnYXRlKCkpO1xyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5tdWx0aXBseShtdWx0aXBsaWVyKS5uZWdhdGUoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKG11bHRpcGxpZXIuaXNOZWdhdGl2ZSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5tdWx0aXBseShtdWx0aXBsaWVyLm5lZ2F0ZSgpKS5uZWdhdGUoKTtcclxuXHJcbiAgICAgICAgLy8gSWYgYm90aCBsb25ncyBhcmUgc21hbGwsIHVzZSBmbG9hdCBtdWx0aXBsaWNhdGlvblxyXG4gICAgICAgIGlmICh0aGlzLmxlc3NUaGFuKFRXT19QV1JfMjQpICYmIG11bHRpcGxpZXIubGVzc1RoYW4oVFdPX1BXUl8yNCkpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLmZyb21OdW1iZXIodGhpcy50b051bWJlcigpICogbXVsdGlwbGllci50b051bWJlcigpLCB0aGlzLnVuc2lnbmVkKTtcclxuXHJcbiAgICAgICAgLy8gRGl2aWRlIGVhY2ggbG9uZyBpbnRvIDQgY2h1bmtzIG9mIDE2IGJpdHMsIGFuZCB0aGVuIGFkZCB1cCA0eDQgcHJvZHVjdHMuXHJcbiAgICAgICAgLy8gV2UgY2FuIHNraXAgcHJvZHVjdHMgdGhhdCB3b3VsZCBvdmVyZmxvdy5cclxuXHJcbiAgICAgICAgdmFyIGE0OCA9IHRoaXMuaGlnaCA+Pj4gMTY7XHJcbiAgICAgICAgdmFyIGEzMiA9IHRoaXMuaGlnaCAmIDB4RkZGRjtcclxuICAgICAgICB2YXIgYTE2ID0gdGhpcy5sb3cgPj4+IDE2O1xyXG4gICAgICAgIHZhciBhMDAgPSB0aGlzLmxvdyAmIDB4RkZGRjtcclxuXHJcbiAgICAgICAgdmFyIGI0OCA9IG11bHRpcGxpZXIuaGlnaCA+Pj4gMTY7XHJcbiAgICAgICAgdmFyIGIzMiA9IG11bHRpcGxpZXIuaGlnaCAmIDB4RkZGRjtcclxuICAgICAgICB2YXIgYjE2ID0gbXVsdGlwbGllci5sb3cgPj4+IDE2O1xyXG4gICAgICAgIHZhciBiMDAgPSBtdWx0aXBsaWVyLmxvdyAmIDB4RkZGRjtcclxuXHJcbiAgICAgICAgdmFyIGM0OCA9IDAsIGMzMiA9IDAsIGMxNiA9IDAsIGMwMCA9IDA7XHJcbiAgICAgICAgYzAwICs9IGEwMCAqIGIwMDtcclxuICAgICAgICBjMTYgKz0gYzAwID4+PiAxNjtcclxuICAgICAgICBjMDAgJj0gMHhGRkZGO1xyXG4gICAgICAgIGMxNiArPSBhMTYgKiBiMDA7XHJcbiAgICAgICAgYzMyICs9IGMxNiA+Pj4gMTY7XHJcbiAgICAgICAgYzE2ICY9IDB4RkZGRjtcclxuICAgICAgICBjMTYgKz0gYTAwICogYjE2O1xyXG4gICAgICAgIGMzMiArPSBjMTYgPj4+IDE2O1xyXG4gICAgICAgIGMxNiAmPSAweEZGRkY7XHJcbiAgICAgICAgYzMyICs9IGEzMiAqIGIwMDtcclxuICAgICAgICBjNDggKz0gYzMyID4+PiAxNjtcclxuICAgICAgICBjMzIgJj0gMHhGRkZGO1xyXG4gICAgICAgIGMzMiArPSBhMTYgKiBiMTY7XHJcbiAgICAgICAgYzQ4ICs9IGMzMiA+Pj4gMTY7XHJcbiAgICAgICAgYzMyICY9IDB4RkZGRjtcclxuICAgICAgICBjMzIgKz0gYTAwICogYjMyO1xyXG4gICAgICAgIGM0OCArPSBjMzIgPj4+IDE2O1xyXG4gICAgICAgIGMzMiAmPSAweEZGRkY7XHJcbiAgICAgICAgYzQ4ICs9IGE0OCAqIGIwMCArIGEzMiAqIGIxNiArIGExNiAqIGIzMiArIGEwMCAqIGI0ODtcclxuICAgICAgICBjNDggJj0gMHhGRkZGO1xyXG4gICAgICAgIHJldHVybiBMb25nLmZyb21CaXRzKChjMTYgPDwgMTYpIHwgYzAwLCAoYzQ4IDw8IDE2KSB8IGMzMiwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgcHJvZHVjdCBvZiB0aGlzIGFuZCB0aGUgc3BlY2lmaWVkIExvbmcuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIExvbmcjbXVsdGlwbHl9LlxyXG4gICAgICogQGZ1bmN0aW9uXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IG11bHRpcGxpZXIgTXVsdGlwbGllclxyXG4gICAgICogQHJldHVybnMgeyFMb25nfSBQcm9kdWN0XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLm11bCA9IExvbmcucHJvdG90eXBlLm11bHRpcGx5O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgZGl2aWRlZCBieSB0aGUgc3BlY2lmaWVkLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBkaXZpc29yIERpdmlzb3JcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gUXVvdGllbnRcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuZGl2aWRlID0gZnVuY3Rpb24gZGl2aWRlKGRpdmlzb3IpIHtcclxuICAgICAgICBpZiAoIUxvbmcuaXNMb25nKGRpdmlzb3IpKVxyXG4gICAgICAgICAgICBkaXZpc29yID0gTG9uZy5mcm9tVmFsdWUoZGl2aXNvcik7XHJcbiAgICAgICAgaWYgKGRpdmlzb3IuaXNaZXJvKCkpXHJcbiAgICAgICAgICAgIHRocm93KG5ldyBFcnJvcignZGl2aXNpb24gYnkgemVybycpKTtcclxuICAgICAgICBpZiAodGhpcy5pc1plcm8oKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5zaWduZWQgPyBMb25nLlVaRVJPIDogTG9uZy5aRVJPO1xyXG4gICAgICAgIHZhciBhcHByb3gsIHJlbSwgcmVzO1xyXG4gICAgICAgIGlmICh0aGlzLmVxdWFscyhMb25nLk1JTl9WQUxVRSkpIHtcclxuICAgICAgICAgICAgaWYgKGRpdmlzb3IuZXF1YWxzKExvbmcuT05FKSB8fCBkaXZpc29yLmVxdWFscyhMb25nLk5FR19PTkUpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIExvbmcuTUlOX1ZBTFVFOyAgLy8gcmVjYWxsIHRoYXQgLU1JTl9WQUxVRSA9PSBNSU5fVkFMVUVcclxuICAgICAgICAgICAgZWxzZSBpZiAoZGl2aXNvci5lcXVhbHMoTG9uZy5NSU5fVkFMVUUpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIExvbmcuT05FO1xyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgfG90aGVyfCA+PSAyLCBzbyB8dGhpcy9vdGhlcnwgPCB8TUlOX1ZBTFVFfC5cclxuICAgICAgICAgICAgICAgIHZhciBoYWxmVGhpcyA9IHRoaXMuc2hpZnRSaWdodCgxKTtcclxuICAgICAgICAgICAgICAgIGFwcHJveCA9IGhhbGZUaGlzLmRpdmlkZShkaXZpc29yKS5zaGlmdExlZnQoMSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYXBwcm94LmVxdWFscyhMb25nLlpFUk8pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRpdmlzb3IuaXNOZWdhdGl2ZSgpID8gTG9uZy5PTkUgOiBMb25nLk5FR19PTkU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlbSA9IHRoaXMuc3VidHJhY3QoZGl2aXNvci5tdWx0aXBseShhcHByb3gpKTtcclxuICAgICAgICAgICAgICAgICAgICByZXMgPSBhcHByb3guYWRkKHJlbS5kaXZpZGUoZGl2aXNvcikpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGRpdmlzb3IuZXF1YWxzKExvbmcuTUlOX1ZBTFVFKSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMudW5zaWduZWQgPyBMb25nLlVaRVJPIDogTG9uZy5aRVJPO1xyXG4gICAgICAgIGlmICh0aGlzLmlzTmVnYXRpdmUoKSkge1xyXG4gICAgICAgICAgICBpZiAoZGl2aXNvci5pc05lZ2F0aXZlKCkpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5uZWdhdGUoKS5kaXZpZGUoZGl2aXNvci5uZWdhdGUoKSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm5lZ2F0ZSgpLmRpdmlkZShkaXZpc29yKS5uZWdhdGUoKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGRpdmlzb3IuaXNOZWdhdGl2ZSgpKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kaXZpZGUoZGl2aXNvci5uZWdhdGUoKSkubmVnYXRlKCk7XHJcblxyXG4gICAgICAgIC8vIFJlcGVhdCB0aGUgZm9sbG93aW5nIHVudGlsIHRoZSByZW1haW5kZXIgaXMgbGVzcyB0aGFuIG90aGVyOiAgZmluZCBhXHJcbiAgICAgICAgLy8gZmxvYXRpbmctcG9pbnQgdGhhdCBhcHByb3hpbWF0ZXMgcmVtYWluZGVyIC8gb3RoZXIgKmZyb20gYmVsb3cqLCBhZGQgdGhpc1xyXG4gICAgICAgIC8vIGludG8gdGhlIHJlc3VsdCwgYW5kIHN1YnRyYWN0IGl0IGZyb20gdGhlIHJlbWFpbmRlci4gIEl0IGlzIGNyaXRpY2FsIHRoYXRcclxuICAgICAgICAvLyB0aGUgYXBwcm94aW1hdGUgdmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSByZWFsIHZhbHVlIHNvIHRoYXQgdGhlXHJcbiAgICAgICAgLy8gcmVtYWluZGVyIG5ldmVyIGJlY29tZXMgbmVnYXRpdmUuXHJcbiAgICAgICAgcmVzID0gTG9uZy5aRVJPO1xyXG4gICAgICAgIHJlbSA9IHRoaXM7XHJcbiAgICAgICAgd2hpbGUgKHJlbS5ncmVhdGVyVGhhbk9yRXF1YWwoZGl2aXNvcikpIHtcclxuICAgICAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIHJlc3VsdCBvZiBkaXZpc2lvbi4gVGhpcyBtYXkgYmUgYSBsaXR0bGUgZ3JlYXRlciBvclxyXG4gICAgICAgICAgICAvLyBzbWFsbGVyIHRoYW4gdGhlIGFjdHVhbCB2YWx1ZS5cclxuICAgICAgICAgICAgYXBwcm94ID0gTWF0aC5tYXgoMSwgTWF0aC5mbG9vcihyZW0udG9OdW1iZXIoKSAvIGRpdmlzb3IudG9OdW1iZXIoKSkpO1xyXG5cclxuICAgICAgICAgICAgLy8gV2Ugd2lsbCB0d2VhayB0aGUgYXBwcm94aW1hdGUgcmVzdWx0IGJ5IGNoYW5naW5nIGl0IGluIHRoZSA0OC10aCBkaWdpdCBvclxyXG4gICAgICAgICAgICAvLyB0aGUgc21hbGxlc3Qgbm9uLWZyYWN0aW9uYWwgZGlnaXQsIHdoaWNoZXZlciBpcyBsYXJnZXIuXHJcbiAgICAgICAgICAgIHZhciBsb2cyID0gTWF0aC5jZWlsKE1hdGgubG9nKGFwcHJveCkgLyBNYXRoLkxOMiksXHJcbiAgICAgICAgICAgICAgICBkZWx0YSA9IChsb2cyIDw9IDQ4KSA/IDEgOiBNYXRoLnBvdygyLCBsb2cyIC0gNDgpLFxyXG5cclxuICAgICAgICAgICAgLy8gRGVjcmVhc2UgdGhlIGFwcHJveGltYXRpb24gdW50aWwgaXQgaXMgc21hbGxlciB0aGFuIHRoZSByZW1haW5kZXIuICBOb3RlXHJcbiAgICAgICAgICAgIC8vIHRoYXQgaWYgaXQgaXMgdG9vIGxhcmdlLCB0aGUgcHJvZHVjdCBvdmVyZmxvd3MgYW5kIGlzIG5lZ2F0aXZlLlxyXG4gICAgICAgICAgICAgICAgYXBwcm94UmVzID0gTG9uZy5mcm9tTnVtYmVyKGFwcHJveCksXHJcbiAgICAgICAgICAgICAgICBhcHByb3hSZW0gPSBhcHByb3hSZXMubXVsdGlwbHkoZGl2aXNvcik7XHJcbiAgICAgICAgICAgIHdoaWxlIChhcHByb3hSZW0uaXNOZWdhdGl2ZSgpIHx8IGFwcHJveFJlbS5ncmVhdGVyVGhhbihyZW0pKSB7XHJcbiAgICAgICAgICAgICAgICBhcHByb3ggLT0gZGVsdGE7XHJcbiAgICAgICAgICAgICAgICBhcHByb3hSZXMgPSBMb25nLmZyb21OdW1iZXIoYXBwcm94LCB0aGlzLnVuc2lnbmVkKTtcclxuICAgICAgICAgICAgICAgIGFwcHJveFJlbSA9IGFwcHJveFJlcy5tdWx0aXBseShkaXZpc29yKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgYW5zd2VyIGNhbid0IGJlIHplcm8uLi4gYW5kIGFjdHVhbGx5LCB6ZXJvIHdvdWxkIGNhdXNlXHJcbiAgICAgICAgICAgIC8vIGluZmluaXRlIHJlY3Vyc2lvbiBzaW5jZSB3ZSB3b3VsZCBtYWtlIG5vIHByb2dyZXNzLlxyXG4gICAgICAgICAgICBpZiAoYXBwcm94UmVzLmlzWmVybygpKVxyXG4gICAgICAgICAgICAgICAgYXBwcm94UmVzID0gTG9uZy5PTkU7XHJcblxyXG4gICAgICAgICAgICByZXMgPSByZXMuYWRkKGFwcHJveFJlcyk7XHJcbiAgICAgICAgICAgIHJlbSA9IHJlbS5zdWJ0cmFjdChhcHByb3hSZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhpcyBMb25nIGRpdmlkZWQgYnkgdGhlIHNwZWNpZmllZC4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgTG9uZyNkaXZpZGV9LlxyXG4gICAgICogQGZ1bmN0aW9uXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IGRpdmlzb3IgRGl2aXNvclxyXG4gICAgICogQHJldHVybnMgeyFMb25nfSBRdW90aWVudFxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5kaXYgPSBMb25nLnByb3RvdHlwZS5kaXZpZGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoaXMgTG9uZyBtb2R1bG8gdGhlIHNwZWNpZmllZC5cclxuICAgICAqIEBwYXJhbSB7IUxvbmd8bnVtYmVyfHN0cmluZ30gZGl2aXNvciBEaXZpc29yXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9IFJlbWFpbmRlclxyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5tb2R1bG8gPSBmdW5jdGlvbiBtb2R1bG8oZGl2aXNvcikge1xyXG4gICAgICAgIGlmICghTG9uZy5pc0xvbmcoZGl2aXNvcikpXHJcbiAgICAgICAgICAgIGRpdmlzb3IgPSBMb25nLmZyb21WYWx1ZShkaXZpc29yKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zdWJ0cmFjdCh0aGlzLmRpdmlkZShkaXZpc29yKS5tdWx0aXBseShkaXZpc29yKSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgbW9kdWxvIHRoZSBzcGVjaWZpZWQuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIExvbmcjbW9kdWxvfS5cclxuICAgICAqIEBmdW5jdGlvblxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBkaXZpc29yIERpdmlzb3JcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gUmVtYWluZGVyXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLm1vZCA9IExvbmcucHJvdG90eXBlLm1vZHVsbztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGJpdHdpc2UgTk9UIG9mIHRoaXMgTG9uZy5cclxuICAgICAqIEByZXR1cm5zIHshTG9uZ31cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUubm90ID0gZnVuY3Rpb24gbm90KCkge1xyXG4gICAgICAgIHJldHVybiBMb25nLmZyb21CaXRzKH50aGlzLmxvdywgfnRoaXMuaGlnaCwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBBTkQgb2YgdGhpcyBMb25nIGFuZCB0aGUgc3BlY2lmaWVkLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBMb25nXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLmFuZCA9IGZ1bmN0aW9uIGFuZChvdGhlcikge1xyXG4gICAgICAgIGlmICghTG9uZy5pc0xvbmcob3RoZXIpKVxyXG4gICAgICAgICAgICBvdGhlciA9IExvbmcuZnJvbVZhbHVlKG90aGVyKTtcclxuICAgICAgICByZXR1cm4gTG9uZy5mcm9tQml0cyh0aGlzLmxvdyAmIG90aGVyLmxvdywgdGhpcy5oaWdoICYgb3RoZXIuaGlnaCwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBPUiBvZiB0aGlzIExvbmcgYW5kIHRoZSBzcGVjaWZpZWQuXHJcbiAgICAgKiBAcGFyYW0geyFMb25nfG51bWJlcnxzdHJpbmd9IG90aGVyIE90aGVyIExvbmdcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ31cclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUub3IgPSBmdW5jdGlvbiBvcihvdGhlcikge1xyXG4gICAgICAgIGlmICghTG9uZy5pc0xvbmcob3RoZXIpKVxyXG4gICAgICAgICAgICBvdGhlciA9IExvbmcuZnJvbVZhbHVlKG90aGVyKTtcclxuICAgICAgICByZXR1cm4gTG9uZy5mcm9tQml0cyh0aGlzLmxvdyB8IG90aGVyLmxvdywgdGhpcy5oaWdoIHwgb3RoZXIuaGlnaCwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGUgYml0d2lzZSBYT1Igb2YgdGhpcyBMb25nIGFuZCB0aGUgZ2l2ZW4gb25lLlxyXG4gICAgICogQHBhcmFtIHshTG9uZ3xudW1iZXJ8c3RyaW5nfSBvdGhlciBPdGhlciBMb25nXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9XHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLnhvciA9IGZ1bmN0aW9uIHhvcihvdGhlcikge1xyXG4gICAgICAgIGlmICghTG9uZy5pc0xvbmcob3RoZXIpKVxyXG4gICAgICAgICAgICBvdGhlciA9IExvbmcuZnJvbVZhbHVlKG90aGVyKTtcclxuICAgICAgICByZXR1cm4gTG9uZy5mcm9tQml0cyh0aGlzLmxvdyBeIG90aGVyLmxvdywgdGhpcy5oaWdoIF4gb3RoZXIuaGlnaCwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgd2l0aCBiaXRzIHNoaWZ0ZWQgdG8gdGhlIGxlZnQgYnkgdGhlIGdpdmVuIGFtb3VudC5cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFMb25nfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9IFNoaWZ0ZWQgTG9uZ1xyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5zaGlmdExlZnQgPSBmdW5jdGlvbiBzaGlmdExlZnQobnVtQml0cykge1xyXG4gICAgICAgIGlmIChMb25nLmlzTG9uZyhudW1CaXRzKSlcclxuICAgICAgICAgICAgbnVtQml0cyA9IG51bUJpdHMudG9JbnQoKTtcclxuICAgICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICBlbHNlIGlmIChudW1CaXRzIDwgMzIpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLmZyb21CaXRzKHRoaXMubG93IDw8IG51bUJpdHMsICh0aGlzLmhpZ2ggPDwgbnVtQml0cykgfCAodGhpcy5sb3cgPj4+ICgzMiAtIG51bUJpdHMpKSwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICByZXR1cm4gTG9uZy5mcm9tQml0cygwLCB0aGlzLmxvdyA8PCAobnVtQml0cyAtIDMyKSwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgd2l0aCBiaXRzIHNoaWZ0ZWQgdG8gdGhlIGxlZnQgYnkgdGhlIGdpdmVuIGFtb3VudC4gVGhpcyBpcyBhbiBhbGlhcyBvZiB7QGxpbmsgTG9uZyNzaGlmdExlZnR9LlxyXG4gICAgICogQGZ1bmN0aW9uXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcnwhTG9uZ30gbnVtQml0cyBOdW1iZXIgb2YgYml0c1xyXG4gICAgICogQHJldHVybnMgeyFMb25nfSBTaGlmdGVkIExvbmdcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuc2hsID0gTG9uZy5wcm90b3R5cGUuc2hpZnRMZWZ0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgd2l0aCBiaXRzIGFyaXRobWV0aWNhbGx5IHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0IGJ5IHRoZSBnaXZlbiBhbW91bnQuXHJcbiAgICAgKiBAcGFyYW0ge251bWJlcnwhTG9uZ30gbnVtQml0cyBOdW1iZXIgb2YgYml0c1xyXG4gICAgICogQHJldHVybnMgeyFMb25nfSBTaGlmdGVkIExvbmdcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUuc2hpZnRSaWdodCA9IGZ1bmN0aW9uIHNoaWZ0UmlnaHQobnVtQml0cykge1xyXG4gICAgICAgIGlmIChMb25nLmlzTG9uZyhudW1CaXRzKSlcclxuICAgICAgICAgICAgbnVtQml0cyA9IG51bUJpdHMudG9JbnQoKTtcclxuICAgICAgICBpZiAoKG51bUJpdHMgJj0gNjMpID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICBlbHNlIGlmIChudW1CaXRzIDwgMzIpXHJcbiAgICAgICAgICAgIHJldHVybiBMb25nLmZyb21CaXRzKCh0aGlzLmxvdyA+Pj4gbnVtQml0cykgfCAodGhpcy5oaWdoIDw8ICgzMiAtIG51bUJpdHMpKSwgdGhpcy5oaWdoID4+IG51bUJpdHMsIHRoaXMudW5zaWduZWQpO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgICAgcmV0dXJuIExvbmcuZnJvbUJpdHModGhpcy5oaWdoID4+IChudW1CaXRzIC0gMzIpLCB0aGlzLmhpZ2ggPj0gMCA/IDAgOiAtMSwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgd2l0aCBiaXRzIGFyaXRobWV0aWNhbGx5IHNoaWZ0ZWQgdG8gdGhlIHJpZ2h0IGJ5IHRoZSBnaXZlbiBhbW91bnQuIFRoaXMgaXMgYW4gYWxpYXMgb2Yge0BsaW5rIExvbmcjc2hpZnRSaWdodH0uXHJcbiAgICAgKiBAZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFMb25nfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9IFNoaWZ0ZWQgTG9uZ1xyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5zaHIgPSBMb25nLnByb3RvdHlwZS5zaGlmdFJpZ2h0O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgd2l0aCBiaXRzIGxvZ2ljYWxseSBzaGlmdGVkIHRvIHRoZSByaWdodCBieSB0aGUgZ2l2ZW4gYW1vdW50LlxyXG4gICAgICogQHBhcmFtIHtudW1iZXJ8IUxvbmd9IG51bUJpdHMgTnVtYmVyIG9mIGJpdHNcclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gU2hpZnRlZCBMb25nXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLnNoaWZ0UmlnaHRVbnNpZ25lZCA9IGZ1bmN0aW9uIHNoaWZ0UmlnaHRVbnNpZ25lZChudW1CaXRzKSB7XHJcbiAgICAgICAgaWYgKExvbmcuaXNMb25nKG51bUJpdHMpKVxyXG4gICAgICAgICAgICBudW1CaXRzID0gbnVtQml0cy50b0ludCgpO1xyXG4gICAgICAgIG51bUJpdHMgJj0gNjM7XHJcbiAgICAgICAgaWYgKG51bUJpdHMgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgaGlnaCA9IHRoaXMuaGlnaDtcclxuICAgICAgICAgICAgaWYgKG51bUJpdHMgPCAzMikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGxvdyA9IHRoaXMubG93O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIExvbmcuZnJvbUJpdHMoKGxvdyA+Pj4gbnVtQml0cykgfCAoaGlnaCA8PCAoMzIgLSBudW1CaXRzKSksIGhpZ2ggPj4+IG51bUJpdHMsIHRoaXMudW5zaWduZWQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bUJpdHMgPT09IDMyKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIExvbmcuZnJvbUJpdHMoaGlnaCwgMCwgdGhpcy51bnNpZ25lZCk7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIHJldHVybiBMb25nLmZyb21CaXRzKGhpZ2ggPj4+IChudW1CaXRzIC0gMzIpLCAwLCB0aGlzLnVuc2lnbmVkKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyB0aGlzIExvbmcgd2l0aCBiaXRzIGxvZ2ljYWxseSBzaGlmdGVkIHRvIHRoZSByaWdodCBieSB0aGUgZ2l2ZW4gYW1vdW50LiBUaGlzIGlzIGFuIGFsaWFzIG9mIHtAbGluayBMb25nI3NoaWZ0UmlnaHRVbnNpZ25lZH0uXHJcbiAgICAgKiBAZnVuY3Rpb25cclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfCFMb25nfSBudW1CaXRzIE51bWJlciBvZiBiaXRzXHJcbiAgICAgKiBAcmV0dXJucyB7IUxvbmd9IFNoaWZ0ZWQgTG9uZ1xyXG4gICAgICogQGV4cG9zZVxyXG4gICAgICovXHJcbiAgICBMb25nLnByb3RvdHlwZS5zaHJ1ID0gTG9uZy5wcm90b3R5cGUuc2hpZnRSaWdodFVuc2lnbmVkO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhpcyBMb25nIHRvIHNpZ25lZC5cclxuICAgICAqIEByZXR1cm5zIHshTG9uZ30gU2lnbmVkIGxvbmdcclxuICAgICAqIEBleHBvc2VcclxuICAgICAqL1xyXG4gICAgTG9uZy5wcm90b3R5cGUudG9TaWduZWQgPSBmdW5jdGlvbiB0b1NpZ25lZCgpIHtcclxuICAgICAgICBpZiAoIXRoaXMudW5zaWduZWQpXHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgICAgIHJldHVybiBuZXcgTG9uZyh0aGlzLmxvdywgdGhpcy5oaWdoLCBmYWxzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29udmVydHMgdGhpcyBMb25nIHRvIHVuc2lnbmVkLlxyXG4gICAgICogQHJldHVybnMgeyFMb25nfSBVbnNpZ25lZCBsb25nXHJcbiAgICAgKiBAZXhwb3NlXHJcbiAgICAgKi9cclxuICAgIExvbmcucHJvdG90eXBlLnRvVW5zaWduZWQgPSBmdW5jdGlvbiB0b1Vuc2lnbmVkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnVuc2lnbmVkKVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICByZXR1cm4gbmV3IExvbmcodGhpcy5sb3csIHRoaXMuaGlnaCwgdHJ1ZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBMb25nO1xyXG59KTtcclxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIEhlbHBlciBtb2R1bGUgdGhhdCBkb2VzIGNvbnZlcnNpb24gZnJvbSBhbHJlYWR5IHBhcnNlZCBwcm90b2J1ZidzXG4vLyBGaWxlRGVzY3JpcHRvclNldCB0byBKU09OLCB0aGF0IGNhbiBiZSB1c2VkIHRvIGluaXRpYWxpemUgUHJvdG9CdWYuanNcbi8vXG4vLyBUaGVvcmV0aWNhbGx5IHRoaXMgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnksIHNpbmNlIEZpbGVEZXNjcmlwdG9yU2V0IGlzIHByb3RvYnVmIFwibmF0aXZlXCIgZGVzY3JpcHRpb24sXG4vLyBidXQgUHJvdG9CdWYuanMgZG9lcyBOT1Qga25vdyBob3cgdG8gbWFrZSBCdWlsZGVyIGZyb20gRmlsZURlc2NyaXB0b3JTZXQsIGJ1dCBpdCBjYW4gYnVpbGQgaXQgZnJvbSBKU09OLlxuLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9kY29kZUlPL1Byb3RvQnVmLmpzL2lzc3Vlcy8yNTBcbi8vXG4vLyBUaGlzIGNvbnZlcnNpb24gaXMgcHJvYmFibHkgbm90IHZlcnkgc3RhYmxlIGFuZCBkb2VzIG5vdCBcInNjYWxlXCIgdGhhdCB3ZWxsLCBzaW5jZSBpdCdzXG4vLyBpbnRlbmRlZCBqdXN0IGZvciBvdXIgcmVsYXRpdmVseSBzbWFsbCB1c2VjYXNlLlxuLy8gQnV0IGl0IHdvcmtzIGhlcmUuXG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnByb3RvY29sVG9KU09OID0gcHJvdG9jb2xUb0pTT047XG5cbnZhciBfb2JqZWN0ID0gcmVxdWlyZShcIm9iamVjdC52YWx1ZXNcIik7XG5cbmlmICghT2JqZWN0LnZhbHVlcykge1xuICAoMCwgX29iamVjdC5zaGltKSgpO1xufWZ1bmN0aW9uIHByb3RvY29sVG9KU09OKHApIHtcbiAgLy8gVE9ETzogd2hhdCBpZiB0aGVyZSBhcmUgbW9yZSBmaWxlcz9cbiAgdmFyIHJlcyA9IGZpbGVUb0pTT04ocC5maWxlWzJdKTtcbiAgcmVzLmltcG9ydHMgPSBbZmlsZVRvSlNPTihwLmZpbGVbMV0pXTtcbiAgcmV0dXJuIHJlcztcbn1cblxuZnVuY3Rpb24gZmlsZVRvSlNPTihmKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgcmVzLnBhY2thZ2UgPSBmLnBhY2thZ2U7XG4gIHJlcy5vcHRpb25zID0gZi5vcHRpb25zO1xuICByZXMuc2VydmljZXMgPSBbXTtcbiAgdmFyIG1lc3NhZ2VzU2ltcGxlID0gT2JqZWN0LnZhbHVlcyhmLm1lc3NhZ2VfdHlwZSkubWFwKG1lc3NhZ2VUb0pTT04pO1xuICB2YXIgbWVzc2FnZXNSZWYgPSBleHRlbnNpb25Ub0pTT04oZi5leHRlbnNpb24pO1xuICByZXMubWVzc2FnZXMgPSBtZXNzYWdlc1JlZi5jb25jYXQobWVzc2FnZXNTaW1wbGUpO1xuICByZXMuZW51bXMgPSBPYmplY3QudmFsdWVzKGYuZW51bV90eXBlKS5tYXAoZW51bVRvSlNPTik7XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGVudW1Ub0pTT04oZW51bW0pIHtcbiAgdmFyIHJlcyA9IHt9O1xuICByZXMubmFtZSA9IGVudW1tLm5hbWU7XG4gIHJlcy52YWx1ZXMgPSBPYmplY3QudmFsdWVzKGVudW1tLnZhbHVlKS5tYXAoZW51bV92YWx1ZVRvSlNPTik7XG4gIHJlcy5vcHRpb25zID0ge307XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIGV4dGVuc2lvblRvSlNPTihleHRlbnNpb25zKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgT2JqZWN0LnZhbHVlcyhleHRlbnNpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChleHRlbnNpb24pIHtcbiAgICB2YXIgZXh0ZW5kZWUgPSBleHRlbnNpb24uZXh0ZW5kZWUuc2xpY2UoMSk7XG4gICAgaWYgKHJlc1tleHRlbmRlZV0gPT0gbnVsbCkge1xuICAgICAgcmVzW2V4dGVuZGVlXSA9IHt9O1xuICAgICAgcmVzW2V4dGVuZGVlXS5yZWYgPSBleHRlbmRlZTtcbiAgICAgIHJlc1tleHRlbmRlZV0uZmllbGRzID0gW107XG4gICAgfVxuICAgIHJlc1tleHRlbmRlZV0uZmllbGRzLnB1c2goZmllbGRUb0pTT04oZXh0ZW5zaW9uKSk7XG4gIH0pO1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhyZXMpO1xufVxuXG5mdW5jdGlvbiBlbnVtX3ZhbHVlVG9KU09OKHZhbCkge1xuICB2YXIgcmVzID0ge307XG4gIHJlcy5uYW1lID0gdmFsLm5hbWU7XG4gIHJlcy5pZCA9IHZhbC5udW1iZXI7XG4gIHJldHVybiByZXM7XG59XG5cbmZ1bmN0aW9uIG1lc3NhZ2VUb0pTT04obWVzc2FnZSkge1xuICB2YXIgcmVzID0ge307XG4gIHJlcy5lbnVtcyA9IFtdO1xuICByZXMubmFtZSA9IG1lc3NhZ2UubmFtZTtcbiAgcmVzLm9wdGlvbnMgPSBtZXNzYWdlLm9wdGlvbnMgfHwge307XG4gIHJlcy5tZXNzYWdlcyA9IFtdO1xuICByZXMuZmllbGRzID0gT2JqZWN0LnZhbHVlcyhtZXNzYWdlLmZpZWxkKS5tYXAoZmllbGRUb0pTT04pO1xuICByZXMub25lb2ZzID0ge307XG4gIHJldHVybiByZXM7XG59XG5cbnZhciB0eXBlX21hcCA9IHtcbiAgXCIxXCI6IFwiZG91YmxlXCIsXG4gIFwiMlwiOiBcImZsb2F0XCIsXG4gIFwiM1wiOiBcImludDY0XCIsXG4gIFwiNFwiOiBcInVpbnQ2NFwiLFxuICBcIjVcIjogXCJpbnQzMlwiLFxuICBcIjZcIjogXCJmaXhlZDY0XCIsXG4gIFwiN1wiOiBcImZpeGVkMzJcIixcbiAgXCI4XCI6IFwiYm9vbFwiLFxuICBcIjlcIjogXCJzdHJpbmdcIixcbiAgXCIxMFwiOiBcImdyb3VwXCIsXG4gIFwiMTFcIjogXCJtZXNzYWdlXCIsXG4gIFwiMTJcIjogXCJieXRlc1wiLFxuICBcIjEzXCI6IFwidWludDMyXCIsXG4gIFwiMTRcIjogXCJlbnVtXCIsXG4gIFwiMTVcIjogXCJzZml4ZWQzMlwiLFxuICBcIjE2XCI6IFwic2ZpeGVkNjRcIixcbiAgXCIxN1wiOiBcInNpbnQzMlwiLFxuICBcIjE4XCI6IFwic2ludDY0XCJcbn07XG5cbmZ1bmN0aW9uIGZpZWxkVG9KU09OKGZpZWxkKSB7XG4gIHZhciByZXMgPSB7fTtcbiAgaWYgKGZpZWxkLmxhYmVsID09PSAxKSB7XG4gICAgcmVzLnJ1bGUgPSBcIm9wdGlvbmFsXCI7XG4gIH1cbiAgaWYgKGZpZWxkLmxhYmVsID09PSAyKSB7XG4gICAgcmVzLnJ1bGUgPSBcInJlcXVpcmVkXCI7XG4gIH1cbiAgaWYgKGZpZWxkLmxhYmVsID09PSAzKSB7XG4gICAgcmVzLnJ1bGUgPSBcInJlcGVhdGVkXCI7XG4gIH1cbiAgcmVzLnR5cGUgPSB0eXBlX21hcFtmaWVsZC50eXBlXTtcbiAgaWYgKGZpZWxkLnR5cGVfbmFtZSkge1xuICAgIHJlcy50eXBlID0gZmllbGQudHlwZV9uYW1lLnNsaWNlKDEpO1xuICB9XG4gIHJlcy5uYW1lID0gZmllbGQubmFtZTtcbiAgcmVzLm9wdGlvbnMgPSBmaWVsZC5vcHRpb25zIHx8IHt9O1xuICByZXMuaWQgPSBmaWVsZC5udW1iZXI7XG4gIHJldHVybiByZXM7XG59IiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgZGVmaW5lID0gcmVxdWlyZSgnZGVmaW5lLXByb3BlcnRpZXMnKTtcblxudmFyIGltcGxlbWVudGF0aW9uID0gcmVxdWlyZSgnLi9pbXBsZW1lbnRhdGlvbicpO1xudmFyIGdldFBvbHlmaWxsID0gcmVxdWlyZSgnLi9wb2x5ZmlsbCcpO1xudmFyIHNoaW0gPSByZXF1aXJlKCcuL3NoaW0nKTtcblxudmFyIHBvbHlmaWxsID0gZ2V0UG9seWZpbGwoKTtcblxuZGVmaW5lKHBvbHlmaWxsLCB7XG5cdGdldFBvbHlmaWxsOiBnZXRQb2x5ZmlsbCxcblx0aW1wbGVtZW50YXRpb246IGltcGxlbWVudGF0aW9uLFxuXHRzaGltOiBzaGltXG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwb2x5ZmlsbDtcbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gbW9kaWZpZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW1cbnZhciBoYXMgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciBzbGljZSA9IEFycmF5LnByb3RvdHlwZS5zbGljZTtcbnZhciBpc0FyZ3MgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyk7XG52YXIgaXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBoYXNEb250RW51bUJ1ZyA9ICFpc0VudW1lcmFibGUuY2FsbCh7IHRvU3RyaW5nOiBudWxsIH0sICd0b1N0cmluZycpO1xudmFyIGhhc1Byb3RvRW51bUJ1ZyA9IGlzRW51bWVyYWJsZS5jYWxsKGZ1bmN0aW9uICgpIHt9LCAncHJvdG90eXBlJyk7XG52YXIgZG9udEVudW1zID0gW1xuXHQndG9TdHJpbmcnLFxuXHQndG9Mb2NhbGVTdHJpbmcnLFxuXHQndmFsdWVPZicsXG5cdCdoYXNPd25Qcm9wZXJ0eScsXG5cdCdpc1Byb3RvdHlwZU9mJyxcblx0J3Byb3BlcnR5SXNFbnVtZXJhYmxlJyxcblx0J2NvbnN0cnVjdG9yJ1xuXTtcbnZhciBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZSA9IGZ1bmN0aW9uIChvKSB7XG5cdHZhciBjdG9yID0gby5jb25zdHJ1Y3Rvcjtcblx0cmV0dXJuIGN0b3IgJiYgY3Rvci5wcm90b3R5cGUgPT09IG87XG59O1xudmFyIGV4Y2x1ZGVkS2V5cyA9IHtcblx0JGFwcGxpY2F0aW9uQ2FjaGU6IHRydWUsXG5cdCRjb25zb2xlOiB0cnVlLFxuXHQkZXh0ZXJuYWw6IHRydWUsXG5cdCRmcmFtZTogdHJ1ZSxcblx0JGZyYW1lRWxlbWVudDogdHJ1ZSxcblx0JGZyYW1lczogdHJ1ZSxcblx0JGlubmVySGVpZ2h0OiB0cnVlLFxuXHQkaW5uZXJXaWR0aDogdHJ1ZSxcblx0JG91dGVySGVpZ2h0OiB0cnVlLFxuXHQkb3V0ZXJXaWR0aDogdHJ1ZSxcblx0JHBhZ2VYT2Zmc2V0OiB0cnVlLFxuXHQkcGFnZVlPZmZzZXQ6IHRydWUsXG5cdCRwYXJlbnQ6IHRydWUsXG5cdCRzY3JvbGxMZWZ0OiB0cnVlLFxuXHQkc2Nyb2xsVG9wOiB0cnVlLFxuXHQkc2Nyb2xsWDogdHJ1ZSxcblx0JHNjcm9sbFk6IHRydWUsXG5cdCRzZWxmOiB0cnVlLFxuXHQkd2Via2l0SW5kZXhlZERCOiB0cnVlLFxuXHQkd2Via2l0U3RvcmFnZUluZm86IHRydWUsXG5cdCR3aW5kb3c6IHRydWVcbn07XG52YXIgaGFzQXV0b21hdGlvbkVxdWFsaXR5QnVnID0gKGZ1bmN0aW9uICgpIHtcblx0LyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGZvciAodmFyIGsgaW4gd2luZG93KSB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICghZXhjbHVkZWRLZXlzWyckJyArIGtdICYmIGhhcy5jYWxsKHdpbmRvdywgaykgJiYgd2luZG93W2tdICE9PSBudWxsICYmIHR5cGVvZiB3aW5kb3dba10gPT09ICdvYmplY3QnKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0ZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGUod2luZG93W2tdKTtcblx0XHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBmYWxzZTtcbn0oKSk7XG52YXIgZXF1YWxzQ29uc3RydWN0b3JQcm90b3R5cGVJZk5vdEJ1Z2d5ID0gZnVuY3Rpb24gKG8pIHtcblx0LyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcgfHwgIWhhc0F1dG9tYXRpb25FcXVhbGl0eUJ1Zykge1xuXHRcdHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvKTtcblx0fVxuXHR0cnkge1xuXHRcdHJldHVybiBlcXVhbHNDb25zdHJ1Y3RvclByb3RvdHlwZShvKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufTtcblxudmFyIGtleXNTaGltID0gZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcblx0dmFyIGlzT2JqZWN0ID0gb2JqZWN0ICE9PSBudWxsICYmIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnO1xuXHR2YXIgaXNGdW5jdGlvbiA9IHRvU3RyLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgRnVuY3Rpb25dJztcblx0dmFyIGlzQXJndW1lbnRzID0gaXNBcmdzKG9iamVjdCk7XG5cdHZhciBpc1N0cmluZyA9IGlzT2JqZWN0ICYmIHRvU3RyLmNhbGwob2JqZWN0KSA9PT0gJ1tvYmplY3QgU3RyaW5nXSc7XG5cdHZhciB0aGVLZXlzID0gW107XG5cblx0aWYgKCFpc09iamVjdCAmJiAhaXNGdW5jdGlvbiAmJiAhaXNBcmd1bWVudHMpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3Qua2V5cyBjYWxsZWQgb24gYSBub24tb2JqZWN0Jyk7XG5cdH1cblxuXHR2YXIgc2tpcFByb3RvID0gaGFzUHJvdG9FbnVtQnVnICYmIGlzRnVuY3Rpb247XG5cdGlmIChpc1N0cmluZyAmJiBvYmplY3QubGVuZ3RoID4gMCAmJiAhaGFzLmNhbGwob2JqZWN0LCAwKSkge1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgb2JqZWN0Lmxlbmd0aDsgKytpKSB7XG5cdFx0XHR0aGVLZXlzLnB1c2goU3RyaW5nKGkpKTtcblx0XHR9XG5cdH1cblxuXHRpZiAoaXNBcmd1bWVudHMgJiYgb2JqZWN0Lmxlbmd0aCA+IDApIHtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IG9iamVjdC5sZW5ndGg7ICsraikge1xuXHRcdFx0dGhlS2V5cy5wdXNoKFN0cmluZyhqKSk7XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdGZvciAodmFyIG5hbWUgaW4gb2JqZWN0KSB7XG5cdFx0XHRpZiAoIShza2lwUHJvdG8gJiYgbmFtZSA9PT0gJ3Byb3RvdHlwZScpICYmIGhhcy5jYWxsKG9iamVjdCwgbmFtZSkpIHtcblx0XHRcdFx0dGhlS2V5cy5wdXNoKFN0cmluZyhuYW1lKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0aWYgKGhhc0RvbnRFbnVtQnVnKSB7XG5cdFx0dmFyIHNraXBDb25zdHJ1Y3RvciA9IGVxdWFsc0NvbnN0cnVjdG9yUHJvdG90eXBlSWZOb3RCdWdneShvYmplY3QpO1xuXG5cdFx0Zm9yICh2YXIgayA9IDA7IGsgPCBkb250RW51bXMubGVuZ3RoOyArK2spIHtcblx0XHRcdGlmICghKHNraXBDb25zdHJ1Y3RvciAmJiBkb250RW51bXNba10gPT09ICdjb25zdHJ1Y3RvcicpICYmIGhhcy5jYWxsKG9iamVjdCwgZG9udEVudW1zW2tdKSkge1xuXHRcdFx0XHR0aGVLZXlzLnB1c2goZG9udEVudW1zW2tdKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIHRoZUtleXM7XG59O1xuXG5rZXlzU2hpbS5zaGltID0gZnVuY3Rpb24gc2hpbU9iamVjdEtleXMoKSB7XG5cdGlmIChPYmplY3Qua2V5cykge1xuXHRcdHZhciBrZXlzV29ya3NXaXRoQXJndW1lbnRzID0gKGZ1bmN0aW9uICgpIHtcblx0XHRcdC8vIFNhZmFyaSA1LjAgYnVnXG5cdFx0XHRyZXR1cm4gKE9iamVjdC5rZXlzKGFyZ3VtZW50cykgfHwgJycpLmxlbmd0aCA9PT0gMjtcblx0XHR9KDEsIDIpKTtcblx0XHRpZiAoIWtleXNXb3Jrc1dpdGhBcmd1bWVudHMpIHtcblx0XHRcdHZhciBvcmlnaW5hbEtleXMgPSBPYmplY3Qua2V5cztcblx0XHRcdE9iamVjdC5rZXlzID0gZnVuY3Rpb24ga2V5cyhvYmplY3QpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBmdW5jLW5hbWUtbWF0Y2hpbmdcblx0XHRcdFx0aWYgKGlzQXJncyhvYmplY3QpKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9yaWdpbmFsS2V5cyhzbGljZS5jYWxsKG9iamVjdCkpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHJldHVybiBvcmlnaW5hbEtleXMob2JqZWN0KTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0T2JqZWN0LmtleXMgPSBrZXlzU2hpbTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LmtleXMgfHwga2V5c1NoaW07XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXNTaGltO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzQXJndW1lbnRzKHZhbHVlKSB7XG5cdHZhciBzdHIgPSB0b1N0ci5jYWxsKHZhbHVlKTtcblx0dmFyIGlzQXJncyA9IHN0ciA9PT0gJ1tvYmplY3QgQXJndW1lbnRzXSc7XG5cdGlmICghaXNBcmdzKSB7XG5cdFx0aXNBcmdzID0gc3RyICE9PSAnW29iamVjdCBBcnJheV0nICYmXG5cdFx0XHR2YWx1ZSAhPT0gbnVsbCAmJlxuXHRcdFx0dHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuXHRcdFx0dHlwZW9mIHZhbHVlLmxlbmd0aCA9PT0gJ251bWJlcicgJiZcblx0XHRcdHZhbHVlLmxlbmd0aCA+PSAwICYmXG5cdFx0XHR0b1N0ci5jYWxsKHZhbHVlLmNhbGxlZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSc7XG5cdH1cblx0cmV0dXJuIGlzQXJncztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9lczIwMTYnKTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIEVTMjAxNSA9IHJlcXVpcmUoJy4vZXMyMDE1Jyk7XG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9oZWxwZXJzL2Fzc2lnbicpO1xuXG52YXIgRVMyMDE2ID0gYXNzaWduKGFzc2lnbih7fSwgRVMyMDE1KSwge1xuXHQvLyBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9lY21hMjYyL3B1bGwvNjBcblx0U2FtZVZhbHVlTm9uTnVtYmVyOiBmdW5jdGlvbiBTYW1lVmFsdWVOb25OdW1iZXIoeCwgeSkge1xuXHRcdGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHggIT09IHR5cGVvZiB5KSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdTYW1lVmFsdWVOb25OdW1iZXIgcmVxdWlyZXMgdHdvIG5vbi1udW1iZXIgdmFsdWVzIG9mIHRoZSBzYW1lIHR5cGUuJyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLlNhbWVWYWx1ZSh4LCB5KTtcblx0fVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRVMyMDE2O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzID0gcmVxdWlyZSgnaGFzJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCdlcy10by1wcmltaXRpdmUvZXM2Jyk7XG5cbnZhciBHZXRJbnRyaW5zaWMgPSByZXF1aXJlKCcuL0dldEludHJpbnNpYycpO1xuXG52YXIgJFR5cGVFcnJvciA9IEdldEludHJpbnNpYygnJVR5cGVFcnJvciUnKTtcbnZhciAkU3ludGF4RXJyb3IgPSBHZXRJbnRyaW5zaWMoJyVTeW50YXhFcnJvciUnKTtcbnZhciAkQXJyYXkgPSBHZXRJbnRyaW5zaWMoJyVBcnJheSUnKTtcbnZhciAkU3RyaW5nID0gR2V0SW50cmluc2ljKCclU3RyaW5nJScpO1xudmFyICRPYmplY3QgPSBHZXRJbnRyaW5zaWMoJyVPYmplY3QlJyk7XG52YXIgJE51bWJlciA9IEdldEludHJpbnNpYygnJU51bWJlciUnKTtcbnZhciAkU3ltYm9sID0gR2V0SW50cmluc2ljKCclU3ltYm9sJScsIHRydWUpO1xudmFyICRSZWdFeHAgPSBHZXRJbnRyaW5zaWMoJyVSZWdFeHAlJyk7XG5cbnZhciBoYXNTeW1ib2xzID0gISEkU3ltYm9sO1xuXG52YXIgJGlzTmFOID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzTmFOJyk7XG52YXIgJGlzRmluaXRlID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzRmluaXRlJyk7XG52YXIgTUFYX1NBRkVfSU5URUdFUiA9ICROdW1iZXIuTUFYX1NBRkVfSU5URUdFUiB8fCBNYXRoLnBvdygyLCA1MykgLSAxO1xuXG52YXIgYXNzaWduID0gcmVxdWlyZSgnLi9oZWxwZXJzL2Fzc2lnbicpO1xudmFyIHNpZ24gPSByZXF1aXJlKCcuL2hlbHBlcnMvc2lnbicpO1xudmFyIG1vZCA9IHJlcXVpcmUoJy4vaGVscGVycy9tb2QnKTtcbnZhciBpc1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vaGVscGVycy9pc1ByaW1pdGl2ZScpO1xudmFyIHBhcnNlSW50ZWdlciA9IHBhcnNlSW50O1xudmFyIGJpbmQgPSByZXF1aXJlKCdmdW5jdGlvbi1iaW5kJyk7XG52YXIgYXJyYXlTbGljZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCAkQXJyYXkucHJvdG90eXBlLnNsaWNlKTtcbnZhciBzdHJTbGljZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCAkU3RyaW5nLnByb3RvdHlwZS5zbGljZSk7XG52YXIgaXNCaW5hcnkgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgJFJlZ0V4cC5wcm90b3R5cGUudGVzdCwgL14wYlswMV0rJC9pKTtcbnZhciBpc09jdGFsID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsICRSZWdFeHAucHJvdG90eXBlLnRlc3QsIC9eMG9bMC03XSskL2kpO1xudmFyIHJlZ2V4RXhlYyA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCAkUmVnRXhwLnByb3RvdHlwZS5leGVjKTtcbnZhciBub25XUyA9IFsnXFx1MDA4NScsICdcXHUyMDBiJywgJ1xcdWZmZmUnXS5qb2luKCcnKTtcbnZhciBub25XU3JlZ2V4ID0gbmV3ICRSZWdFeHAoJ1snICsgbm9uV1MgKyAnXScsICdnJyk7XG52YXIgaGFzTm9uV1MgPSBiaW5kLmNhbGwoRnVuY3Rpb24uY2FsbCwgJFJlZ0V4cC5wcm90b3R5cGUudGVzdCwgbm9uV1NyZWdleCk7XG52YXIgaW52YWxpZEhleExpdGVyYWwgPSAvXlstK10weFswLTlhLWZdKyQvaTtcbnZhciBpc0ludmFsaWRIZXhMaXRlcmFsID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsICRSZWdFeHAucHJvdG90eXBlLnRlc3QsIGludmFsaWRIZXhMaXRlcmFsKTtcbnZhciAkY2hhckNvZGVBdCA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCAkU3RyaW5nLnByb3RvdHlwZS5jaGFyQ29kZUF0KTtcblxudmFyIHRvU3RyID0gYmluZC5jYWxsKEZ1bmN0aW9uLmNhbGwsIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpO1xuXG52YXIgJGZsb29yID0gTWF0aC5mbG9vcjtcbnZhciAkYWJzID0gTWF0aC5hYnM7XG5cbnZhciAkT2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcbnZhciAkZ09QRCA9ICRPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yO1xuXG52YXIgJGlzRXh0ZW5zaWJsZSA9ICRPYmplY3QuaXNFeHRlbnNpYmxlO1xuXG4vLyB3aGl0ZXNwYWNlIGZyb206IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuNS40LjIwXG4vLyBpbXBsZW1lbnRhdGlvbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbS9ibG9iL3YzLjQuMC9lczUtc2hpbS5qcyNMMTMwNC1MMTMyNFxudmFyIHdzID0gW1xuXHQnXFx4MDlcXHgwQVxceDBCXFx4MENcXHgwRFxceDIwXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDBcXHUyMDAxXFx1MjAwMlxcdTIwMDMnLFxuXHQnXFx1MjAwNFxcdTIwMDVcXHUyMDA2XFx1MjAwN1xcdTIwMDhcXHUyMDA5XFx1MjAwQVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdTIwMjgnLFxuXHQnXFx1MjAyOVxcdUZFRkYnXG5dLmpvaW4oJycpO1xudmFyIHRyaW1SZWdleCA9IG5ldyBSZWdFeHAoJyheWycgKyB3cyArICddKyl8KFsnICsgd3MgKyAnXSskKScsICdnJyk7XG52YXIgcmVwbGFjZSA9IGJpbmQuY2FsbChGdW5jdGlvbi5jYWxsLCAkU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKTtcbnZhciB0cmltID0gZnVuY3Rpb24gKHZhbHVlKSB7XG5cdHJldHVybiByZXBsYWNlKHZhbHVlLCB0cmltUmVnZXgsICcnKTtcbn07XG5cbnZhciBFUzUgPSByZXF1aXJlKCcuL2VzNScpO1xuXG52YXIgaGFzUmVnRXhwTWF0Y2hlciA9IHJlcXVpcmUoJ2lzLXJlZ2V4Jyk7XG5cbi8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1hYnN0cmFjdC1vcGVyYXRpb25zXG52YXIgRVM2ID0gYXNzaWduKGFzc2lnbih7fSwgRVM1KSwge1xuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1jYWxsLWYtdi1hcmdzXG5cdENhbGw6IGZ1bmN0aW9uIENhbGwoRiwgVikge1xuXHRcdHZhciBhcmdzID0gYXJndW1lbnRzLmxlbmd0aCA+IDIgPyBhcmd1bWVudHNbMl0gOiBbXTtcblx0XHRpZiAoIXRoaXMuSXNDYWxsYWJsZShGKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoRiArICcgaXMgbm90IGEgZnVuY3Rpb24nKTtcblx0XHR9XG5cdFx0cmV0dXJuIEYuYXBwbHkoViwgYXJncyk7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvcHJpbWl0aXZlXG5cdFRvUHJpbWl0aXZlOiB0b1ByaW1pdGl2ZSxcblxuXHQvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9ib29sZWFuXG5cdC8vIFRvQm9vbGVhbjogRVM1LlRvQm9vbGVhbixcblxuXHQvLyBodHRwczovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtdG9udW1iZXJcblx0VG9OdW1iZXI6IGZ1bmN0aW9uIFRvTnVtYmVyKGFyZ3VtZW50KSB7XG5cdFx0dmFyIHZhbHVlID0gaXNQcmltaXRpdmUoYXJndW1lbnQpID8gYXJndW1lbnQgOiB0b1ByaW1pdGl2ZShhcmd1bWVudCwgJE51bWJlcik7XG5cdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N5bWJvbCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdDYW5ub3QgY29udmVydCBhIFN5bWJvbCB2YWx1ZSB0byBhIG51bWJlcicpO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuXHRcdFx0aWYgKGlzQmluYXJ5KHZhbHVlKSkge1xuXHRcdFx0XHRyZXR1cm4gdGhpcy5Ub051bWJlcihwYXJzZUludGVnZXIoc3RyU2xpY2UodmFsdWUsIDIpLCAyKSk7XG5cdFx0XHR9IGVsc2UgaWYgKGlzT2N0YWwodmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLlRvTnVtYmVyKHBhcnNlSW50ZWdlcihzdHJTbGljZSh2YWx1ZSwgMiksIDgpKTtcblx0XHRcdH0gZWxzZSBpZiAoaGFzTm9uV1ModmFsdWUpIHx8IGlzSW52YWxpZEhleExpdGVyYWwodmFsdWUpKSB7XG5cdFx0XHRcdHJldHVybiBOYU47XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR2YXIgdHJpbW1lZCA9IHRyaW0odmFsdWUpO1xuXHRcdFx0XHRpZiAodHJpbW1lZCAhPT0gdmFsdWUpIHtcblx0XHRcdFx0XHRyZXR1cm4gdGhpcy5Ub051bWJlcih0cmltbWVkKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gJE51bWJlcih2YWx1ZSk7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvaW50ZWdlclxuXHQvLyBUb0ludGVnZXI6IEVTNS5Ub051bWJlcixcblxuXHQvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9pbnQzMlxuXHQvLyBUb0ludDMyOiBFUzUuVG9JbnQzMixcblxuXHQvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG91aW50MzJcblx0Ly8gVG9VaW50MzI6IEVTNS5Ub1VpbnQzMixcblxuXHQvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9pbnQxNlxuXHRUb0ludDE2OiBmdW5jdGlvbiBUb0ludDE2KGFyZ3VtZW50KSB7XG5cdFx0dmFyIGludDE2Yml0ID0gdGhpcy5Ub1VpbnQxNihhcmd1bWVudCk7XG5cdFx0cmV0dXJuIGludDE2Yml0ID49IDB4ODAwMCA/IGludDE2Yml0IC0gMHgxMDAwMCA6IGludDE2Yml0O1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy10b3VpbnQxNlxuXHQvLyBUb1VpbnQxNjogRVM1LlRvVWludDE2LFxuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy10b2ludDhcblx0VG9JbnQ4OiBmdW5jdGlvbiBUb0ludDgoYXJndW1lbnQpIHtcblx0XHR2YXIgaW50OGJpdCA9IHRoaXMuVG9VaW50OChhcmd1bWVudCk7XG5cdFx0cmV0dXJuIGludDhiaXQgPj0gMHg4MCA/IGludDhiaXQgLSAweDEwMCA6IGludDhiaXQ7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvdWludDhcblx0VG9VaW50ODogZnVuY3Rpb24gVG9VaW50OChhcmd1bWVudCkge1xuXHRcdHZhciBudW1iZXIgPSB0aGlzLlRvTnVtYmVyKGFyZ3VtZW50KTtcblx0XHRpZiAoJGlzTmFOKG51bWJlcikgfHwgbnVtYmVyID09PSAwIHx8ICEkaXNGaW5pdGUobnVtYmVyKSkgeyByZXR1cm4gMDsgfVxuXHRcdHZhciBwb3NJbnQgPSBzaWduKG51bWJlcikgKiAkZmxvb3IoJGFicyhudW1iZXIpKTtcblx0XHRyZXR1cm4gbW9kKHBvc0ludCwgMHgxMDApO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy10b3VpbnQ4Y2xhbXBcblx0VG9VaW50OENsYW1wOiBmdW5jdGlvbiBUb1VpbnQ4Q2xhbXAoYXJndW1lbnQpIHtcblx0XHR2YXIgbnVtYmVyID0gdGhpcy5Ub051bWJlcihhcmd1bWVudCk7XG5cdFx0aWYgKCRpc05hTihudW1iZXIpIHx8IG51bWJlciA8PSAwKSB7IHJldHVybiAwOyB9XG5cdFx0aWYgKG51bWJlciA+PSAweEZGKSB7IHJldHVybiAweEZGOyB9XG5cdFx0dmFyIGYgPSAkZmxvb3IoYXJndW1lbnQpO1xuXHRcdGlmIChmICsgMC41IDwgbnVtYmVyKSB7IHJldHVybiBmICsgMTsgfVxuXHRcdGlmIChudW1iZXIgPCBmICsgMC41KSB7IHJldHVybiBmOyB9XG5cdFx0aWYgKGYgJSAyICE9PSAwKSB7IHJldHVybiBmICsgMTsgfVxuXHRcdHJldHVybiBmO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy10b3N0cmluZ1xuXHRUb1N0cmluZzogZnVuY3Rpb24gVG9TdHJpbmcoYXJndW1lbnQpIHtcblx0XHRpZiAodHlwZW9mIGFyZ3VtZW50ID09PSAnc3ltYm9sJykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Nhbm5vdCBjb252ZXJ0IGEgU3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nJyk7XG5cdFx0fVxuXHRcdHJldHVybiAkU3RyaW5nKGFyZ3VtZW50KTtcblx0fSxcblxuXHQvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtdG9vYmplY3Rcblx0VG9PYmplY3Q6IGZ1bmN0aW9uIFRvT2JqZWN0KHZhbHVlKSB7XG5cdFx0dGhpcy5SZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHZhbHVlKTtcblx0XHRyZXR1cm4gJE9iamVjdCh2YWx1ZSk7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvcHJvcGVydHlrZXlcblx0VG9Qcm9wZXJ0eUtleTogZnVuY3Rpb24gVG9Qcm9wZXJ0eUtleShhcmd1bWVudCkge1xuXHRcdHZhciBrZXkgPSB0aGlzLlRvUHJpbWl0aXZlKGFyZ3VtZW50LCAkU3RyaW5nKTtcblx0XHRyZXR1cm4gdHlwZW9mIGtleSA9PT0gJ3N5bWJvbCcgPyBrZXkgOiB0aGlzLlRvU3RyaW5nKGtleSk7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXRvbGVuZ3RoXG5cdFRvTGVuZ3RoOiBmdW5jdGlvbiBUb0xlbmd0aChhcmd1bWVudCkge1xuXHRcdHZhciBsZW4gPSB0aGlzLlRvSW50ZWdlcihhcmd1bWVudCk7XG5cdFx0aWYgKGxlbiA8PSAwKSB7IHJldHVybiAwOyB9IC8vIGluY2x1ZGVzIGNvbnZlcnRpbmcgLTAgdG8gKzBcblx0XHRpZiAobGVuID4gTUFYX1NBRkVfSU5URUdFUikgeyByZXR1cm4gTUFYX1NBRkVfSU5URUdFUjsgfVxuXHRcdHJldHVybiBsZW47XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWNhbm9uaWNhbG51bWVyaWNpbmRleHN0cmluZ1xuXHRDYW5vbmljYWxOdW1lcmljSW5kZXhTdHJpbmc6IGZ1bmN0aW9uIENhbm9uaWNhbE51bWVyaWNJbmRleFN0cmluZyhhcmd1bWVudCkge1xuXHRcdGlmICh0b1N0cihhcmd1bWVudCkgIT09ICdbb2JqZWN0IFN0cmluZ10nKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignbXVzdCBiZSBhIHN0cmluZycpO1xuXHRcdH1cblx0XHRpZiAoYXJndW1lbnQgPT09ICctMCcpIHsgcmV0dXJuIC0wOyB9XG5cdFx0dmFyIG4gPSB0aGlzLlRvTnVtYmVyKGFyZ3VtZW50KTtcblx0XHRpZiAodGhpcy5TYW1lVmFsdWUodGhpcy5Ub1N0cmluZyhuKSwgYXJndW1lbnQpKSB7IHJldHVybiBuOyB9XG5cdFx0cmV0dXJuIHZvaWQgMDtcblx0fSxcblxuXHQvLyBodHRwczovL3Blb3BsZS5tb3ppbGxhLm9yZy9+am9yZW5kb3JmZi9lczYtZHJhZnQuaHRtbCNzZWMtcmVxdWlyZW9iamVjdGNvZXJjaWJsZVxuXHRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlOiBFUzUuQ2hlY2tPYmplY3RDb2VyY2libGUsXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWlzYXJyYXlcblx0SXNBcnJheTogJEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gSXNBcnJheShhcmd1bWVudCkge1xuXHRcdHJldHVybiB0b1N0cihhcmd1bWVudCkgPT09ICdbb2JqZWN0IEFycmF5XSc7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWlzY2FsbGFibGVcblx0Ly8gSXNDYWxsYWJsZTogRVM1LklzQ2FsbGFibGUsXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWlzY29uc3RydWN0b3Jcblx0SXNDb25zdHJ1Y3RvcjogZnVuY3Rpb24gSXNDb25zdHJ1Y3Rvcihhcmd1bWVudCkge1xuXHRcdHJldHVybiB0eXBlb2YgYXJndW1lbnQgPT09ICdmdW5jdGlvbicgJiYgISFhcmd1bWVudC5wcm90b3R5cGU7IC8vIHVuZm9ydHVuYXRlbHkgdGhlcmUncyBubyB3YXkgdG8gdHJ1bHkgY2hlY2sgdGhpcyB3aXRob3V0IHRyeS9jYXRjaCBgbmV3IGFyZ3VtZW50YFxuXHR9LFxuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1pc2V4dGVuc2libGUtb1xuXHRJc0V4dGVuc2libGU6IE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9uc1xuXHRcdD8gZnVuY3Rpb24gSXNFeHRlbnNpYmxlKG9iaikge1xuXHRcdFx0aWYgKGlzUHJpbWl0aXZlKG9iaikpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuICRpc0V4dGVuc2libGUob2JqKTtcblx0XHR9XG5cdFx0OiBmdW5jdGlvbiBpc0V4dGVuc2libGUob2JqKSB7IHJldHVybiB0cnVlOyB9LCAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLWlzaW50ZWdlclxuXHRJc0ludGVnZXI6IGZ1bmN0aW9uIElzSW50ZWdlcihhcmd1bWVudCkge1xuXHRcdGlmICh0eXBlb2YgYXJndW1lbnQgIT09ICdudW1iZXInIHx8ICRpc05hTihhcmd1bWVudCkgfHwgISRpc0Zpbml0ZShhcmd1bWVudCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0dmFyIGFicyA9ICRhYnMoYXJndW1lbnQpO1xuXHRcdHJldHVybiAkZmxvb3IoYWJzKSA9PT0gYWJzO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1pc3Byb3BlcnR5a2V5XG5cdElzUHJvcGVydHlLZXk6IGZ1bmN0aW9uIElzUHJvcGVydHlLZXkoYXJndW1lbnQpIHtcblx0XHRyZXR1cm4gdHlwZW9mIGFyZ3VtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXJndW1lbnQgPT09ICdzeW1ib2wnO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pc3JlZ2V4cFxuXHRJc1JlZ0V4cDogZnVuY3Rpb24gSXNSZWdFeHAoYXJndW1lbnQpIHtcblx0XHRpZiAoIWFyZ3VtZW50IHx8IHR5cGVvZiBhcmd1bWVudCAhPT0gJ29iamVjdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0aWYgKGhhc1N5bWJvbHMpIHtcblx0XHRcdHZhciBpc1JlZ0V4cCA9IGFyZ3VtZW50WyRTeW1ib2wubWF0Y2hdO1xuXHRcdFx0aWYgKHR5cGVvZiBpc1JlZ0V4cCAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdFx0cmV0dXJuIEVTNS5Ub0Jvb2xlYW4oaXNSZWdFeHApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gaGFzUmVnRXhwTWF0Y2hlcihhcmd1bWVudCk7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXNhbWV2YWx1ZVxuXHQvLyBTYW1lVmFsdWU6IEVTNS5TYW1lVmFsdWUsXG5cblx0Ly8gaHR0cHM6Ly9wZW9wbGUubW96aWxsYS5vcmcvfmpvcmVuZG9yZmYvZXM2LWRyYWZ0Lmh0bWwjc2VjLXNhbWV2YWx1ZXplcm9cblx0U2FtZVZhbHVlWmVybzogZnVuY3Rpb24gU2FtZVZhbHVlWmVybyh4LCB5KSB7XG5cdFx0cmV0dXJuICh4ID09PSB5KSB8fCAoJGlzTmFOKHgpICYmICRpc05hTih5KSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIDcuMy4yIEdldFYgKFYsIFApXG5cdCAqIDEuIEFzc2VydDogSXNQcm9wZXJ0eUtleShQKSBpcyB0cnVlLlxuXHQgKiAyLiBMZXQgTyBiZSBUb09iamVjdChWKS5cblx0ICogMy4gUmV0dXJuSWZBYnJ1cHQoTykuXG5cdCAqIDQuIFJldHVybiBPLltbR2V0XV0oUCwgVikuXG5cdCAqL1xuXHRHZXRWOiBmdW5jdGlvbiBHZXRWKFYsIFApIHtcblx0XHQvLyA3LjMuMi4xXG5cdFx0aWYgKCF0aGlzLklzUHJvcGVydHlLZXkoUCkpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBJc1Byb3BlcnR5S2V5KFApIGlzIG5vdCB0cnVlJyk7XG5cdFx0fVxuXG5cdFx0Ly8gNy4zLjIuMi0zXG5cdFx0dmFyIE8gPSB0aGlzLlRvT2JqZWN0KFYpO1xuXG5cdFx0Ly8gNy4zLjIuNFxuXHRcdHJldHVybiBPW1BdO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiA3LjMuOSAtIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRtZXRob2Rcblx0ICogMS4gQXNzZXJ0OiBJc1Byb3BlcnR5S2V5KFApIGlzIHRydWUuXG5cdCAqIDIuIExldCBmdW5jIGJlIEdldFYoTywgUCkuXG5cdCAqIDMuIFJldHVybklmQWJydXB0KGZ1bmMpLlxuXHQgKiA0LiBJZiBmdW5jIGlzIGVpdGhlciB1bmRlZmluZWQgb3IgbnVsbCwgcmV0dXJuIHVuZGVmaW5lZC5cblx0ICogNS4gSWYgSXNDYWxsYWJsZShmdW5jKSBpcyBmYWxzZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLlxuXHQgKiA2LiBSZXR1cm4gZnVuYy5cblx0ICovXG5cdEdldE1ldGhvZDogZnVuY3Rpb24gR2V0TWV0aG9kKE8sIFApIHtcblx0XHQvLyA3LjMuOS4xXG5cdFx0aWYgKCF0aGlzLklzUHJvcGVydHlLZXkoUCkpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBJc1Byb3BlcnR5S2V5KFApIGlzIG5vdCB0cnVlJyk7XG5cdFx0fVxuXG5cdFx0Ly8gNy4zLjkuMlxuXHRcdHZhciBmdW5jID0gdGhpcy5HZXRWKE8sIFApO1xuXG5cdFx0Ly8gNy4zLjkuNFxuXHRcdGlmIChmdW5jID09IG51bGwpIHtcblx0XHRcdHJldHVybiB2b2lkIDA7XG5cdFx0fVxuXG5cdFx0Ly8gNy4zLjkuNVxuXHRcdGlmICghdGhpcy5Jc0NhbGxhYmxlKGZ1bmMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcihQICsgJ2lzIG5vdCBhIGZ1bmN0aW9uJyk7XG5cdFx0fVxuXG5cdFx0Ly8gNy4zLjkuNlxuXHRcdHJldHVybiBmdW5jO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiA3LjMuMSBHZXQgKE8sIFApIC0gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWdldC1vLXBcblx0ICogMS4gQXNzZXJ0OiBUeXBlKE8pIGlzIE9iamVjdC5cblx0ICogMi4gQXNzZXJ0OiBJc1Byb3BlcnR5S2V5KFApIGlzIHRydWUuXG5cdCAqIDMuIFJldHVybiBPLltbR2V0XV0oUCwgTykuXG5cdCAqL1xuXHRHZXQ6IGZ1bmN0aW9uIEdldChPLCBQKSB7XG5cdFx0Ly8gNy4zLjEuMVxuXHRcdGlmICh0aGlzLlR5cGUoTykgIT09ICdPYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogVHlwZShPKSBpcyBub3QgT2JqZWN0Jyk7XG5cdFx0fVxuXHRcdC8vIDcuMy4xLjJcblx0XHRpZiAoIXRoaXMuSXNQcm9wZXJ0eUtleShQKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Fzc2VydGlvbiBmYWlsZWQ6IElzUHJvcGVydHlLZXkoUCkgaXMgbm90IHRydWUnKTtcblx0XHR9XG5cdFx0Ly8gNy4zLjEuM1xuXHRcdHJldHVybiBPW1BdO1xuXHR9LFxuXG5cdFR5cGU6IGZ1bmN0aW9uIFR5cGUoeCkge1xuXHRcdGlmICh0eXBlb2YgeCA9PT0gJ3N5bWJvbCcpIHtcblx0XHRcdHJldHVybiAnU3ltYm9sJztcblx0XHR9XG5cdFx0cmV0dXJuIEVTNS5UeXBlKHgpO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1zcGVjaWVzY29uc3RydWN0b3Jcblx0U3BlY2llc0NvbnN0cnVjdG9yOiBmdW5jdGlvbiBTcGVjaWVzQ29uc3RydWN0b3IoTywgZGVmYXVsdENvbnN0cnVjdG9yKSB7XG5cdFx0aWYgKHRoaXMuVHlwZShPKSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBUeXBlKE8pIGlzIG5vdCBPYmplY3QnKTtcblx0XHR9XG5cdFx0dmFyIEMgPSBPLmNvbnN0cnVjdG9yO1xuXHRcdGlmICh0eXBlb2YgQyA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0XHRcdHJldHVybiBkZWZhdWx0Q29uc3RydWN0b3I7XG5cdFx0fVxuXHRcdGlmICh0aGlzLlR5cGUoQykgIT09ICdPYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignTy5jb25zdHJ1Y3RvciBpcyBub3QgYW4gT2JqZWN0Jyk7XG5cdFx0fVxuXHRcdHZhciBTID0gaGFzU3ltYm9scyAmJiAkU3ltYm9sLnNwZWNpZXMgPyBDWyRTeW1ib2wuc3BlY2llc10gOiB2b2lkIDA7XG5cdFx0aWYgKFMgPT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGRlZmF1bHRDb25zdHJ1Y3Rvcjtcblx0XHR9XG5cdFx0aWYgKHRoaXMuSXNDb25zdHJ1Y3RvcihTKSkge1xuXHRcdFx0cmV0dXJuIFM7XG5cdFx0fVxuXHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdubyBjb25zdHJ1Y3RvciBmb3VuZCcpO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1jb21wbGV0ZXByb3BlcnR5ZGVzY3JpcHRvclxuXHRDb21wbGV0ZVByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gQ29tcGxldGVQcm9wZXJ0eURlc2NyaXB0b3IoRGVzYykge1xuXHRcdGlmICghdGhpcy5Jc1Byb3BlcnR5RGVzY3JpcHRvcihEZXNjKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Rlc2MgbXVzdCBiZSBhIFByb3BlcnR5IERlc2NyaXB0b3InKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5Jc0dlbmVyaWNEZXNjcmlwdG9yKERlc2MpIHx8IHRoaXMuSXNEYXRhRGVzY3JpcHRvcihEZXNjKSkge1xuXHRcdFx0aWYgKCFoYXMoRGVzYywgJ1tbVmFsdWVdXScpKSB7XG5cdFx0XHRcdERlc2NbJ1tbVmFsdWVdXSddID0gdm9pZCAwO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFoYXMoRGVzYywgJ1tbV3JpdGFibGVdXScpKSB7XG5cdFx0XHRcdERlc2NbJ1tbV3JpdGFibGVdXSddID0gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdGlmICghaGFzKERlc2MsICdbW0dldF1dJykpIHtcblx0XHRcdFx0RGVzY1snW1tHZXRdXSddID0gdm9pZCAwO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCFoYXMoRGVzYywgJ1tbU2V0XV0nKSkge1xuXHRcdFx0XHREZXNjWydbW1NldF1dJ10gPSB2b2lkIDA7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmICghaGFzKERlc2MsICdbW0VudW1lcmFibGVdXScpKSB7XG5cdFx0XHREZXNjWydbW0VudW1lcmFibGVdXSddID0gZmFsc2U7XG5cdFx0fVxuXHRcdGlmICghaGFzKERlc2MsICdbW0NvbmZpZ3VyYWJsZV1dJykpIHtcblx0XHRcdERlc2NbJ1tbQ29uZmlndXJhYmxlXV0nXSA9IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gRGVzYztcblx0fSxcblxuXHQvLyBodHRwczovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtc2V0LW8tcC12LXRocm93XG5cdFNldDogZnVuY3Rpb24gU2V0KE8sIFAsIFYsIFRocm93KSB7XG5cdFx0aWYgKHRoaXMuVHlwZShPKSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdPIG11c3QgYmUgYW4gT2JqZWN0Jyk7XG5cdFx0fVxuXHRcdGlmICghdGhpcy5Jc1Byb3BlcnR5S2V5KFApKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignUCBtdXN0IGJlIGEgUHJvcGVydHkgS2V5Jyk7XG5cdFx0fVxuXHRcdGlmICh0aGlzLlR5cGUoVGhyb3cpICE9PSAnQm9vbGVhbicpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdUaHJvdyBtdXN0IGJlIGEgQm9vbGVhbicpO1xuXHRcdH1cblx0XHRpZiAoVGhyb3cpIHtcblx0XHRcdE9bUF0gPSBWO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdE9bUF0gPSBWO1xuXHRcdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1oYXNvd25wcm9wZXJ0eVxuXHRIYXNPd25Qcm9wZXJ0eTogZnVuY3Rpb24gSGFzT3duUHJvcGVydHkoTywgUCkge1xuXHRcdGlmICh0aGlzLlR5cGUoTykgIT09ICdPYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignTyBtdXN0IGJlIGFuIE9iamVjdCcpO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuSXNQcm9wZXJ0eUtleShQKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1AgbXVzdCBiZSBhIFByb3BlcnR5IEtleScpO1xuXHRcdH1cblx0XHRyZXR1cm4gaGFzKE8sIFApO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1oYXNwcm9wZXJ0eVxuXHRIYXNQcm9wZXJ0eTogZnVuY3Rpb24gSGFzUHJvcGVydHkoTywgUCkge1xuXHRcdGlmICh0aGlzLlR5cGUoTykgIT09ICdPYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignTyBtdXN0IGJlIGFuIE9iamVjdCcpO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuSXNQcm9wZXJ0eUtleShQKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1AgbXVzdCBiZSBhIFByb3BlcnR5IEtleScpO1xuXHRcdH1cblx0XHRyZXR1cm4gUCBpbiBPO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pc2NvbmNhdHNwcmVhZGFibGVcblx0SXNDb25jYXRTcHJlYWRhYmxlOiBmdW5jdGlvbiBJc0NvbmNhdFNwcmVhZGFibGUoTykge1xuXHRcdGlmICh0aGlzLlR5cGUoTykgIT09ICdPYmplY3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGlmIChoYXNTeW1ib2xzICYmIHR5cGVvZiAkU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSA9PT0gJ3N5bWJvbCcpIHtcblx0XHRcdHZhciBzcHJlYWRhYmxlID0gdGhpcy5HZXQoTywgU3ltYm9sLmlzQ29uY2F0U3ByZWFkYWJsZSk7XG5cdFx0XHRpZiAodHlwZW9mIHNwcmVhZGFibGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRcdHJldHVybiB0aGlzLlRvQm9vbGVhbihzcHJlYWRhYmxlKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRoaXMuSXNBcnJheShPKTtcblx0fSxcblxuXHQvLyBodHRwczovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtaW52b2tlXG5cdEludm9rZTogZnVuY3Rpb24gSW52b2tlKE8sIFApIHtcblx0XHRpZiAoIXRoaXMuSXNQcm9wZXJ0eUtleShQKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1AgbXVzdCBiZSBhIFByb3BlcnR5IEtleScpO1xuXHRcdH1cblx0XHR2YXIgYXJndW1lbnRzTGlzdCA9IGFycmF5U2xpY2UoYXJndW1lbnRzLCAyKTtcblx0XHR2YXIgZnVuYyA9IHRoaXMuR2V0VihPLCBQKTtcblx0XHRyZXR1cm4gdGhpcy5DYWxsKGZ1bmMsIE8sIGFyZ3VtZW50c0xpc3QpO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1nZXRpdGVyYXRvclxuXHRHZXRJdGVyYXRvcjogZnVuY3Rpb24gR2V0SXRlcmF0b3Iob2JqLCBtZXRob2QpIHtcblx0XHRpZiAoIWhhc1N5bWJvbHMpIHtcblx0XHRcdHRocm93IG5ldyBTeW50YXhFcnJvcignRVMuR2V0SXRlcmF0b3IgZGVwZW5kcyBvbiBuYXRpdmUgaXRlcmF0b3Igc3VwcG9ydC4nKTtcblx0XHR9XG5cblx0XHR2YXIgYWN0dWFsTWV0aG9kID0gbWV0aG9kO1xuXHRcdGlmIChhcmd1bWVudHMubGVuZ3RoIDwgMikge1xuXHRcdFx0YWN0dWFsTWV0aG9kID0gdGhpcy5HZXRNZXRob2Qob2JqLCAkU3ltYm9sLml0ZXJhdG9yKTtcblx0XHR9XG5cdFx0dmFyIGl0ZXJhdG9yID0gdGhpcy5DYWxsKGFjdHVhbE1ldGhvZCwgb2JqKTtcblx0XHRpZiAodGhpcy5UeXBlKGl0ZXJhdG9yKSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpdGVyYXRvciBtdXN0IHJldHVybiBhbiBvYmplY3QnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaXRlcmF0b3I7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWl0ZXJhdG9ybmV4dFxuXHRJdGVyYXRvck5leHQ6IGZ1bmN0aW9uIEl0ZXJhdG9yTmV4dChpdGVyYXRvciwgdmFsdWUpIHtcblx0XHR2YXIgcmVzdWx0ID0gdGhpcy5JbnZva2UoaXRlcmF0b3IsICduZXh0JywgYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBbXSA6IFt2YWx1ZV0pO1xuXHRcdGlmICh0aGlzLlR5cGUocmVzdWx0KSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpdGVyYXRvciBuZXh0IG11c3QgcmV0dXJuIGFuIG9iamVjdCcpO1xuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pdGVyYXRvcmNvbXBsZXRlXG5cdEl0ZXJhdG9yQ29tcGxldGU6IGZ1bmN0aW9uIEl0ZXJhdG9yQ29tcGxldGUoaXRlclJlc3VsdCkge1xuXHRcdGlmICh0aGlzLlR5cGUoaXRlclJlc3VsdCkgIT09ICdPYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogVHlwZShpdGVyUmVzdWx0KSBpcyBub3QgT2JqZWN0Jyk7XG5cdFx0fVxuXHRcdHJldHVybiB0aGlzLlRvQm9vbGVhbih0aGlzLkdldChpdGVyUmVzdWx0LCAnZG9uZScpKTtcblx0fSxcblxuXHQvLyBodHRwczovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtaXRlcmF0b3J2YWx1ZVxuXHRJdGVyYXRvclZhbHVlOiBmdW5jdGlvbiBJdGVyYXRvclZhbHVlKGl0ZXJSZXN1bHQpIHtcblx0XHRpZiAodGhpcy5UeXBlKGl0ZXJSZXN1bHQpICE9PSAnT2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Fzc2VydGlvbiBmYWlsZWQ6IFR5cGUoaXRlclJlc3VsdCkgaXMgbm90IE9iamVjdCcpO1xuXHRcdH1cblx0XHRyZXR1cm4gdGhpcy5HZXQoaXRlclJlc3VsdCwgJ3ZhbHVlJyk7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWl0ZXJhdG9yc3RlcFxuXHRJdGVyYXRvclN0ZXA6IGZ1bmN0aW9uIEl0ZXJhdG9yU3RlcChpdGVyYXRvcikge1xuXHRcdHZhciByZXN1bHQgPSB0aGlzLkl0ZXJhdG9yTmV4dChpdGVyYXRvcik7XG5cdFx0dmFyIGRvbmUgPSB0aGlzLkl0ZXJhdG9yQ29tcGxldGUocmVzdWx0KTtcblx0XHRyZXR1cm4gZG9uZSA9PT0gdHJ1ZSA/IGZhbHNlIDogcmVzdWx0O1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1pdGVyYXRvcmNsb3NlXG5cdEl0ZXJhdG9yQ2xvc2U6IGZ1bmN0aW9uIEl0ZXJhdG9yQ2xvc2UoaXRlcmF0b3IsIGNvbXBsZXRpb24pIHtcblx0XHRpZiAodGhpcy5UeXBlKGl0ZXJhdG9yKSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBUeXBlKGl0ZXJhdG9yKSBpcyBub3QgT2JqZWN0Jyk7XG5cdFx0fVxuXHRcdGlmICghdGhpcy5Jc0NhbGxhYmxlKGNvbXBsZXRpb24pKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogY29tcGxldGlvbiBpcyBub3QgYSB0aHVuayBmb3IgYSBDb21wbGV0aW9uIFJlY29yZCcpO1xuXHRcdH1cblx0XHR2YXIgY29tcGxldGlvblRodW5rID0gY29tcGxldGlvbjtcblxuXHRcdHZhciBpdGVyYXRvclJldHVybiA9IHRoaXMuR2V0TWV0aG9kKGl0ZXJhdG9yLCAncmV0dXJuJyk7XG5cblx0XHRpZiAodHlwZW9mIGl0ZXJhdG9yUmV0dXJuID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIGNvbXBsZXRpb25UaHVuaygpO1xuXHRcdH1cblxuXHRcdHZhciBjb21wbGV0aW9uUmVjb3JkO1xuXHRcdHRyeSB7XG5cdFx0XHR2YXIgaW5uZXJSZXN1bHQgPSB0aGlzLkNhbGwoaXRlcmF0b3JSZXR1cm4sIGl0ZXJhdG9yLCBbXSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0Ly8gaWYgd2UgaGl0IGhlcmUsIHRoZW4gXCJlXCIgaXMgdGhlIGlubmVyUmVzdWx0IGNvbXBsZXRpb24gdGhhdCBuZWVkcyByZS10aHJvd2luZ1xuXG5cdFx0XHQvLyBpZiB0aGUgY29tcGxldGlvbiBpcyBvZiB0eXBlIFwidGhyb3dcIiwgdGhpcyB3aWxsIHRocm93LlxuXHRcdFx0Y29tcGxldGlvblJlY29yZCA9IGNvbXBsZXRpb25UaHVuaygpO1xuXHRcdFx0Y29tcGxldGlvblRodW5rID0gbnVsbDsgLy8gZW5zdXJlIGl0J3Mgbm90IGNhbGxlZCB0d2ljZS5cblxuXHRcdFx0Ly8gaWYgbm90LCB0aGVuIHJldHVybiB0aGUgaW5uZXJSZXN1bHQgY29tcGxldGlvblxuXHRcdFx0dGhyb3cgZTtcblx0XHR9XG5cdFx0Y29tcGxldGlvblJlY29yZCA9IGNvbXBsZXRpb25UaHVuaygpOyAvLyBpZiBpbm5lclJlc3VsdCB3b3JrZWQsIHRoZW4gdGhyb3cgaWYgdGhlIGNvbXBsZXRpb24gZG9lc1xuXHRcdGNvbXBsZXRpb25UaHVuayA9IG51bGw7IC8vIGVuc3VyZSBpdCdzIG5vdCBjYWxsZWQgdHdpY2UuXG5cblx0XHRpZiAodGhpcy5UeXBlKGlubmVyUmVzdWx0KSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdpdGVyYXRvciAucmV0dXJuIG11c3QgcmV0dXJuIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdHJldHVybiBjb21wbGV0aW9uUmVjb3JkO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1jcmVhdGVpdGVycmVzdWx0b2JqZWN0XG5cdENyZWF0ZUl0ZXJSZXN1bHRPYmplY3Q6IGZ1bmN0aW9uIENyZWF0ZUl0ZXJSZXN1bHRPYmplY3QodmFsdWUsIGRvbmUpIHtcblx0XHRpZiAodGhpcy5UeXBlKGRvbmUpICE9PSAnQm9vbGVhbicpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBUeXBlKGRvbmUpIGlzIG5vdCBCb29sZWFuJyk7XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR2YWx1ZTogdmFsdWUsXG5cdFx0XHRkb25lOiBkb25lXG5cdFx0fTtcblx0fSxcblxuXHQvLyBodHRwczovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtcmVnZXhwZXhlY1xuXHRSZWdFeHBFeGVjOiBmdW5jdGlvbiBSZWdFeHBFeGVjKFIsIFMpIHtcblx0XHRpZiAodGhpcy5UeXBlKFIpICE9PSAnT2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1IgbXVzdCBiZSBhbiBPYmplY3QnKTtcblx0XHR9XG5cdFx0aWYgKHRoaXMuVHlwZShTKSAhPT0gJ1N0cmluZycpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdTIG11c3QgYmUgYSBTdHJpbmcnKTtcblx0XHR9XG5cdFx0dmFyIGV4ZWMgPSB0aGlzLkdldChSLCAnZXhlYycpO1xuXHRcdGlmICh0aGlzLklzQ2FsbGFibGUoZXhlYykpIHtcblx0XHRcdHZhciByZXN1bHQgPSB0aGlzLkNhbGwoZXhlYywgUiwgW1NdKTtcblx0XHRcdGlmIChyZXN1bHQgPT09IG51bGwgfHwgdGhpcy5UeXBlKHJlc3VsdCkgPT09ICdPYmplY3QnKSB7XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignXCJleGVjXCIgbWV0aG9kIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBPYmplY3QnKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlZ2V4RXhlYyhSLCBTKTtcblx0fSxcblxuXHQvLyBodHRwczovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtYXJyYXlzcGVjaWVzY3JlYXRlXG5cdEFycmF5U3BlY2llc0NyZWF0ZTogZnVuY3Rpb24gQXJyYXlTcGVjaWVzQ3JlYXRlKG9yaWdpbmFsQXJyYXksIGxlbmd0aCkge1xuXHRcdGlmICghdGhpcy5Jc0ludGVnZXIobGVuZ3RoKSB8fCBsZW5ndGggPCAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciA+PSAwJyk7XG5cdFx0fVxuXHRcdHZhciBsZW4gPSBsZW5ndGggPT09IDAgPyAwIDogbGVuZ3RoO1xuXHRcdHZhciBDO1xuXHRcdHZhciBpc0FycmF5ID0gdGhpcy5Jc0FycmF5KG9yaWdpbmFsQXJyYXkpO1xuXHRcdGlmIChpc0FycmF5KSB7XG5cdFx0XHRDID0gdGhpcy5HZXQob3JpZ2luYWxBcnJheSwgJ2NvbnN0cnVjdG9yJyk7XG5cdFx0XHQvLyBUT0RPOiBmaWd1cmUgb3V0IGhvdyB0byBtYWtlIGEgY3Jvc3MtcmVhbG0gbm9ybWFsIEFycmF5LCBhIHNhbWUtcmVhbG0gQXJyYXlcblx0XHRcdC8vIGlmICh0aGlzLklzQ29uc3RydWN0b3IoQykpIHtcblx0XHRcdC8vIFx0aWYgQyBpcyBhbm90aGVyIHJlYWxtJ3MgQXJyYXksIEMgPSB1bmRlZmluZWRcblx0XHRcdC8vIFx0T2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YoQXJyYXkpKSkgPT09IG51bGwgP1xuXHRcdFx0Ly8gfVxuXHRcdFx0aWYgKHRoaXMuVHlwZShDKSA9PT0gJ09iamVjdCcgJiYgaGFzU3ltYm9scyAmJiAkU3ltYm9sLnNwZWNpZXMpIHtcblx0XHRcdFx0QyA9IHRoaXMuR2V0KEMsICRTeW1ib2wuc3BlY2llcyk7XG5cdFx0XHRcdGlmIChDID09PSBudWxsKSB7XG5cdFx0XHRcdFx0QyA9IHZvaWQgMDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAodHlwZW9mIEMgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRyZXR1cm4gJEFycmF5KGxlbik7XG5cdFx0fVxuXHRcdGlmICghdGhpcy5Jc0NvbnN0cnVjdG9yKEMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQyBtdXN0IGJlIGEgY29uc3RydWN0b3InKTtcblx0XHR9XG5cdFx0cmV0dXJuIG5ldyBDKGxlbik7IC8vIHRoaXMuQ29uc3RydWN0KEMsIGxlbik7XG5cdH0sXG5cblx0Q3JlYXRlRGF0YVByb3BlcnR5OiBmdW5jdGlvbiBDcmVhdGVEYXRhUHJvcGVydHkoTywgUCwgVikge1xuXHRcdGlmICh0aGlzLlR5cGUoTykgIT09ICdPYmplY3QnKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogVHlwZShPKSBpcyBub3QgT2JqZWN0Jyk7XG5cdFx0fVxuXHRcdGlmICghdGhpcy5Jc1Byb3BlcnR5S2V5KFApKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogSXNQcm9wZXJ0eUtleShQKSBpcyBub3QgdHJ1ZScpO1xuXHRcdH1cblx0XHR2YXIgb2xkRGVzYyA9ICRnT1BEKE8sIFApO1xuXHRcdHZhciBleHRlbnNpYmxlID0gb2xkRGVzYyB8fCAodHlwZW9mICRpc0V4dGVuc2libGUgIT09ICdmdW5jdGlvbicgfHwgJGlzRXh0ZW5zaWJsZShPKSk7XG5cdFx0dmFyIGltbXV0YWJsZSA9IG9sZERlc2MgJiYgKCFvbGREZXNjLndyaXRhYmxlIHx8ICFvbGREZXNjLmNvbmZpZ3VyYWJsZSk7XG5cdFx0aWYgKGltbXV0YWJsZSB8fCAhZXh0ZW5zaWJsZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHR2YXIgbmV3RGVzYyA9IHtcblx0XHRcdGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHR2YWx1ZTogVixcblx0XHRcdHdyaXRhYmxlOiB0cnVlXG5cdFx0fTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoTywgUCwgbmV3RGVzYyk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWNyZWF0ZWRhdGFwcm9wZXJ0eW9ydGhyb3dcblx0Q3JlYXRlRGF0YVByb3BlcnR5T3JUaHJvdzogZnVuY3Rpb24gQ3JlYXRlRGF0YVByb3BlcnR5T3JUaHJvdyhPLCBQLCBWKSB7XG5cdFx0aWYgKHRoaXMuVHlwZShPKSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBUeXBlKE8pIGlzIG5vdCBPYmplY3QnKTtcblx0XHR9XG5cdFx0aWYgKCF0aGlzLklzUHJvcGVydHlLZXkoUCkpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiBJc1Byb3BlcnR5S2V5KFApIGlzIG5vdCB0cnVlJyk7XG5cdFx0fVxuXHRcdHZhciBzdWNjZXNzID0gdGhpcy5DcmVhdGVEYXRhUHJvcGVydHkoTywgUCwgVik7XG5cdFx0aWYgKCFzdWNjZXNzKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcigndW5hYmxlIHRvIGNyZWF0ZSBkYXRhIHByb3BlcnR5Jyk7XG5cdFx0fVxuXHRcdHJldHVybiBzdWNjZXNzO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtb2JqZWN0Y3JlYXRlXG5cdE9iamVjdENyZWF0ZTogZnVuY3Rpb24gT2JqZWN0Q3JlYXRlKHByb3RvLCBpbnRlcm5hbFNsb3RzTGlzdCkge1xuXHRcdGlmIChwcm90byAhPT0gbnVsbCAmJiB0aGlzLlR5cGUocHJvdG8pICE9PSAnT2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Fzc2VydGlvbiBmYWlsZWQ6IHByb3RvIG11c3QgYmUgbnVsbCBvciBhbiBvYmplY3QnKTtcblx0XHR9XG5cdFx0dmFyIHNsb3RzID0gYXJndW1lbnRzLmxlbmd0aCA8IDIgPyBbXSA6IGludGVybmFsU2xvdHNMaXN0O1xuXHRcdGlmIChzbG90cy5sZW5ndGggPiAwKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFN5bnRheEVycm9yKCdlcy1hYnN0cmFjdCBkb2VzIG5vdCB5ZXQgc3VwcG9ydCBpbnRlcm5hbCBzbG90cycpO1xuXHRcdH1cblxuXHRcdGlmIChwcm90byA9PT0gbnVsbCAmJiAhJE9iamVjdENyZWF0ZSkge1xuXHRcdFx0dGhyb3cgbmV3ICRTeW50YXhFcnJvcignbmF0aXZlIE9iamVjdC5jcmVhdGUgc3VwcG9ydCBpcyByZXF1aXJlZCB0byBjcmVhdGUgbnVsbCBvYmplY3RzJyk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICRPYmplY3RDcmVhdGUocHJvdG8pO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1hZHZhbmNlc3RyaW5naW5kZXhcblx0QWR2YW5jZVN0cmluZ0luZGV4OiBmdW5jdGlvbiBBZHZhbmNlU3RyaW5nSW5kZXgoUywgaW5kZXgsIHVuaWNvZGUpIHtcblx0XHRpZiAodGhpcy5UeXBlKFMpICE9PSAnU3RyaW5nJykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1MgbXVzdCBiZSBhIFN0cmluZycpO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuSXNJbnRlZ2VyKGluZGV4KSB8fCBpbmRleCA8IDAgfHwgaW5kZXggPiBNQVhfU0FGRV9JTlRFR0VSKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignQXNzZXJ0aW9uIGZhaWxlZDogbGVuZ3RoIG11c3QgYmUgYW4gaW50ZWdlciA+PSAwIGFuZCA8PSAyKio1MycpO1xuXHRcdH1cblx0XHRpZiAodGhpcy5UeXBlKHVuaWNvZGUpICE9PSAnQm9vbGVhbicpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdBc3NlcnRpb24gZmFpbGVkOiB1bmljb2RlIG11c3QgYmUgYSBCb29sZWFuJyk7XG5cdFx0fVxuXHRcdGlmICghdW5pY29kZSkge1xuXHRcdFx0cmV0dXJuIGluZGV4ICsgMTtcblx0XHR9XG5cdFx0dmFyIGxlbmd0aCA9IFMubGVuZ3RoO1xuXHRcdGlmICgoaW5kZXggKyAxKSA+PSBsZW5ndGgpIHtcblx0XHRcdHJldHVybiBpbmRleCArIDE7XG5cdFx0fVxuXG5cdFx0dmFyIGZpcnN0ID0gJGNoYXJDb2RlQXQoUywgaW5kZXgpO1xuXHRcdGlmIChmaXJzdCA8IDB4RDgwMCB8fCBmaXJzdCA+IDB4REJGRikge1xuXHRcdFx0cmV0dXJuIGluZGV4ICsgMTtcblx0XHR9XG5cblx0XHR2YXIgc2Vjb25kID0gJGNoYXJDb2RlQXQoUywgaW5kZXggKyAxKTtcblx0XHRpZiAoc2Vjb25kIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRikge1xuXHRcdFx0cmV0dXJuIGluZGV4ICsgMTtcblx0XHR9XG5cblx0XHRyZXR1cm4gaW5kZXggKyAyO1xuXHR9XG59KTtcblxuZGVsZXRlIEVTNi5DaGVja09iamVjdENvZXJjaWJsZTsgLy8gcmVuYW1lZCBpbiBFUzYgdG8gUmVxdWlyZU9iamVjdENvZXJjaWJsZVxuXG5tb2R1bGUuZXhwb3J0cyA9IEVTNjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyogZXNsaW50IG5vLWludmFsaWQtdGhpczogMSAqL1xuXG52YXIgRVJST1JfTUVTU0FHRSA9ICdGdW5jdGlvbi5wcm90b3R5cGUuYmluZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlICc7XG52YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG52YXIgdG9TdHIgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nO1xudmFyIGZ1bmNUeXBlID0gJ1tvYmplY3QgRnVuY3Rpb25dJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBiaW5kKHRoYXQpIHtcbiAgICB2YXIgdGFyZ2V0ID0gdGhpcztcbiAgICBpZiAodHlwZW9mIHRhcmdldCAhPT0gJ2Z1bmN0aW9uJyB8fCB0b1N0ci5jYWxsKHRhcmdldCkgIT09IGZ1bmNUeXBlKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRVJST1JfTUVTU0FHRSArIHRhcmdldCk7XG4gICAgfVxuICAgIHZhciBhcmdzID0gc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpO1xuXG4gICAgdmFyIGJvdW5kO1xuICAgIHZhciBiaW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICh0aGlzIGluc3RhbmNlb2YgYm91bmQpIHtcbiAgICAgICAgICAgIHZhciByZXN1bHQgPSB0YXJnZXQuYXBwbHkoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBhcmdzLmNvbmNhdChzbGljZS5jYWxsKGFyZ3VtZW50cykpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKE9iamVjdChyZXN1bHQpID09PSByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGFyZ2V0LmFwcGx5KFxuICAgICAgICAgICAgICAgIHRoYXQsXG4gICAgICAgICAgICAgICAgYXJncy5jb25jYXQoc2xpY2UuY2FsbChhcmd1bWVudHMpKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgYm91bmRMZW5ndGggPSBNYXRoLm1heCgwLCB0YXJnZXQubGVuZ3RoIC0gYXJncy5sZW5ndGgpO1xuICAgIHZhciBib3VuZEFyZ3MgPSBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJvdW5kTGVuZ3RoOyBpKyspIHtcbiAgICAgICAgYm91bmRBcmdzLnB1c2goJyQnICsgaSk7XG4gICAgfVxuXG4gICAgYm91bmQgPSBGdW5jdGlvbignYmluZGVyJywgJ3JldHVybiBmdW5jdGlvbiAoJyArIGJvdW5kQXJncy5qb2luKCcsJykgKyAnKXsgcmV0dXJuIGJpbmRlci5hcHBseSh0aGlzLGFyZ3VtZW50cyk7IH0nKShiaW5kZXIpO1xuXG4gICAgaWYgKHRhcmdldC5wcm90b3R5cGUpIHtcbiAgICAgICAgdmFyIEVtcHR5ID0gZnVuY3Rpb24gRW1wdHkoKSB7fTtcbiAgICAgICAgRW1wdHkucHJvdG90eXBlID0gdGFyZ2V0LnByb3RvdHlwZTtcbiAgICAgICAgYm91bmQucHJvdG90eXBlID0gbmV3IEVtcHR5KCk7XG4gICAgICAgIEVtcHR5LnByb3RvdHlwZSA9IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJvdW5kO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2VzMjAxNScpO1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaGFzU3ltYm9scyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIFN5bWJvbC5pdGVyYXRvciA9PT0gJ3N5bWJvbCc7XG5cbnZhciBpc1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vaGVscGVycy9pc1ByaW1pdGl2ZScpO1xudmFyIGlzQ2FsbGFibGUgPSByZXF1aXJlKCdpcy1jYWxsYWJsZScpO1xudmFyIGlzRGF0ZSA9IHJlcXVpcmUoJ2lzLWRhdGUtb2JqZWN0Jyk7XG52YXIgaXNTeW1ib2wgPSByZXF1aXJlKCdpcy1zeW1ib2wnKTtcblxudmFyIG9yZGluYXJ5VG9QcmltaXRpdmUgPSBmdW5jdGlvbiBPcmRpbmFyeVRvUHJpbWl0aXZlKE8sIGhpbnQpIHtcblx0aWYgKHR5cGVvZiBPID09PSAndW5kZWZpbmVkJyB8fCBPID09PSBudWxsKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignQ2Fubm90IGNhbGwgbWV0aG9kIG9uICcgKyBPKTtcblx0fVxuXHRpZiAodHlwZW9mIGhpbnQgIT09ICdzdHJpbmcnIHx8IChoaW50ICE9PSAnbnVtYmVyJyAmJiBoaW50ICE9PSAnc3RyaW5nJykpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdoaW50IG11c3QgYmUgXCJzdHJpbmdcIiBvciBcIm51bWJlclwiJyk7XG5cdH1cblx0dmFyIG1ldGhvZE5hbWVzID0gaGludCA9PT0gJ3N0cmluZycgPyBbJ3RvU3RyaW5nJywgJ3ZhbHVlT2YnXSA6IFsndmFsdWVPZicsICd0b1N0cmluZyddO1xuXHR2YXIgbWV0aG9kLCByZXN1bHQsIGk7XG5cdGZvciAoaSA9IDA7IGkgPCBtZXRob2ROYW1lcy5sZW5ndGg7ICsraSkge1xuXHRcdG1ldGhvZCA9IE9bbWV0aG9kTmFtZXNbaV1dO1xuXHRcdGlmIChpc0NhbGxhYmxlKG1ldGhvZCkpIHtcblx0XHRcdHJlc3VsdCA9IG1ldGhvZC5jYWxsKE8pO1xuXHRcdFx0aWYgKGlzUHJpbWl0aXZlKHJlc3VsdCkpIHtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0dGhyb3cgbmV3IFR5cGVFcnJvcignTm8gZGVmYXVsdCB2YWx1ZScpO1xufTtcblxudmFyIEdldE1ldGhvZCA9IGZ1bmN0aW9uIEdldE1ldGhvZChPLCBQKSB7XG5cdHZhciBmdW5jID0gT1tQXTtcblx0aWYgKGZ1bmMgIT09IG51bGwgJiYgdHlwZW9mIGZ1bmMgIT09ICd1bmRlZmluZWQnKSB7XG5cdFx0aWYgKCFpc0NhbGxhYmxlKGZ1bmMpKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGZ1bmMgKyAnIHJldHVybmVkIGZvciBwcm9wZXJ0eSAnICsgUCArICcgb2Ygb2JqZWN0ICcgKyBPICsgJyBpcyBub3QgYSBmdW5jdGlvbicpO1xuXHRcdH1cblx0XHRyZXR1cm4gZnVuYztcblx0fVxuXHRyZXR1cm4gdm9pZCAwO1xufTtcblxuLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXRvcHJpbWl0aXZlXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIFRvUHJpbWl0aXZlKGlucHV0KSB7XG5cdGlmIChpc1ByaW1pdGl2ZShpbnB1dCkpIHtcblx0XHRyZXR1cm4gaW5wdXQ7XG5cdH1cblx0dmFyIGhpbnQgPSAnZGVmYXVsdCc7XG5cdGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuXHRcdGlmIChhcmd1bWVudHNbMV0gPT09IFN0cmluZykge1xuXHRcdFx0aGludCA9ICdzdHJpbmcnO1xuXHRcdH0gZWxzZSBpZiAoYXJndW1lbnRzWzFdID09PSBOdW1iZXIpIHtcblx0XHRcdGhpbnQgPSAnbnVtYmVyJztcblx0XHR9XG5cdH1cblxuXHR2YXIgZXhvdGljVG9QcmltO1xuXHRpZiAoaGFzU3ltYm9scykge1xuXHRcdGlmIChTeW1ib2wudG9QcmltaXRpdmUpIHtcblx0XHRcdGV4b3RpY1RvUHJpbSA9IEdldE1ldGhvZChpbnB1dCwgU3ltYm9sLnRvUHJpbWl0aXZlKTtcblx0XHR9IGVsc2UgaWYgKGlzU3ltYm9sKGlucHV0KSkge1xuXHRcdFx0ZXhvdGljVG9QcmltID0gU3ltYm9sLnByb3RvdHlwZS52YWx1ZU9mO1xuXHRcdH1cblx0fVxuXHRpZiAodHlwZW9mIGV4b3RpY1RvUHJpbSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0XHR2YXIgcmVzdWx0ID0gZXhvdGljVG9QcmltLmNhbGwoaW5wdXQsIGhpbnQpO1xuXHRcdGlmIChpc1ByaW1pdGl2ZShyZXN1bHQpKSB7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCd1bmFibGUgdG8gY29udmVydCBleG90aWMgb2JqZWN0IHRvIHByaW1pdGl2ZScpO1xuXHR9XG5cdGlmIChoaW50ID09PSAnZGVmYXVsdCcgJiYgKGlzRGF0ZShpbnB1dCkgfHwgaXNTeW1ib2woaW5wdXQpKSkge1xuXHRcdGhpbnQgPSAnc3RyaW5nJztcblx0fVxuXHRyZXR1cm4gb3JkaW5hcnlUb1ByaW1pdGl2ZShpbnB1dCwgaGludCA9PT0gJ2RlZmF1bHQnID8gJ251bWJlcicgOiBoaW50KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBnZXREYXkgPSBEYXRlLnByb3RvdHlwZS5nZXREYXk7XG52YXIgdHJ5RGF0ZU9iamVjdCA9IGZ1bmN0aW9uIHRyeURhdGVPYmplY3QodmFsdWUpIHtcblx0dHJ5IHtcblx0XHRnZXREYXkuY2FsbCh2YWx1ZSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cbn07XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgZGF0ZUNsYXNzID0gJ1tvYmplY3QgRGF0ZV0nO1xudmFyIGhhc1RvU3RyaW5nVGFnID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgU3ltYm9sLnRvU3RyaW5nVGFnID09PSAnc3ltYm9sJztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc0RhdGVPYmplY3QodmFsdWUpIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcgfHwgdmFsdWUgPT09IG51bGwpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdHJldHVybiBoYXNUb1N0cmluZ1RhZyA/IHRyeURhdGVPYmplY3QodmFsdWUpIDogdG9TdHIuY2FsbCh2YWx1ZSkgPT09IGRhdGVDbGFzcztcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG52YXIgaGFzU3ltYm9scyA9IHJlcXVpcmUoJ2hhcy1zeW1ib2xzJykoKTtcblxuaWYgKGhhc1N5bWJvbHMpIHtcblx0dmFyIHN5bVRvU3RyID0gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZztcblx0dmFyIHN5bVN0cmluZ1JlZ2V4ID0gL15TeW1ib2xcXCguKlxcKSQvO1xuXHR2YXIgaXNTeW1ib2xPYmplY3QgPSBmdW5jdGlvbiBpc1JlYWxTeW1ib2xPYmplY3QodmFsdWUpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlLnZhbHVlT2YoKSAhPT0gJ3N5bWJvbCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIHN5bVN0cmluZ1JlZ2V4LnRlc3Qoc3ltVG9TdHIuY2FsbCh2YWx1ZSkpO1xuXHR9O1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNTeW1ib2wodmFsdWUpIHtcblx0XHRpZiAodHlwZW9mIHZhbHVlID09PSAnc3ltYm9sJykge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdGlmICh0b1N0ci5jYWxsKHZhbHVlKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdHJldHVybiBpc1N5bWJvbE9iamVjdCh2YWx1ZSk7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fTtcbn0gZWxzZSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpc1N5bWJvbCh2YWx1ZSkge1xuXHRcdC8vIHRoaXMgZW52aXJvbm1lbnQgZG9lcyBub3Qgc3VwcG9ydCBTeW1ib2xzLlxuXHRcdHJldHVybiBmYWxzZSAmJiB2YWx1ZTtcblx0fTtcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIG9yaWdTeW1ib2wgPSBnbG9iYWwuU3ltYm9sO1xudmFyIGhhc1N5bWJvbFNoYW0gPSByZXF1aXJlKCcuL3NoYW1zJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaGFzTmF0aXZlU3ltYm9scygpIHtcblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sICE9PSAnZnVuY3Rpb24nKSB7IHJldHVybiBmYWxzZTsgfVxuXHRpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBvcmlnU3ltYm9sKCdmb28nKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmICh0eXBlb2YgU3ltYm9sKCdiYXInKSAhPT0gJ3N5bWJvbCcpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0cmV0dXJuIGhhc1N5bWJvbFNoYW0oKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8qIGVzbGludCBjb21wbGV4aXR5OiBbMiwgMTddLCBtYXgtc3RhdGVtZW50czogWzIsIDMzXSAqL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBoYXNTeW1ib2xzKCkge1xuXHRpZiAodHlwZW9mIFN5bWJvbCAhPT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyAhPT0gJ2Z1bmN0aW9uJykgeyByZXR1cm4gZmFsc2U7IH1cblx0aWYgKHR5cGVvZiBTeW1ib2wuaXRlcmF0b3IgPT09ICdzeW1ib2wnKSB7IHJldHVybiB0cnVlOyB9XG5cblx0dmFyIG9iaiA9IHt9O1xuXHR2YXIgc3ltID0gU3ltYm9sKCd0ZXN0Jyk7XG5cdHZhciBzeW1PYmogPSBPYmplY3Qoc3ltKTtcblx0aWYgKHR5cGVvZiBzeW0gPT09ICdzdHJpbmcnKSB7IHJldHVybiBmYWxzZTsgfVxuXG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoc3ltT2JqKSAhPT0gJ1tvYmplY3QgU3ltYm9sXScpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0Ly8gdGVtcCBkaXNhYmxlZCBwZXIgaHR0cHM6Ly9naXRodWIuY29tL2xqaGFyYi9vYmplY3QuYXNzaWduL2lzc3Vlcy8xN1xuXHQvLyBpZiAoc3ltIGluc3RhbmNlb2YgU3ltYm9sKSB7IHJldHVybiBmYWxzZTsgfVxuXHQvLyB0ZW1wIGRpc2FibGVkIHBlciBodHRwczovL2dpdGh1Yi5jb20vV2ViUmVmbGVjdGlvbi9nZXQtb3duLXByb3BlcnR5LXN5bWJvbHMvaXNzdWVzLzRcblx0Ly8gaWYgKCEoc3ltT2JqIGluc3RhbmNlb2YgU3ltYm9sKSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHQvLyBpZiAodHlwZW9mIFN5bWJvbC5wcm90b3R5cGUudG9TdHJpbmcgIT09ICdmdW5jdGlvbicpIHsgcmV0dXJuIGZhbHNlOyB9XG5cdC8vIGlmIChTdHJpbmcoc3ltKSAhPT0gU3ltYm9sLnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHN5bSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0dmFyIHN5bVZhbCA9IDQyO1xuXHRvYmpbc3ltXSA9IHN5bVZhbDtcblx0Zm9yIChzeW0gaW4gb2JqKSB7IHJldHVybiBmYWxzZTsgfSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG5cdGlmICh0eXBlb2YgT2JqZWN0LmtleXMgPT09ICdmdW5jdGlvbicgJiYgT2JqZWN0LmtleXMob2JqKS5sZW5ndGggIT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyA9PT0gJ2Z1bmN0aW9uJyAmJiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhvYmopLmxlbmd0aCAhPT0gMCkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHR2YXIgc3ltcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKTtcblx0aWYgKHN5bXMubGVuZ3RoICE9PSAxIHx8IHN5bXNbMF0gIT09IHN5bSkgeyByZXR1cm4gZmFsc2U7IH1cblxuXHRpZiAoIU9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmosIHN5bSkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cblx0aWYgKHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0dmFyIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG9iaiwgc3ltKTtcblx0XHRpZiAoZGVzY3JpcHRvci52YWx1ZSAhPT0gc3ltVmFsIHx8IGRlc2NyaXB0b3IuZW51bWVyYWJsZSAhPT0gdHJ1ZSkgeyByZXR1cm4gZmFsc2U7IH1cblx0fVxuXG5cdHJldHVybiB0cnVlO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaXNQcmltaXRpdmUodmFsdWUpIHtcblx0cmV0dXJuIHZhbHVlID09PSBudWxsIHx8ICh0eXBlb2YgdmFsdWUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0Jyk7XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgR2V0SW50cmluc2ljID0gcmVxdWlyZSgnLi9HZXRJbnRyaW5zaWMnKTtcblxudmFyICRPYmplY3QgPSBHZXRJbnRyaW5zaWMoJyVPYmplY3QlJyk7XG52YXIgJFR5cGVFcnJvciA9IEdldEludHJpbnNpYygnJVR5cGVFcnJvciUnKTtcbnZhciAkU3RyaW5nID0gR2V0SW50cmluc2ljKCclU3RyaW5nJScpO1xuXG52YXIgJGlzTmFOID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzTmFOJyk7XG52YXIgJGlzRmluaXRlID0gcmVxdWlyZSgnLi9oZWxwZXJzL2lzRmluaXRlJyk7XG5cbnZhciBzaWduID0gcmVxdWlyZSgnLi9oZWxwZXJzL3NpZ24nKTtcbnZhciBtb2QgPSByZXF1aXJlKCcuL2hlbHBlcnMvbW9kJyk7XG5cbnZhciBJc0NhbGxhYmxlID0gcmVxdWlyZSgnaXMtY2FsbGFibGUnKTtcbnZhciB0b1ByaW1pdGl2ZSA9IHJlcXVpcmUoJ2VzLXRvLXByaW1pdGl2ZS9lczUnKTtcblxudmFyIGhhcyA9IHJlcXVpcmUoJ2hhcycpO1xuXG4vLyBodHRwczovL2VzNS5naXRodWIuaW8vI3g5XG52YXIgRVM1ID0ge1xuXHRUb1ByaW1pdGl2ZTogdG9QcmltaXRpdmUsXG5cblx0VG9Cb29sZWFuOiBmdW5jdGlvbiBUb0Jvb2xlYW4odmFsdWUpIHtcblx0XHRyZXR1cm4gISF2YWx1ZTtcblx0fSxcblx0VG9OdW1iZXI6IGZ1bmN0aW9uIFRvTnVtYmVyKHZhbHVlKSB7XG5cdFx0cmV0dXJuICt2YWx1ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1pbXBsaWNpdC1jb2VyY2lvblxuXHR9LFxuXHRUb0ludGVnZXI6IGZ1bmN0aW9uIFRvSW50ZWdlcih2YWx1ZSkge1xuXHRcdHZhciBudW1iZXIgPSB0aGlzLlRvTnVtYmVyKHZhbHVlKTtcblx0XHRpZiAoJGlzTmFOKG51bWJlcikpIHsgcmV0dXJuIDA7IH1cblx0XHRpZiAobnVtYmVyID09PSAwIHx8ICEkaXNGaW5pdGUobnVtYmVyKSkgeyByZXR1cm4gbnVtYmVyOyB9XG5cdFx0cmV0dXJuIHNpZ24obnVtYmVyKSAqIE1hdGguZmxvb3IoTWF0aC5hYnMobnVtYmVyKSk7XG5cdH0sXG5cdFRvSW50MzI6IGZ1bmN0aW9uIFRvSW50MzIoeCkge1xuXHRcdHJldHVybiB0aGlzLlRvTnVtYmVyKHgpID4+IDA7XG5cdH0sXG5cdFRvVWludDMyOiBmdW5jdGlvbiBUb1VpbnQzMih4KSB7XG5cdFx0cmV0dXJuIHRoaXMuVG9OdW1iZXIoeCkgPj4+IDA7XG5cdH0sXG5cdFRvVWludDE2OiBmdW5jdGlvbiBUb1VpbnQxNih2YWx1ZSkge1xuXHRcdHZhciBudW1iZXIgPSB0aGlzLlRvTnVtYmVyKHZhbHVlKTtcblx0XHRpZiAoJGlzTmFOKG51bWJlcikgfHwgbnVtYmVyID09PSAwIHx8ICEkaXNGaW5pdGUobnVtYmVyKSkgeyByZXR1cm4gMDsgfVxuXHRcdHZhciBwb3NJbnQgPSBzaWduKG51bWJlcikgKiBNYXRoLmZsb29yKE1hdGguYWJzKG51bWJlcikpO1xuXHRcdHJldHVybiBtb2QocG9zSW50LCAweDEwMDAwKTtcblx0fSxcblx0VG9TdHJpbmc6IGZ1bmN0aW9uIFRvU3RyaW5nKHZhbHVlKSB7XG5cdFx0cmV0dXJuICRTdHJpbmcodmFsdWUpO1xuXHR9LFxuXHRUb09iamVjdDogZnVuY3Rpb24gVG9PYmplY3QodmFsdWUpIHtcblx0XHR0aGlzLkNoZWNrT2JqZWN0Q29lcmNpYmxlKHZhbHVlKTtcblx0XHRyZXR1cm4gJE9iamVjdCh2YWx1ZSk7XG5cdH0sXG5cdENoZWNrT2JqZWN0Q29lcmNpYmxlOiBmdW5jdGlvbiBDaGVja09iamVjdENvZXJjaWJsZSh2YWx1ZSwgb3B0TWVzc2FnZSkge1xuXHRcdC8qIGpzaGludCBlcW51bGw6dHJ1ZSAqL1xuXHRcdGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcihvcHRNZXNzYWdlIHx8ICdDYW5ub3QgY2FsbCBtZXRob2Qgb24gJyArIHZhbHVlKTtcblx0XHR9XG5cdFx0cmV0dXJuIHZhbHVlO1xuXHR9LFxuXHRJc0NhbGxhYmxlOiBJc0NhbGxhYmxlLFxuXHRTYW1lVmFsdWU6IGZ1bmN0aW9uIFNhbWVWYWx1ZSh4LCB5KSB7XG5cdFx0aWYgKHggPT09IHkpIHsgLy8gMCA9PT0gLTAsIGJ1dCB0aGV5IGFyZSBub3QgaWRlbnRpY2FsLlxuXHRcdFx0aWYgKHggPT09IDApIHsgcmV0dXJuIDEgLyB4ID09PSAxIC8geTsgfVxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHRcdHJldHVybiAkaXNOYU4oeCkgJiYgJGlzTmFOKHkpO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNS4xLyNzZWMtOFxuXHRUeXBlOiBmdW5jdGlvbiBUeXBlKHgpIHtcblx0XHRpZiAoeCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuICdOdWxsJztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB4ID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuICdVbmRlZmluZWQnO1xuXHRcdH1cblx0XHRpZiAodHlwZW9mIHggPT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIHggPT09ICdvYmplY3QnKSB7XG5cdFx0XHRyZXR1cm4gJ09iamVjdCc7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgeCA9PT0gJ251bWJlcicpIHtcblx0XHRcdHJldHVybiAnTnVtYmVyJztcblx0XHR9XG5cdFx0aWYgKHR5cGVvZiB4ID09PSAnYm9vbGVhbicpIHtcblx0XHRcdHJldHVybiAnQm9vbGVhbic7XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHJldHVybiAnU3RyaW5nJztcblx0XHR9XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLXByb3BlcnR5LWRlc2NyaXB0b3Itc3BlY2lmaWNhdGlvbi10eXBlXG5cdElzUHJvcGVydHlEZXNjcmlwdG9yOiBmdW5jdGlvbiBJc1Byb3BlcnR5RGVzY3JpcHRvcihEZXNjKSB7XG5cdFx0aWYgKHRoaXMuVHlwZShEZXNjKSAhPT0gJ09iamVjdCcpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdFx0dmFyIGFsbG93ZWQgPSB7XG5cdFx0XHQnW1tDb25maWd1cmFibGVdXSc6IHRydWUsXG5cdFx0XHQnW1tFbnVtZXJhYmxlXV0nOiB0cnVlLFxuXHRcdFx0J1tbR2V0XV0nOiB0cnVlLFxuXHRcdFx0J1tbU2V0XV0nOiB0cnVlLFxuXHRcdFx0J1tbVmFsdWVdXSc6IHRydWUsXG5cdFx0XHQnW1tXcml0YWJsZV1dJzogdHJ1ZVxuXHRcdH07XG5cdFx0Ly8ganNjczpkaXNhYmxlXG5cdFx0Zm9yICh2YXIga2V5IGluIERlc2MpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXHRcdFx0aWYgKGhhcyhEZXNjLCBrZXkpICYmICFhbGxvd2VkW2tleV0pIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBqc2NzOmVuYWJsZVxuXHRcdHZhciBpc0RhdGEgPSBoYXMoRGVzYywgJ1tbVmFsdWVdXScpO1xuXHRcdHZhciBJc0FjY2Vzc29yID0gaGFzKERlc2MsICdbW0dldF1dJykgfHwgaGFzKERlc2MsICdbW1NldF1dJyk7XG5cdFx0aWYgKGlzRGF0YSAmJiBJc0FjY2Vzc29yKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignUHJvcGVydHkgRGVzY3JpcHRvcnMgbWF5IG5vdCBiZSBib3RoIGFjY2Vzc29yIGFuZCBkYXRhIGRlc2NyaXB0b3JzJyk7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy04LjEwLjFcblx0SXNBY2Nlc3NvckRlc2NyaXB0b3I6IGZ1bmN0aW9uIElzQWNjZXNzb3JEZXNjcmlwdG9yKERlc2MpIHtcblx0XHRpZiAodHlwZW9mIERlc2MgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLklzUHJvcGVydHlEZXNjcmlwdG9yKERlc2MpKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignRGVzYyBtdXN0IGJlIGEgUHJvcGVydHkgRGVzY3JpcHRvcicpO1xuXHRcdH1cblxuXHRcdGlmICghaGFzKERlc2MsICdbW0dldF1dJykgJiYgIWhhcyhEZXNjLCAnW1tTZXRdXScpKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTguMTAuMlxuXHRJc0RhdGFEZXNjcmlwdG9yOiBmdW5jdGlvbiBJc0RhdGFEZXNjcmlwdG9yKERlc2MpIHtcblx0XHRpZiAodHlwZW9mIERlc2MgPT09ICd1bmRlZmluZWQnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLklzUHJvcGVydHlEZXNjcmlwdG9yKERlc2MpKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignRGVzYyBtdXN0IGJlIGEgUHJvcGVydHkgRGVzY3JpcHRvcicpO1xuXHRcdH1cblxuXHRcdGlmICghaGFzKERlc2MsICdbW1ZhbHVlXV0nKSAmJiAhaGFzKERlc2MsICdbW1dyaXRhYmxlXV0nKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVlO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy04LjEwLjNcblx0SXNHZW5lcmljRGVzY3JpcHRvcjogZnVuY3Rpb24gSXNHZW5lcmljRGVzY3JpcHRvcihEZXNjKSB7XG5cdFx0aWYgKHR5cGVvZiBEZXNjID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdGlmICghdGhpcy5Jc1Byb3BlcnR5RGVzY3JpcHRvcihEZXNjKSkge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ0Rlc2MgbXVzdCBiZSBhIFByb3BlcnR5IERlc2NyaXB0b3InKTtcblx0XHR9XG5cblx0XHRpZiAoIXRoaXMuSXNBY2Nlc3NvckRlc2NyaXB0b3IoRGVzYykgJiYgIXRoaXMuSXNEYXRhRGVzY3JpcHRvcihEZXNjKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9LFxuXG5cdC8vIGh0dHBzOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy04LjEwLjRcblx0RnJvbVByb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gRnJvbVByb3BlcnR5RGVzY3JpcHRvcihEZXNjKSB7XG5cdFx0aWYgKHR5cGVvZiBEZXNjID09PSAndW5kZWZpbmVkJykge1xuXHRcdFx0cmV0dXJuIERlc2M7XG5cdFx0fVxuXG5cdFx0aWYgKCF0aGlzLklzUHJvcGVydHlEZXNjcmlwdG9yKERlc2MpKSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignRGVzYyBtdXN0IGJlIGEgUHJvcGVydHkgRGVzY3JpcHRvcicpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLklzRGF0YURlc2NyaXB0b3IoRGVzYykpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdHZhbHVlOiBEZXNjWydbW1ZhbHVlXV0nXSxcblx0XHRcdFx0d3JpdGFibGU6ICEhRGVzY1snW1tXcml0YWJsZV1dJ10sXG5cdFx0XHRcdGVudW1lcmFibGU6ICEhRGVzY1snW1tFbnVtZXJhYmxlXV0nXSxcblx0XHRcdFx0Y29uZmlndXJhYmxlOiAhIURlc2NbJ1tbQ29uZmlndXJhYmxlXV0nXVxuXHRcdFx0fTtcblx0XHR9IGVsc2UgaWYgKHRoaXMuSXNBY2Nlc3NvckRlc2NyaXB0b3IoRGVzYykpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGdldDogRGVzY1snW1tHZXRdXSddLFxuXHRcdFx0XHRzZXQ6IERlc2NbJ1tbU2V0XV0nXSxcblx0XHRcdFx0ZW51bWVyYWJsZTogISFEZXNjWydbW0VudW1lcmFibGVdXSddLFxuXHRcdFx0XHRjb25maWd1cmFibGU6ICEhRGVzY1snW1tDb25maWd1cmFibGVdXSddXG5cdFx0XHR9O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aHJvdyBuZXcgJFR5cGVFcnJvcignRnJvbVByb3BlcnR5RGVzY3JpcHRvciBtdXN0IGJlIGNhbGxlZCB3aXRoIGEgZnVsbHkgcG9wdWxhdGVkIFByb3BlcnR5IERlc2NyaXB0b3InKTtcblx0XHR9XG5cdH0sXG5cblx0Ly8gaHR0cHM6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTguMTAuNVxuXHRUb1Byb3BlcnR5RGVzY3JpcHRvcjogZnVuY3Rpb24gVG9Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqKSB7XG5cdFx0aWYgKHRoaXMuVHlwZShPYmopICE9PSAnT2JqZWN0Jykge1xuXHRcdFx0dGhyb3cgbmV3ICRUeXBlRXJyb3IoJ1RvUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIGFuIG9iamVjdCcpO1xuXHRcdH1cblxuXHRcdHZhciBkZXNjID0ge307XG5cdFx0aWYgKGhhcyhPYmosICdlbnVtZXJhYmxlJykpIHtcblx0XHRcdGRlc2NbJ1tbRW51bWVyYWJsZV1dJ10gPSB0aGlzLlRvQm9vbGVhbihPYmouZW51bWVyYWJsZSk7XG5cdFx0fVxuXHRcdGlmIChoYXMoT2JqLCAnY29uZmlndXJhYmxlJykpIHtcblx0XHRcdGRlc2NbJ1tbQ29uZmlndXJhYmxlXV0nXSA9IHRoaXMuVG9Cb29sZWFuKE9iai5jb25maWd1cmFibGUpO1xuXHRcdH1cblx0XHRpZiAoaGFzKE9iaiwgJ3ZhbHVlJykpIHtcblx0XHRcdGRlc2NbJ1tbVmFsdWVdXSddID0gT2JqLnZhbHVlO1xuXHRcdH1cblx0XHRpZiAoaGFzKE9iaiwgJ3dyaXRhYmxlJykpIHtcblx0XHRcdGRlc2NbJ1tbV3JpdGFibGVdXSddID0gdGhpcy5Ub0Jvb2xlYW4oT2JqLndyaXRhYmxlKTtcblx0XHR9XG5cdFx0aWYgKGhhcyhPYmosICdnZXQnKSkge1xuXHRcdFx0dmFyIGdldHRlciA9IE9iai5nZXQ7XG5cdFx0XHRpZiAodHlwZW9mIGdldHRlciAhPT0gJ3VuZGVmaW5lZCcgJiYgIXRoaXMuSXNDYWxsYWJsZShnZXR0ZXIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ2dldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24nKTtcblx0XHRcdH1cblx0XHRcdGRlc2NbJ1tbR2V0XV0nXSA9IGdldHRlcjtcblx0XHR9XG5cdFx0aWYgKGhhcyhPYmosICdzZXQnKSkge1xuXHRcdFx0dmFyIHNldHRlciA9IE9iai5zZXQ7XG5cdFx0XHRpZiAodHlwZW9mIHNldHRlciAhPT0gJ3VuZGVmaW5lZCcgJiYgIXRoaXMuSXNDYWxsYWJsZShzZXR0ZXIpKSB7XG5cdFx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdzZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG5cdFx0XHR9XG5cdFx0XHRkZXNjWydbW1NldF1dJ10gPSBzZXR0ZXI7XG5cdFx0fVxuXG5cdFx0aWYgKChoYXMoZGVzYywgJ1tbR2V0XV0nKSB8fCBoYXMoZGVzYywgJ1tbU2V0XV0nKSkgJiYgKGhhcyhkZXNjLCAnW1tWYWx1ZV1dJykgfHwgaGFzKGRlc2MsICdbW1dyaXRhYmxlXV0nKSkpIHtcblx0XHRcdHRocm93IG5ldyAkVHlwZUVycm9yKCdJbnZhbGlkIHByb3BlcnR5IGRlc2NyaXB0b3IuIENhbm5vdCBib3RoIHNwZWNpZnkgYWNjZXNzb3JzIGFuZCBhIHZhbHVlIG9yIHdyaXRhYmxlIGF0dHJpYnV0ZScpO1xuXHRcdH1cblx0XHRyZXR1cm4gZGVzYztcblx0fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFUzU7XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciB0b1N0ciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7XG5cbnZhciBpc1ByaW1pdGl2ZSA9IHJlcXVpcmUoJy4vaGVscGVycy9pc1ByaW1pdGl2ZScpO1xuXG52YXIgaXNDYWxsYWJsZSA9IHJlcXVpcmUoJ2lzLWNhbGxhYmxlJyk7XG5cbi8vIGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzUuMS8jc2VjLTguMTIuOFxudmFyIEVTNWludGVybmFsU2xvdHMgPSB7XG5cdCdbW0RlZmF1bHRWYWx1ZV1dJzogZnVuY3Rpb24gKE8pIHtcblx0XHR2YXIgYWN0dWFsSGludDtcblx0XHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcblx0XHRcdGFjdHVhbEhpbnQgPSBhcmd1bWVudHNbMV07XG5cdFx0fSBlbHNlIHtcblx0XHRcdGFjdHVhbEhpbnQgPSB0b1N0ci5jYWxsKE8pID09PSAnW29iamVjdCBEYXRlXScgPyBTdHJpbmcgOiBOdW1iZXI7XG5cdFx0fVxuXG5cdFx0aWYgKGFjdHVhbEhpbnQgPT09IFN0cmluZyB8fCBhY3R1YWxIaW50ID09PSBOdW1iZXIpIHtcblx0XHRcdHZhciBtZXRob2RzID0gYWN0dWFsSGludCA9PT0gU3RyaW5nID8gWyd0b1N0cmluZycsICd2YWx1ZU9mJ10gOiBbJ3ZhbHVlT2YnLCAndG9TdHJpbmcnXTtcblx0XHRcdHZhciB2YWx1ZSwgaTtcblx0XHRcdGZvciAoaSA9IDA7IGkgPCBtZXRob2RzLmxlbmd0aDsgKytpKSB7XG5cdFx0XHRcdGlmIChpc0NhbGxhYmxlKE9bbWV0aG9kc1tpXV0pKSB7XG5cdFx0XHRcdFx0dmFsdWUgPSBPW21ldGhvZHNbaV1dKCk7XG5cdFx0XHRcdFx0aWYgKGlzUHJpbWl0aXZlKHZhbHVlKSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignTm8gZGVmYXVsdCB2YWx1ZScpO1xuXHRcdH1cblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdpbnZhbGlkIFtbRGVmYXVsdFZhbHVlXV0gaGludCBzdXBwbGllZCcpO1xuXHR9XG59O1xuXG4vLyBodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi81LjEvI3NlYy05LjFcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gVG9QcmltaXRpdmUoaW5wdXQpIHtcblx0aWYgKGlzUHJpbWl0aXZlKGlucHV0KSkge1xuXHRcdHJldHVybiBpbnB1dDtcblx0fVxuXHRpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcblx0XHRyZXR1cm4gRVM1aW50ZXJuYWxTbG90c1snW1tEZWZhdWx0VmFsdWVdXSddKGlucHV0LCBhcmd1bWVudHNbMV0pO1xuXHR9XG5cdHJldHVybiBFUzVpbnRlcm5hbFNsb3RzWydbW0RlZmF1bHRWYWx1ZV1dJ10oaW5wdXQpO1xufTtcbiIsIid1c2Ugc3RyaWN0JztcblxudmFyIGhhcyA9IHJlcXVpcmUoJ2hhcycpO1xudmFyIHJlZ2V4RXhlYyA9IFJlZ0V4cC5wcm90b3R5cGUuZXhlYztcbnZhciBnT1BEID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtcblxudmFyIHRyeVJlZ2V4RXhlY0NhbGwgPSBmdW5jdGlvbiB0cnlSZWdleEV4ZWModmFsdWUpIHtcblx0dHJ5IHtcblx0XHR2YXIgbGFzdEluZGV4ID0gdmFsdWUubGFzdEluZGV4O1xuXHRcdHZhbHVlLmxhc3RJbmRleCA9IDA7XG5cblx0XHRyZWdleEV4ZWMuY2FsbCh2YWx1ZSk7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH0gZmluYWxseSB7XG5cdFx0dmFsdWUubGFzdEluZGV4ID0gbGFzdEluZGV4O1xuXHR9XG59O1xudmFyIHRvU3RyID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcbnZhciByZWdleENsYXNzID0gJ1tvYmplY3QgUmVnRXhwXSc7XG52YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBTeW1ib2wudG9TdHJpbmdUYWcgPT09ICdzeW1ib2wnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzUmVnZXgodmFsdWUpIHtcblx0aWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdvYmplY3QnKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cdGlmICghaGFzVG9TdHJpbmdUYWcpIHtcblx0XHRyZXR1cm4gdG9TdHIuY2FsbCh2YWx1ZSkgPT09IHJlZ2V4Q2xhc3M7XG5cdH1cblxuXHR2YXIgZGVzY3JpcHRvciA9IGdPUEQodmFsdWUsICdsYXN0SW5kZXgnKTtcblx0dmFyIGhhc0xhc3RJbmRleERhdGFQcm9wZXJ0eSA9IGRlc2NyaXB0b3IgJiYgaGFzKGRlc2NyaXB0b3IsICd2YWx1ZScpO1xuXHRpZiAoIWhhc0xhc3RJbmRleERhdGFQcm9wZXJ0eSkge1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHJldHVybiB0cnlSZWdleEV4ZWNDYWxsKHZhbHVlKTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBnZXRQb2x5ZmlsbCA9IHJlcXVpcmUoJy4vcG9seWZpbGwnKTtcbnZhciBkZWZpbmUgPSByZXF1aXJlKCdkZWZpbmUtcHJvcGVydGllcycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHNoaW1WYWx1ZXMoKSB7XG5cdHZhciBwb2x5ZmlsbCA9IGdldFBvbHlmaWxsKCk7XG5cdGRlZmluZShPYmplY3QsIHsgdmFsdWVzOiBwb2x5ZmlsbCB9LCB7XG5cdFx0dmFsdWVzOiBmdW5jdGlvbiB0ZXN0VmFsdWVzKCkge1xuXHRcdFx0cmV0dXJuIE9iamVjdC52YWx1ZXMgIT09IHBvbHlmaWxsO1xuXHRcdH1cblx0fSk7XG5cdHJldHVybiBwb2x5ZmlsbDtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLyogIHdlYWsgKi9cblxuLypcbiByZS1idWlsZCB0aGlzIGJ5OlxuXG5zZWQgJ3MvXFwoZ29vZ2xlXFwvcHJvdG9idWZcXCkvXFwuXFwvXFwxLycgdHJlem9yLWNvbW1vbi9wcm90b2IvY29uZmlnLnByb3RvID4gdHJlem9yLWNvbW1vbi9wcm90b2IvY29uZmlnX2ZpeGVkLnByb3RvXG4kKG5wbSBiaW4pL3Byb3RvMmpzIHRyZXpvci1jb21tb24vcHJvdG9iL2NvbmZpZ19maXhlZC5wcm90byAtY29tbW9uanMgPiBjb25maWdfcHJvdG9fY29tcGlsZWQuanNcbnJtIHRyZXpvci1jb21tb24vcHJvdG9iL2NvbmZpZ19maXhlZC5wcm90b1xuXG5naXZlbiB0cmV6b3ItY29tbW9uIGlzIGZyb20gZ2l0aHViIHRyZXpvci1jb21tb25cblxudGhlIGNvbmZpZy5wcm90byBpcyBub3QgY2hhbmdlZCBtdWNoXG5cbiovXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm90b2J1ZmpzLW9sZC1maXhlZC13ZWJwYWNrXCIpLm5ld0J1aWxkZXIoe30pW1wiaW1wb3J0XCJdKHtcbiAgICBcInBhY2thZ2VcIjogbnVsbCxcbiAgICBcIm1lc3NhZ2VzXCI6IFt7XG4gICAgICAgIFwibmFtZVwiOiBcIkRldmljZURlc2NyaXB0b3JcIixcbiAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ1aW50MzJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcInZlbmRvcl9pZFwiLFxuICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcInR5cGVcIjogXCJ1aW50MzJcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcInByb2R1Y3RfaWRcIixcbiAgICAgICAgICAgIFwiaWRcIjogMlxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJzZXJpYWxfbnVtYmVyXCIsXG4gICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwicGF0aFwiLFxuICAgICAgICAgICAgXCJpZFwiOiA0XG4gICAgICAgIH1dLFxuICAgICAgICBcImVudW1zXCI6IFtdLFxuICAgICAgICBcIm1lc3NhZ2VzXCI6IFtdLFxuICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgfSwge1xuICAgICAgICBcIm5hbWVcIjogXCJDb25maWd1cmF0aW9uXCIsXG4gICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJ3aGl0ZWxpc3RfdXJsc1wiLFxuICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIFwibmFtZVwiOiBcImJsYWNrbGlzdF91cmxzXCIsXG4gICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJydWxlXCI6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImdvb2dsZS5wcm90b2J1Zi5GaWxlRGVzY3JpcHRvclNldFwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwid2lyZV9wcm90b2NvbFwiLFxuICAgICAgICAgICAgXCJpZFwiOiAzXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcInR5cGVcIjogXCJEZXZpY2VEZXNjcmlwdG9yXCIsXG4gICAgICAgICAgICBcIm5hbWVcIjogXCJrbm93bl9kZXZpY2VzXCIsXG4gICAgICAgICAgICBcImlkXCI6IDRcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwidHlwZVwiOiBcInVpbnQzMlwiLFxuICAgICAgICAgICAgXCJuYW1lXCI6IFwidmFsaWRfdW50aWxcIixcbiAgICAgICAgICAgIFwiaWRcIjogNVxuICAgICAgICB9XSxcbiAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgXCJtZXNzYWdlc1wiOiBbXSxcbiAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICBcIm9uZW9mc1wiOiB7fVxuICAgIH1dLFxuICAgIFwiZW51bXNcIjogW10sXG4gICAgXCJpbXBvcnRzXCI6IFt7XG4gICAgICAgIFwicGFja2FnZVwiOiBcImdvb2dsZS5wcm90b2J1ZlwiLFxuICAgICAgICBcIm1lc3NhZ2VzXCI6IFt7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGaWxlRGVzY3JpcHRvclNldFwiLFxuICAgICAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJGaWxlRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZmlsZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcImVudW1zXCI6IFtdLFxuICAgICAgICAgICAgXCJtZXNzYWdlc1wiOiBbXSxcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkZpbGVEZXNjcmlwdG9yUHJvdG9cIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInBhY2thZ2VcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkZXBlbmRlbmN5XCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAzXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW50MzJcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJwdWJsaWNfZGVwZW5kZW5jeVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMTBcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbnQzMlwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIndlYWtfZGVwZW5kZW5jeVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMTFcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJEZXNjcmlwdG9yUHJvdG9cIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJtZXNzYWdlX3R5cGVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDRcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJFbnVtRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZW51bV90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA1XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiU2VydmljZURlc2NyaXB0b3JQcm90b1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInNlcnZpY2VcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDZcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJGaWVsZERlc2NyaXB0b3JQcm90b1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImV4dGVuc2lvblwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogN1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkZpbGVPcHRpb25zXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwib3B0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOFxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIlNvdXJjZUNvZGVJbmZvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwic291cmNlX2NvZGVfaW5mb1wiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcImVudW1zXCI6IFtdLFxuICAgICAgICAgICAgXCJtZXNzYWdlc1wiOiBbXSxcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkRlc2NyaXB0b3JQcm90b1wiLFxuICAgICAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiRmllbGREZXNjcmlwdG9yUHJvdG9cIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJmaWVsZFwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMlxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkZpZWxkRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZXh0ZW5zaW9uXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA2XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmVzdGVkX3R5cGVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJFbnVtRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZW51bV90eXBlXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA0XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiRXh0ZW5zaW9uUmFuZ2VcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJleHRlbnNpb25fcmFuZ2VcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJNZXNzYWdlT3B0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm9wdGlvbnNcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDdcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW3tcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJFeHRlbnNpb25SYW5nZVwiLFxuICAgICAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW50MzJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwic3RhcnRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImludDMyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImVuZFwiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICBcImVudW1zXCI6IFtdLFxuICAgICAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIkZpZWxkRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICBcImZpZWxkc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDFcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbnQzMlwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm51bWJlclwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogM1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkxhYmVsXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibGFiZWxcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDRcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJUeXBlXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwidHlwZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogNVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInR5cGVfbmFtZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogNlxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImV4dGVuZGVlXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAyXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiZGVmYXVsdF92YWx1ZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogN1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkZpZWxkT3B0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm9wdGlvbnNcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDhcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIlR5cGVcIixcbiAgICAgICAgICAgICAgICBcInZhbHVlc1wiOiBbe1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJUWVBFX0RPVUJMRVwiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDFcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIlRZUEVfRkxPQVRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAyXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJUWVBFX0lOVDY0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogM1xuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9VSU5UNjRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiA0XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJUWVBFX0lOVDMyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogNVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9GSVhFRDY0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogNlxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9GSVhFRDMyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogN1xuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9CT09MXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogOFxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9TVFJJTkdcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiA5XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJUWVBFX0dST1VQXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMTBcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIlRZUEVfTUVTU0FHRVwiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDExXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJUWVBFX0JZVEVTXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMTJcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIlRZUEVfVUlOVDMyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMTNcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIlRZUEVfRU5VTVwiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDE0XG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJUWVBFX1NGSVhFRDMyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMTVcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIlRZUEVfU0ZJWEVENjRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxNlxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9TSU5UMzJcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxN1xuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiVFlQRV9TSU5UNjRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxOFxuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIkxhYmVsXCIsXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZXNcIjogW3tcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiTEFCRUxfT1BUSU9OQUxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJMQUJFTF9SRVFVSVJFRFwiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIkxBQkVMX1JFUEVBVEVEXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogM1xuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcIm1lc3NhZ2VzXCI6IFtdLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJvbmVvZnNcIjoge31cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRW51bURlc2NyaXB0b3JQcm90b1wiLFxuICAgICAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuYW1lXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiRW51bVZhbHVlRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwidmFsdWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJFbnVtT3B0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm9wdGlvbnNcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFbnVtVmFsdWVEZXNjcmlwdG9yUHJvdG9cIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImludDMyXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibnVtYmVyXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAyXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiRW51bVZhbHVlT3B0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm9wdGlvbnNcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJTZXJ2aWNlRGVzY3JpcHRvclByb3RvXCIsXG4gICAgICAgICAgICBcImZpZWxkc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDFcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJNZXRob2REZXNjcmlwdG9yUHJvdG9cIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJtZXRob2RcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJTZXJ2aWNlT3B0aW9uc1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm9wdGlvbnNcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNZXRob2REZXNjcmlwdG9yUHJvdG9cIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImlucHV0X3R5cGVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJvdXRwdXRfdHlwZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogM1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIk1ldGhvZE9wdGlvbnNcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJvcHRpb25zXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA0XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIFwiZW51bXNcIjogW10sXG4gICAgICAgICAgICBcIm1lc3NhZ2VzXCI6IFtdLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJvbmVvZnNcIjoge31cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRmlsZU9wdGlvbnNcIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiamF2YV9wYWNrYWdlXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiamF2YV9vdXRlcl9jbGFzc25hbWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDhcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImphdmFfbXVsdGlwbGVfZmlsZXNcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDEwXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJqYXZhX2dlbmVyYXRlX2VxdWFsc19hbmRfaGFzaFwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMjBcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBcIlNQRUVEXCJcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIk9wdGltaXplTW9kZVwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm9wdGltaXplX2ZvclwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImdvX3BhY2thZ2VcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDExXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJjY19nZW5lcmljX3NlcnZpY2VzXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAxNlxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiamF2YV9nZW5lcmljX3NlcnZpY2VzXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAxN1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwicHlfZ2VuZXJpY19zZXJ2aWNlc1wiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMThcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJVbmludGVycHJldGVkT3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwidW5pbnRlcnByZXRlZF9vcHRpb25cIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDk5OVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcImVudW1zXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiT3B0aW1pemVNb2RlXCIsXG4gICAgICAgICAgICAgICAgXCJ2YWx1ZXNcIjogW3tcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiU1BFRURcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJDT0RFX1NJWkVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAyXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJMSVRFX1JVTlRJTUVcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAzXG4gICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fSxcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uc1wiOiBbMTAwMCwgNTM2ODcwOTExXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNZXNzYWdlT3B0aW9uc1wiLFxuICAgICAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm1lc3NhZ2Vfc2V0X3dpcmVfZm9ybWF0XCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIjogZmFsc2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJub19zdGFuZGFyZF9kZXNjcmlwdG9yX2FjY2Vzc29yXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAyXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiVW5pbnRlcnByZXRlZE9wdGlvblwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInVuaW50ZXJwcmV0ZWRfb3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA5OTlcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fSxcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uc1wiOiBbMTAwMCwgNTM2ODcwOTExXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJGaWVsZE9wdGlvbnNcIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIjogXCJTVFJJTkdcIlxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiQ1R5cGVcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJjdHlwZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImJvb2xcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJwYWNrZWRcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImxhenlcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgIFwiZGVmYXVsdFwiOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImRlcHJlY2F0ZWRcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJleHBlcmltZW50YWxfbWFwX2tleVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOVxuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJkZWZhdWx0XCI6IGZhbHNlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwid2Vha1wiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogMTBcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJVbmludGVycHJldGVkT3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwidW5pbnRlcnByZXRlZF9vcHRpb25cIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDk5OVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcImVudW1zXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiQ1R5cGVcIixcbiAgICAgICAgICAgICAgICBcInZhbHVlc1wiOiBbe1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJTVFJJTkdcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAwXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJDT1JEXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwiU1RSSU5HX1BJRUNFXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMlxuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fVxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcIm1lc3NhZ2VzXCI6IFtdLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJvbmVvZnNcIjoge30sXG4gICAgICAgICAgICBcImV4dGVuc2lvbnNcIjogWzEwMDAsIDUzNjg3MDkxMV1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiRW51bU9wdGlvbnNcIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiYm9vbFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImFsbG93X2FsaWFzXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAyXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiVW5pbnRlcnByZXRlZE9wdGlvblwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInVuaW50ZXJwcmV0ZWRfb3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA5OTlcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fSxcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uc1wiOiBbMTAwMCwgNTM2ODcwOTExXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJFbnVtVmFsdWVPcHRpb25zXCIsXG4gICAgICAgICAgICBcImZpZWxkc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIlVuaW50ZXJwcmV0ZWRPcHRpb25cIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJ1bmludGVycHJldGVkX29wdGlvblwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOTk5XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIFwiZW51bXNcIjogW10sXG4gICAgICAgICAgICBcIm1lc3NhZ2VzXCI6IFtdLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJvbmVvZnNcIjoge30sXG4gICAgICAgICAgICBcImV4dGVuc2lvbnNcIjogWzEwMDAsIDUzNjg3MDkxMV1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiU2VydmljZU9wdGlvbnNcIixcbiAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVwZWF0ZWRcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiVW5pbnRlcnByZXRlZE9wdGlvblwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInVuaW50ZXJwcmV0ZWRfb3B0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA5OTlcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICBcIm9uZW9mc1wiOiB7fSxcbiAgICAgICAgICAgIFwiZXh0ZW5zaW9uc1wiOiBbMTAwMCwgNTM2ODcwOTExXVxuICAgICAgICB9LCB7XG4gICAgICAgICAgICBcIm5hbWVcIjogXCJNZXRob2RPcHRpb25zXCIsXG4gICAgICAgICAgICBcImZpZWxkc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIlVuaW50ZXJwcmV0ZWRPcHRpb25cIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJ1bmludGVycHJldGVkX29wdGlvblwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOTk5XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIFwiZW51bXNcIjogW10sXG4gICAgICAgICAgICBcIm1lc3NhZ2VzXCI6IFtdLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJvbmVvZnNcIjoge30sXG4gICAgICAgICAgICBcImV4dGVuc2lvbnNcIjogWzEwMDAsIDUzNjg3MDkxMV1cbiAgICAgICAgfSwge1xuICAgICAgICAgICAgXCJuYW1lXCI6IFwiVW5pbnRlcnByZXRlZE9wdGlvblwiLFxuICAgICAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJOYW1lUGFydFwiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIm5hbWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJpZGVudGlmaWVyX3ZhbHVlXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiAzXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwidWludDY0XCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwicG9zaXRpdmVfaW50X3ZhbHVlXCIsXG4gICAgICAgICAgICAgICAgXCJpZFwiOiA0XG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW50NjRcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJuZWdhdGl2ZV9pbnRfdmFsdWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDVcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJkb3VibGVcIixcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJkb3VibGVfdmFsdWVcIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDZcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJvcHRpb25hbFwiLFxuICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJieXRlc1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInN0cmluZ192YWx1ZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogN1xuICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImFnZ3JlZ2F0ZV92YWx1ZVwiLFxuICAgICAgICAgICAgICAgIFwiaWRcIjogOFxuICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICBcImVudW1zXCI6IFtdLFxuICAgICAgICAgICAgXCJtZXNzYWdlc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcIk5hbWVQYXJ0XCIsXG4gICAgICAgICAgICAgICAgXCJmaWVsZHNcIjogW3tcbiAgICAgICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibmFtZV9wYXJ0XCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMVxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJydWxlXCI6IFwicmVxdWlyZWRcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJib29sXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcImlzX2V4dGVuc2lvblwiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDJcbiAgICAgICAgICAgICAgICB9XSxcbiAgICAgICAgICAgICAgICBcImVudW1zXCI6IFtdLFxuICAgICAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW10sXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgICAgICAgICB9XSxcbiAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgIFwib25lb2ZzXCI6IHt9XG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIFwibmFtZVwiOiBcIlNvdXJjZUNvZGVJbmZvXCIsXG4gICAgICAgICAgICBcImZpZWxkc1wiOiBbe1xuICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcIkxvY2F0aW9uXCIsXG4gICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibG9jYXRpb25cIixcbiAgICAgICAgICAgICAgICBcImlkXCI6IDFcbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJlbnVtc1wiOiBbXSxcbiAgICAgICAgICAgIFwibWVzc2FnZXNcIjogW3tcbiAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJMb2NhdGlvblwiLFxuICAgICAgICAgICAgICAgIFwiZmllbGRzXCI6IFt7XG4gICAgICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcInJlcGVhdGVkXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBcInBhY2tlZFwiOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImludDMyXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInBhdGhcIixcbiAgICAgICAgICAgICAgICAgICAgXCJpZFwiOiAxXG4gICAgICAgICAgICAgICAgfSwge1xuICAgICAgICAgICAgICAgICAgICBcInJ1bGVcIjogXCJyZXBlYXRlZFwiLFxuICAgICAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgXCJwYWNrZWRcIjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbnQzMlwiLFxuICAgICAgICAgICAgICAgICAgICBcIm5hbWVcIjogXCJzcGFuXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogMlxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgXCJydWxlXCI6IFwib3B0aW9uYWxcIixcbiAgICAgICAgICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJzdHJpbmdcIixcbiAgICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IFwibGVhZGluZ19jb21tZW50c1wiLFxuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IDNcbiAgICAgICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgICAgIFwicnVsZVwiOiBcIm9wdGlvbmFsXCIsXG4gICAgICAgICAgICAgICAgICAgIFwib3B0aW9uc1wiOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBcInRyYWlsaW5nX2NvbW1lbnRzXCIsXG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogNFxuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgICAgIFwiZW51bXNcIjogW10sXG4gICAgICAgICAgICAgICAgXCJtZXNzYWdlc1wiOiBbXSxcbiAgICAgICAgICAgICAgICBcIm9wdGlvbnNcIjoge30sXG4gICAgICAgICAgICAgICAgXCJvbmVvZnNcIjoge31cbiAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgXCJvcHRpb25zXCI6IHt9LFxuICAgICAgICAgICAgXCJvbmVvZnNcIjoge31cbiAgICAgICAgfV0sXG4gICAgICAgIFwiZW51bXNcIjogW10sXG4gICAgICAgIFwiaW1wb3J0c1wiOiBbXSxcbiAgICAgICAgXCJvcHRpb25zXCI6IHtcbiAgICAgICAgICAgIFwiamF2YV9wYWNrYWdlXCI6IFwiY29tLmdvb2dsZS5wcm90b2J1ZlwiLFxuICAgICAgICAgICAgXCJqYXZhX291dGVyX2NsYXNzbmFtZVwiOiBcIkRlc2NyaXB0b3JQcm90b3NcIixcbiAgICAgICAgICAgIFwib3B0aW1pemVfZm9yXCI6IFwiU1BFRURcIlxuICAgICAgICB9LFxuICAgICAgICBcInNlcnZpY2VzXCI6IFtdXG4gICAgfV0sXG4gICAgXCJvcHRpb25zXCI6IHt9LFxuICAgIFwic2VydmljZXNcIjogW11cbn0pLmJ1aWxkKCk7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIEhlbHBlciBtb2R1bGUgZm9yIGNvbnZlcnRpbmcgVHJlem9yJ3MgcmF3IGlucHV0IHRvXG4vLyBQcm90b0J1ZidzIG1lc3NhZ2UgYW5kIGZyb20gdGhlcmUgdG8gcmVndWxhciBKU09OIHRvIHRyZXpvci5qc1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0cy5NZXNzYWdlRGVjb2RlciA9IHVuZGVmaW5lZDtcblxudmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblxudmFyIF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrID0gcmVxdWlyZShcInByb3RvYnVmanMtb2xkLWZpeGVkLXdlYnBhY2tcIik7XG5cbnZhciBQcm90b0J1ZiA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKF9wcm90b2J1ZmpzT2xkRml4ZWRXZWJwYWNrKTtcblxudmFyIF9tZXNzYWdlcyA9IHJlcXVpcmUoXCIuL21lc3NhZ2VzLmpzXCIpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmouX19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChvYmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIgQnl0ZUJ1ZmZlciA9IFByb3RvQnVmLkJ5dGVCdWZmZXI7XG52YXIgTG9uZyA9IFByb3RvQnVmLkxvbmc7XG5cbnZhciBNZXNzYWdlRGVjb2RlciA9IGV4cG9ydHMuTWVzc2FnZURlY29kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIC8vIG1lc3NhZ2UgdHlwZSBudW1iZXJcbiAgZnVuY3Rpb24gTWVzc2FnZURlY29kZXIobWVzc2FnZXMsIHR5cGUsIGRhdGEpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWVzc2FnZURlY29kZXIpO1xuXG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICAgIHRoaXMubWVzc2FnZXMgPSBtZXNzYWdlcztcbiAgfVxuXG4gIC8vIFJldHVybnMgYW4gaW5mbyBhYm91dCB0aGlzIG1lc3NhZ2UsXG4gIC8vIHdoaWNoIGluY2x1ZGVzIHRoZSBjb25zdHJ1Y3RvciBvYmplY3QgYW5kIGEgbmFtZVxuXG4gIC8vIHJhdyBkYXRhIHRvIHB1c2ggdG8gVHJlem9yXG5cbiAgLy8gQnVpbGRlcnMsIGdlbmVyYXRlZCBieSByZWFkaW5nIGNvbmZpZ1xuXG5cbiAgX2NyZWF0ZUNsYXNzKE1lc3NhZ2VEZWNvZGVyLCBbe1xuICAgIGtleTogXCJfbWVzc2FnZUluZm9cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gX21lc3NhZ2VJbmZvKCkge1xuICAgICAgdmFyIHIgPSB0aGlzLm1lc3NhZ2VzLm1lc3NhZ2VzQnlUeXBlW3RoaXMudHlwZV07XG4gICAgICBpZiAociA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCB0eXBlIG5vdCBmb3VuZCAtIFwiICsgdGhpcy50eXBlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgTWVzc2FnZUluZm8oci5jb25zdHJ1Y3Rvciwgci5uYW1lKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBtZXNzYWdlXG5cbiAgfSwge1xuICAgIGtleTogXCJtZXNzYWdlTmFtZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtZXNzYWdlTmFtZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tZXNzYWdlSW5mbygpLm5hbWU7XG4gICAgfVxuXG4gICAgLy8gUmV0dXJucyB0aGUgYWN0dWFsIGRlY29kZWQgbWVzc2FnZSwgYXMgYSBQcm90b0J1Zi5qcyBvYmplY3RcblxuICB9LCB7XG4gICAga2V5OiBcIl9kZWNvZGVkTWVzc2FnZVwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZGVjb2RlZE1lc3NhZ2UoKSB7XG4gICAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9tZXNzYWdlSW5mbygpLm1lc3NhZ2VDb25zdHJ1Y3RvcjtcbiAgICAgIHJldHVybiBjb25zdHJ1Y3Rvci5kZWNvZGUodGhpcy5kYXRhKTtcbiAgICB9XG5cbiAgICAvLyBSZXR1cm5zIHRoZSBtZXNzYWdlIGRlY29kZWQgdG8gSlNPTiwgdGhhdCBjb3VsZCBiZSBoYW5kZWQgYmFja1xuICAgIC8vIHRvIHRyZXpvci5qc1xuXG4gIH0sIHtcbiAgICBrZXk6IFwiZGVjb2RlZEpTT05cIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gZGVjb2RlZEpTT04oKSB7XG4gICAgICB2YXIgZGVjb2RlZCA9IHRoaXMuX2RlY29kZWRNZXNzYWdlKCk7XG4gICAgICB2YXIgY29udmVydGVkID0gbWVzc2FnZVRvSlNPTihkZWNvZGVkKTtcblxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoY29udmVydGVkKSk7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1lc3NhZ2VEZWNvZGVyO1xufSgpO1xuXG52YXIgTWVzc2FnZUluZm8gPSBmdW5jdGlvbiBNZXNzYWdlSW5mbyhtZXNzYWdlQ29uc3RydWN0b3IsIG5hbWUpIHtcbiAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIE1lc3NhZ2VJbmZvKTtcblxuICB0aGlzLm1lc3NhZ2VDb25zdHJ1Y3RvciA9IG1lc3NhZ2VDb25zdHJ1Y3RvcjtcbiAgdGhpcy5uYW1lID0gbmFtZTtcbn07XG5cbi8vIENvbnZlcnRzIGFueSBQcm90b0J1ZiBtZXNzYWdlIHRvIEpTT04gaW4gVHJlem9yLmpzLWZyaWVuZGx5IGZvcm1hdFxuXG5cbmZ1bmN0aW9uIG1lc3NhZ2VUb0pTT04obWVzc2FnZSkge1xuICB2YXIgcmVzID0ge307XG4gIHZhciBtZXRhID0gbWVzc2FnZS4kdHlwZTtcblxuICB2YXIgX2xvb3AgPSBmdW5jdGlvbiBfbG9vcChrZXkpIHtcbiAgICB2YXIgdmFsdWUgPSBtZXNzYWdlW2tleV07XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAvLyBpZ25vcmluZ1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBCeXRlQnVmZmVyKSB7XG4gICAgICB2YXIgaGV4ID0gdmFsdWUudG9IZXgoKTtcbiAgICAgIHJlc1trZXldID0gaGV4O1xuICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBMb25nKSB7XG4gICAgICB2YXIgbnVtID0gdmFsdWUudG9OdW1iZXIoKTtcbiAgICAgIHJlc1trZXldID0gbnVtO1xuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHZhciBkZWNvZGVkQXJyID0gdmFsdWUubWFwKGZ1bmN0aW9uIChpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgIHJldHVybiBtZXNzYWdlVG9KU09OKGkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJlc1trZXldID0gZGVjb2RlZEFycjtcbiAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgUHJvdG9CdWYuQnVpbGRlci5NZXNzYWdlKSB7XG4gICAgICByZXNba2V5XSA9IG1lc3NhZ2VUb0pTT04odmFsdWUpO1xuICAgIH0gZWxzZSBpZiAobWV0YS5fZmllbGRzQnlOYW1lW2tleV0udHlwZS5uYW1lID09PSBcImVudW1cIikge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmVzW2tleV0gPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGVudW1WYWx1ZXMgPSBtZXRhLl9maWVsZHNCeU5hbWVba2V5XS5yZXNvbHZlZFR5cGUuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgcmVzW2tleV0gPSBlbnVtVmFsdWVzLmZpbmQoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICByZXR1cm4gZS5pZCA9PT0gdmFsdWU7XG4gICAgICAgIH0pLm5hbWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc1trZXldID0gdmFsdWU7XG4gICAgfVxuICB9O1xuXG4gIGZvciAodmFyIGtleSBpbiBtZXNzYWdlKSB7XG4gICAgX2xvb3Aoa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHVuZGVmaW5lZDtcblxudmFyIF9yZWdlbmVyYXRvciA9IHJlcXVpcmUoJ2JhYmVsLXJ1bnRpbWUvcmVnZW5lcmF0b3InKTtcblxudmFyIF9yZWdlbmVyYXRvcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWdlbmVyYXRvcik7XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbnZhciBfZGVzYywgX3ZhbHVlLCBfY2xhc3M7XG5cbnZhciBfbW9ua2V5X3BhdGNoID0gcmVxdWlyZSgnLi9wcm90b2J1Zi9tb25rZXlfcGF0Y2gnKTtcblxudmFyIF9kZWZlcmVkID0gcmVxdWlyZSgnLi4vZGVmZXJlZCcpO1xuXG52YXIgX3BhcnNlX3Byb3RvY29sID0gcmVxdWlyZSgnLi9wcm90b2J1Zi9wYXJzZV9wcm90b2NvbCcpO1xuXG52YXIgX3NlbmQgPSByZXF1aXJlKCcuL3NlbmQnKTtcblxudmFyIF9yZWNlaXZlID0gcmVxdWlyZSgnLi9yZWNlaXZlJyk7XG5cbnZhciBfZGVidWdEZWNvcmF0b3IgPSByZXF1aXJlKCcuLi9kZWJ1Zy1kZWNvcmF0b3InKTtcblxudmFyIF9zaGFyZWRDb25uZWN0aW9uV29ya2VyID0gcmVxdWlyZSgnLi9zaGFyZWRDb25uZWN0aW9uV29ya2VyJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBnZW4gPSBmbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyBmdW5jdGlvbiBzdGVwKGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IHJldHVybiBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oZnVuY3Rpb24gKHZhbHVlKSB7IHN0ZXAoXCJuZXh0XCIsIHZhbHVlKTsgfSwgZnVuY3Rpb24gKGVycikgeyBzdGVwKFwidGhyb3dcIiwgZXJyKTsgfSk7IH0gfSByZXR1cm4gc3RlcChcIm5leHRcIik7IH0pOyB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVjb3JhdG9ycywgZGVzY3JpcHRvciwgY29udGV4dCkge1xuICB2YXIgZGVzYyA9IHt9O1xuICBPYmplY3RbJ2tlJyArICd5cyddKGRlc2NyaXB0b3IpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGRlc2Nba2V5XSA9IGRlc2NyaXB0b3Jba2V5XTtcbiAgfSk7XG4gIGRlc2MuZW51bWVyYWJsZSA9ICEhZGVzYy5lbnVtZXJhYmxlO1xuICBkZXNjLmNvbmZpZ3VyYWJsZSA9ICEhZGVzYy5jb25maWd1cmFibGU7XG5cbiAgaWYgKCd2YWx1ZScgaW4gZGVzYyB8fCBkZXNjLmluaXRpYWxpemVyKSB7XG4gICAgZGVzYy53cml0YWJsZSA9IHRydWU7XG4gIH1cblxuICBkZXNjID0gZGVjb3JhdG9ycy5zbGljZSgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24gKGRlc2MsIGRlY29yYXRvcikge1xuICAgIHJldHVybiBkZWNvcmF0b3IodGFyZ2V0LCBwcm9wZXJ0eSwgZGVzYykgfHwgZGVzYztcbiAgfSwgZGVzYyk7XG5cbiAgaWYgKGNvbnRleHQgJiYgZGVzYy5pbml0aWFsaXplciAhPT0gdm9pZCAwKSB7XG4gICAgZGVzYy52YWx1ZSA9IGRlc2MuaW5pdGlhbGl6ZXIgPyBkZXNjLmluaXRpYWxpemVyLmNhbGwoY29udGV4dCkgOiB2b2lkIDA7XG4gICAgZGVzYy5pbml0aWFsaXplciA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkZXNjLmluaXRpYWxpemVyID09PSB2b2lkIDApIHtcbiAgICBPYmplY3RbJ2RlZmluZScgKyAnUHJvcGVydHknXSh0YXJnZXQsIHByb3BlcnR5LCBkZXNjKTtcbiAgICBkZXNjID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBkZXNjO1xufVxuXG4oMCwgX21vbmtleV9wYXRjaC5wYXRjaCkoKTtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHF1b3Rlc1xudmFyIHN0cmluZ2lmeSA9IHJlcXVpcmUoJ2pzb24tc3RhYmxlLXN0cmluZ2lmeScpO1xuXG5mdW5jdGlvbiBzdGFibGVTdHJpbmdpZnkoZGV2aWNlcykge1xuICBpZiAoZGV2aWNlcyA9PSBudWxsKSB7XG4gICAgcmV0dXJuICdudWxsJztcbiAgfVxuXG4gIHZhciBwdXJlRGV2aWNlcyA9IGRldmljZXMubWFwKGZ1bmN0aW9uIChkZXZpY2UpIHtcbiAgICB2YXIgcGF0aCA9IGRldmljZS5wYXRoO1xuICAgIHZhciBzZXNzaW9uID0gZGV2aWNlLnNlc3Npb24gPT0gbnVsbCA/IG51bGwgOiBkZXZpY2Uuc2Vzc2lvbjtcbiAgICByZXR1cm4geyBwYXRoOiBwYXRoLCBzZXNzaW9uOiBzZXNzaW9uIH07XG4gIH0pO1xuXG4gIHJldHVybiBzdHJpbmdpZnkocHVyZURldmljZXMpO1xufVxuXG5mdW5jdGlvbiBjb21wYXJlKGEsIGIpIHtcbiAgaWYgKCFpc05hTihwYXJzZUludChhLnBhdGgpKSkge1xuICAgIHJldHVybiBwYXJzZUludChhLnBhdGgpIC0gcGFyc2VJbnQoYi5wYXRoKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gYS5wYXRoIDwgYi5wYXRoID8gLTEgOiBhLnBhdGggPiBiLnBhdGggPyAxIDogMDtcbiAgfVxufVxuXG52YXIgSVRFUl9NQVggPSA2MDtcbnZhciBJVEVSX0RFTEFZID0gNTAwO1xuXG52YXIgTG93bGV2ZWxUcmFuc3BvcnRXaXRoU2hhcmVkQ29ubmVjdGlvbnMgPSAoX2NsYXNzID0gZnVuY3Rpb24gKCkge1xuXG4gIC8vIHBhdGggPT4gcHJvbWlzZSByZWplY3Rpbmcgb24gcmVsZWFzZVxuICBmdW5jdGlvbiBMb3dsZXZlbFRyYW5zcG9ydFdpdGhTaGFyZWRDb25uZWN0aW9ucyhwbHVnaW4sIHNoYXJlZFdvcmtlckZhY3RvcnkpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTG93bGV2ZWxUcmFuc3BvcnRXaXRoU2hhcmVkQ29ubmVjdGlvbnMpO1xuXG4gICAgdGhpcy5uYW1lID0gJ0xvd2xldmVsVHJhbnNwb3J0V2l0aFNoYXJlZENvbm5lY3Rpb25zJztcbiAgICB0aGlzLmRlYnVnID0gZmFsc2U7XG4gICAgdGhpcy5kZWZlcmVkRGVidWdPblJlbGVhc2UgPSB7fTtcbiAgICB0aGlzLmRlZmVyZWROb3JtYWxPblJlbGVhc2UgPSB7fTtcbiAgICB0aGlzLmNvbmZpZ3VyZWQgPSBmYWxzZTtcbiAgICB0aGlzLnN0b3BwZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9sYXN0U3RyaW5naWZpZWQgPSAnJztcbiAgICB0aGlzLnJlcXVlc3ROZWVkZWQgPSBmYWxzZTtcbiAgICB0aGlzLmxhdGVzdElkID0gMDtcbiAgICB0aGlzLmRlZmVyZWRzID0ge307XG4gICAgdGhpcy5pc091dGRhdGVkID0gZmFsc2U7XG5cbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpbjtcbiAgICB0aGlzLnZlcnNpb24gPSBwbHVnaW4udmVyc2lvbjtcbiAgICB0aGlzLl9zaGFyZWRXb3JrZXJGYWN0b3J5ID0gc2hhcmVkV29ya2VyRmFjdG9yeTtcbiAgICBpZiAoIXRoaXMucGx1Z2luLmFsbG93c1dyaXRlQW5kRW51bWVyYXRlKSB7XG4gICAgICAvLyBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gYW55d2F5XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsdWdpbiB3aXRoIHNoYXJlZCBjb25uZWN0aW9ucyBjYW5ub3QgZGlzYWxsb3cgd3JpdGUgYW5kIGVudW1lcmF0ZScpO1xuICAgIH1cbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhMb3dsZXZlbFRyYW5zcG9ydFdpdGhTaGFyZWRDb25uZWN0aW9ucywgW3tcbiAgICBrZXk6ICdlbnVtZXJhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBlbnVtZXJhdGUoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2lsZW50RW51bWVyYXRlKCk7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3NpbGVudEVudW1lcmF0ZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlKCkge1xuICAgICAgICB2YXIgZGV2aWNlcywgc2Vzc2lvbnNNLCBkZWJ1Z1Nlc3Npb25zLCBub3JtYWxTZXNzaW9ucywgZGV2aWNlc1dpdGhTZXNzaW9ucztcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb1dvcmtlcih7IHR5cGU6ICdlbnVtZXJhdGUtaW50ZW50JyB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgZGV2aWNlcyA9IFtdO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAzO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5lbnVtZXJhdGUoKTtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgZGV2aWNlcyA9IF9jb250ZXh0LnNlbnQ7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSA3O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXIoeyB0eXBlOiAnZW51bWVyYXRlLWRvbmUnIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmZpbmlzaCg3KTtcblxuICAgICAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXIoeyB0eXBlOiAnZ2V0LXNlc3Npb25zLWFuZC1kaXNjb25uZWN0JywgZGV2aWNlczogZGV2aWNlcyB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgICAgICAgIHNlc3Npb25zTSA9IF9jb250ZXh0LnNlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIShzZXNzaW9uc00udHlwZSAhPT0gJ3Nlc3Npb25zJykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgcmVwbHknKTtcblxuICAgICAgICAgICAgICBjYXNlIDE2OlxuICAgICAgICAgICAgICAgIGRlYnVnU2Vzc2lvbnMgPSBzZXNzaW9uc00uZGVidWdTZXNzaW9ucztcbiAgICAgICAgICAgICAgICBub3JtYWxTZXNzaW9ucyA9IHNlc3Npb25zTS5ub3JtYWxTZXNzaW9ucztcbiAgICAgICAgICAgICAgICBkZXZpY2VzV2l0aFNlc3Npb25zID0gZGV2aWNlcy5tYXAoZnVuY3Rpb24gKGRldmljZSkge1xuICAgICAgICAgICAgICAgICAgdmFyIHNlc3Npb24gPSBub3JtYWxTZXNzaW9uc1tkZXZpY2UucGF0aF07XG4gICAgICAgICAgICAgICAgICB2YXIgZGVidWdTZXNzaW9uID0gZGVidWdTZXNzaW9uc1tkZXZpY2UucGF0aF07XG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBwYXRoOiBkZXZpY2UucGF0aCxcbiAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbjogc2Vzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgZGVidWc6IGRldmljZS5kZWJ1ZyxcbiAgICAgICAgICAgICAgICAgICAgZGVidWdTZXNzaW9uOiBkZWJ1Z1Nlc3Npb25cbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuX3JlbGVhc2VEaXNjb25uZWN0ZWQoZGV2aWNlc1dpdGhTZXNzaW9ucyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LmFicnVwdCgncmV0dXJuJywgZGV2aWNlc1dpdGhTZXNzaW9ucy5zb3J0KGNvbXBhcmUpKTtcblxuICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlLCB0aGlzLCBbWzMsLCA3LCAxMV1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gX3NpbGVudEVudW1lcmF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9zaWxlbnRFbnVtZXJhdGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdfcmVsZWFzZURpc2Nvbm5lY3RlZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWxlYXNlRGlzY29ubmVjdGVkKGRldmljZXMpIHtcbiAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICAgIHZhciBjb25uZWN0ZWQgPSB7fTtcbiAgICAgIGRldmljZXMuZm9yRWFjaChmdW5jdGlvbiAoZGV2aWNlKSB7XG4gICAgICAgIGlmIChkZXZpY2Uuc2Vzc2lvbiAhPSBudWxsKSB7XG4gICAgICAgICAgY29ubmVjdGVkW2RldmljZS5zZXNzaW9uXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmtleXModGhpcy5kZWZlcmVkRGVidWdPblJlbGVhc2UpLmZvckVhY2goZnVuY3Rpb24gKHNlc3Npb24pIHtcbiAgICAgICAgaWYgKGNvbm5lY3RlZFtzZXNzaW9uXSA9PSBudWxsKSB7XG4gICAgICAgICAgX3RoaXMuX3JlbGVhc2VDbGVhbnVwKHNlc3Npb24sIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5rZXlzKHRoaXMuZGVmZXJlZE5vcm1hbE9uUmVsZWFzZSkuZm9yRWFjaChmdW5jdGlvbiAoc2Vzc2lvbikge1xuICAgICAgICBpZiAoY29ubmVjdGVkW3Nlc3Npb25dID09IG51bGwpIHtcbiAgICAgICAgICBfdGhpcy5fcmVsZWFzZUNsZWFudXAoc2Vzc2lvbiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdsaXN0ZW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUyKG9sZCkge1xuICAgICAgICB2YXIgb2xkU3RyaW5naWZpZWQsIGxhc3Q7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMiQoX2NvbnRleHQyKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQyLnByZXYgPSBfY29udGV4dDIubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgb2xkU3RyaW5naWZpZWQgPSBzdGFibGVTdHJpbmdpZnkob2xkKTtcbiAgICAgICAgICAgICAgICBsYXN0ID0gb2xkID09IG51bGwgPyB0aGlzLl9sYXN0U3RyaW5naWZpZWQgOiBvbGRTdHJpbmdpZmllZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdCgncmV0dXJuJywgdGhpcy5fcnVuSXRlcigwLCBsYXN0KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBsaXN0ZW4oX3gpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBsaXN0ZW47XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdfcnVuSXRlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmMyA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTMoaXRlcmF0aW9uLCBvbGRTdHJpbmdpZmllZCkge1xuICAgICAgICB2YXIgZGV2aWNlcywgc3RyaW5naWZpZWQ7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMyQoX2NvbnRleHQzKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQzLnByZXYgPSBfY29udGV4dDMubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLm5leHQgPSAyO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zaWxlbnRFbnVtZXJhdGUoKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgZGV2aWNlcyA9IF9jb250ZXh0My5zZW50O1xuICAgICAgICAgICAgICAgIHN0cmluZ2lmaWVkID0gc3RhYmxlU3RyaW5naWZ5KGRldmljZXMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCEoc3RyaW5naWZpZWQgIT09IG9sZFN0cmluZ2lmaWVkIHx8IGl0ZXJhdGlvbiA9PT0gSVRFUl9NQVgpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDMubmV4dCA9IDc7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9sYXN0U3RyaW5naWZpZWQgPSBzdHJpbmdpZmllZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLmFicnVwdCgncmV0dXJuJywgZGV2aWNlcyk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gOTtcbiAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9kZWZlcmVkLnJlc29sdmVUaW1lb3V0UHJvbWlzZSkoSVRFUl9ERUxBWSwgbnVsbCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA5OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDMuYWJydXB0KCdyZXR1cm4nLCB0aGlzLl9ydW5JdGVyKGl0ZXJhdGlvbiArIDEsIHN0cmluZ2lmaWVkKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gX3J1bkl0ZXIoX3gyLCBfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfcnVuSXRlcjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2FjcXVpcmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjQgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU0KGlucHV0LCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgdmFyIG1lc3NCYWNrLCByZXNldCwgbWVzc0JhY2syLCBzZXNzaW9uO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTQkKF9jb250ZXh0NCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NC5wcmV2ID0gX2NvbnRleHQ0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXIoe1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ2FjcXVpcmUtaW50ZW50JyxcbiAgICAgICAgICAgICAgICAgIHBhdGg6IGlucHV0LnBhdGgsXG4gICAgICAgICAgICAgICAgICBwcmV2aW91czogaW5wdXQucHJldmlvdXMsXG4gICAgICAgICAgICAgICAgICBkZWJ1ZzogZGVidWdMaW5rXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIG1lc3NCYWNrID0gX2NvbnRleHQ0LnNlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIShtZXNzQmFjay50eXBlID09PSAnd3JvbmctcHJldmlvdXMtc2Vzc2lvbicpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3dyb25nIHByZXZpb3VzIHNlc3Npb24nKTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgaWYgKCEobWVzc0JhY2sudHlwZSAhPT0gJ290aGVyLXNlc3Npb24nKSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSA3O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJhbmdlIHJlcGx5Jyk7XG5cbiAgICAgICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgICAgIHJlc2V0ID0gbWVzc0JhY2sub3RoZXJTZXNzaW9uID09IG51bGw7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSA4O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMTE7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmNvbm5lY3QoaW5wdXQucGF0aCwgZGVidWdMaW5rLCByZXNldCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDE4O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0LnByZXYgPSAxMztcbiAgICAgICAgICAgICAgICBfY29udGV4dDQudDAgPSBfY29udGV4dDRbJ2NhdGNoJ10oOCk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAxNztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXIoeyB0eXBlOiAnYWNxdWlyZS1mYWlsZWQnIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICAgICAgdGhyb3cgX2NvbnRleHQ0LnQwO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTg6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAyMDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXIoeyB0eXBlOiAnYWNxdWlyZS1kb25lJyB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDIwOlxuICAgICAgICAgICAgICAgIG1lc3NCYWNrMiA9IF9jb250ZXh0NC5zZW50O1xuXG4gICAgICAgICAgICAgICAgaWYgKCEobWVzc0JhY2syLnR5cGUgIT09ICdzZXNzaW9uLW51bWJlcicpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDQubmV4dCA9IDIzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdHJhbmdlIHJlcGx5LicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICAgICAgc2Vzc2lvbiA9IG1lc3NCYWNrMi5udW1iZXI7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGVidWdMaW5rKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmRlZmVyZWREZWJ1Z09uUmVsZWFzZVtzZXNzaW9uXSA9ICgwLCBfZGVmZXJlZC5jcmVhdGUpKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGVmZXJlZE5vcm1hbE9uUmVsZWFzZVtzZXNzaW9uXSA9ICgwLCBfZGVmZXJlZC5jcmVhdGUpKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuYWJydXB0KCdyZXR1cm4nLCBzZXNzaW9uKTtcblxuICAgICAgICAgICAgICBjYXNlIDI2OlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTQsIHRoaXMsIFtbOCwgMTNdXSk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGFjcXVpcmUoX3g0LCBfeDUpIHtcbiAgICAgICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhY3F1aXJlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAncmVsZWFzZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmNSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUoc2Vzc2lvbiwgb25jbG9zZSwgZGVidWdMaW5rKSB7XG4gICAgICAgIHZhciBtZXNzYmFjaywgcGF0aCwgb3RoZXJTZXNzaW9uLCBsYXN0O1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGlmICghKG9uY2xvc2UgJiYgIWRlYnVnTGluaykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGlmIHdlIHdhaXQgZm9yIHdvcmtlciBtZXNzYWdlcywgc2hhcmVkIHdvcmtlciBzdXJ2aXZlc1xuICAgICAgICAgICAgICAgIC8vIGFuZCBkZWxheXMgY2xvc2luZ1xuICAgICAgICAgICAgICAgIC8vIHNvIHdlIFwiZmFrZVwiIHJlbGVhc2VcbiAgICAgICAgICAgICAgICB0aGlzLnNlbmRUb1dvcmtlcih7IHR5cGU6ICdyZWxlYXNlLW9uY2xvc2UnLCBzZXNzaW9uOiBzZXNzaW9uIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuYWJydXB0KCdyZXR1cm4nKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA1O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNlbmRUb1dvcmtlcih7IHR5cGU6ICdyZWxlYXNlLWludGVudCcsIHNlc3Npb246IHNlc3Npb24sIGRlYnVnOiBkZWJ1Z0xpbmsgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICAgIG1lc3NiYWNrID0gX2NvbnRleHQ1LnNlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIShtZXNzYmFjay50eXBlID09PSAnZG91YmxlLXJlbGVhc2UnKSkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA4O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUcnlpbmcgdG8gZG91YmxlIHJlbGVhc2UuJyk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIGlmICghKG1lc3NiYWNrLnR5cGUgIT09ICdwYXRoJykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0cmFuZ2UgcmVwbHkuJyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICBwYXRoID0gbWVzc2JhY2sucGF0aDtcbiAgICAgICAgICAgICAgICBvdGhlclNlc3Npb24gPSBtZXNzYmFjay5vdGhlclNlc3Npb247XG4gICAgICAgICAgICAgICAgbGFzdCA9IG90aGVyU2Vzc2lvbiA9PSBudWxsO1xuXG5cbiAgICAgICAgICAgICAgICB0aGlzLl9yZWxlYXNlQ2xlYW51cChzZXNzaW9uLCBkZWJ1Z0xpbmspO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gMTQ7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAxNztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW4uZGlzY29ubmVjdChwYXRoLCBkZWJ1Z0xpbmssIGxhc3QpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTc6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSAyMTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE5OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0NS5wcmV2ID0gMTk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ1LnQwID0gX2NvbnRleHQ1WydjYXRjaCddKDE0KTtcblxuICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2VuZFRvV29ya2VyKHsgdHlwZTogJ3JlbGVhc2UtZG9uZScgfSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMzpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU1LCB0aGlzLCBbWzE0LCAxOV1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVsZWFzZShfeDYsIF94NywgX3g4KSB7XG4gICAgICAgIHJldHVybiBfcmVmNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVsZWFzZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ19yZWxlYXNlQ2xlYW51cCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWxlYXNlQ2xlYW51cChzZXNzaW9uLCBkZWJ1Z0xpbmspIHtcbiAgICAgIHZhciB0YWJsZSA9IGRlYnVnTGluayA/IHRoaXMuZGVmZXJlZERlYnVnT25SZWxlYXNlIDogdGhpcy5kZWZlcmVkTm9ybWFsT25SZWxlYXNlO1xuICAgICAgaWYgKHRhYmxlW3Nlc3Npb25dICE9IG51bGwpIHtcbiAgICAgICAgdGFibGVbc2Vzc2lvbl0ucmVqZWN0KG5ldyBFcnJvcignRGV2aWNlIHJlbGVhc2VkIG9yIGRpc2Nvbm5lY3RlZCcpKTtcbiAgICAgICAgZGVsZXRlIHRhYmxlW3Nlc3Npb25dO1xuICAgICAgfVxuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2NvbmZpZ3VyZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmNiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTYoc2lnbmVkRGF0YSkge1xuICAgICAgICB2YXIgbWVzc2FnZXM7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMgPSAoMCwgX3BhcnNlX3Byb3RvY29sLnBhcnNlQ29uZmlndXJlKShzaWduZWREYXRhKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2VzID0gbWVzc2FnZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmVkID0gdHJ1ZTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNiwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZShfeDkpIHtcbiAgICAgICAgcmV0dXJuIF9yZWY2LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWd1cmU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdfc2VuZExvd2xldmVsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gX3NlbmRMb3dsZXZlbChwYXRoLCBkZWJ1Zykge1xuICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICByZXR1cm4gX3RoaXMyLnBsdWdpbi5zZW5kKHBhdGgsIGRhdGEsIGRlYnVnKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX3JlY2VpdmVMb3dsZXZlbCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9yZWNlaXZlTG93bGV2ZWwocGF0aCwgZGVidWcpIHtcbiAgICAgIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMzLnBsdWdpbi5yZWNlaXZlKHBhdGgsIGRlYnVnKTtcbiAgICAgIH07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnbWVzc2FnZXMnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBtZXNzYWdlcygpIHtcbiAgICAgIGlmICh0aGlzLl9tZXNzYWdlcyA9PSBudWxsKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNwb3J0IG5vdCBjb25maWd1cmVkLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VzO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogJ2RvV2l0aFNlc3Npb24nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjcgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KHNlc3Npb24sIGRlYnVnTGluaywgaW5zaWRlKSB7XG4gICAgICAgIHZhciBzZXNzaW9uc00sIHNlc3Npb25zTU0sIHBhdGhfLCBwYXRoLCByZXNQcm9taXNlLCBkZWZlcmVkO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTckKF9jb250ZXh0Nykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Ny5wcmV2ID0gX2NvbnRleHQ3Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZW5kVG9Xb3JrZXIoeyB0eXBlOiAnZ2V0LXNlc3Npb25zJyB9KTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgc2Vzc2lvbnNNID0gX2NvbnRleHQ3LnNlbnQ7XG5cbiAgICAgICAgICAgICAgICBpZiAoIShzZXNzaW9uc00udHlwZSAhPT0gJ3Nlc3Npb25zJykpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3JvbmcgcmVwbHknKTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgc2Vzc2lvbnNNTSA9IGRlYnVnTGluayA/IHNlc3Npb25zTS5kZWJ1Z1Nlc3Npb25zIDogc2Vzc2lvbnNNLm5vcm1hbFNlc3Npb25zO1xuICAgICAgICAgICAgICAgIHBhdGhfID0gbnVsbDtcblxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNlc3Npb25zTU0pLmZvckVhY2goZnVuY3Rpb24gKGtwYXRoKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbnNNTVtrcGF0aF0gPT09IHNlc3Npb24pIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aF8gPSBrcGF0aDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghKHBhdGhfID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDEwO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZXNzaW9uIG5vdCBhdmFpbGFibGUuJyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICBwYXRoID0gcGF0aF87XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAxMztcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5zaWRlKHBhdGgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgcmVzUHJvbWlzZSA9IF9jb250ZXh0Ny5zZW50O1xuICAgICAgICAgICAgICAgIGRlZmVyZWQgPSBkZWJ1Z0xpbmsgPyB0aGlzLmRlZmVyZWREZWJ1Z09uUmVsZWFzZVtzZXNzaW9uXSA6IHRoaXMuZGVmZXJlZE5vcm1hbE9uUmVsZWFzZVtzZXNzaW9uXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LmFicnVwdCgncmV0dXJuJywgUHJvbWlzZS5yYWNlKFtkZWZlcmVkLnJlamVjdGluZ1Byb21pc2UsIHJlc1Byb21pc2VdKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU3LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gZG9XaXRoU2Vzc2lvbihfeDEwLCBfeDExLCBfeDEyKSB7XG4gICAgICAgIHJldHVybiBfcmVmNy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZG9XaXRoU2Vzc2lvbjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2NhbGwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjggPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU5KHNlc3Npb24sIG5hbWUsIGRhdGEsIGRlYnVnTGluaykge1xuICAgICAgICB2YXIgX3RoaXM0ID0gdGhpcztcblxuICAgICAgICB2YXIgY2FsbEluc2lkZTtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU5JChfY29udGV4dDkpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDkucHJldiA9IF9jb250ZXh0OS5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYWxsSW5zaWRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9yZWY5ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlOChwYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlcywgbWVzc2FnZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDgpIHtcbiAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDgucHJldiA9IF9jb250ZXh0OC5uZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcyA9IF90aGlzNC5tZXNzYWdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKDAsIF9zZW5kLmJ1aWxkQW5kU2VuZCkobWVzc2FnZXMsIF90aGlzNC5fc2VuZExvd2xldmVsKHBhdGgsIGRlYnVnTGluayksIG5hbWUsIGRhdGEpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfcmVjZWl2ZS5yZWNlaXZlQW5kUGFyc2UpKG1lc3NhZ2VzLCBfdGhpczQuX3JlY2VpdmVMb3dsZXZlbChwYXRoLCBkZWJ1Z0xpbmspKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IF9jb250ZXh0OC5zZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguYWJydXB0KCdyZXR1cm4nLCBtZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OC5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlOCwgX3RoaXM0KTtcbiAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxJbnNpZGUoX3gxNykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjkuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfSgpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OS5hYnJ1cHQoJ3JldHVybicsIHRoaXMuZG9XaXRoU2Vzc2lvbihzZXNzaW9uLCBkZWJ1Z0xpbmssIGNhbGxJbnNpZGUpKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0OS5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlOSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNhbGwoX3gxMywgX3gxNCwgX3gxNSwgX3gxNikge1xuICAgICAgICByZXR1cm4gX3JlZjguYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGNhbGw7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdwb3N0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYxMCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTExKHNlc3Npb24sIG5hbWUsIGRhdGEsIGRlYnVnTGluaykge1xuICAgICAgICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICAgICAgICB2YXIgY2FsbEluc2lkZTtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMSQoX2NvbnRleHQxMSkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0MTEucHJldiA9IF9jb250ZXh0MTEubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgY2FsbEluc2lkZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgIHZhciBfcmVmMTEgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxMChwYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlcztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMCQoX2NvbnRleHQxMCkge1xuICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0MTAucHJldiA9IF9jb250ZXh0MTAubmV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZXMgPSBfdGhpczUubWVzc2FnZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDEwLm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoMCwgX3NlbmQuYnVpbGRBbmRTZW5kKShtZXNzYWdlcywgX3RoaXM1Ll9zZW5kTG93bGV2ZWwocGF0aCwgZGVidWdMaW5rKSwgbmFtZSwgZGF0YSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDEwLnN0b3AoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0sIF9jYWxsZWUxMCwgX3RoaXM1KTtcbiAgICAgICAgICAgICAgICAgIH0pKTtcblxuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uIGNhbGxJbnNpZGUoX3gyMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZjExLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0oKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDExLmFicnVwdCgncmV0dXJuJywgdGhpcy5kb1dpdGhTZXNzaW9uKHNlc3Npb24sIGRlYnVnTGluaywgY2FsbEluc2lkZSkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMS5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMTEsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBwb3N0KF94MTgsIF94MTksIF94MjAsIF94MjEpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYxMC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcG9zdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3JlYWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjEyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMTMoc2Vzc2lvbiwgZGVidWdMaW5rKSB7XG4gICAgICAgIHZhciBfdGhpczYgPSB0aGlzO1xuXG4gICAgICAgIHZhciBjYWxsSW5zaWRlO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTEzJChfY29udGV4dDEzKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQxMy5wcmV2ID0gX2NvbnRleHQxMy5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBjYWxsSW5zaWRlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgdmFyIF9yZWYxMyA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTEyKHBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2VzLCBtZXNzYWdlO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTEyJChfY29udGV4dDEyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQxMi5wcmV2ID0gX2NvbnRleHQxMi5uZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlcyA9IF90aGlzNi5tZXNzYWdlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0MTIubmV4dCA9IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgwLCBfcmVjZWl2ZS5yZWNlaXZlQW5kUGFyc2UpKG1lc3NhZ2VzLCBfdGhpczYuX3JlY2VpdmVMb3dsZXZlbChwYXRoLCBkZWJ1Z0xpbmspKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IF9jb250ZXh0MTIuc2VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMi5hYnJ1cHQoJ3JldHVybicsIG1lc3NhZ2UpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMi5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LCBfY2FsbGVlMTIsIF90aGlzNik7XG4gICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiBjYWxsSW5zaWRlKF94MjUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWYxMy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KCk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMy5hYnJ1cHQoJ3JldHVybicsIHRoaXMuZG9XaXRoU2Vzc2lvbihzZXNzaW9uLCBkZWJ1Z0xpbmssIGNhbGxJbnNpZGUpKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTMuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTEzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVhZChfeDIzLCBfeDI0KSB7XG4gICAgICAgIHJldHVybiBfcmVmMTIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlYWQ7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdpbml0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYxNCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTE0KGRlYnVnKSB7XG4gICAgICAgIHZhciBfdGhpczcgPSB0aGlzO1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMTQkKF9jb250ZXh0MTQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDE0LnByZXYgPSBfY29udGV4dDE0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVidWcgPSAhIWRlYnVnO1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdE5lZWRlZCA9IHRoaXMucGx1Z2luLnJlcXVlc3ROZWVkZWQ7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQxNC5uZXh0ID0gNDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW4uaW5pdChkZWJ1Zyk7XG5cbiAgICAgICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgd29ya2VyIE9OTFkgd2hlbiB0aGUgcGx1Z2luIGlzIHN1Y2Nlc3NmdWxseSBpbml0ZWRcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2hhcmVkV29ya2VyRmFjdG9yeSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNoYXJlZFdvcmtlciA9IHRoaXMuX3NoYXJlZFdvcmtlckZhY3RvcnkoKTtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNoYXJlZFdvcmtlciAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hhcmVkV29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAvLyAkRmxvd0lzc3VlXG4gICAgICAgICAgICAgICAgICAgICAgX3RoaXM3LnJlY2VpdmVGcm9tV29ya2VyKGUuZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxNC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMTQsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0KF94MjYpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYxNC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5pdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3JlcXVlc3REZXZpY2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjE1ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMTUoKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMTUkKF9jb250ZXh0MTUpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDE1LnByZXYgPSBfY29udGV4dDE1Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDE1LmFicnVwdCgncmV0dXJuJywgdGhpcy5wbHVnaW4ucmVxdWVzdERldmljZSgpKTtcblxuICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTUuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTE1LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVxdWVzdERldmljZSgpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYxNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVxdWVzdERldmljZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3NlbmRUb1dvcmtlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHNlbmRUb1dvcmtlcihtZXNzYWdlKSB7XG4gICAgICB2YXIgX3RoaXM4ID0gdGhpcztcblxuICAgICAgaWYgKHRoaXMuc3RvcHBlZCkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ1RyYW5zcG9ydCBzdG9wcGVkLicpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxhdGVzdElkKys7XG4gICAgICB2YXIgaWQgPSB0aGlzLmxhdGVzdElkO1xuICAgICAgdGhpcy5kZWZlcmVkc1tpZF0gPSAoMCwgX2RlZmVyZWQuY3JlYXRlKSgpO1xuXG4gICAgICAvLyB3aGVuIHNoYXJlZCB3b3JrZXIgaXMgbm90IGxvYWRlZCBhcyBhIHNoYXJlZCBsb2FkZXIsIHVzZSBpdCBhcyBhIG1vZHVsZSBpbnN0ZWFkXG4gICAgICBpZiAodGhpcy5zaGFyZWRXb3JrZXIgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLnNoYXJlZFdvcmtlci5wb3J0LnBvc3RNZXNzYWdlKHsgaWQ6IGlkLCBtZXNzYWdlOiBtZXNzYWdlIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgKDAsIF9zaGFyZWRDb25uZWN0aW9uV29ya2VyLnBvc3RNb2R1bGVNZXNzYWdlKSh7IGlkOiBpZCwgbWVzc2FnZTogbWVzc2FnZSB9LCBmdW5jdGlvbiAobSkge1xuICAgICAgICAgIHJldHVybiBfdGhpczgucmVjZWl2ZUZyb21Xb3JrZXIobSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5kZWZlcmVkc1tpZF0ucHJvbWlzZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdyZWNlaXZlRnJvbVdvcmtlcicsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlY2VpdmVGcm9tV29ya2VyKG0pIHtcbiAgICAgIHRoaXMuZGVmZXJlZHNbbS5pZF0ucmVzb2x2ZShtLm1lc3NhZ2UpO1xuICAgICAgZGVsZXRlIHRoaXMuZGVmZXJlZHNbbS5pZF07XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc2V0QnJpZGdlTGF0ZXN0VXJsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QnJpZGdlTGF0ZXN0VXJsKHVybCkge31cbiAgfSwge1xuICAgIGtleTogJ3N0b3AnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBzdG9wKCkge1xuICAgICAgdGhpcy5zdG9wcGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hhcmVkV29ya2VyID0gbnVsbDtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gTG93bGV2ZWxUcmFuc3BvcnRXaXRoU2hhcmVkQ29ubmVjdGlvbnM7XG59KCksIChfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdlbnVtZXJhdGUnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdlbnVtZXJhdGUnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2xpc3RlbicsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2xpc3RlbicpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnYWNxdWlyZScsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2FjcXVpcmUnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3JlbGVhc2UnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdyZWxlYXNlJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdjb25maWd1cmUnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdjb25maWd1cmUnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2NhbGwnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdjYWxsJyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdwb3N0JywgW19kZWJ1Z0RlY29yYXRvci5kZWJ1Z0luT3V0XSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAncG9zdCcpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAncmVhZCcsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ3JlYWQnKSwgX2NsYXNzLnByb3RvdHlwZSksIF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2luaXQnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdpbml0JyksIF9jbGFzcy5wcm90b3R5cGUpKSwgX2NsYXNzKTtcbmV4cG9ydHMuZGVmYXVsdCA9IExvd2xldmVsVHJhbnNwb3J0V2l0aFNoYXJlZENvbm5lY3Rpb25zO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLnBhdGNoID0gcGF0Y2g7XG5cbnZhciBfcHJvdG9idWZqc09sZEZpeGVkV2VicGFjayA9IHJlcXVpcmUoXCJwcm90b2J1ZmpzLW9sZC1maXhlZC13ZWJwYWNrXCIpO1xuXG52YXIgUHJvdG9CdWYgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfcHJvdG9idWZqc09sZEZpeGVkV2VicGFjayk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgcmV0dXJuIG5ld09iajsgfSB9XG5cbnZhciBCeXRlQnVmZmVyID0gUHJvdG9CdWYuQnl0ZUJ1ZmZlcjtcblxudmFyIHBhdGNoZWQgPSBmYWxzZTtcblxuLy8gbW9ua2V5LXBhdGNoaW5nIFByb3RvQnVmLFxuLy8gc28gdGhhdCBieXRlcyBhcmUgbG9hZGVkIGFuZCBkZWNvZGVkIGZyb20gaGV4YWRlY2ltYWxcbi8vIHdoZW4gd2UgZXhwZWN0IGJ5dGVzIGFuZCB3ZSBnZXQgc3RyaW5nXG5mdW5jdGlvbiBwYXRjaCgpIHtcbiAgaWYgKCFwYXRjaGVkKSB7XG4gICAgUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkZpZWxkLnByb3RvdHlwZS52ZXJpZnlWYWx1ZU9yaWdpbmFsID0gUHJvdG9CdWYuUmVmbGVjdC5NZXNzYWdlLkZpZWxkLnByb3RvdHlwZS52ZXJpZnlWYWx1ZTtcblxuICAgIC8vIG5vdGU6IGRvbid0IHJld3JpdGUgdGhpcyBmdW5jdGlvbiB0byBhcnJvdyAodmFsdWUsIHNraXBSZXBlYXRlZCkgPT4gLi4uLlxuICAgIC8vIHNpbmNlIEkgbmVlZCBgdGhpc2AgZnJvbSB0aGUgb3JpZ2luYWwgY29udGV4dFxuICAgIFByb3RvQnVmLlJlZmxlY3QuTWVzc2FnZS5GaWVsZC5wcm90b3R5cGUudmVyaWZ5VmFsdWUgPSBmdW5jdGlvbiAodmFsdWUsIHNraXBSZXBlYXRlZCkge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gdmFsdWU7XG4gICAgICBpZiAodGhpcy50eXBlID09PSBQcm90b0J1Zi5UWVBFU1tcImJ5dGVzXCJdKSB7XG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSBCeXRlQnVmZmVyLndyYXAodmFsdWUsIFwiaGV4XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMudmVyaWZ5VmFsdWVPcmlnaW5hbChuZXdWYWx1ZSwgc2tpcFJlcGVhdGVkKTtcbiAgICB9O1xuICB9XG4gIHBhdGNoZWQgPSB0cnVlO1xufSIsIid1c2Ugc3RyaWN0JztcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gIHZhbHVlOiB0cnVlXG59KTtcbmV4cG9ydHMucG9zdE1vZHVsZU1lc3NhZ2UgPSBwb3N0TW9kdWxlTWVzc2FnZTtcblxudmFyIF9kZWZlcmVkID0gcmVxdWlyZSgnLi4vZGVmZXJlZCcpO1xuXG4vLyBUbyBlbnN1cmUgdGhhdCB0d28gd2Vic2l0ZSBkb24ndCByZWFkIGZyb20vdG8gVHJlem9yIGF0IHRoZSBzYW1lIHRpbWUsIEkgbmVlZCBhIHNoYXJlZHdvcmtlclxuLy8gdG8gc3luY2hyb25pemUgdGhlbS5cbi8vIEhvd2V2ZXIsIHNoYXJlZFdvcmtlciBjYW5ub3QgZGlyZWN0bHkgdXNlIHdlYnVzYiBBUEkuLi4gc28gSSBuZWVkIHRvIHNlbmQgbWVzc2FnZXNcbi8vIGFib3V0IGludGVudCB0byBhY3F1aXJlL3JlbGVhc2UgYW5kIHRoZW4gc2VuZCBhbm90aGVyIG1lc3NhZ2Ugd2hlbiB0aGF0IGlzIGRvbmUuXG4vLyBPdGhlciB3aW5kb3dzIHRoZW4gY2FuIGFjcXVpcmUvcmVsZWFzZVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbi8vICRGbG93SXNzdWVcbmlmICh0eXBlb2Ygb25jb25uZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgb25jb25uZWN0ID0gZnVuY3Rpb24gb25jb25uZWN0KGUpIHtcbiAgICB2YXIgcG9ydCA9IGUucG9ydHNbMF07XG4gICAgcG9ydC5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgaGFuZGxlTWVzc2FnZShlLmRhdGEsIHBvcnQpO1xuICAgIH07XG4gIH07XG59XG5cbi8vIHBhdGggPT4gc2Vzc2lvblxudmFyIG5vcm1hbFNlc3Npb25zID0ge307XG52YXIgZGVidWdTZXNzaW9ucyA9IHt9O1xuXG52YXIgbG9jayA9IG51bGw7XG52YXIgd2FpdFByb21pc2UgPSBQcm9taXNlLnJlc29sdmUoKTtcblxuZnVuY3Rpb24gc3RhcnRMb2NrKCkge1xuICB2YXIgbmV3TG9jayA9ICgwLCBfZGVmZXJlZC5jcmVhdGUpKCk7XG4gIGxvY2sgPSBuZXdMb2NrO1xuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbmV3TG9jay5yZWplY3QobmV3IEVycm9yKCdUaW1lZCBvdXQnKSk7XG4gIH0sIDEwICogMTAwMCk7XG59XG5cbmZ1bmN0aW9uIHJlbGVhc2VMb2NrKG9iaikge1xuICBpZiAobG9jayA9PSBudWxsKSB7XG4gICAgLy8gVE9ETzogPz8/XG4gICAgcmV0dXJuO1xuICB9XG4gIGxvY2sucmVzb2x2ZShvYmopO1xufVxuXG5mdW5jdGlvbiB3YWl0Rm9yTG9jaygpIHtcbiAgaWYgKGxvY2sgPT0gbnVsbCkge1xuICAgIC8vIFRPRE86ID8/P1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJz8/PycpKTtcbiAgfVxuICByZXR1cm4gbG9jay5wcm9taXNlO1xufVxuXG5mdW5jdGlvbiB3YWl0SW5RdWV1ZShmbikge1xuICB2YXIgcmVzID0gd2FpdFByb21pc2UudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0pO1xuICB3YWl0UHJvbWlzZSA9IHJlcy5jYXRjaChmdW5jdGlvbiAoKSB7fSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZU1lc3NhZ2UoX3JlZiwgcG9ydCkge1xuICB2YXIgaWQgPSBfcmVmLmlkLFxuICAgICAgbWVzc2FnZSA9IF9yZWYubWVzc2FnZTtcblxuICBpZiAobWVzc2FnZS50eXBlID09PSAnYWNxdWlyZS1pbnRlbnQnKSB7XG4gICAgdmFyIF9wYXRoID0gbWVzc2FnZS5wYXRoO1xuICAgIHZhciBwcmV2aW91cyA9IG1lc3NhZ2UucHJldmlvdXM7XG4gICAgdmFyIGRlYnVnID0gbWVzc2FnZS5kZWJ1ZztcbiAgICB3YWl0SW5RdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaGFuZGxlQWNxdWlyZUludGVudChfcGF0aCwgcHJldmlvdXMsIGRlYnVnLCBpZCwgcG9ydCk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2FjcXVpcmUtZG9uZScpIHtcbiAgICBoYW5kbGVBY3F1aXJlRG9uZShpZCk7IC8vIHBvcnQgaXMgdGhlIHNhbWUgYXMgb3JpZ2luYWxcbiAgfVxuICBpZiAobWVzc2FnZS50eXBlID09PSAnYWNxdWlyZS1mYWlsZWQnKSB7XG4gICAgaGFuZGxlQWNxdWlyZUZhaWxlZChpZCk7IC8vIHBvcnQgaXMgdGhlIHNhbWUgYXMgb3JpZ2luYWxcbiAgfVxuICBpZiAobWVzc2FnZS50eXBlID09PSAnZ2V0LXNlc3Npb25zJykge1xuICAgIHdhaXRJblF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVHZXRTZXNzaW9ucyhpZCwgcG9ydCk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAobWVzc2FnZS50eXBlID09PSAnZ2V0LXNlc3Npb25zLWFuZC1kaXNjb25uZWN0Jykge1xuICAgIHZhciBkZXZpY2VzID0gbWVzc2FnZS5kZXZpY2VzO1xuICAgIHdhaXRJblF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVHZXRTZXNzaW9ucyhpZCwgcG9ydCwgZGV2aWNlcyk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAobWVzc2FnZS50eXBlID09PSAncmVsZWFzZS1vbmNsb3NlJykge1xuICAgIHZhciBzZXNzaW9uID0gbWVzc2FnZS5zZXNzaW9uO1xuICAgIHdhaXRJblF1ZXVlKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBoYW5kbGVSZWxlYXNlT25DbG9zZShzZXNzaW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChtZXNzYWdlLnR5cGUgPT09ICdyZWxlYXNlLWludGVudCcpIHtcbiAgICB2YXIgX3Nlc3Npb24gPSBtZXNzYWdlLnNlc3Npb247XG4gICAgdmFyIF9kZWJ1ZyA9IG1lc3NhZ2UuZGVidWc7XG4gICAgd2FpdEluUXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZVJlbGVhc2VJbnRlbnQoX3Nlc3Npb24sIF9kZWJ1ZywgaWQsIHBvcnQpO1xuICAgIH0pO1xuICB9XG4gIGlmIChtZXNzYWdlLnR5cGUgPT09ICdyZWxlYXNlLWRvbmUnKSB7XG4gICAgaGFuZGxlUmVsZWFzZURvbmUoaWQpOyAvLyBwb3J0IGlzIHRoZSBzYW1lIGFzIG9yaWdpbmFsXG4gIH1cbiAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2VudW1lcmF0ZS1pbnRlbnQnKSB7XG4gICAgd2FpdEluUXVldWUoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGhhbmRsZUVudW1lcmF0ZUludGVudChpZCwgcG9ydCk7XG4gICAgfSk7XG4gIH1cbiAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gJ2VudW1lcmF0ZS1kb25lJykge1xuICAgIGhhbmRsZVJlbGVhc2VEb25lKGlkKTsgLy8gcG9ydCBpcyB0aGUgc2FtZSBhcyBvcmlnaW5hbFxuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUVudW1lcmF0ZUludGVudChpZCwgcG9ydCkge1xuICBzdGFydExvY2soKTtcbiAgc2VuZEJhY2soeyB0eXBlOiAnb2snIH0sIGlkLCBwb3J0KTtcblxuICAvLyBpZiBsb2NrIHRpbWVzIG91dCwgcHJvbWlzZSByZWplY3RzIGFuZCBxdWV1ZSBnb2VzIG9uXG4gIHJldHVybiB3YWl0Rm9yTG9jaygpLnRoZW4oZnVuY3Rpb24gKG9iaikge1xuICAgIHNlbmRCYWNrKHsgdHlwZTogJ29rJyB9LCBvYmouaWQsIHBvcnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlUmVsZWFzZURvbmUoaWQpIHtcbiAgcmVsZWFzZUxvY2soeyBpZDogaWQgfSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVJlbGVhc2VPbkNsb3NlKHNlc3Npb24pIHtcbiAgdmFyIHBhdGhfID0gbnVsbDtcbiAgT2JqZWN0LmtleXMobm9ybWFsU2Vzc2lvbnMpLmZvckVhY2goZnVuY3Rpb24gKGtwYXRoKSB7XG4gICAgaWYgKG5vcm1hbFNlc3Npb25zW2twYXRoXSA9PT0gc2Vzc2lvbikge1xuICAgICAgcGF0aF8gPSBrcGF0aDtcbiAgICB9XG4gIH0pO1xuICBpZiAocGF0aF8gPT0gbnVsbCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgfVxuXG4gIHZhciBwYXRoID0gcGF0aF87XG4gIGRlbGV0ZSBub3JtYWxTZXNzaW9uc1twYXRoXTtcbiAgZGVsZXRlIGRlYnVnU2Vzc2lvbnNbcGF0aF07XG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlUmVsZWFzZUludGVudChzZXNzaW9uLCBkZWJ1ZywgaWQsIHBvcnQpIHtcbiAgdmFyIHBhdGhfID0gbnVsbDtcbiAgdmFyIHNlc3Npb25zID0gZGVidWcgPyBkZWJ1Z1Nlc3Npb25zIDogbm9ybWFsU2Vzc2lvbnM7XG4gIHZhciBvdGhlclNlc3Npb25zID0gIWRlYnVnID8gZGVidWdTZXNzaW9ucyA6IG5vcm1hbFNlc3Npb25zO1xuICBPYmplY3Qua2V5cyhzZXNzaW9ucykuZm9yRWFjaChmdW5jdGlvbiAoa3BhdGgpIHtcbiAgICBpZiAoc2Vzc2lvbnNba3BhdGhdID09PSBzZXNzaW9uKSB7XG4gICAgICBwYXRoXyA9IGtwYXRoO1xuICAgIH1cbiAgfSk7XG4gIGlmIChwYXRoXyA9PSBudWxsKSB7XG4gICAgc2VuZEJhY2soeyB0eXBlOiAnZG91YmxlLXJlbGVhc2UnIH0sIGlkLCBwb3J0KTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gIH1cblxuICB2YXIgcGF0aCA9IHBhdGhfO1xuXG4gIHZhciBvdGhlclNlc3Npb24gPSBvdGhlclNlc3Npb25zW3BhdGhdO1xuXG4gIHN0YXJ0TG9jaygpO1xuICBzZW5kQmFjayh7IHR5cGU6ICdwYXRoJywgcGF0aDogcGF0aCwgb3RoZXJTZXNzaW9uOiBvdGhlclNlc3Npb24gfSwgaWQsIHBvcnQpO1xuXG4gIC8vIGlmIGxvY2sgdGltZXMgb3V0LCBwcm9taXNlIHJlamVjdHMgYW5kIHF1ZXVlIGdvZXMgb25cbiAgcmV0dXJuIHdhaXRGb3JMb2NrKCkudGhlbihmdW5jdGlvbiAob2JqKSB7XG4gICAgLy8gZmFpbHVyZSA9PiBub3RoaW5nIGhhcHBlbnMsIGJ1dCBzdGlsbCBoYXMgdG8gcmVwbHkgXCJva1wiXG4gICAgZGVsZXRlIHNlc3Npb25zW3BhdGhdO1xuICAgIHNlbmRCYWNrKHsgdHlwZTogJ29rJyB9LCBvYmouaWQsIHBvcnQpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlR2V0U2Vzc2lvbnMoaWQsIHBvcnQsIGRldmljZXMpIHtcbiAgaWYgKGRldmljZXMgIT0gbnVsbCkge1xuICAgIHZhciBjb25uZWN0ZWQgPSB7fTtcbiAgICBkZXZpY2VzLmZvckVhY2goZnVuY3Rpb24gKGQpIHtcbiAgICAgIGNvbm5lY3RlZFtkLnBhdGhdID0gdHJ1ZTtcbiAgICB9KTtcbiAgICBPYmplY3Qua2V5cyhub3JtYWxTZXNzaW9ucykuZm9yRWFjaChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgaWYgKCFub3JtYWxTZXNzaW9uc1twYXRoXSkge1xuICAgICAgICBkZWxldGUgbm9ybWFsU2Vzc2lvbnNbcGF0aF07XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmtleXMoZGVidWdTZXNzaW9ucykuZm9yRWFjaChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgaWYgKCFkZWJ1Z1Nlc3Npb25zW3BhdGhdKSB7XG4gICAgICAgIGRlbGV0ZSBkZWJ1Z1Nlc3Npb25zW3BhdGhdO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHNlbmRCYWNrKHsgdHlwZTogJ3Nlc3Npb25zJywgZGVidWdTZXNzaW9uczogZGVidWdTZXNzaW9ucywgbm9ybWFsU2Vzc2lvbnM6IG5vcm1hbFNlc3Npb25zIH0sIGlkLCBwb3J0KTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufVxuXG52YXIgbGFzdFNlc3Npb24gPSAwO1xuZnVuY3Rpb24gaGFuZGxlQWNxdWlyZURvbmUoaWQpIHtcbiAgcmVsZWFzZUxvY2soeyBnb29kOiB0cnVlLCBpZDogaWQgfSk7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUFjcXVpcmVGYWlsZWQoaWQpIHtcbiAgcmVsZWFzZUxvY2soeyBnb29kOiBmYWxzZSwgaWQ6IGlkIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVBY3F1aXJlSW50ZW50KHBhdGgsIHByZXZpb3VzLCBkZWJ1ZywgaWQsIHBvcnQpIHtcbiAgdmFyIGVycm9yID0gZmFsc2U7XG4gIHZhciB0aGlzVGFibGUgPSBkZWJ1ZyA/IGRlYnVnU2Vzc2lvbnMgOiBub3JtYWxTZXNzaW9ucztcbiAgdmFyIG90aGVyVGFibGUgPSAhZGVidWcgPyBkZWJ1Z1Nlc3Npb25zIDogbm9ybWFsU2Vzc2lvbnM7XG4gIHZhciByZWFsUHJldmlvdXMgPSB0aGlzVGFibGVbcGF0aF07XG5cbiAgaWYgKHJlYWxQcmV2aW91cyA9PSBudWxsKSB7XG4gICAgZXJyb3IgPSBwcmV2aW91cyAhPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIGVycm9yID0gcHJldmlvdXMgIT09IHJlYWxQcmV2aW91cztcbiAgfVxuICBpZiAoZXJyb3IpIHtcbiAgICBzZW5kQmFjayh7IHR5cGU6ICd3cm9uZy1wcmV2aW91cy1zZXNzaW9uJyB9LCBpZCwgcG9ydCk7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0TG9jaygpO1xuICAgIHNlbmRCYWNrKHsgdHlwZTogJ290aGVyLXNlc3Npb24nLCBvdGhlclNlc3Npb246IG90aGVyVGFibGVbcGF0aF0gfSwgaWQsIHBvcnQpO1xuICAgIC8vIGlmIGxvY2sgdGltZXMgb3V0LCBwcm9taXNlIHJlamVjdHMgYW5kIHF1ZXVlIGdvZXMgb25cbiAgICByZXR1cm4gd2FpdEZvckxvY2soKS50aGVuKGZ1bmN0aW9uIChvYmopIHtcbiAgICAgIGlmIChvYmouZ29vZCkge1xuICAgICAgICBsYXN0U2Vzc2lvbisrO1xuICAgICAgICB2YXIgc2Vzc2lvbiA9IGxhc3RTZXNzaW9uLnRvU3RyaW5nKCk7XG4gICAgICAgIGlmIChkZWJ1Zykge1xuICAgICAgICAgIHNlc3Npb24gPSAnZGVidWcnICsgc2Vzc2lvbjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzVGFibGVbcGF0aF0gPSBzZXNzaW9uO1xuICAgICAgICBzZW5kQmFjayh7IHR5cGU6ICdzZXNzaW9uLW51bWJlcicsIG51bWJlcjogc2Vzc2lvbiB9LCBvYmouaWQsIHBvcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZmFpbHVyZSA9PiBub3RoaW5nIGhhcHBlbnMsIGJ1dCBzdGlsbCBoYXMgdG8gcmVwbHkgXCJva1wiXG4gICAgICAgIHNlbmRCYWNrKHsgdHlwZTogJ29rJyB9LCBvYmouaWQsIHBvcnQpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNlbmRCYWNrKG1lc3NhZ2UsIGlkLCBwb3J0KSB7XG4gIHBvcnQucG9zdE1lc3NhZ2UoeyBpZDogaWQsIG1lc3NhZ2U6IG1lc3NhZ2UgfSk7XG59XG5cbi8vIHdoZW4gc2hhcmVkIHdvcmtlciBpcyBub3QgbG9hZGVkIGFzIGEgc2hhcmVkIGxvYWRlciwgdXNlIGl0IGFzIGEgbW9kdWxlIGluc3RlYWRcbmZ1bmN0aW9uIHBvc3RNb2R1bGVNZXNzYWdlKF9yZWYyLCBmbikge1xuICB2YXIgaWQgPSBfcmVmMi5pZCxcbiAgICAgIG1lc3NhZ2UgPSBfcmVmMi5tZXNzYWdlO1xuXG4gIGhhbmRsZU1lc3NhZ2UoeyBpZDogaWQsIG1lc3NhZ2U6IG1lc3NhZ2UgfSwgeyBwb3N0TWVzc2FnZTogZm4gfSk7XG59IiwidmFyIGpzb24gPSB0eXBlb2YgSlNPTiAhPT0gJ3VuZGVmaW5lZCcgPyBKU09OIDogcmVxdWlyZSgnanNvbmlmeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChvYmosIG9wdHMpIHtcbiAgICBpZiAoIW9wdHMpIG9wdHMgPSB7fTtcbiAgICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIG9wdHMgPSB7IGNtcDogb3B0cyB9O1xuICAgIHZhciBzcGFjZSA9IG9wdHMuc3BhY2UgfHwgJyc7XG4gICAgaWYgKHR5cGVvZiBzcGFjZSA9PT0gJ251bWJlcicpIHNwYWNlID0gQXJyYXkoc3BhY2UrMSkuam9pbignICcpO1xuICAgIHZhciBjeWNsZXMgPSAodHlwZW9mIG9wdHMuY3ljbGVzID09PSAnYm9vbGVhbicpID8gb3B0cy5jeWNsZXMgOiBmYWxzZTtcbiAgICB2YXIgcmVwbGFjZXIgPSBvcHRzLnJlcGxhY2VyIHx8IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHsgcmV0dXJuIHZhbHVlOyB9O1xuXG4gICAgdmFyIGNtcCA9IG9wdHMuY21wICYmIChmdW5jdGlvbiAoZikge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoYSwgYikge1xuICAgICAgICAgICAgICAgIHZhciBhb2JqID0geyBrZXk6IGEsIHZhbHVlOiBub2RlW2FdIH07XG4gICAgICAgICAgICAgICAgdmFyIGJvYmogPSB7IGtleTogYiwgdmFsdWU6IG5vZGVbYl0gfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZihhb2JqLCBib2JqKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH07XG4gICAgfSkob3B0cy5jbXApO1xuXG4gICAgdmFyIHNlZW4gPSBbXTtcbiAgICByZXR1cm4gKGZ1bmN0aW9uIHN0cmluZ2lmeSAocGFyZW50LCBrZXksIG5vZGUsIGxldmVsKSB7XG4gICAgICAgIHZhciBpbmRlbnQgPSBzcGFjZSA/ICgnXFxuJyArIG5ldyBBcnJheShsZXZlbCArIDEpLmpvaW4oc3BhY2UpKSA6ICcnO1xuICAgICAgICB2YXIgY29sb25TZXBhcmF0b3IgPSBzcGFjZSA/ICc6ICcgOiAnOic7XG5cbiAgICAgICAgaWYgKG5vZGUgJiYgbm9kZS50b0pTT04gJiYgdHlwZW9mIG5vZGUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBub2RlID0gbm9kZS50b0pTT04oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG5vZGUgPSByZXBsYWNlci5jYWxsKHBhcmVudCwga2V5LCBub2RlKTtcblxuICAgICAgICBpZiAobm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0JyB8fCBub2RlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbi5zdHJpbmdpZnkobm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzQXJyYXkobm9kZSkpIHtcbiAgICAgICAgICAgIHZhciBvdXQgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBpdGVtID0gc3RyaW5naWZ5KG5vZGUsIGksIG5vZGVbaV0sIGxldmVsKzEpIHx8IGpzb24uc3RyaW5naWZ5KG51bGwpO1xuICAgICAgICAgICAgICAgIG91dC5wdXNoKGluZGVudCArIHNwYWNlICsgaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gJ1snICsgb3V0LmpvaW4oJywnKSArIGluZGVudCArICddJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzZWVuLmluZGV4T2Yobm9kZSkgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKGN5Y2xlcykgcmV0dXJuIGpzb24uc3RyaW5naWZ5KCdfX2N5Y2xlX18nKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdDb252ZXJ0aW5nIGNpcmN1bGFyIHN0cnVjdHVyZSB0byBKU09OJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHNlZW4ucHVzaChub2RlKTtcblxuICAgICAgICAgICAgdmFyIGtleXMgPSBvYmplY3RLZXlzKG5vZGUpLnNvcnQoY21wICYmIGNtcChub2RlKSk7XG4gICAgICAgICAgICB2YXIgb3V0ID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgICAgICAgICB2YXIgdmFsdWUgPSBzdHJpbmdpZnkobm9kZSwga2V5LCBub2RlW2tleV0sIGxldmVsKzEpO1xuXG4gICAgICAgICAgICAgICAgaWYoIXZhbHVlKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHZhciBrZXlWYWx1ZSA9IGpzb24uc3RyaW5naWZ5KGtleSlcbiAgICAgICAgICAgICAgICAgICAgKyBjb2xvblNlcGFyYXRvclxuICAgICAgICAgICAgICAgICAgICArIHZhbHVlO1xuICAgICAgICAgICAgICAgIDtcbiAgICAgICAgICAgICAgICBvdXQucHVzaChpbmRlbnQgKyBzcGFjZSArIGtleVZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlZW4uc3BsaWNlKHNlZW4uaW5kZXhPZihub2RlKSwgMSk7XG4gICAgICAgICAgICByZXR1cm4gJ3snICsgb3V0LmpvaW4oJywnKSArIGluZGVudCArICd9JztcbiAgICAgICAgfVxuICAgIH0pKHsgJyc6IG9iaiB9LCAnJywgb2JqLCAwKTtcbn07XG5cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheSB8fCBmdW5jdGlvbiAoeCkge1xuICAgIHJldHVybiB7fS50b1N0cmluZy5jYWxsKHgpID09PSAnW29iamVjdCBBcnJheV0nO1xufTtcblxudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gICAgdmFyIGhhcyA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkgfHwgZnVuY3Rpb24gKCkgeyByZXR1cm4gdHJ1ZSB9O1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoaGFzLmNhbGwob2JqLCBrZXkpKSBrZXlzLnB1c2goa2V5KTtcbiAgICB9XG4gICAgcmV0dXJuIGtleXM7XG59O1xuIiwiZXhwb3J0cy5wYXJzZSA9IHJlcXVpcmUoJy4vbGliL3BhcnNlJyk7XG5leHBvcnRzLnN0cmluZ2lmeSA9IHJlcXVpcmUoJy4vbGliL3N0cmluZ2lmeScpO1xuIiwidmFyIGF0LCAvLyBUaGUgaW5kZXggb2YgdGhlIGN1cnJlbnQgY2hhcmFjdGVyXG4gICAgY2gsIC8vIFRoZSBjdXJyZW50IGNoYXJhY3RlclxuICAgIGVzY2FwZWUgPSB7XG4gICAgICAgICdcIic6ICAnXCInLFxuICAgICAgICAnXFxcXCc6ICdcXFxcJyxcbiAgICAgICAgJy8nOiAgJy8nLFxuICAgICAgICBiOiAgICAnXFxiJyxcbiAgICAgICAgZjogICAgJ1xcZicsXG4gICAgICAgIG46ICAgICdcXG4nLFxuICAgICAgICByOiAgICAnXFxyJyxcbiAgICAgICAgdDogICAgJ1xcdCdcbiAgICB9LFxuICAgIHRleHQsXG5cbiAgICBlcnJvciA9IGZ1bmN0aW9uIChtKSB7XG4gICAgICAgIC8vIENhbGwgZXJyb3Igd2hlbiBzb21ldGhpbmcgaXMgd3JvbmcuXG4gICAgICAgIHRocm93IHtcbiAgICAgICAgICAgIG5hbWU6ICAgICdTeW50YXhFcnJvcicsXG4gICAgICAgICAgICBtZXNzYWdlOiBtLFxuICAgICAgICAgICAgYXQ6ICAgICAgYXQsXG4gICAgICAgICAgICB0ZXh0OiAgICB0ZXh0XG4gICAgICAgIH07XG4gICAgfSxcbiAgICBcbiAgICBuZXh0ID0gZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgLy8gSWYgYSBjIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgdmVyaWZ5IHRoYXQgaXQgbWF0Y2hlcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuXG4gICAgICAgIGlmIChjICYmIGMgIT09IGNoKSB7XG4gICAgICAgICAgICBlcnJvcihcIkV4cGVjdGVkICdcIiArIGMgKyBcIicgaW5zdGVhZCBvZiAnXCIgKyBjaCArIFwiJ1wiKTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgLy8gR2V0IHRoZSBuZXh0IGNoYXJhY3Rlci4gV2hlbiB0aGVyZSBhcmUgbm8gbW9yZSBjaGFyYWN0ZXJzLFxuICAgICAgICAvLyByZXR1cm4gdGhlIGVtcHR5IHN0cmluZy5cbiAgICAgICAgXG4gICAgICAgIGNoID0gdGV4dC5jaGFyQXQoYXQpO1xuICAgICAgICBhdCArPSAxO1xuICAgICAgICByZXR1cm4gY2g7XG4gICAgfSxcbiAgICBcbiAgICBudW1iZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIFBhcnNlIGEgbnVtYmVyIHZhbHVlLlxuICAgICAgICB2YXIgbnVtYmVyLFxuICAgICAgICAgICAgc3RyaW5nID0gJyc7XG4gICAgICAgIFxuICAgICAgICBpZiAoY2ggPT09ICctJykge1xuICAgICAgICAgICAgc3RyaW5nID0gJy0nO1xuICAgICAgICAgICAgbmV4dCgnLScpO1xuICAgICAgICB9XG4gICAgICAgIHdoaWxlIChjaCA+PSAnMCcgJiYgY2ggPD0gJzknKSB7XG4gICAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnLicpIHtcbiAgICAgICAgICAgIHN0cmluZyArPSAnLic7XG4gICAgICAgICAgICB3aGlsZSAobmV4dCgpICYmIGNoID49ICcwJyAmJiBjaCA8PSAnOScpIHtcbiAgICAgICAgICAgICAgICBzdHJpbmcgKz0gY2g7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoID09PSAnZScgfHwgY2ggPT09ICdFJykge1xuICAgICAgICAgICAgc3RyaW5nICs9IGNoO1xuICAgICAgICAgICAgbmV4dCgpO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnLScgfHwgY2ggPT09ICcrJykge1xuICAgICAgICAgICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY2ggPj0gJzAnICYmIGNoIDw9ICc5Jykge1xuICAgICAgICAgICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbnVtYmVyID0gK3N0cmluZztcbiAgICAgICAgaWYgKCFpc0Zpbml0ZShudW1iZXIpKSB7XG4gICAgICAgICAgICBlcnJvcihcIkJhZCBudW1iZXJcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBcbiAgICBzdHJpbmcgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIC8vIFBhcnNlIGEgc3RyaW5nIHZhbHVlLlxuICAgICAgICB2YXIgaGV4LFxuICAgICAgICAgICAgaSxcbiAgICAgICAgICAgIHN0cmluZyA9ICcnLFxuICAgICAgICAgICAgdWZmZmY7XG4gICAgICAgIFxuICAgICAgICAvLyBXaGVuIHBhcnNpbmcgZm9yIHN0cmluZyB2YWx1ZXMsIHdlIG11c3QgbG9vayBmb3IgXCIgYW5kIFxcIGNoYXJhY3RlcnMuXG4gICAgICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgICAgICAgd2hpbGUgKG5leHQoKSkge1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ1wiJykge1xuICAgICAgICAgICAgICAgICAgICBuZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09PSAndScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVmZmZmID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXggPSBwYXJzZUludChuZXh0KCksIDE2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzRmluaXRlKGhleCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVmZmZmID0gdWZmZmYgKiAxNiArIGhleDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHVmZmZmKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZXNjYXBlZVtjaF0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcgKz0gZXNjYXBlZVtjaF07XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0cmluZyArPSBjaDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3IoXCJCYWQgc3RyaW5nXCIpO1xuICAgIH0sXG5cbiAgICB3aGl0ZSA9IGZ1bmN0aW9uICgpIHtcblxuLy8gU2tpcCB3aGl0ZXNwYWNlLlxuXG4gICAgICAgIHdoaWxlIChjaCAmJiBjaCA8PSAnICcpIHtcbiAgICAgICAgICAgIG5leHQoKTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICB3b3JkID0gZnVuY3Rpb24gKCkge1xuXG4vLyB0cnVlLCBmYWxzZSwgb3IgbnVsbC5cblxuICAgICAgICBzd2l0Y2ggKGNoKSB7XG4gICAgICAgIGNhc2UgJ3QnOlxuICAgICAgICAgICAgbmV4dCgndCcpO1xuICAgICAgICAgICAgbmV4dCgncicpO1xuICAgICAgICAgICAgbmV4dCgndScpO1xuICAgICAgICAgICAgbmV4dCgnZScpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGNhc2UgJ2YnOlxuICAgICAgICAgICAgbmV4dCgnZicpO1xuICAgICAgICAgICAgbmV4dCgnYScpO1xuICAgICAgICAgICAgbmV4dCgnbCcpO1xuICAgICAgICAgICAgbmV4dCgncycpO1xuICAgICAgICAgICAgbmV4dCgnZScpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjYXNlICduJzpcbiAgICAgICAgICAgIG5leHQoJ24nKTtcbiAgICAgICAgICAgIG5leHQoJ3UnKTtcbiAgICAgICAgICAgIG5leHQoJ2wnKTtcbiAgICAgICAgICAgIG5leHQoJ2wnKTtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yKFwiVW5leHBlY3RlZCAnXCIgKyBjaCArIFwiJ1wiKTtcbiAgICB9LFxuXG4gICAgdmFsdWUsICAvLyBQbGFjZSBob2xkZXIgZm9yIHRoZSB2YWx1ZSBmdW5jdGlvbi5cblxuICAgIGFycmF5ID0gZnVuY3Rpb24gKCkge1xuXG4vLyBQYXJzZSBhbiBhcnJheSB2YWx1ZS5cblxuICAgICAgICB2YXIgYXJyYXkgPSBbXTtcblxuICAgICAgICBpZiAoY2ggPT09ICdbJykge1xuICAgICAgICAgICAgbmV4dCgnWycpO1xuICAgICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgbmV4dCgnXScpO1xuICAgICAgICAgICAgICAgIHJldHVybiBhcnJheTsgICAvLyBlbXB0eSBhcnJheVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgd2hpbGUgKGNoKSB7XG4gICAgICAgICAgICAgICAgYXJyYXkucHVzaCh2YWx1ZSgpKTtcbiAgICAgICAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ10nKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoJ10nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXh0KCcsJyk7XG4gICAgICAgICAgICAgICAgd2hpdGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlcnJvcihcIkJhZCBhcnJheVwiKTtcbiAgICB9LFxuXG4gICAgb2JqZWN0ID0gZnVuY3Rpb24gKCkge1xuXG4vLyBQYXJzZSBhbiBvYmplY3QgdmFsdWUuXG5cbiAgICAgICAgdmFyIGtleSxcbiAgICAgICAgICAgIG9iamVjdCA9IHt9O1xuXG4gICAgICAgIGlmIChjaCA9PT0gJ3snKSB7XG4gICAgICAgICAgICBuZXh0KCd7Jyk7XG4gICAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgICAgaWYgKGNoID09PSAnfScpIHtcbiAgICAgICAgICAgICAgICBuZXh0KCd9Jyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDsgICAvLyBlbXB0eSBvYmplY3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChjaCkge1xuICAgICAgICAgICAgICAgIGtleSA9IHN0cmluZygpO1xuICAgICAgICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgICAgICAgICAgbmV4dCgnOicpO1xuICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IoJ0R1cGxpY2F0ZSBrZXkgXCInICsga2V5ICsgJ1wiJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG9iamVjdFtrZXldID0gdmFsdWUoKTtcbiAgICAgICAgICAgICAgICB3aGl0ZSgpO1xuICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gJ30nKSB7XG4gICAgICAgICAgICAgICAgICAgIG5leHQoJ30nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV4dCgnLCcpO1xuICAgICAgICAgICAgICAgIHdoaXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3IoXCJCYWQgb2JqZWN0XCIpO1xuICAgIH07XG5cbnZhbHVlID0gZnVuY3Rpb24gKCkge1xuXG4vLyBQYXJzZSBhIEpTT04gdmFsdWUuIEl0IGNvdWxkIGJlIGFuIG9iamVjdCwgYW4gYXJyYXksIGEgc3RyaW5nLCBhIG51bWJlcixcbi8vIG9yIGEgd29yZC5cblxuICAgIHdoaXRlKCk7XG4gICAgc3dpdGNoIChjaCkge1xuICAgIGNhc2UgJ3snOlxuICAgICAgICByZXR1cm4gb2JqZWN0KCk7XG4gICAgY2FzZSAnWyc6XG4gICAgICAgIHJldHVybiBhcnJheSgpO1xuICAgIGNhc2UgJ1wiJzpcbiAgICAgICAgcmV0dXJuIHN0cmluZygpO1xuICAgIGNhc2UgJy0nOlxuICAgICAgICByZXR1cm4gbnVtYmVyKCk7XG4gICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGNoID49ICcwJyAmJiBjaCA8PSAnOScgPyBudW1iZXIoKSA6IHdvcmQoKTtcbiAgICB9XG59O1xuXG4vLyBSZXR1cm4gdGhlIGpzb25fcGFyc2UgZnVuY3Rpb24uIEl0IHdpbGwgaGF2ZSBhY2Nlc3MgdG8gYWxsIG9mIHRoZSBhYm92ZVxuLy8gZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMuXG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHNvdXJjZSwgcmV2aXZlcikge1xuICAgIHZhciByZXN1bHQ7XG4gICAgXG4gICAgdGV4dCA9IHNvdXJjZTtcbiAgICBhdCA9IDA7XG4gICAgY2ggPSAnICc7XG4gICAgcmVzdWx0ID0gdmFsdWUoKTtcbiAgICB3aGl0ZSgpO1xuICAgIGlmIChjaCkge1xuICAgICAgICBlcnJvcihcIlN5bnRheCBlcnJvclwiKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIHJldml2ZXIgZnVuY3Rpb24sIHdlIHJlY3Vyc2l2ZWx5IHdhbGsgdGhlIG5ldyBzdHJ1Y3R1cmUsXG4gICAgLy8gcGFzc2luZyBlYWNoIG5hbWUvdmFsdWUgcGFpciB0byB0aGUgcmV2aXZlciBmdW5jdGlvbiBmb3IgcG9zc2libGVcbiAgICAvLyB0cmFuc2Zvcm1hdGlvbiwgc3RhcnRpbmcgd2l0aCBhIHRlbXBvcmFyeSByb290IG9iamVjdCB0aGF0IGhvbGRzIHRoZSByZXN1bHRcbiAgICAvLyBpbiBhbiBlbXB0eSBrZXkuIElmIHRoZXJlIGlzIG5vdCBhIHJldml2ZXIgZnVuY3Rpb24sIHdlIHNpbXBseSByZXR1cm4gdGhlXG4gICAgLy8gcmVzdWx0LlxuXG4gICAgcmV0dXJuIHR5cGVvZiByZXZpdmVyID09PSAnZnVuY3Rpb24nID8gKGZ1bmN0aW9uIHdhbGsoaG9sZGVyLCBrZXkpIHtcbiAgICAgICAgdmFyIGssIHYsIHZhbHVlID0gaG9sZGVyW2tleV07XG4gICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICBmb3IgKGsgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrKSkge1xuICAgICAgICAgICAgICAgICAgICB2ID0gd2Fsayh2YWx1ZSwgayk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlW2tdID0gdjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV2aXZlci5jYWxsKGhvbGRlciwga2V5LCB2YWx1ZSk7XG4gICAgfSh7Jyc6IHJlc3VsdH0sICcnKSkgOiByZXN1bHQ7XG59O1xuIiwidmFyIGN4ID0gL1tcXHUwMDAwXFx1MDBhZFxcdTA2MDAtXFx1MDYwNFxcdTA3MGZcXHUxN2I0XFx1MTdiNVxcdTIwMGMtXFx1MjAwZlxcdTIwMjgtXFx1MjAyZlxcdTIwNjAtXFx1MjA2ZlxcdWZlZmZcXHVmZmYwLVxcdWZmZmZdL2csXG4gICAgZXNjYXBhYmxlID0gL1tcXFxcXFxcIlxceDAwLVxceDFmXFx4N2YtXFx4OWZcXHUwMGFkXFx1MDYwMC1cXHUwNjA0XFx1MDcwZlxcdTE3YjRcXHUxN2I1XFx1MjAwYy1cXHUyMDBmXFx1MjAyOC1cXHUyMDJmXFx1MjA2MC1cXHUyMDZmXFx1ZmVmZlxcdWZmZjAtXFx1ZmZmZl0vZyxcbiAgICBnYXAsXG4gICAgaW5kZW50LFxuICAgIG1ldGEgPSB7ICAgIC8vIHRhYmxlIG9mIGNoYXJhY3RlciBzdWJzdGl0dXRpb25zXG4gICAgICAgICdcXGInOiAnXFxcXGInLFxuICAgICAgICAnXFx0JzogJ1xcXFx0JyxcbiAgICAgICAgJ1xcbic6ICdcXFxcbicsXG4gICAgICAgICdcXGYnOiAnXFxcXGYnLFxuICAgICAgICAnXFxyJzogJ1xcXFxyJyxcbiAgICAgICAgJ1wiJyA6ICdcXFxcXCInLFxuICAgICAgICAnXFxcXCc6ICdcXFxcXFxcXCdcbiAgICB9LFxuICAgIHJlcDtcblxuZnVuY3Rpb24gcXVvdGUoc3RyaW5nKSB7XG4gICAgLy8gSWYgdGhlIHN0cmluZyBjb250YWlucyBubyBjb250cm9sIGNoYXJhY3RlcnMsIG5vIHF1b3RlIGNoYXJhY3RlcnMsIGFuZCBub1xuICAgIC8vIGJhY2tzbGFzaCBjaGFyYWN0ZXJzLCB0aGVuIHdlIGNhbiBzYWZlbHkgc2xhcCBzb21lIHF1b3RlcyBhcm91bmQgaXQuXG4gICAgLy8gT3RoZXJ3aXNlIHdlIG11c3QgYWxzbyByZXBsYWNlIHRoZSBvZmZlbmRpbmcgY2hhcmFjdGVycyB3aXRoIHNhZmUgZXNjYXBlXG4gICAgLy8gc2VxdWVuY2VzLlxuICAgIFxuICAgIGVzY2FwYWJsZS5sYXN0SW5kZXggPSAwO1xuICAgIHJldHVybiBlc2NhcGFibGUudGVzdChzdHJpbmcpID8gJ1wiJyArIHN0cmluZy5yZXBsYWNlKGVzY2FwYWJsZSwgZnVuY3Rpb24gKGEpIHtcbiAgICAgICAgdmFyIGMgPSBtZXRhW2FdO1xuICAgICAgICByZXR1cm4gdHlwZW9mIGMgPT09ICdzdHJpbmcnID8gYyA6XG4gICAgICAgICAgICAnXFxcXHUnICsgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTtcbiAgICB9KSArICdcIicgOiAnXCInICsgc3RyaW5nICsgJ1wiJztcbn1cblxuZnVuY3Rpb24gc3RyKGtleSwgaG9sZGVyKSB7XG4gICAgLy8gUHJvZHVjZSBhIHN0cmluZyBmcm9tIGhvbGRlcltrZXldLlxuICAgIHZhciBpLCAgICAgICAgICAvLyBUaGUgbG9vcCBjb3VudGVyLlxuICAgICAgICBrLCAgICAgICAgICAvLyBUaGUgbWVtYmVyIGtleS5cbiAgICAgICAgdiwgICAgICAgICAgLy8gVGhlIG1lbWJlciB2YWx1ZS5cbiAgICAgICAgbGVuZ3RoLFxuICAgICAgICBtaW5kID0gZ2FwLFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB2YWx1ZSA9IGhvbGRlcltrZXldO1xuICAgIFxuICAgIC8vIElmIHRoZSB2YWx1ZSBoYXMgYSB0b0pTT04gbWV0aG9kLCBjYWxsIGl0IHRvIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLlxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUudG9KU09OID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUudG9KU09OKGtleSk7XG4gICAgfVxuICAgIFxuICAgIC8vIElmIHdlIHdlcmUgY2FsbGVkIHdpdGggYSByZXBsYWNlciBmdW5jdGlvbiwgdGhlbiBjYWxsIHRoZSByZXBsYWNlciB0b1xuICAgIC8vIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLlxuICAgIGlmICh0eXBlb2YgcmVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHZhbHVlID0gcmVwLmNhbGwoaG9sZGVyLCBrZXksIHZhbHVlKTtcbiAgICB9XG4gICAgXG4gICAgLy8gV2hhdCBoYXBwZW5zIG5leHQgZGVwZW5kcyBvbiB0aGUgdmFsdWUncyB0eXBlLlxuICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICByZXR1cm4gcXVvdGUodmFsdWUpO1xuICAgICAgICBcbiAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgIC8vIEpTT04gbnVtYmVycyBtdXN0IGJlIGZpbml0ZS4gRW5jb2RlIG5vbi1maW5pdGUgbnVtYmVycyBhcyBudWxsLlxuICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKHZhbHVlKSA/IFN0cmluZyh2YWx1ZSkgOiAnbnVsbCc7XG4gICAgICAgIFxuICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgICAgICAvLyBJZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuIG9yIG51bGwsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcuIE5vdGU6XG4gICAgICAgICAgICAvLyB0eXBlb2YgbnVsbCBkb2VzIG5vdCBwcm9kdWNlICdudWxsJy4gVGhlIGNhc2UgaXMgaW5jbHVkZWQgaGVyZSBpblxuICAgICAgICAgICAgLy8gdGhlIHJlbW90ZSBjaGFuY2UgdGhhdCB0aGlzIGdldHMgZml4ZWQgc29tZWRheS5cbiAgICAgICAgICAgIHJldHVybiBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgXG4gICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICBpZiAoIXZhbHVlKSByZXR1cm4gJ251bGwnO1xuICAgICAgICAgICAgZ2FwICs9IGluZGVudDtcbiAgICAgICAgICAgIHBhcnRpYWwgPSBbXTtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gQXJyYXkuaXNBcnJheVxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsW2ldID0gc3RyKGksIHZhbHVlKSB8fCAnbnVsbCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIC8vIEpvaW4gYWxsIG9mIHRoZSBlbGVtZW50cyB0b2dldGhlciwgc2VwYXJhdGVkIHdpdGggY29tbWFzLCBhbmRcbiAgICAgICAgICAgICAgICAvLyB3cmFwIHRoZW0gaW4gYnJhY2tldHMuXG4gICAgICAgICAgICAgICAgdiA9IHBhcnRpYWwubGVuZ3RoID09PSAwID8gJ1tdJyA6IGdhcCA/XG4gICAgICAgICAgICAgICAgICAgICdbXFxuJyArIGdhcCArIHBhcnRpYWwuam9pbignLFxcbicgKyBnYXApICsgJ1xcbicgKyBtaW5kICsgJ10nIDpcbiAgICAgICAgICAgICAgICAgICAgJ1snICsgcGFydGlhbC5qb2luKCcsJykgKyAnXSc7XG4gICAgICAgICAgICAgICAgZ2FwID0gbWluZDtcbiAgICAgICAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgLy8gSWYgdGhlIHJlcGxhY2VyIGlzIGFuIGFycmF5LCB1c2UgaXQgdG8gc2VsZWN0IHRoZSBtZW1iZXJzIHRvIGJlXG4gICAgICAgICAgICAvLyBzdHJpbmdpZmllZC5cbiAgICAgICAgICAgIGlmIChyZXAgJiYgdHlwZW9mIHJlcCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICBsZW5ndGggPSByZXAubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkgKz0gMSkge1xuICAgICAgICAgICAgICAgICAgICBrID0gcmVwW2ldO1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2ID0gc3RyKGssIHZhbHVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG9iamVjdC5cbiAgICAgICAgICAgICAgICBmb3IgKGsgaW4gdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzdHIoaywgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHYpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0aWFsLnB1c2gocXVvdGUoaykgKyAoZ2FwID8gJzogJyA6ICc6JykgKyB2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFxuICAgICAgICAvLyBKb2luIGFsbCBvZiB0aGUgbWVtYmVyIHRleHRzIHRvZ2V0aGVyLCBzZXBhcmF0ZWQgd2l0aCBjb21tYXMsXG4gICAgICAgIC8vIGFuZCB3cmFwIHRoZW0gaW4gYnJhY2VzLlxuXG4gICAgICAgIHYgPSBwYXJ0aWFsLmxlbmd0aCA9PT0gMCA/ICd7fScgOiBnYXAgP1xuICAgICAgICAgICAgJ3tcXG4nICsgZ2FwICsgcGFydGlhbC5qb2luKCcsXFxuJyArIGdhcCkgKyAnXFxuJyArIG1pbmQgKyAnfScgOlxuICAgICAgICAgICAgJ3snICsgcGFydGlhbC5qb2luKCcsJykgKyAnfSc7XG4gICAgICAgIGdhcCA9IG1pbmQ7XG4gICAgICAgIHJldHVybiB2O1xuICAgIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAodmFsdWUsIHJlcGxhY2VyLCBzcGFjZSkge1xuICAgIHZhciBpO1xuICAgIGdhcCA9ICcnO1xuICAgIGluZGVudCA9ICcnO1xuICAgIFxuICAgIC8vIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBudW1iZXIsIG1ha2UgYW4gaW5kZW50IHN0cmluZyBjb250YWluaW5nIHRoYXRcbiAgICAvLyBtYW55IHNwYWNlcy5cbiAgICBpZiAodHlwZW9mIHNwYWNlID09PSAnbnVtYmVyJykge1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc3BhY2U7IGkgKz0gMSkge1xuICAgICAgICAgICAgaW5kZW50ICs9ICcgJztcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBJZiB0aGUgc3BhY2UgcGFyYW1ldGVyIGlzIGEgc3RyaW5nLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIGluZGVudCBzdHJpbmcuXG4gICAgZWxzZSBpZiAodHlwZW9mIHNwYWNlID09PSAnc3RyaW5nJykge1xuICAgICAgICBpbmRlbnQgPSBzcGFjZTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIHJlcGxhY2VyLCBpdCBtdXN0IGJlIGEgZnVuY3Rpb24gb3IgYW4gYXJyYXkuXG4gICAgLy8gT3RoZXJ3aXNlLCB0aHJvdyBhbiBlcnJvci5cbiAgICByZXAgPSByZXBsYWNlcjtcbiAgICBpZiAocmVwbGFjZXIgJiYgdHlwZW9mIHJlcGxhY2VyICE9PSAnZnVuY3Rpb24nXG4gICAgJiYgKHR5cGVvZiByZXBsYWNlciAhPT0gJ29iamVjdCcgfHwgdHlwZW9mIHJlcGxhY2VyLmxlbmd0aCAhPT0gJ251bWJlcicpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSlNPTi5zdHJpbmdpZnknKTtcbiAgICB9XG4gICAgXG4gICAgLy8gTWFrZSBhIGZha2Ugcm9vdCBvYmplY3QgY29udGFpbmluZyBvdXIgdmFsdWUgdW5kZXIgdGhlIGtleSBvZiAnJy5cbiAgICAvLyBSZXR1cm4gdGhlIHJlc3VsdCBvZiBzdHJpbmdpZnlpbmcgdGhlIHZhbHVlLlxuICAgIHJldHVybiBzdHIoJycsIHsnJzogdmFsdWV9KTtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB1bmRlZmluZWQ7XG5cbnZhciBfcmVnZW5lcmF0b3IgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yJyk7XG5cbnZhciBfcmVnZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVnZW5lcmF0b3IpO1xuXG52YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXG52YXIgX2Rlc2MsIF92YWx1ZSwgX2NsYXNzO1xuXG52YXIgX2RlYnVnRGVjb3JhdG9yID0gcmVxdWlyZSgnLi9kZWJ1Zy1kZWNvcmF0b3InKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IGZ1bmN0aW9uIHN0ZXAoa2V5LCBhcmcpIHsgdHJ5IHsgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpOyB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyByZXR1cm47IH0gaWYgKGluZm8uZG9uZSkgeyByZXNvbHZlKHZhbHVlKTsgfSBlbHNlIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHsgc3RlcChcIm5leHRcIiwgdmFsdWUpOyB9LCBmdW5jdGlvbiAoZXJyKSB7IHN0ZXAoXCJ0aHJvd1wiLCBlcnIpOyB9KTsgfSB9IHJldHVybiBzdGVwKFwibmV4dFwiKTsgfSk7IH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7XG4gIHZhciBkZXNjID0ge307XG4gIE9iamVjdFsna2UnICsgJ3lzJ10oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldO1xuICB9KTtcbiAgZGVzYy5lbnVtZXJhYmxlID0gISFkZXNjLmVudW1lcmFibGU7XG4gIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTtcblxuICBpZiAoJ3ZhbHVlJyBpbiBkZXNjIHx8IGRlc2MuaW5pdGlhbGl6ZXIpIHtcbiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7XG4gICAgcmV0dXJuIGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5LCBkZXNjKSB8fCBkZXNjO1xuICB9LCBkZXNjKTtcblxuICBpZiAoY29udGV4dCAmJiBkZXNjLmluaXRpYWxpemVyICE9PSB2b2lkIDApIHtcbiAgICBkZXNjLnZhbHVlID0gZGVzYy5pbml0aWFsaXplciA/IGRlc2MuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMDtcbiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkge1xuICAgIE9iamVjdFsnZGVmaW5lJyArICdQcm9wZXJ0eSddKHRhcmdldCwgcHJvcGVydHksIGRlc2MpO1xuICAgIGRlc2MgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbnZhciBGYWxsYmFja1RyYW5zcG9ydCA9IChfY2xhc3MgPSBmdW5jdGlvbiAoKSB7XG5cbiAgLy8gbm90ZTogYWN0aXZlVHJhbnNwb3J0IGlzIGFjdHVhbGx5IFwiP1RyYW5zcG9ydFwiLCBidXRcbiAgLy8gZXZlcnl3aGVyZSBJIGFtIHVzaW5nIGl0IGlzIGluIGBhc3luY2AsIHNvIGVycm9yIGdldHMgcmV0dXJuZWQgYXMgUHJvbWlzZS5yZWplY3RcbiAgZnVuY3Rpb24gRmFsbGJhY2tUcmFuc3BvcnQodHJhbnNwb3J0cykge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBGYWxsYmFja1RyYW5zcG9ydCk7XG5cbiAgICB0aGlzLm5hbWUgPSAnRmFsbGJhY2tUcmFuc3BvcnQnO1xuICAgIHRoaXMuYWN0aXZlTmFtZSA9ICcnO1xuICAgIHRoaXMuZGVidWcgPSBmYWxzZTtcbiAgICB0aGlzLnJlcXVlc3ROZWVkZWQgPSBmYWxzZTtcblxuICAgIHRoaXMudHJhbnNwb3J0cyA9IHRyYW5zcG9ydHM7XG4gIH1cblxuICAvLyBmaXJzdCBvbmUgdGhhdCBpbml0cyBzdWNjZXNzZnVseSBpcyB0aGUgZmluYWwgb25lOyBvdGhlcnMgd29uJ3QgZXZlbiBzdGFydCBpbml0aW5nXG5cblxuICBfY3JlYXRlQ2xhc3MoRmFsbGJhY2tUcmFuc3BvcnQsIFt7XG4gICAga2V5OiAnX3RyeUluaXRUcmFuc3BvcnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoKSB7XG4gICAgICAgIHZhciByZXMsIGxhc3RFcnJvciwgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiwgX2RpZEl0ZXJhdG9yRXJyb3IsIF9pdGVyYXRvckVycm9yLCBfaXRlcmF0b3IsIF9zdGVwLCB0cmFuc3BvcnQ7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJlcyA9IFtdO1xuICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IG51bGw7XG4gICAgICAgICAgICAgICAgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5wcmV2ID0gNTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3IgPSB0aGlzLnRyYW5zcG9ydHNbU3ltYm9sLml0ZXJhdG9yXSgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgICBpZiAoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiA9IChfc3RlcCA9IF9pdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyMTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IF9zdGVwLnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSA5O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwb3J0LmluaXQodGhpcy5kZWJ1Zyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMjpcbiAgICAgICAgICAgICAgICByZXMucHVzaCh0cmFuc3BvcnQpO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAxODtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDE1OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAxNTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC50MCA9IF9jb250ZXh0WydjYXRjaCddKDkpO1xuXG4gICAgICAgICAgICAgICAgbGFzdEVycm9yID0gX2NvbnRleHQudDA7XG5cbiAgICAgICAgICAgICAgY2FzZSAxODpcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDIxOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAyNztcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDIzOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyMztcbiAgICAgICAgICAgICAgICBfY29udGV4dC50MSA9IF9jb250ZXh0WydjYXRjaCddKDUpO1xuICAgICAgICAgICAgICAgIF9kaWRJdGVyYXRvckVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvciA9IF9jb250ZXh0LnQxO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDI3O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0LnByZXYgPSAyODtcblxuICAgICAgICAgICAgICAgIGlmICghX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbiAmJiBfaXRlcmF0b3IucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IucmV0dXJuKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGNhc2UgMzA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQucHJldiA9IDMwO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFfZGlkSXRlcmF0b3JFcnJvcikge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQubmV4dCA9IDMzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgX2l0ZXJhdG9yRXJyb3I7XG5cbiAgICAgICAgICAgICAgY2FzZSAzMzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuZmluaXNoKDMwKTtcblxuICAgICAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5maW5pc2goMjcpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMzU6XG4gICAgICAgICAgICAgICAgaWYgKCEocmVzLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Lm5leHQgPSAzNztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IGxhc3RFcnJvciB8fCBuZXcgRXJyb3IoJ05vIHRyYW5zcG9ydCBjb3VsZCBiZSBpbml0aWFsaXplZC4nKTtcblxuICAgICAgICAgICAgICBjYXNlIDM3OlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5hYnJ1cHQoJ3JldHVybicsIHJlcyk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzODpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZSwgdGhpcywgW1s1LCAyMywgMjcsIDM1XSwgWzksIDE1XSwgWzI4LCwgMzAsIDM0XV0pO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBfdHJ5SW5pdFRyYW5zcG9ydHMoKSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfdHJ5SW5pdFRyYW5zcG9ydHM7XG4gICAgfSgpXG5cbiAgICAvLyBmaXJzdCBvbmUgdGhhdCBpbml0cyBzdWNjZXNzZnVseSBpcyB0aGUgZmluYWwgb25lOyBvdGhlcnMgd29uJ3QgZXZlbiBzdGFydCBpbml0aW5nXG5cbiAgfSwge1xuICAgIGtleTogJ190cnlDb25maWd1cmVUcmFuc3BvcnRzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMihkYXRhKSB7XG4gICAgICAgIHZhciBsYXN0RXJyb3IsIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yLCBfZGlkSXRlcmF0b3JFcnJvcjIsIF9pdGVyYXRvckVycm9yMiwgX2l0ZXJhdG9yMiwgX3N0ZXAyLCB0cmFuc3BvcnQ7XG5cbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUyJChfY29udGV4dDIpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDIucHJldiA9IF9jb250ZXh0Mi5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBsYXN0RXJyb3IgPSBudWxsO1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfZGlkSXRlcmF0b3JFcnJvcjIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSA0O1xuICAgICAgICAgICAgICAgIF9pdGVyYXRvcjIgPSB0aGlzLl9hdmFpbGFibGVUcmFuc3BvcnRzW1N5bWJvbC5pdGVyYXRvcl0oKTtcblxuICAgICAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICAgICAgaWYgKF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gKF9zdGVwMiA9IF9pdGVyYXRvcjIubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDIwO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdHJhbnNwb3J0ID0gX3N0ZXAyLnZhbHVlO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gODtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDExO1xuICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc3BvcnQuY29uZmlndXJlKGRhdGEpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTE6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5hYnJ1cHQoJ3JldHVybicsIHRyYW5zcG9ydCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDE0O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi50MCA9IF9jb250ZXh0MlsnY2F0Y2gnXSg4KTtcblxuICAgICAgICAgICAgICAgIGxhc3RFcnJvciA9IF9jb250ZXh0Mi50MDtcblxuICAgICAgICAgICAgICBjYXNlIDE3OlxuICAgICAgICAgICAgICAgIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgICAgY2FzZSAyMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIubmV4dCA9IDI2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLnByZXYgPSAyMjtcbiAgICAgICAgICAgICAgICBfY29udGV4dDIudDEgPSBfY29udGV4dDJbJ2NhdGNoJ10oNCk7XG4gICAgICAgICAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBfaXRlcmF0b3JFcnJvcjIgPSBfY29udGV4dDIudDE7XG5cbiAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICBfY29udGV4dDIucHJldiA9IDI2O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMjc7XG5cbiAgICAgICAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24yICYmIF9pdGVyYXRvcjIucmV0dXJuKSB7XG4gICAgICAgICAgICAgICAgICBfaXRlcmF0b3IyLnJldHVybigpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjYXNlIDI5OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Mi5wcmV2ID0gMjk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIV9kaWRJdGVyYXRvckVycm9yMikge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzMjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IF9pdGVyYXRvckVycm9yMjtcblxuICAgICAgICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDI5KTtcblxuICAgICAgICAgICAgICBjYXNlIDMzOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuZmluaXNoKDI2KTtcblxuICAgICAgICAgICAgICBjYXNlIDM0OlxuICAgICAgICAgICAgICAgIHRocm93IGxhc3RFcnJvciB8fCBuZXcgRXJyb3IoJ05vIHRyYW5zcG9ydCBjb3VsZCBiZSBpbml0aWFsaXplZC4nKTtcblxuICAgICAgICAgICAgICBjYXNlIDM1OlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDIuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTIsIHRoaXMsIFtbNCwgMjIsIDI2LCAzNF0sIFs4LCAxNF0sIFsyNywsIDI5LCAzM11dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gX3RyeUNvbmZpZ3VyZVRyYW5zcG9ydHMoX3gpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfdHJ5Q29uZmlndXJlVHJhbnNwb3J0cztcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2luaXQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKGRlYnVnKSB7XG4gICAgICAgIHZhciB0cmFuc3BvcnRzO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVidWcgPSAhIWRlYnVnO1xuXG4gICAgICAgICAgICAgICAgLy8gaW5pdCBBTEwgT0YgVEhFTVxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdHJ5SW5pdFRyYW5zcG9ydHMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgdHJhbnNwb3J0cyA9IF9jb250ZXh0My5zZW50O1xuXG4gICAgICAgICAgICAgICAgdGhpcy5fYXZhaWxhYmxlVHJhbnNwb3J0cyA9IHRyYW5zcG9ydHM7XG5cbiAgICAgICAgICAgICAgICAvLyBhIHNsaWdodCBoYWNrIC0gY29uZmlndXJlZCBpcyBhbHdheXMgZmFsc2UsIHNvIHdlIGZvcmNlIGNhbGxlciB0byBjYWxsIGNvbmZpZ3VyZSgpXG4gICAgICAgICAgICAgICAgLy8gdG8gZmluZCBvdXQgdGhlIGFjdHVhbCB3b3JraW5nIHRyYW5zcG9ydCAoYnJpZGdlIGZhbGxzIG9uIGNvbmZpZ3VyZSwgbm90IG9uIGluZm8pXG4gICAgICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gdHJhbnNwb3J0c1swXS52ZXJzaW9uO1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgIGNhc2UgNzpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQzLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUzLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gaW5pdChfeDIpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAnY29uZmlndXJlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWY0ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlNChzaWduZWREYXRhKSB7XG4gICAgICAgIHZhciBwdDtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBwdCA9IHRoaXMuX3RyeUNvbmZpZ3VyZVRyYW5zcG9ydHMoc2lnbmVkRGF0YSk7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ0Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiBwdDtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVUcmFuc3BvcnQgPSBfY29udGV4dDQuc2VudDtcblxuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJlZCA9IHRoaXMuYWN0aXZlVHJhbnNwb3J0LmNvbmZpZ3VyZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy52ZXJzaW9uID0gdGhpcy5hY3RpdmVUcmFuc3BvcnQudmVyc2lvbjtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZU5hbWUgPSB0aGlzLmFjdGl2ZVRyYW5zcG9ydC5uYW1lO1xuICAgICAgICAgICAgICAgIHRoaXMucmVxdWVzdE5lZWRlZCA9IHRoaXMuYWN0aXZlVHJhbnNwb3J0LnJlcXVlc3ROZWVkZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5pc091dGRhdGVkID0gdGhpcy5hY3RpdmVUcmFuc3BvcnQuaXNPdXRkYXRlZDtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGNvbmZpZ3VyZShfeDMpIHtcbiAgICAgICAgcmV0dXJuIF9yZWY0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb25maWd1cmU7XG4gICAgfSgpXG5cbiAgICAvLyB1c2luZyBhc3luYyBzbyBJIGdldCBQcm9taXNlLnJlY2VjdCBvbiB0aGlzLmFjdGl2ZVRyYW5zcG9ydCA9PSBudWxsIChvciBvdGhlciBlcnJvciksIG5vdCBFcnJvclxuXG4gIH0sIHtcbiAgICBrZXk6ICdlbnVtZXJhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjUgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU1KCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuYWJydXB0KCdyZXR1cm4nLCB0aGlzLmFjdGl2ZVRyYW5zcG9ydC5lbnVtZXJhdGUoKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBlbnVtZXJhdGUoKSB7XG4gICAgICAgIHJldHVybiBfcmVmNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW51bWVyYXRlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAnbGlzdGVuJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWY2ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlNihvbGQpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU2JChfY29udGV4dDYpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDYucHJldiA9IF9jb250ZXh0Ni5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LmFicnVwdCgncmV0dXJuJywgdGhpcy5hY3RpdmVUcmFuc3BvcnQubGlzdGVuKG9sZCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ2LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU2LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gbGlzdGVuKF94NCkge1xuICAgICAgICByZXR1cm4gX3JlZjYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGxpc3RlbjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2FjcXVpcmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjcgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU3KGlucHV0LCBkZWJ1Z0xpbmspIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU3JChfY29udGV4dDcpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDcucHJldiA9IF9jb250ZXh0Ny5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ3LmFicnVwdCgncmV0dXJuJywgdGhpcy5hY3RpdmVUcmFuc3BvcnQuYWNxdWlyZShpbnB1dCwgZGVidWdMaW5rKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTcsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBhY3F1aXJlKF94NSwgX3g2KSB7XG4gICAgICAgIHJldHVybiBfcmVmNy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYWNxdWlyZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3JlbGVhc2UnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjggPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KHNlc3Npb24sIG9uY2xvc2UsIGRlYnVnTGluaykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTgkKF9jb250ZXh0OCkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0OC5wcmV2ID0gX2NvbnRleHQ4Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguYWJydXB0KCdyZXR1cm4nLCB0aGlzLmFjdGl2ZVRyYW5zcG9ydC5yZWxlYXNlKHNlc3Npb24sIG9uY2xvc2UsIGRlYnVnTGluaykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU4LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVsZWFzZShfeDcsIF94OCwgX3g5KSB7XG4gICAgICAgIHJldHVybiBfcmVmOC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVsZWFzZTtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2NhbGwnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjkgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU5KHNlc3Npb24sIG5hbWUsIGRhdGEsIGRlYnVnTGluaykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTkkKF9jb250ZXh0OSkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0OS5wcmV2ID0gX2NvbnRleHQ5Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDkuYWJydXB0KCdyZXR1cm4nLCB0aGlzLmFjdGl2ZVRyYW5zcG9ydC5jYWxsKHNlc3Npb24sIG5hbWUsIGRhdGEsIGRlYnVnTGluaykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ5LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU5LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gY2FsbChfeDEwLCBfeDExLCBfeDEyLCBfeDEzKSB7XG4gICAgICAgIHJldHVybiBfcmVmOS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2FsbDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3Bvc3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjEwID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMTAoc2Vzc2lvbiwgbmFtZSwgZGF0YSwgZGVidWdMaW5rKSB7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlMTAkKF9jb250ZXh0MTApIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDEwLnByZXYgPSBfY29udGV4dDEwLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDEwLmFicnVwdCgncmV0dXJuJywgdGhpcy5hY3RpdmVUcmFuc3BvcnQucG9zdChzZXNzaW9uLCBuYW1lLCBkYXRhLCBkZWJ1Z0xpbmspKTtcblxuICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTAuc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTEwLCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcG9zdChfeDE0LCBfeDE1LCBfeDE2LCBfeDE3KSB7XG4gICAgICAgIHJldHVybiBfcmVmMTAuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHBvc3Q7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdyZWFkJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYxMSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTExKHNlc3Npb24sIGRlYnVnTGluaykge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTExJChfY29udGV4dDExKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQxMS5wcmV2ID0gX2NvbnRleHQxMS5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMS5hYnJ1cHQoJ3JldHVybicsIHRoaXMuYWN0aXZlVHJhbnNwb3J0LnJlYWQoc2Vzc2lvbiwgZGVidWdMaW5rKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDExLnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUxMSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlYWQoX3gxOCwgX3gxOSkge1xuICAgICAgICByZXR1cm4gX3JlZjExLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZWFkO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAncmVxdWVzdERldmljZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmMTIgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUxMigpIHtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUxMiQoX2NvbnRleHQxMikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0MTIucHJldiA9IF9jb250ZXh0MTIubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0MTIuYWJydXB0KCdyZXR1cm4nLCB0aGlzLmFjdGl2ZVRyYW5zcG9ydC5yZXF1ZXN0RGV2aWNlKCkpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMTIsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiByZXF1ZXN0RGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gX3JlZjEyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXF1ZXN0RGV2aWNlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAnc2V0QnJpZGdlTGF0ZXN0VXJsJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gc2V0QnJpZGdlTGF0ZXN0VXJsKHVybCkge1xuICAgICAgdmFyIF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zID0gdHJ1ZTtcbiAgICAgIHZhciBfZGlkSXRlcmF0b3JFcnJvcjMgPSBmYWxzZTtcbiAgICAgIHZhciBfaXRlcmF0b3JFcnJvcjMgPSB1bmRlZmluZWQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIF9pdGVyYXRvcjMgPSB0aGlzLnRyYW5zcG9ydHNbU3ltYm9sLml0ZXJhdG9yXSgpLCBfc3RlcDM7ICEoX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjMgPSAoX3N0ZXAzID0gX2l0ZXJhdG9yMy5uZXh0KCkpLmRvbmUpOyBfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uMyA9IHRydWUpIHtcbiAgICAgICAgICB2YXIgdHJhbnNwb3J0ID0gX3N0ZXAzLnZhbHVlO1xuXG4gICAgICAgICAgdHJhbnNwb3J0LnNldEJyaWRnZUxhdGVzdFVybCh1cmwpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3IzID0gdHJ1ZTtcbiAgICAgICAgX2l0ZXJhdG9yRXJyb3IzID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb24zICYmIF9pdGVyYXRvcjMucmV0dXJuKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3IzLnJldHVybigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3IzKSB7XG4gICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnc3RvcCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHN0b3AoKSB7XG4gICAgICB2YXIgX2l0ZXJhdG9yTm9ybWFsQ29tcGxldGlvbjQgPSB0cnVlO1xuICAgICAgdmFyIF9kaWRJdGVyYXRvckVycm9yNCA9IGZhbHNlO1xuICAgICAgdmFyIF9pdGVyYXRvckVycm9yNCA9IHVuZGVmaW5lZDtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgX2l0ZXJhdG9yNCA9IHRoaXMudHJhbnNwb3J0c1tTeW1ib2wuaXRlcmF0b3JdKCksIF9zdGVwNDsgIShfaXRlcmF0b3JOb3JtYWxDb21wbGV0aW9uNCA9IChfc3RlcDQgPSBfaXRlcmF0b3I0Lm5leHQoKSkuZG9uZSk7IF9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ID0gdHJ1ZSkge1xuICAgICAgICAgIHZhciB0cmFuc3BvcnQgPSBfc3RlcDQudmFsdWU7XG5cbiAgICAgICAgICB0cmFuc3BvcnQuc3RvcCgpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgX2RpZEl0ZXJhdG9yRXJyb3I0ID0gdHJ1ZTtcbiAgICAgICAgX2l0ZXJhdG9yRXJyb3I0ID0gZXJyO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoIV9pdGVyYXRvck5vcm1hbENvbXBsZXRpb240ICYmIF9pdGVyYXRvcjQucmV0dXJuKSB7XG4gICAgICAgICAgICBfaXRlcmF0b3I0LnJldHVybigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoX2RpZEl0ZXJhdG9yRXJyb3I0KSB7XG4gICAgICAgICAgICB0aHJvdyBfaXRlcmF0b3JFcnJvcjQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEZhbGxiYWNrVHJhbnNwb3J0O1xufSgpLCAoX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnaW5pdCcsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2luaXQnKSwgX2NsYXNzLnByb3RvdHlwZSkpLCBfY2xhc3MpO1xuZXhwb3J0cy5kZWZhdWx0ID0gRmFsbGJhY2tUcmFuc3BvcnQ7XG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHNbJ2RlZmF1bHQnXTsiLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5leHBvcnRzLmRlZmF1bHQgPSB1bmRlZmluZWQ7XG5cbnZhciBfcmVnZW5lcmF0b3IgPSByZXF1aXJlKCdiYWJlbC1ydW50aW1lL3JlZ2VuZXJhdG9yJyk7XG5cbnZhciBfcmVnZW5lcmF0b3IyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVnZW5lcmF0b3IpO1xuXG52YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8gZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsgcmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0cnVjdG9yID09PSBTeW1ib2wgJiYgb2JqICE9PSBTeW1ib2wucHJvdG90eXBlID8gXCJzeW1ib2xcIiA6IHR5cGVvZiBvYmo7IH07XG5cbnZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cbnZhciBfZGVzYywgX3ZhbHVlLCBfY2xhc3M7XG5cbnZhciBfZXZlbnRzID0gcmVxdWlyZSgnZXZlbnRzJyk7XG5cbnZhciBfZXZlbnRzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2V2ZW50cyk7XG5cbnZhciBfZGVidWdEZWNvcmF0b3IgPSByZXF1aXJlKCcuLi9kZWJ1Zy1kZWNvcmF0b3InKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rpb24gX2FzeW5jVG9HZW5lcmF0b3IoZm4pIHsgcmV0dXJuIGZ1bmN0aW9uICgpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IGZ1bmN0aW9uIHN0ZXAoa2V5LCBhcmcpIHsgdHJ5IHsgdmFyIGluZm8gPSBnZW5ba2V5XShhcmcpOyB2YXIgdmFsdWUgPSBpbmZvLnZhbHVlOyB9IGNhdGNoIChlcnJvcikgeyByZWplY3QoZXJyb3IpOyByZXR1cm47IH0gaWYgKGluZm8uZG9uZSkgeyByZXNvbHZlKHZhbHVlKTsgfSBlbHNlIHsgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihmdW5jdGlvbiAodmFsdWUpIHsgc3RlcChcIm5leHRcIiwgdmFsdWUpOyB9LCBmdW5jdGlvbiAoZXJyKSB7IHN0ZXAoXCJ0aHJvd1wiLCBlcnIpOyB9KTsgfSB9IHJldHVybiBzdGVwKFwibmV4dFwiKTsgfSk7IH07IH1cblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcih0YXJnZXQsIHByb3BlcnR5LCBkZWNvcmF0b3JzLCBkZXNjcmlwdG9yLCBjb250ZXh0KSB7XG4gIHZhciBkZXNjID0ge307XG4gIE9iamVjdFsna2UnICsgJ3lzJ10oZGVzY3JpcHRvcikuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgZGVzY1trZXldID0gZGVzY3JpcHRvcltrZXldO1xuICB9KTtcbiAgZGVzYy5lbnVtZXJhYmxlID0gISFkZXNjLmVudW1lcmFibGU7XG4gIGRlc2MuY29uZmlndXJhYmxlID0gISFkZXNjLmNvbmZpZ3VyYWJsZTtcblxuICBpZiAoJ3ZhbHVlJyBpbiBkZXNjIHx8IGRlc2MuaW5pdGlhbGl6ZXIpIHtcbiAgICBkZXNjLndyaXRhYmxlID0gdHJ1ZTtcbiAgfVxuXG4gIGRlc2MgPSBkZWNvcmF0b3JzLnNsaWNlKCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbiAoZGVzYywgZGVjb3JhdG9yKSB7XG4gICAgcmV0dXJuIGRlY29yYXRvcih0YXJnZXQsIHByb3BlcnR5LCBkZXNjKSB8fCBkZXNjO1xuICB9LCBkZXNjKTtcblxuICBpZiAoY29udGV4dCAmJiBkZXNjLmluaXRpYWxpemVyICE9PSB2b2lkIDApIHtcbiAgICBkZXNjLnZhbHVlID0gZGVzYy5pbml0aWFsaXplciA/IGRlc2MuaW5pdGlhbGl6ZXIuY2FsbChjb250ZXh0KSA6IHZvaWQgMDtcbiAgICBkZXNjLmluaXRpYWxpemVyID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgaWYgKGRlc2MuaW5pdGlhbGl6ZXIgPT09IHZvaWQgMCkge1xuICAgIE9iamVjdFsnZGVmaW5lJyArICdQcm9wZXJ0eSddKHRhcmdldCwgcHJvcGVydHksIGRlc2MpO1xuICAgIGRlc2MgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGRlc2M7XG59XG5cbnZhciBUMUhJRF9WRU5ET1IgPSAweDUzNGM7XG5cbnZhciBUUkVaT1JfREVTQ1MgPSBbXG4vLyBUUkVaT1IgdjFcbi8vIHdvbid0IGdldCBvcGVuZWQsIGJ1dCB3ZSBjYW4gc2hvdyBlcnJvciBhdCBsZWFzdFxueyB2ZW5kb3JJZDogMHg1MzRjLCBwcm9kdWN0SWQ6IDB4MDAwMSB9LFxuLy8gVFJFWk9SIHdlYnVzYiBCb290bG9hZGVyXG57IHZlbmRvcklkOiAweDEyMDksIHByb2R1Y3RJZDogMHg1M2MwIH0sXG4vLyBUUkVaT1Igd2VidXNiIEZpcm13YXJlXG57IHZlbmRvcklkOiAweDEyMDksIHByb2R1Y3RJZDogMHg1M2MxIH1dO1xuXG52YXIgQ09ORklHVVJBVElPTl9JRCA9IDE7XG52YXIgSU5URVJGQUNFX0lEID0gMDtcbnZhciBFTkRQT0lOVF9JRCA9IDE7XG52YXIgREVCVUdfSU5URVJGQUNFX0lEID0gMTtcbnZhciBERUJVR19FTkRQT0lOVF9JRCA9IDI7XG5cbnZhciBXZWJVc2JQbHVnaW4gPSAoX2NsYXNzID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBXZWJVc2JQbHVnaW4oKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFdlYlVzYlBsdWdpbik7XG5cbiAgICB0aGlzLm5hbWUgPSAnV2ViVXNiUGx1Z2luJztcbiAgICB0aGlzLnZlcnNpb24gPSBcIjEuNS41XCI7XG4gICAgdGhpcy5kZWJ1ZyA9IGZhbHNlO1xuICAgIHRoaXMuYWxsb3dzV3JpdGVBbmRFbnVtZXJhdGUgPSB0cnVlO1xuICAgIHRoaXMuY29uZmlndXJhdGlvbklkID0gQ09ORklHVVJBVElPTl9JRDtcbiAgICB0aGlzLm5vcm1hbEludGVyZmFjZUlkID0gSU5URVJGQUNFX0lEO1xuICAgIHRoaXMubm9ybWFsRW5kcG9pbnRJZCA9IEVORFBPSU5UX0lEO1xuICAgIHRoaXMuZGVidWdJbnRlcmZhY2VJZCA9IERFQlVHX0lOVEVSRkFDRV9JRDtcbiAgICB0aGlzLmRlYnVnRW5kcG9pbnRJZCA9IERFQlVHX0VORFBPSU5UX0lEO1xuICAgIHRoaXMudW5yZWFkYWJsZUhpZERldmljZSA9IGZhbHNlO1xuICAgIHRoaXMudW5yZWFkYWJsZUhpZERldmljZUNoYW5nZSA9IG5ldyBfZXZlbnRzMi5kZWZhdWx0KCk7XG4gICAgdGhpcy5fbGFzdERldmljZXMgPSBbXTtcbiAgICB0aGlzLnJlcXVlc3ROZWVkZWQgPSB0cnVlO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFdlYlVzYlBsdWdpbiwgW3tcbiAgICBrZXk6ICdpbml0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoZGVidWcpIHtcbiAgICAgICAgdmFyIHVzYjtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQucHJldiA9IF9jb250ZXh0Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuZGVidWcgPSAhIWRlYnVnO1xuICAgICAgICAgICAgICAgIC8vICRGbG93SXNzdWVcbiAgICAgICAgICAgICAgICB1c2IgPSBuYXZpZ2F0b3IudXNiO1xuXG4gICAgICAgICAgICAgICAgaWYgKCEodXNiID09IG51bGwpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dC5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2ViVVNCIGlzIG5vdCBhdmFpbGFibGUgb24gdGhpcyBicm93c2VyLicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICB0aGlzLnVzYiA9IHVzYjtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWUsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBpbml0KF94KSB7XG4gICAgICAgIHJldHVybiBfcmVmLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBpbml0O1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAnX2RldmljZUhhc0RlYnVnTGluaycsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIF9kZXZpY2VIYXNEZWJ1Z0xpbmsoZGV2aWNlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgaWZhY2UgPSBkZXZpY2UuY29uZmlndXJhdGlvbnNbMF0uaW50ZXJmYWNlc1tERUJVR19JTlRFUkZBQ0VfSURdLmFsdGVybmF0ZXNbMF07XG4gICAgICAgIHJldHVybiBpZmFjZS5pbnRlcmZhY2VDbGFzcyA9PT0gMjU1ICYmIGlmYWNlLmVuZHBvaW50c1swXS5lbmRwb2ludE51bWJlciA9PT0gREVCVUdfRU5EUE9JTlRfSUQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6ICdfZGV2aWNlSXNIaWQnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBfZGV2aWNlSXNIaWQoZGV2aWNlKSB7XG4gICAgICByZXR1cm4gZGV2aWNlLnZlbmRvcklkID09PSBUMUhJRF9WRU5ET1I7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiAnX2xpc3REZXZpY2VzJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYyID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlMigpIHtcbiAgICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgICB2YXIgYm9vdGxvYWRlcklkLCBkZXZpY2VzLCB0cmV6b3JEZXZpY2VzLCBoaWREZXZpY2VzLCBub25IaWREZXZpY2VzLCBvbGRVbnJlYWRhYmxlSGlkRGV2aWNlO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTIkKF9jb250ZXh0Mikge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Mi5wcmV2ID0gX2NvbnRleHQyLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGJvb3Rsb2FkZXJJZCA9IDA7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQyLm5leHQgPSAzO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVzYi5nZXREZXZpY2VzKCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgIGRldmljZXMgPSBfY29udGV4dDIuc2VudDtcbiAgICAgICAgICAgICAgICB0cmV6b3JEZXZpY2VzID0gZGV2aWNlcy5maWx0ZXIoZnVuY3Rpb24gKGRldikge1xuICAgICAgICAgICAgICAgICAgdmFyIGlzVHJlem9yID0gVFJFWk9SX0RFU0NTLnNvbWUoZnVuY3Rpb24gKGRlc2MpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRldi52ZW5kb3JJZCA9PT0gZGVzYy52ZW5kb3JJZCAmJiBkZXYucHJvZHVjdElkID09PSBkZXNjLnByb2R1Y3RJZDtcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzVHJlem9yO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGhpZERldmljZXMgPSB0cmV6b3JEZXZpY2VzLmZpbHRlcihmdW5jdGlvbiAoZGV2KSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuX2RldmljZUlzSGlkKGRldik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbm9uSGlkRGV2aWNlcyA9IHRyZXpvckRldmljZXMuZmlsdGVyKGZ1bmN0aW9uIChkZXYpIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiAhX3RoaXMuX2RldmljZUlzSGlkKGRldik7XG4gICAgICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgICAgIHRoaXMuX2xhc3REZXZpY2VzID0gbm9uSGlkRGV2aWNlcy5tYXAoZnVuY3Rpb24gKGRldmljZSkge1xuICAgICAgICAgICAgICAgICAgLy8gcGF0aCBpcyBqdXN0IHNlcmlhbCBudW1iZXJcbiAgICAgICAgICAgICAgICAgIC8vIG1vcmUgYm9vdGxvYWRlcnMgPT4gbnVtYmVyIHRoZW0sIGhvcGUgZm9yIHRoZSBiZXN0XG4gICAgICAgICAgICAgICAgICB2YXIgc2VyaWFsTnVtYmVyID0gZGV2aWNlLnNlcmlhbE51bWJlcjtcbiAgICAgICAgICAgICAgICAgIHZhciBwYXRoID0gc2VyaWFsTnVtYmVyID09IG51bGwgfHwgc2VyaWFsTnVtYmVyID09PSAnJyA/ICdib290bG9hZGVyJyA6IHNlcmlhbE51bWJlcjtcbiAgICAgICAgICAgICAgICAgIGlmIChwYXRoID09PSAnYm9vdGxvYWRlcicpIHtcbiAgICAgICAgICAgICAgICAgICAgYm9vdGxvYWRlcklkKys7XG4gICAgICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoICsgYm9vdGxvYWRlcklkO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdmFyIGRlYnVnID0gX3RoaXMuX2RldmljZUhhc0RlYnVnTGluayhkZXZpY2UpO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGF0aDogcGF0aCwgZGV2aWNlOiBkZXZpY2UsIGRlYnVnOiBkZWJ1ZyB9O1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgb2xkVW5yZWFkYWJsZUhpZERldmljZSA9IHRoaXMudW5yZWFkYWJsZUhpZERldmljZTtcblxuICAgICAgICAgICAgICAgIHRoaXMudW5yZWFkYWJsZUhpZERldmljZSA9IGhpZERldmljZXMubGVuZ3RoID4gMDtcblxuICAgICAgICAgICAgICAgIGlmIChvbGRVbnJlYWRhYmxlSGlkRGV2aWNlICE9PSB0aGlzLnVucmVhZGFibGVIaWREZXZpY2UpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudW5yZWFkYWJsZUhpZERldmljZUNoYW5nZS5lbWl0KCdjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQyLmFicnVwdCgncmV0dXJuJywgdGhpcy5fbGFzdERldmljZXMpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTI6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Mi5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMiwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIF9saXN0RGV2aWNlcygpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYyLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBfbGlzdERldmljZXM7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdlbnVtZXJhdGUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjMgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUzKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTMkKF9jb250ZXh0Mykge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0My5wcmV2ID0gX2NvbnRleHQzLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0My5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fbGlzdERldmljZXMoKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQzLnQwID0gZnVuY3Rpb24gKGluZm8pIHtcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhdGg6IGluZm8ucGF0aCwgZGVidWc6IGluZm8uZGVidWcgfTtcbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5hYnJ1cHQoJ3JldHVybicsIF9jb250ZXh0My5zZW50Lm1hcChfY29udGV4dDMudDApKTtcblxuICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0My5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMywgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGVudW1lcmF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIF9yZWYzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbnVtZXJhdGU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdfZmluZERldmljZScsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmNCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTQocGF0aCkge1xuICAgICAgICB2YXIgZGV2aWNlTztcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU0JChfY29udGV4dDQpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDQucHJldiA9IF9jb250ZXh0NC5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBkZXZpY2VPID0gdGhpcy5fbGFzdERldmljZXMuZmluZChmdW5jdGlvbiAoZCkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGQucGF0aCA9PT0gcGF0aDtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIGlmICghKGRldmljZU8gPT0gbnVsbCkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0NC5uZXh0ID0gMztcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQWN0aW9uIHdhcyBpbnRlcnJ1cHRlZC4nKTtcblxuICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5hYnJ1cHQoJ3JldHVybicsIGRldmljZU8uZGV2aWNlKTtcblxuICAgICAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0NC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNCwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIF9maW5kRGV2aWNlKF94Mikge1xuICAgICAgICByZXR1cm4gX3JlZjQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIF9maW5kRGV2aWNlO1xuICAgIH0oKVxuICB9LCB7XG4gICAga2V5OiAnc2VuZCcsXG4gICAgdmFsdWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfcmVmNSA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTUocGF0aCwgZGF0YSwgZGVidWcpIHtcbiAgICAgICAgdmFyIGRldmljZSwgbmV3QXJyYXksIGVuZHBvaW50O1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTUkKF9jb250ZXh0NSkge1xuICAgICAgICAgIHdoaWxlICgxKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0NS5wcmV2ID0gX2NvbnRleHQ1Lm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0NS5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fZmluZERldmljZShwYXRoKTtcblxuICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgZGV2aWNlID0gX2NvbnRleHQ1LnNlbnQ7XG4gICAgICAgICAgICAgICAgbmV3QXJyYXkgPSBuZXcgVWludDhBcnJheSg2NCk7XG5cbiAgICAgICAgICAgICAgICBuZXdBcnJheVswXSA9IDYzO1xuICAgICAgICAgICAgICAgIG5ld0FycmF5LnNldChuZXcgVWludDhBcnJheShkYXRhKSwgMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoZGV2aWNlLm9wZW5lZCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgX2NvbnRleHQ1Lm5leHQgPSA5O1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3QocGF0aCwgZGVidWcsIGZhbHNlKTtcblxuICAgICAgICAgICAgICBjYXNlIDk6XG4gICAgICAgICAgICAgICAgZW5kcG9pbnQgPSBkZWJ1ZyA/IHRoaXMuZGVidWdFbmRwb2ludElkIDogdGhpcy5ub3JtYWxFbmRwb2ludElkO1xuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDUuYWJydXB0KCdyZXR1cm4nLCBkZXZpY2UudHJhbnNmZXJPdXQoZW5kcG9pbnQsIG5ld0FycmF5KS50aGVuKGZ1bmN0aW9uICgpIHt9KSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ1LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU1LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gc2VuZChfeDMsIF94NCwgX3g1KSB7XG4gICAgICAgIHJldHVybiBfcmVmNS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VuZDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ3JlY2VpdmUnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU2KHBhdGgsIGRlYnVnKSB7XG4gICAgICAgIHZhciBkZXZpY2UsIGVuZHBvaW50LCByZXM7XG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlNiQoX2NvbnRleHQ2KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ2LnByZXYgPSBfY29udGV4dDYubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ2Lm5leHQgPSAyO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9maW5kRGV2aWNlKHBhdGgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBkZXZpY2UgPSBfY29udGV4dDYuc2VudDtcbiAgICAgICAgICAgICAgICBlbmRwb2ludCA9IGRlYnVnID8gdGhpcy5kZWJ1Z0VuZHBvaW50SWQgOiB0aGlzLm5vcm1hbEVuZHBvaW50SWQ7XG4gICAgICAgICAgICAgICAgX2NvbnRleHQ2LnByZXYgPSA0O1xuXG4gICAgICAgICAgICAgICAgaWYgKGRldmljZS5vcGVuZWQpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0KHBhdGgsIGRlYnVnLCBmYWxzZSk7XG5cbiAgICAgICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgICAgIF9jb250ZXh0Ni5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZS50cmFuc2ZlckluKGVuZHBvaW50LCA2NCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMDpcbiAgICAgICAgICAgICAgICByZXMgPSBfY29udGV4dDYuc2VudDtcblxuICAgICAgICAgICAgICAgIGlmICghKHJlcy5kYXRhLmJ5dGVMZW5ndGggPT09IDApKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDEzO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5hYnJ1cHQoJ3JldHVybicsIHRoaXMucmVjZWl2ZShwYXRoLCBkZWJ1ZykpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMTM6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5hYnJ1cHQoJ3JldHVybicsIHJlcy5kYXRhLmJ1ZmZlci5zbGljZSgxKSk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxNjpcbiAgICAgICAgICAgICAgICBfY29udGV4dDYucHJldiA9IDE2O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0Ni50MCA9IF9jb250ZXh0NlsnY2F0Y2gnXSg0KTtcblxuICAgICAgICAgICAgICAgIGlmICghKF9jb250ZXh0Ni50MC5tZXNzYWdlID09PSAnRGV2aWNlIHVuYXZhaWxhYmxlLicpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDYubmV4dCA9IDIyO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb24gd2FzIGludGVycnVwdGVkLicpO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgICAgICAgdGhyb3cgX2NvbnRleHQ2LnQwO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjM6XG4gICAgICAgICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ni5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlNiwgdGhpcywgW1s0LCAxNl1dKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gcmVjZWl2ZShfeDYsIF94Nykge1xuICAgICAgICByZXR1cm4gX3JlZjYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlY2VpdmU7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdjb25uZWN0JyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWY3ID0gX2FzeW5jVG9HZW5lcmF0b3IoIC8qI19fUFVSRV9fKi9fcmVnZW5lcmF0b3IyLmRlZmF1bHQubWFyayhmdW5jdGlvbiBfY2FsbGVlNyhwYXRoLCBkZWJ1ZywgZmlyc3QpIHtcbiAgICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICAgICAgdmFyIF9sb29wLCBpLCBfcmV0O1xuXG4gICAgICAgIHJldHVybiBfcmVnZW5lcmF0b3IyLmRlZmF1bHQud3JhcChmdW5jdGlvbiBfY2FsbGVlNyQoX2NvbnRleHQ4KSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQ4LnByZXYgPSBfY29udGV4dDgubmV4dCkge1xuICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgX2xvb3AgPSAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2xvb3AoaSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9sb29wJChfY29udGV4dDcpIHtcbiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0Ny5wcmV2ID0gX2NvbnRleHQ3Lm5leHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA+IDApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ3Lm5leHQgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGkgKiAyMDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDcucHJldiA9IDM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0Ny5uZXh0ID0gNjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5fY29ubmVjdEluKHBhdGgsIGRlYnVnLCBmaXJzdCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRleHQ3LnQwID0gX2NvbnRleHQ3LnNlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDcuYWJydXB0KCdyZXR1cm4nLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdjogX2NvbnRleHQ3LnQwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDcucHJldiA9IDEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDcudDEgPSBfY29udGV4dDdbJ2NhdGNoJ10oMyk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaSA9PT0gNCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dDcubmV4dCA9IDE0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgX2NvbnRleHQ3LnQxO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE0OlxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9jb250ZXh0Ny5zdG9wKCk7XG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9LCBfbG9vcCwgX3RoaXMyLCBbWzMsIDEwXV0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGkgPSAwO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBpZiAoIShpIDwgNSkpIHtcbiAgICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMTA7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LmRlbGVnYXRlWWllbGQoX2xvb3AoaSksICd0MCcsIDQpO1xuXG4gICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICBfcmV0ID0gX2NvbnRleHQ4LnQwO1xuXG4gICAgICAgICAgICAgICAgaWYgKCEoKHR5cGVvZiBfcmV0ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihfcmV0KSkgPT09IFwib2JqZWN0XCIpKSB7XG4gICAgICAgICAgICAgICAgICBfY29udGV4dDgubmV4dCA9IDc7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ4LmFicnVwdCgncmV0dXJuJywgX3JldC52KTtcblxuICAgICAgICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgICAgICAgaSsrO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0OC5uZXh0ID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dDguc3RvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSwgX2NhbGxlZTcsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiBjb25uZWN0KF94OCwgX3g5LCBfeDEwKSB7XG4gICAgICAgIHJldHVybiBfcmVmNy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29ubmVjdDtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ19jb25uZWN0SW4nLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjggPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU4KHBhdGgsIGRlYnVnLCBmaXJzdCkge1xuICAgICAgICB2YXIgZGV2aWNlLCBpbnRlcmZhY2VJZDtcbiAgICAgICAgcmV0dXJuIF9yZWdlbmVyYXRvcjIuZGVmYXVsdC53cmFwKGZ1bmN0aW9uIF9jYWxsZWU4JChfY29udGV4dDkpIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDkucHJldiA9IF9jb250ZXh0OS5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDkubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmREZXZpY2UocGF0aCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGRldmljZSA9IF9jb250ZXh0OS5zZW50O1xuICAgICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gNTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNlLm9wZW4oKTtcblxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQ5Lm5leHQgPSAxMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gODtcbiAgICAgICAgICAgICAgICByZXR1cm4gZGV2aWNlLnNlbGVjdENvbmZpZ3VyYXRpb24odGhpcy5jb25maWd1cmF0aW9uSWQpO1xuXG4gICAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgICBfY29udGV4dDkubmV4dCA9IDEwO1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2UucmVzZXQoKTtcblxuICAgICAgICAgICAgICBjYXNlIDEwOlxuICAgICAgICAgICAgICAgIGludGVyZmFjZUlkID0gZGVidWcgPyB0aGlzLmRlYnVnSW50ZXJmYWNlSWQgOiB0aGlzLm5vcm1hbEludGVyZmFjZUlkO1xuICAgICAgICAgICAgICAgIF9jb250ZXh0OS5uZXh0ID0gMTM7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZS5jbGFpbUludGVyZmFjZShpbnRlcmZhY2VJZCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQ5LnN0b3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0sIF9jYWxsZWU4LCB0aGlzKTtcbiAgICAgIH0pKTtcblxuICAgICAgZnVuY3Rpb24gX2Nvbm5lY3RJbihfeDExLCBfeDEyLCBfeDEzKSB7XG4gICAgICAgIHJldHVybiBfcmVmOC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gX2Nvbm5lY3RJbjtcbiAgICB9KClcbiAgfSwge1xuICAgIGtleTogJ2Rpc2Nvbm5lY3QnLFxuICAgIHZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgX3JlZjkgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL19yZWdlbmVyYXRvcjIuZGVmYXVsdC5tYXJrKGZ1bmN0aW9uIF9jYWxsZWU5KHBhdGgsIGRlYnVnLCBsYXN0KSB7XG4gICAgICAgIHZhciBkZXZpY2UsIGludGVyZmFjZUlkO1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTkkKF9jb250ZXh0MTApIHtcbiAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dDEwLnByZXYgPSBfY29udGV4dDEwLm5leHQpIHtcbiAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIF9jb250ZXh0MTAubmV4dCA9IDI7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbmREZXZpY2UocGF0aCk7XG5cbiAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGRldmljZSA9IF9jb250ZXh0MTAuc2VudDtcbiAgICAgICAgICAgICAgICBpbnRlcmZhY2VJZCA9IGRlYnVnID8gdGhpcy5kZWJ1Z0ludGVyZmFjZUlkIDogdGhpcy5ub3JtYWxJbnRlcmZhY2VJZDtcbiAgICAgICAgICAgICAgICBfY29udGV4dDEwLm5leHQgPSA2O1xuICAgICAgICAgICAgICAgIHJldHVybiBkZXZpY2UucmVsZWFzZUludGVyZmFjZShpbnRlcmZhY2VJZCk7XG5cbiAgICAgICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgICAgIGlmICghbGFzdCkge1xuICAgICAgICAgICAgICAgICAgX2NvbnRleHQxMC5uZXh0ID0gOTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIF9jb250ZXh0MTAubmV4dCA9IDk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRldmljZS5jbG9zZSgpO1xuXG4gICAgICAgICAgICAgIGNhc2UgOTpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMC5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlOSwgdGhpcyk7XG4gICAgICB9KSk7XG5cbiAgICAgIGZ1bmN0aW9uIGRpc2Nvbm5lY3QoX3gxNCwgX3gxNSwgX3gxNikge1xuICAgICAgICByZXR1cm4gX3JlZjkuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGRpc2Nvbm5lY3Q7XG4gICAgfSgpXG4gIH0sIHtcbiAgICBrZXk6ICdyZXF1ZXN0RGV2aWNlJyxcbiAgICB2YWx1ZTogZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIF9yZWYxMCA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovX3JlZ2VuZXJhdG9yMi5kZWZhdWx0Lm1hcmsoZnVuY3Rpb24gX2NhbGxlZTEwKCkge1xuICAgICAgICByZXR1cm4gX3JlZ2VuZXJhdG9yMi5kZWZhdWx0LndyYXAoZnVuY3Rpb24gX2NhbGxlZTEwJChfY29udGV4dDExKSB7XG4gICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2NvbnRleHQxMS5wcmV2ID0gX2NvbnRleHQxMS5uZXh0KSB7XG4gICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICBfY29udGV4dDExLm5leHQgPSAyO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnVzYi5yZXF1ZXN0RGV2aWNlKHsgZmlsdGVyczogVFJFWk9SX0RFU0NTIH0pO1xuXG4gICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQxMS5zdG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LCBfY2FsbGVlMTAsIHRoaXMpO1xuICAgICAgfSkpO1xuXG4gICAgICBmdW5jdGlvbiByZXF1ZXN0RGV2aWNlKCkge1xuICAgICAgICByZXR1cm4gX3JlZjEwLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXF1ZXN0RGV2aWNlO1xuICAgIH0oKVxuICB9XSk7XG5cbiAgcmV0dXJuIFdlYlVzYlBsdWdpbjtcbn0oKSwgKF9hcHBseURlY29yYXRlZERlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2luaXQnLCBbX2RlYnVnRGVjb3JhdG9yLmRlYnVnSW5PdXRdLCBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdpbml0JyksIF9jbGFzcy5wcm90b3R5cGUpLCBfYXBwbHlEZWNvcmF0ZWREZXNjcmlwdG9yKF9jbGFzcy5wcm90b3R5cGUsICdjb25uZWN0JywgW19kZWJ1Z0RlY29yYXRvci5kZWJ1Z0luT3V0XSwgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnY29ubmVjdCcpLCBfY2xhc3MucHJvdG90eXBlKSwgX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvcihfY2xhc3MucHJvdG90eXBlLCAnZGlzY29ubmVjdCcsIFtfZGVidWdEZWNvcmF0b3IuZGVidWdJbk91dF0sIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoX2NsYXNzLnByb3RvdHlwZSwgJ2Rpc2Nvbm5lY3QnKSwgX2NsYXNzLnByb3RvdHlwZSkpLCBfY2xhc3MpO1xuZXhwb3J0cy5kZWZhdWx0ID0gV2ViVXNiUGx1Z2luO1xubW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzWydkZWZhdWx0J107IiwiXG4vKipcbiAqIGluZGV4LmpzXG4gKlxuICogYSByZXF1ZXN0IEFQSSBjb21wYXRpYmxlIHdpdGggd2luZG93LmZldGNoXG4gKi9cblxudmFyIHBhcnNlX3VybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xudmFyIHJlc29sdmVfdXJsID0gcmVxdWlyZSgndXJsJykucmVzb2x2ZTtcbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIGh0dHBzID0gcmVxdWlyZSgnaHR0cHMnKTtcbnZhciB6bGliID0gcmVxdWlyZSgnemxpYicpO1xudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpO1xuXG52YXIgQm9keSA9IHJlcXVpcmUoJy4vbGliL2JvZHknKTtcbnZhciBSZXNwb25zZSA9IHJlcXVpcmUoJy4vbGliL3Jlc3BvbnNlJyk7XG52YXIgSGVhZGVycyA9IHJlcXVpcmUoJy4vbGliL2hlYWRlcnMnKTtcbnZhciBSZXF1ZXN0ID0gcmVxdWlyZSgnLi9saWIvcmVxdWVzdCcpO1xudmFyIEZldGNoRXJyb3IgPSByZXF1aXJlKCcuL2xpYi9mZXRjaC1lcnJvcicpO1xuXG4vLyBjb21tb25qc1xubW9kdWxlLmV4cG9ydHMgPSBGZXRjaDtcbi8vIGVzNiBkZWZhdWx0IGV4cG9ydCBjb21wYXRpYmlsaXR5XG5tb2R1bGUuZXhwb3J0cy5kZWZhdWx0ID0gbW9kdWxlLmV4cG9ydHM7XG5cbi8qKlxuICogRmV0Y2ggY2xhc3NcbiAqXG4gKiBAcGFyYW0gICBNaXhlZCAgICB1cmwgICBBYnNvbHV0ZSB1cmwgb3IgUmVxdWVzdCBpbnN0YW5jZVxuICogQHBhcmFtICAgT2JqZWN0ICAgb3B0cyAgRmV0Y2ggb3B0aW9uc1xuICogQHJldHVybiAgUHJvbWlzZVxuICovXG5mdW5jdGlvbiBGZXRjaCh1cmwsIG9wdHMpIHtcblxuXHQvLyBhbGxvdyBjYWxsIGFzIGZ1bmN0aW9uXG5cdGlmICghKHRoaXMgaW5zdGFuY2VvZiBGZXRjaCkpXG5cdFx0cmV0dXJuIG5ldyBGZXRjaCh1cmwsIG9wdHMpO1xuXG5cdC8vIGFsbG93IGN1c3RvbSBwcm9taXNlXG5cdGlmICghRmV0Y2guUHJvbWlzZSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbmF0aXZlIHByb21pc2UgbWlzc2luZywgc2V0IEZldGNoLlByb21pc2UgdG8geW91ciBmYXZvcml0ZSBhbHRlcm5hdGl2ZScpO1xuXHR9XG5cblx0Qm9keS5Qcm9taXNlID0gRmV0Y2guUHJvbWlzZTtcblxuXHR2YXIgc2VsZiA9IHRoaXM7XG5cblx0Ly8gd3JhcCBodHRwLnJlcXVlc3QgaW50byBmZXRjaFxuXHRyZXR1cm4gbmV3IEZldGNoLlByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdFx0Ly8gYnVpbGQgcmVxdWVzdCBvYmplY3Rcblx0XHR2YXIgb3B0aW9ucyA9IG5ldyBSZXF1ZXN0KHVybCwgb3B0cyk7XG5cblx0XHRpZiAoIW9wdGlvbnMucHJvdG9jb2wgfHwgIW9wdGlvbnMuaG9zdG5hbWUpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignb25seSBhYnNvbHV0ZSB1cmxzIGFyZSBzdXBwb3J0ZWQnKTtcblx0XHR9XG5cblx0XHRpZiAob3B0aW9ucy5wcm90b2NvbCAhPT0gJ2h0dHA6JyAmJiBvcHRpb25zLnByb3RvY29sICE9PSAnaHR0cHM6Jykge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdvbmx5IGh0dHAocykgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQnKTtcblx0XHR9XG5cblx0XHR2YXIgc2VuZDtcblx0XHRpZiAob3B0aW9ucy5wcm90b2NvbCA9PT0gJ2h0dHBzOicpIHtcblx0XHRcdHNlbmQgPSBodHRwcy5yZXF1ZXN0O1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzZW5kID0gaHR0cC5yZXF1ZXN0O1xuXHRcdH1cblxuXHRcdC8vIG5vcm1hbGl6ZSBoZWFkZXJzXG5cdFx0dmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpO1xuXG5cdFx0aWYgKG9wdGlvbnMuY29tcHJlc3MpIHtcblx0XHRcdGhlYWRlcnMuc2V0KCdhY2NlcHQtZW5jb2RpbmcnLCAnZ3ppcCxkZWZsYXRlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFoZWFkZXJzLmhhcygndXNlci1hZ2VudCcpKSB7XG5cdFx0XHRoZWFkZXJzLnNldCgndXNlci1hZ2VudCcsICdub2RlLWZldGNoLzEuMCAoK2h0dHBzOi8vZ2l0aHViLmNvbS9iaXRpbm4vbm9kZS1mZXRjaCknKTtcblx0XHR9XG5cblx0XHRpZiAoIWhlYWRlcnMuaGFzKCdjb25uZWN0aW9uJykgJiYgIW9wdGlvbnMuYWdlbnQpIHtcblx0XHRcdGhlYWRlcnMuc2V0KCdjb25uZWN0aW9uJywgJ2Nsb3NlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCFoZWFkZXJzLmhhcygnYWNjZXB0JykpIHtcblx0XHRcdGhlYWRlcnMuc2V0KCdhY2NlcHQnLCAnKi8qJyk7XG5cdFx0fVxuXG5cdFx0Ly8gZGV0ZWN0IGZvcm0gZGF0YSBpbnB1dCBmcm9tIGZvcm0tZGF0YSBtb2R1bGUsIHRoaXMgaGFjayBhdm9pZCB0aGUgbmVlZCB0byBwYXNzIG11bHRpcGFydCBoZWFkZXIgbWFudWFsbHlcblx0XHRpZiAoIWhlYWRlcnMuaGFzKCdjb250ZW50LXR5cGUnKSAmJiBvcHRpb25zLmJvZHkgJiYgdHlwZW9mIG9wdGlvbnMuYm9keS5nZXRCb3VuZGFyeSA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0nICsgb3B0aW9ucy5ib2R5LmdldEJvdW5kYXJ5KCkpO1xuXHRcdH1cblxuXHRcdC8vIGJyaW5nIG5vZGUtZmV0Y2ggY2xvc2VyIHRvIGJyb3dzZXIgYmVoYXZpb3IgYnkgc2V0dGluZyBjb250ZW50LWxlbmd0aCBhdXRvbWF0aWNhbGx5XG5cdFx0aWYgKCFoZWFkZXJzLmhhcygnY29udGVudC1sZW5ndGgnKSAmJiAvcG9zdHxwdXR8cGF0Y2h8ZGVsZXRlL2kudGVzdChvcHRpb25zLm1ldGhvZCkpIHtcblx0XHRcdGlmICh0eXBlb2Ygb3B0aW9ucy5ib2R5ID09PSAnc3RyaW5nJykge1xuXHRcdFx0XHRoZWFkZXJzLnNldCgnY29udGVudC1sZW5ndGgnLCBCdWZmZXIuYnl0ZUxlbmd0aChvcHRpb25zLmJvZHkpKTtcblx0XHRcdC8vIGRldGVjdCBmb3JtIGRhdGEgaW5wdXQgZnJvbSBmb3JtLWRhdGEgbW9kdWxlLCB0aGlzIGhhY2sgYXZvaWQgdGhlIG5lZWQgdG8gYWRkIGNvbnRlbnQtbGVuZ3RoIGhlYWRlciBtYW51YWxseVxuXHRcdFx0fSBlbHNlIGlmIChvcHRpb25zLmJvZHkgJiYgdHlwZW9mIG9wdGlvbnMuYm9keS5nZXRMZW5ndGhTeW5jID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRcdC8vIGZvciBmb3JtLWRhdGEgMS54XG5cdFx0XHRcdGlmIChvcHRpb25zLmJvZHkuX2xlbmd0aFJldHJpZXZlcnMgJiYgb3B0aW9ucy5ib2R5Ll9sZW5ndGhSZXRyaWV2ZXJzLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0aGVhZGVycy5zZXQoJ2NvbnRlbnQtbGVuZ3RoJywgb3B0aW9ucy5ib2R5LmdldExlbmd0aFN5bmMoKS50b1N0cmluZygpKTtcblx0XHRcdFx0Ly8gZm9yIGZvcm0tZGF0YSAyLnhcblx0XHRcdFx0fSBlbHNlIGlmIChvcHRpb25zLmJvZHkuaGFzS25vd25MZW5ndGggJiYgb3B0aW9ucy5ib2R5Lmhhc0tub3duTGVuZ3RoKCkpIHtcblx0XHRcdFx0XHRoZWFkZXJzLnNldCgnY29udGVudC1sZW5ndGgnLCBvcHRpb25zLmJvZHkuZ2V0TGVuZ3RoU3luYygpLnRvU3RyaW5nKCkpO1xuXHRcdFx0XHR9XG5cdFx0XHQvLyB0aGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBvbGRlciBub2RlanMgcmVsZWFzZXMgKGJlZm9yZSBpb2pzIG1lcmdlKVxuXHRcdFx0fSBlbHNlIGlmIChvcHRpb25zLmJvZHkgPT09IHVuZGVmaW5lZCB8fCBvcHRpb25zLmJvZHkgPT09IG51bGwpIHtcblx0XHRcdFx0aGVhZGVycy5zZXQoJ2NvbnRlbnQtbGVuZ3RoJywgJzAnKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRvcHRpb25zLmhlYWRlcnMgPSBoZWFkZXJzLnJhdygpO1xuXG5cdFx0Ly8gaHR0cC5yZXF1ZXN0IG9ubHkgc3VwcG9ydCBzdHJpbmcgYXMgaG9zdCBoZWFkZXIsIHRoaXMgaGFjayBtYWtlIGN1c3RvbSBob3N0IGhlYWRlciBwb3NzaWJsZVxuXHRcdGlmIChvcHRpb25zLmhlYWRlcnMuaG9zdCkge1xuXHRcdFx0b3B0aW9ucy5oZWFkZXJzLmhvc3QgPSBvcHRpb25zLmhlYWRlcnMuaG9zdFswXTtcblx0XHR9XG5cblx0XHQvLyBzZW5kIHJlcXVlc3Rcblx0XHR2YXIgcmVxID0gc2VuZChvcHRpb25zKTtcblx0XHR2YXIgcmVxVGltZW91dDtcblxuXHRcdGlmIChvcHRpb25zLnRpbWVvdXQpIHtcblx0XHRcdHJlcS5vbmNlKCdzb2NrZXQnLCBmdW5jdGlvbihzb2NrZXQpIHtcblx0XHRcdFx0cmVxVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG5cdFx0XHRcdFx0cmVxLmFib3J0KCk7XG5cdFx0XHRcdFx0cmVqZWN0KG5ldyBGZXRjaEVycm9yKCduZXR3b3JrIHRpbWVvdXQgYXQ6ICcgKyBvcHRpb25zLnVybCwgJ3JlcXVlc3QtdGltZW91dCcpKTtcblx0XHRcdFx0fSwgb3B0aW9ucy50aW1lb3V0KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdHJlcS5vbignZXJyb3InLCBmdW5jdGlvbihlcnIpIHtcblx0XHRcdGNsZWFyVGltZW91dChyZXFUaW1lb3V0KTtcblx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcigncmVxdWVzdCB0byAnICsgb3B0aW9ucy51cmwgKyAnIGZhaWxlZCwgcmVhc29uOiAnICsgZXJyLm1lc3NhZ2UsICdzeXN0ZW0nLCBlcnIpKTtcblx0XHR9KTtcblxuXHRcdHJlcS5vbigncmVzcG9uc2UnLCBmdW5jdGlvbihyZXMpIHtcblx0XHRcdGNsZWFyVGltZW91dChyZXFUaW1lb3V0KTtcblxuXHRcdFx0Ly8gaGFuZGxlIHJlZGlyZWN0XG5cdFx0XHRpZiAoc2VsZi5pc1JlZGlyZWN0KHJlcy5zdGF0dXNDb2RlKSAmJiBvcHRpb25zLnJlZGlyZWN0ICE9PSAnbWFudWFsJykge1xuXHRcdFx0XHRpZiAob3B0aW9ucy5yZWRpcmVjdCA9PT0gJ2Vycm9yJykge1xuXHRcdFx0XHRcdHJlamVjdChuZXcgRmV0Y2hFcnJvcigncmVkaXJlY3QgbW9kZSBpcyBzZXQgdG8gZXJyb3I6ICcgKyBvcHRpb25zLnVybCwgJ25vLXJlZGlyZWN0JykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChvcHRpb25zLmNvdW50ZXIgPj0gb3B0aW9ucy5mb2xsb3cpIHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoJ21heGltdW0gcmVkaXJlY3QgcmVhY2hlZCBhdDogJyArIG9wdGlvbnMudXJsLCAnbWF4LXJlZGlyZWN0JykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghcmVzLmhlYWRlcnMubG9jYXRpb24pIHtcblx0XHRcdFx0XHRyZWplY3QobmV3IEZldGNoRXJyb3IoJ3JlZGlyZWN0IGxvY2F0aW9uIGhlYWRlciBtaXNzaW5nIGF0OiAnICsgb3B0aW9ucy51cmwsICdpbnZhbGlkLXJlZGlyZWN0JykpO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIHBlciBmZXRjaCBzcGVjLCBmb3IgUE9TVCByZXF1ZXN0IHdpdGggMzAxLzMwMiByZXNwb25zZSwgb3IgYW55IHJlcXVlc3Qgd2l0aCAzMDMgcmVzcG9uc2UsIHVzZSBHRVQgd2hlbiBmb2xsb3dpbmcgcmVkaXJlY3Rcblx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAzMDNcblx0XHRcdFx0XHR8fCAoKHJlcy5zdGF0dXNDb2RlID09PSAzMDEgfHwgcmVzLnN0YXR1c0NvZGUgPT09IDMwMikgJiYgb3B0aW9ucy5tZXRob2QgPT09ICdQT1NUJykpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRvcHRpb25zLm1ldGhvZCA9ICdHRVQnO1xuXHRcdFx0XHRcdGRlbGV0ZSBvcHRpb25zLmJvZHk7XG5cdFx0XHRcdFx0ZGVsZXRlIG9wdGlvbnMuaGVhZGVyc1snY29udGVudC1sZW5ndGgnXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdG9wdGlvbnMuY291bnRlcisrO1xuXG5cdFx0XHRcdHJlc29sdmUoRmV0Y2gocmVzb2x2ZV91cmwob3B0aW9ucy51cmwsIHJlcy5oZWFkZXJzLmxvY2F0aW9uKSwgb3B0aW9ucykpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdC8vIG5vcm1hbGl6ZSBsb2NhdGlvbiBoZWFkZXIgZm9yIG1hbnVhbCByZWRpcmVjdCBtb2RlXG5cdFx0XHR2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKHJlcy5oZWFkZXJzKTtcblx0XHRcdGlmIChvcHRpb25zLnJlZGlyZWN0ID09PSAnbWFudWFsJyAmJiBoZWFkZXJzLmhhcygnbG9jYXRpb24nKSkge1xuXHRcdFx0XHRoZWFkZXJzLnNldCgnbG9jYXRpb24nLCByZXNvbHZlX3VybChvcHRpb25zLnVybCwgaGVhZGVycy5nZXQoJ2xvY2F0aW9uJykpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gcHJlcGFyZSByZXNwb25zZVxuXHRcdFx0dmFyIGJvZHkgPSByZXMucGlwZShuZXcgc3RyZWFtLlBhc3NUaHJvdWdoKCkpO1xuXHRcdFx0dmFyIHJlc3BvbnNlX29wdGlvbnMgPSB7XG5cdFx0XHRcdHVybDogb3B0aW9ucy51cmxcblx0XHRcdFx0LCBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlXG5cdFx0XHRcdCwgc3RhdHVzVGV4dDogcmVzLnN0YXR1c01lc3NhZ2Vcblx0XHRcdFx0LCBoZWFkZXJzOiBoZWFkZXJzXG5cdFx0XHRcdCwgc2l6ZTogb3B0aW9ucy5zaXplXG5cdFx0XHRcdCwgdGltZW91dDogb3B0aW9ucy50aW1lb3V0XG5cdFx0XHR9O1xuXG5cdFx0XHQvLyByZXNwb25zZSBvYmplY3Rcblx0XHRcdHZhciBvdXRwdXQ7XG5cblx0XHRcdC8vIGluIGZvbGxvd2luZyBzY2VuYXJpb3Mgd2UgaWdub3JlIGNvbXByZXNzaW9uIHN1cHBvcnRcblx0XHRcdC8vIDEuIGNvbXByZXNzaW9uIHN1cHBvcnQgaXMgZGlzYWJsZWRcblx0XHRcdC8vIDIuIEhFQUQgcmVxdWVzdFxuXHRcdFx0Ly8gMy4gbm8gY29udGVudC1lbmNvZGluZyBoZWFkZXJcblx0XHRcdC8vIDQuIG5vIGNvbnRlbnQgcmVzcG9uc2UgKDIwNClcblx0XHRcdC8vIDUuIGNvbnRlbnQgbm90IG1vZGlmaWVkIHJlc3BvbnNlICgzMDQpXG5cdFx0XHRpZiAoIW9wdGlvbnMuY29tcHJlc3MgfHwgb3B0aW9ucy5tZXRob2QgPT09ICdIRUFEJyB8fCAhaGVhZGVycy5oYXMoJ2NvbnRlbnQtZW5jb2RpbmcnKSB8fCByZXMuc3RhdHVzQ29kZSA9PT0gMjA0IHx8IHJlcy5zdGF0dXNDb2RlID09PSAzMDQpIHtcblx0XHRcdFx0b3V0cHV0ID0gbmV3IFJlc3BvbnNlKGJvZHksIHJlc3BvbnNlX29wdGlvbnMpO1xuXHRcdFx0XHRyZXNvbHZlKG91dHB1dCk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gb3RoZXJ3aXNlLCBjaGVjayBmb3IgZ3ppcCBvciBkZWZsYXRlXG5cdFx0XHR2YXIgbmFtZSA9IGhlYWRlcnMuZ2V0KCdjb250ZW50LWVuY29kaW5nJyk7XG5cblx0XHRcdC8vIGZvciBnemlwXG5cdFx0XHRpZiAobmFtZSA9PSAnZ3ppcCcgfHwgbmFtZSA9PSAneC1nemlwJykge1xuXHRcdFx0XHRib2R5ID0gYm9keS5waXBlKHpsaWIuY3JlYXRlR3VuemlwKCkpO1xuXHRcdFx0XHRvdXRwdXQgPSBuZXcgUmVzcG9uc2UoYm9keSwgcmVzcG9uc2Vfb3B0aW9ucyk7XG5cdFx0XHRcdHJlc29sdmUob3V0cHV0KTtcblx0XHRcdFx0cmV0dXJuO1xuXG5cdFx0XHQvLyBmb3IgZGVmbGF0ZVxuXHRcdFx0fSBlbHNlIGlmIChuYW1lID09ICdkZWZsYXRlJyB8fCBuYW1lID09ICd4LWRlZmxhdGUnKSB7XG5cdFx0XHRcdC8vIGhhbmRsZSB0aGUgaW5mYW1vdXMgcmF3IGRlZmxhdGUgcmVzcG9uc2UgZnJvbSBvbGQgc2VydmVyc1xuXHRcdFx0XHQvLyBhIGhhY2sgZm9yIG9sZCBJSVMgYW5kIEFwYWNoZSBzZXJ2ZXJzXG5cdFx0XHRcdHZhciByYXcgPSByZXMucGlwZShuZXcgc3RyZWFtLlBhc3NUaHJvdWdoKCkpO1xuXHRcdFx0XHRyYXcub25jZSgnZGF0YScsIGZ1bmN0aW9uKGNodW5rKSB7XG5cdFx0XHRcdFx0Ly8gc2VlIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzc1MTk4Mjhcblx0XHRcdFx0XHRpZiAoKGNodW5rWzBdICYgMHgwRikgPT09IDB4MDgpIHtcblx0XHRcdFx0XHRcdGJvZHkgPSBib2R5LnBpcGUoemxpYi5jcmVhdGVJbmZsYXRlKCkpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRib2R5ID0gYm9keS5waXBlKHpsaWIuY3JlYXRlSW5mbGF0ZVJhdygpKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0b3V0cHV0ID0gbmV3IFJlc3BvbnNlKGJvZHksIHJlc3BvbnNlX29wdGlvbnMpO1xuXHRcdFx0XHRcdHJlc29sdmUob3V0cHV0KTtcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0Ly8gb3RoZXJ3aXNlLCB1c2UgcmVzcG9uc2UgYXMtaXNcblx0XHRcdG91dHB1dCA9IG5ldyBSZXNwb25zZShib2R5LCByZXNwb25zZV9vcHRpb25zKTtcblx0XHRcdHJlc29sdmUob3V0cHV0KTtcblx0XHRcdHJldHVybjtcblx0XHR9KTtcblxuXHRcdC8vIGFjY2VwdCBzdHJpbmcsIGJ1ZmZlciBvciByZWFkYWJsZSBzdHJlYW0gYXMgYm9keVxuXHRcdC8vIHBlciBzcGVjIHdlIHdpbGwgY2FsbCB0b3N0cmluZyBvbiBub24tc3RyZWFtIG9iamVjdHNcblx0XHRpZiAodHlwZW9mIG9wdGlvbnMuYm9keSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHJlcS53cml0ZShvcHRpb25zLmJvZHkpO1xuXHRcdFx0cmVxLmVuZCgpO1xuXHRcdH0gZWxzZSBpZiAob3B0aW9ucy5ib2R5IGluc3RhbmNlb2YgQnVmZmVyKSB7XG5cdFx0XHRyZXEud3JpdGUob3B0aW9ucy5ib2R5KTtcblx0XHRcdHJlcS5lbmQoKTtcblx0XHR9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zLmJvZHkgPT09ICdvYmplY3QnICYmIG9wdGlvbnMuYm9keS5waXBlKSB7XG5cdFx0XHRvcHRpb25zLmJvZHkucGlwZShyZXEpO1xuXHRcdH0gZWxzZSBpZiAodHlwZW9mIG9wdGlvbnMuYm9keSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdHJlcS53cml0ZShvcHRpb25zLmJvZHkudG9TdHJpbmcoKSk7XG5cdFx0XHRyZXEuZW5kKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlcS5lbmQoKTtcblx0XHR9XG5cdH0pO1xuXG59O1xuXG4vKipcbiAqIFJlZGlyZWN0IGNvZGUgbWF0Y2hpbmdcbiAqXG4gKiBAcGFyYW0gICBOdW1iZXIgICBjb2RlICBTdGF0dXMgY29kZVxuICogQHJldHVybiAgQm9vbGVhblxuICovXG5GZXRjaC5wcm90b3R5cGUuaXNSZWRpcmVjdCA9IGZ1bmN0aW9uKGNvZGUpIHtcblx0cmV0dXJuIGNvZGUgPT09IDMwMSB8fCBjb2RlID09PSAzMDIgfHwgY29kZSA9PT0gMzAzIHx8IGNvZGUgPT09IDMwNyB8fCBjb2RlID09PSAzMDg7XG59XG5cbi8vIGV4cG9zZSBQcm9taXNlXG5GZXRjaC5Qcm9taXNlID0gZ2xvYmFsLlByb21pc2U7XG5GZXRjaC5SZXNwb25zZSA9IFJlc3BvbnNlO1xuRmV0Y2guSGVhZGVycyA9IEhlYWRlcnM7XG5GZXRjaC5SZXF1ZXN0ID0gUmVxdWVzdDtcbiIsIi8qISBodHRwczovL210aHMuYmUvcHVueWNvZGUgdjEuNC4xIGJ5IEBtYXRoaWFzICovXG47KGZ1bmN0aW9uKHJvb3QpIHtcblxuXHQvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGVzICovXG5cdHZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiZcblx0XHQhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXHR2YXIgZnJlZU1vZHVsZSA9IHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmXG5cdFx0IW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cdHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWw7XG5cdGlmIChcblx0XHRmcmVlR2xvYmFsLmdsb2JhbCA9PT0gZnJlZUdsb2JhbCB8fFxuXHRcdGZyZWVHbG9iYWwud2luZG93ID09PSBmcmVlR2xvYmFsIHx8XG5cdFx0ZnJlZUdsb2JhbC5zZWxmID09PSBmcmVlR2xvYmFsXG5cdCkge1xuXHRcdHJvb3QgPSBmcmVlR2xvYmFsO1xuXHR9XG5cblx0LyoqXG5cdCAqIFRoZSBgcHVueWNvZGVgIG9iamVjdC5cblx0ICogQG5hbWUgcHVueWNvZGVcblx0ICogQHR5cGUgT2JqZWN0XG5cdCAqL1xuXHR2YXIgcHVueWNvZGUsXG5cblx0LyoqIEhpZ2hlc3QgcG9zaXRpdmUgc2lnbmVkIDMyLWJpdCBmbG9hdCB2YWx1ZSAqL1xuXHRtYXhJbnQgPSAyMTQ3NDgzNjQ3LCAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cblx0LyoqIEJvb3RzdHJpbmcgcGFyYW1ldGVycyAqL1xuXHRiYXNlID0gMzYsXG5cdHRNaW4gPSAxLFxuXHR0TWF4ID0gMjYsXG5cdHNrZXcgPSAzOCxcblx0ZGFtcCA9IDcwMCxcblx0aW5pdGlhbEJpYXMgPSA3Mixcblx0aW5pdGlhbE4gPSAxMjgsIC8vIDB4ODBcblx0ZGVsaW1pdGVyID0gJy0nLCAvLyAnXFx4MkQnXG5cblx0LyoqIFJlZ3VsYXIgZXhwcmVzc2lvbnMgKi9cblx0cmVnZXhQdW55Y29kZSA9IC9eeG4tLS8sXG5cdHJlZ2V4Tm9uQVNDSUkgPSAvW15cXHgyMC1cXHg3RV0vLCAvLyB1bnByaW50YWJsZSBBU0NJSSBjaGFycyArIG5vbi1BU0NJSSBjaGFyc1xuXHRyZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nLCAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cblx0LyoqIEVycm9yIG1lc3NhZ2VzICovXG5cdGVycm9ycyA9IHtcblx0XHQnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuXHRcdCdub3QtYmFzaWMnOiAnSWxsZWdhbCBpbnB1dCA+PSAweDgwIChub3QgYSBiYXNpYyBjb2RlIHBvaW50KScsXG5cdFx0J2ludmFsaWQtaW5wdXQnOiAnSW52YWxpZCBpbnB1dCdcblx0fSxcblxuXHQvKiogQ29udmVuaWVuY2Ugc2hvcnRjdXRzICovXG5cdGJhc2VNaW51c1RNaW4gPSBiYXNlIC0gdE1pbixcblx0Zmxvb3IgPSBNYXRoLmZsb29yLFxuXHRzdHJpbmdGcm9tQ2hhckNvZGUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlLFxuXG5cdC8qKiBUZW1wb3JhcnkgdmFyaWFibGUgKi9cblx0a2V5O1xuXG5cdC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cdC8qKlxuXHQgKiBBIGdlbmVyaWMgZXJyb3IgdXRpbGl0eSBmdW5jdGlvbi5cblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG5cdCAqIEByZXR1cm5zIHtFcnJvcn0gVGhyb3dzIGEgYFJhbmdlRXJyb3JgIHdpdGggdGhlIGFwcGxpY2FibGUgZXJyb3IgbWVzc2FnZS5cblx0ICovXG5cdGZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcblx0XHR0aHJvdyBuZXcgUmFuZ2VFcnJvcihlcnJvcnNbdHlwZV0pO1xuXHR9XG5cblx0LyoqXG5cdCAqIEEgZ2VuZXJpYyBgQXJyYXkjbWFwYCB1dGlsaXR5IGZ1bmN0aW9uLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnkgYXJyYXlcblx0ICogaXRlbS5cblx0ICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gbWFwKGFycmF5LCBmbikge1xuXHRcdHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cdFx0dmFyIHJlc3VsdCA9IFtdO1xuXHRcdHdoaWxlIChsZW5ndGgtLSkge1xuXHRcdFx0cmVzdWx0W2xlbmd0aF0gPSBmbihhcnJheVtsZW5ndGhdKTtcblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fVxuXG5cdC8qKlxuXHQgKiBBIHNpbXBsZSBgQXJyYXkjbWFwYC1saWtlIHdyYXBwZXIgdG8gd29yayB3aXRoIGRvbWFpbiBuYW1lIHN0cmluZ3Mgb3IgZW1haWxcblx0ICogYWRkcmVzc2VzLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBjYWxsYmFjayBUaGUgZnVuY3Rpb24gdGhhdCBnZXRzIGNhbGxlZCBmb3IgZXZlcnlcblx0ICogY2hhcmFjdGVyLlxuXHQgKiBAcmV0dXJucyB7QXJyYXl9IEEgbmV3IHN0cmluZyBvZiBjaGFyYWN0ZXJzIHJldHVybmVkIGJ5IHRoZSBjYWxsYmFja1xuXHQgKiBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcERvbWFpbihzdHJpbmcsIGZuKSB7XG5cdFx0dmFyIHBhcnRzID0gc3RyaW5nLnNwbGl0KCdAJyk7XG5cdFx0dmFyIHJlc3VsdCA9ICcnO1xuXHRcdGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG5cdFx0XHQvLyBJbiBlbWFpbCBhZGRyZXNzZXMsIG9ubHkgdGhlIGRvbWFpbiBuYW1lIHNob3VsZCBiZSBwdW55Y29kZWQuIExlYXZlXG5cdFx0XHQvLyB0aGUgbG9jYWwgcGFydCAoaS5lLiBldmVyeXRoaW5nIHVwIHRvIGBAYCkgaW50YWN0LlxuXHRcdFx0cmVzdWx0ID0gcGFydHNbMF0gKyAnQCc7XG5cdFx0XHRzdHJpbmcgPSBwYXJ0c1sxXTtcblx0XHR9XG5cdFx0Ly8gQXZvaWQgYHNwbGl0KHJlZ2V4KWAgZm9yIElFOCBjb21wYXRpYmlsaXR5LiBTZWUgIzE3LlxuXHRcdHN0cmluZyA9IHN0cmluZy5yZXBsYWNlKHJlZ2V4U2VwYXJhdG9ycywgJ1xceDJFJyk7XG5cdFx0dmFyIGxhYmVscyA9IHN0cmluZy5zcGxpdCgnLicpO1xuXHRcdHZhciBlbmNvZGVkID0gbWFwKGxhYmVscywgZm4pLmpvaW4oJy4nKTtcblx0XHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcblx0fVxuXG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG5cdCAqIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLiBXaGlsZSBKYXZhU2NyaXB0IHVzZXMgVUNTLTIgaW50ZXJuYWxseSxcblx0ICogdGhpcyBmdW5jdGlvbiB3aWxsIGNvbnZlcnQgYSBwYWlyIG9mIHN1cnJvZ2F0ZSBoYWx2ZXMgKGVhY2ggb2Ygd2hpY2hcblx0ICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG5cdCAqIG1hdGNoaW5nIFVURi0xNi5cblx0ICogQHNlZSBgcHVueWNvZGUudWNzMi5lbmNvZGVgXG5cdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuXHQgKiBAbmFtZSBkZWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cblx0ICogQHJldHVybnMge0FycmF5fSBUaGUgbmV3IGFycmF5IG9mIGNvZGUgcG9pbnRzLlxuXHQgKi9cblx0ZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0XHR2YXIgb3V0cHV0ID0gW10sXG5cdFx0ICAgIGNvdW50ZXIgPSAwLFxuXHRcdCAgICBsZW5ndGggPSBzdHJpbmcubGVuZ3RoLFxuXHRcdCAgICB2YWx1ZSxcblx0XHQgICAgZXh0cmE7XG5cdFx0d2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdHZhbHVlID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdGlmICh2YWx1ZSA+PSAweEQ4MDAgJiYgdmFsdWUgPD0gMHhEQkZGICYmIGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRcdFx0Ly8gaGlnaCBzdXJyb2dhdGUsIGFuZCB0aGVyZSBpcyBhIG5leHQgY2hhcmFjdGVyXG5cdFx0XHRcdGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdFx0aWYgKChleHRyYSAmIDB4RkMwMCkgPT0gMHhEQzAwKSB7IC8vIGxvdyBzdXJyb2dhdGVcblx0XHRcdFx0XHRvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vIHVubWF0Y2hlZCBzdXJyb2dhdGU7IG9ubHkgYXBwZW5kIHRoaXMgY29kZSB1bml0LCBpbiBjYXNlIHRoZSBuZXh0XG5cdFx0XHRcdFx0Ly8gY29kZSB1bml0IGlzIHRoZSBoaWdoIHN1cnJvZ2F0ZSBvZiBhIHN1cnJvZ2F0ZSBwYWlyXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0XHRcdGNvdW50ZXItLTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0b3V0cHV0LnB1c2godmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3V0cHV0O1xuXHR9XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBzdHJpbmcgYmFzZWQgb24gYW4gYXJyYXkgb2YgbnVtZXJpYyBjb2RlIHBvaW50cy5cblx0ICogQHNlZSBgcHVueWNvZGUudWNzMi5kZWNvZGVgXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZS51Y3MyXG5cdCAqIEBuYW1lIGVuY29kZVxuXHQgKiBAcGFyYW0ge0FycmF5fSBjb2RlUG9pbnRzIFRoZSBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV3IFVuaWNvZGUgc3RyaW5nIChVQ1MtMikuXG5cdCAqL1xuXHRmdW5jdGlvbiB1Y3MyZW5jb2RlKGFycmF5KSB7XG5cdFx0cmV0dXJuIG1hcChhcnJheSwgZnVuY3Rpb24odmFsdWUpIHtcblx0XHRcdHZhciBvdXRwdXQgPSAnJztcblx0XHRcdGlmICh2YWx1ZSA+IDB4RkZGRikge1xuXHRcdFx0XHR2YWx1ZSAtPSAweDEwMDAwO1xuXHRcdFx0XHRvdXRwdXQgKz0gc3RyaW5nRnJvbUNoYXJDb2RlKHZhbHVlID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKTtcblx0XHRcdFx0dmFsdWUgPSAweERDMDAgfCB2YWx1ZSAmIDB4M0ZGO1xuXHRcdFx0fVxuXHRcdFx0b3V0cHV0ICs9IHN0cmluZ0Zyb21DaGFyQ29kZSh2YWx1ZSk7XG5cdFx0XHRyZXR1cm4gb3V0cHV0O1xuXHRcdH0pLmpvaW4oJycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgYmFzaWMgY29kZSBwb2ludCBpbnRvIGEgZGlnaXQvaW50ZWdlci5cblx0ICogQHNlZSBgZGlnaXRUb0Jhc2ljKClgXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7TnVtYmVyfSBjb2RlUG9pbnQgVGhlIGJhc2ljIG51bWVyaWMgY29kZSBwb2ludCB2YWx1ZS5cblx0ICogQHJldHVybnMge051bWJlcn0gVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50IChmb3IgdXNlIGluXG5cdCAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcblx0ICogdGhlIGNvZGUgcG9pbnQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsdWUuXG5cdCAqL1xuXHRmdW5jdGlvbiBiYXNpY1RvRGlnaXQoY29kZVBvaW50KSB7XG5cdFx0aWYgKGNvZGVQb2ludCAtIDQ4IDwgMTApIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSAyMjtcblx0XHR9XG5cdFx0aWYgKGNvZGVQb2ludCAtIDY1IDwgMjYpIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSA2NTtcblx0XHR9XG5cdFx0aWYgKGNvZGVQb2ludCAtIDk3IDwgMjYpIHtcblx0XHRcdHJldHVybiBjb2RlUG9pbnQgLSA5Nztcblx0XHR9XG5cdFx0cmV0dXJuIGJhc2U7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBkaWdpdC9pbnRlZ2VyIGludG8gYSBiYXNpYyBjb2RlIHBvaW50LlxuXHQgKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtOdW1iZXJ9IGRpZ2l0IFRoZSBudW1lcmljIHZhbHVlIG9mIGEgYmFzaWMgY29kZSBwb2ludC5cblx0ICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3Jcblx0ICogcmVwcmVzZW50aW5nIGludGVnZXJzKSBpcyBgZGlnaXRgLCB3aGljaCBuZWVkcyB0byBiZSBpbiB0aGUgcmFuZ2Vcblx0ICogYDBgIHRvIGBiYXNlIC0gMWAuIElmIGBmbGFnYCBpcyBub24temVybywgdGhlIHVwcGVyY2FzZSBmb3JtIGlzXG5cdCAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG5cdCAqIGlmIGBmbGFnYCBpcyBub24temVybyBhbmQgYGRpZ2l0YCBoYXMgbm8gdXBwZXJjYXNlIGZvcm0uXG5cdCAqL1xuXHRmdW5jdGlvbiBkaWdpdFRvQmFzaWMoZGlnaXQsIGZsYWcpIHtcblx0XHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHRcdC8vIDI2Li4zNSBtYXAgdG8gQVNDSUkgMC4uOVxuXHRcdHJldHVybiBkaWdpdCArIDIyICsgNzUgKiAoZGlnaXQgPCAyNikgLSAoKGZsYWcgIT0gMCkgPDwgNSk7XG5cdH1cblxuXHQvKipcblx0ICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cblx0ICogaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM0OTIjc2VjdGlvbi0zLjRcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIGFkYXB0KGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHRcdHZhciBrID0gMDtcblx0XHRkZWx0YSA9IGZpcnN0VGltZSA/IGZsb29yKGRlbHRhIC8gZGFtcCkgOiBkZWx0YSA+PiAxO1xuXHRcdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0XHRmb3IgKC8qIG5vIGluaXRpYWxpemF0aW9uICovOyBkZWx0YSA+IGJhc2VNaW51c1RNaW4gKiB0TWF4ID4+IDE7IGsgKz0gYmFzZSkge1xuXHRcdFx0ZGVsdGEgPSBmbG9vcihkZWx0YSAvIGJhc2VNaW51c1RNaW4pO1xuXHRcdH1cblx0XHRyZXR1cm4gZmxvb3IoayArIChiYXNlTWludXNUTWluICsgMSkgKiBkZWx0YSAvIChkZWx0YSArIHNrZXcpKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMgdG8gYSBzdHJpbmcgb2YgVW5pY29kZVxuXHQgKiBzeW1ib2xzLlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBkZWNvZGUoaW5wdXQpIHtcblx0XHQvLyBEb24ndCB1c2UgVUNTLTJcblx0XHR2YXIgb3V0cHV0ID0gW10sXG5cdFx0ICAgIGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoLFxuXHRcdCAgICBvdXQsXG5cdFx0ICAgIGkgPSAwLFxuXHRcdCAgICBuID0gaW5pdGlhbE4sXG5cdFx0ICAgIGJpYXMgPSBpbml0aWFsQmlhcyxcblx0XHQgICAgYmFzaWMsXG5cdFx0ICAgIGosXG5cdFx0ICAgIGluZGV4LFxuXHRcdCAgICBvbGRpLFxuXHRcdCAgICB3LFxuXHRcdCAgICBrLFxuXHRcdCAgICBkaWdpdCxcblx0XHQgICAgdCxcblx0XHQgICAgLyoqIENhY2hlZCBjYWxjdWxhdGlvbiByZXN1bHRzICovXG5cdFx0ICAgIGJhc2VNaW51c1Q7XG5cblx0XHQvLyBIYW5kbGUgdGhlIGJhc2ljIGNvZGUgcG9pbnRzOiBsZXQgYGJhc2ljYCBiZSB0aGUgbnVtYmVyIG9mIGlucHV0IGNvZGVcblx0XHQvLyBwb2ludHMgYmVmb3JlIHRoZSBsYXN0IGRlbGltaXRlciwgb3IgYDBgIGlmIHRoZXJlIGlzIG5vbmUsIHRoZW4gY29weVxuXHRcdC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG5cdFx0YmFzaWMgPSBpbnB1dC5sYXN0SW5kZXhPZihkZWxpbWl0ZXIpO1xuXHRcdGlmIChiYXNpYyA8IDApIHtcblx0XHRcdGJhc2ljID0gMDtcblx0XHR9XG5cblx0XHRmb3IgKGogPSAwOyBqIDwgYmFzaWM7ICsraikge1xuXHRcdFx0Ly8gaWYgaXQncyBub3QgYSBiYXNpYyBjb2RlIHBvaW50XG5cdFx0XHRpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG5cdFx0XHRcdGVycm9yKCdub3QtYmFzaWMnKTtcblx0XHRcdH1cblx0XHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHRcdH1cblxuXHRcdC8vIE1haW4gZGVjb2RpbmcgbG9vcDogc3RhcnQganVzdCBhZnRlciB0aGUgbGFzdCBkZWxpbWl0ZXIgaWYgYW55IGJhc2ljIGNvZGVcblx0XHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdFx0Zm9yIChpbmRleCA9IGJhc2ljID4gMCA/IGJhc2ljICsgMSA6IDA7IGluZGV4IDwgaW5wdXRMZW5ndGg7IC8qIG5vIGZpbmFsIGV4cHJlc3Npb24gKi8pIHtcblxuXHRcdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdFx0Ly8gRGVjb2RlIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIgaW50byBgZGVsdGFgLFxuXHRcdFx0Ly8gd2hpY2ggZ2V0cyBhZGRlZCB0byBgaWAuIFRoZSBvdmVyZmxvdyBjaGVja2luZyBpcyBlYXNpZXJcblx0XHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0XHQvLyB2YWx1ZSBhdCB0aGUgZW5kIHRvIG9idGFpbiBgZGVsdGFgLlxuXHRcdFx0Zm9yIChvbGRpID0gaSwgdyA9IDEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXG5cdFx0XHRcdGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuXHRcdFx0XHRcdGVycm9yKCdpbnZhbGlkLWlucHV0Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuXHRcdFx0XHRpZiAoZGlnaXQgPj0gYmFzZSB8fCBkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpICs9IGRpZ2l0ICogdztcblx0XHRcdFx0dCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cblx0XHRcdFx0aWYgKGRpZ2l0IDwgdCkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YmFzZU1pbnVzVCA9IGJhc2UgLSB0O1xuXHRcdFx0XHRpZiAodyA+IGZsb29yKG1heEludCAvIGJhc2VNaW51c1QpKSB7XG5cdFx0XHRcdFx0ZXJyb3IoJ292ZXJmbG93Jyk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR3ICo9IGJhc2VNaW51c1Q7XG5cblx0XHRcdH1cblxuXHRcdFx0b3V0ID0gb3V0cHV0Lmxlbmd0aCArIDE7XG5cdFx0XHRiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuXHRcdFx0Ly8gYGlgIHdhcyBzdXBwb3NlZCB0byB3cmFwIGFyb3VuZCBmcm9tIGBvdXRgIHRvIGAwYCxcblx0XHRcdC8vIGluY3JlbWVudGluZyBgbmAgZWFjaCB0aW1lLCBzbyB3ZSdsbCBmaXggdGhhdCBub3c6XG5cdFx0XHRpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG5cdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRuICs9IGZsb29yKGkgLyBvdXQpO1xuXHRcdFx0aSAlPSBvdXQ7XG5cblx0XHRcdC8vIEluc2VydCBgbmAgYXQgcG9zaXRpb24gYGlgIG9mIHRoZSBvdXRwdXRcblx0XHRcdG91dHB1dC5zcGxpY2UoaSsrLCAwLCBuKTtcblxuXHRcdH1cblxuXHRcdHJldHVybiB1Y3MyZW5jb2RlKG91dHB1dCk7XG5cdH1cblxuXHQvKipcblx0ICogQ29udmVydHMgYSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzIChlLmcuIGEgZG9tYWluIG5hbWUgbGFiZWwpIHRvIGFcblx0ICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgc3RyaW5nIG9mIFVuaWNvZGUgc3ltYm9scy5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuXHQgKi9cblx0ZnVuY3Rpb24gZW5jb2RlKGlucHV0KSB7XG5cdFx0dmFyIG4sXG5cdFx0ICAgIGRlbHRhLFxuXHRcdCAgICBoYW5kbGVkQ1BDb3VudCxcblx0XHQgICAgYmFzaWNMZW5ndGgsXG5cdFx0ICAgIGJpYXMsXG5cdFx0ICAgIGosXG5cdFx0ICAgIG0sXG5cdFx0ICAgIHEsXG5cdFx0ICAgIGssXG5cdFx0ICAgIHQsXG5cdFx0ICAgIGN1cnJlbnRWYWx1ZSxcblx0XHQgICAgb3V0cHV0ID0gW10sXG5cdFx0ICAgIC8qKiBgaW5wdXRMZW5ndGhgIHdpbGwgaG9sZCB0aGUgbnVtYmVyIG9mIGNvZGUgcG9pbnRzIGluIGBpbnB1dGAuICovXG5cdFx0ICAgIGlucHV0TGVuZ3RoLFxuXHRcdCAgICAvKiogQ2FjaGVkIGNhbGN1bGF0aW9uIHJlc3VsdHMgKi9cblx0XHQgICAgaGFuZGxlZENQQ291bnRQbHVzT25lLFxuXHRcdCAgICBiYXNlTWludXNULFxuXHRcdCAgICBxTWludXNUO1xuXG5cdFx0Ly8gQ29udmVydCB0aGUgaW5wdXQgaW4gVUNTLTIgdG8gVW5pY29kZVxuXHRcdGlucHV0ID0gdWNzMmRlY29kZShpbnB1dCk7XG5cblx0XHQvLyBDYWNoZSB0aGUgbGVuZ3RoXG5cdFx0aW5wdXRMZW5ndGggPSBpbnB1dC5sZW5ndGg7XG5cblx0XHQvLyBJbml0aWFsaXplIHRoZSBzdGF0ZVxuXHRcdG4gPSBpbml0aWFsTjtcblx0XHRkZWx0YSA9IDA7XG5cdFx0YmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdFx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50c1xuXHRcdGZvciAoaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG5cdFx0XHRjdXJyZW50VmFsdWUgPSBpbnB1dFtqXTtcblx0XHRcdGlmIChjdXJyZW50VmFsdWUgPCAweDgwKSB7XG5cdFx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoID0gb3V0cHV0Lmxlbmd0aDtcblxuXHRcdC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXHRcdC8vIGBiYXNpY0xlbmd0aGAgaXMgdGhlIG51bWJlciBvZiBiYXNpYyBjb2RlIHBvaW50cy5cblxuXHRcdC8vIEZpbmlzaCB0aGUgYmFzaWMgc3RyaW5nIC0gaWYgaXQgaXMgbm90IGVtcHR5IC0gd2l0aCBhIGRlbGltaXRlclxuXHRcdGlmIChiYXNpY0xlbmd0aCkge1xuXHRcdFx0b3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcblx0XHR9XG5cblx0XHQvLyBNYWluIGVuY29kaW5nIGxvb3A6XG5cdFx0d2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuXHRcdFx0Ly8gQWxsIG5vbi1iYXNpYyBjb2RlIHBvaW50cyA8IG4gaGF2ZSBiZWVuIGhhbmRsZWQgYWxyZWFkeS4gRmluZCB0aGUgbmV4dFxuXHRcdFx0Ly8gbGFyZ2VyIG9uZTpcblx0XHRcdGZvciAobSA9IG1heEludCwgaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG5cdFx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXHRcdFx0XHRpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuXHRcdFx0XHRcdG0gPSBjdXJyZW50VmFsdWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Ly8gSW5jcmVhc2UgYGRlbHRhYCBlbm91Z2ggdG8gYWR2YW5jZSB0aGUgZGVjb2RlcidzIDxuLGk+IHN0YXRlIHRvIDxtLDA+LFxuXHRcdFx0Ly8gYnV0IGd1YXJkIGFnYWluc3Qgb3ZlcmZsb3dcblx0XHRcdGhhbmRsZWRDUENvdW50UGx1c09uZSA9IGhhbmRsZWRDUENvdW50ICsgMTtcblx0XHRcdGlmIChtIC0gbiA+IGZsb29yKChtYXhJbnQgLSBkZWx0YSkgLyBoYW5kbGVkQ1BDb3VudFBsdXNPbmUpKSB7XG5cdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWx0YSArPSAobSAtIG4pICogaGFuZGxlZENQQ291bnRQbHVzT25lO1xuXHRcdFx0biA9IG07XG5cblx0XHRcdGZvciAoaiA9IDA7IGogPCBpbnB1dExlbmd0aDsgKytqKSB7XG5cdFx0XHRcdGN1cnJlbnRWYWx1ZSA9IGlucHV0W2pdO1xuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPCBuICYmICsrZGVsdGEgPiBtYXhJbnQpIHtcblx0XHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChjdXJyZW50VmFsdWUgPT0gbikge1xuXHRcdFx0XHRcdC8vIFJlcHJlc2VudCBkZWx0YSBhcyBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyXG5cdFx0XHRcdFx0Zm9yIChxID0gZGVsdGEsIGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXHRcdFx0XHRcdFx0dCA9IGsgPD0gYmlhcyA/IHRNaW4gOiAoayA+PSBiaWFzICsgdE1heCA/IHRNYXggOiBrIC0gYmlhcyk7XG5cdFx0XHRcdFx0XHRpZiAocSA8IHQpIHtcblx0XHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRxTWludXNUID0gcSAtIHQ7XG5cdFx0XHRcdFx0XHRiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0XHRvdXRwdXQucHVzaChcblx0XHRcdFx0XHRcdFx0c3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyh0ICsgcU1pbnVzVCAlIGJhc2VNaW51c1QsIDApKVxuXHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdHEgPSBmbG9vcihxTWludXNUIC8gYmFzZU1pbnVzVCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRcdGJpYXMgPSBhZGFwdChkZWx0YSwgaGFuZGxlZENQQ291bnRQbHVzT25lLCBoYW5kbGVkQ1BDb3VudCA9PSBiYXNpY0xlbmd0aCk7XG5cdFx0XHRcdFx0ZGVsdGEgPSAwO1xuXHRcdFx0XHRcdCsraGFuZGxlZENQQ291bnQ7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0KytkZWx0YTtcblx0XHRcdCsrbjtcblxuXHRcdH1cblx0XHRyZXR1cm4gb3V0cHV0LmpvaW4oJycpO1xuXHR9XG5cblx0LyoqXG5cdCAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3Ncblx0ICogdG8gVW5pY29kZS4gT25seSB0aGUgUHVueWNvZGVkIHBhcnRzIG9mIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCwgaS5lLlxuXHQgKiBpdCBkb2Vzbid0IG1hdHRlciBpZiB5b3UgY2FsbCBpdCBvbiBhIHN0cmluZyB0aGF0IGhhcyBhbHJlYWR5IGJlZW5cblx0ICogY29udmVydGVkIHRvIFVuaWNvZGUuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlZCBkb21haW4gbmFtZSBvciBlbWFpbCBhZGRyZXNzIHRvXG5cdCAqIGNvbnZlcnQgdG8gVW5pY29kZS5cblx0ICogQHJldHVybnMge1N0cmluZ30gVGhlIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFB1bnljb2RlXG5cdCAqIHN0cmluZy5cblx0ICovXG5cdGZ1bmN0aW9uIHRvVW5pY29kZShpbnB1dCkge1xuXHRcdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdFx0cmV0dXJuIHJlZ2V4UHVueWNvZGUudGVzdChzdHJpbmcpXG5cdFx0XHRcdD8gZGVjb2RlKHN0cmluZy5zbGljZSg0KS50b0xvd2VyQ2FzZSgpKVxuXHRcdFx0XHQ6IHN0cmluZztcblx0XHR9KTtcblx0fVxuXG5cdC8qKlxuXHQgKiBDb252ZXJ0cyBhIFVuaWNvZGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRvbWFpbiBuYW1lIG9yIGFuIGVtYWlsIGFkZHJlc3MgdG9cblx0ICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG5cdCAqIGkuZS4gaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgd2l0aCBhIGRvbWFpbiB0aGF0J3MgYWxyZWFkeSBpblxuXHQgKiBBU0NJSS5cblx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBpbnB1dCBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0byBjb252ZXJ0LCBhcyBhXG5cdCAqIFVuaWNvZGUgc3RyaW5nLlxuXHQgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG5cdCAqIGVtYWlsIGFkZHJlc3MuXG5cdCAqL1xuXHRmdW5jdGlvbiB0b0FTQ0lJKGlucHV0KSB7XG5cdFx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0XHRyZXR1cm4gcmVnZXhOb25BU0NJSS50ZXN0KHN0cmluZylcblx0XHRcdFx0PyAneG4tLScgKyBlbmNvZGUoc3RyaW5nKVxuXHRcdFx0XHQ6IHN0cmluZztcblx0XHR9KTtcblx0fVxuXG5cdC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuXG5cdC8qKiBEZWZpbmUgdGhlIHB1YmxpYyBBUEkgKi9cblx0cHVueWNvZGUgPSB7XG5cdFx0LyoqXG5cdFx0ICogQSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IFB1bnljb2RlLmpzIHZlcnNpb24gbnVtYmVyLlxuXHRcdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHRcdCAqIEB0eXBlIFN0cmluZ1xuXHRcdCAqL1xuXHRcdCd2ZXJzaW9uJzogJzEuNC4xJyxcblx0XHQvKipcblx0XHQgKiBBbiBvYmplY3Qgb2YgbWV0aG9kcyB0byBjb252ZXJ0IGZyb20gSmF2YVNjcmlwdCdzIGludGVybmFsIGNoYXJhY3RlclxuXHRcdCAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG5cdFx0ICogQHNlZSA8aHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtZW5jb2Rpbmc+XG5cdFx0ICogQG1lbWJlck9mIHB1bnljb2RlXG5cdFx0ICogQHR5cGUgT2JqZWN0XG5cdFx0ICovXG5cdFx0J3VjczInOiB7XG5cdFx0XHQnZGVjb2RlJzogdWNzMmRlY29kZSxcblx0XHRcdCdlbmNvZGUnOiB1Y3MyZW5jb2RlXG5cdFx0fSxcblx0XHQnZGVjb2RlJzogZGVjb2RlLFxuXHRcdCdlbmNvZGUnOiBlbmNvZGUsXG5cdFx0J3RvQVNDSUknOiB0b0FTQ0lJLFxuXHRcdCd0b1VuaWNvZGUnOiB0b1VuaWNvZGVcblx0fTtcblxuXHQvKiogRXhwb3NlIGBwdW55Y29kZWAgKi9cblx0Ly8gU29tZSBBTUQgYnVpbGQgb3B0aW1pemVycywgbGlrZSByLmpzLCBjaGVjayBmb3Igc3BlY2lmaWMgY29uZGl0aW9uIHBhdHRlcm5zXG5cdC8vIGxpa2UgdGhlIGZvbGxvd2luZzpcblx0aWYgKFxuXHRcdHR5cGVvZiBkZWZpbmUgPT0gJ2Z1bmN0aW9uJyAmJlxuXHRcdHR5cGVvZiBkZWZpbmUuYW1kID09ICdvYmplY3QnICYmXG5cdFx0ZGVmaW5lLmFtZFxuXHQpIHtcblx0XHRkZWZpbmUoJ3B1bnljb2RlJywgZnVuY3Rpb24oKSB7XG5cdFx0XHRyZXR1cm4gcHVueWNvZGU7XG5cdFx0fSk7XG5cdH0gZWxzZSBpZiAoZnJlZUV4cG9ydHMgJiYgZnJlZU1vZHVsZSkge1xuXHRcdGlmIChtb2R1bGUuZXhwb3J0cyA9PSBmcmVlRXhwb3J0cykge1xuXHRcdFx0Ly8gaW4gTm9kZS5qcywgaW8uanMsIG9yIFJpbmdvSlMgdjAuOC4wK1xuXHRcdFx0ZnJlZU1vZHVsZS5leHBvcnRzID0gcHVueWNvZGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGluIE5hcndoYWwgb3IgUmluZ29KUyB2MC43LjAtXG5cdFx0XHRmb3IgKGtleSBpbiBwdW55Y29kZSkge1xuXHRcdFx0XHRwdW55Y29kZS5oYXNPd25Qcm9wZXJ0eShrZXkpICYmIChmcmVlRXhwb3J0c1trZXldID0gcHVueWNvZGVba2V5XSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9IGVsc2Uge1xuXHRcdC8vIGluIFJoaW5vIG9yIGEgd2ViIGJyb3dzZXJcblx0XHRyb290LnB1bnljb2RlID0gcHVueWNvZGU7XG5cdH1cblxufSh0aGlzKSk7XG4iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBpc1N0cmluZzogZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIHR5cGVvZihhcmcpID09PSAnc3RyaW5nJztcbiAgfSxcbiAgaXNPYmplY3Q6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YoYXJnKSA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xuICB9LFxuICBpc051bGw6IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBhcmcgPT09IG51bGw7XG4gIH0sXG4gIGlzTnVsbE9yVW5kZWZpbmVkOiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gYXJnID09IG51bGw7XG4gIH1cbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuZGVjb2RlID0gZXhwb3J0cy5wYXJzZSA9IHJlcXVpcmUoJy4vZGVjb2RlJyk7XG5leHBvcnRzLmVuY29kZSA9IGV4cG9ydHMuc3RyaW5naWZ5ID0gcmVxdWlyZSgnLi9lbmNvZGUnKTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbi8vIElmIG9iai5oYXNPd25Qcm9wZXJ0eSBoYXMgYmVlbiBvdmVycmlkZGVuLCB0aGVuIGNhbGxpbmdcbi8vIG9iai5oYXNPd25Qcm9wZXJ0eShwcm9wKSB3aWxsIGJyZWFrLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vam95ZW50L25vZGUvaXNzdWVzLzE3MDdcbmZ1bmN0aW9uIGhhc093blByb3BlcnR5KG9iaiwgcHJvcCkge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24ocXMsIHNlcCwgZXEsIG9wdGlvbnMpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIHZhciBvYmogPSB7fTtcblxuICBpZiAodHlwZW9mIHFzICE9PSAnc3RyaW5nJyB8fCBxcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgdmFyIHJlZ2V4cCA9IC9cXCsvZztcbiAgcXMgPSBxcy5zcGxpdChzZXApO1xuXG4gIHZhciBtYXhLZXlzID0gMTAwMDtcbiAgaWYgKG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMubWF4S2V5cyA9PT0gJ251bWJlcicpIHtcbiAgICBtYXhLZXlzID0gb3B0aW9ucy5tYXhLZXlzO1xuICB9XG5cbiAgdmFyIGxlbiA9IHFzLmxlbmd0aDtcbiAgLy8gbWF4S2V5cyA8PSAwIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIG5vdCBsaW1pdCBrZXlzIGNvdW50XG4gIGlmIChtYXhLZXlzID4gMCAmJiBsZW4gPiBtYXhLZXlzKSB7XG4gICAgbGVuID0gbWF4S2V5cztcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICB2YXIgeCA9IHFzW2ldLnJlcGxhY2UocmVnZXhwLCAnJTIwJyksXG4gICAgICAgIGlkeCA9IHguaW5kZXhPZihlcSksXG4gICAgICAgIGtzdHIsIHZzdHIsIGssIHY7XG5cbiAgICBpZiAoaWR4ID49IDApIHtcbiAgICAgIGtzdHIgPSB4LnN1YnN0cigwLCBpZHgpO1xuICAgICAgdnN0ciA9IHguc3Vic3RyKGlkeCArIDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICBrc3RyID0geDtcbiAgICAgIHZzdHIgPSAnJztcbiAgICB9XG5cbiAgICBrID0gZGVjb2RlVVJJQ29tcG9uZW50KGtzdHIpO1xuICAgIHYgPSBkZWNvZGVVUklDb21wb25lbnQodnN0cik7XG5cbiAgICBpZiAoIWhhc093blByb3BlcnR5KG9iaiwgaykpIHtcbiAgICAgIG9ialtrXSA9IHY7XG4gICAgfSBlbHNlIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgIG9ialtrXS5wdXNoKHYpO1xuICAgIH0gZWxzZSB7XG4gICAgICBvYmpba10gPSBbb2JqW2tdLCB2XTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgc3RyaW5naWZ5UHJpbWl0aXZlID0gZnVuY3Rpb24odikge1xuICBzd2l0Y2ggKHR5cGVvZiB2KSB7XG4gICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIHJldHVybiB2O1xuXG4gICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICByZXR1cm4gdiA/ICd0cnVlJyA6ICdmYWxzZSc7XG5cbiAgICBjYXNlICdudW1iZXInOlxuICAgICAgcmV0dXJuIGlzRmluaXRlKHYpID8gdiA6ICcnO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAnJztcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihvYmosIHNlcCwgZXEsIG5hbWUpIHtcbiAgc2VwID0gc2VwIHx8ICcmJztcbiAgZXEgPSBlcSB8fCAnPSc7XG4gIGlmIChvYmogPT09IG51bGwpIHtcbiAgICBvYmogPSB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbWFwKG9iamVjdEtleXMob2JqKSwgZnVuY3Rpb24oaykge1xuICAgICAgdmFyIGtzID0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShrKSkgKyBlcTtcbiAgICAgIGlmIChpc0FycmF5KG9ialtrXSkpIHtcbiAgICAgICAgcmV0dXJuIG1hcChvYmpba10sIGZ1bmN0aW9uKHYpIHtcbiAgICAgICAgICByZXR1cm4ga3MgKyBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKHYpKTtcbiAgICAgICAgfSkuam9pbihzZXApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGtzICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShvYmpba10pKTtcbiAgICAgIH1cbiAgICB9KS5qb2luKHNlcCk7XG5cbiAgfVxuXG4gIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ2lmeVByaW1pdGl2ZShuYW1lKSkgKyBlcSArXG4gICAgICAgICBlbmNvZGVVUklDb21wb25lbnQoc3RyaW5naWZ5UHJpbWl0aXZlKG9iaikpO1xufTtcblxudmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5IHx8IGZ1bmN0aW9uICh4cykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHhzKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn07XG5cbmZ1bmN0aW9uIG1hcCAoeHMsIGYpIHtcbiAgaWYgKHhzLm1hcCkgcmV0dXJuIHhzLm1hcChmKTtcbiAgdmFyIHJlcyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHhzLmxlbmd0aDsgaSsrKSB7XG4gICAgcmVzLnB1c2goZih4c1tpXSwgaSkpO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbnZhciBvYmplY3RLZXlzID0gT2JqZWN0LmtleXMgfHwgZnVuY3Rpb24gKG9iaikge1xuICB2YXIgcmVzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgcmVzLnB1c2goa2V5KTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcbiIsInZhciBjYXBhYmlsaXR5ID0gcmVxdWlyZSgnLi9jYXBhYmlsaXR5JylcbnZhciBpbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJylcbnZhciByZXNwb25zZSA9IHJlcXVpcmUoJy4vcmVzcG9uc2UnKVxudmFyIHN0cmVhbSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbScpXG52YXIgdG9BcnJheUJ1ZmZlciA9IHJlcXVpcmUoJ3RvLWFycmF5YnVmZmVyJylcblxudmFyIEluY29taW5nTWVzc2FnZSA9IHJlc3BvbnNlLkluY29taW5nTWVzc2FnZVxudmFyIHJTdGF0ZXMgPSByZXNwb25zZS5yZWFkeVN0YXRlc1xuXG5mdW5jdGlvbiBkZWNpZGVNb2RlIChwcmVmZXJCaW5hcnksIHVzZUZldGNoKSB7XG5cdGlmIChjYXBhYmlsaXR5LmZldGNoICYmIHVzZUZldGNoKSB7XG5cdFx0cmV0dXJuICdmZXRjaCdcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5Lm1vemNodW5rZWRhcnJheWJ1ZmZlcikge1xuXHRcdHJldHVybiAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInXG5cdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5tc3N0cmVhbSkge1xuXHRcdHJldHVybiAnbXMtc3RyZWFtJ1xuXHR9IGVsc2UgaWYgKGNhcGFiaWxpdHkuYXJyYXlidWZmZXIgJiYgcHJlZmVyQmluYXJ5KSB7XG5cdFx0cmV0dXJuICdhcnJheWJ1ZmZlcidcblx0fSBlbHNlIGlmIChjYXBhYmlsaXR5LnZiQXJyYXkgJiYgcHJlZmVyQmluYXJ5KSB7XG5cdFx0cmV0dXJuICd0ZXh0OnZiYXJyYXknXG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuICd0ZXh0J1xuXHR9XG59XG5cbnZhciBDbGllbnRSZXF1ZXN0ID0gbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob3B0cykge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0c3RyZWFtLldyaXRhYmxlLmNhbGwoc2VsZilcblxuXHRzZWxmLl9vcHRzID0gb3B0c1xuXHRzZWxmLl9ib2R5ID0gW11cblx0c2VsZi5faGVhZGVycyA9IHt9XG5cdGlmIChvcHRzLmF1dGgpXG5cdFx0c2VsZi5zZXRIZWFkZXIoJ0F1dGhvcml6YXRpb24nLCAnQmFzaWMgJyArIG5ldyBCdWZmZXIob3B0cy5hdXRoKS50b1N0cmluZygnYmFzZTY0JykpXG5cdE9iamVjdC5rZXlzKG9wdHMuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuXHRcdHNlbGYuc2V0SGVhZGVyKG5hbWUsIG9wdHMuaGVhZGVyc1tuYW1lXSlcblx0fSlcblxuXHR2YXIgcHJlZmVyQmluYXJ5XG5cdHZhciB1c2VGZXRjaCA9IHRydWVcblx0aWYgKG9wdHMubW9kZSA9PT0gJ2Rpc2FibGUtZmV0Y2gnIHx8ICgncmVxdWVzdFRpbWVvdXQnIGluIG9wdHMgJiYgIWNhcGFiaWxpdHkuYWJvcnRDb250cm9sbGVyKSkge1xuXHRcdC8vIElmIHRoZSB1c2Ugb2YgWEhSIHNob3VsZCBiZSBwcmVmZXJyZWQuIE5vdCB0eXBpY2FsbHkgbmVlZGVkLlxuXHRcdHVzZUZldGNoID0gZmFsc2Vcblx0XHRwcmVmZXJCaW5hcnkgPSB0cnVlXG5cdH0gZWxzZSBpZiAob3B0cy5tb2RlID09PSAncHJlZmVyLXN0cmVhbWluZycpIHtcblx0XHQvLyBJZiBzdHJlYW1pbmcgaXMgYSBoaWdoIHByaW9yaXR5IGJ1dCBiaW5hcnkgY29tcGF0aWJpbGl0eSBhbmRcblx0XHQvLyB0aGUgYWNjdXJhY3kgb2YgdGhlICdjb250ZW50LXR5cGUnIGhlYWRlciBhcmVuJ3Rcblx0XHRwcmVmZXJCaW5hcnkgPSBmYWxzZVxuXHR9IGVsc2UgaWYgKG9wdHMubW9kZSA9PT0gJ2FsbG93LXdyb25nLWNvbnRlbnQtdHlwZScpIHtcblx0XHQvLyBJZiBzdHJlYW1pbmcgaXMgbW9yZSBpbXBvcnRhbnQgdGhhbiBwcmVzZXJ2aW5nIHRoZSAnY29udGVudC10eXBlJyBoZWFkZXJcblx0XHRwcmVmZXJCaW5hcnkgPSAhY2FwYWJpbGl0eS5vdmVycmlkZU1pbWVUeXBlXG5cdH0gZWxzZSBpZiAoIW9wdHMubW9kZSB8fCBvcHRzLm1vZGUgPT09ICdkZWZhdWx0JyB8fCBvcHRzLm1vZGUgPT09ICdwcmVmZXItZmFzdCcpIHtcblx0XHQvLyBVc2UgYmluYXJ5IGlmIHRleHQgc3RyZWFtaW5nIG1heSBjb3JydXB0IGRhdGEgb3IgdGhlIGNvbnRlbnQtdHlwZSBoZWFkZXIsIG9yIGZvciBzcGVlZFxuXHRcdHByZWZlckJpbmFyeSA9IHRydWVcblx0fSBlbHNlIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgdmFsdWUgZm9yIG9wdHMubW9kZScpXG5cdH1cblx0c2VsZi5fbW9kZSA9IGRlY2lkZU1vZGUocHJlZmVyQmluYXJ5LCB1c2VGZXRjaClcblx0c2VsZi5fZmV0Y2hUaW1lciA9IG51bGxcblxuXHRzZWxmLm9uKCdmaW5pc2gnLCBmdW5jdGlvbiAoKSB7XG5cdFx0c2VsZi5fb25GaW5pc2goKVxuXHR9KVxufVxuXG5pbmhlcml0cyhDbGllbnRSZXF1ZXN0LCBzdHJlYW0uV3JpdGFibGUpXG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldEhlYWRlciA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblx0dmFyIGxvd2VyTmFtZSA9IG5hbWUudG9Mb3dlckNhc2UoKVxuXHQvLyBUaGlzIGNoZWNrIGlzIG5vdCBuZWNlc3NhcnksIGJ1dCBpdCBwcmV2ZW50cyB3YXJuaW5ncyBmcm9tIGJyb3dzZXJzIGFib3V0IHNldHRpbmcgdW5zYWZlXG5cdC8vIGhlYWRlcnMuIFRvIGJlIGhvbmVzdCBJJ20gbm90IGVudGlyZWx5IHN1cmUgaGlkaW5nIHRoZXNlIHdhcm5pbmdzIGlzIGEgZ29vZCB0aGluZywgYnV0XG5cdC8vIGh0dHAtYnJvd3NlcmlmeSBkaWQgaXQsIHNvIEkgd2lsbCB0b28uXG5cdGlmICh1bnNhZmVIZWFkZXJzLmluZGV4T2YobG93ZXJOYW1lKSAhPT0gLTEpXG5cdFx0cmV0dXJuXG5cblx0c2VsZi5faGVhZGVyc1tsb3dlck5hbWVdID0ge1xuXHRcdG5hbWU6IG5hbWUsXG5cdFx0dmFsdWU6IHZhbHVlXG5cdH1cbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZ2V0SGVhZGVyID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0dmFyIGhlYWRlciA9IHRoaXMuX2hlYWRlcnNbbmFtZS50b0xvd2VyQ2FzZSgpXVxuXHRpZiAoaGVhZGVyKVxuXHRcdHJldHVybiBoZWFkZXIudmFsdWVcblx0cmV0dXJuIG51bGxcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUucmVtb3ZlSGVhZGVyID0gZnVuY3Rpb24gKG5hbWUpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cdGRlbGV0ZSBzZWxmLl9oZWFkZXJzW25hbWUudG9Mb3dlckNhc2UoKV1cbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX29uRmluaXNoID0gZnVuY3Rpb24gKCkge1xuXHR2YXIgc2VsZiA9IHRoaXNcblxuXHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdHJldHVyblxuXHR2YXIgb3B0cyA9IHNlbGYuX29wdHNcblxuXHR2YXIgaGVhZGVyc09iaiA9IHNlbGYuX2hlYWRlcnNcblx0dmFyIGJvZHkgPSBudWxsXG5cdGlmIChvcHRzLm1ldGhvZCAhPT0gJ0dFVCcgJiYgb3B0cy5tZXRob2QgIT09ICdIRUFEJykge1xuXHRcdGlmIChjYXBhYmlsaXR5LmFycmF5YnVmZmVyKSB7XG5cdFx0XHRib2R5ID0gdG9BcnJheUJ1ZmZlcihCdWZmZXIuY29uY2F0KHNlbGYuX2JvZHkpKVxuXHRcdH0gZWxzZSBpZiAoY2FwYWJpbGl0eS5ibG9iQ29uc3RydWN0b3IpIHtcblx0XHRcdGJvZHkgPSBuZXcgZ2xvYmFsLkJsb2Ioc2VsZi5fYm9keS5tYXAoZnVuY3Rpb24gKGJ1ZmZlcikge1xuXHRcdFx0XHRyZXR1cm4gdG9BcnJheUJ1ZmZlcihidWZmZXIpXG5cdFx0XHR9KSwge1xuXHRcdFx0XHR0eXBlOiAoaGVhZGVyc09ialsnY29udGVudC10eXBlJ10gfHwge30pLnZhbHVlIHx8ICcnXG5cdFx0XHR9KVxuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBnZXQgdXRmOCBzdHJpbmdcblx0XHRcdGJvZHkgPSBCdWZmZXIuY29uY2F0KHNlbGYuX2JvZHkpLnRvU3RyaW5nKClcblx0XHR9XG5cdH1cblxuXHQvLyBjcmVhdGUgZmxhdHRlbmVkIGxpc3Qgb2YgaGVhZGVyc1xuXHR2YXIgaGVhZGVyc0xpc3QgPSBbXVxuXHRPYmplY3Qua2V5cyhoZWFkZXJzT2JqKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXlOYW1lKSB7XG5cdFx0dmFyIG5hbWUgPSBoZWFkZXJzT2JqW2tleU5hbWVdLm5hbWVcblx0XHR2YXIgdmFsdWUgPSBoZWFkZXJzT2JqW2tleU5hbWVdLnZhbHVlXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG5cdFx0XHR2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uICh2KSB7XG5cdFx0XHRcdGhlYWRlcnNMaXN0LnB1c2goW25hbWUsIHZdKVxuXHRcdFx0fSlcblx0XHR9IGVsc2Uge1xuXHRcdFx0aGVhZGVyc0xpc3QucHVzaChbbmFtZSwgdmFsdWVdKVxuXHRcdH1cblx0fSlcblxuXHRpZiAoc2VsZi5fbW9kZSA9PT0gJ2ZldGNoJykge1xuXHRcdHZhciBzaWduYWwgPSBudWxsXG5cdFx0dmFyIGZldGNoVGltZXIgPSBudWxsXG5cdFx0aWYgKGNhcGFiaWxpdHkuYWJvcnRDb250cm9sbGVyKSB7XG5cdFx0XHR2YXIgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKVxuXHRcdFx0c2lnbmFsID0gY29udHJvbGxlci5zaWduYWxcblx0XHRcdHNlbGYuX2ZldGNoQWJvcnRDb250cm9sbGVyID0gY29udHJvbGxlclxuXG5cdFx0XHRpZiAoJ3JlcXVlc3RUaW1lb3V0JyBpbiBvcHRzICYmIG9wdHMucmVxdWVzdFRpbWVvdXQgIT09IDApIHtcblx0XHRcdFx0c2VsZi5fZmV0Y2hUaW1lciA9IGdsb2JhbC5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRzZWxmLmVtaXQoJ3JlcXVlc3RUaW1lb3V0Jylcblx0XHRcdFx0XHRpZiAoc2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIpXG5cdFx0XHRcdFx0XHRzZWxmLl9mZXRjaEFib3J0Q29udHJvbGxlci5hYm9ydCgpXG5cdFx0XHRcdH0sIG9wdHMucmVxdWVzdFRpbWVvdXQpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0Z2xvYmFsLmZldGNoKHNlbGYuX29wdHMudXJsLCB7XG5cdFx0XHRtZXRob2Q6IHNlbGYuX29wdHMubWV0aG9kLFxuXHRcdFx0aGVhZGVyczogaGVhZGVyc0xpc3QsXG5cdFx0XHRib2R5OiBib2R5IHx8IHVuZGVmaW5lZCxcblx0XHRcdG1vZGU6ICdjb3JzJyxcblx0XHRcdGNyZWRlbnRpYWxzOiBvcHRzLndpdGhDcmVkZW50aWFscyA/ICdpbmNsdWRlJyA6ICdzYW1lLW9yaWdpbicsXG5cdFx0XHRzaWduYWw6IHNpZ25hbFxuXHRcdH0pLnRoZW4oZnVuY3Rpb24gKHJlc3BvbnNlKSB7XG5cdFx0XHRzZWxmLl9mZXRjaFJlc3BvbnNlID0gcmVzcG9uc2Vcblx0XHRcdHNlbGYuX2Nvbm5lY3QoKVxuXHRcdH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcblx0XHRcdGdsb2JhbC5jbGVhclRpbWVvdXQoc2VsZi5fZmV0Y2hUaW1lcilcblx0XHRcdGlmICghc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRzZWxmLmVtaXQoJ2Vycm9yJywgcmVhc29uKVxuXHRcdH0pXG5cdH0gZWxzZSB7XG5cdFx0dmFyIHhociA9IHNlbGYuX3hociA9IG5ldyBnbG9iYWwuWE1MSHR0cFJlcXVlc3QoKVxuXHRcdHRyeSB7XG5cdFx0XHR4aHIub3BlbihzZWxmLl9vcHRzLm1ldGhvZCwgc2VsZi5fb3B0cy51cmwsIHRydWUpXG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHRwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0XHRcdH0pXG5cdFx0XHRyZXR1cm5cblx0XHR9XG5cblx0XHQvLyBDYW4ndCBzZXQgcmVzcG9uc2VUeXBlIG9uIHJlYWxseSBvbGQgYnJvd3NlcnNcblx0XHRpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKVxuXHRcdFx0eGhyLnJlc3BvbnNlVHlwZSA9IHNlbGYuX21vZGUuc3BsaXQoJzonKVswXVxuXG5cdFx0aWYgKCd3aXRoQ3JlZGVudGlhbHMnIGluIHhocilcblx0XHRcdHhoci53aXRoQ3JlZGVudGlhbHMgPSAhIW9wdHMud2l0aENyZWRlbnRpYWxzXG5cblx0XHRpZiAoc2VsZi5fbW9kZSA9PT0gJ3RleHQnICYmICdvdmVycmlkZU1pbWVUeXBlJyBpbiB4aHIpXG5cdFx0XHR4aHIub3ZlcnJpZGVNaW1lVHlwZSgndGV4dC9wbGFpbjsgY2hhcnNldD14LXVzZXItZGVmaW5lZCcpXG5cblx0XHRpZiAoJ3JlcXVlc3RUaW1lb3V0JyBpbiBvcHRzKSB7XG5cdFx0XHR4aHIudGltZW91dCA9IG9wdHMucmVxdWVzdFRpbWVvdXRcblx0XHRcdHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuZW1pdCgncmVxdWVzdFRpbWVvdXQnKVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGhlYWRlcnNMaXN0LmZvckVhY2goZnVuY3Rpb24gKGhlYWRlcikge1xuXHRcdFx0eGhyLnNldFJlcXVlc3RIZWFkZXIoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG5cdFx0fSlcblxuXHRcdHNlbGYuX3Jlc3BvbnNlID0gbnVsbFxuXHRcdHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRzd2l0Y2ggKHhoci5yZWFkeVN0YXRlKSB7XG5cdFx0XHRcdGNhc2UgclN0YXRlcy5MT0FESU5HOlxuXHRcdFx0XHRjYXNlIHJTdGF0ZXMuRE9ORTpcblx0XHRcdFx0XHRzZWxmLl9vblhIUlByb2dyZXNzKClcblx0XHRcdFx0XHRicmVha1xuXHRcdFx0fVxuXHRcdH1cblx0XHQvLyBOZWNlc3NhcnkgZm9yIHN0cmVhbWluZyBpbiBGaXJlZm94LCBzaW5jZSB4aHIucmVzcG9uc2UgaXMgT05MWSBkZWZpbmVkXG5cdFx0Ly8gaW4gb25wcm9ncmVzcywgbm90IGluIG9ucmVhZHlzdGF0ZWNoYW5nZSB3aXRoIHhoci5yZWFkeVN0YXRlID0gM1xuXHRcdGlmIChzZWxmLl9tb2RlID09PSAnbW96LWNodW5rZWQtYXJyYXlidWZmZXInKSB7XG5cdFx0XHR4aHIub25wcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0c2VsZi5fb25YSFJQcm9ncmVzcygpXG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0eGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG5cdFx0XHRpZiAoc2VsZi5fZGVzdHJveWVkKVxuXHRcdFx0XHRyZXR1cm5cblx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ1hIUiBlcnJvcicpKVxuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHR4aHIuc2VuZChib2R5KVxuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0cHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpXG5cdFx0XHR9KVxuXHRcdFx0cmV0dXJuXG5cdFx0fVxuXHR9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHhoci5zdGF0dXMgaXMgcmVhZGFibGUgYW5kIG5vbi16ZXJvLCBpbmRpY2F0aW5nIG5vIGVycm9yLlxuICogRXZlbiB0aG91Z2ggdGhlIHNwZWMgc2F5cyBpdCBzaG91bGQgYmUgYXZhaWxhYmxlIGluIHJlYWR5U3RhdGUgMyxcbiAqIGFjY2Vzc2luZyBpdCB0aHJvd3MgYW4gZXhjZXB0aW9uIGluIElFOFxuICovXG5mdW5jdGlvbiBzdGF0dXNWYWxpZCAoeGhyKSB7XG5cdHRyeSB7XG5cdFx0dmFyIHN0YXR1cyA9IHhoci5zdGF0dXNcblx0XHRyZXR1cm4gKHN0YXR1cyAhPT0gbnVsbCAmJiBzdGF0dXMgIT09IDApXG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRyZXR1cm4gZmFsc2Vcblx0fVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5fb25YSFJQcm9ncmVzcyA9IGZ1bmN0aW9uICgpIHtcblx0dmFyIHNlbGYgPSB0aGlzXG5cblx0aWYgKCFzdGF0dXNWYWxpZChzZWxmLl94aHIpIHx8IHNlbGYuX2Rlc3Ryb3llZClcblx0XHRyZXR1cm5cblxuXHRpZiAoIXNlbGYuX3Jlc3BvbnNlKVxuXHRcdHNlbGYuX2Nvbm5lY3QoKVxuXG5cdHNlbGYuX3Jlc3BvbnNlLl9vblhIUlByb2dyZXNzKClcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuX2Nvbm5lY3QgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdGlmIChzZWxmLl9kZXN0cm95ZWQpXG5cdFx0cmV0dXJuXG5cblx0c2VsZi5fcmVzcG9uc2UgPSBuZXcgSW5jb21pbmdNZXNzYWdlKHNlbGYuX3hociwgc2VsZi5fZmV0Y2hSZXNwb25zZSwgc2VsZi5fbW9kZSwgc2VsZi5fZmV0Y2hUaW1lcilcblx0c2VsZi5fcmVzcG9uc2Uub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XG5cdFx0c2VsZi5lbWl0KCdlcnJvcicsIGVycilcblx0fSlcblxuXHRzZWxmLmVtaXQoJ3Jlc3BvbnNlJywgc2VsZi5fcmVzcG9uc2UpXG59XG5cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXG5cdHNlbGYuX2JvZHkucHVzaChjaHVuaylcblx0Y2IoKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5hYm9ydCA9IENsaWVudFJlcXVlc3QucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRzZWxmLl9kZXN0cm95ZWQgPSB0cnVlXG5cdGdsb2JhbC5jbGVhclRpbWVvdXQoc2VsZi5fZmV0Y2hUaW1lcilcblx0aWYgKHNlbGYuX3Jlc3BvbnNlKVxuXHRcdHNlbGYuX3Jlc3BvbnNlLl9kZXN0cm95ZWQgPSB0cnVlXG5cdGlmIChzZWxmLl94aHIpXG5cdFx0c2VsZi5feGhyLmFib3J0KClcblx0ZWxzZSBpZiAoc2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIpXG5cdFx0c2VsZi5fZmV0Y2hBYm9ydENvbnRyb2xsZXIuYWJvcnQoKVxufVxuXG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbiAoZGF0YSwgZW5jb2RpbmcsIGNiKSB7XG5cdHZhciBzZWxmID0gdGhpc1xuXHRpZiAodHlwZW9mIGRhdGEgPT09ICdmdW5jdGlvbicpIHtcblx0XHRjYiA9IGRhdGFcblx0XHRkYXRhID0gdW5kZWZpbmVkXG5cdH1cblxuXHRzdHJlYW0uV3JpdGFibGUucHJvdG90eXBlLmVuZC5jYWxsKHNlbGYsIGRhdGEsIGVuY29kaW5nLCBjYilcbn1cblxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuZmx1c2hIZWFkZXJzID0gZnVuY3Rpb24gKCkge31cbkNsaWVudFJlcXVlc3QucHJvdG90eXBlLnNldFRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7fVxuQ2xpZW50UmVxdWVzdC5wcm90b3R5cGUuc2V0Tm9EZWxheSA9IGZ1bmN0aW9uICgpIHt9XG5DbGllbnRSZXF1ZXN0LnByb3RvdHlwZS5zZXRTb2NrZXRLZWVwQWxpdmUgPSBmdW5jdGlvbiAoKSB7fVxuXG4vLyBUYWtlbiBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL1hNTEh0dHBSZXF1ZXN0LyN0aGUtc2V0cmVxdWVzdGhlYWRlciUyOCUyOS1tZXRob2RcbnZhciB1bnNhZmVIZWFkZXJzID0gW1xuXHQnYWNjZXB0LWNoYXJzZXQnLFxuXHQnYWNjZXB0LWVuY29kaW5nJyxcblx0J2FjY2Vzcy1jb250cm9sLXJlcXVlc3QtaGVhZGVycycsXG5cdCdhY2Nlc3MtY29udHJvbC1yZXF1ZXN0LW1ldGhvZCcsXG5cdCdjb25uZWN0aW9uJyxcblx0J2NvbnRlbnQtbGVuZ3RoJyxcblx0J2Nvb2tpZScsXG5cdCdjb29raWUyJyxcblx0J2RhdGUnLFxuXHQnZG50Jyxcblx0J2V4cGVjdCcsXG5cdCdob3N0Jyxcblx0J2tlZXAtYWxpdmUnLFxuXHQnb3JpZ2luJyxcblx0J3JlZmVyZXInLFxuXHQndGUnLFxuXHQndHJhaWxlcicsXG5cdCd0cmFuc2Zlci1lbmNvZGluZycsXG5cdCd1cGdyYWRlJyxcblx0J3ZpYSdcbl1cbiIsInZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXJcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYnVmKSB7XG5cdC8vIElmIHRoZSBidWZmZXIgaXMgYmFja2VkIGJ5IGEgVWludDhBcnJheSwgYSBmYXN0ZXIgdmVyc2lvbiB3aWxsIHdvcmtcblx0aWYgKGJ1ZiBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcblx0XHQvLyBJZiB0aGUgYnVmZmVyIGlzbid0IGEgc3ViYXJyYXksIHJldHVybiB0aGUgdW5kZXJseWluZyBBcnJheUJ1ZmZlclxuXHRcdGlmIChidWYuYnl0ZU9mZnNldCA9PT0gMCAmJiBidWYuYnl0ZUxlbmd0aCA9PT0gYnVmLmJ1ZmZlci5ieXRlTGVuZ3RoKSB7XG5cdFx0XHRyZXR1cm4gYnVmLmJ1ZmZlclxuXHRcdH0gZWxzZSBpZiAodHlwZW9mIGJ1Zi5idWZmZXIuc2xpY2UgPT09ICdmdW5jdGlvbicpIHtcblx0XHRcdC8vIE90aGVyd2lzZSB3ZSBuZWVkIHRvIGdldCBhIHByb3BlciBjb3B5XG5cdFx0XHRyZXR1cm4gYnVmLmJ1ZmZlci5zbGljZShidWYuYnl0ZU9mZnNldCwgYnVmLmJ5dGVPZmZzZXQgKyBidWYuYnl0ZUxlbmd0aClcblx0XHR9XG5cdH1cblxuXHRpZiAoQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHtcblx0XHQvLyBUaGlzIGlzIHRoZSBzbG93IHZlcnNpb24gdGhhdCB3aWxsIHdvcmsgd2l0aCBhbnkgQnVmZmVyXG5cdFx0Ly8gaW1wbGVtZW50YXRpb24gKGV2ZW4gaW4gb2xkIGJyb3dzZXJzKVxuXHRcdHZhciBhcnJheUNvcHkgPSBuZXcgVWludDhBcnJheShidWYubGVuZ3RoKVxuXHRcdHZhciBsZW4gPSBidWYubGVuZ3RoXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0YXJyYXlDb3B5W2ldID0gYnVmW2ldXG5cdFx0fVxuXHRcdHJldHVybiBhcnJheUNvcHkuYnVmZmVyXG5cdH0gZWxzZSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcblx0fVxufVxuIiwibW9kdWxlLmV4cG9ydHMgPSBleHRlbmRcblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gZXh0ZW5kKCkge1xuICAgIHZhciB0YXJnZXQgPSB7fVxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXVxuXG4gICAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0ge1xuICBcIjEwMFwiOiBcIkNvbnRpbnVlXCIsXG4gIFwiMTAxXCI6IFwiU3dpdGNoaW5nIFByb3RvY29sc1wiLFxuICBcIjEwMlwiOiBcIlByb2Nlc3NpbmdcIixcbiAgXCIyMDBcIjogXCJPS1wiLFxuICBcIjIwMVwiOiBcIkNyZWF0ZWRcIixcbiAgXCIyMDJcIjogXCJBY2NlcHRlZFwiLFxuICBcIjIwM1wiOiBcIk5vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uXCIsXG4gIFwiMjA0XCI6IFwiTm8gQ29udGVudFwiLFxuICBcIjIwNVwiOiBcIlJlc2V0IENvbnRlbnRcIixcbiAgXCIyMDZcIjogXCJQYXJ0aWFsIENvbnRlbnRcIixcbiAgXCIyMDdcIjogXCJNdWx0aS1TdGF0dXNcIixcbiAgXCIyMDhcIjogXCJBbHJlYWR5IFJlcG9ydGVkXCIsXG4gIFwiMjI2XCI6IFwiSU0gVXNlZFwiLFxuICBcIjMwMFwiOiBcIk11bHRpcGxlIENob2ljZXNcIixcbiAgXCIzMDFcIjogXCJNb3ZlZCBQZXJtYW5lbnRseVwiLFxuICBcIjMwMlwiOiBcIkZvdW5kXCIsXG4gIFwiMzAzXCI6IFwiU2VlIE90aGVyXCIsXG4gIFwiMzA0XCI6IFwiTm90IE1vZGlmaWVkXCIsXG4gIFwiMzA1XCI6IFwiVXNlIFByb3h5XCIsXG4gIFwiMzA3XCI6IFwiVGVtcG9yYXJ5IFJlZGlyZWN0XCIsXG4gIFwiMzA4XCI6IFwiUGVybWFuZW50IFJlZGlyZWN0XCIsXG4gIFwiNDAwXCI6IFwiQmFkIFJlcXVlc3RcIixcbiAgXCI0MDFcIjogXCJVbmF1dGhvcml6ZWRcIixcbiAgXCI0MDJcIjogXCJQYXltZW50IFJlcXVpcmVkXCIsXG4gIFwiNDAzXCI6IFwiRm9yYmlkZGVuXCIsXG4gIFwiNDA0XCI6IFwiTm90IEZvdW5kXCIsXG4gIFwiNDA1XCI6IFwiTWV0aG9kIE5vdCBBbGxvd2VkXCIsXG4gIFwiNDA2XCI6IFwiTm90IEFjY2VwdGFibGVcIixcbiAgXCI0MDdcIjogXCJQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZFwiLFxuICBcIjQwOFwiOiBcIlJlcXVlc3QgVGltZW91dFwiLFxuICBcIjQwOVwiOiBcIkNvbmZsaWN0XCIsXG4gIFwiNDEwXCI6IFwiR29uZVwiLFxuICBcIjQxMVwiOiBcIkxlbmd0aCBSZXF1aXJlZFwiLFxuICBcIjQxMlwiOiBcIlByZWNvbmRpdGlvbiBGYWlsZWRcIixcbiAgXCI0MTNcIjogXCJQYXlsb2FkIFRvbyBMYXJnZVwiLFxuICBcIjQxNFwiOiBcIlVSSSBUb28gTG9uZ1wiLFxuICBcIjQxNVwiOiBcIlVuc3VwcG9ydGVkIE1lZGlhIFR5cGVcIixcbiAgXCI0MTZcIjogXCJSYW5nZSBOb3QgU2F0aXNmaWFibGVcIixcbiAgXCI0MTdcIjogXCJFeHBlY3RhdGlvbiBGYWlsZWRcIixcbiAgXCI0MThcIjogXCJJJ20gYSB0ZWFwb3RcIixcbiAgXCI0MjFcIjogXCJNaXNkaXJlY3RlZCBSZXF1ZXN0XCIsXG4gIFwiNDIyXCI6IFwiVW5wcm9jZXNzYWJsZSBFbnRpdHlcIixcbiAgXCI0MjNcIjogXCJMb2NrZWRcIixcbiAgXCI0MjRcIjogXCJGYWlsZWQgRGVwZW5kZW5jeVwiLFxuICBcIjQyNVwiOiBcIlVub3JkZXJlZCBDb2xsZWN0aW9uXCIsXG4gIFwiNDI2XCI6IFwiVXBncmFkZSBSZXF1aXJlZFwiLFxuICBcIjQyOFwiOiBcIlByZWNvbmRpdGlvbiBSZXF1aXJlZFwiLFxuICBcIjQyOVwiOiBcIlRvbyBNYW55IFJlcXVlc3RzXCIsXG4gIFwiNDMxXCI6IFwiUmVxdWVzdCBIZWFkZXIgRmllbGRzIFRvbyBMYXJnZVwiLFxuICBcIjQ1MVwiOiBcIlVuYXZhaWxhYmxlIEZvciBMZWdhbCBSZWFzb25zXCIsXG4gIFwiNTAwXCI6IFwiSW50ZXJuYWwgU2VydmVyIEVycm9yXCIsXG4gIFwiNTAxXCI6IFwiTm90IEltcGxlbWVudGVkXCIsXG4gIFwiNTAyXCI6IFwiQmFkIEdhdGV3YXlcIixcbiAgXCI1MDNcIjogXCJTZXJ2aWNlIFVuYXZhaWxhYmxlXCIsXG4gIFwiNTA0XCI6IFwiR2F0ZXdheSBUaW1lb3V0XCIsXG4gIFwiNTA1XCI6IFwiSFRUUCBWZXJzaW9uIE5vdCBTdXBwb3J0ZWRcIixcbiAgXCI1MDZcIjogXCJWYXJpYW50IEFsc28gTmVnb3RpYXRlc1wiLFxuICBcIjUwN1wiOiBcIkluc3VmZmljaWVudCBTdG9yYWdlXCIsXG4gIFwiNTA4XCI6IFwiTG9vcCBEZXRlY3RlZFwiLFxuICBcIjUwOVwiOiBcIkJhbmR3aWR0aCBMaW1pdCBFeGNlZWRlZFwiLFxuICBcIjUxMFwiOiBcIk5vdCBFeHRlbmRlZFwiLFxuICBcIjUxMVwiOiBcIk5ldHdvcmsgQXV0aGVudGljYXRpb24gUmVxdWlyZWRcIlxufVxuIiwidmFyIGh0dHAgPSByZXF1aXJlKCdodHRwJylcbnZhciB1cmwgPSByZXF1aXJlKCd1cmwnKVxuXG52YXIgaHR0cHMgPSBtb2R1bGUuZXhwb3J0c1xuXG5mb3IgKHZhciBrZXkgaW4gaHR0cCkge1xuICBpZiAoaHR0cC5oYXNPd25Qcm9wZXJ0eShrZXkpKSBodHRwc1trZXldID0gaHR0cFtrZXldXG59XG5cbmh0dHBzLnJlcXVlc3QgPSBmdW5jdGlvbiAocGFyYW1zLCBjYikge1xuICBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpXG4gIHJldHVybiBodHRwLnJlcXVlc3QuY2FsbCh0aGlzLCBwYXJhbXMsIGNiKVxufVxuXG5odHRwcy5nZXQgPSBmdW5jdGlvbiAocGFyYW1zLCBjYikge1xuICBwYXJhbXMgPSB2YWxpZGF0ZVBhcmFtcyhwYXJhbXMpXG4gIHJldHVybiBodHRwLmdldC5jYWxsKHRoaXMsIHBhcmFtcywgY2IpXG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGFyYW1zIChwYXJhbXMpIHtcbiAgaWYgKHR5cGVvZiBwYXJhbXMgPT09ICdzdHJpbmcnKSB7XG4gICAgcGFyYW1zID0gdXJsLnBhcnNlKHBhcmFtcylcbiAgfVxuICBpZiAoIXBhcmFtcy5wcm90b2NvbCkge1xuICAgIHBhcmFtcy5wcm90b2NvbCA9ICdodHRwczonXG4gIH1cbiAgaWYgKHBhcmFtcy5wcm90b2NvbCAhPT0gJ2h0dHBzOicpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Byb3RvY29sIFwiJyArIHBhcmFtcy5wcm90b2NvbCArICdcIiBub3Qgc3VwcG9ydGVkLiBFeHBlY3RlZCBcImh0dHBzOlwiJylcbiAgfVxuICByZXR1cm4gcGFyYW1zXG59XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdidWZmZXInKS5CdWZmZXI7XG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnc3RyZWFtJykuVHJhbnNmb3JtO1xudmFyIGJpbmRpbmcgPSByZXF1aXJlKCcuL2JpbmRpbmcnKTtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpLm9rO1xudmFyIGtNYXhMZW5ndGggPSByZXF1aXJlKCdidWZmZXInKS5rTWF4TGVuZ3RoO1xudmFyIGtSYW5nZUVycm9yTWVzc2FnZSA9ICdDYW5ub3QgY3JlYXRlIGZpbmFsIEJ1ZmZlci4gSXQgd291bGQgYmUgbGFyZ2VyICcgKyAndGhhbiAweCcgKyBrTWF4TGVuZ3RoLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnO1xuXG4vLyB6bGliIGRvZXNuJ3QgcHJvdmlkZSB0aGVzZSwgc28ga2x1ZGdlIHRoZW0gaW4gZm9sbG93aW5nIHRoZSBzYW1lXG4vLyBjb25zdCBuYW1pbmcgc2NoZW1lIHpsaWIgdXNlcy5cbmJpbmRpbmcuWl9NSU5fV0lORE9XQklUUyA9IDg7XG5iaW5kaW5nLlpfTUFYX1dJTkRPV0JJVFMgPSAxNTtcbmJpbmRpbmcuWl9ERUZBVUxUX1dJTkRPV0JJVFMgPSAxNTtcblxuLy8gZmV3ZXIgdGhhbiA2NCBieXRlcyBwZXIgY2h1bmsgaXMgc3R1cGlkLlxuLy8gdGVjaG5pY2FsbHkgaXQgY291bGQgd29yayB3aXRoIGFzIGZldyBhcyA4LCBidXQgZXZlbiA2NCBieXRlc1xuLy8gaXMgYWJzdXJkbHkgbG93LiAgVXN1YWxseSBhIE1CIG9yIG1vcmUgaXMgYmVzdC5cbmJpbmRpbmcuWl9NSU5fQ0hVTksgPSA2NDtcbmJpbmRpbmcuWl9NQVhfQ0hVTksgPSBJbmZpbml0eTtcbmJpbmRpbmcuWl9ERUZBVUxUX0NIVU5LID0gMTYgKiAxMDI0O1xuXG5iaW5kaW5nLlpfTUlOX01FTUxFVkVMID0gMTtcbmJpbmRpbmcuWl9NQVhfTUVNTEVWRUwgPSA5O1xuYmluZGluZy5aX0RFRkFVTFRfTUVNTEVWRUwgPSA4O1xuXG5iaW5kaW5nLlpfTUlOX0xFVkVMID0gLTE7XG5iaW5kaW5nLlpfTUFYX0xFVkVMID0gOTtcbmJpbmRpbmcuWl9ERUZBVUxUX0xFVkVMID0gYmluZGluZy5aX0RFRkFVTFRfQ09NUFJFU1NJT047XG5cbi8vIGV4cG9zZSBhbGwgdGhlIHpsaWIgY29uc3RhbnRzXG52YXIgYmtleXMgPSBPYmplY3Qua2V5cyhiaW5kaW5nKTtcbmZvciAodmFyIGJrID0gMDsgYmsgPCBia2V5cy5sZW5ndGg7IGJrKyspIHtcbiAgdmFyIGJrZXkgPSBia2V5c1tia107XG4gIGlmIChia2V5Lm1hdGNoKC9eWi8pKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGJrZXksIHtcbiAgICAgIGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiBiaW5kaW5nW2JrZXldLCB3cml0YWJsZTogZmFsc2VcbiAgICB9KTtcbiAgfVxufVxuXG4vLyB0cmFuc2xhdGlvbiB0YWJsZSBmb3IgcmV0dXJuIGNvZGVzLlxudmFyIGNvZGVzID0ge1xuICBaX09LOiBiaW5kaW5nLlpfT0ssXG4gIFpfU1RSRUFNX0VORDogYmluZGluZy5aX1NUUkVBTV9FTkQsXG4gIFpfTkVFRF9ESUNUOiBiaW5kaW5nLlpfTkVFRF9ESUNULFxuICBaX0VSUk5POiBiaW5kaW5nLlpfRVJSTk8sXG4gIFpfU1RSRUFNX0VSUk9SOiBiaW5kaW5nLlpfU1RSRUFNX0VSUk9SLFxuICBaX0RBVEFfRVJST1I6IGJpbmRpbmcuWl9EQVRBX0VSUk9SLFxuICBaX01FTV9FUlJPUjogYmluZGluZy5aX01FTV9FUlJPUixcbiAgWl9CVUZfRVJST1I6IGJpbmRpbmcuWl9CVUZfRVJST1IsXG4gIFpfVkVSU0lPTl9FUlJPUjogYmluZGluZy5aX1ZFUlNJT05fRVJST1Jcbn07XG5cbnZhciBja2V5cyA9IE9iamVjdC5rZXlzKGNvZGVzKTtcbmZvciAodmFyIGNrID0gMDsgY2sgPCBja2V5cy5sZW5ndGg7IGNrKyspIHtcbiAgdmFyIGNrZXkgPSBja2V5c1tja107XG4gIGNvZGVzW2NvZGVzW2NrZXldXSA9IGNrZXk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnY29kZXMnLCB7XG4gIGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiBPYmplY3QuZnJlZXplKGNvZGVzKSwgd3JpdGFibGU6IGZhbHNlXG59KTtcblxuZXhwb3J0cy5EZWZsYXRlID0gRGVmbGF0ZTtcbmV4cG9ydHMuSW5mbGF0ZSA9IEluZmxhdGU7XG5leHBvcnRzLkd6aXAgPSBHemlwO1xuZXhwb3J0cy5HdW56aXAgPSBHdW56aXA7XG5leHBvcnRzLkRlZmxhdGVSYXcgPSBEZWZsYXRlUmF3O1xuZXhwb3J0cy5JbmZsYXRlUmF3ID0gSW5mbGF0ZVJhdztcbmV4cG9ydHMuVW56aXAgPSBVbnppcDtcblxuZXhwb3J0cy5jcmVhdGVEZWZsYXRlID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBEZWZsYXRlKG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVJbmZsYXRlID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBJbmZsYXRlKG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVEZWZsYXRlUmF3ID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBEZWZsYXRlUmF3KG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVJbmZsYXRlUmF3ID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBJbmZsYXRlUmF3KG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVHemlwID0gZnVuY3Rpb24gKG8pIHtcbiAgcmV0dXJuIG5ldyBHemlwKG8pO1xufTtcblxuZXhwb3J0cy5jcmVhdGVHdW56aXAgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IEd1bnppcChvKTtcbn07XG5cbmV4cG9ydHMuY3JlYXRlVW56aXAgPSBmdW5jdGlvbiAobykge1xuICByZXR1cm4gbmV3IFVuemlwKG8pO1xufTtcblxuLy8gQ29udmVuaWVuY2UgbWV0aG9kcy5cbi8vIGNvbXByZXNzL2RlY29tcHJlc3MgYSBzdHJpbmcgb3IgYnVmZmVyIGluIG9uZSBzdGVwLlxuZXhwb3J0cy5kZWZsYXRlID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgRGVmbGF0ZShvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmRlZmxhdGVTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IERlZmxhdGUob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmd6aXAgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzLCBjYWxsYmFjaykge1xuICBpZiAodHlwZW9mIG9wdHMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYWxsYmFjayA9IG9wdHM7XG4gICAgb3B0cyA9IHt9O1xuICB9XG4gIHJldHVybiB6bGliQnVmZmVyKG5ldyBHemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMuZ3ppcFN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgR3ppcChvcHRzKSwgYnVmZmVyKTtcbn07XG5cbmV4cG9ydHMuZGVmbGF0ZVJhdyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IERlZmxhdGVSYXcob3B0cyksIGJ1ZmZlciwgY2FsbGJhY2spO1xufTtcblxuZXhwb3J0cy5kZWZsYXRlUmF3U3luYyA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMpIHtcbiAgcmV0dXJuIHpsaWJCdWZmZXJTeW5jKG5ldyBEZWZsYXRlUmF3KG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy51bnppcCA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IFVuemlwKG9wdHMpLCBidWZmZXIsIGNhbGxiYWNrKTtcbn07XG5cbmV4cG9ydHMudW56aXBTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IFVuemlwKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgSW5mbGF0ZShvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmluZmxhdGVTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEluZmxhdGUob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5leHBvcnRzLmd1bnppcCA9IGZ1bmN0aW9uIChidWZmZXIsIG9wdHMsIGNhbGxiYWNrKSB7XG4gIGlmICh0eXBlb2Ygb3B0cyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNhbGxiYWNrID0gb3B0cztcbiAgICBvcHRzID0ge307XG4gIH1cbiAgcmV0dXJuIHpsaWJCdWZmZXIobmV3IEd1bnppcChvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmd1bnppcFN5bmMgPSBmdW5jdGlvbiAoYnVmZmVyLCBvcHRzKSB7XG4gIHJldHVybiB6bGliQnVmZmVyU3luYyhuZXcgR3VuemlwKG9wdHMpLCBidWZmZXIpO1xufTtcblxuZXhwb3J0cy5pbmZsYXRlUmF3ID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cywgY2FsbGJhY2spIHtcbiAgaWYgKHR5cGVvZiBvcHRzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2sgPSBvcHRzO1xuICAgIG9wdHMgPSB7fTtcbiAgfVxuICByZXR1cm4gemxpYkJ1ZmZlcihuZXcgSW5mbGF0ZVJhdyhvcHRzKSwgYnVmZmVyLCBjYWxsYmFjayk7XG59O1xuXG5leHBvcnRzLmluZmxhdGVSYXdTeW5jID0gZnVuY3Rpb24gKGJ1ZmZlciwgb3B0cykge1xuICByZXR1cm4gemxpYkJ1ZmZlclN5bmMobmV3IEluZmxhdGVSYXcob3B0cyksIGJ1ZmZlcik7XG59O1xuXG5mdW5jdGlvbiB6bGliQnVmZmVyKGVuZ2luZSwgYnVmZmVyLCBjYWxsYmFjaykge1xuICB2YXIgYnVmZmVycyA9IFtdO1xuICB2YXIgbnJlYWQgPSAwO1xuXG4gIGVuZ2luZS5vbignZXJyb3InLCBvbkVycm9yKTtcbiAgZW5naW5lLm9uKCdlbmQnLCBvbkVuZCk7XG5cbiAgZW5naW5lLmVuZChidWZmZXIpO1xuICBmbG93KCk7XG5cbiAgZnVuY3Rpb24gZmxvdygpIHtcbiAgICB2YXIgY2h1bms7XG4gICAgd2hpbGUgKG51bGwgIT09IChjaHVuayA9IGVuZ2luZS5yZWFkKCkpKSB7XG4gICAgICBidWZmZXJzLnB1c2goY2h1bmspO1xuICAgICAgbnJlYWQgKz0gY2h1bmsubGVuZ3RoO1xuICAgIH1cbiAgICBlbmdpbmUub25jZSgncmVhZGFibGUnLCBmbG93KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG9uRXJyb3IoZXJyKSB7XG4gICAgZW5naW5lLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBvbkVuZCk7XG4gICAgZW5naW5lLnJlbW92ZUxpc3RlbmVyKCdyZWFkYWJsZScsIGZsb3cpO1xuICAgIGNhbGxiYWNrKGVycik7XG4gIH1cblxuICBmdW5jdGlvbiBvbkVuZCgpIHtcbiAgICB2YXIgYnVmO1xuICAgIHZhciBlcnIgPSBudWxsO1xuXG4gICAgaWYgKG5yZWFkID49IGtNYXhMZW5ndGgpIHtcbiAgICAgIGVyciA9IG5ldyBSYW5nZUVycm9yKGtSYW5nZUVycm9yTWVzc2FnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJ1ZiA9IEJ1ZmZlci5jb25jYXQoYnVmZmVycywgbnJlYWQpO1xuICAgIH1cblxuICAgIGJ1ZmZlcnMgPSBbXTtcbiAgICBlbmdpbmUuY2xvc2UoKTtcbiAgICBjYWxsYmFjayhlcnIsIGJ1Zik7XG4gIH1cbn1cblxuZnVuY3Rpb24gemxpYkJ1ZmZlclN5bmMoZW5naW5lLCBidWZmZXIpIHtcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09ICdzdHJpbmcnKSBidWZmZXIgPSBCdWZmZXIuZnJvbShidWZmZXIpO1xuXG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZmZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ05vdCBhIHN0cmluZyBvciBidWZmZXInKTtcblxuICB2YXIgZmx1c2hGbGFnID0gZW5naW5lLl9maW5pc2hGbHVzaEZsYWc7XG5cbiAgcmV0dXJuIGVuZ2luZS5fcHJvY2Vzc0NodW5rKGJ1ZmZlciwgZmx1c2hGbGFnKTtcbn1cblxuLy8gZ2VuZXJpYyB6bGliXG4vLyBtaW5pbWFsIDItYnl0ZSBoZWFkZXJcbmZ1bmN0aW9uIERlZmxhdGUob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRGVmbGF0ZSkpIHJldHVybiBuZXcgRGVmbGF0ZShvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuREVGTEFURSk7XG59XG5cbmZ1bmN0aW9uIEluZmxhdGUob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgSW5mbGF0ZSkpIHJldHVybiBuZXcgSW5mbGF0ZShvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuSU5GTEFURSk7XG59XG5cbi8vIGd6aXAgLSBiaWdnZXIgaGVhZGVyLCBzYW1lIGRlZmxhdGUgY29tcHJlc3Npb25cbmZ1bmN0aW9uIEd6aXAob3B0cykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgR3ppcCkpIHJldHVybiBuZXcgR3ppcChvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuR1pJUCk7XG59XG5cbmZ1bmN0aW9uIEd1bnppcChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBHdW56aXApKSByZXR1cm4gbmV3IEd1bnppcChvcHRzKTtcbiAgWmxpYi5jYWxsKHRoaXMsIG9wdHMsIGJpbmRpbmcuR1VOWklQKTtcbn1cblxuLy8gcmF3IC0gbm8gaGVhZGVyXG5mdW5jdGlvbiBEZWZsYXRlUmF3KG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIERlZmxhdGVSYXcpKSByZXR1cm4gbmV3IERlZmxhdGVSYXcob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLkRFRkxBVEVSQVcpO1xufVxuXG5mdW5jdGlvbiBJbmZsYXRlUmF3KG9wdHMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIEluZmxhdGVSYXcpKSByZXR1cm4gbmV3IEluZmxhdGVSYXcob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLklORkxBVEVSQVcpO1xufVxuXG4vLyBhdXRvLWRldGVjdCBoZWFkZXIuXG5mdW5jdGlvbiBVbnppcChvcHRzKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBVbnppcCkpIHJldHVybiBuZXcgVW56aXAob3B0cyk7XG4gIFpsaWIuY2FsbCh0aGlzLCBvcHRzLCBiaW5kaW5nLlVOWklQKTtcbn1cblxuZnVuY3Rpb24gaXNWYWxpZEZsdXNoRmxhZyhmbGFnKSB7XG4gIHJldHVybiBmbGFnID09PSBiaW5kaW5nLlpfTk9fRkxVU0ggfHwgZmxhZyA9PT0gYmluZGluZy5aX1BBUlRJQUxfRkxVU0ggfHwgZmxhZyA9PT0gYmluZGluZy5aX1NZTkNfRkxVU0ggfHwgZmxhZyA9PT0gYmluZGluZy5aX0ZVTExfRkxVU0ggfHwgZmxhZyA9PT0gYmluZGluZy5aX0ZJTklTSCB8fCBmbGFnID09PSBiaW5kaW5nLlpfQkxPQ0s7XG59XG5cbi8vIHRoZSBabGliIGNsYXNzIHRoZXkgYWxsIGluaGVyaXQgZnJvbVxuLy8gVGhpcyB0aGluZyBtYW5hZ2VzIHRoZSBxdWV1ZSBvZiByZXF1ZXN0cywgYW5kIHJldHVybnNcbi8vIHRydWUgb3IgZmFsc2UgaWYgdGhlcmUgaXMgYW55dGhpbmcgaW4gdGhlIHF1ZXVlIHdoZW5cbi8vIHlvdSBjYWxsIHRoZSAud3JpdGUoKSBtZXRob2QuXG5cbmZ1bmN0aW9uIFpsaWIob3B0cywgbW9kZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMuX29wdHMgPSBvcHRzID0gb3B0cyB8fCB7fTtcbiAgdGhpcy5fY2h1bmtTaXplID0gb3B0cy5jaHVua1NpemUgfHwgZXhwb3J0cy5aX0RFRkFVTFRfQ0hVTks7XG5cbiAgVHJhbnNmb3JtLmNhbGwodGhpcywgb3B0cyk7XG5cbiAgaWYgKG9wdHMuZmx1c2ggJiYgIWlzVmFsaWRGbHVzaEZsYWcob3B0cy5mbHVzaCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggZmxhZzogJyArIG9wdHMuZmx1c2gpO1xuICB9XG4gIGlmIChvcHRzLmZpbmlzaEZsdXNoICYmICFpc1ZhbGlkRmx1c2hGbGFnKG9wdHMuZmluaXNoRmx1c2gpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZsdXNoIGZsYWc6ICcgKyBvcHRzLmZpbmlzaEZsdXNoKTtcbiAgfVxuXG4gIHRoaXMuX2ZsdXNoRmxhZyA9IG9wdHMuZmx1c2ggfHwgYmluZGluZy5aX05PX0ZMVVNIO1xuICB0aGlzLl9maW5pc2hGbHVzaEZsYWcgPSB0eXBlb2Ygb3B0cy5maW5pc2hGbHVzaCAhPT0gJ3VuZGVmaW5lZCcgPyBvcHRzLmZpbmlzaEZsdXNoIDogYmluZGluZy5aX0ZJTklTSDtcblxuICBpZiAob3B0cy5jaHVua1NpemUpIHtcbiAgICBpZiAob3B0cy5jaHVua1NpemUgPCBleHBvcnRzLlpfTUlOX0NIVU5LIHx8IG9wdHMuY2h1bmtTaXplID4gZXhwb3J0cy5aX01BWF9DSFVOSykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNodW5rIHNpemU6ICcgKyBvcHRzLmNodW5rU2l6ZSk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMud2luZG93Qml0cykge1xuICAgIGlmIChvcHRzLndpbmRvd0JpdHMgPCBleHBvcnRzLlpfTUlOX1dJTkRPV0JJVFMgfHwgb3B0cy53aW5kb3dCaXRzID4gZXhwb3J0cy5aX01BWF9XSU5ET1dCSVRTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgd2luZG93Qml0czogJyArIG9wdHMud2luZG93Qml0cyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKG9wdHMubGV2ZWwpIHtcbiAgICBpZiAob3B0cy5sZXZlbCA8IGV4cG9ydHMuWl9NSU5fTEVWRUwgfHwgb3B0cy5sZXZlbCA+IGV4cG9ydHMuWl9NQVhfTEVWRUwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbDogJyArIG9wdHMubGV2ZWwpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLm1lbUxldmVsKSB7XG4gICAgaWYgKG9wdHMubWVtTGV2ZWwgPCBleHBvcnRzLlpfTUlOX01FTUxFVkVMIHx8IG9wdHMubWVtTGV2ZWwgPiBleHBvcnRzLlpfTUFYX01FTUxFVkVMKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWVtTGV2ZWw6ICcgKyBvcHRzLm1lbUxldmVsKTtcbiAgICB9XG4gIH1cblxuICBpZiAob3B0cy5zdHJhdGVneSkge1xuICAgIGlmIChvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9GSUxURVJFRCAmJiBvcHRzLnN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9IVUZGTUFOX09OTFkgJiYgb3B0cy5zdHJhdGVneSAhPSBleHBvcnRzLlpfUkxFICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJWEVEICYmIG9wdHMuc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0RFRkFVTFRfU1RSQVRFR1kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJhdGVneTogJyArIG9wdHMuc3RyYXRlZ3kpO1xuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRzLmRpY3Rpb25hcnkpIHtcbiAgICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihvcHRzLmRpY3Rpb25hcnkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZGljdGlvbmFyeTogaXQgc2hvdWxkIGJlIGEgQnVmZmVyIGluc3RhbmNlJyk7XG4gICAgfVxuICB9XG5cbiAgdGhpcy5faGFuZGxlID0gbmV3IGJpbmRpbmcuWmxpYihtb2RlKTtcblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHRoaXMuX2hhZEVycm9yID0gZmFsc2U7XG4gIHRoaXMuX2hhbmRsZS5vbmVycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UsIGVycm5vKSB7XG4gICAgLy8gdGhlcmUgaXMgbm8gd2F5IHRvIGNsZWFubHkgcmVjb3Zlci5cbiAgICAvLyBjb250aW51aW5nIG9ubHkgb2JzY3VyZXMgcHJvYmxlbXMuXG4gICAgX2Nsb3NlKHNlbGYpO1xuICAgIHNlbGYuX2hhZEVycm9yID0gdHJ1ZTtcblxuICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICBlcnJvci5lcnJubyA9IGVycm5vO1xuICAgIGVycm9yLmNvZGUgPSBleHBvcnRzLmNvZGVzW2Vycm5vXTtcbiAgICBzZWxmLmVtaXQoJ2Vycm9yJywgZXJyb3IpO1xuICB9O1xuXG4gIHZhciBsZXZlbCA9IGV4cG9ydHMuWl9ERUZBVUxUX0NPTVBSRVNTSU9OO1xuICBpZiAodHlwZW9mIG9wdHMubGV2ZWwgPT09ICdudW1iZXInKSBsZXZlbCA9IG9wdHMubGV2ZWw7XG5cbiAgdmFyIHN0cmF0ZWd5ID0gZXhwb3J0cy5aX0RFRkFVTFRfU1RSQVRFR1k7XG4gIGlmICh0eXBlb2Ygb3B0cy5zdHJhdGVneSA9PT0gJ251bWJlcicpIHN0cmF0ZWd5ID0gb3B0cy5zdHJhdGVneTtcblxuICB0aGlzLl9oYW5kbGUuaW5pdChvcHRzLndpbmRvd0JpdHMgfHwgZXhwb3J0cy5aX0RFRkFVTFRfV0lORE9XQklUUywgbGV2ZWwsIG9wdHMubWVtTGV2ZWwgfHwgZXhwb3J0cy5aX0RFRkFVTFRfTUVNTEVWRUwsIHN0cmF0ZWd5LCBvcHRzLmRpY3Rpb25hcnkpO1xuXG4gIHRoaXMuX2J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLl9jaHVua1NpemUpO1xuICB0aGlzLl9vZmZzZXQgPSAwO1xuICB0aGlzLl9sZXZlbCA9IGxldmVsO1xuICB0aGlzLl9zdHJhdGVneSA9IHN0cmF0ZWd5O1xuXG4gIHRoaXMub25jZSgnZW5kJywgdGhpcy5jbG9zZSk7XG5cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdfY2xvc2VkJywge1xuICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICFfdGhpcy5faGFuZGxlO1xuICAgIH0sXG4gICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIGVudW1lcmFibGU6IHRydWVcbiAgfSk7XG59XG5cbnV0aWwuaW5oZXJpdHMoWmxpYiwgVHJhbnNmb3JtKTtcblxuWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24gKGxldmVsLCBzdHJhdGVneSwgY2FsbGJhY2spIHtcbiAgaWYgKGxldmVsIDwgZXhwb3J0cy5aX01JTl9MRVZFTCB8fCBsZXZlbCA+IGV4cG9ydHMuWl9NQVhfTEVWRUwpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbDogJyArIGxldmVsKTtcbiAgfVxuICBpZiAoc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0ZJTFRFUkVEICYmIHN0cmF0ZWd5ICE9IGV4cG9ydHMuWl9IVUZGTUFOX09OTFkgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX1JMRSAmJiBzdHJhdGVneSAhPSBleHBvcnRzLlpfRklYRUQgJiYgc3RyYXRlZ3kgIT0gZXhwb3J0cy5aX0RFRkFVTFRfU1RSQVRFR1kpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIHN0cmF0ZWd5OiAnICsgc3RyYXRlZ3kpO1xuICB9XG5cbiAgaWYgKHRoaXMuX2xldmVsICE9PSBsZXZlbCB8fCB0aGlzLl9zdHJhdGVneSAhPT0gc3RyYXRlZ3kpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdGhpcy5mbHVzaChiaW5kaW5nLlpfU1lOQ19GTFVTSCwgZnVuY3Rpb24gKCkge1xuICAgICAgYXNzZXJ0KHNlbGYuX2hhbmRsZSwgJ3psaWIgYmluZGluZyBjbG9zZWQnKTtcbiAgICAgIHNlbGYuX2hhbmRsZS5wYXJhbXMobGV2ZWwsIHN0cmF0ZWd5KTtcbiAgICAgIGlmICghc2VsZi5faGFkRXJyb3IpIHtcbiAgICAgICAgc2VsZi5fbGV2ZWwgPSBsZXZlbDtcbiAgICAgICAgc2VsZi5fc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHByb2Nlc3MubmV4dFRpY2soY2FsbGJhY2spO1xuICB9XG59O1xuXG5abGliLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgYXNzZXJ0KHRoaXMuX2hhbmRsZSwgJ3psaWIgYmluZGluZyBjbG9zZWQnKTtcbiAgcmV0dXJuIHRoaXMuX2hhbmRsZS5yZXNldCgpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgX2ZsdXNoIGZ1bmN0aW9uIGNhbGxlZCBieSB0aGUgdHJhbnNmb3JtIGNsYXNzLFxuLy8gaW50ZXJuYWxseSwgd2hlbiB0aGUgbGFzdCBjaHVuayBoYXMgYmVlbiB3cml0dGVuLlxuWmxpYi5wcm90b3R5cGUuX2ZsdXNoID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHRoaXMuX3RyYW5zZm9ybShCdWZmZXIuYWxsb2MoMCksICcnLCBjYWxsYmFjayk7XG59O1xuXG5abGliLnByb3RvdHlwZS5mbHVzaCA9IGZ1bmN0aW9uIChraW5kLCBjYWxsYmFjaykge1xuICB2YXIgX3RoaXMyID0gdGhpcztcblxuICB2YXIgd3MgPSB0aGlzLl93cml0YWJsZVN0YXRlO1xuXG4gIGlmICh0eXBlb2Yga2luZCA9PT0gJ2Z1bmN0aW9uJyB8fCBraW5kID09PSB1bmRlZmluZWQgJiYgIWNhbGxiYWNrKSB7XG4gICAgY2FsbGJhY2sgPSBraW5kO1xuICAgIGtpbmQgPSBiaW5kaW5nLlpfRlVMTF9GTFVTSDtcbiAgfVxuXG4gIGlmICh3cy5lbmRlZCkge1xuICAgIGlmIChjYWxsYmFjaykgcHJvY2Vzcy5uZXh0VGljayhjYWxsYmFjayk7XG4gIH0gZWxzZSBpZiAod3MuZW5kaW5nKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB0aGlzLm9uY2UoJ2VuZCcsIGNhbGxiYWNrKTtcbiAgfSBlbHNlIGlmICh3cy5uZWVkRHJhaW4pIHtcbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIHRoaXMub25jZSgnZHJhaW4nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpczIuZmx1c2goa2luZCwgY2FsbGJhY2spO1xuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMuX2ZsdXNoRmxhZyA9IGtpbmQ7XG4gICAgdGhpcy53cml0ZShCdWZmZXIuYWxsb2MoMCksICcnLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIF9jbG9zZSh0aGlzLCBjYWxsYmFjayk7XG4gIHByb2Nlc3MubmV4dFRpY2soZW1pdENsb3NlTlQsIHRoaXMpO1xufTtcblxuZnVuY3Rpb24gX2Nsb3NlKGVuZ2luZSwgY2FsbGJhY2spIHtcbiAgaWYgKGNhbGxiYWNrKSBwcm9jZXNzLm5leHRUaWNrKGNhbGxiYWNrKTtcblxuICAvLyBDYWxsZXIgbWF5IGludm9rZSAuY2xvc2UgYWZ0ZXIgYSB6bGliIGVycm9yICh3aGljaCB3aWxsIG51bGwgX2hhbmRsZSkuXG4gIGlmICghZW5naW5lLl9oYW5kbGUpIHJldHVybjtcblxuICBlbmdpbmUuX2hhbmRsZS5jbG9zZSgpO1xuICBlbmdpbmUuX2hhbmRsZSA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGVtaXRDbG9zZU5UKHNlbGYpIHtcbiAgc2VsZi5lbWl0KCdjbG9zZScpO1xufVxuXG5abGliLnByb3RvdHlwZS5fdHJhbnNmb3JtID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgdmFyIGZsdXNoRmxhZztcbiAgdmFyIHdzID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcbiAgdmFyIGVuZGluZyA9IHdzLmVuZGluZyB8fCB3cy5lbmRlZDtcbiAgdmFyIGxhc3QgPSBlbmRpbmcgJiYgKCFjaHVuayB8fCB3cy5sZW5ndGggPT09IGNodW5rLmxlbmd0aCk7XG5cbiAgaWYgKGNodW5rICE9PSBudWxsICYmICFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSByZXR1cm4gY2IobmV3IEVycm9yKCdpbnZhbGlkIGlucHV0JykpO1xuXG4gIGlmICghdGhpcy5faGFuZGxlKSByZXR1cm4gY2IobmV3IEVycm9yKCd6bGliIGJpbmRpbmcgY2xvc2VkJykpO1xuXG4gIC8vIElmIGl0J3MgdGhlIGxhc3QgY2h1bmssIG9yIGEgZmluYWwgZmx1c2gsIHdlIHVzZSB0aGUgWl9GSU5JU0ggZmx1c2ggZmxhZ1xuICAvLyAob3Igd2hhdGV2ZXIgZmxhZyB3YXMgcHJvdmlkZWQgdXNpbmcgb3B0cy5maW5pc2hGbHVzaCkuXG4gIC8vIElmIGl0J3MgZXhwbGljaXRseSBmbHVzaGluZyBhdCBzb21lIG90aGVyIHRpbWUsIHRoZW4gd2UgdXNlXG4gIC8vIFpfRlVMTF9GTFVTSC4gT3RoZXJ3aXNlLCB1c2UgWl9OT19GTFVTSCBmb3IgbWF4aW11bSBjb21wcmVzc2lvblxuICAvLyBnb29kbmVzcy5cbiAgaWYgKGxhc3QpIGZsdXNoRmxhZyA9IHRoaXMuX2ZpbmlzaEZsdXNoRmxhZztlbHNlIHtcbiAgICBmbHVzaEZsYWcgPSB0aGlzLl9mbHVzaEZsYWc7XG4gICAgLy8gb25jZSB3ZSd2ZSBmbHVzaGVkIHRoZSBsYXN0IG9mIHRoZSBxdWV1ZSwgc3RvcCBmbHVzaGluZyBhbmRcbiAgICAvLyBnbyBiYWNrIHRvIHRoZSBub3JtYWwgYmVoYXZpb3IuXG4gICAgaWYgKGNodW5rLmxlbmd0aCA+PSB3cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2ZsdXNoRmxhZyA9IHRoaXMuX29wdHMuZmx1c2ggfHwgYmluZGluZy5aX05PX0ZMVVNIO1xuICAgIH1cbiAgfVxuXG4gIHRoaXMuX3Byb2Nlc3NDaHVuayhjaHVuaywgZmx1c2hGbGFnLCBjYik7XG59O1xuXG5abGliLnByb3RvdHlwZS5fcHJvY2Vzc0NodW5rID0gZnVuY3Rpb24gKGNodW5rLCBmbHVzaEZsYWcsIGNiKSB7XG4gIHZhciBhdmFpbEluQmVmb3JlID0gY2h1bmsgJiYgY2h1bmsubGVuZ3RoO1xuICB2YXIgYXZhaWxPdXRCZWZvcmUgPSB0aGlzLl9jaHVua1NpemUgLSB0aGlzLl9vZmZzZXQ7XG4gIHZhciBpbk9mZiA9IDA7XG5cbiAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gIHZhciBhc3luYyA9IHR5cGVvZiBjYiA9PT0gJ2Z1bmN0aW9uJztcblxuICBpZiAoIWFzeW5jKSB7XG4gICAgdmFyIGJ1ZmZlcnMgPSBbXTtcbiAgICB2YXIgbnJlYWQgPSAwO1xuXG4gICAgdmFyIGVycm9yO1xuICAgIHRoaXMub24oJ2Vycm9yJywgZnVuY3Rpb24gKGVyKSB7XG4gICAgICBlcnJvciA9IGVyO1xuICAgIH0pO1xuXG4gICAgYXNzZXJ0KHRoaXMuX2hhbmRsZSwgJ3psaWIgYmluZGluZyBjbG9zZWQnKTtcbiAgICBkbyB7XG4gICAgICB2YXIgcmVzID0gdGhpcy5faGFuZGxlLndyaXRlU3luYyhmbHVzaEZsYWcsIGNodW5rLCAvLyBpblxuICAgICAgaW5PZmYsIC8vIGluX29mZlxuICAgICAgYXZhaWxJbkJlZm9yZSwgLy8gaW5fbGVuXG4gICAgICB0aGlzLl9idWZmZXIsIC8vIG91dFxuICAgICAgdGhpcy5fb2Zmc2V0LCAvL291dF9vZmZcbiAgICAgIGF2YWlsT3V0QmVmb3JlKTsgLy8gb3V0X2xlblxuICAgIH0gd2hpbGUgKCF0aGlzLl9oYWRFcnJvciAmJiBjYWxsYmFjayhyZXNbMF0sIHJlc1sxXSkpO1xuXG4gICAgaWYgKHRoaXMuX2hhZEVycm9yKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG5cbiAgICBpZiAobnJlYWQgPj0ga01heExlbmd0aCkge1xuICAgICAgX2Nsb3NlKHRoaXMpO1xuICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3Ioa1JhbmdlRXJyb3JNZXNzYWdlKTtcbiAgICB9XG5cbiAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdChidWZmZXJzLCBucmVhZCk7XG4gICAgX2Nsb3NlKHRoaXMpO1xuXG4gICAgcmV0dXJuIGJ1ZjtcbiAgfVxuXG4gIGFzc2VydCh0aGlzLl9oYW5kbGUsICd6bGliIGJpbmRpbmcgY2xvc2VkJyk7XG4gIHZhciByZXEgPSB0aGlzLl9oYW5kbGUud3JpdGUoZmx1c2hGbGFnLCBjaHVuaywgLy8gaW5cbiAgaW5PZmYsIC8vIGluX29mZlxuICBhdmFpbEluQmVmb3JlLCAvLyBpbl9sZW5cbiAgdGhpcy5fYnVmZmVyLCAvLyBvdXRcbiAgdGhpcy5fb2Zmc2V0LCAvL291dF9vZmZcbiAgYXZhaWxPdXRCZWZvcmUpOyAvLyBvdXRfbGVuXG5cbiAgcmVxLmJ1ZmZlciA9IGNodW5rO1xuICByZXEuY2FsbGJhY2sgPSBjYWxsYmFjaztcblxuICBmdW5jdGlvbiBjYWxsYmFjayhhdmFpbEluQWZ0ZXIsIGF2YWlsT3V0QWZ0ZXIpIHtcbiAgICAvLyBXaGVuIHRoZSBjYWxsYmFjayBpcyB1c2VkIGluIGFuIGFzeW5jIHdyaXRlLCB0aGUgY2FsbGJhY2snc1xuICAgIC8vIGNvbnRleHQgaXMgdGhlIGByZXFgIG9iamVjdCB0aGF0IHdhcyBjcmVhdGVkLiBUaGUgcmVxIG9iamVjdFxuICAgIC8vIGlzID09PSB0aGlzLl9oYW5kbGUsIGFuZCB0aGF0J3Mgd2h5IGl0J3MgaW1wb3J0YW50IHRvIG51bGxcbiAgICAvLyBvdXQgdGhlIHZhbHVlcyBhZnRlciB0aGV5IGFyZSBkb25lIGJlaW5nIHVzZWQuIGB0aGlzLl9oYW5kbGVgXG4gICAgLy8gY2FuIHN0YXkgaW4gbWVtb3J5IGxvbmdlciB0aGFuIHRoZSBjYWxsYmFjayBhbmQgYnVmZmVyIGFyZSBuZWVkZWQuXG4gICAgaWYgKHRoaXMpIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gbnVsbDtcbiAgICAgIHRoaXMuY2FsbGJhY2sgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChzZWxmLl9oYWRFcnJvcikgcmV0dXJuO1xuXG4gICAgdmFyIGhhdmUgPSBhdmFpbE91dEJlZm9yZSAtIGF2YWlsT3V0QWZ0ZXI7XG4gICAgYXNzZXJ0KGhhdmUgPj0gMCwgJ2hhdmUgc2hvdWxkIG5vdCBnbyBkb3duJyk7XG5cbiAgICBpZiAoaGF2ZSA+IDApIHtcbiAgICAgIHZhciBvdXQgPSBzZWxmLl9idWZmZXIuc2xpY2Uoc2VsZi5fb2Zmc2V0LCBzZWxmLl9vZmZzZXQgKyBoYXZlKTtcbiAgICAgIHNlbGYuX29mZnNldCArPSBoYXZlO1xuICAgICAgLy8gc2VydmUgc29tZSBvdXRwdXQgdG8gdGhlIGNvbnN1bWVyLlxuICAgICAgaWYgKGFzeW5jKSB7XG4gICAgICAgIHNlbGYucHVzaChvdXQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnVmZmVycy5wdXNoKG91dCk7XG4gICAgICAgIG5yZWFkICs9IG91dC5sZW5ndGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gZXhoYXVzdGVkIHRoZSBvdXRwdXQgYnVmZmVyLCBvciB1c2VkIGFsbCB0aGUgaW5wdXQgY3JlYXRlIGEgbmV3IG9uZS5cbiAgICBpZiAoYXZhaWxPdXRBZnRlciA9PT0gMCB8fCBzZWxmLl9vZmZzZXQgPj0gc2VsZi5fY2h1bmtTaXplKSB7XG4gICAgICBhdmFpbE91dEJlZm9yZSA9IHNlbGYuX2NodW5rU2l6ZTtcbiAgICAgIHNlbGYuX29mZnNldCA9IDA7XG4gICAgICBzZWxmLl9idWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoc2VsZi5fY2h1bmtTaXplKTtcbiAgICB9XG5cbiAgICBpZiAoYXZhaWxPdXRBZnRlciA9PT0gMCkge1xuICAgICAgLy8gTm90IGFjdHVhbGx5IGRvbmUuICBOZWVkIHRvIHJlcHJvY2Vzcy5cbiAgICAgIC8vIEFsc28sIHVwZGF0ZSB0aGUgYXZhaWxJbkJlZm9yZSB0byB0aGUgYXZhaWxJbkFmdGVyIHZhbHVlLFxuICAgICAgLy8gc28gdGhhdCBpZiB3ZSBoYXZlIHRvIGhpdCBpdCBhIHRoaXJkIChmb3VydGgsIGV0Yy4pIHRpbWUsXG4gICAgICAvLyBpdCdsbCBoYXZlIHRoZSBjb3JyZWN0IGJ5dGUgY291bnRzLlxuICAgICAgaW5PZmYgKz0gYXZhaWxJbkJlZm9yZSAtIGF2YWlsSW5BZnRlcjtcbiAgICAgIGF2YWlsSW5CZWZvcmUgPSBhdmFpbEluQWZ0ZXI7XG5cbiAgICAgIGlmICghYXN5bmMpIHJldHVybiB0cnVlO1xuXG4gICAgICB2YXIgbmV3UmVxID0gc2VsZi5faGFuZGxlLndyaXRlKGZsdXNoRmxhZywgY2h1bmssIGluT2ZmLCBhdmFpbEluQmVmb3JlLCBzZWxmLl9idWZmZXIsIHNlbGYuX29mZnNldCwgc2VsZi5fY2h1bmtTaXplKTtcbiAgICAgIG5ld1JlcS5jYWxsYmFjayA9IGNhbGxiYWNrOyAvLyB0aGlzIHNhbWUgZnVuY3Rpb25cbiAgICAgIG5ld1JlcS5idWZmZXIgPSBjaHVuaztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWFzeW5jKSByZXR1cm4gZmFsc2U7XG5cbiAgICAvLyBmaW5pc2hlZCB3aXRoIHRoZSBjaHVuay5cbiAgICBjYigpO1xuICB9XG59O1xuXG51dGlsLmluaGVyaXRzKERlZmxhdGUsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhJbmZsYXRlLCBabGliKTtcbnV0aWwuaW5oZXJpdHMoR3ppcCwgWmxpYik7XG51dGlsLmluaGVyaXRzKEd1bnppcCwgWmxpYik7XG51dGlsLmluaGVyaXRzKERlZmxhdGVSYXcsIFpsaWIpO1xudXRpbC5pbmhlcml0cyhJbmZsYXRlUmF3LCBabGliKTtcbnV0aWwuaW5oZXJpdHMoVW56aXAsIFpsaWIpOyIsIid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludCBjYW1lbGNhc2U6IFwib2ZmXCIgKi9cblxudmFyIGFzc2VydCA9IHJlcXVpcmUoJ2Fzc2VydCcpO1xuXG52YXIgWnN0cmVhbSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvenN0cmVhbScpO1xudmFyIHpsaWJfZGVmbGF0ZSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvZGVmbGF0ZS5qcycpO1xudmFyIHpsaWJfaW5mbGF0ZSA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvaW5mbGF0ZS5qcycpO1xudmFyIGNvbnN0YW50cyA9IHJlcXVpcmUoJ3Bha28vbGliL3psaWIvY29uc3RhbnRzJyk7XG5cbmZvciAodmFyIGtleSBpbiBjb25zdGFudHMpIHtcbiAgZXhwb3J0c1trZXldID0gY29uc3RhbnRzW2tleV07XG59XG5cbi8vIHpsaWIgbW9kZXNcbmV4cG9ydHMuTk9ORSA9IDA7XG5leHBvcnRzLkRFRkxBVEUgPSAxO1xuZXhwb3J0cy5JTkZMQVRFID0gMjtcbmV4cG9ydHMuR1pJUCA9IDM7XG5leHBvcnRzLkdVTlpJUCA9IDQ7XG5leHBvcnRzLkRFRkxBVEVSQVcgPSA1O1xuZXhwb3J0cy5JTkZMQVRFUkFXID0gNjtcbmV4cG9ydHMuVU5aSVAgPSA3O1xuXG52YXIgR1pJUF9IRUFERVJfSUQxID0gMHgxZjtcbnZhciBHWklQX0hFQURFUl9JRDIgPSAweDhiO1xuXG4vKipcbiAqIEVtdWxhdGUgTm9kZSdzIHpsaWIgQysrIGxheWVyIGZvciB1c2UgYnkgdGhlIEpTIGxheWVyIGluIGluZGV4LmpzXG4gKi9cbmZ1bmN0aW9uIFpsaWIobW9kZSkge1xuICBpZiAodHlwZW9mIG1vZGUgIT09ICdudW1iZXInIHx8IG1vZGUgPCBleHBvcnRzLkRFRkxBVEUgfHwgbW9kZSA+IGV4cG9ydHMuVU5aSVApIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgYXJndW1lbnQnKTtcbiAgfVxuXG4gIHRoaXMuZGljdGlvbmFyeSA9IG51bGw7XG4gIHRoaXMuZXJyID0gMDtcbiAgdGhpcy5mbHVzaCA9IDA7XG4gIHRoaXMuaW5pdF9kb25lID0gZmFsc2U7XG4gIHRoaXMubGV2ZWwgPSAwO1xuICB0aGlzLm1lbUxldmVsID0gMDtcbiAgdGhpcy5tb2RlID0gbW9kZTtcbiAgdGhpcy5zdHJhdGVneSA9IDA7XG4gIHRoaXMud2luZG93Qml0cyA9IDA7XG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcbiAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gZmFsc2U7XG4gIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMDtcbn1cblxuWmxpYi5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbiAoKSB7XG4gIGlmICh0aGlzLndyaXRlX2luX3Byb2dyZXNzKSB7XG4gICAgdGhpcy5wZW5kaW5nX2Nsb3NlID0gdHJ1ZTtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLnBlbmRpbmdfY2xvc2UgPSBmYWxzZTtcblxuICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICdjbG9zZSBiZWZvcmUgaW5pdCcpO1xuICBhc3NlcnQodGhpcy5tb2RlIDw9IGV4cG9ydHMuVU5aSVApO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURSB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVykge1xuICAgIHpsaWJfZGVmbGF0ZS5kZWZsYXRlRW5kKHRoaXMuc3RybSk7XG4gIH0gZWxzZSBpZiAodGhpcy5tb2RlID09PSBleHBvcnRzLklORkxBVEUgfHwgdGhpcy5tb2RlID09PSBleHBvcnRzLkdVTlpJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURVJBVyB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuVU5aSVApIHtcbiAgICB6bGliX2luZmxhdGUuaW5mbGF0ZUVuZCh0aGlzLnN0cm0pO1xuICB9XG5cbiAgdGhpcy5tb2RlID0gZXhwb3J0cy5OT05FO1xuXG4gIHRoaXMuZGljdGlvbmFyeSA9IG51bGw7XG59O1xuXG5abGliLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChmbHVzaCwgaW5wdXQsIGluX29mZiwgaW5fbGVuLCBvdXQsIG91dF9vZmYsIG91dF9sZW4pIHtcbiAgcmV0dXJuIHRoaXMuX3dyaXRlKHRydWUsIGZsdXNoLCBpbnB1dCwgaW5fb2ZmLCBpbl9sZW4sIG91dCwgb3V0X29mZiwgb3V0X2xlbik7XG59O1xuXG5abGliLnByb3RvdHlwZS53cml0ZVN5bmMgPSBmdW5jdGlvbiAoZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7XG4gIHJldHVybiB0aGlzLl93cml0ZShmYWxzZSwgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl93cml0ZSA9IGZ1bmN0aW9uIChhc3luYywgZmx1c2gsIGlucHV0LCBpbl9vZmYsIGluX2xlbiwgb3V0LCBvdXRfb2ZmLCBvdXRfbGVuKSB7XG4gIGFzc2VydC5lcXVhbChhcmd1bWVudHMubGVuZ3RoLCA4KTtcblxuICBhc3NlcnQodGhpcy5pbml0X2RvbmUsICd3cml0ZSBiZWZvcmUgaW5pdCcpO1xuICBhc3NlcnQodGhpcy5tb2RlICE9PSBleHBvcnRzLk5PTkUsICdhbHJlYWR5IGZpbmFsaXplZCcpO1xuICBhc3NlcnQuZXF1YWwoZmFsc2UsIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MsICd3cml0ZSBhbHJlYWR5IGluIHByb2dyZXNzJyk7XG4gIGFzc2VydC5lcXVhbChmYWxzZSwgdGhpcy5wZW5kaW5nX2Nsb3NlLCAnY2xvc2UgaXMgcGVuZGluZycpO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlO1xuXG4gIGFzc2VydC5lcXVhbChmYWxzZSwgZmx1c2ggPT09IHVuZGVmaW5lZCwgJ211c3QgcHJvdmlkZSBmbHVzaCB2YWx1ZScpO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSB0cnVlO1xuXG4gIGlmIChmbHVzaCAhPT0gZXhwb3J0cy5aX05PX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfUEFSVElBTF9GTFVTSCAmJiBmbHVzaCAhPT0gZXhwb3J0cy5aX1NZTkNfRkxVU0ggJiYgZmx1c2ggIT09IGV4cG9ydHMuWl9GVUxMX0ZMVVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfRklOSVNIICYmIGZsdXNoICE9PSBleHBvcnRzLlpfQkxPQ0spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgZmx1c2ggdmFsdWUnKTtcbiAgfVxuXG4gIGlmIChpbnB1dCA9PSBudWxsKSB7XG4gICAgaW5wdXQgPSBCdWZmZXIuYWxsb2MoMCk7XG4gICAgaW5fbGVuID0gMDtcbiAgICBpbl9vZmYgPSAwO1xuICB9XG5cbiAgdGhpcy5zdHJtLmF2YWlsX2luID0gaW5fbGVuO1xuICB0aGlzLnN0cm0uaW5wdXQgPSBpbnB1dDtcbiAgdGhpcy5zdHJtLm5leHRfaW4gPSBpbl9vZmY7XG4gIHRoaXMuc3RybS5hdmFpbF9vdXQgPSBvdXRfbGVuO1xuICB0aGlzLnN0cm0ub3V0cHV0ID0gb3V0O1xuICB0aGlzLnN0cm0ubmV4dF9vdXQgPSBvdXRfb2ZmO1xuICB0aGlzLmZsdXNoID0gZmx1c2g7XG5cbiAgaWYgKCFhc3luYykge1xuICAgIC8vIHN5bmMgdmVyc2lvblxuICAgIHRoaXMuX3Byb2Nlc3MoKTtcblxuICAgIGlmICh0aGlzLl9jaGVja0Vycm9yKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9hZnRlclN5bmMoKTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gYXN5bmMgdmVyc2lvblxuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkge1xuICAgIHNlbGYuX3Byb2Nlc3MoKTtcbiAgICBzZWxmLl9hZnRlcigpO1xuICB9KTtcblxuICByZXR1cm4gdGhpcztcbn07XG5cblpsaWIucHJvdG90eXBlLl9hZnRlclN5bmMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBhdmFpbF9vdXQgPSB0aGlzLnN0cm0uYXZhaWxfb3V0O1xuICB2YXIgYXZhaWxfaW4gPSB0aGlzLnN0cm0uYXZhaWxfaW47XG5cbiAgdGhpcy53cml0ZV9pbl9wcm9ncmVzcyA9IGZhbHNlO1xuXG4gIHJldHVybiBbYXZhaWxfaW4sIGF2YWlsX291dF07XG59O1xuXG5abGliLnByb3RvdHlwZS5fcHJvY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSBudWxsO1xuXG4gIC8vIElmIHRoZSBhdmFpbF9vdXQgaXMgbGVmdCBhdCAwLCB0aGVuIGl0IG1lYW5zIHRoYXQgaXQgcmFuIG91dFxuICAvLyBvZiByb29tLiAgSWYgdGhlcmUgd2FzIGF2YWlsX291dCBsZWZ0IG92ZXIsIHRoZW4gaXQgbWVhbnNcbiAgLy8gdGhhdCBhbGwgb2YgdGhlIGlucHV0IHdhcyBjb25zdW1lZC5cbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGUodGhpcy5zdHJtLCB0aGlzLmZsdXNoKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZXhwb3J0cy5VTlpJUDpcbiAgICAgIGlmICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwKSB7XG4gICAgICAgIG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPSB0aGlzLnN0cm0ubmV4dF9pbjtcbiAgICAgIH1cblxuICAgICAgc3dpdGNoICh0aGlzLmd6aXBfaWRfYnl0ZXNfcmVhZCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgaWYgKG5leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0aGlzLnN0cm0uaW5wdXRbbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZV0gPT09IEdaSVBfSEVBREVSX0lEMSkge1xuICAgICAgICAgICAgdGhpcy5nemlwX2lkX2J5dGVzX3JlYWQgPSAxO1xuICAgICAgICAgICAgbmV4dF9leHBlY3RlZF9oZWFkZXJfYnl0ZSsrO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5zdHJtLmF2YWlsX2luID09PSAxKSB7XG4gICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGF2YWlsYWJsZSBieXRlIHdhcyBhbHJlYWR5IHJlYWQuXG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBleHBvcnRzLklORkxBVEU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgLy8gZmFsbHRocm91Z2hcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmIChuZXh0X2V4cGVjdGVkX2hlYWRlcl9ieXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodGhpcy5zdHJtLmlucHV0W25leHRfZXhwZWN0ZWRfaGVhZGVyX2J5dGVdID09PSBHWklQX0hFQURFUl9JRDIpIHtcbiAgICAgICAgICAgIHRoaXMuZ3ppcF9pZF9ieXRlc19yZWFkID0gMjtcbiAgICAgICAgICAgIHRoaXMubW9kZSA9IGV4cG9ydHMuR1VOWklQO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBhY3R1YWwgZGlmZmVyZW5jZSBiZXR3ZWVuIElORkxBVEUgYW5kIElORkxBVEVSQVdcbiAgICAgICAgICAgIC8vIChhZnRlciBpbml0aWFsaXphdGlvbikuXG4gICAgICAgICAgICB0aGlzLm1vZGUgPSBleHBvcnRzLklORkxBVEU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIG51bWJlciBvZiBnemlwIG1hZ2ljIG51bWJlciBieXRlcyByZWFkJyk7XG4gICAgICB9XG5cbiAgICAvLyBmYWxsdGhyb3VnaFxuICAgIGNhc2UgZXhwb3J0cy5JTkZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HVU5aSVA6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaFxuXG4gICAgICAvLyBJZiBkYXRhIHdhcyBlbmNvZGVkIHdpdGggZGljdGlvbmFyeVxuICAgICAgKTtpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9ORUVEX0RJQ1QgJiYgdGhpcy5kaWN0aW9uYXJ5KSB7XG4gICAgICAgIC8vIExvYWQgaXRcbiAgICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCB0aGlzLmRpY3Rpb25hcnkpO1xuICAgICAgICBpZiAodGhpcy5lcnIgPT09IGV4cG9ydHMuWl9PSykge1xuICAgICAgICAgIC8vIEFuZCB0cnkgdG8gZGVjb2RlIGFnYWluXG4gICAgICAgICAgdGhpcy5lcnIgPSB6bGliX2luZmxhdGUuaW5mbGF0ZSh0aGlzLnN0cm0sIHRoaXMuZmx1c2gpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZXJyID09PSBleHBvcnRzLlpfREFUQV9FUlJPUikge1xuICAgICAgICAgIC8vIEJvdGggaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBhbmQgaW5mbGF0ZSgpIHJldHVybiBaX0RBVEFfRVJST1IuXG4gICAgICAgICAgLy8gTWFrZSBpdCBwb3NzaWJsZSBmb3IgQWZ0ZXIoKSB0byB0ZWxsIGEgYmFkIGRpY3Rpb25hcnkgZnJvbSBiYWRcbiAgICAgICAgICAvLyBpbnB1dC5cbiAgICAgICAgICB0aGlzLmVyciA9IGV4cG9ydHMuWl9ORUVEX0RJQ1Q7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdoaWxlICh0aGlzLnN0cm0uYXZhaWxfaW4gPiAwICYmIHRoaXMubW9kZSA9PT0gZXhwb3J0cy5HVU5aSVAgJiYgdGhpcy5lcnIgPT09IGV4cG9ydHMuWl9TVFJFQU1fRU5EICYmIHRoaXMuc3RybS5uZXh0X2luWzBdICE9PSAweDAwKSB7XG4gICAgICAgIC8vIEJ5dGVzIHJlbWFpbiBpbiBpbnB1dCBidWZmZXIuIFBlcmhhcHMgdGhpcyBpcyBhbm90aGVyIGNvbXByZXNzZWRcbiAgICAgICAgLy8gbWVtYmVyIGluIHRoZSBzYW1lIGFyY2hpdmUsIG9yIGp1c3QgdHJhaWxpbmcgZ2FyYmFnZS5cbiAgICAgICAgLy8gVHJhaWxpbmcgemVybyBieXRlcyBhcmUgb2theSwgdGhvdWdoLCBzaW5jZSB0aGV5IGFyZSBmcmVxdWVudGx5XG4gICAgICAgIC8vIHVzZWQgZm9yIHBhZGRpbmcuXG5cbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlKHRoaXMuc3RybSwgdGhpcy5mbHVzaCk7XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIG1vZGUgJyArIHRoaXMubW9kZSk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9jaGVja0Vycm9yID0gZnVuY3Rpb24gKCkge1xuICAvLyBBY2NlcHRhYmxlIGVycm9yIHN0YXRlcyBkZXBlbmQgb24gdGhlIHR5cGUgb2YgemxpYiBzdHJlYW0uXG4gIHN3aXRjaCAodGhpcy5lcnIpIHtcbiAgICBjYXNlIGV4cG9ydHMuWl9PSzpcbiAgICBjYXNlIGV4cG9ydHMuWl9CVUZfRVJST1I6XG4gICAgICBpZiAodGhpcy5zdHJtLmF2YWlsX291dCAhPT0gMCAmJiB0aGlzLmZsdXNoID09PSBleHBvcnRzLlpfRklOSVNIKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCd1bmV4cGVjdGVkIGVuZCBvZiBmaWxlJyk7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgZXhwb3J0cy5aX1NUUkVBTV9FTkQ6XG4gICAgICAvLyBub3JtYWwgc3RhdHVzZXMsIG5vdCBmYXRhbFxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLlpfTkVFRF9ESUNUOlxuICAgICAgaWYgKHRoaXMuZGljdGlvbmFyeSA9PSBudWxsKSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCdNaXNzaW5nIGRpY3Rpb25hcnknKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2Vycm9yKCdCYWQgZGljdGlvbmFyeScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGRlZmF1bHQ6XG4gICAgICAvLyBzb21ldGhpbmcgZWxzZS5cbiAgICAgIHRoaXMuX2Vycm9yKCdabGliIGVycm9yJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9hZnRlciA9IGZ1bmN0aW9uICgpIHtcbiAgaWYgKCF0aGlzLl9jaGVja0Vycm9yKCkpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgYXZhaWxfb3V0ID0gdGhpcy5zdHJtLmF2YWlsX291dDtcbiAgdmFyIGF2YWlsX2luID0gdGhpcy5zdHJtLmF2YWlsX2luO1xuXG4gIHRoaXMud3JpdGVfaW5fcHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAvLyBjYWxsIHRoZSB3cml0ZSgpIGNiXG4gIHRoaXMuY2FsbGJhY2soYXZhaWxfaW4sIGF2YWlsX291dCk7XG5cbiAgaWYgKHRoaXMucGVuZGluZ19jbG9zZSkge1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxufTtcblxuWmxpYi5wcm90b3R5cGUuX2Vycm9yID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHtcbiAgaWYgKHRoaXMuc3RybS5tc2cpIHtcbiAgICBtZXNzYWdlID0gdGhpcy5zdHJtLm1zZztcbiAgfVxuICB0aGlzLm9uZXJyb3IobWVzc2FnZSwgdGhpcy5lcnJcblxuICAvLyBubyBob3BlIG9mIHJlc2N1ZS5cbiAgKTt0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIGlmICh0aGlzLnBlbmRpbmdfY2xvc2UpIHtcbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbiAod2luZG93Qml0cywgbGV2ZWwsIG1lbUxldmVsLCBzdHJhdGVneSwgZGljdGlvbmFyeSkge1xuICBhc3NlcnQoYXJndW1lbnRzLmxlbmd0aCA9PT0gNCB8fCBhcmd1bWVudHMubGVuZ3RoID09PSA1LCAnaW5pdCh3aW5kb3dCaXRzLCBsZXZlbCwgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBbZGljdGlvbmFyeV0pJyk7XG5cbiAgYXNzZXJ0KHdpbmRvd0JpdHMgPj0gOCAmJiB3aW5kb3dCaXRzIDw9IDE1LCAnaW52YWxpZCB3aW5kb3dCaXRzJyk7XG4gIGFzc2VydChsZXZlbCA+PSAtMSAmJiBsZXZlbCA8PSA5LCAnaW52YWxpZCBjb21wcmVzc2lvbiBsZXZlbCcpO1xuXG4gIGFzc2VydChtZW1MZXZlbCA+PSAxICYmIG1lbUxldmVsIDw9IDksICdpbnZhbGlkIG1lbWxldmVsJyk7XG5cbiAgYXNzZXJ0KHN0cmF0ZWd5ID09PSBleHBvcnRzLlpfRklMVEVSRUQgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9IVUZGTUFOX09OTFkgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9STEUgfHwgc3RyYXRlZ3kgPT09IGV4cG9ydHMuWl9GSVhFRCB8fCBzdHJhdGVneSA9PT0gZXhwb3J0cy5aX0RFRkFVTFRfU1RSQVRFR1ksICdpbnZhbGlkIHN0cmF0ZWd5Jyk7XG5cbiAgdGhpcy5faW5pdChsZXZlbCwgd2luZG93Qml0cywgbWVtTGV2ZWwsIHN0cmF0ZWd5LCBkaWN0aW9uYXJ5KTtcbiAgdGhpcy5fc2V0RGljdGlvbmFyeSgpO1xufTtcblxuWmxpYi5wcm90b3R5cGUucGFyYW1zID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ2RlZmxhdGVQYXJhbXMgTm90IHN1cHBvcnRlZCcpO1xufTtcblxuWmxpYi5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuX3Jlc2V0KCk7XG4gIHRoaXMuX3NldERpY3Rpb25hcnkoKTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9pbml0ID0gZnVuY3Rpb24gKGxldmVsLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3ksIGRpY3Rpb25hcnkpIHtcbiAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB0aGlzLndpbmRvd0JpdHMgPSB3aW5kb3dCaXRzO1xuICB0aGlzLm1lbUxldmVsID0gbWVtTGV2ZWw7XG4gIHRoaXMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcblxuICB0aGlzLmZsdXNoID0gZXhwb3J0cy5aX05PX0ZMVVNIO1xuXG4gIHRoaXMuZXJyID0gZXhwb3J0cy5aX09LO1xuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1pJUCB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuR1VOWklQKSB7XG4gICAgdGhpcy53aW5kb3dCaXRzICs9IDE2O1xuICB9XG5cbiAgaWYgKHRoaXMubW9kZSA9PT0gZXhwb3J0cy5VTlpJUCkge1xuICAgIHRoaXMud2luZG93Qml0cyArPSAzMjtcbiAgfVxuXG4gIGlmICh0aGlzLm1vZGUgPT09IGV4cG9ydHMuREVGTEFURVJBVyB8fCB0aGlzLm1vZGUgPT09IGV4cG9ydHMuSU5GTEFURVJBVykge1xuICAgIHRoaXMud2luZG93Qml0cyA9IC0xICogdGhpcy53aW5kb3dCaXRzO1xuICB9XG5cbiAgdGhpcy5zdHJtID0gbmV3IFpzdHJlYW0oKTtcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5HWklQOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZUluaXQyKHRoaXMuc3RybSwgdGhpcy5sZXZlbCwgZXhwb3J0cy5aX0RFRkxBVEVELCB0aGlzLndpbmRvd0JpdHMsIHRoaXMubWVtTGV2ZWwsIHRoaXMuc3RyYXRlZ3kpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICBjYXNlIGV4cG9ydHMuSU5GTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuVU5aSVA6XG4gICAgICB0aGlzLmVyciA9IHpsaWJfaW5mbGF0ZS5pbmZsYXRlSW5pdDIodGhpcy5zdHJtLCB0aGlzLndpbmRvd0JpdHMpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBtb2RlICcgKyB0aGlzLm1vZGUpO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignSW5pdCBlcnJvcicpO1xuICB9XG5cbiAgdGhpcy5kaWN0aW9uYXJ5ID0gZGljdGlvbmFyeTtcblxuICB0aGlzLndyaXRlX2luX3Byb2dyZXNzID0gZmFsc2U7XG4gIHRoaXMuaW5pdF9kb25lID0gdHJ1ZTtcbn07XG5cblpsaWIucHJvdG90eXBlLl9zZXREaWN0aW9uYXJ5ID0gZnVuY3Rpb24gKCkge1xuICBpZiAodGhpcy5kaWN0aW9uYXJ5ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB0aGlzLmVyciA9IGV4cG9ydHMuWl9PSztcblxuICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFOlxuICAgIGNhc2UgZXhwb3J0cy5ERUZMQVRFUkFXOlxuICAgICAgdGhpcy5lcnIgPSB6bGliX2RlZmxhdGUuZGVmbGF0ZVNldERpY3Rpb25hcnkodGhpcy5zdHJtLCB0aGlzLmRpY3Rpb25hcnkpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHNldCBkaWN0aW9uYXJ5Jyk7XG4gIH1cbn07XG5cblpsaWIucHJvdG90eXBlLl9yZXNldCA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5lcnIgPSBleHBvcnRzLlpfT0s7XG5cbiAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURTpcbiAgICBjYXNlIGV4cG9ydHMuREVGTEFURVJBVzpcbiAgICBjYXNlIGV4cG9ydHMuR1pJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9kZWZsYXRlLmRlZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEU6XG4gICAgY2FzZSBleHBvcnRzLklORkxBVEVSQVc6XG4gICAgY2FzZSBleHBvcnRzLkdVTlpJUDpcbiAgICAgIHRoaXMuZXJyID0gemxpYl9pbmZsYXRlLmluZmxhdGVSZXNldCh0aGlzLnN0cm0pO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKHRoaXMuZXJyICE9PSBleHBvcnRzLlpfT0spIHtcbiAgICB0aGlzLl9lcnJvcignRmFpbGVkIHRvIHJlc2V0IHN0cmVhbScpO1xuICB9XG59O1xuXG5leHBvcnRzLlpsaWIgPSBabGliOyIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG5mdW5jdGlvbiBaU3RyZWFtKCkge1xuICAvKiBuZXh0IGlucHV0IGJ5dGUgKi9cbiAgdGhpcy5pbnB1dCA9IG51bGw7IC8vIEpTIHNwZWNpZmljLCBiZWNhdXNlIHdlIGhhdmUgbm8gcG9pbnRlcnNcbiAgdGhpcy5uZXh0X2luID0gMDtcbiAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBpbnB1dCAqL1xuICB0aGlzLmF2YWlsX2luID0gMDtcbiAgLyogdG90YWwgbnVtYmVyIG9mIGlucHV0IGJ5dGVzIHJlYWQgc28gZmFyICovXG4gIHRoaXMudG90YWxfaW4gPSAwO1xuICAvKiBuZXh0IG91dHB1dCBieXRlIHNob3VsZCBiZSBwdXQgdGhlcmUgKi9cbiAgdGhpcy5vdXRwdXQgPSBudWxsOyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG4gIHRoaXMubmV4dF9vdXQgPSAwO1xuICAvKiByZW1haW5pbmcgZnJlZSBzcGFjZSBhdCBvdXRwdXQgKi9cbiAgdGhpcy5hdmFpbF9vdXQgPSAwO1xuICAvKiB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgb3V0cHV0IHNvIGZhciAqL1xuICB0aGlzLnRvdGFsX291dCA9IDA7XG4gIC8qIGxhc3QgZXJyb3IgbWVzc2FnZSwgTlVMTCBpZiBubyBlcnJvciAqL1xuICB0aGlzLm1zZyA9ICcnLypaX05VTEwqLztcbiAgLyogbm90IHZpc2libGUgYnkgYXBwbGljYXRpb25zICovXG4gIHRoaXMuc3RhdGUgPSBudWxsO1xuICAvKiBiZXN0IGd1ZXNzIGFib3V0IHRoZSBkYXRhIHR5cGU6IGJpbmFyeSBvciB0ZXh0ICovXG4gIHRoaXMuZGF0YV90eXBlID0gMi8qWl9VTktOT1dOKi87XG4gIC8qIGFkbGVyMzIgdmFsdWUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhICovXG4gIHRoaXMuYWRsZXIgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFpTdHJlYW07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzICAgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcbnZhciB0cmVlcyAgID0gcmVxdWlyZSgnLi90cmVlcycpO1xudmFyIGFkbGVyMzIgPSByZXF1aXJlKCcuL2FkbGVyMzInKTtcbnZhciBjcmMzMiAgID0gcmVxdWlyZSgnLi9jcmMzMicpO1xudmFyIG1zZyAgICAgPSByZXF1aXJlKCcuL21lc3NhZ2VzJyk7XG5cbi8qIFB1YmxpYyBjb25zdGFudHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbi8qIEFsbG93ZWQgZmx1c2ggdmFsdWVzOyBzZWUgZGVmbGF0ZSgpIGFuZCBpbmZsYXRlKCkgYmVsb3cgZm9yIGRldGFpbHMgKi9cbnZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xudmFyIFpfUEFSVElBTF9GTFVTSCA9IDE7XG4vL3ZhciBaX1NZTkNfRkxVU0ggICAgPSAyO1xudmFyIFpfRlVMTF9GTFVTSCAgICA9IDM7XG52YXIgWl9GSU5JU0ggICAgICAgID0gNDtcbnZhciBaX0JMT0NLICAgICAgICAgPSA1O1xuLy92YXIgWl9UUkVFUyAgICAgICAgID0gNjtcblxuXG4vKiBSZXR1cm4gY29kZXMgZm9yIHRoZSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGZ1bmN0aW9ucy4gTmVnYXRpdmUgdmFsdWVzXG4gKiBhcmUgZXJyb3JzLCBwb3NpdGl2ZSB2YWx1ZXMgYXJlIHVzZWQgZm9yIHNwZWNpYWwgYnV0IG5vcm1hbCBldmVudHMuXG4gKi9cbnZhciBaX09LICAgICAgICAgICAgPSAwO1xudmFyIFpfU1RSRUFNX0VORCAgICA9IDE7XG4vL3ZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG4vL3ZhciBaX01FTV9FUlJPUiAgICAgPSAtNDtcbnZhciBaX0JVRl9FUlJPUiAgICAgPSAtNTtcbi8vdmFyIFpfVkVSU0lPTl9FUlJPUiA9IC02O1xuXG5cbi8qIGNvbXByZXNzaW9uIGxldmVscyAqL1xuLy92YXIgWl9OT19DT01QUkVTU0lPTiAgICAgID0gMDtcbi8vdmFyIFpfQkVTVF9TUEVFRCAgICAgICAgICA9IDE7XG4vL3ZhciBaX0JFU1RfQ09NUFJFU1NJT04gICAgPSA5O1xudmFyIFpfREVGQVVMVF9DT01QUkVTU0lPTiA9IC0xO1xuXG5cbnZhciBaX0ZJTFRFUkVEICAgICAgICAgICAgPSAxO1xudmFyIFpfSFVGRk1BTl9PTkxZICAgICAgICA9IDI7XG52YXIgWl9STEUgICAgICAgICAgICAgICAgID0gMztcbnZhciBaX0ZJWEVEICAgICAgICAgICAgICAgPSA0O1xudmFyIFpfREVGQVVMVF9TVFJBVEVHWSAgICA9IDA7XG5cbi8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUoKSkgKi9cbi8vdmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7XG4vL3ZhciBaX1RFWFQgICAgICAgICAgICAgICAgPSAxO1xuLy92YXIgWl9BU0NJSSAgICAgICAgICAgICAgID0gMTsgLy8gPSBaX1RFWFRcbnZhciBaX1VOS05PV04gICAgICAgICAgICAgPSAyO1xuXG5cbi8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqL1xudmFyIFpfREVGTEFURUQgID0gODtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG52YXIgTUFYX01FTV9MRVZFTCA9IDk7XG4vKiBNYXhpbXVtIHZhbHVlIGZvciBtZW1MZXZlbCBpbiBkZWZsYXRlSW5pdDIgKi9cbnZhciBNQVhfV0JJVFMgPSAxNTtcbi8qIDMySyBMWjc3IHdpbmRvdyAqL1xudmFyIERFRl9NRU1fTEVWRUwgPSA4O1xuXG5cbnZhciBMRU5HVEhfQ09ERVMgID0gMjk7XG4vKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi9cbnZhciBMSVRFUkFMUyAgICAgID0gMjU2O1xuLyogbnVtYmVyIG9mIGxpdGVyYWwgYnl0ZXMgMC4uMjU1ICovXG52YXIgTF9DT0RFUyAgICAgICA9IExJVEVSQUxTICsgMSArIExFTkdUSF9DT0RFUztcbi8qIG51bWJlciBvZiBMaXRlcmFsIG9yIExlbmd0aCBjb2RlcywgaW5jbHVkaW5nIHRoZSBFTkRfQkxPQ0sgY29kZSAqL1xudmFyIERfQ09ERVMgICAgICAgPSAzMDtcbi8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqL1xudmFyIEJMX0NPREVTICAgICAgPSAxOTtcbi8qIG51bWJlciBvZiBjb2RlcyB1c2VkIHRvIHRyYW5zZmVyIHRoZSBiaXQgbGVuZ3RocyAqL1xudmFyIEhFQVBfU0laRSAgICAgPSAyICogTF9DT0RFUyArIDE7XG4vKiBtYXhpbXVtIGhlYXAgc2l6ZSAqL1xudmFyIE1BWF9CSVRTICA9IDE1O1xuLyogQWxsIGNvZGVzIG11c3Qgbm90IGV4Y2VlZCBNQVhfQklUUyBiaXRzICovXG5cbnZhciBNSU5fTUFUQ0ggPSAzO1xudmFyIE1BWF9NQVRDSCA9IDI1ODtcbnZhciBNSU5fTE9PS0FIRUFEID0gKE1BWF9NQVRDSCArIE1JTl9NQVRDSCArIDEpO1xuXG52YXIgUFJFU0VUX0RJQ1QgPSAweDIwO1xuXG52YXIgSU5JVF9TVEFURSA9IDQyO1xudmFyIEVYVFJBX1NUQVRFID0gNjk7XG52YXIgTkFNRV9TVEFURSA9IDczO1xudmFyIENPTU1FTlRfU1RBVEUgPSA5MTtcbnZhciBIQ1JDX1NUQVRFID0gMTAzO1xudmFyIEJVU1lfU1RBVEUgPSAxMTM7XG52YXIgRklOSVNIX1NUQVRFID0gNjY2O1xuXG52YXIgQlNfTkVFRF9NT1JFICAgICAgPSAxOyAvKiBibG9jayBub3QgY29tcGxldGVkLCBuZWVkIG1vcmUgaW5wdXQgb3IgbW9yZSBvdXRwdXQgKi9cbnZhciBCU19CTE9DS19ET05FICAgICA9IDI7IC8qIGJsb2NrIGZsdXNoIHBlcmZvcm1lZCAqL1xudmFyIEJTX0ZJTklTSF9TVEFSVEVEID0gMzsgLyogZmluaXNoIHN0YXJ0ZWQsIG5lZWQgb25seSBtb3JlIG91dHB1dCBhdCBuZXh0IGRlZmxhdGUgKi9cbnZhciBCU19GSU5JU0hfRE9ORSAgICA9IDQ7IC8qIGZpbmlzaCBkb25lLCBhY2NlcHQgbm8gbW9yZSBpbnB1dCBvciBvdXRwdXQgKi9cblxudmFyIE9TX0NPREUgPSAweDAzOyAvLyBVbml4IDopIC4gRG9uJ3QgZGV0ZWN0LCB1c2UgdGhpcyBkZWZhdWx0LlxuXG5mdW5jdGlvbiBlcnIoc3RybSwgZXJyb3JDb2RlKSB7XG4gIHN0cm0ubXNnID0gbXNnW2Vycm9yQ29kZV07XG4gIHJldHVybiBlcnJvckNvZGU7XG59XG5cbmZ1bmN0aW9uIHJhbmsoZikge1xuICByZXR1cm4gKChmKSA8PCAxKSAtICgoZikgPiA0ID8gOSA6IDApO1xufVxuXG5mdW5jdGlvbiB6ZXJvKGJ1ZikgeyB2YXIgbGVuID0gYnVmLmxlbmd0aDsgd2hpbGUgKC0tbGVuID49IDApIHsgYnVmW2xlbl0gPSAwOyB9IH1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCBhcyBtdWNoIHBlbmRpbmcgb3V0cHV0IGFzIHBvc3NpYmxlLiBBbGwgZGVmbGF0ZSgpIG91dHB1dCBnb2VzXG4gKiB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gc28gc29tZSBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gbW9kaWZ5IGl0XG4gKiB0byBhdm9pZCBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+b3V0cHV0IGJ1ZmZlciBhbmQgY29weWluZyBpbnRvIGl0LlxuICogKFNlZSBhbHNvIHJlYWRfYnVmKCkpLlxuICovXG5mdW5jdGlvbiBmbHVzaF9wZW5kaW5nKHN0cm0pIHtcbiAgdmFyIHMgPSBzdHJtLnN0YXRlO1xuXG4gIC8vX3RyX2ZsdXNoX2JpdHMocyk7XG4gIHZhciBsZW4gPSBzLnBlbmRpbmc7XG4gIGlmIChsZW4gPiBzdHJtLmF2YWlsX291dCkge1xuICAgIGxlbiA9IHN0cm0uYXZhaWxfb3V0O1xuICB9XG4gIGlmIChsZW4gPT09IDApIHsgcmV0dXJuOyB9XG5cbiAgdXRpbHMuYXJyYXlTZXQoc3RybS5vdXRwdXQsIHMucGVuZGluZ19idWYsIHMucGVuZGluZ19vdXQsIGxlbiwgc3RybS5uZXh0X291dCk7XG4gIHN0cm0ubmV4dF9vdXQgKz0gbGVuO1xuICBzLnBlbmRpbmdfb3V0ICs9IGxlbjtcbiAgc3RybS50b3RhbF9vdXQgKz0gbGVuO1xuICBzdHJtLmF2YWlsX291dCAtPSBsZW47XG4gIHMucGVuZGluZyAtPSBsZW47XG4gIGlmIChzLnBlbmRpbmcgPT09IDApIHtcbiAgICBzLnBlbmRpbmdfb3V0ID0gMDtcbiAgfVxufVxuXG5cbmZ1bmN0aW9uIGZsdXNoX2Jsb2NrX29ubHkocywgbGFzdCkge1xuICB0cmVlcy5fdHJfZmx1c2hfYmxvY2socywgKHMuYmxvY2tfc3RhcnQgPj0gMCA/IHMuYmxvY2tfc3RhcnQgOiAtMSksIHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0LCBsYXN0KTtcbiAgcy5ibG9ja19zdGFydCA9IHMuc3Ryc3RhcnQ7XG4gIGZsdXNoX3BlbmRpbmcocy5zdHJtKTtcbn1cblxuXG5mdW5jdGlvbiBwdXRfYnl0ZShzLCBiKSB7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gYjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBQdXQgYSBzaG9ydCBpbiB0aGUgcGVuZGluZyBidWZmZXIuIFRoZSAxNi1iaXQgdmFsdWUgaXMgcHV0IGluIE1TQiBvcmRlci5cbiAqIElOIGFzc2VydGlvbjogdGhlIHN0cmVhbSBzdGF0ZSBpcyBjb3JyZWN0IGFuZCB0aGVyZSBpcyBlbm91Z2ggcm9vbSBpblxuICogcGVuZGluZ19idWYuXG4gKi9cbmZ1bmN0aW9uIHB1dFNob3J0TVNCKHMsIGIpIHtcbi8vICBwdXRfYnl0ZShzLCAoQnl0ZSkoYiA+PiA4KSk7XG4vLyAgcHV0X2J5dGUocywgKEJ5dGUpKGIgJiAweGZmKSk7XG4gIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gKGIgPj4+IDgpICYgMHhmZjtcbiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBiICYgMHhmZjtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJlYWQgYSBuZXcgYnVmZmVyIGZyb20gdGhlIGN1cnJlbnQgaW5wdXQgc3RyZWFtLCB1cGRhdGUgdGhlIGFkbGVyMzJcbiAqIGFuZCB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgcmVhZC4gIEFsbCBkZWZsYXRlKCkgaW5wdXQgZ29lcyB0aHJvdWdoXG4gKiB0aGlzIGZ1bmN0aW9uIHNvIHNvbWUgYXBwbGljYXRpb25zIG1heSB3aXNoIHRvIG1vZGlmeSBpdCB0byBhdm9pZFxuICogYWxsb2NhdGluZyBhIGxhcmdlIHN0cm0tPmlucHV0IGJ1ZmZlciBhbmQgY29weWluZyBmcm9tIGl0LlxuICogKFNlZSBhbHNvIGZsdXNoX3BlbmRpbmcoKSkuXG4gKi9cbmZ1bmN0aW9uIHJlYWRfYnVmKHN0cm0sIGJ1Ziwgc3RhcnQsIHNpemUpIHtcbiAgdmFyIGxlbiA9IHN0cm0uYXZhaWxfaW47XG5cbiAgaWYgKGxlbiA+IHNpemUpIHsgbGVuID0gc2l6ZTsgfVxuICBpZiAobGVuID09PSAwKSB7IHJldHVybiAwOyB9XG5cbiAgc3RybS5hdmFpbF9pbiAtPSBsZW47XG5cbiAgLy8gem1lbWNweShidWYsIHN0cm0tPm5leHRfaW4sIGxlbik7XG4gIHV0aWxzLmFycmF5U2V0KGJ1Ziwgc3RybS5pbnB1dCwgc3RybS5uZXh0X2luLCBsZW4sIHN0YXJ0KTtcbiAgaWYgKHN0cm0uc3RhdGUud3JhcCA9PT0gMSkge1xuICAgIHN0cm0uYWRsZXIgPSBhZGxlcjMyKHN0cm0uYWRsZXIsIGJ1ZiwgbGVuLCBzdGFydCk7XG4gIH1cblxuICBlbHNlIGlmIChzdHJtLnN0YXRlLndyYXAgPT09IDIpIHtcbiAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgYnVmLCBsZW4sIHN0YXJ0KTtcbiAgfVxuXG4gIHN0cm0ubmV4dF9pbiArPSBsZW47XG4gIHN0cm0udG90YWxfaW4gKz0gbGVuO1xuXG4gIHJldHVybiBsZW47XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZXQgbWF0Y2hfc3RhcnQgdG8gdGhlIGxvbmdlc3QgbWF0Y2ggc3RhcnRpbmcgYXQgdGhlIGdpdmVuIHN0cmluZyBhbmRcbiAqIHJldHVybiBpdHMgbGVuZ3RoLiBNYXRjaGVzIHNob3J0ZXIgb3IgZXF1YWwgdG8gcHJldl9sZW5ndGggYXJlIGRpc2NhcmRlZCxcbiAqIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byBwcmV2X2xlbmd0aCBhbmQgbWF0Y2hfc3RhcnQgaXNcbiAqIGdhcmJhZ2UuXG4gKiBJTiBhc3NlcnRpb25zOiBjdXJfbWF0Y2ggaXMgdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW4gZm9yIHRoZSBjdXJyZW50XG4gKiAgIHN0cmluZyAoc3Ryc3RhcnQpIGFuZCBpdHMgZGlzdGFuY2UgaXMgPD0gTUFYX0RJU1QsIGFuZCBwcmV2X2xlbmd0aCA+PSAxXG4gKiBPVVQgYXNzZXJ0aW9uOiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIG5vdCBncmVhdGVyIHRoYW4gcy0+bG9va2FoZWFkLlxuICovXG5mdW5jdGlvbiBsb25nZXN0X21hdGNoKHMsIGN1cl9tYXRjaCkge1xuICB2YXIgY2hhaW5fbGVuZ3RoID0gcy5tYXhfY2hhaW5fbGVuZ3RoOyAgICAgIC8qIG1heCBoYXNoIGNoYWluIGxlbmd0aCAqL1xuICB2YXIgc2NhbiA9IHMuc3Ryc3RhcnQ7IC8qIGN1cnJlbnQgc3RyaW5nICovXG4gIHZhciBtYXRjaDsgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoZWQgc3RyaW5nICovXG4gIHZhciBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi9cbiAgdmFyIGJlc3RfbGVuID0gcy5wcmV2X2xlbmd0aDsgICAgICAgICAgICAgIC8qIGJlc3QgbWF0Y2ggbGVuZ3RoIHNvIGZhciAqL1xuICB2YXIgbmljZV9tYXRjaCA9IHMubmljZV9tYXRjaDsgICAgICAgICAgICAgLyogc3RvcCBpZiBtYXRjaCBsb25nIGVub3VnaCAqL1xuICB2YXIgbGltaXQgPSAocy5zdHJzdGFydCA+IChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpKSA/XG4gICAgICBzLnN0cnN0YXJ0IC0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkgOiAwLypOSUwqLztcblxuICB2YXIgX3dpbiA9IHMud2luZG93OyAvLyBzaG9ydGN1dFxuXG4gIHZhciB3bWFzayA9IHMud19tYXNrO1xuICB2YXIgcHJldiAgPSBzLnByZXY7XG5cbiAgLyogU3RvcCB3aGVuIGN1cl9tYXRjaCBiZWNvbWVzIDw9IGxpbWl0LiBUbyBzaW1wbGlmeSB0aGUgY29kZSxcbiAgICogd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZyBvZiB3aW5kb3cgaW5kZXggMC5cbiAgICovXG5cbiAgdmFyIHN0cmVuZCA9IHMuc3Ryc3RhcnQgKyBNQVhfTUFUQ0g7XG4gIHZhciBzY2FuX2VuZDEgID0gX3dpbltzY2FuICsgYmVzdF9sZW4gLSAxXTtcbiAgdmFyIHNjYW5fZW5kICAgPSBfd2luW3NjYW4gKyBiZXN0X2xlbl07XG5cbiAgLyogVGhlIGNvZGUgaXMgb3B0aW1pemVkIGZvciBIQVNIX0JJVFMgPj0gOCBhbmQgTUFYX01BVENILTIgbXVsdGlwbGUgb2YgMTYuXG4gICAqIEl0IGlzIGVhc3kgdG8gZ2V0IHJpZCBvZiB0aGlzIG9wdGltaXphdGlvbiBpZiBuZWNlc3NhcnkuXG4gICAqL1xuICAvLyBBc3NlcnQocy0+aGFzaF9iaXRzID49IDggJiYgTUFYX01BVENIID09IDI1OCwgXCJDb2RlIHRvbyBjbGV2ZXJcIik7XG5cbiAgLyogRG8gbm90IHdhc3RlIHRvbyBtdWNoIHRpbWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgZ29vZCBtYXRjaDogKi9cbiAgaWYgKHMucHJldl9sZW5ndGggPj0gcy5nb29kX21hdGNoKSB7XG4gICAgY2hhaW5fbGVuZ3RoID4+PSAyO1xuICB9XG4gIC8qIERvIG5vdCBsb29rIGZvciBtYXRjaGVzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBpbnB1dC4gVGhpcyBpcyBuZWNlc3NhcnlcbiAgICogdG8gbWFrZSBkZWZsYXRlIGRldGVybWluaXN0aWMuXG4gICAqL1xuICBpZiAobmljZV9tYXRjaCA+IHMubG9va2FoZWFkKSB7IG5pY2VfbWF0Y2ggPSBzLmxvb2thaGVhZDsgfVxuXG4gIC8vIEFzc2VydCgodWxnKXMtPnN0cnN0YXJ0IDw9IHMtPndpbmRvd19zaXplLU1JTl9MT09LQUhFQUQsIFwibmVlZCBsb29rYWhlYWRcIik7XG5cbiAgZG8ge1xuICAgIC8vIEFzc2VydChjdXJfbWF0Y2ggPCBzLT5zdHJzdGFydCwgXCJubyBmdXR1cmVcIik7XG4gICAgbWF0Y2ggPSBjdXJfbWF0Y2g7XG5cbiAgICAvKiBTa2lwIHRvIG5leHQgbWF0Y2ggaWYgdGhlIG1hdGNoIGxlbmd0aCBjYW5ub3QgaW5jcmVhc2VcbiAgICAgKiBvciBpZiB0aGUgbWF0Y2ggbGVuZ3RoIGlzIGxlc3MgdGhhbiAyLiAgTm90ZSB0aGF0IHRoZSBjaGVja3MgYmVsb3dcbiAgICAgKiBmb3IgaW5zdWZmaWNpZW50IGxvb2thaGVhZCBvbmx5IG9jY3VyIG9jY2FzaW9uYWxseSBmb3IgcGVyZm9ybWFuY2VcbiAgICAgKiByZWFzb25zLiAgVGhlcmVmb3JlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHdpbGwgYmUgYWNjZXNzZWQsIGFuZFxuICAgICAqIGNvbmRpdGlvbmFsIGp1bXBzIHdpbGwgYmUgbWFkZSB0aGF0IGRlcGVuZCBvbiB0aG9zZSB2YWx1ZXMuXG4gICAgICogSG93ZXZlciB0aGUgbGVuZ3RoIG9mIHRoZSBtYXRjaCBpcyBsaW1pdGVkIHRvIHRoZSBsb29rYWhlYWQsIHNvXG4gICAgICogdGhlIG91dHB1dCBvZiBkZWZsYXRlIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgdW5pbml0aWFsaXplZCB2YWx1ZXMuXG4gICAgICovXG5cbiAgICBpZiAoX3dpblttYXRjaCArIGJlc3RfbGVuXSAgICAgIT09IHNjYW5fZW5kICB8fFxuICAgICAgICBfd2luW21hdGNoICsgYmVzdF9sZW4gLSAxXSAhPT0gc2Nhbl9lbmQxIHx8XG4gICAgICAgIF93aW5bbWF0Y2hdICAgICAgICAgICAgICAgICE9PSBfd2luW3NjYW5dIHx8XG4gICAgICAgIF93aW5bKyttYXRjaF0gICAgICAgICAgICAgICE9PSBfd2luW3NjYW4gKyAxXSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgLyogVGhlIGNoZWNrIGF0IGJlc3RfbGVuLTEgY2FuIGJlIHJlbW92ZWQgYmVjYXVzZSBpdCB3aWxsIGJlIG1hZGVcbiAgICAgKiBhZ2FpbiBsYXRlci4gKFRoaXMgaGV1cmlzdGljIGlzIG5vdCBhbHdheXMgYSB3aW4uKVxuICAgICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gY29tcGFyZSBzY2FuWzJdIGFuZCBtYXRjaFsyXSBzaW5jZSB0aGV5XG4gICAgICogYXJlIGFsd2F5cyBlcXVhbCB3aGVuIHRoZSBvdGhlciBieXRlcyBtYXRjaCwgZ2l2ZW4gdGhhdFxuICAgICAqIHRoZSBoYXNoIGtleXMgYXJlIGVxdWFsIGFuZCB0aGF0IEhBU0hfQklUUyA+PSA4LlxuICAgICAqL1xuICAgIHNjYW4gKz0gMjtcbiAgICBtYXRjaCsrO1xuICAgIC8vIEFzc2VydCgqc2NhbiA9PSAqbWF0Y2gsIFwibWF0Y2hbMl0/XCIpO1xuXG4gICAgLyogV2UgY2hlY2sgZm9yIGluc3VmZmljaWVudCBsb29rYWhlYWQgb25seSBldmVyeSA4dGggY29tcGFyaXNvbjtcbiAgICAgKiB0aGUgMjU2dGggY2hlY2sgd2lsbCBiZSBtYWRlIGF0IHN0cnN0YXJ0KzI1OC5cbiAgICAgKi9cbiAgICBkbyB7XG4gICAgICAvKmpzaGludCBub2VtcHR5OmZhbHNlKi9cbiAgICB9IHdoaWxlIChfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJlxuICAgICAgICAgICAgIF93aW5bKytzY2FuXSA9PT0gX3dpblsrK21hdGNoXSAmJiBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiZcbiAgICAgICAgICAgICBfd2luWysrc2Nhbl0gPT09IF93aW5bKyttYXRjaF0gJiYgX3dpblsrK3NjYW5dID09PSBfd2luWysrbWF0Y2hdICYmXG4gICAgICAgICAgICAgc2NhbiA8IHN0cmVuZCk7XG5cbiAgICAvLyBBc3NlcnQoc2NhbiA8PSBzLT53aW5kb3crKHVuc2lnbmVkKShzLT53aW5kb3dfc2l6ZS0xKSwgXCJ3aWxkIHNjYW5cIik7XG5cbiAgICBsZW4gPSBNQVhfTUFUQ0ggLSAoc3RyZW5kIC0gc2Nhbik7XG4gICAgc2NhbiA9IHN0cmVuZCAtIE1BWF9NQVRDSDtcblxuICAgIGlmIChsZW4gPiBiZXN0X2xlbikge1xuICAgICAgcy5tYXRjaF9zdGFydCA9IGN1cl9tYXRjaDtcbiAgICAgIGJlc3RfbGVuID0gbGVuO1xuICAgICAgaWYgKGxlbiA+PSBuaWNlX21hdGNoKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc2Nhbl9lbmQxICA9IF93aW5bc2NhbiArIGJlc3RfbGVuIC0gMV07XG4gICAgICBzY2FuX2VuZCAgID0gX3dpbltzY2FuICsgYmVzdF9sZW5dO1xuICAgIH1cbiAgfSB3aGlsZSAoKGN1cl9tYXRjaCA9IHByZXZbY3VyX21hdGNoICYgd21hc2tdKSA+IGxpbWl0ICYmIC0tY2hhaW5fbGVuZ3RoICE9PSAwKTtcblxuICBpZiAoYmVzdF9sZW4gPD0gcy5sb29rYWhlYWQpIHtcbiAgICByZXR1cm4gYmVzdF9sZW47XG4gIH1cbiAgcmV0dXJuIHMubG9va2FoZWFkO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogRmlsbCB0aGUgd2luZG93IHdoZW4gdGhlIGxvb2thaGVhZCBiZWNvbWVzIGluc3VmZmljaWVudC5cbiAqIFVwZGF0ZXMgc3Ryc3RhcnQgYW5kIGxvb2thaGVhZC5cbiAqXG4gKiBJTiBhc3NlcnRpb246IGxvb2thaGVhZCA8IE1JTl9MT09LQUhFQURcbiAqIE9VVCBhc3NlcnRpb25zOiBzdHJzdGFydCA8PSB3aW5kb3dfc2l6ZS1NSU5fTE9PS0FIRUFEXG4gKiAgICBBdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYmVlbiByZWFkLCBvciBhdmFpbF9pbiA9PSAwOyByZWFkcyBhcmVcbiAqICAgIHBlcmZvcm1lZCBmb3IgYXQgbGVhc3QgdHdvIGJ5dGVzIChyZXF1aXJlZCBmb3IgdGhlIHppcCB0cmFuc2xhdGVfZW9sXG4gKiAgICBvcHRpb24gLS0gbm90IHN1cHBvcnRlZCBoZXJlKS5cbiAqL1xuZnVuY3Rpb24gZmlsbF93aW5kb3cocykge1xuICB2YXIgX3dfc2l6ZSA9IHMud19zaXplO1xuICB2YXIgcCwgbiwgbSwgbW9yZSwgc3RyO1xuXG4gIC8vQXNzZXJ0KHMtPmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQsIFwiYWxyZWFkeSBlbm91Z2ggbG9va2FoZWFkXCIpO1xuXG4gIGRvIHtcbiAgICBtb3JlID0gcy53aW5kb3dfc2l6ZSAtIHMubG9va2FoZWFkIC0gcy5zdHJzdGFydDtcblxuICAgIC8vIEpTIGludHMgaGF2ZSAzMiBiaXQsIGJsb2NrIGJlbG93IG5vdCBuZWVkZWRcbiAgICAvKiBEZWFsIHdpdGggIUAjJCUgNjRLIGxpbWl0OiAqL1xuICAgIC8vaWYgKHNpemVvZihpbnQpIDw9IDIpIHtcbiAgICAvLyAgICBpZiAobW9yZSA9PSAwICYmIHMtPnN0cnN0YXJ0ID09IDAgJiYgcy0+bG9va2FoZWFkID09IDApIHtcbiAgICAvLyAgICAgICAgbW9yZSA9IHdzaXplO1xuICAgIC8vXG4gICAgLy8gIH0gZWxzZSBpZiAobW9yZSA9PSAodW5zaWduZWQpKC0xKSkge1xuICAgIC8vICAgICAgICAvKiBWZXJ5IHVubGlrZWx5LCBidXQgcG9zc2libGUgb24gMTYgYml0IG1hY2hpbmUgaWZcbiAgICAvLyAgICAgICAgICogc3Ryc3RhcnQgPT0gMCAmJiBsb29rYWhlYWQgPT0gMSAoaW5wdXQgZG9uZSBhIGJ5dGUgYXQgdGltZSlcbiAgICAvLyAgICAgICAgICovXG4gICAgLy8gICAgICAgIG1vcmUtLTtcbiAgICAvLyAgICB9XG4gICAgLy99XG5cblxuICAgIC8qIElmIHRoZSB3aW5kb3cgaXMgYWxtb3N0IGZ1bGwgYW5kIHRoZXJlIGlzIGluc3VmZmljaWVudCBsb29rYWhlYWQsXG4gICAgICogbW92ZSB0aGUgdXBwZXIgaGFsZiB0byB0aGUgbG93ZXIgb25lIHRvIG1ha2Ugcm9vbSBpbiB0aGUgdXBwZXIgaGFsZi5cbiAgICAgKi9cbiAgICBpZiAocy5zdHJzdGFydCA+PSBfd19zaXplICsgKF93X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkge1xuXG4gICAgICB1dGlscy5hcnJheVNldChzLndpbmRvdywgcy53aW5kb3csIF93X3NpemUsIF93X3NpemUsIDApO1xuICAgICAgcy5tYXRjaF9zdGFydCAtPSBfd19zaXplO1xuICAgICAgcy5zdHJzdGFydCAtPSBfd19zaXplO1xuICAgICAgLyogd2Ugbm93IGhhdmUgc3Ryc3RhcnQgPj0gTUFYX0RJU1QgKi9cbiAgICAgIHMuYmxvY2tfc3RhcnQgLT0gX3dfc2l6ZTtcblxuICAgICAgLyogU2xpZGUgdGhlIGhhc2ggdGFibGUgKGNvdWxkIGJlIGF2b2lkZWQgd2l0aCAzMiBiaXQgdmFsdWVzXG4gICAgICAgYXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5IHVzYWdlKS4gV2Ugc2xpZGUgZXZlbiB3aGVuIGxldmVsID09IDBcbiAgICAgICB0byBrZWVwIHRoZSBoYXNoIHRhYmxlIGNvbnNpc3RlbnQgaWYgd2Ugc3dpdGNoIGJhY2sgdG8gbGV2ZWwgPiAwXG4gICAgICAgbGF0ZXIuIChVc2luZyBsZXZlbCAwIHBlcm1hbmVudGx5IGlzIG5vdCBhbiBvcHRpbWFsIHVzYWdlIG9mXG4gICAgICAgemxpYiwgc28gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHBhdGhvbG9naWNhbCBjYXNlLilcbiAgICAgICAqL1xuXG4gICAgICBuID0gcy5oYXNoX3NpemU7XG4gICAgICBwID0gbjtcbiAgICAgIGRvIHtcbiAgICAgICAgbSA9IHMuaGVhZFstLXBdO1xuICAgICAgICBzLmhlYWRbcF0gPSAobSA+PSBfd19zaXplID8gbSAtIF93X3NpemUgOiAwKTtcbiAgICAgIH0gd2hpbGUgKC0tbik7XG5cbiAgICAgIG4gPSBfd19zaXplO1xuICAgICAgcCA9IG47XG4gICAgICBkbyB7XG4gICAgICAgIG0gPSBzLnByZXZbLS1wXTtcbiAgICAgICAgcy5wcmV2W3BdID0gKG0gPj0gX3dfc2l6ZSA/IG0gLSBfd19zaXplIDogMCk7XG4gICAgICAgIC8qIElmIG4gaXMgbm90IG9uIGFueSBoYXNoIGNoYWluLCBwcmV2W25dIGlzIGdhcmJhZ2UgYnV0XG4gICAgICAgICAqIGl0cyB2YWx1ZSB3aWxsIG5ldmVyIGJlIHVzZWQuXG4gICAgICAgICAqL1xuICAgICAgfSB3aGlsZSAoLS1uKTtcblxuICAgICAgbW9yZSArPSBfd19zaXplO1xuICAgIH1cbiAgICBpZiAocy5zdHJtLmF2YWlsX2luID09PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICAvKiBJZiB0aGVyZSB3YXMgbm8gc2xpZGluZzpcbiAgICAgKiAgICBzdHJzdGFydCA8PSBXU0laRStNQVhfRElTVC0xICYmIGxvb2thaGVhZCA8PSBNSU5fTE9PS0FIRUFEIC0gMSAmJlxuICAgICAqICAgIG1vcmUgPT0gd2luZG93X3NpemUgLSBsb29rYWhlYWQgLSBzdHJzdGFydFxuICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAoTUlOX0xPT0tBSEVBRC0xICsgV1NJWkUgKyBNQVhfRElTVC0xKVxuICAgICAqID0+IG1vcmUgPj0gd2luZG93X3NpemUgLSAyKldTSVpFICsgMlxuICAgICAqIEluIHRoZSBCSUdfTUVNIG9yIE1NQVAgY2FzZSAobm90IHlldCBzdXBwb3J0ZWQpLFxuICAgICAqICAgd2luZG93X3NpemUgPT0gaW5wdXRfc2l6ZSArIE1JTl9MT09LQUhFQUQgICYmXG4gICAgICogICBzdHJzdGFydCArIHMtPmxvb2thaGVhZCA8PSBpbnB1dF9zaXplID0+IG1vcmUgPj0gTUlOX0xPT0tBSEVBRC5cbiAgICAgKiBPdGhlcndpc2UsIHdpbmRvd19zaXplID09IDIqV1NJWkUgc28gbW9yZSA+PSAyLlxuICAgICAqIElmIHRoZXJlIHdhcyBzbGlkaW5nLCBtb3JlID49IFdTSVpFLiBTbyBpbiBhbGwgY2FzZXMsIG1vcmUgPj0gMi5cbiAgICAgKi9cbiAgICAvL0Fzc2VydChtb3JlID49IDIsIFwibW9yZSA8IDJcIik7XG4gICAgbiA9IHJlYWRfYnVmKHMuc3RybSwgcy53aW5kb3csIHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZCwgbW9yZSk7XG4gICAgcy5sb29rYWhlYWQgKz0gbjtcblxuICAgIC8qIEluaXRpYWxpemUgdGhlIGhhc2ggdmFsdWUgbm93IHRoYXQgd2UgaGF2ZSBzb21lIGlucHV0OiAqL1xuICAgIGlmIChzLmxvb2thaGVhZCArIHMuaW5zZXJ0ID49IE1JTl9NQVRDSCkge1xuICAgICAgc3RyID0gcy5zdHJzdGFydCAtIHMuaW5zZXJ0O1xuICAgICAgcy5pbnNfaCA9IHMud2luZG93W3N0cl07XG5cbiAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgMV0pOyAqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgMV0pICYgcy5oYXNoX21hc2s7XG4vLyNpZiBNSU5fTUFUQ0ggIT0gM1xuLy8gICAgICAgIENhbGwgdXBkYXRlX2hhc2goKSBNSU5fTUFUQ0gtMyBtb3JlIHRpbWVzXG4vLyNlbmRpZlxuICAgICAgd2hpbGUgKHMuaW5zZXJ0KSB7XG4gICAgICAgIC8qIFVQREFURV9IQVNIKHMsIHMtPmluc19oLCBzLT53aW5kb3dbc3RyICsgTUlOX01BVENILTFdKTsgKi9cbiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG5cbiAgICAgICAgcy5wcmV2W3N0ciAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gc3RyO1xuICAgICAgICBzdHIrKztcbiAgICAgICAgcy5pbnNlcnQtLTtcbiAgICAgICAgaWYgKHMubG9va2FoZWFkICsgcy5pbnNlcnQgPCBNSU5fTUFUQ0gpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICAvKiBJZiB0aGUgd2hvbGUgaW5wdXQgaGFzIGxlc3MgdGhhbiBNSU5fTUFUQ0ggYnl0ZXMsIGluc19oIGlzIGdhcmJhZ2UsXG4gICAgICogYnV0IHRoaXMgaXMgbm90IGltcG9ydGFudCBzaW5jZSBvbmx5IGxpdGVyYWwgYnl0ZXMgd2lsbCBiZSBlbWl0dGVkLlxuICAgICAqL1xuXG4gIH0gd2hpbGUgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBzLnN0cm0uYXZhaWxfaW4gIT09IDApO1xuXG4gIC8qIElmIHRoZSBXSU5fSU5JVCBieXRlcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGRhdGEgaGF2ZSBuZXZlciBiZWVuXG4gICAqIHdyaXR0ZW4sIHRoZW4gemVybyB0aG9zZSBieXRlcyBpbiBvcmRlciB0byBhdm9pZCBtZW1vcnkgY2hlY2sgcmVwb3J0cyBvZlxuICAgKiB0aGUgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgKG9yIHVuaW5pdGlhbGlzZWQgYXMgSnVsaWFuIHdyaXRlcykgYnl0ZXMgYnlcbiAgICogdGhlIGxvbmdlc3QgbWF0Y2ggcm91dGluZXMuICBVcGRhdGUgdGhlIGhpZ2ggd2F0ZXIgbWFyayBmb3IgdGhlIG5leHRcbiAgICogdGltZSB0aHJvdWdoIGhlcmUuICBXSU5fSU5JVCBpcyBzZXQgdG8gTUFYX01BVENIIHNpbmNlIHRoZSBsb25nZXN0IG1hdGNoXG4gICAqIHJvdXRpbmVzIGFsbG93IHNjYW5uaW5nIHRvIHN0cnN0YXJ0ICsgTUFYX01BVENILCBpZ25vcmluZyBsb29rYWhlYWQuXG4gICAqL1xuLy8gIGlmIChzLmhpZ2hfd2F0ZXIgPCBzLndpbmRvd19zaXplKSB7XG4vLyAgICB2YXIgY3VyciA9IHMuc3Ryc3RhcnQgKyBzLmxvb2thaGVhZDtcbi8vICAgIHZhciBpbml0ID0gMDtcbi8vXG4vLyAgICBpZiAocy5oaWdoX3dhdGVyIDwgY3Vycikge1xuLy8gICAgICAvKiBQcmV2aW91cyBoaWdoIHdhdGVyIG1hcmsgYmVsb3cgY3VycmVudCBkYXRhIC0tIHplcm8gV0lOX0lOSVRcbi8vICAgICAgICogYnl0ZXMgb3IgdXAgdG8gZW5kIG9mIHdpbmRvdywgd2hpY2hldmVyIGlzIGxlc3MuXG4vLyAgICAgICAqL1xuLy8gICAgICBpbml0ID0gcy53aW5kb3dfc2l6ZSAtIGN1cnI7XG4vLyAgICAgIGlmIChpbml0ID4gV0lOX0lOSVQpXG4vLyAgICAgICAgaW5pdCA9IFdJTl9JTklUO1xuLy8gICAgICB6bWVtemVybyhzLT53aW5kb3cgKyBjdXJyLCAodW5zaWduZWQpaW5pdCk7XG4vLyAgICAgIHMtPmhpZ2hfd2F0ZXIgPSBjdXJyICsgaW5pdDtcbi8vICAgIH1cbi8vICAgIGVsc2UgaWYgKHMtPmhpZ2hfd2F0ZXIgPCAodWxnKWN1cnIgKyBXSU5fSU5JVCkge1xuLy8gICAgICAvKiBIaWdoIHdhdGVyIG1hcmsgYXQgb3IgYWJvdmUgY3VycmVudCBkYXRhLCBidXQgYmVsb3cgY3VycmVudCBkYXRhXG4vLyAgICAgICAqIHBsdXMgV0lOX0lOSVQgLS0gemVybyBvdXQgdG8gY3VycmVudCBkYXRhIHBsdXMgV0lOX0lOSVQsIG9yIHVwXG4vLyAgICAgICAqIHRvIGVuZCBvZiB3aW5kb3csIHdoaWNoZXZlciBpcyBsZXNzLlxuLy8gICAgICAgKi9cbi8vICAgICAgaW5pdCA9ICh1bGcpY3VyciArIFdJTl9JTklUIC0gcy0+aGlnaF93YXRlcjtcbi8vICAgICAgaWYgKGluaXQgPiBzLT53aW5kb3dfc2l6ZSAtIHMtPmhpZ2hfd2F0ZXIpXG4vLyAgICAgICAgaW5pdCA9IHMtPndpbmRvd19zaXplIC0gcy0+aGlnaF93YXRlcjtcbi8vICAgICAgem1lbXplcm8ocy0+d2luZG93ICsgcy0+aGlnaF93YXRlciwgKHVuc2lnbmVkKWluaXQpO1xuLy8gICAgICBzLT5oaWdoX3dhdGVyICs9IGluaXQ7XG4vLyAgICB9XG4vLyAgfVxuLy9cbi8vICBBc3NlcnQoKHVsZylzLT5zdHJzdGFydCA8PSBzLT53aW5kb3dfc2l6ZSAtIE1JTl9MT09LQUhFQUQsXG4vLyAgICBcIm5vdCBlbm91Z2ggcm9vbSBmb3Igc2VhcmNoXCIpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuXG4gKiB0aGUgY3VycmVudCBibG9jayBzdGF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IHNpbmNlXG4gKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZFxuICogb25seSBmb3IgdGhlIGxldmVsPTAgY29tcHJlc3Npb24gb3B0aW9uLlxuICogTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkIHRvIGF2b2lkIGV4dHJhIGNvcHlpbmcgZnJvbVxuICogd2luZG93IHRvIHBlbmRpbmdfYnVmLlxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3N0b3JlZChzLCBmbHVzaCkge1xuICAvKiBTdG9yZWQgYmxvY2tzIGFyZSBsaW1pdGVkIHRvIDB4ZmZmZiBieXRlcywgcGVuZGluZ19idWYgaXMgbGltaXRlZFxuICAgKiB0byBwZW5kaW5nX2J1Zl9zaXplLCBhbmQgZWFjaCBzdG9yZWQgYmxvY2sgaGFzIGEgNSBieXRlIGhlYWRlcjpcbiAgICovXG4gIHZhciBtYXhfYmxvY2tfc2l6ZSA9IDB4ZmZmZjtcblxuICBpZiAobWF4X2Jsb2NrX3NpemUgPiBzLnBlbmRpbmdfYnVmX3NpemUgLSA1KSB7XG4gICAgbWF4X2Jsb2NrX3NpemUgPSBzLnBlbmRpbmdfYnVmX3NpemUgLSA1O1xuICB9XG5cbiAgLyogQ29weSBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gaW5wdXQgdG8gb3V0cHV0OiAqL1xuICBmb3IgKDs7KSB7XG4gICAgLyogRmlsbCB0aGUgd2luZG93IGFzIG11Y2ggYXMgcG9zc2libGU6ICovXG4gICAgaWYgKHMubG9va2FoZWFkIDw9IDEpIHtcblxuICAgICAgLy9Bc3NlcnQocy0+c3Ryc3RhcnQgPCBzLT53X3NpemUrTUFYX0RJU1QocykgfHxcbiAgICAgIC8vICBzLT5ibG9ja19zdGFydCA+PSAobG9uZylzLT53X3NpemUsIFwic2xpZGUgdG9vIGxhdGVcIik7XG4vLyAgICAgIGlmICghKHMuc3Ryc3RhcnQgPCBzLndfc2l6ZSArIChzLndfc2l6ZSAtIE1JTl9MT09LQUhFQUQpIHx8XG4vLyAgICAgICAgcy5ibG9ja19zdGFydCA+PSBzLndfc2l6ZSkpIHtcbi8vICAgICAgICB0aHJvdyAgbmV3IEVycm9yKFwic2xpZGUgdG9vIGxhdGVcIik7XG4vLyAgICAgIH1cblxuICAgICAgZmlsbF93aW5kb3cocyk7XG4gICAgICBpZiAocy5sb29rYWhlYWQgPT09IDAgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cblxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi9cbiAgICB9XG4gICAgLy9Bc3NlcnQocy0+YmxvY2tfc3RhcnQgPj0gMEwsIFwiYmxvY2sgZ29uZVwiKTtcbi8vICAgIGlmIChzLmJsb2NrX3N0YXJ0IDwgMCkgdGhyb3cgbmV3IEVycm9yKFwiYmxvY2sgZ29uZVwiKTtcblxuICAgIHMuc3Ryc3RhcnQgKz0gcy5sb29rYWhlYWQ7XG4gICAgcy5sb29rYWhlYWQgPSAwO1xuXG4gICAgLyogRW1pdCBhIHN0b3JlZCBibG9jayBpZiBwZW5kaW5nX2J1ZiB3aWxsIGJlIGZ1bGw6ICovXG4gICAgdmFyIG1heF9zdGFydCA9IHMuYmxvY2tfc3RhcnQgKyBtYXhfYmxvY2tfc2l6ZTtcblxuICAgIGlmIChzLnN0cnN0YXJ0ID09PSAwIHx8IHMuc3Ryc3RhcnQgPj0gbWF4X3N0YXJ0KSB7XG4gICAgICAvKiBzdHJzdGFydCA9PSAwIGlzIHBvc3NpYmxlIHdoZW4gd3JhcGFyb3VuZCBvbiAxNi1iaXQgbWFjaGluZSAqL1xuICAgICAgcy5sb29rYWhlYWQgPSBzLnN0cnN0YXJ0IC0gbWF4X3N0YXJ0O1xuICAgICAgcy5zdHJzdGFydCA9IG1heF9zdGFydDtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG5cblxuICAgIH1cbiAgICAvKiBGbHVzaCBpZiB3ZSBtYXkgaGF2ZSB0byBzbGlkZSwgb3RoZXJ3aXNlIGJsb2NrX3N0YXJ0IG1heSBiZWNvbWVcbiAgICAgKiBuZWdhdGl2ZSBhbmQgdGhlIGRhdGEgd2lsbCBiZSBnb25lOlxuICAgICAqL1xuICAgIGlmIChzLnN0cnN0YXJ0IC0gcy5ibG9ja19zdGFydCA+PSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKSkge1xuICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgLyoqKi9cbiAgICB9XG4gIH1cblxuICBzLmluc2VydCA9IDA7XG5cbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG5cbiAgaWYgKHMuc3Ryc3RhcnQgPiBzLmJsb2NrX3N0YXJ0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG5cbiAgcmV0dXJuIEJTX05FRURfTU9SRTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb21wcmVzcyBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuIHRoZSBjdXJyZW50XG4gKiBibG9jayBzdGF0ZS5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcGVyZm9ybSBsYXp5IGV2YWx1YXRpb24gb2YgbWF0Y2hlcyBhbmQgaW5zZXJ0c1xuICogbmV3IHN0cmluZ3MgaW4gdGhlIGRpY3Rpb25hcnkgb25seSBmb3IgdW5tYXRjaGVkIHN0cmluZ3Mgb3IgZm9yIHNob3J0XG4gKiBtYXRjaGVzLiBJdCBpcyB1c2VkIG9ubHkgZm9yIHRoZSBmYXN0IGNvbXByZXNzaW9uIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfZmFzdChzLCBmbHVzaCkge1xuICB2YXIgaGFzaF9oZWFkOyAgICAgICAgLyogaGVhZCBvZiB0aGUgaGFzaCBjaGFpbiAqL1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgLyogc2V0IGlmIGN1cnJlbnQgYmxvY2sgbXVzdCBiZSBmbHVzaGVkICovXG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBuZXh0IG1hdGNoLCBwbHVzIE1JTl9NQVRDSCBieXRlcyB0byBpbnNlcnQgdGhlXG4gICAgICogc3RyaW5nIGZvbGxvd2luZyB0aGUgbmV4dCBtYXRjaC5cbiAgICAgKi9cbiAgICBpZiAocy5sb29rYWhlYWQgPCBNSU5fTE9PS0FIRUFEKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQgJiYgZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBicmVhazsgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi9cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiBJbnNlcnQgdGhlIHN0cmluZyB3aW5kb3dbc3Ryc3RhcnQgLi4gc3Ryc3RhcnQrMl0gaW4gdGhlXG4gICAgICogZGljdGlvbmFyeSwgYW5kIHNldCBoYXNoX2hlYWQgdG8gdGhlIGhlYWQgb2YgdGhlIGhhc2ggY2hhaW46XG4gICAgICovXG4gICAgaGFzaF9oZWFkID0gMC8qTklMKi87XG4gICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCkge1xuICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgIHMuaW5zX2ggPSAoKHMuaW5zX2ggPDwgcy5oYXNoX3NoaWZ0KSBeIHMud2luZG93W3Muc3Ryc3RhcnQgKyBNSU5fTUFUQ0ggLSAxXSkgJiBzLmhhc2hfbWFzaztcbiAgICAgIGhhc2hfaGVhZCA9IHMucHJldltzLnN0cnN0YXJ0ICYgcy53X21hc2tdID0gcy5oZWFkW3MuaW5zX2hdO1xuICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgIC8qKiovXG4gICAgfVxuXG4gICAgLyogRmluZCB0aGUgbG9uZ2VzdCBtYXRjaCwgZGlzY2FyZGluZyB0aG9zZSA8PSBwcmV2X2xlbmd0aC5cbiAgICAgKiBBdCB0aGlzIHBvaW50IHdlIGhhdmUgYWx3YXlzIG1hdGNoX2xlbmd0aCA8IE1JTl9NQVRDSFxuICAgICAqL1xuICAgIGlmIChoYXNoX2hlYWQgIT09IDAvKk5JTCovICYmICgocy5zdHJzdGFydCAtIGhhc2hfaGVhZCkgPD0gKHMud19zaXplIC0gTUlOX0xPT0tBSEVBRCkpKSB7XG4gICAgICAvKiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgd2UgcHJldmVudCBtYXRjaGVzIHdpdGggdGhlIHN0cmluZ1xuICAgICAgICogb2Ygd2luZG93IGluZGV4IDAgKGluIHBhcnRpY3VsYXIgd2UgaGF2ZSB0byBhdm9pZCBhIG1hdGNoXG4gICAgICAgKiBvZiB0aGUgc3RyaW5nIHdpdGggaXRzZWxmIGF0IHRoZSBzdGFydCBvZiB0aGUgaW5wdXQgZmlsZSkuXG4gICAgICAgKi9cbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gbG9uZ2VzdF9tYXRjaChzLCBoYXNoX2hlYWQpO1xuICAgICAgLyogbG9uZ2VzdF9tYXRjaCgpIHNldHMgbWF0Y2hfc3RhcnQgKi9cbiAgICB9XG4gICAgaWYgKHMubWF0Y2hfbGVuZ3RoID49IE1JTl9NQVRDSCkge1xuICAgICAgLy8gY2hlY2tfbWF0Y2gocywgcy5zdHJzdGFydCwgcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGgpOyAvLyBmb3IgZGVidWcgb25seVxuXG4gICAgICAvKioqIF90cl90YWxseV9kaXN0KHMsIHMuc3Ryc3RhcnQgLSBzLm1hdGNoX3N0YXJ0LFxuICAgICAgICAgICAgICAgICAgICAgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gpO1xuXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLm1hdGNoX2xlbmd0aDtcblxuICAgICAgLyogSW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBoYXNoIHRhYmxlIG9ubHkgaWYgdGhlIG1hdGNoIGxlbmd0aFxuICAgICAgICogaXMgbm90IHRvbyBsYXJnZS4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi5cbiAgICAgICAqL1xuICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoIDw9IHMubWF4X2xhenlfbWF0Y2gvKm1heF9pbnNlcnRfbGVuZ3RoKi8gJiYgcy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoLS07IC8qIHN0cmluZyBhdCBzdHJzdGFydCBhbHJlYWR5IGluIHRhYmxlICovXG4gICAgICAgIGRvIHtcbiAgICAgICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgICAgICAvKioqL1xuICAgICAgICAgIC8qIHN0cnN0YXJ0IG5ldmVyIGV4Y2VlZHMgV1NJWkUtTUFYX01BVENILCBzbyB0aGVyZSBhcmVcbiAgICAgICAgICAgKiBhbHdheXMgTUlOX01BVENIIGJ5dGVzIGFoZWFkLlxuICAgICAgICAgICAqL1xuICAgICAgICB9IHdoaWxlICgtLXMubWF0Y2hfbGVuZ3RoICE9PSAwKTtcbiAgICAgICAgcy5zdHJzdGFydCsrO1xuICAgICAgfSBlbHNlXG4gICAgICB7XG4gICAgICAgIHMuc3Ryc3RhcnQgKz0gcy5tYXRjaF9sZW5ndGg7XG4gICAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICAgICAgcy5pbnNfaCA9IHMud2luZG93W3Muc3Ryc3RhcnRdO1xuICAgICAgICAvKiBVUERBVEVfSEFTSChzLCBzLmluc19oLCBzLndpbmRvd1tzLnN0cnN0YXJ0KzFdKTsgKi9cbiAgICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbcy5zdHJzdGFydCArIDFdKSAmIHMuaGFzaF9tYXNrO1xuXG4vLyNpZiBNSU5fTUFUQ0ggIT0gM1xuLy8gICAgICAgICAgICAgICAgQ2FsbCBVUERBVEVfSEFTSCgpIE1JTl9NQVRDSC0zIG1vcmUgdGltZXNcbi8vI2VuZGlmXG4gICAgICAgIC8qIElmIGxvb2thaGVhZCA8IE1JTl9NQVRDSCwgaW5zX2ggaXMgZ2FyYmFnZSwgYnV0IGl0IGRvZXMgbm90XG4gICAgICAgICAqIG1hdHRlciBzaW5jZSBpdCB3aWxsIGJlIHJlY29tcHV0ZWQgYXQgbmV4dCBkZWZsYXRlIGNhbGwuXG4gICAgICAgICAqL1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvKiBObyBtYXRjaCwgb3V0cHV0IGEgbGl0ZXJhbCBieXRlICovXG4gICAgICAvL1RyYWNldnYoKHN0ZGVycixcIiVjXCIsIHMud2luZG93W3Muc3Ryc3RhcnRdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG5cbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgfVxuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gKChzLnN0cnN0YXJ0IDwgKE1JTl9NQVRDSCAtIDEpKSA/IHMuc3Ryc3RhcnQgOiBNSU5fTUFUQ0ggLSAxKTtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNhbWUgYXMgYWJvdmUsIGJ1dCBhY2hpZXZlcyBiZXR0ZXIgY29tcHJlc3Npb24uIFdlIHVzZSBhIGxhenlcbiAqIGV2YWx1YXRpb24gZm9yIG1hdGNoZXM6IGEgbWF0Y2ggaXMgZmluYWxseSBhZG9wdGVkIG9ubHkgaWYgdGhlcmUgaXNcbiAqIG5vIGJldHRlciBtYXRjaCBhdCB0aGUgbmV4dCB3aW5kb3cgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfc2xvdyhzLCBmbHVzaCkge1xuICB2YXIgaGFzaF9oZWFkOyAgICAgICAgICAvKiBoZWFkIG9mIGhhc2ggY2hhaW4gKi9cbiAgdmFyIGJmbHVzaDsgICAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuXG4gIHZhciBtYXhfaW5zZXJ0O1xuXG4gIC8qIFByb2Nlc3MgdGhlIGlucHV0IGJsb2NrLiAqL1xuICBmb3IgKDs7KSB7XG4gICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgYWx3YXlzIGhhdmUgZW5vdWdoIGxvb2thaGVhZCwgZXhjZXB0XG4gICAgICogYXQgdGhlIGVuZCBvZiB0aGUgaW5wdXQgZmlsZS4gV2UgbmVlZCBNQVhfTUFUQ0ggYnl0ZXNcbiAgICAgKiBmb3IgdGhlIG5leHQgbWF0Y2gsIHBsdXMgTUlOX01BVENIIGJ5dGVzIHRvIGluc2VydCB0aGVcbiAgICAgKiBzdHJpbmcgZm9sbG93aW5nIHRoZSBuZXh0IG1hdGNoLlxuICAgICAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8IE1JTl9MT09LQUhFQUQpIHtcbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkIDwgTUlOX0xPT0tBSEVBRCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuXG4gICAgLyogSW5zZXJ0IHRoZSBzdHJpbmcgd2luZG93W3N0cnN0YXJ0IC4uIHN0cnN0YXJ0KzJdIGluIHRoZVxuICAgICAqIGRpY3Rpb25hcnksIGFuZCBzZXQgaGFzaF9oZWFkIHRvIHRoZSBoZWFkIG9mIHRoZSBoYXNoIGNoYWluOlxuICAgICAqL1xuICAgIGhhc2hfaGVhZCA9IDAvKk5JTCovO1xuICAgIGlmIChzLmxvb2thaGVhZCA+PSBNSU5fTUFUQ0gpIHtcbiAgICAgIC8qKiogSU5TRVJUX1NUUklORyhzLCBzLnN0cnN0YXJ0LCBoYXNoX2hlYWQpOyAqKiovXG4gICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICBoYXNoX2hlYWQgPSBzLnByZXZbcy5zdHJzdGFydCAmIHMud19tYXNrXSA9IHMuaGVhZFtzLmluc19oXTtcbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHMuc3Ryc3RhcnQ7XG4gICAgICAvKioqL1xuICAgIH1cblxuICAgIC8qIEZpbmQgdGhlIGxvbmdlc3QgbWF0Y2gsIGRpc2NhcmRpbmcgdGhvc2UgPD0gcHJldl9sZW5ndGguXG4gICAgICovXG4gICAgcy5wcmV2X2xlbmd0aCA9IHMubWF0Y2hfbGVuZ3RoO1xuICAgIHMucHJldl9tYXRjaCA9IHMubWF0Y2hfc3RhcnQ7XG4gICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuXG4gICAgaWYgKGhhc2hfaGVhZCAhPT0gMC8qTklMKi8gJiYgcy5wcmV2X2xlbmd0aCA8IHMubWF4X2xhenlfbWF0Y2ggJiZcbiAgICAgICAgcy5zdHJzdGFydCAtIGhhc2hfaGVhZCA8PSAocy53X3NpemUgLSBNSU5fTE9PS0FIRUFEKS8qTUFYX0RJU1QocykqLykge1xuICAgICAgLyogVG8gc2ltcGxpZnkgdGhlIGNvZGUsIHdlIHByZXZlbnQgbWF0Y2hlcyB3aXRoIHRoZSBzdHJpbmdcbiAgICAgICAqIG9mIHdpbmRvdyBpbmRleCAwIChpbiBwYXJ0aWN1bGFyIHdlIGhhdmUgdG8gYXZvaWQgYSBtYXRjaFxuICAgICAgICogb2YgdGhlIHN0cmluZyB3aXRoIGl0c2VsZiBhdCB0aGUgc3RhcnQgb2YgdGhlIGlucHV0IGZpbGUpLlxuICAgICAgICovXG4gICAgICBzLm1hdGNoX2xlbmd0aCA9IGxvbmdlc3RfbWF0Y2gocywgaGFzaF9oZWFkKTtcbiAgICAgIC8qIGxvbmdlc3RfbWF0Y2goKSBzZXRzIG1hdGNoX3N0YXJ0ICovXG5cbiAgICAgIGlmIChzLm1hdGNoX2xlbmd0aCA8PSA1ICYmXG4gICAgICAgICAocy5zdHJhdGVneSA9PT0gWl9GSUxURVJFRCB8fCAocy5tYXRjaF9sZW5ndGggPT09IE1JTl9NQVRDSCAmJiBzLnN0cnN0YXJ0IC0gcy5tYXRjaF9zdGFydCA+IDQwOTYvKlRPT19GQVIqLykpKSB7XG5cbiAgICAgICAgLyogSWYgcHJldl9tYXRjaCBpcyBhbHNvIE1JTl9NQVRDSCwgbWF0Y2hfc3RhcnQgaXMgZ2FyYmFnZVxuICAgICAgICAgKiBidXQgd2Ugd2lsbCBpZ25vcmUgdGhlIGN1cnJlbnQgbWF0Y2ggYW55d2F5LlxuICAgICAgICAgKi9cbiAgICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICAgICAgfVxuICAgIH1cbiAgICAvKiBJZiB0aGVyZSB3YXMgYSBtYXRjaCBhdCB0aGUgcHJldmlvdXMgc3RlcCBhbmQgdGhlIGN1cnJlbnRcbiAgICAgKiBtYXRjaCBpcyBub3QgYmV0dGVyLCBvdXRwdXQgdGhlIHByZXZpb3VzIG1hdGNoOlxuICAgICAqL1xuICAgIGlmIChzLnByZXZfbGVuZ3RoID49IE1JTl9NQVRDSCAmJiBzLm1hdGNoX2xlbmd0aCA8PSBzLnByZXZfbGVuZ3RoKSB7XG4gICAgICBtYXhfaW5zZXJ0ID0gcy5zdHJzdGFydCArIHMubG9va2FoZWFkIC0gTUlOX01BVENIO1xuICAgICAgLyogRG8gbm90IGluc2VydCBzdHJpbmdzIGluIGhhc2ggdGFibGUgYmV5b25kIHRoaXMuICovXG5cbiAgICAgIC8vY2hlY2tfbWF0Y2gocywgcy5zdHJzdGFydC0xLCBzLnByZXZfbWF0Y2gsIHMucHJldl9sZW5ndGgpO1xuXG4gICAgICAvKioqX3RyX3RhbGx5X2Rpc3Qocywgcy5zdHJzdGFydCAtIDEgLSBzLnByZXZfbWF0Y2gsXG4gICAgICAgICAgICAgICAgICAgICBzLnByZXZfbGVuZ3RoIC0gTUlOX01BVENILCBiZmx1c2gpOyoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCBzLnN0cnN0YXJ0IC0gMSAtIHMucHJldl9tYXRjaCwgcy5wcmV2X2xlbmd0aCAtIE1JTl9NQVRDSCk7XG4gICAgICAvKiBJbnNlcnQgaW4gaGFzaCB0YWJsZSBhbGwgc3RyaW5ncyB1cCB0byB0aGUgZW5kIG9mIHRoZSBtYXRjaC5cbiAgICAgICAqIHN0cnN0YXJ0LTEgYW5kIHN0cnN0YXJ0IGFyZSBhbHJlYWR5IGluc2VydGVkLiBJZiB0aGVyZSBpcyBub3RcbiAgICAgICAqIGVub3VnaCBsb29rYWhlYWQsIHRoZSBsYXN0IHR3byBzdHJpbmdzIGFyZSBub3QgaW5zZXJ0ZWQgaW5cbiAgICAgICAqIHRoZSBoYXNoIHRhYmxlLlxuICAgICAgICovXG4gICAgICBzLmxvb2thaGVhZCAtPSBzLnByZXZfbGVuZ3RoIC0gMTtcbiAgICAgIHMucHJldl9sZW5ndGggLT0gMjtcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKCsrcy5zdHJzdGFydCA8PSBtYXhfaW5zZXJ0KSB7XG4gICAgICAgICAgLyoqKiBJTlNFUlRfU1RSSU5HKHMsIHMuc3Ryc3RhcnQsIGhhc2hfaGVhZCk7ICoqKi9cbiAgICAgICAgICBzLmluc19oID0gKChzLmluc19oIDw8IHMuaGFzaF9zaGlmdCkgXiBzLndpbmRvd1tzLnN0cnN0YXJ0ICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG4gICAgICAgICAgaGFzaF9oZWFkID0gcy5wcmV2W3Muc3Ryc3RhcnQgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG4gICAgICAgICAgcy5oZWFkW3MuaW5zX2hdID0gcy5zdHJzdGFydDtcbiAgICAgICAgICAvKioqL1xuICAgICAgICB9XG4gICAgICB9IHdoaWxlICgtLXMucHJldl9sZW5ndGggIT09IDApO1xuICAgICAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICAgICAgcy5tYXRjaF9sZW5ndGggPSBNSU5fTUFUQ0ggLSAxO1xuICAgICAgcy5zdHJzdGFydCsrO1xuXG4gICAgICBpZiAoYmZsdXNoKSB7XG4gICAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgICAgfVxuICAgICAgICAvKioqL1xuICAgICAgfVxuXG4gICAgfSBlbHNlIGlmIChzLm1hdGNoX2F2YWlsYWJsZSkge1xuICAgICAgLyogSWYgdGhlcmUgd2FzIG5vIG1hdGNoIGF0IHRoZSBwcmV2aW91cyBwb3NpdGlvbiwgb3V0cHV0IGFcbiAgICAgICAqIHNpbmdsZSBsaXRlcmFsLiBJZiB0aGVyZSB3YXMgYSBtYXRjaCBidXQgdGhlIGN1cnJlbnQgbWF0Y2hcbiAgICAgICAqIGlzIGxvbmdlciwgdHJ1bmNhdGUgdGhlIHByZXZpb3VzIG1hdGNoIHRvIGEgc2luZ2xlIGxpdGVyYWwuXG4gICAgICAgKi9cbiAgICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0LTFdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydC0xXSwgYmZsdXNoKTsgKioqL1xuICAgICAgYmZsdXNoID0gdHJlZXMuX3RyX3RhbGx5KHMsIDAsIHMud2luZG93W3Muc3Ryc3RhcnQgLSAxXSk7XG5cbiAgICAgIGlmIChiZmx1c2gpIHtcbiAgICAgICAgLyoqKiBGTFVTSF9CTE9DS19PTkxZKHMsIDApICoqKi9cbiAgICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICAgIC8qKiovXG4gICAgICB9XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgICBzLmxvb2thaGVhZC0tO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLyogVGhlcmUgaXMgbm8gcHJldmlvdXMgbWF0Y2ggdG8gY29tcGFyZSB3aXRoLCB3YWl0IGZvclxuICAgICAgICogdGhlIG5leHQgc3RlcCB0byBkZWNpZGUuXG4gICAgICAgKi9cbiAgICAgIHMubWF0Y2hfYXZhaWxhYmxlID0gMTtcbiAgICAgIHMuc3Ryc3RhcnQrKztcbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0IChmbHVzaCAhPSBaX05PX0ZMVVNILCBcIm5vIGZsdXNoP1wiKTtcbiAgaWYgKHMubWF0Y2hfYXZhaWxhYmxlKSB7XG4gICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnQtMV0pKTtcbiAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydC0xXSwgYmZsdXNoKTsgKioqL1xuICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0IC0gMV0pO1xuXG4gICAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICB9XG4gIHMuaW5zZXJ0ID0gcy5zdHJzdGFydCA8IE1JTl9NQVRDSCAtIDEgPyBzLnN0cnN0YXJ0IDogTUlOX01BVENIIC0gMTtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG5cbiAgcmV0dXJuIEJTX0JMT0NLX0RPTkU7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGb3IgWl9STEUsIHNpbXBseSBsb29rIGZvciBydW5zIG9mIGJ5dGVzLCBnZW5lcmF0ZSBtYXRjaGVzIG9ubHkgb2YgZGlzdGFuY2VcbiAqIG9uZS4gIERvIG5vdCBtYWludGFpbiBhIGhhc2ggdGFibGUuICAoSXQgd2lsbCBiZSByZWdlbmVyYXRlZCBpZiB0aGlzIHJ1biBvZlxuICogZGVmbGF0ZSBzd2l0Y2hlcyBhd2F5IGZyb20gWl9STEUuKVxuICovXG5mdW5jdGlvbiBkZWZsYXRlX3JsZShzLCBmbHVzaCkge1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgIC8qIHNldCBpZiBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZCAqL1xuICB2YXIgcHJldjsgICAgICAgICAgICAgIC8qIGJ5dGUgYXQgZGlzdGFuY2Ugb25lIHRvIG1hdGNoICovXG4gIHZhciBzY2FuLCBzdHJlbmQ7ICAgICAgLyogc2NhbiBnb2VzIHVwIHRvIHN0cmVuZCBmb3IgbGVuZ3RoIG9mIHJ1biAqL1xuXG4gIHZhciBfd2luID0gcy53aW5kb3c7XG5cbiAgZm9yICg7Oykge1xuICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHdlIGFsd2F5cyBoYXZlIGVub3VnaCBsb29rYWhlYWQsIGV4Y2VwdFxuICAgICAqIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0IGZpbGUuIFdlIG5lZWQgTUFYX01BVENIIGJ5dGVzXG4gICAgICogZm9yIHRoZSBsb25nZXN0IHJ1biwgcGx1cyBvbmUgZm9yIHRoZSB1bnJvbGxlZCBsb29wLlxuICAgICAqL1xuICAgIGlmIChzLmxvb2thaGVhZCA8PSBNQVhfTUFUQ0gpIHtcbiAgICAgIGZpbGxfd2luZG93KHMpO1xuICAgICAgaWYgKHMubG9va2FoZWFkIDw9IE1BWF9NQVRDSCAmJiBmbHVzaCA9PT0gWl9OT19GTFVTSCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7IGJyZWFrOyB9IC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgfVxuXG4gICAgLyogU2VlIGhvdyBtYW55IHRpbWVzIHRoZSBwcmV2aW91cyBieXRlIHJlcGVhdHMgKi9cbiAgICBzLm1hdGNoX2xlbmd0aCA9IDA7XG4gICAgaWYgKHMubG9va2FoZWFkID49IE1JTl9NQVRDSCAmJiBzLnN0cnN0YXJ0ID4gMCkge1xuICAgICAgc2NhbiA9IHMuc3Ryc3RhcnQgLSAxO1xuICAgICAgcHJldiA9IF93aW5bc2Nhbl07XG4gICAgICBpZiAocHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0pIHtcbiAgICAgICAgc3RyZW5kID0gcy5zdHJzdGFydCArIE1BWF9NQVRDSDtcbiAgICAgICAgZG8ge1xuICAgICAgICAgIC8qanNoaW50IG5vZW1wdHk6ZmFsc2UqL1xuICAgICAgICB9IHdoaWxlIChwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHByZXYgPT09IF93aW5bKytzY2FuXSAmJiBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiZcbiAgICAgICAgICAgICAgICAgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmIHByZXYgPT09IF93aW5bKytzY2FuXSAmJlxuICAgICAgICAgICAgICAgICBwcmV2ID09PSBfd2luWysrc2Nhbl0gJiYgcHJldiA9PT0gX3dpblsrK3NjYW5dICYmXG4gICAgICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpO1xuICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IE1BWF9NQVRDSCAtIChzdHJlbmQgLSBzY2FuKTtcbiAgICAgICAgaWYgKHMubWF0Y2hfbGVuZ3RoID4gcy5sb29rYWhlYWQpIHtcbiAgICAgICAgICBzLm1hdGNoX2xlbmd0aCA9IHMubG9va2FoZWFkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvL0Fzc2VydChzY2FuIDw9IHMtPndpbmRvdysodUludCkocy0+d2luZG93X3NpemUtMSksIFwid2lsZCBzY2FuXCIpO1xuICAgIH1cblxuICAgIC8qIEVtaXQgbWF0Y2ggaWYgaGF2ZSBydW4gb2YgTUlOX01BVENIIG9yIGxvbmdlciwgZWxzZSBlbWl0IGxpdGVyYWwgKi9cbiAgICBpZiAocy5tYXRjaF9sZW5ndGggPj0gTUlOX01BVENIKSB7XG4gICAgICAvL2NoZWNrX21hdGNoKHMsIHMuc3Ryc3RhcnQsIHMuc3Ryc3RhcnQgLSAxLCBzLm1hdGNoX2xlbmd0aCk7XG5cbiAgICAgIC8qKiogX3RyX3RhbGx5X2Rpc3QocywgMSwgcy5tYXRjaF9sZW5ndGggLSBNSU5fTUFUQ0gsIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAxLCBzLm1hdGNoX2xlbmd0aCAtIE1JTl9NQVRDSCk7XG5cbiAgICAgIHMubG9va2FoZWFkIC09IHMubWF0Y2hfbGVuZ3RoO1xuICAgICAgcy5zdHJzdGFydCArPSBzLm1hdGNoX2xlbmd0aDtcbiAgICAgIHMubWF0Y2hfbGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgLyogTm8gbWF0Y2gsIG91dHB1dCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsXCIlY1wiLCBzLT53aW5kb3dbcy0+c3Ryc3RhcnRdKSk7XG4gICAgICAvKioqIF90cl90YWxseV9saXQocywgcy53aW5kb3dbcy5zdHJzdGFydF0sIGJmbHVzaCk7ICoqKi9cbiAgICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG5cbiAgICAgIHMubG9va2FoZWFkLS07XG4gICAgICBzLnN0cnN0YXJ0Kys7XG4gICAgfVxuICAgIGlmIChiZmx1c2gpIHtcbiAgICAgIC8qKiogRkxVU0hfQkxPQ0socywgMCk7ICoqKi9cbiAgICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgICAgcmV0dXJuIEJTX05FRURfTU9SRTtcbiAgICAgIH1cbiAgICAgIC8qKiovXG4gICAgfVxuICB9XG4gIHMuaW5zZXJ0ID0gMDtcbiAgaWYgKGZsdXNoID09PSBaX0ZJTklTSCkge1xuICAgIC8qKiogRkxVU0hfQkxPQ0socywgMSk7ICoqKi9cbiAgICBmbHVzaF9ibG9ja19vbmx5KHMsIHRydWUpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfRklOSVNIX1NUQVJURUQ7XG4gICAgfVxuICAgIC8qKiovXG4gICAgcmV0dXJuIEJTX0ZJTklTSF9ET05FO1xuICB9XG4gIGlmIChzLmxhc3RfbGl0KSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgZmFsc2UpO1xuICAgIGlmIChzLnN0cm0uYXZhaWxfb3V0ID09PSAwKSB7XG4gICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgIH1cbiAgICAvKioqL1xuICB9XG4gIHJldHVybiBCU19CTE9DS19ET05FO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEZvciBaX0hVRkZNQU5fT05MWSwgZG8gbm90IGxvb2sgZm9yIG1hdGNoZXMuICBEbyBub3QgbWFpbnRhaW4gYSBoYXNoIHRhYmxlLlxuICogKEl0IHdpbGwgYmUgcmVnZW5lcmF0ZWQgaWYgdGhpcyBydW4gb2YgZGVmbGF0ZSBzd2l0Y2hlcyBhd2F5IGZyb20gSHVmZm1hbi4pXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVfaHVmZihzLCBmbHVzaCkge1xuICB2YXIgYmZsdXNoOyAgICAgICAgICAgICAvKiBzZXQgaWYgY3VycmVudCBibG9jayBtdXN0IGJlIGZsdXNoZWQgKi9cblxuICBmb3IgKDs7KSB7XG4gICAgLyogTWFrZSBzdXJlIHRoYXQgd2UgaGF2ZSBhIGxpdGVyYWwgdG8gd3JpdGUuICovXG4gICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICBmaWxsX3dpbmRvdyhzKTtcbiAgICAgIGlmIChzLmxvb2thaGVhZCA9PT0gMCkge1xuICAgICAgICBpZiAoZmx1c2ggPT09IFpfTk9fRkxVU0gpIHtcbiAgICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrOyAgICAgIC8qIGZsdXNoIHRoZSBjdXJyZW50IGJsb2NrICovXG4gICAgICB9XG4gICAgfVxuXG4gICAgLyogT3V0cHV0IGEgbGl0ZXJhbCBieXRlICovXG4gICAgcy5tYXRjaF9sZW5ndGggPSAwO1xuICAgIC8vVHJhY2V2digoc3RkZXJyLFwiJWNcIiwgcy0+d2luZG93W3MtPnN0cnN0YXJ0XSkpO1xuICAgIC8qKiogX3RyX3RhbGx5X2xpdChzLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSwgYmZsdXNoKTsgKioqL1xuICAgIGJmbHVzaCA9IHRyZWVzLl90cl90YWxseShzLCAwLCBzLndpbmRvd1tzLnN0cnN0YXJ0XSk7XG4gICAgcy5sb29rYWhlYWQtLTtcbiAgICBzLnN0cnN0YXJ0Kys7XG4gICAgaWYgKGJmbHVzaCkge1xuICAgICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAwKTsgKioqL1xuICAgICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgICBpZiAocy5zdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gQlNfTkVFRF9NT1JFO1xuICAgICAgfVxuICAgICAgLyoqKi9cbiAgICB9XG4gIH1cbiAgcy5pbnNlcnQgPSAwO1xuICBpZiAoZmx1c2ggPT09IFpfRklOSVNIKSB7XG4gICAgLyoqKiBGTFVTSF9CTE9DSyhzLCAxKTsgKioqL1xuICAgIGZsdXNoX2Jsb2NrX29ubHkocywgdHJ1ZSk7XG4gICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIHJldHVybiBCU19GSU5JU0hfU1RBUlRFRDtcbiAgICB9XG4gICAgLyoqKi9cbiAgICByZXR1cm4gQlNfRklOSVNIX0RPTkU7XG4gIH1cbiAgaWYgKHMubGFzdF9saXQpIHtcbiAgICAvKioqIEZMVVNIX0JMT0NLKHMsIDApOyAqKiovXG4gICAgZmx1c2hfYmxvY2tfb25seShzLCBmYWxzZSk7XG4gICAgaWYgKHMuc3RybS5hdmFpbF9vdXQgPT09IDApIHtcbiAgICAgIHJldHVybiBCU19ORUVEX01PUkU7XG4gICAgfVxuICAgIC8qKiovXG4gIH1cbiAgcmV0dXJuIEJTX0JMT0NLX0RPTkU7XG59XG5cbi8qIFZhbHVlcyBmb3IgbWF4X2xhenlfbWF0Y2gsIGdvb2RfbWF0Y2ggYW5kIG1heF9jaGFpbl9sZW5ndGgsIGRlcGVuZGluZyBvblxuICogdGhlIGRlc2lyZWQgcGFjayBsZXZlbCAoMC4uOSkuIFRoZSB2YWx1ZXMgZ2l2ZW4gYmVsb3cgaGF2ZSBiZWVuIHR1bmVkIHRvXG4gKiBleGNsdWRlIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2UgZm9yIHBhdGhvbG9naWNhbCBmaWxlcy4gQmV0dGVyIHZhbHVlcyBtYXkgYmVcbiAqIGZvdW5kIGZvciBzcGVjaWZpYyBmaWxlcy5cbiAqL1xuZnVuY3Rpb24gQ29uZmlnKGdvb2RfbGVuZ3RoLCBtYXhfbGF6eSwgbmljZV9sZW5ndGgsIG1heF9jaGFpbiwgZnVuYykge1xuICB0aGlzLmdvb2RfbGVuZ3RoID0gZ29vZF9sZW5ndGg7XG4gIHRoaXMubWF4X2xhenkgPSBtYXhfbGF6eTtcbiAgdGhpcy5uaWNlX2xlbmd0aCA9IG5pY2VfbGVuZ3RoO1xuICB0aGlzLm1heF9jaGFpbiA9IG1heF9jaGFpbjtcbiAgdGhpcy5mdW5jID0gZnVuYztcbn1cblxudmFyIGNvbmZpZ3VyYXRpb25fdGFibGU7XG5cbmNvbmZpZ3VyYXRpb25fdGFibGUgPSBbXG4gIC8qICAgICAgZ29vZCBsYXp5IG5pY2UgY2hhaW4gKi9cbiAgbmV3IENvbmZpZygwLCAwLCAwLCAwLCBkZWZsYXRlX3N0b3JlZCksICAgICAgICAgIC8qIDAgc3RvcmUgb25seSAqL1xuICBuZXcgQ29uZmlnKDQsIDQsIDgsIDQsIGRlZmxhdGVfZmFzdCksICAgICAgICAgICAgLyogMSBtYXggc3BlZWQsIG5vIGxhenkgbWF0Y2hlcyAqL1xuICBuZXcgQ29uZmlnKDQsIDUsIDE2LCA4LCBkZWZsYXRlX2Zhc3QpLCAgICAgICAgICAgLyogMiAqL1xuICBuZXcgQ29uZmlnKDQsIDYsIDMyLCAzMiwgZGVmbGF0ZV9mYXN0KSwgICAgICAgICAgLyogMyAqL1xuXG4gIG5ldyBDb25maWcoNCwgNCwgMTYsIDE2LCBkZWZsYXRlX3Nsb3cpLCAgICAgICAgICAvKiA0IGxhenkgbWF0Y2hlcyAqL1xuICBuZXcgQ29uZmlnKDgsIDE2LCAzMiwgMzIsIGRlZmxhdGVfc2xvdyksICAgICAgICAgLyogNSAqL1xuICBuZXcgQ29uZmlnKDgsIDE2LCAxMjgsIDEyOCwgZGVmbGF0ZV9zbG93KSwgICAgICAgLyogNiAqL1xuICBuZXcgQ29uZmlnKDgsIDMyLCAxMjgsIDI1NiwgZGVmbGF0ZV9zbG93KSwgICAgICAgLyogNyAqL1xuICBuZXcgQ29uZmlnKDMyLCAxMjgsIDI1OCwgMTAyNCwgZGVmbGF0ZV9zbG93KSwgICAgLyogOCAqL1xuICBuZXcgQ29uZmlnKDMyLCAyNTgsIDI1OCwgNDA5NiwgZGVmbGF0ZV9zbG93KSAgICAgLyogOSBtYXggY29tcHJlc3Npb24gKi9cbl07XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBJbml0aWFsaXplIHRoZSBcImxvbmdlc3QgbWF0Y2hcIiByb3V0aW5lcyBmb3IgYSBuZXcgemxpYiBzdHJlYW1cbiAqL1xuZnVuY3Rpb24gbG1faW5pdChzKSB7XG4gIHMud2luZG93X3NpemUgPSAyICogcy53X3NpemU7XG5cbiAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovXG4gIHplcm8ocy5oZWFkKTsgLy8gRmlsbCB3aXRoIE5JTCAoPSAwKTtcblxuICAvKiBTZXQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzOlxuICAgKi9cbiAgcy5tYXhfbGF6eV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2xhenk7XG4gIHMuZ29vZF9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0uZ29vZF9sZW5ndGg7XG4gIHMubmljZV9tYXRjaCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubmljZV9sZW5ndGg7XG4gIHMubWF4X2NoYWluX2xlbmd0aCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbcy5sZXZlbF0ubWF4X2NoYWluO1xuXG4gIHMuc3Ryc3RhcnQgPSAwO1xuICBzLmJsb2NrX3N0YXJ0ID0gMDtcbiAgcy5sb29rYWhlYWQgPSAwO1xuICBzLmluc2VydCA9IDA7XG4gIHMubWF0Y2hfbGVuZ3RoID0gcy5wcmV2X2xlbmd0aCA9IE1JTl9NQVRDSCAtIDE7XG4gIHMubWF0Y2hfYXZhaWxhYmxlID0gMDtcbiAgcy5pbnNfaCA9IDA7XG59XG5cblxuZnVuY3Rpb24gRGVmbGF0ZVN0YXRlKCkge1xuICB0aGlzLnN0cm0gPSBudWxsOyAgICAgICAgICAgIC8qIHBvaW50ZXIgYmFjayB0byB0aGlzIHpsaWIgc3RyZWFtICovXG4gIHRoaXMuc3RhdHVzID0gMDsgICAgICAgICAgICAvKiBhcyB0aGUgbmFtZSBpbXBsaWVzICovXG4gIHRoaXMucGVuZGluZ19idWYgPSBudWxsOyAgICAgIC8qIG91dHB1dCBzdGlsbCBwZW5kaW5nICovXG4gIHRoaXMucGVuZGluZ19idWZfc2l6ZSA9IDA7ICAvKiBzaXplIG9mIHBlbmRpbmdfYnVmICovXG4gIHRoaXMucGVuZGluZ19vdXQgPSAwOyAgICAgICAvKiBuZXh0IHBlbmRpbmcgYnl0ZSB0byBvdXRwdXQgdG8gdGhlIHN0cmVhbSAqL1xuICB0aGlzLnBlbmRpbmcgPSAwOyAgICAgICAgICAgLyogbmIgb2YgYnl0ZXMgaW4gdGhlIHBlbmRpbmcgYnVmZmVyICovXG4gIHRoaXMud3JhcCA9IDA7ICAgICAgICAgICAgICAvKiBiaXQgMCB0cnVlIGZvciB6bGliLCBiaXQgMSB0cnVlIGZvciBnemlwICovXG4gIHRoaXMuZ3poZWFkID0gbnVsbDsgICAgICAgICAvKiBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiB0byB3cml0ZSAqL1xuICB0aGlzLmd6aW5kZXggPSAwOyAgICAgICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5hbWUsIG9yIGNvbW1lbnQgKi9cbiAgdGhpcy5tZXRob2QgPSBaX0RFRkxBVEVEOyAvKiBjYW4gb25seSBiZSBERUZMQVRFRCAqL1xuICB0aGlzLmxhc3RfZmx1c2ggPSAtMTsgICAvKiB2YWx1ZSBvZiBmbHVzaCBwYXJhbSBmb3IgcHJldmlvdXMgZGVmbGF0ZSBjYWxsICovXG5cbiAgdGhpcy53X3NpemUgPSAwOyAgLyogTFo3NyB3aW5kb3cgc2l6ZSAoMzJLIGJ5IGRlZmF1bHQpICovXG4gIHRoaXMud19iaXRzID0gMDsgIC8qIGxvZzIod19zaXplKSAgKDguLjE2KSAqL1xuICB0aGlzLndfbWFzayA9IDA7ICAvKiB3X3NpemUgLSAxICovXG5cbiAgdGhpcy53aW5kb3cgPSBudWxsO1xuICAvKiBTbGlkaW5nIHdpbmRvdy4gSW5wdXQgYnl0ZXMgYXJlIHJlYWQgaW50byB0aGUgc2Vjb25kIGhhbGYgb2YgdGhlIHdpbmRvdyxcbiAgICogYW5kIG1vdmUgdG8gdGhlIGZpcnN0IGhhbGYgbGF0ZXIgdG8ga2VlcCBhIGRpY3Rpb25hcnkgb2YgYXQgbGVhc3Qgd1NpemVcbiAgICogYnl0ZXMuIFdpdGggdGhpcyBvcmdhbml6YXRpb24sIG1hdGNoZXMgYXJlIGxpbWl0ZWQgdG8gYSBkaXN0YW5jZSBvZlxuICAgKiB3U2l6ZS1NQVhfTUFUQ0ggYnl0ZXMsIGJ1dCB0aGlzIGVuc3VyZXMgdGhhdCBJTyBpcyBhbHdheXNcbiAgICogcGVyZm9ybWVkIHdpdGggYSBsZW5ndGggbXVsdGlwbGUgb2YgdGhlIGJsb2NrIHNpemUuXG4gICAqL1xuXG4gIHRoaXMud2luZG93X3NpemUgPSAwO1xuICAvKiBBY3R1YWwgc2l6ZSBvZiB3aW5kb3c6IDIqd1NpemUsIGV4Y2VwdCB3aGVuIHRoZSB1c2VyIGlucHV0IGJ1ZmZlclxuICAgKiBpcyBkaXJlY3RseSB1c2VkIGFzIHNsaWRpbmcgd2luZG93LlxuICAgKi9cblxuICB0aGlzLnByZXYgPSBudWxsO1xuICAvKiBMaW5rIHRvIG9sZGVyIHN0cmluZyB3aXRoIHNhbWUgaGFzaCBpbmRleC4gVG8gbGltaXQgdGhlIHNpemUgb2YgdGhpc1xuICAgKiBhcnJheSB0byA2NEssIHRoaXMgbGluayBpcyBtYWludGFpbmVkIG9ubHkgZm9yIHRoZSBsYXN0IDMySyBzdHJpbmdzLlxuICAgKiBBbiBpbmRleCBpbiB0aGlzIGFycmF5IGlzIHRodXMgYSB3aW5kb3cgaW5kZXggbW9kdWxvIDMySy5cbiAgICovXG5cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAvKiBIZWFkcyBvZiB0aGUgaGFzaCBjaGFpbnMgb3IgTklMLiAqL1xuXG4gIHRoaXMuaW5zX2ggPSAwOyAgICAgICAvKiBoYXNoIGluZGV4IG9mIHN0cmluZyB0byBiZSBpbnNlcnRlZCAqL1xuICB0aGlzLmhhc2hfc2l6ZSA9IDA7ICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGhhc2ggdGFibGUgKi9cbiAgdGhpcy5oYXNoX2JpdHMgPSAwOyAgIC8qIGxvZzIoaGFzaF9zaXplKSAqL1xuICB0aGlzLmhhc2hfbWFzayA9IDA7ICAgLyogaGFzaF9zaXplLTEgKi9cblxuICB0aGlzLmhhc2hfc2hpZnQgPSAwO1xuICAvKiBOdW1iZXIgb2YgYml0cyBieSB3aGljaCBpbnNfaCBtdXN0IGJlIHNoaWZ0ZWQgYXQgZWFjaCBpbnB1dFxuICAgKiBzdGVwLiBJdCBtdXN0IGJlIHN1Y2ggdGhhdCBhZnRlciBNSU5fTUFUQ0ggc3RlcHMsIHRoZSBvbGRlc3RcbiAgICogYnl0ZSBubyBsb25nZXIgdGFrZXMgcGFydCBpbiB0aGUgaGFzaCBrZXksIHRoYXQgaXM6XG4gICAqICAgaGFzaF9zaGlmdCAqIE1JTl9NQVRDSCA+PSBoYXNoX2JpdHNcbiAgICovXG5cbiAgdGhpcy5ibG9ja19zdGFydCA9IDA7XG4gIC8qIFdpbmRvdyBwb3NpdGlvbiBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IG91dHB1dCBibG9jay4gR2V0c1xuICAgKiBuZWdhdGl2ZSB3aGVuIHRoZSB3aW5kb3cgaXMgbW92ZWQgYmFja3dhcmRzLlxuICAgKi9cblxuICB0aGlzLm1hdGNoX2xlbmd0aCA9IDA7ICAgICAgLyogbGVuZ3RoIG9mIGJlc3QgbWF0Y2ggKi9cbiAgdGhpcy5wcmV2X21hdGNoID0gMDsgICAgICAgIC8qIHByZXZpb3VzIG1hdGNoICovXG4gIHRoaXMubWF0Y2hfYXZhaWxhYmxlID0gMDsgICAvKiBzZXQgaWYgcHJldmlvdXMgbWF0Y2ggZXhpc3RzICovXG4gIHRoaXMuc3Ryc3RhcnQgPSAwOyAgICAgICAgICAvKiBzdGFydCBvZiBzdHJpbmcgdG8gaW5zZXJ0ICovXG4gIHRoaXMubWF0Y2hfc3RhcnQgPSAwOyAgICAgICAvKiBzdGFydCBvZiBtYXRjaGluZyBzdHJpbmcgKi9cbiAgdGhpcy5sb29rYWhlYWQgPSAwOyAgICAgICAgIC8qIG51bWJlciBvZiB2YWxpZCBieXRlcyBhaGVhZCBpbiB3aW5kb3cgKi9cblxuICB0aGlzLnByZXZfbGVuZ3RoID0gMDtcbiAgLyogTGVuZ3RoIG9mIHRoZSBiZXN0IG1hdGNoIGF0IHByZXZpb3VzIHN0ZXAuIE1hdGNoZXMgbm90IGdyZWF0ZXIgdGhhbiB0aGlzXG4gICAqIGFyZSBkaXNjYXJkZWQuIFRoaXMgaXMgdXNlZCBpbiB0aGUgbGF6eSBtYXRjaCBldmFsdWF0aW9uLlxuICAgKi9cblxuICB0aGlzLm1heF9jaGFpbl9sZW5ndGggPSAwO1xuICAvKiBUbyBzcGVlZCB1cCBkZWZsYXRpb24sIGhhc2ggY2hhaW5zIGFyZSBuZXZlciBzZWFyY2hlZCBiZXlvbmQgdGhpc1xuICAgKiBsZW5ndGguICBBIGhpZ2hlciBsaW1pdCBpbXByb3ZlcyBjb21wcmVzc2lvbiByYXRpbyBidXQgZGVncmFkZXMgdGhlXG4gICAqIHNwZWVkLlxuICAgKi9cblxuICB0aGlzLm1heF9sYXp5X21hdGNoID0gMDtcbiAgLyogQXR0ZW1wdCB0byBmaW5kIGEgYmV0dGVyIG1hdGNoIG9ubHkgd2hlbiB0aGUgY3VycmVudCBtYXRjaCBpcyBzdHJpY3RseVxuICAgKiBzbWFsbGVyIHRoYW4gdGhpcyB2YWx1ZS4gVGhpcyBtZWNoYW5pc20gaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvblxuICAgKiBsZXZlbHMgPj0gNC5cbiAgICovXG4gIC8vIFRoYXQncyBhbGlhcyB0byBtYXhfbGF6eV9tYXRjaCwgZG9uJ3QgdXNlIGRpcmVjdGx5XG4gIC8vdGhpcy5tYXhfaW5zZXJ0X2xlbmd0aCA9IDA7XG4gIC8qIEluc2VydCBuZXcgc3RyaW5ncyBpbiB0aGUgaGFzaCB0YWJsZSBvbmx5IGlmIHRoZSBtYXRjaCBsZW5ndGggaXMgbm90XG4gICAqIGdyZWF0ZXIgdGhhbiB0aGlzIGxlbmd0aC4gVGhpcyBzYXZlcyB0aW1lIGJ1dCBkZWdyYWRlcyBjb21wcmVzc2lvbi5cbiAgICogbWF4X2luc2VydF9sZW5ndGggaXMgdXNlZCBvbmx5IGZvciBjb21wcmVzc2lvbiBsZXZlbHMgPD0gMy5cbiAgICovXG5cbiAgdGhpcy5sZXZlbCA9IDA7ICAgICAvKiBjb21wcmVzc2lvbiBsZXZlbCAoMS4uOSkgKi9cbiAgdGhpcy5zdHJhdGVneSA9IDA7ICAvKiBmYXZvciBvciBmb3JjZSBIdWZmbWFuIGNvZGluZyovXG5cbiAgdGhpcy5nb29kX21hdGNoID0gMDtcbiAgLyogVXNlIGEgZmFzdGVyIHNlYXJjaCB3aGVuIHRoZSBwcmV2aW91cyBtYXRjaCBpcyBsb25nZXIgdGhhbiB0aGlzICovXG5cbiAgdGhpcy5uaWNlX21hdGNoID0gMDsgLyogU3RvcCBzZWFyY2hpbmcgd2hlbiBjdXJyZW50IG1hdGNoIGV4Y2VlZHMgdGhpcyAqL1xuXG4gICAgICAgICAgICAgIC8qIHVzZWQgYnkgdHJlZXMuYzogKi9cblxuICAvKiBEaWRuJ3QgdXNlIGN0X2RhdGEgdHlwZWRlZiBiZWxvdyB0byBzdXBwcmVzcyBjb21waWxlciB3YXJuaW5nICovXG5cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBkeW5fbHRyZWVbSEVBUF9TSVpFXTsgICAvKiBsaXRlcmFsIGFuZCBsZW5ndGggdHJlZSAqL1xuICAvLyBzdHJ1Y3QgY3RfZGF0YV9zIGR5bl9kdHJlZVsyKkRfQ09ERVMrMV07IC8qIGRpc3RhbmNlIHRyZWUgKi9cbiAgLy8gc3RydWN0IGN0X2RhdGFfcyBibF90cmVlWzIqQkxfQ09ERVMrMV07ICAvKiBIdWZmbWFuIHRyZWUgZm9yIGJpdCBsZW5ndGhzICovXG5cbiAgLy8gVXNlIGZsYXQgYXJyYXkgb2YgRE9VQkxFIHNpemUsIHdpdGggaW50ZXJsZWF2ZWQgZmF0YSxcbiAgLy8gYmVjYXVzZSBKUyBkb2VzIG5vdCBzdXBwb3J0IGVmZmVjdGl2ZVxuICB0aGlzLmR5bl9sdHJlZSAgPSBuZXcgdXRpbHMuQnVmMTYoSEVBUF9TSVpFICogMik7XG4gIHRoaXMuZHluX2R0cmVlICA9IG5ldyB1dGlscy5CdWYxNigoMiAqIERfQ09ERVMgKyAxKSAqIDIpO1xuICB0aGlzLmJsX3RyZWUgICAgPSBuZXcgdXRpbHMuQnVmMTYoKDIgKiBCTF9DT0RFUyArIDEpICogMik7XG4gIHplcm8odGhpcy5keW5fbHRyZWUpO1xuICB6ZXJvKHRoaXMuZHluX2R0cmVlKTtcbiAgemVybyh0aGlzLmJsX3RyZWUpO1xuXG4gIHRoaXMubF9kZXNjICAgPSBudWxsOyAgICAgICAgIC8qIGRlc2MuIGZvciBsaXRlcmFsIHRyZWUgKi9cbiAgdGhpcy5kX2Rlc2MgICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGRpc3RhbmNlIHRyZWUgKi9cbiAgdGhpcy5ibF9kZXNjICA9IG51bGw7ICAgICAgICAgLyogZGVzYy4gZm9yIGJpdCBsZW5ndGggdHJlZSAqL1xuXG4gIC8vdXNoIGJsX2NvdW50W01BWF9CSVRTKzFdO1xuICB0aGlzLmJsX2NvdW50ID0gbmV3IHV0aWxzLkJ1ZjE2KE1BWF9CSVRTICsgMSk7XG4gIC8qIG51bWJlciBvZiBjb2RlcyBhdCBlYWNoIGJpdCBsZW5ndGggZm9yIGFuIG9wdGltYWwgdHJlZSAqL1xuXG4gIC8vaW50IGhlYXBbMipMX0NPREVTKzFdOyAgICAgIC8qIGhlYXAgdXNlZCB0byBidWlsZCB0aGUgSHVmZm1hbiB0cmVlcyAqL1xuICB0aGlzLmhlYXAgPSBuZXcgdXRpbHMuQnVmMTYoMiAqIExfQ09ERVMgKyAxKTsgIC8qIGhlYXAgdXNlZCB0byBidWlsZCB0aGUgSHVmZm1hbiB0cmVlcyAqL1xuICB6ZXJvKHRoaXMuaGVhcCk7XG5cbiAgdGhpcy5oZWFwX2xlbiA9IDA7ICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBoZWFwICovXG4gIHRoaXMuaGVhcF9tYXggPSAwOyAgICAgICAgICAgICAgIC8qIGVsZW1lbnQgb2YgbGFyZ2VzdCBmcmVxdWVuY3kgKi9cbiAgLyogVGhlIHNvbnMgb2YgaGVhcFtuXSBhcmUgaGVhcFsyKm5dIGFuZCBoZWFwWzIqbisxXS4gaGVhcFswXSBpcyBub3QgdXNlZC5cbiAgICogVGhlIHNhbWUgaGVhcCBhcnJheSBpcyB1c2VkIHRvIGJ1aWxkIGFsbCB0cmVlcy5cbiAgICovXG5cbiAgdGhpcy5kZXB0aCA9IG5ldyB1dGlscy5CdWYxNigyICogTF9DT0RFUyArIDEpOyAvL3VjaCBkZXB0aFsyKkxfQ09ERVMrMV07XG4gIHplcm8odGhpcy5kZXB0aCk7XG4gIC8qIERlcHRoIG9mIGVhY2ggc3VidHJlZSB1c2VkIGFzIHRpZSBicmVha2VyIGZvciB0cmVlcyBvZiBlcXVhbCBmcmVxdWVuY3lcbiAgICovXG5cbiAgdGhpcy5sX2J1ZiA9IDA7ICAgICAgICAgIC8qIGJ1ZmZlciBpbmRleCBmb3IgbGl0ZXJhbHMgb3IgbGVuZ3RocyAqL1xuXG4gIHRoaXMubGl0X2J1ZnNpemUgPSAwO1xuICAvKiBTaXplIG9mIG1hdGNoIGJ1ZmZlciBmb3IgbGl0ZXJhbHMvbGVuZ3Rocy4gIFRoZXJlIGFyZSA0IHJlYXNvbnMgZm9yXG4gICAqIGxpbWl0aW5nIGxpdF9idWZzaXplIHRvIDY0SzpcbiAgICogICAtIGZyZXF1ZW5jaWVzIGNhbiBiZSBrZXB0IGluIDE2IGJpdCBjb3VudGVyc1xuICAgKiAgIC0gaWYgY29tcHJlc3Npb24gaXMgbm90IHN1Y2Nlc3NmdWwgZm9yIHRoZSBmaXJzdCBibG9jaywgYWxsIGlucHV0XG4gICAqICAgICBkYXRhIGlzIHN0aWxsIGluIHRoZSB3aW5kb3cgc28gd2UgY2FuIHN0aWxsIGVtaXQgYSBzdG9yZWQgYmxvY2sgZXZlblxuICAgKiAgICAgd2hlbiBpbnB1dCBjb21lcyBmcm9tIHN0YW5kYXJkIGlucHV0LiAgKFRoaXMgY2FuIGFsc28gYmUgZG9uZSBmb3JcbiAgICogICAgIGFsbCBibG9ja3MgaWYgbGl0X2J1ZnNpemUgaXMgbm90IGdyZWF0ZXIgdGhhbiAzMksuKVxuICAgKiAgIC0gaWYgY29tcHJlc3Npb24gaXMgbm90IHN1Y2Nlc3NmdWwgZm9yIGEgZmlsZSBzbWFsbGVyIHRoYW4gNjRLLCB3ZSBjYW5cbiAgICogICAgIGV2ZW4gZW1pdCBhIHN0b3JlZCBmaWxlIGluc3RlYWQgb2YgYSBzdG9yZWQgYmxvY2sgKHNhdmluZyA1IGJ5dGVzKS5cbiAgICogICAgIFRoaXMgaXMgYXBwbGljYWJsZSBvbmx5IGZvciB6aXAgKG5vdCBnemlwIG9yIHpsaWIpLlxuICAgKiAgIC0gY3JlYXRpbmcgbmV3IEh1ZmZtYW4gdHJlZXMgbGVzcyBmcmVxdWVudGx5IG1heSBub3QgcHJvdmlkZSBmYXN0XG4gICAqICAgICBhZGFwdGF0aW9uIHRvIGNoYW5nZXMgaW4gdGhlIGlucHV0IGRhdGEgc3RhdGlzdGljcy4gKFRha2UgZm9yXG4gICAqICAgICBleGFtcGxlIGEgYmluYXJ5IGZpbGUgd2l0aCBwb29ybHkgY29tcHJlc3NpYmxlIGNvZGUgZm9sbG93ZWQgYnlcbiAgICogICAgIGEgaGlnaGx5IGNvbXByZXNzaWJsZSBzdHJpbmcgdGFibGUuKSBTbWFsbGVyIGJ1ZmZlciBzaXplcyBnaXZlXG4gICAqICAgICBmYXN0IGFkYXB0YXRpb24gYnV0IGhhdmUgb2YgY291cnNlIHRoZSBvdmVyaGVhZCBvZiB0cmFuc21pdHRpbmdcbiAgICogICAgIHRyZWVzIG1vcmUgZnJlcXVlbnRseS5cbiAgICogICAtIEkgY2FuJ3QgY291bnQgYWJvdmUgNFxuICAgKi9cblxuICB0aGlzLmxhc3RfbGl0ID0gMDsgICAgICAvKiBydW5uaW5nIGluZGV4IGluIGxfYnVmICovXG5cbiAgdGhpcy5kX2J1ZiA9IDA7XG4gIC8qIEJ1ZmZlciBpbmRleCBmb3IgZGlzdGFuY2VzLiBUbyBzaW1wbGlmeSB0aGUgY29kZSwgZF9idWYgYW5kIGxfYnVmIGhhdmVcbiAgICogdGhlIHNhbWUgbnVtYmVyIG9mIGVsZW1lbnRzLiBUbyB1c2UgZGlmZmVyZW50IGxlbmd0aHMsIGFuIGV4dHJhIGZsYWdcbiAgICogYXJyYXkgd291bGQgYmUgbmVjZXNzYXJ5LlxuICAgKi9cblxuICB0aGlzLm9wdF9sZW4gPSAwOyAgICAgICAvKiBiaXQgbGVuZ3RoIG9mIGN1cnJlbnQgYmxvY2sgd2l0aCBvcHRpbWFsIHRyZWVzICovXG4gIHRoaXMuc3RhdGljX2xlbiA9IDA7ICAgIC8qIGJpdCBsZW5ndGggb2YgY3VycmVudCBibG9jayB3aXRoIHN0YXRpYyB0cmVlcyAqL1xuICB0aGlzLm1hdGNoZXMgPSAwOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMgaW4gY3VycmVudCBibG9jayAqL1xuICB0aGlzLmluc2VydCA9IDA7ICAgICAgICAvKiBieXRlcyBhdCBlbmQgb2Ygd2luZG93IGxlZnQgdG8gaW5zZXJ0ICovXG5cblxuICB0aGlzLmJpX2J1ZiA9IDA7XG4gIC8qIE91dHB1dCBidWZmZXIuIGJpdHMgYXJlIGluc2VydGVkIHN0YXJ0aW5nIGF0IHRoZSBib3R0b20gKGxlYXN0XG4gICAqIHNpZ25pZmljYW50IGJpdHMpLlxuICAgKi9cbiAgdGhpcy5iaV92YWxpZCA9IDA7XG4gIC8qIE51bWJlciBvZiB2YWxpZCBiaXRzIGluIGJpX2J1Zi4gIEFsbCBiaXRzIGFib3ZlIHRoZSBsYXN0IHZhbGlkIGJpdFxuICAgKiBhcmUgYWx3YXlzIHplcm8uXG4gICAqL1xuXG4gIC8vIFVzZWQgZm9yIHdpbmRvdyBtZW1vcnkgaW5pdC4gV2Ugc2FmZWx5IGlnbm9yZSBpdCBmb3IgSlMuIFRoYXQgbWFrZXNcbiAgLy8gc2Vuc2Ugb25seSBmb3IgcG9pbnRlcnMgYW5kIG1lbW9yeSBjaGVjayB0b29scy5cbiAgLy90aGlzLmhpZ2hfd2F0ZXIgPSAwO1xuICAvKiBIaWdoIHdhdGVyIG1hcmsgb2Zmc2V0IGluIHdpbmRvdyBmb3IgaW5pdGlhbGl6ZWQgYnl0ZXMgLS0gYnl0ZXMgYWJvdmVcbiAgICogdGhpcyBhcmUgc2V0IHRvIHplcm8gaW4gb3JkZXIgdG8gYXZvaWQgbWVtb3J5IGNoZWNrIHdhcm5pbmdzIHdoZW5cbiAgICogbG9uZ2VzdCBtYXRjaCByb3V0aW5lcyBhY2Nlc3MgYnl0ZXMgcGFzdCB0aGUgaW5wdXQuICBUaGlzIGlzIHRoZW5cbiAgICogdXBkYXRlZCB0byB0aGUgbmV3IGhpZ2ggd2F0ZXIgbWFyay5cbiAgICovXG59XG5cblxuZnVuY3Rpb24gZGVmbGF0ZVJlc2V0S2VlcChzdHJtKSB7XG4gIHZhciBzO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgc3RybS50b3RhbF9pbiA9IHN0cm0udG90YWxfb3V0ID0gMDtcbiAgc3RybS5kYXRhX3R5cGUgPSBaX1VOS05PV047XG5cbiAgcyA9IHN0cm0uc3RhdGU7XG4gIHMucGVuZGluZyA9IDA7XG4gIHMucGVuZGluZ19vdXQgPSAwO1xuXG4gIGlmIChzLndyYXAgPCAwKSB7XG4gICAgcy53cmFwID0gLXMud3JhcDtcbiAgICAvKiB3YXMgbWFkZSBuZWdhdGl2ZSBieSBkZWZsYXRlKC4uLiwgWl9GSU5JU0gpOyAqL1xuICB9XG4gIHMuc3RhdHVzID0gKHMud3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFKTtcbiAgc3RybS5hZGxlciA9IChzLndyYXAgPT09IDIpID9cbiAgICAwICAvLyBjcmMzMigwLCBaX05VTEwsIDApXG4gIDpcbiAgICAxOyAvLyBhZGxlcjMyKDAsIFpfTlVMTCwgMClcbiAgcy5sYXN0X2ZsdXNoID0gWl9OT19GTFVTSDtcbiAgdHJlZXMuX3RyX2luaXQocyk7XG4gIHJldHVybiBaX09LO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVSZXNldChzdHJtKSB7XG4gIHZhciByZXQgPSBkZWZsYXRlUmVzZXRLZWVwKHN0cm0pO1xuICBpZiAocmV0ID09PSBaX09LKSB7XG4gICAgbG1faW5pdChzdHJtLnN0YXRlKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGVTZXRIZWFkZXIoc3RybSwgaGVhZCkge1xuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIGlmIChzdHJtLnN0YXRlLndyYXAgIT09IDIpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0cm0uc3RhdGUuZ3poZWFkID0gaGVhZDtcbiAgcmV0dXJuIFpfT0s7XG59XG5cblxuZnVuY3Rpb24gZGVmbGF0ZUluaXQyKHN0cm0sIGxldmVsLCBtZXRob2QsIHdpbmRvd0JpdHMsIG1lbUxldmVsLCBzdHJhdGVneSkge1xuICBpZiAoIXN0cm0pIHsgLy8gPT09IFpfTlVMTFxuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuICB2YXIgd3JhcCA9IDE7XG5cbiAgaWYgKGxldmVsID09PSBaX0RFRkFVTFRfQ09NUFJFU1NJT04pIHtcbiAgICBsZXZlbCA9IDY7XG4gIH1cblxuICBpZiAod2luZG93Qml0cyA8IDApIHsgLyogc3VwcHJlc3MgemxpYiB3cmFwcGVyICovXG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG5cbiAgZWxzZSBpZiAod2luZG93Qml0cyA+IDE1KSB7XG4gICAgd3JhcCA9IDI7ICAgICAgICAgICAvKiB3cml0ZSBnemlwIHdyYXBwZXIgaW5zdGVhZCAqL1xuICAgIHdpbmRvd0JpdHMgLT0gMTY7XG4gIH1cblxuXG4gIGlmIChtZW1MZXZlbCA8IDEgfHwgbWVtTGV2ZWwgPiBNQVhfTUVNX0xFVkVMIHx8IG1ldGhvZCAhPT0gWl9ERUZMQVRFRCB8fFxuICAgIHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSB8fCBsZXZlbCA8IDAgfHwgbGV2ZWwgPiA5IHx8XG4gICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cblxuICBpZiAod2luZG93Qml0cyA9PT0gOCkge1xuICAgIHdpbmRvd0JpdHMgPSA5O1xuICB9XG4gIC8qIHVudGlsIDI1Ni1ieXRlIHdpbmRvdyBidWcgZml4ZWQgKi9cblxuICB2YXIgcyA9IG5ldyBEZWZsYXRlU3RhdGUoKTtcblxuICBzdHJtLnN0YXRlID0gcztcbiAgcy5zdHJtID0gc3RybTtcblxuICBzLndyYXAgPSB3cmFwO1xuICBzLmd6aGVhZCA9IG51bGw7XG4gIHMud19iaXRzID0gd2luZG93Qml0cztcbiAgcy53X3NpemUgPSAxIDw8IHMud19iaXRzO1xuICBzLndfbWFzayA9IHMud19zaXplIC0gMTtcblxuICBzLmhhc2hfYml0cyA9IG1lbUxldmVsICsgNztcbiAgcy5oYXNoX3NpemUgPSAxIDw8IHMuaGFzaF9iaXRzO1xuICBzLmhhc2hfbWFzayA9IHMuaGFzaF9zaXplIC0gMTtcbiAgcy5oYXNoX3NoaWZ0ID0gfn4oKHMuaGFzaF9iaXRzICsgTUlOX01BVENIIC0gMSkgLyBNSU5fTUFUQ0gpO1xuXG4gIHMud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgocy53X3NpemUgKiAyKTtcbiAgcy5oZWFkID0gbmV3IHV0aWxzLkJ1ZjE2KHMuaGFzaF9zaXplKTtcbiAgcy5wcmV2ID0gbmV3IHV0aWxzLkJ1ZjE2KHMud19zaXplKTtcblxuICAvLyBEb24ndCBuZWVkIG1lbSBpbml0IG1hZ2ljIGZvciBKUy5cbiAgLy9zLmhpZ2hfd2F0ZXIgPSAwOyAgLyogbm90aGluZyB3cml0dGVuIHRvIHMtPndpbmRvdyB5ZXQgKi9cblxuICBzLmxpdF9idWZzaXplID0gMSA8PCAobWVtTGV2ZWwgKyA2KTsgLyogMTZLIGVsZW1lbnRzIGJ5IGRlZmF1bHQgKi9cblxuICBzLnBlbmRpbmdfYnVmX3NpemUgPSBzLmxpdF9idWZzaXplICogNDtcblxuICAvL292ZXJsYXkgPSAodXNoZiAqKSBaQUxMT0Moc3RybSwgcy0+bGl0X2J1ZnNpemUsIHNpemVvZih1c2gpKzIpO1xuICAvL3MtPnBlbmRpbmdfYnVmID0gKHVjaGYgKikgb3ZlcmxheTtcbiAgcy5wZW5kaW5nX2J1ZiA9IG5ldyB1dGlscy5CdWY4KHMucGVuZGluZ19idWZfc2l6ZSk7XG5cbiAgLy8gSXQgaXMgb2Zmc2V0IGZyb20gYHMucGVuZGluZ19idWZgIChzaXplIGlzIGBzLmxpdF9idWZzaXplICogMmApXG4gIC8vcy0+ZF9idWYgPSBvdmVybGF5ICsgcy0+bGl0X2J1ZnNpemUvc2l6ZW9mKHVzaCk7XG4gIHMuZF9idWYgPSAxICogcy5saXRfYnVmc2l6ZTtcblxuICAvL3MtPmxfYnVmID0gcy0+cGVuZGluZ19idWYgKyAoMStzaXplb2YodXNoKSkqcy0+bGl0X2J1ZnNpemU7XG4gIHMubF9idWYgPSAoMSArIDIpICogcy5saXRfYnVmc2l6ZTtcblxuICBzLmxldmVsID0gbGV2ZWw7XG4gIHMuc3RyYXRlZ3kgPSBzdHJhdGVneTtcbiAgcy5tZXRob2QgPSBtZXRob2Q7XG5cbiAgcmV0dXJuIGRlZmxhdGVSZXNldChzdHJtKTtcbn1cblxuZnVuY3Rpb24gZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIHtcbiAgcmV0dXJuIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgWl9ERUZMQVRFRCwgTUFYX1dCSVRTLCBERUZfTUVNX0xFVkVMLCBaX0RFRkFVTFRfU1RSQVRFR1kpO1xufVxuXG5cbmZ1bmN0aW9uIGRlZmxhdGUoc3RybSwgZmx1c2gpIHtcbiAgdmFyIG9sZF9mbHVzaCwgcztcbiAgdmFyIGJlZywgdmFsOyAvLyBmb3IgZ3ppcCBoZWFkZXIgd3JpdGUgb25seVxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fFxuICAgIGZsdXNoID4gWl9CTE9DSyB8fCBmbHVzaCA8IDApIHtcbiAgICByZXR1cm4gc3RybSA/IGVycihzdHJtLCBaX1NUUkVBTV9FUlJPUikgOiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHMgPSBzdHJtLnN0YXRlO1xuXG4gIGlmICghc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSB8fFxuICAgICAgKHMuc3RhdHVzID09PSBGSU5JU0hfU1RBVEUgJiYgZmx1c2ggIT09IFpfRklOSVNIKSkge1xuICAgIHJldHVybiBlcnIoc3RybSwgKHN0cm0uYXZhaWxfb3V0ID09PSAwKSA/IFpfQlVGX0VSUk9SIDogWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgcy5zdHJtID0gc3RybTsgLyoganVzdCBpbiBjYXNlICovXG4gIG9sZF9mbHVzaCA9IHMubGFzdF9mbHVzaDtcbiAgcy5sYXN0X2ZsdXNoID0gZmx1c2g7XG5cbiAgLyogV3JpdGUgdGhlIGhlYWRlciAqL1xuICBpZiAocy5zdGF0dXMgPT09IElOSVRfU1RBVEUpIHtcblxuICAgIGlmIChzLndyYXAgPT09IDIpIHsgLy8gR1pJUCBoZWFkZXJcbiAgICAgIHN0cm0uYWRsZXIgPSAwOyAgLy9jcmMzMigwTCwgWl9OVUxMLCAwKTtcbiAgICAgIHB1dF9ieXRlKHMsIDMxKTtcbiAgICAgIHB1dF9ieXRlKHMsIDEzOSk7XG4gICAgICBwdXRfYnl0ZShzLCA4KTtcbiAgICAgIGlmICghcy5nemhlYWQpIHsgLy8gcy0+Z3poZWFkID09IFpfTlVMTFxuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIDApO1xuICAgICAgICBwdXRfYnl0ZShzLCAwKTtcbiAgICAgICAgcHV0X2J5dGUocywgMCk7XG4gICAgICAgIHB1dF9ieXRlKHMsIHMubGV2ZWwgPT09IDkgPyAyIDpcbiAgICAgICAgICAgICAgICAgICAgKHMuc3RyYXRlZ3kgPj0gWl9IVUZGTUFOX09OTFkgfHwgcy5sZXZlbCA8IDIgP1xuICAgICAgICAgICAgICAgICAgICAgNCA6IDApKTtcbiAgICAgICAgcHV0X2J5dGUocywgT1NfQ09ERSk7XG4gICAgICAgIHMuc3RhdHVzID0gQlVTWV9TVEFURTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGV4dCA/IDEgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzLmd6aGVhZC5oY3JjID8gMiA6IDApICtcbiAgICAgICAgICAgICAgICAgICAgKCFzLmd6aGVhZC5leHRyYSA/IDAgOiA0KSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQubmFtZSA/IDAgOiA4KSArXG4gICAgICAgICAgICAgICAgICAgICghcy5nemhlYWQuY29tbWVudCA/IDAgOiAxNilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC50aW1lICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC50aW1lID4+IDgpICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIChzLmd6aGVhZC50aW1lID4+IDE2KSAmIDB4ZmYpO1xuICAgICAgICBwdXRfYnl0ZShzLCAocy5nemhlYWQudGltZSA+PiAyNCkgJiAweGZmKTtcbiAgICAgICAgcHV0X2J5dGUocywgcy5sZXZlbCA9PT0gOSA/IDIgOlxuICAgICAgICAgICAgICAgICAgICAocy5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLmxldmVsIDwgMiA/XG4gICAgICAgICAgICAgICAgICAgICA0IDogMCkpO1xuICAgICAgICBwdXRfYnl0ZShzLCBzLmd6aGVhZC5vcyAmIDB4ZmYpO1xuICAgICAgICBpZiAocy5nemhlYWQuZXh0cmEgJiYgcy5nemhlYWQuZXh0cmEubGVuZ3RoKSB7XG4gICAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQuZXh0cmEubGVuZ3RoICYgMHhmZik7XG4gICAgICAgICAgcHV0X2J5dGUocywgKHMuZ3poZWFkLmV4dHJhLmxlbmd0aCA+PiA4KSAmIDB4ZmYpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzLmd6aGVhZC5oY3JjKSB7XG4gICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZywgMCk7XG4gICAgICAgIH1cbiAgICAgICAgcy5nemluZGV4ID0gMDtcbiAgICAgICAgcy5zdGF0dXMgPSBFWFRSQV9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSAvLyBERUZMQVRFIGhlYWRlclxuICAgIHtcbiAgICAgIHZhciBoZWFkZXIgPSAoWl9ERUZMQVRFRCArICgocy53X2JpdHMgLSA4KSA8PCA0KSkgPDwgODtcbiAgICAgIHZhciBsZXZlbF9mbGFncyA9IC0xO1xuXG4gICAgICBpZiAocy5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLmxldmVsIDwgMikge1xuICAgICAgICBsZXZlbF9mbGFncyA9IDA7XG4gICAgICB9IGVsc2UgaWYgKHMubGV2ZWwgPCA2KSB7XG4gICAgICAgIGxldmVsX2ZsYWdzID0gMTtcbiAgICAgIH0gZWxzZSBpZiAocy5sZXZlbCA9PT0gNikge1xuICAgICAgICBsZXZlbF9mbGFncyA9IDI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXZlbF9mbGFncyA9IDM7XG4gICAgICB9XG4gICAgICBoZWFkZXIgfD0gKGxldmVsX2ZsYWdzIDw8IDYpO1xuICAgICAgaWYgKHMuc3Ryc3RhcnQgIT09IDApIHsgaGVhZGVyIHw9IFBSRVNFVF9ESUNUOyB9XG4gICAgICBoZWFkZXIgKz0gMzEgLSAoaGVhZGVyICUgMzEpO1xuXG4gICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgICBwdXRTaG9ydE1TQihzLCBoZWFkZXIpO1xuXG4gICAgICAvKiBTYXZlIHRoZSBhZGxlcjMyIG9mIHRoZSBwcmVzZXQgZGljdGlvbmFyeTogKi9cbiAgICAgIGlmIChzLnN0cnN0YXJ0ICE9PSAwKSB7XG4gICAgICAgIHB1dFNob3J0TVNCKHMsIHN0cm0uYWRsZXIgPj4+IDE2KTtcbiAgICAgICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciAmIDB4ZmZmZik7XG4gICAgICB9XG4gICAgICBzdHJtLmFkbGVyID0gMTsgLy8gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTtcbiAgICB9XG4gIH1cblxuLy8jaWZkZWYgR1pJUFxuICBpZiAocy5zdGF0dXMgPT09IEVYVFJBX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLmV4dHJhLyogIT0gWl9OVUxMKi8pIHtcbiAgICAgIGJlZyA9IHMucGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi9cblxuICAgICAgd2hpbGUgKHMuZ3ppbmRleCA8IChzLmd6aGVhZC5leHRyYS5sZW5ndGggJiAweGZmZmYpKSB7XG4gICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7XG4gICAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcHV0X2J5dGUocywgcy5nemhlYWQuZXh0cmFbcy5nemluZGV4XSAmIDB4ZmYpO1xuICAgICAgICBzLmd6aW5kZXgrKztcbiAgICAgIH1cbiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgfVxuICAgICAgaWYgKHMuZ3ppbmRleCA9PT0gcy5nemhlYWQuZXh0cmEubGVuZ3RoKSB7XG4gICAgICAgIHMuZ3ppbmRleCA9IDA7XG4gICAgICAgIHMuc3RhdHVzID0gTkFNRV9TVEFURTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBzLnN0YXR1cyA9IE5BTUVfU1RBVEU7XG4gICAgfVxuICB9XG4gIGlmIChzLnN0YXR1cyA9PT0gTkFNRV9TVEFURSkge1xuICAgIGlmIChzLmd6aGVhZC5uYW1lLyogIT0gWl9OVUxMKi8pIHtcbiAgICAgIGJlZyA9IHMucGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi9cbiAgICAgIC8vaW50IHZhbDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAocy5wZW5kaW5nID09PSBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBjcmMzMihzdHJtLmFkbGVyLCBzLnBlbmRpbmdfYnVmLCBzLnBlbmRpbmcgLSBiZWcsIGJlZyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7XG4gICAgICAgICAgYmVnID0gcy5wZW5kaW5nO1xuICAgICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgICAgdmFsID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBKUyBzcGVjaWZpYzogbGl0dGxlIG1hZ2ljIHRvIGFkZCB6ZXJvIHRlcm1pbmF0b3IgdG8gZW5kIG9mIHN0cmluZ1xuICAgICAgICBpZiAocy5nemluZGV4IDwgcy5nemhlYWQubmFtZS5sZW5ndGgpIHtcbiAgICAgICAgICB2YWwgPSBzLmd6aGVhZC5uYW1lLmNoYXJDb2RlQXQocy5nemluZGV4KyspICYgMHhmZjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7XG4gICAgICB9IHdoaWxlICh2YWwgIT09IDApO1xuXG4gICAgICBpZiAocy5nemhlYWQuaGNyYyAmJiBzLnBlbmRpbmcgPiBiZWcpIHtcbiAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgIH1cbiAgICAgIGlmICh2YWwgPT09IDApIHtcbiAgICAgICAgcy5nemluZGV4ID0gMDtcbiAgICAgICAgcy5zdGF0dXMgPSBDT01NRU5UX1NUQVRFO1xuICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHMuc3RhdHVzID0gQ09NTUVOVF9TVEFURTtcbiAgICB9XG4gIH1cbiAgaWYgKHMuc3RhdHVzID09PSBDT01NRU5UX1NUQVRFKSB7XG4gICAgaWYgKHMuZ3poZWFkLmNvbW1lbnQvKiAhPSBaX05VTEwqLykge1xuICAgICAgYmVnID0gcy5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqL1xuICAgICAgLy9pbnQgdmFsO1xuXG4gICAgICBkbyB7XG4gICAgICAgIGlmIChzLnBlbmRpbmcgPT09IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICAgICAgc3RybS5hZGxlciA9IGNyYzMyKHN0cm0uYWRsZXIsIHMucGVuZGluZ19idWYsIHMucGVuZGluZyAtIGJlZywgYmVnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICAgICAgICBiZWcgPSBzLnBlbmRpbmc7XG4gICAgICAgICAgaWYgKHMucGVuZGluZyA9PT0gcy5wZW5kaW5nX2J1Zl9zaXplKSB7XG4gICAgICAgICAgICB2YWwgPSAxO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEpTIHNwZWNpZmljOiBsaXR0bGUgbWFnaWMgdG8gYWRkIHplcm8gdGVybWluYXRvciB0byBlbmQgb2Ygc3RyaW5nXG4gICAgICAgIGlmIChzLmd6aW5kZXggPCBzLmd6aGVhZC5jb21tZW50Lmxlbmd0aCkge1xuICAgICAgICAgIHZhbCA9IHMuZ3poZWFkLmNvbW1lbnQuY2hhckNvZGVBdChzLmd6aW5kZXgrKykgJiAweGZmO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbCA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcHV0X2J5dGUocywgdmFsKTtcbiAgICAgIH0gd2hpbGUgKHZhbCAhPT0gMCk7XG5cbiAgICAgIGlmIChzLmd6aGVhZC5oY3JjICYmIHMucGVuZGluZyA+IGJlZykge1xuICAgICAgICBzdHJtLmFkbGVyID0gY3JjMzIoc3RybS5hZGxlciwgcy5wZW5kaW5nX2J1Ziwgcy5wZW5kaW5nIC0gYmVnLCBiZWcpO1xuICAgICAgfVxuICAgICAgaWYgKHZhbCA9PT0gMCkge1xuICAgICAgICBzLnN0YXR1cyA9IEhDUkNfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBIQ1JDX1NUQVRFO1xuICAgIH1cbiAgfVxuICBpZiAocy5zdGF0dXMgPT09IEhDUkNfU1RBVEUpIHtcbiAgICBpZiAocy5nemhlYWQuaGNyYykge1xuICAgICAgaWYgKHMucGVuZGluZyArIDIgPiBzLnBlbmRpbmdfYnVmX3NpemUpIHtcbiAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICAgIH1cbiAgICAgIGlmIChzLnBlbmRpbmcgKyAyIDw9IHMucGVuZGluZ19idWZfc2l6ZSkge1xuICAgICAgICBwdXRfYnl0ZShzLCBzdHJtLmFkbGVyICYgMHhmZik7XG4gICAgICAgIHB1dF9ieXRlKHMsIChzdHJtLmFkbGVyID4+IDgpICYgMHhmZik7XG4gICAgICAgIHN0cm0uYWRsZXIgPSAwOyAvL2NyYzMyKDBMLCBaX05VTEwsIDApO1xuICAgICAgICBzLnN0YXR1cyA9IEJVU1lfU1RBVEU7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgcy5zdGF0dXMgPSBCVVNZX1NUQVRFO1xuICAgIH1cbiAgfVxuLy8jZW5kaWZcblxuICAvKiBGbHVzaCBhcyBtdWNoIHBlbmRpbmcgb3V0cHV0IGFzIHBvc3NpYmxlICovXG4gIGlmIChzLnBlbmRpbmcgIT09IDApIHtcbiAgICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAgIGlmIChzdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgLyogU2luY2UgYXZhaWxfb3V0IGlzIDAsIGRlZmxhdGUgd2lsbCBiZSBjYWxsZWQgYWdhaW4gd2l0aFxuICAgICAgICogbW9yZSBvdXRwdXQgc3BhY2UsIGJ1dCBwb3NzaWJseSB3aXRoIGJvdGggcGVuZGluZyBhbmRcbiAgICAgICAqIGF2YWlsX2luIGVxdWFsIHRvIHplcm8uIFRoZXJlIHdvbid0IGJlIGFueXRoaW5nIHRvIGRvLFxuICAgICAgICogYnV0IHRoaXMgaXMgbm90IGFuIGVycm9yIHNpdHVhdGlvbiBzbyBtYWtlIHN1cmUgd2VcbiAgICAgICAqIHJldHVybiBPSyBpbnN0ZWFkIG9mIEJVRl9FUlJPUiBhdCBuZXh0IGNhbGwgb2YgZGVmbGF0ZTpcbiAgICAgICAqL1xuICAgICAgcy5sYXN0X2ZsdXNoID0gLTE7XG4gICAgICByZXR1cm4gWl9PSztcbiAgICB9XG5cbiAgICAvKiBNYWtlIHN1cmUgdGhlcmUgaXMgc29tZXRoaW5nIHRvIGRvIGFuZCBhdm9pZCBkdXBsaWNhdGUgY29uc2VjdXRpdmVcbiAgICAgKiBmbHVzaGVzLiBGb3IgcmVwZWF0ZWQgYW5kIHVzZWxlc3MgY2FsbHMgd2l0aCBaX0ZJTklTSCwgd2Uga2VlcFxuICAgICAqIHJldHVybmluZyBaX1NUUkVBTV9FTkQgaW5zdGVhZCBvZiBaX0JVRl9FUlJPUi5cbiAgICAgKi9cbiAgfSBlbHNlIGlmIChzdHJtLmF2YWlsX2luID09PSAwICYmIHJhbmsoZmx1c2gpIDw9IHJhbmsob2xkX2ZsdXNoKSAmJlxuICAgIGZsdXNoICE9PSBaX0ZJTklTSCkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9CVUZfRVJST1IpO1xuICB9XG5cbiAgLyogVXNlciBtdXN0IG5vdCBwcm92aWRlIG1vcmUgaW5wdXQgYWZ0ZXIgdGhlIGZpcnN0IEZJTklTSDogKi9cbiAgaWYgKHMuc3RhdHVzID09PSBGSU5JU0hfU1RBVEUgJiYgc3RybS5hdmFpbF9pbiAhPT0gMCkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9CVUZfRVJST1IpO1xuICB9XG5cbiAgLyogU3RhcnQgYSBuZXcgYmxvY2sgb3IgY29udGludWUgdGhlIGN1cnJlbnQgb25lLlxuICAgKi9cbiAgaWYgKHN0cm0uYXZhaWxfaW4gIT09IDAgfHwgcy5sb29rYWhlYWQgIT09IDAgfHxcbiAgICAoZmx1c2ggIT09IFpfTk9fRkxVU0ggJiYgcy5zdGF0dXMgIT09IEZJTklTSF9TVEFURSkpIHtcbiAgICB2YXIgYnN0YXRlID0gKHMuc3RyYXRlZ3kgPT09IFpfSFVGRk1BTl9PTkxZKSA/IGRlZmxhdGVfaHVmZihzLCBmbHVzaCkgOlxuICAgICAgKHMuc3RyYXRlZ3kgPT09IFpfUkxFID8gZGVmbGF0ZV9ybGUocywgZmx1c2gpIDpcbiAgICAgICAgY29uZmlndXJhdGlvbl90YWJsZVtzLmxldmVsXS5mdW5jKHMsIGZsdXNoKSk7XG5cbiAgICBpZiAoYnN0YXRlID09PSBCU19GSU5JU0hfU1RBUlRFRCB8fCBic3RhdGUgPT09IEJTX0ZJTklTSF9ET05FKSB7XG4gICAgICBzLnN0YXR1cyA9IEZJTklTSF9TVEFURTtcbiAgICB9XG4gICAgaWYgKGJzdGF0ZSA9PT0gQlNfTkVFRF9NT1JFIHx8IGJzdGF0ZSA9PT0gQlNfRklOSVNIX1NUQVJURUQpIHtcbiAgICAgIGlmIChzdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICBzLmxhc3RfZmx1c2ggPSAtMTtcbiAgICAgICAgLyogYXZvaWQgQlVGX0VSUk9SIG5leHQgY2FsbCwgc2VlIGFib3ZlICovXG4gICAgICB9XG4gICAgICByZXR1cm4gWl9PSztcbiAgICAgIC8qIElmIGZsdXNoICE9IFpfTk9fRkxVU0ggJiYgYXZhaWxfb3V0ID09IDAsIHRoZSBuZXh0IGNhbGxcbiAgICAgICAqIG9mIGRlZmxhdGUgc2hvdWxkIHVzZSB0aGUgc2FtZSBmbHVzaCBwYXJhbWV0ZXIgdG8gbWFrZSBzdXJlXG4gICAgICAgKiB0aGF0IHRoZSBmbHVzaCBpcyBjb21wbGV0ZS4gU28gd2UgZG9uJ3QgaGF2ZSB0byBvdXRwdXQgYW5cbiAgICAgICAqIGVtcHR5IGJsb2NrIGhlcmUsIHRoaXMgd2lsbCBiZSBkb25lIGF0IG5leHQgY2FsbC4gVGhpcyBhbHNvXG4gICAgICAgKiBlbnN1cmVzIHRoYXQgZm9yIGEgdmVyeSBzbWFsbCBvdXRwdXQgYnVmZmVyLCB3ZSBlbWl0IGF0IG1vc3RcbiAgICAgICAqIG9uZSBlbXB0eSBibG9jay5cbiAgICAgICAqL1xuICAgIH1cbiAgICBpZiAoYnN0YXRlID09PSBCU19CTE9DS19ET05FKSB7XG4gICAgICBpZiAoZmx1c2ggPT09IFpfUEFSVElBTF9GTFVTSCkge1xuICAgICAgICB0cmVlcy5fdHJfYWxpZ24ocyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChmbHVzaCAhPT0gWl9CTE9DSykgeyAvKiBGVUxMX0ZMVVNIIG9yIFNZTkNfRkxVU0ggKi9cblxuICAgICAgICB0cmVlcy5fdHJfc3RvcmVkX2Jsb2NrKHMsIDAsIDAsIGZhbHNlKTtcbiAgICAgICAgLyogRm9yIGEgZnVsbCBmbHVzaCwgdGhpcyBlbXB0eSBibG9jayB3aWxsIGJlIHJlY29nbml6ZWRcbiAgICAgICAgICogYXMgYSBzcGVjaWFsIG1hcmtlciBieSBpbmZsYXRlX3N5bmMoKS5cbiAgICAgICAgICovXG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9GVUxMX0ZMVVNIKSB7XG4gICAgICAgICAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovICAgICAgICAgICAgIC8qIGZvcmdldCBoaXN0b3J5ICovXG4gICAgICAgICAgemVybyhzLmhlYWQpOyAvLyBGaWxsIHdpdGggTklMICg9IDApO1xuXG4gICAgICAgICAgaWYgKHMubG9va2FoZWFkID09PSAwKSB7XG4gICAgICAgICAgICBzLnN0cnN0YXJ0ID0gMDtcbiAgICAgICAgICAgIHMuYmxvY2tfc3RhcnQgPSAwO1xuICAgICAgICAgICAgcy5pbnNlcnQgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTtcbiAgICAgIGlmIChzdHJtLmF2YWlsX291dCA9PT0gMCkge1xuICAgICAgICBzLmxhc3RfZmx1c2ggPSAtMTsgLyogYXZvaWQgQlVGX0VSUk9SIGF0IG5leHQgY2FsbCwgc2VlIGFib3ZlICovXG4gICAgICAgIHJldHVybiBaX09LO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvL0Fzc2VydChzdHJtLT5hdmFpbF9vdXQgPiAwLCBcImJ1ZzJcIik7XG4gIC8vaWYgKHN0cm0uYXZhaWxfb3V0IDw9IDApIHsgdGhyb3cgbmV3IEVycm9yKFwiYnVnMlwiKTt9XG5cbiAgaWYgKGZsdXNoICE9PSBaX0ZJTklTSCkgeyByZXR1cm4gWl9PSzsgfVxuICBpZiAocy53cmFwIDw9IDApIHsgcmV0dXJuIFpfU1RSRUFNX0VORDsgfVxuXG4gIC8qIFdyaXRlIHRoZSB0cmFpbGVyICovXG4gIGlmIChzLndyYXAgPT09IDIpIHtcbiAgICBwdXRfYnl0ZShzLCBzdHJtLmFkbGVyICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0uYWRsZXIgPj4gOCkgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiAxNikgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS5hZGxlciA+PiAyNCkgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCBzdHJtLnRvdGFsX2luICYgMHhmZik7XG4gICAgcHV0X2J5dGUocywgKHN0cm0udG90YWxfaW4gPj4gOCkgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiAxNikgJiAweGZmKTtcbiAgICBwdXRfYnl0ZShzLCAoc3RybS50b3RhbF9pbiA+PiAyNCkgJiAweGZmKTtcbiAgfVxuICBlbHNlXG4gIHtcbiAgICBwdXRTaG9ydE1TQihzLCBzdHJtLmFkbGVyID4+PiAxNik7XG4gICAgcHV0U2hvcnRNU0Iocywgc3RybS5hZGxlciAmIDB4ZmZmZik7XG4gIH1cblxuICBmbHVzaF9wZW5kaW5nKHN0cm0pO1xuICAvKiBJZiBhdmFpbF9vdXQgaXMgemVybywgdGhlIGFwcGxpY2F0aW9uIHdpbGwgY2FsbCBkZWZsYXRlIGFnYWluXG4gICAqIHRvIGZsdXNoIHRoZSByZXN0LlxuICAgKi9cbiAgaWYgKHMud3JhcCA+IDApIHsgcy53cmFwID0gLXMud3JhcDsgfVxuICAvKiB3cml0ZSB0aGUgdHJhaWxlciBvbmx5IG9uY2UhICovXG4gIHJldHVybiBzLnBlbmRpbmcgIT09IDAgPyBaX09LIDogWl9TVFJFQU1fRU5EO1xufVxuXG5mdW5jdGlvbiBkZWZsYXRlRW5kKHN0cm0pIHtcbiAgdmFyIHN0YXR1cztcblxuICBpZiAoIXN0cm0vKj09IFpfTlVMTCovIHx8ICFzdHJtLnN0YXRlLyo9PSBaX05VTEwqLykge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHN0YXR1cyA9IHN0cm0uc3RhdGUuc3RhdHVzO1xuICBpZiAoc3RhdHVzICE9PSBJTklUX1NUQVRFICYmXG4gICAgc3RhdHVzICE9PSBFWFRSQV9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gTkFNRV9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gQ09NTUVOVF9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gSENSQ19TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gQlVTWV9TVEFURSAmJlxuICAgIHN0YXR1cyAhPT0gRklOSVNIX1NUQVRFXG4gICkge1xuICAgIHJldHVybiBlcnIoc3RybSwgWl9TVFJFQU1fRVJST1IpO1xuICB9XG5cbiAgc3RybS5zdGF0ZSA9IG51bGw7XG5cbiAgcmV0dXJuIHN0YXR1cyA9PT0gQlVTWV9TVEFURSA/IGVycihzdHJtLCBaX0RBVEFfRVJST1IpIDogWl9PSztcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBJbml0aWFsaXplcyB0aGUgY29tcHJlc3Npb24gZGljdGlvbmFyeSBmcm9tIHRoZSBnaXZlbiBieXRlXG4gKiBzZXF1ZW5jZSB3aXRob3V0IHByb2R1Y2luZyBhbnkgY29tcHJlc3NlZCBvdXRwdXQuXG4gKi9cbmZ1bmN0aW9uIGRlZmxhdGVTZXREaWN0aW9uYXJ5KHN0cm0sIGRpY3Rpb25hcnkpIHtcbiAgdmFyIGRpY3RMZW5ndGggPSBkaWN0aW9uYXJ5Lmxlbmd0aDtcblxuICB2YXIgcztcbiAgdmFyIHN0ciwgbjtcbiAgdmFyIHdyYXA7XG4gIHZhciBhdmFpbDtcbiAgdmFyIG5leHQ7XG4gIHZhciBpbnB1dDtcbiAgdmFyIHRtcERpY3Q7XG5cbiAgaWYgKCFzdHJtLyo9PSBaX05VTEwqLyB8fCAhc3RybS5zdGF0ZS8qPT0gWl9OVUxMKi8pIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICBzID0gc3RybS5zdGF0ZTtcbiAgd3JhcCA9IHMud3JhcDtcblxuICBpZiAod3JhcCA9PT0gMiB8fCAod3JhcCA9PT0gMSAmJiBzLnN0YXR1cyAhPT0gSU5JVF9TVEFURSkgfHwgcy5sb29rYWhlYWQpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cblxuICAvKiB3aGVuIHVzaW5nIHpsaWIgd3JhcHBlcnMsIGNvbXB1dGUgQWRsZXItMzIgZm9yIHByb3ZpZGVkIGRpY3Rpb25hcnkgKi9cbiAgaWYgKHdyYXAgPT09IDEpIHtcbiAgICAvKiBhZGxlcjMyKHN0cm0tPmFkbGVyLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoKTsgKi9cbiAgICBzdHJtLmFkbGVyID0gYWRsZXIzMihzdHJtLmFkbGVyLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoLCAwKTtcbiAgfVxuXG4gIHMud3JhcCA9IDA7ICAgLyogYXZvaWQgY29tcHV0aW5nIEFkbGVyLTMyIGluIHJlYWRfYnVmICovXG5cbiAgLyogaWYgZGljdGlvbmFyeSB3b3VsZCBmaWxsIHdpbmRvdywganVzdCByZXBsYWNlIHRoZSBoaXN0b3J5ICovXG4gIGlmIChkaWN0TGVuZ3RoID49IHMud19zaXplKSB7XG4gICAgaWYgKHdyYXAgPT09IDApIHsgICAgICAgICAgICAvKiBhbHJlYWR5IGVtcHR5IG90aGVyd2lzZSAqL1xuICAgICAgLyoqKiBDTEVBUl9IQVNIKHMpOyAqKiovXG4gICAgICB6ZXJvKHMuaGVhZCk7IC8vIEZpbGwgd2l0aCBOSUwgKD0gMCk7XG4gICAgICBzLnN0cnN0YXJ0ID0gMDtcbiAgICAgIHMuYmxvY2tfc3RhcnQgPSAwO1xuICAgICAgcy5pbnNlcnQgPSAwO1xuICAgIH1cbiAgICAvKiB1c2UgdGhlIHRhaWwgKi9cbiAgICAvLyBkaWN0aW9uYXJ5ID0gZGljdGlvbmFyeS5zbGljZShkaWN0TGVuZ3RoIC0gcy53X3NpemUpO1xuICAgIHRtcERpY3QgPSBuZXcgdXRpbHMuQnVmOChzLndfc2l6ZSk7XG4gICAgdXRpbHMuYXJyYXlTZXQodG1wRGljdCwgZGljdGlvbmFyeSwgZGljdExlbmd0aCAtIHMud19zaXplLCBzLndfc2l6ZSwgMCk7XG4gICAgZGljdGlvbmFyeSA9IHRtcERpY3Q7XG4gICAgZGljdExlbmd0aCA9IHMud19zaXplO1xuICB9XG4gIC8qIGluc2VydCBkaWN0aW9uYXJ5IGludG8gd2luZG93IGFuZCBoYXNoICovXG4gIGF2YWlsID0gc3RybS5hdmFpbF9pbjtcbiAgbmV4dCA9IHN0cm0ubmV4dF9pbjtcbiAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICBzdHJtLmF2YWlsX2luID0gZGljdExlbmd0aDtcbiAgc3RybS5uZXh0X2luID0gMDtcbiAgc3RybS5pbnB1dCA9IGRpY3Rpb25hcnk7XG4gIGZpbGxfd2luZG93KHMpO1xuICB3aGlsZSAocy5sb29rYWhlYWQgPj0gTUlOX01BVENIKSB7XG4gICAgc3RyID0gcy5zdHJzdGFydDtcbiAgICBuID0gcy5sb29rYWhlYWQgLSAoTUlOX01BVENIIC0gMSk7XG4gICAgZG8ge1xuICAgICAgLyogVVBEQVRFX0hBU0gocywgcy0+aW5zX2gsIHMtPndpbmRvd1tzdHIgKyBNSU5fTUFUQ0gtMV0pOyAqL1xuICAgICAgcy5pbnNfaCA9ICgocy5pbnNfaCA8PCBzLmhhc2hfc2hpZnQpIF4gcy53aW5kb3dbc3RyICsgTUlOX01BVENIIC0gMV0pICYgcy5oYXNoX21hc2s7XG5cbiAgICAgIHMucHJldltzdHIgJiBzLndfbWFza10gPSBzLmhlYWRbcy5pbnNfaF07XG5cbiAgICAgIHMuaGVhZFtzLmluc19oXSA9IHN0cjtcbiAgICAgIHN0cisrO1xuICAgIH0gd2hpbGUgKC0tbik7XG4gICAgcy5zdHJzdGFydCA9IHN0cjtcbiAgICBzLmxvb2thaGVhZCA9IE1JTl9NQVRDSCAtIDE7XG4gICAgZmlsbF93aW5kb3cocyk7XG4gIH1cbiAgcy5zdHJzdGFydCArPSBzLmxvb2thaGVhZDtcbiAgcy5ibG9ja19zdGFydCA9IHMuc3Ryc3RhcnQ7XG4gIHMuaW5zZXJ0ID0gcy5sb29rYWhlYWQ7XG4gIHMubG9va2FoZWFkID0gMDtcbiAgcy5tYXRjaF9sZW5ndGggPSBzLnByZXZfbGVuZ3RoID0gTUlOX01BVENIIC0gMTtcbiAgcy5tYXRjaF9hdmFpbGFibGUgPSAwO1xuICBzdHJtLm5leHRfaW4gPSBuZXh0O1xuICBzdHJtLmlucHV0ID0gaW5wdXQ7XG4gIHN0cm0uYXZhaWxfaW4gPSBhdmFpbDtcbiAgcy53cmFwID0gd3JhcDtcbiAgcmV0dXJuIFpfT0s7XG59XG5cblxuZXhwb3J0cy5kZWZsYXRlSW5pdCA9IGRlZmxhdGVJbml0O1xuZXhwb3J0cy5kZWZsYXRlSW5pdDIgPSBkZWZsYXRlSW5pdDI7XG5leHBvcnRzLmRlZmxhdGVSZXNldCA9IGRlZmxhdGVSZXNldDtcbmV4cG9ydHMuZGVmbGF0ZVJlc2V0S2VlcCA9IGRlZmxhdGVSZXNldEtlZXA7XG5leHBvcnRzLmRlZmxhdGVTZXRIZWFkZXIgPSBkZWZsYXRlU2V0SGVhZGVyO1xuZXhwb3J0cy5kZWZsYXRlID0gZGVmbGF0ZTtcbmV4cG9ydHMuZGVmbGF0ZUVuZCA9IGRlZmxhdGVFbmQ7XG5leHBvcnRzLmRlZmxhdGVTZXREaWN0aW9uYXJ5ID0gZGVmbGF0ZVNldERpY3Rpb25hcnk7XG5leHBvcnRzLmRlZmxhdGVJbmZvID0gJ3Bha28gZGVmbGF0ZSAoZnJvbSBOb2RlY2EgcHJvamVjdCknO1xuXG4vKiBOb3QgaW1wbGVtZW50ZWRcbmV4cG9ydHMuZGVmbGF0ZUJvdW5kID0gZGVmbGF0ZUJvdW5kO1xuZXhwb3J0cy5kZWZsYXRlQ29weSA9IGRlZmxhdGVDb3B5O1xuZXhwb3J0cy5kZWZsYXRlUGFyYW1zID0gZGVmbGF0ZVBhcmFtcztcbmV4cG9ydHMuZGVmbGF0ZVBlbmRpbmcgPSBkZWZsYXRlUGVuZGluZztcbmV4cG9ydHMuZGVmbGF0ZVByaW1lID0gZGVmbGF0ZVByaW1lO1xuZXhwb3J0cy5kZWZsYXRlVHVuZSA9IGRlZmxhdGVUdW5lO1xuKi9cbiIsIid1c2Ugc3RyaWN0JztcblxuLy8gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyXG4vLyAoQykgMjAxNC0yMDE3IFZpdGFseSBQdXpyaW4gYW5kIEFuZHJleSBUdXBpdHNpblxuLy9cbi8vIFRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgJ2FzLWlzJywgd2l0aG91dCBhbnkgZXhwcmVzcyBvciBpbXBsaWVkXG4vLyB3YXJyYW50eS4gSW4gbm8gZXZlbnQgd2lsbCB0aGUgYXV0aG9ycyBiZSBoZWxkIGxpYWJsZSBmb3IgYW55IGRhbWFnZXNcbi8vIGFyaXNpbmcgZnJvbSB0aGUgdXNlIG9mIHRoaXMgc29mdHdhcmUuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFueW9uZSB0byB1c2UgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UsXG4vLyBpbmNsdWRpbmcgY29tbWVyY2lhbCBhcHBsaWNhdGlvbnMsIGFuZCB0byBhbHRlciBpdCBhbmQgcmVkaXN0cmlidXRlIGl0XG4vLyBmcmVlbHksIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyByZXN0cmljdGlvbnM6XG4vL1xuLy8gMS4gVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3Rcbi8vICAgY2xhaW0gdGhhdCB5b3Ugd3JvdGUgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLiBJZiB5b3UgdXNlIHRoaXMgc29mdHdhcmVcbi8vICAgaW4gYSBwcm9kdWN0LCBhbiBhY2tub3dsZWRnbWVudCBpbiB0aGUgcHJvZHVjdCBkb2N1bWVudGF0aW9uIHdvdWxkIGJlXG4vLyAgIGFwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuXG4vLyAyLiBBbHRlcmVkIHNvdXJjZSB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZVxuLy8gICBtaXNyZXByZXNlbnRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWwgc29mdHdhcmUuXG4vLyAzLiBUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLlxuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuLi91dGlscy9jb21tb24nKTtcblxuLyogUHVibGljIGNvbnN0YW50cyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuLy92YXIgWl9GSUxURVJFRCAgICAgICAgICA9IDE7XG4vL3ZhciBaX0hVRkZNQU5fT05MWSAgICAgID0gMjtcbi8vdmFyIFpfUkxFICAgICAgICAgICAgICAgPSAzO1xudmFyIFpfRklYRUQgICAgICAgICAgICAgICA9IDQ7XG4vL3ZhciBaX0RFRkFVTFRfU1RSQVRFR1kgID0gMDtcblxuLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgKHRob3VnaCBzZWUgaW5mbGF0ZSgpKSAqL1xudmFyIFpfQklOQVJZICAgICAgICAgICAgICA9IDA7XG52YXIgWl9URVhUICAgICAgICAgICAgICAgID0gMTtcbi8vdmFyIFpfQVNDSUkgICAgICAgICAgICAgPSAxOyAvLyA9IFpfVEVYVFxudmFyIFpfVU5LTk9XTiAgICAgICAgICAgICA9IDI7XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cblxuZnVuY3Rpb24gemVybyhidWYpIHsgdmFyIGxlbiA9IGJ1Zi5sZW5ndGg7IHdoaWxlICgtLWxlbiA+PSAwKSB7IGJ1ZltsZW5dID0gMDsgfSB9XG5cbi8vIEZyb20genV0aWwuaFxuXG52YXIgU1RPUkVEX0JMT0NLID0gMDtcbnZhciBTVEFUSUNfVFJFRVMgPSAxO1xudmFyIERZTl9UUkVFUyAgICA9IDI7XG4vKiBUaGUgdGhyZWUga2luZHMgb2YgYmxvY2sgdHlwZSAqL1xuXG52YXIgTUlOX01BVENIICAgID0gMztcbnZhciBNQVhfTUFUQ0ggICAgPSAyNTg7XG4vKiBUaGUgbWluaW11bSBhbmQgbWF4aW11bSBtYXRjaCBsZW5ndGhzICovXG5cbi8vIEZyb20gZGVmbGF0ZS5oXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEludGVybmFsIGNvbXByZXNzaW9uIHN0YXRlLlxuICovXG5cbnZhciBMRU5HVEhfQ09ERVMgID0gMjk7XG4vKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGVzLCBub3QgY291bnRpbmcgdGhlIHNwZWNpYWwgRU5EX0JMT0NLIGNvZGUgKi9cblxudmFyIExJVEVSQUxTICAgICAgPSAyNTY7XG4vKiBudW1iZXIgb2YgbGl0ZXJhbCBieXRlcyAwLi4yNTUgKi9cblxudmFyIExfQ09ERVMgICAgICAgPSBMSVRFUkFMUyArIDEgKyBMRU5HVEhfQ09ERVM7XG4vKiBudW1iZXIgb2YgTGl0ZXJhbCBvciBMZW5ndGggY29kZXMsIGluY2x1ZGluZyB0aGUgRU5EX0JMT0NLIGNvZGUgKi9cblxudmFyIERfQ09ERVMgICAgICAgPSAzMDtcbi8qIG51bWJlciBvZiBkaXN0YW5jZSBjb2RlcyAqL1xuXG52YXIgQkxfQ09ERVMgICAgICA9IDE5O1xuLyogbnVtYmVyIG9mIGNvZGVzIHVzZWQgdG8gdHJhbnNmZXIgdGhlIGJpdCBsZW5ndGhzICovXG5cbnZhciBIRUFQX1NJWkUgICAgID0gMiAqIExfQ09ERVMgKyAxO1xuLyogbWF4aW11bSBoZWFwIHNpemUgKi9cblxudmFyIE1BWF9CSVRTICAgICAgPSAxNTtcbi8qIEFsbCBjb2RlcyBtdXN0IG5vdCBleGNlZWQgTUFYX0JJVFMgYml0cyAqL1xuXG52YXIgQnVmX3NpemUgICAgICA9IDE2O1xuLyogc2l6ZSBvZiBiaXQgYnVmZmVyIGluIGJpX2J1ZiAqL1xuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29uc3RhbnRzXG4gKi9cblxudmFyIE1BWF9CTF9CSVRTID0gNztcbi8qIEJpdCBsZW5ndGggY29kZXMgbXVzdCBub3QgZXhjZWVkIE1BWF9CTF9CSVRTIGJpdHMgKi9cblxudmFyIEVORF9CTE9DSyAgID0gMjU2O1xuLyogZW5kIG9mIGJsb2NrIGxpdGVyYWwgY29kZSAqL1xuXG52YXIgUkVQXzNfNiAgICAgPSAxNjtcbi8qIHJlcGVhdCBwcmV2aW91cyBiaXQgbGVuZ3RoIDMtNiB0aW1lcyAoMiBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi9cblxudmFyIFJFUFpfM18xMCAgID0gMTc7XG4vKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAzLTEwIHRpbWVzICAoMyBiaXRzIG9mIHJlcGVhdCBjb3VudCkgKi9cblxudmFyIFJFUFpfMTFfMTM4ID0gMTg7XG4vKiByZXBlYXQgYSB6ZXJvIGxlbmd0aCAxMS0xMzggdGltZXMgICg3IGJpdHMgb2YgcmVwZWF0IGNvdW50KSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1zcGFjaW5nLGFycmF5LWJyYWNrZXQtc3BhY2luZyAqL1xudmFyIGV4dHJhX2xiaXRzID0gICAvKiBleHRyYSBiaXRzIGZvciBlYWNoIGxlbmd0aCBjb2RlICovXG4gIFswLDAsMCwwLDAsMCwwLDAsMSwxLDEsMSwyLDIsMiwyLDMsMywzLDMsNCw0LDQsNCw1LDUsNSw1LDBdO1xuXG52YXIgZXh0cmFfZGJpdHMgPSAgIC8qIGV4dHJhIGJpdHMgZm9yIGVhY2ggZGlzdGFuY2UgY29kZSAqL1xuICBbMCwwLDAsMCwxLDEsMiwyLDMsMyw0LDQsNSw1LDYsNiw3LDcsOCw4LDksOSwxMCwxMCwxMSwxMSwxMiwxMiwxMywxM107XG5cbnZhciBleHRyYV9ibGJpdHMgPSAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBiaXQgbGVuZ3RoIGNvZGUgKi9cbiAgWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwzLDddO1xuXG52YXIgYmxfb3JkZXIgPVxuICBbMTYsMTcsMTgsMCw4LDcsOSw2LDEwLDUsMTEsNCwxMiwzLDEzLDIsMTQsMSwxNV07XG4vKiBlc2xpbnQtZW5hYmxlIGNvbW1hLXNwYWNpbmcsYXJyYXktYnJhY2tldC1zcGFjaW5nICovXG5cbi8qIFRoZSBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzIGFyZSBzZW50IGluIG9yZGVyIG9mIGRlY3JlYXNpbmdcbiAqIHByb2JhYmlsaXR5LCB0byBhdm9pZCB0cmFuc21pdHRpbmcgdGhlIGxlbmd0aHMgZm9yIHVudXNlZCBiaXQgbGVuZ3RoIGNvZGVzLlxuICovXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogTG9jYWwgZGF0YS4gVGhlc2UgYXJlIGluaXRpYWxpemVkIG9ubHkgb25jZS5cbiAqL1xuXG4vLyBXZSBwcmUtZmlsbCBhcnJheXMgd2l0aCAwIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgZ2Fwc1xuXG52YXIgRElTVF9DT0RFX0xFTiA9IDUxMjsgLyogc2VlIGRlZmluaXRpb24gb2YgYXJyYXkgZGlzdF9jb2RlIGJlbG93ICovXG5cbi8vICEhISEgVXNlIGZsYXQgYXJyYXkgaW5zdGVhZCBvZiBzdHJ1Y3R1cmUsIEZyZXEgPSBpKjIsIExlbiA9IGkqMisxXG52YXIgc3RhdGljX2x0cmVlICA9IG5ldyBBcnJheSgoTF9DT0RFUyArIDIpICogMik7XG56ZXJvKHN0YXRpY19sdHJlZSk7XG4vKiBUaGUgc3RhdGljIGxpdGVyYWwgdHJlZS4gU2luY2UgdGhlIGJpdCBsZW5ndGhzIGFyZSBpbXBvc2VkLCB0aGVyZSBpcyBub1xuICogbmVlZCBmb3IgdGhlIExfQ09ERVMgZXh0cmEgY29kZXMgdXNlZCBkdXJpbmcgaGVhcCBjb25zdHJ1Y3Rpb24uIEhvd2V2ZXJcbiAqIFRoZSBjb2RlcyAyODYgYW5kIDI4NyBhcmUgbmVlZGVkIHRvIGJ1aWxkIGEgY2Fub25pY2FsIHRyZWUgKHNlZSBfdHJfaW5pdFxuICogYmVsb3cpLlxuICovXG5cbnZhciBzdGF0aWNfZHRyZWUgID0gbmV3IEFycmF5KERfQ09ERVMgKiAyKTtcbnplcm8oc3RhdGljX2R0cmVlKTtcbi8qIFRoZSBzdGF0aWMgZGlzdGFuY2UgdHJlZS4gKEFjdHVhbGx5IGEgdHJpdmlhbCB0cmVlIHNpbmNlIGFsbCBjb2RlcyB1c2VcbiAqIDUgYml0cy4pXG4gKi9cblxudmFyIF9kaXN0X2NvZGUgICAgPSBuZXcgQXJyYXkoRElTVF9DT0RFX0xFTik7XG56ZXJvKF9kaXN0X2NvZGUpO1xuLyogRGlzdGFuY2UgY29kZXMuIFRoZSBmaXJzdCAyNTYgdmFsdWVzIGNvcnJlc3BvbmQgdG8gdGhlIGRpc3RhbmNlc1xuICogMyAuLiAyNTgsIHRoZSBsYXN0IDI1NiB2YWx1ZXMgY29ycmVzcG9uZCB0byB0aGUgdG9wIDggYml0cyBvZlxuICogdGhlIDE1IGJpdCBkaXN0YW5jZXMuXG4gKi9cblxudmFyIF9sZW5ndGhfY29kZSAgPSBuZXcgQXJyYXkoTUFYX01BVENIIC0gTUlOX01BVENIICsgMSk7XG56ZXJvKF9sZW5ndGhfY29kZSk7XG4vKiBsZW5ndGggY29kZSBmb3IgZWFjaCBub3JtYWxpemVkIG1hdGNoIGxlbmd0aCAoMCA9PSBNSU5fTUFUQ0gpICovXG5cbnZhciBiYXNlX2xlbmd0aCAgID0gbmV3IEFycmF5KExFTkdUSF9DT0RFUyk7XG56ZXJvKGJhc2VfbGVuZ3RoKTtcbi8qIEZpcnN0IG5vcm1hbGl6ZWQgbGVuZ3RoIGZvciBlYWNoIGNvZGUgKDAgPSBNSU5fTUFUQ0gpICovXG5cbnZhciBiYXNlX2Rpc3QgICAgID0gbmV3IEFycmF5KERfQ09ERVMpO1xuemVybyhiYXNlX2Rpc3QpO1xuLyogRmlyc3Qgbm9ybWFsaXplZCBkaXN0YW5jZSBmb3IgZWFjaCBjb2RlICgwID0gZGlzdGFuY2Ugb2YgMSkgKi9cblxuXG5mdW5jdGlvbiBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfdHJlZSwgZXh0cmFfYml0cywgZXh0cmFfYmFzZSwgZWxlbXMsIG1heF9sZW5ndGgpIHtcblxuICB0aGlzLnN0YXRpY190cmVlICA9IHN0YXRpY190cmVlOyAgLyogc3RhdGljIHRyZWUgb3IgTlVMTCAqL1xuICB0aGlzLmV4dHJhX2JpdHMgICA9IGV4dHJhX2JpdHM7ICAgLyogZXh0cmEgYml0cyBmb3IgZWFjaCBjb2RlIG9yIE5VTEwgKi9cbiAgdGhpcy5leHRyYV9iYXNlICAgPSBleHRyYV9iYXNlOyAgIC8qIGJhc2UgaW5kZXggZm9yIGV4dHJhX2JpdHMgKi9cbiAgdGhpcy5lbGVtcyAgICAgICAgPSBlbGVtczsgICAgICAgIC8qIG1heCBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHRyZWUgKi9cbiAgdGhpcy5tYXhfbGVuZ3RoICAgPSBtYXhfbGVuZ3RoOyAgIC8qIG1heCBiaXQgbGVuZ3RoIGZvciB0aGUgY29kZXMgKi9cblxuICAvLyBzaG93IGlmIGBzdGF0aWNfdHJlZWAgaGFzIGRhdGEgb3IgZHVtbXkgLSBuZWVkZWQgZm9yIG1vbm9tb3JwaGljIG9iamVjdHNcbiAgdGhpcy5oYXNfc3RyZWUgICAgPSBzdGF0aWNfdHJlZSAmJiBzdGF0aWNfdHJlZS5sZW5ndGg7XG59XG5cblxudmFyIHN0YXRpY19sX2Rlc2M7XG52YXIgc3RhdGljX2RfZGVzYztcbnZhciBzdGF0aWNfYmxfZGVzYztcblxuXG5mdW5jdGlvbiBUcmVlRGVzYyhkeW5fdHJlZSwgc3RhdF9kZXNjKSB7XG4gIHRoaXMuZHluX3RyZWUgPSBkeW5fdHJlZTsgICAgIC8qIHRoZSBkeW5hbWljIHRyZWUgKi9cbiAgdGhpcy5tYXhfY29kZSA9IDA7ICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovXG4gIHRoaXMuc3RhdF9kZXNjID0gc3RhdF9kZXNjOyAgIC8qIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB0cmVlICovXG59XG5cblxuXG5mdW5jdGlvbiBkX2NvZGUoZGlzdCkge1xuICByZXR1cm4gZGlzdCA8IDI1NiA/IF9kaXN0X2NvZGVbZGlzdF0gOiBfZGlzdF9jb2RlWzI1NiArIChkaXN0ID4+PiA3KV07XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBPdXRwdXQgYSBzaG9ydCBMU0IgZmlyc3Qgb24gdGhlIHN0cmVhbS5cbiAqIElOIGFzc2VydGlvbjogdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4gcGVuZGluZ0J1Zi5cbiAqL1xuZnVuY3Rpb24gcHV0X3Nob3J0KHMsIHcpIHtcbi8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh3KSAmIDB4ZmYpKTtcbi8vICAgIHB1dF9ieXRlKHMsICh1Y2gpKCh1c2gpKHcpID4+IDgpKTtcbiAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSAodykgJiAweGZmO1xuICBzLnBlbmRpbmdfYnVmW3MucGVuZGluZysrXSA9ICh3ID4+PiA4KSAmIDB4ZmY7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIGEgdmFsdWUgb24gYSBnaXZlbiBudW1iZXIgb2YgYml0cy5cbiAqIElOIGFzc2VydGlvbjogbGVuZ3RoIDw9IDE2IGFuZCB2YWx1ZSBmaXRzIGluIGxlbmd0aCBiaXRzLlxuICovXG5mdW5jdGlvbiBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkge1xuICBpZiAocy5iaV92YWxpZCA+IChCdWZfc2l6ZSAtIGxlbmd0aCkpIHtcbiAgICBzLmJpX2J1ZiB8PSAodmFsdWUgPDwgcy5iaV92YWxpZCkgJiAweGZmZmY7XG4gICAgcHV0X3Nob3J0KHMsIHMuYmlfYnVmKTtcbiAgICBzLmJpX2J1ZiA9IHZhbHVlID4+IChCdWZfc2l6ZSAtIHMuYmlfdmFsaWQpO1xuICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoIC0gQnVmX3NpemU7XG4gIH0gZWxzZSB7XG4gICAgcy5iaV9idWYgfD0gKHZhbHVlIDw8IHMuYmlfdmFsaWQpICYgMHhmZmZmO1xuICAgIHMuYmlfdmFsaWQgKz0gbGVuZ3RoO1xuICB9XG59XG5cblxuZnVuY3Rpb24gc2VuZF9jb2RlKHMsIGMsIHRyZWUpIHtcbiAgc2VuZF9iaXRzKHMsIHRyZWVbYyAqIDJdLyouQ29kZSovLCB0cmVlW2MgKiAyICsgMV0vKi5MZW4qLyk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBSZXZlcnNlIHRoZSBmaXJzdCBsZW4gYml0cyBvZiBhIGNvZGUsIHVzaW5nIHN0cmFpZ2h0Zm9yd2FyZCBjb2RlIChhIGZhc3RlclxuICogbWV0aG9kIHdvdWxkIHVzZSBhIHRhYmxlKVxuICogSU4gYXNzZXJ0aW9uOiAxIDw9IGxlbiA8PSAxNVxuICovXG5mdW5jdGlvbiBiaV9yZXZlcnNlKGNvZGUsIGxlbikge1xuICB2YXIgcmVzID0gMDtcbiAgZG8ge1xuICAgIHJlcyB8PSBjb2RlICYgMTtcbiAgICBjb2RlID4+Pj0gMTtcbiAgICByZXMgPDw9IDE7XG4gIH0gd2hpbGUgKC0tbGVuID4gMCk7XG4gIHJldHVybiByZXMgPj4+IDE7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciwga2VlcGluZyBhdCBtb3N0IDcgYml0cyBpbiBpdC5cbiAqL1xuZnVuY3Rpb24gYmlfZmx1c2gocykge1xuICBpZiAocy5iaV92YWxpZCA9PT0gMTYpIHtcbiAgICBwdXRfc2hvcnQocywgcy5iaV9idWYpO1xuICAgIHMuYmlfYnVmID0gMDtcbiAgICBzLmJpX3ZhbGlkID0gMDtcblxuICB9IGVsc2UgaWYgKHMuYmlfdmFsaWQgPj0gOCkge1xuICAgIHMucGVuZGluZ19idWZbcy5wZW5kaW5nKytdID0gcy5iaV9idWYgJiAweGZmO1xuICAgIHMuYmlfYnVmID4+PSA4O1xuICAgIHMuYmlfdmFsaWQgLT0gODtcbiAgfVxufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29tcHV0ZSB0aGUgb3B0aW1hbCBiaXQgbGVuZ3RocyBmb3IgYSB0cmVlIGFuZCB1cGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGhcbiAqIGZvciB0aGUgY3VycmVudCBibG9jay5cbiAqIElOIGFzc2VydGlvbjogdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldCwgaGVhcFtoZWFwX21heF0gYW5kXG4gKiAgICBhYm92ZSBhcmUgdGhlIHRyZWUgbm9kZXMgc29ydGVkIGJ5IGluY3JlYXNpbmcgZnJlcXVlbmN5LlxuICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZCBsZW4gaXMgc2V0IHRvIHRoZSBvcHRpbWFsIGJpdCBsZW5ndGgsIHRoZVxuICogICAgIGFycmF5IGJsX2NvdW50IGNvbnRhaW5zIHRoZSBmcmVxdWVuY2llcyBmb3IgZWFjaCBiaXQgbGVuZ3RoLlxuICogICAgIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzIGFsc28gdXBkYXRlZCBpZiBzdHJlZSBpc1xuICogICAgIG5vdCBudWxsLlxuICovXG5mdW5jdGlvbiBnZW5fYml0bGVuKHMsIGRlc2MpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdHJlZV9kZXNjICpkZXNjOyAgICAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovXG57XG4gIHZhciB0cmVlICAgICAgICAgICAgPSBkZXNjLmR5bl90cmVlO1xuICB2YXIgbWF4X2NvZGUgICAgICAgID0gZGVzYy5tYXhfY29kZTtcbiAgdmFyIHN0cmVlICAgICAgICAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlO1xuICB2YXIgaGFzX3N0cmVlICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlO1xuICB2YXIgZXh0cmEgICAgICAgICAgID0gZGVzYy5zdGF0X2Rlc2MuZXh0cmFfYml0cztcbiAgdmFyIGJhc2UgICAgICAgICAgICA9IGRlc2Muc3RhdF9kZXNjLmV4dHJhX2Jhc2U7XG4gIHZhciBtYXhfbGVuZ3RoICAgICAgPSBkZXNjLnN0YXRfZGVzYy5tYXhfbGVuZ3RoO1xuICB2YXIgaDsgICAgICAgICAgICAgIC8qIGhlYXAgaW5kZXggKi9cbiAgdmFyIG4sIG07ICAgICAgICAgICAvKiBpdGVyYXRlIG92ZXIgdGhlIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAvKiBiaXQgbGVuZ3RoICovXG4gIHZhciB4Yml0czsgICAgICAgICAgLyogZXh0cmEgYml0cyAqL1xuICB2YXIgZjsgICAgICAgICAgICAgIC8qIGZyZXF1ZW5jeSAqL1xuICB2YXIgb3ZlcmZsb3cgPSAwOyAgIC8qIG51bWJlciBvZiBlbGVtZW50cyB3aXRoIGJpdCBsZW5ndGggdG9vIGxhcmdlICovXG5cbiAgZm9yIChiaXRzID0gMDsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7XG4gICAgcy5ibF9jb3VudFtiaXRzXSA9IDA7XG4gIH1cblxuICAvKiBJbiBhIGZpcnN0IHBhc3MsIGNvbXB1dGUgdGhlIG9wdGltYWwgYml0IGxlbmd0aHMgKHdoaWNoIG1heVxuICAgKiBvdmVyZmxvdyBpbiB0aGUgY2FzZSBvZiB0aGUgYml0IGxlbmd0aCB0cmVlKS5cbiAgICovXG4gIHRyZWVbcy5oZWFwW3MuaGVhcF9tYXhdICogMiArIDFdLyouTGVuKi8gPSAwOyAvKiByb290IG9mIHRoZSBoZWFwICovXG5cbiAgZm9yIChoID0gcy5oZWFwX21heCArIDE7IGggPCBIRUFQX1NJWkU7IGgrKykge1xuICAgIG4gPSBzLmhlYXBbaF07XG4gICAgYml0cyA9IHRyZWVbdHJlZVtuICogMiArIDFdLyouRGFkKi8gKiAyICsgMV0vKi5MZW4qLyArIDE7XG4gICAgaWYgKGJpdHMgPiBtYXhfbGVuZ3RoKSB7XG4gICAgICBiaXRzID0gbWF4X2xlbmd0aDtcbiAgICAgIG92ZXJmbG93Kys7XG4gICAgfVxuICAgIHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gYml0cztcbiAgICAvKiBXZSBvdmVyd3JpdGUgdHJlZVtuXS5EYWQgd2hpY2ggaXMgbm8gbG9uZ2VyIG5lZWRlZCAqL1xuXG4gICAgaWYgKG4gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfSAvKiBub3QgYSBsZWFmIG5vZGUgKi9cblxuICAgIHMuYmxfY291bnRbYml0c10rKztcbiAgICB4Yml0cyA9IDA7XG4gICAgaWYgKG4gPj0gYmFzZSkge1xuICAgICAgeGJpdHMgPSBleHRyYVtuIC0gYmFzZV07XG4gICAgfVxuICAgIGYgPSB0cmVlW24gKiAyXS8qLkZyZXEqLztcbiAgICBzLm9wdF9sZW4gKz0gZiAqIChiaXRzICsgeGJpdHMpO1xuICAgIGlmIChoYXNfc3RyZWUpIHtcbiAgICAgIHMuc3RhdGljX2xlbiArPSBmICogKHN0cmVlW24gKiAyICsgMV0vKi5MZW4qLyArIHhiaXRzKTtcbiAgICB9XG4gIH1cbiAgaWYgKG92ZXJmbG93ID09PSAwKSB7IHJldHVybjsgfVxuXG4gIC8vIFRyYWNlKChzdGRlcnIsXCJcXG5iaXQgbGVuZ3RoIG92ZXJmbG93XFxuXCIpKTtcbiAgLyogVGhpcyBoYXBwZW5zIGZvciBleGFtcGxlIG9uIG9iajIgYW5kIHBpYyBvZiB0aGUgQ2FsZ2FyeSBjb3JwdXMgKi9cblxuICAvKiBGaW5kIHRoZSBmaXJzdCBiaXQgbGVuZ3RoIHdoaWNoIGNvdWxkIGluY3JlYXNlOiAqL1xuICBkbyB7XG4gICAgYml0cyA9IG1heF9sZW5ndGggLSAxO1xuICAgIHdoaWxlIChzLmJsX2NvdW50W2JpdHNdID09PSAwKSB7IGJpdHMtLTsgfVxuICAgIHMuYmxfY291bnRbYml0c10tLTsgICAgICAvKiBtb3ZlIG9uZSBsZWFmIGRvd24gdGhlIHRyZWUgKi9cbiAgICBzLmJsX2NvdW50W2JpdHMgKyAxXSArPSAyOyAvKiBtb3ZlIG9uZSBvdmVyZmxvdyBpdGVtIGFzIGl0cyBicm90aGVyICovXG4gICAgcy5ibF9jb3VudFttYXhfbGVuZ3RoXS0tO1xuICAgIC8qIFRoZSBicm90aGVyIG9mIHRoZSBvdmVyZmxvdyBpdGVtIGFsc28gbW92ZXMgb25lIHN0ZXAgdXAsXG4gICAgICogYnV0IHRoaXMgZG9lcyBub3QgYWZmZWN0IGJsX2NvdW50W21heF9sZW5ndGhdXG4gICAgICovXG4gICAgb3ZlcmZsb3cgLT0gMjtcbiAgfSB3aGlsZSAob3ZlcmZsb3cgPiAwKTtcblxuICAvKiBOb3cgcmVjb21wdXRlIGFsbCBiaXQgbGVuZ3Rocywgc2Nhbm5pbmcgaW4gaW5jcmVhc2luZyBmcmVxdWVuY3kuXG4gICAqIGggaXMgc3RpbGwgZXF1YWwgdG8gSEVBUF9TSVpFLiAoSXQgaXMgc2ltcGxlciB0byByZWNvbnN0cnVjdCBhbGxcbiAgICogbGVuZ3RocyBpbnN0ZWFkIG9mIGZpeGluZyBvbmx5IHRoZSB3cm9uZyBvbmVzLiBUaGlzIGlkZWEgaXMgdGFrZW5cbiAgICogZnJvbSAnYXInIHdyaXR0ZW4gYnkgSGFydWhpa28gT2t1bXVyYS4pXG4gICAqL1xuICBmb3IgKGJpdHMgPSBtYXhfbGVuZ3RoOyBiaXRzICE9PSAwOyBiaXRzLS0pIHtcbiAgICBuID0gcy5ibF9jb3VudFtiaXRzXTtcbiAgICB3aGlsZSAobiAhPT0gMCkge1xuICAgICAgbSA9IHMuaGVhcFstLWhdO1xuICAgICAgaWYgKG0gPiBtYXhfY29kZSkgeyBjb250aW51ZTsgfVxuICAgICAgaWYgKHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovICE9PSBiaXRzKSB7XG4gICAgICAgIC8vIFRyYWNlKChzdGRlcnIsXCJjb2RlICVkIGJpdHMgJWQtPiVkXFxuXCIsIG0sIHRyZWVbbV0uTGVuLCBiaXRzKSk7XG4gICAgICAgIHMub3B0X2xlbiArPSAoYml0cyAtIHRyZWVbbSAqIDIgKyAxXS8qLkxlbiovKSAqIHRyZWVbbSAqIDJdLyouRnJlcSovO1xuICAgICAgICB0cmVlW20gKiAyICsgMV0vKi5MZW4qLyA9IGJpdHM7XG4gICAgICB9XG4gICAgICBuLS07XG4gICAgfVxuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBHZW5lcmF0ZSB0aGUgY29kZXMgZm9yIGEgZ2l2ZW4gdHJlZSBhbmQgYml0IGNvdW50cyAod2hpY2ggbmVlZCBub3QgYmVcbiAqIG9wdGltYWwpLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgYXJyYXkgYmxfY291bnQgY29udGFpbnMgdGhlIGJpdCBsZW5ndGggc3RhdGlzdGljcyBmb3JcbiAqIHRoZSBnaXZlbiB0cmVlIGFuZCB0aGUgZmllbGQgbGVuIGlzIHNldCBmb3IgYWxsIHRyZWUgZWxlbWVudHMuXG4gKiBPVVQgYXNzZXJ0aW9uOiB0aGUgZmllbGQgY29kZSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzIG9mIG5vblxuICogICAgIHplcm8gY29kZSBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIGdlbl9jb2Rlcyh0cmVlLCBtYXhfY29kZSwgYmxfY291bnQpXG4vLyAgICBjdF9kYXRhICp0cmVlOyAgICAgICAgICAgICAvKiB0aGUgdHJlZSB0byBkZWNvcmF0ZSAqL1xuLy8gICAgaW50IG1heF9jb2RlOyAgICAgICAgICAgICAgLyogbGFyZ2VzdCBjb2RlIHdpdGggbm9uIHplcm8gZnJlcXVlbmN5ICovXG4vLyAgICB1c2hmICpibF9jb3VudDsgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoICovXG57XG4gIHZhciBuZXh0X2NvZGUgPSBuZXcgQXJyYXkoTUFYX0JJVFMgKyAxKTsgLyogbmV4dCBjb2RlIHZhbHVlIGZvciBlYWNoIGJpdCBsZW5ndGggKi9cbiAgdmFyIGNvZGUgPSAwOyAgICAgICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgIC8qIGJpdCBpbmRleCAqL1xuICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBjb2RlIGluZGV4ICovXG5cbiAgLyogVGhlIGRpc3RyaWJ1dGlvbiBjb3VudHMgYXJlIGZpcnN0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNvZGUgdmFsdWVzXG4gICAqIHdpdGhvdXQgYml0IHJldmVyc2FsLlxuICAgKi9cbiAgZm9yIChiaXRzID0gMTsgYml0cyA8PSBNQVhfQklUUzsgYml0cysrKSB7XG4gICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cyAtIDFdKSA8PCAxO1xuICB9XG4gIC8qIENoZWNrIHRoYXQgdGhlIGJpdCBjb3VudHMgaW4gYmxfY291bnQgYXJlIGNvbnNpc3RlbnQuIFRoZSBsYXN0IGNvZGVcbiAgICogbXVzdCBiZSBhbGwgb25lcy5cbiAgICovXG4gIC8vQXNzZXJ0IChjb2RlICsgYmxfY291bnRbTUFYX0JJVFNdLTEgPT0gKDE8PE1BWF9CSVRTKS0xLFxuICAvLyAgICAgICAgXCJpbmNvbnNpc3RlbnQgYml0IGNvdW50c1wiKTtcbiAgLy9UcmFjZXYoKHN0ZGVycixcIlxcbmdlbl9jb2RlczogbWF4X2NvZGUgJWQgXCIsIG1heF9jb2RlKSk7XG5cbiAgZm9yIChuID0gMDsgIG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIHZhciBsZW4gPSB0cmVlW24gKiAyICsgMV0vKi5MZW4qLztcbiAgICBpZiAobGVuID09PSAwKSB7IGNvbnRpbnVlOyB9XG4gICAgLyogTm93IHJldmVyc2UgdGhlIGJpdHMgKi9cbiAgICB0cmVlW24gKiAyXS8qLkNvZGUqLyA9IGJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0rKywgbGVuKTtcblxuICAgIC8vVHJhY2Vjdih0cmVlICE9IHN0YXRpY19sdHJlZSwgKHN0ZGVycixcIlxcbm4gJTNkICVjIGwgJTJkIGMgJTR4ICgleCkgXCIsXG4gICAgLy8gICAgIG4sIChpc2dyYXBoKG4pID8gbiA6ICcgJyksIGxlbiwgdHJlZVtuXS5Db2RlLCBuZXh0X2NvZGVbbGVuXS0xKSk7XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgdGhlIHZhcmlvdXMgJ2NvbnN0YW50JyB0YWJsZXMuXG4gKi9cbmZ1bmN0aW9uIHRyX3N0YXRpY19pbml0KCkge1xuICB2YXIgbjsgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgdHJlZSBlbGVtZW50cyAqL1xuICB2YXIgYml0czsgICAgIC8qIGJpdCBjb3VudGVyICovXG4gIHZhciBsZW5ndGg7ICAgLyogbGVuZ3RoIHZhbHVlICovXG4gIHZhciBjb2RlOyAgICAgLyogY29kZSB2YWx1ZSAqL1xuICB2YXIgZGlzdDsgICAgIC8qIGRpc3RhbmNlIGluZGV4ICovXG4gIHZhciBibF9jb3VudCA9IG5ldyBBcnJheShNQVhfQklUUyArIDEpO1xuICAvKiBudW1iZXIgb2YgY29kZXMgYXQgZWFjaCBiaXQgbGVuZ3RoIGZvciBhbiBvcHRpbWFsIHRyZWUgKi9cblxuICAvLyBkbyBjaGVjayBpbiBfdHJfaW5pdCgpXG4gIC8vaWYgKHN0YXRpY19pbml0X2RvbmUpIHJldHVybjtcblxuICAvKiBGb3Igc29tZSBlbWJlZGRlZCB0YXJnZXRzLCBnbG9iYWwgdmFyaWFibGVzIGFyZSBub3QgaW5pdGlhbGl6ZWQ6ICovXG4vKiNpZmRlZiBOT19JTklUX0dMT0JBTF9QT0lOVEVSU1xuICBzdGF0aWNfbF9kZXNjLnN0YXRpY190cmVlID0gc3RhdGljX2x0cmVlO1xuICBzdGF0aWNfbF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9sYml0cztcbiAgc3RhdGljX2RfZGVzYy5zdGF0aWNfdHJlZSA9IHN0YXRpY19kdHJlZTtcbiAgc3RhdGljX2RfZGVzYy5leHRyYV9iaXRzID0gZXh0cmFfZGJpdHM7XG4gIHN0YXRpY19ibF9kZXNjLmV4dHJhX2JpdHMgPSBleHRyYV9ibGJpdHM7XG4jZW5kaWYqL1xuXG4gIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgbGVuZ3RoICgwLi4yNTUpIC0+IGxlbmd0aCBjb2RlICgwLi4yOCkgKi9cbiAgbGVuZ3RoID0gMDtcbiAgZm9yIChjb2RlID0gMDsgY29kZSA8IExFTkdUSF9DT0RFUyAtIDE7IGNvZGUrKykge1xuICAgIGJhc2VfbGVuZ3RoW2NvZGVdID0gbGVuZ3RoO1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9sYml0c1tjb2RlXSk7IG4rKykge1xuICAgICAgX2xlbmd0aF9jb2RlW2xlbmd0aCsrXSA9IGNvZGU7XG4gICAgfVxuICB9XG4gIC8vQXNzZXJ0IChsZW5ndGggPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiBsZW5ndGggIT0gMjU2XCIpO1xuICAvKiBOb3RlIHRoYXQgdGhlIGxlbmd0aCAyNTUgKG1hdGNoIGxlbmd0aCAyNTgpIGNhbiBiZSByZXByZXNlbnRlZFxuICAgKiBpbiB0d28gZGlmZmVyZW50IHdheXM6IGNvZGUgMjg0ICsgNSBiaXRzIG9yIGNvZGUgMjg1LCBzbyB3ZVxuICAgKiBvdmVyd3JpdGUgbGVuZ3RoX2NvZGVbMjU1XSB0byB1c2UgdGhlIGJlc3QgZW5jb2Rpbmc6XG4gICAqL1xuICBfbGVuZ3RoX2NvZGVbbGVuZ3RoIC0gMV0gPSBjb2RlO1xuXG4gIC8qIEluaXRpYWxpemUgdGhlIG1hcHBpbmcgZGlzdCAoMC4uMzJLKSAtPiBkaXN0IGNvZGUgKDAuLjI5KSAqL1xuICBkaXN0ID0gMDtcbiAgZm9yIChjb2RlID0gMDsgY29kZSA8IDE2OyBjb2RlKyspIHtcbiAgICBiYXNlX2Rpc3RbY29kZV0gPSBkaXN0O1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCBleHRyYV9kYml0c1tjb2RlXSk7IG4rKykge1xuICAgICAgX2Rpc3RfY29kZVtkaXN0KytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiBkaXN0ICE9IDI1NlwiKTtcbiAgZGlzdCA+Pj0gNzsgLyogZnJvbSBub3cgb24sIGFsbCBkaXN0YW5jZXMgYXJlIGRpdmlkZWQgYnkgMTI4ICovXG4gIGZvciAoOyBjb2RlIDwgRF9DT0RFUzsgY29kZSsrKSB7XG4gICAgYmFzZV9kaXN0W2NvZGVdID0gZGlzdCA8PCA3O1xuICAgIGZvciAobiA9IDA7IG4gPCAoMSA8PCAoZXh0cmFfZGJpdHNbY29kZV0gLSA3KSk7IG4rKykge1xuICAgICAgX2Rpc3RfY29kZVsyNTYgKyBkaXN0KytdID0gY29kZTtcbiAgICB9XG4gIH1cbiAgLy9Bc3NlcnQgKGRpc3QgPT0gMjU2LCBcInRyX3N0YXRpY19pbml0OiAyNTYrZGlzdCAhPSA1MTJcIik7XG5cbiAgLyogQ29uc3RydWN0IHRoZSBjb2RlcyBvZiB0aGUgc3RhdGljIGxpdGVyYWwgdHJlZSAqL1xuICBmb3IgKGJpdHMgPSAwOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHtcbiAgICBibF9jb3VudFtiaXRzXSA9IDA7XG4gIH1cblxuICBuID0gMDtcbiAgd2hpbGUgKG4gPD0gMTQzKSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzhdKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjU1KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDk7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzldKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjc5KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDc7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzddKys7XG4gIH1cbiAgd2hpbGUgKG4gPD0gMjg3KSB7XG4gICAgc3RhdGljX2x0cmVlW24gKiAyICsgMV0vKi5MZW4qLyA9IDg7XG4gICAgbisrO1xuICAgIGJsX2NvdW50WzhdKys7XG4gIH1cbiAgLyogQ29kZXMgMjg2IGFuZCAyODcgZG8gbm90IGV4aXN0LCBidXQgd2UgbXVzdCBpbmNsdWRlIHRoZW0gaW4gdGhlXG4gICAqIHRyZWUgY29uc3RydWN0aW9uIHRvIGdldCBhIGNhbm9uaWNhbCBIdWZmbWFuIHRyZWUgKGxvbmdlc3QgY29kZVxuICAgKiBhbGwgb25lcylcbiAgICovXG4gIGdlbl9jb2RlcyhzdGF0aWNfbHRyZWUsIExfQ09ERVMgKyAxLCBibF9jb3VudCk7XG5cbiAgLyogVGhlIHN0YXRpYyBkaXN0YW5jZSB0cmVlIGlzIHRyaXZpYWw6ICovXG4gIGZvciAobiA9IDA7IG4gPCBEX0NPREVTOyBuKyspIHtcbiAgICBzdGF0aWNfZHRyZWVbbiAqIDIgKyAxXS8qLkxlbiovID0gNTtcbiAgICBzdGF0aWNfZHRyZWVbbiAqIDJdLyouQ29kZSovID0gYmlfcmV2ZXJzZShuLCA1KTtcbiAgfVxuXG4gIC8vIE5vdyBkYXRhIHJlYWR5IGFuZCB3ZSBjYW4gaW5pdCBzdGF0aWMgdHJlZXNcbiAgc3RhdGljX2xfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfbHRyZWUsIGV4dHJhX2xiaXRzLCBMSVRFUkFMUyArIDEsIExfQ09ERVMsIE1BWF9CSVRTKTtcbiAgc3RhdGljX2RfZGVzYyA9IG5ldyBTdGF0aWNUcmVlRGVzYyhzdGF0aWNfZHRyZWUsIGV4dHJhX2RiaXRzLCAwLCAgICAgICAgICBEX0NPREVTLCBNQVhfQklUUyk7XG4gIHN0YXRpY19ibF9kZXNjID0gbmV3IFN0YXRpY1RyZWVEZXNjKG5ldyBBcnJheSgwKSwgZXh0cmFfYmxiaXRzLCAwLCAgICAgICAgIEJMX0NPREVTLCBNQVhfQkxfQklUUyk7XG5cbiAgLy9zdGF0aWNfaW5pdF9kb25lID0gdHJ1ZTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgYSBuZXcgYmxvY2suXG4gKi9cbmZ1bmN0aW9uIGluaXRfYmxvY2socykge1xuICB2YXIgbjsgLyogaXRlcmF0ZXMgb3ZlciB0cmVlIGVsZW1lbnRzICovXG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgdHJlZXMuICovXG4gIGZvciAobiA9IDA7IG4gPCBMX0NPREVTOyAgbisrKSB7IHMuZHluX2x0cmVlW24gKiAyXS8qLkZyZXEqLyA9IDA7IH1cbiAgZm9yIChuID0gMDsgbiA8IERfQ09ERVM7ICBuKyspIHsgcy5keW5fZHRyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuICBmb3IgKG4gPSAwOyBuIDwgQkxfQ09ERVM7IG4rKykgeyBzLmJsX3RyZWVbbiAqIDJdLyouRnJlcSovID0gMDsgfVxuXG4gIHMuZHluX2x0cmVlW0VORF9CTE9DSyAqIDJdLyouRnJlcSovID0gMTtcbiAgcy5vcHRfbGVuID0gcy5zdGF0aWNfbGVuID0gMDtcbiAgcy5sYXN0X2xpdCA9IHMubWF0Y2hlcyA9IDA7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBGbHVzaCB0aGUgYml0IGJ1ZmZlciBhbmQgYWxpZ24gdGhlIG91dHB1dCBvbiBhIGJ5dGUgYm91bmRhcnlcbiAqL1xuZnVuY3Rpb24gYmlfd2luZHVwKHMpXG57XG4gIGlmIChzLmJpX3ZhbGlkID4gOCkge1xuICAgIHB1dF9zaG9ydChzLCBzLmJpX2J1Zik7XG4gIH0gZWxzZSBpZiAocy5iaV92YWxpZCA+IDApIHtcbiAgICAvL3B1dF9ieXRlKHMsIChCeXRlKXMtPmJpX2J1Zik7XG4gICAgcy5wZW5kaW5nX2J1ZltzLnBlbmRpbmcrK10gPSBzLmJpX2J1ZjtcbiAgfVxuICBzLmJpX2J1ZiA9IDA7XG4gIHMuYmlfdmFsaWQgPSAwO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvcHkgYSBzdG9yZWQgYmxvY2ssIHN0b3JpbmcgZmlyc3QgdGhlIGxlbmd0aCBhbmQgaXRzXG4gKiBvbmUncyBjb21wbGVtZW50IGlmIHJlcXVlc3RlZC5cbiAqL1xuZnVuY3Rpb24gY29weV9ibG9jayhzLCBidWYsIGxlbiwgaGVhZGVyKVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICAgICpidWY7ICAgIC8qIHRoZSBpbnB1dCBkYXRhICovXG4vL3Vuc2lnbmVkIGxlbjsgICAgIC8qIGl0cyBsZW5ndGggKi9cbi8vaW50ICAgICAgaGVhZGVyOyAgLyogdHJ1ZSBpZiBibG9jayBoZWFkZXIgbXVzdCBiZSB3cml0dGVuICovXG57XG4gIGJpX3dpbmR1cChzKTsgICAgICAgIC8qIGFsaWduIG9uIGJ5dGUgYm91bmRhcnkgKi9cblxuICBpZiAoaGVhZGVyKSB7XG4gICAgcHV0X3Nob3J0KHMsIGxlbik7XG4gICAgcHV0X3Nob3J0KHMsIH5sZW4pO1xuICB9XG4vLyAgd2hpbGUgKGxlbi0tKSB7XG4vLyAgICBwdXRfYnl0ZShzLCAqYnVmKyspO1xuLy8gIH1cbiAgdXRpbHMuYXJyYXlTZXQocy5wZW5kaW5nX2J1Ziwgcy53aW5kb3csIGJ1ZiwgbGVuLCBzLnBlbmRpbmcpO1xuICBzLnBlbmRpbmcgKz0gbGVuO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIENvbXBhcmVzIHRvIHN1YnRyZWVzLCB1c2luZyB0aGUgdHJlZSBkZXB0aCBhcyB0aWUgYnJlYWtlciB3aGVuXG4gKiB0aGUgc3VidHJlZXMgaGF2ZSBlcXVhbCBmcmVxdWVuY3kuIFRoaXMgbWluaW1pemVzIHRoZSB3b3JzdCBjYXNlIGxlbmd0aC5cbiAqL1xuZnVuY3Rpb24gc21hbGxlcih0cmVlLCBuLCBtLCBkZXB0aCkge1xuICB2YXIgX24yID0gbiAqIDI7XG4gIHZhciBfbTIgPSBtICogMjtcbiAgcmV0dXJuICh0cmVlW19uMl0vKi5GcmVxKi8gPCB0cmVlW19tMl0vKi5GcmVxKi8gfHxcbiAgICAgICAgICh0cmVlW19uMl0vKi5GcmVxKi8gPT09IHRyZWVbX20yXS8qLkZyZXEqLyAmJiBkZXB0aFtuXSA8PSBkZXB0aFttXSkpO1xufVxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFJlc3RvcmUgdGhlIGhlYXAgcHJvcGVydHkgYnkgbW92aW5nIGRvd24gdGhlIHRyZWUgc3RhcnRpbmcgYXQgbm9kZSBrLFxuICogZXhjaGFuZ2luZyBhIG5vZGUgd2l0aCB0aGUgc21hbGxlc3Qgb2YgaXRzIHR3byBzb25zIGlmIG5lY2Vzc2FyeSwgc3RvcHBpbmdcbiAqIHdoZW4gdGhlIGhlYXAgcHJvcGVydHkgaXMgcmUtZXN0YWJsaXNoZWQgKGVhY2ggZmF0aGVyIHNtYWxsZXIgdGhhbiBpdHNcbiAqIHR3byBzb25zKS5cbiAqL1xuZnVuY3Rpb24gcHFkb3duaGVhcChzLCB0cmVlLCBrKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIGN0X2RhdGEgKnRyZWU7ICAvKiB0aGUgdHJlZSB0byByZXN0b3JlICovXG4vLyAgICBpbnQgazsgICAgICAgICAgICAgICAvKiBub2RlIHRvIG1vdmUgZG93biAqL1xue1xuICB2YXIgdiA9IHMuaGVhcFtrXTtcbiAgdmFyIGogPSBrIDw8IDE7ICAvKiBsZWZ0IHNvbiBvZiBrICovXG4gIHdoaWxlIChqIDw9IHMuaGVhcF9sZW4pIHtcbiAgICAvKiBTZXQgaiB0byB0aGUgc21hbGxlc3Qgb2YgdGhlIHR3byBzb25zOiAqL1xuICAgIGlmIChqIDwgcy5oZWFwX2xlbiAmJlxuICAgICAgc21hbGxlcih0cmVlLCBzLmhlYXBbaiArIDFdLCBzLmhlYXBbal0sIHMuZGVwdGgpKSB7XG4gICAgICBqKys7XG4gICAgfVxuICAgIC8qIEV4aXQgaWYgdiBpcyBzbWFsbGVyIHRoYW4gYm90aCBzb25zICovXG4gICAgaWYgKHNtYWxsZXIodHJlZSwgdiwgcy5oZWFwW2pdLCBzLmRlcHRoKSkgeyBicmVhazsgfVxuXG4gICAgLyogRXhjaGFuZ2UgdiB3aXRoIHRoZSBzbWFsbGVzdCBzb24gKi9cbiAgICBzLmhlYXBba10gPSBzLmhlYXBbal07XG4gICAgayA9IGo7XG5cbiAgICAvKiBBbmQgY29udGludWUgZG93biB0aGUgdHJlZSwgc2V0dGluZyBqIHRvIHRoZSBsZWZ0IHNvbiBvZiBrICovXG4gICAgaiA8PD0gMTtcbiAgfVxuICBzLmhlYXBba10gPSB2O1xufVxuXG5cbi8vIGlubGluZWQgbWFudWFsbHlcbi8vIHZhciBTTUFMTEVTVCA9IDE7XG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCB0aGUgYmxvY2sgZGF0YSBjb21wcmVzc2VkIHVzaW5nIHRoZSBnaXZlbiBIdWZmbWFuIHRyZWVzXG4gKi9cbmZ1bmN0aW9uIGNvbXByZXNzX2Jsb2NrKHMsIGx0cmVlLCBkdHJlZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjb25zdCBjdF9kYXRhICpsdHJlZTsgLyogbGl0ZXJhbCB0cmVlICovXG4vLyAgICBjb25zdCBjdF9kYXRhICpkdHJlZTsgLyogZGlzdGFuY2UgdHJlZSAqL1xue1xuICB2YXIgZGlzdDsgICAgICAgICAgIC8qIGRpc3RhbmNlIG9mIG1hdGNoZWQgc3RyaW5nICovXG4gIHZhciBsYzsgICAgICAgICAgICAgLyogbWF0Y2ggbGVuZ3RoIG9yIHVubWF0Y2hlZCBjaGFyIChpZiBkaXN0ID09IDApICovXG4gIHZhciBseCA9IDA7ICAgICAgICAgLyogcnVubmluZyBpbmRleCBpbiBsX2J1ZiAqL1xuICB2YXIgY29kZTsgICAgICAgICAgIC8qIHRoZSBjb2RlIHRvIHNlbmQgKi9cbiAgdmFyIGV4dHJhOyAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyB0byBzZW5kICovXG5cbiAgaWYgKHMubGFzdF9saXQgIT09IDApIHtcbiAgICBkbyB7XG4gICAgICBkaXN0ID0gKHMucGVuZGluZ19idWZbcy5kX2J1ZiArIGx4ICogMl0gPDwgOCkgfCAocy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgbHggKiAyICsgMV0pO1xuICAgICAgbGMgPSBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBseF07XG4gICAgICBseCsrO1xuXG4gICAgICBpZiAoZGlzdCA9PT0gMCkge1xuICAgICAgICBzZW5kX2NvZGUocywgbGMsIGx0cmVlKTsgLyogc2VuZCBhIGxpdGVyYWwgYnl0ZSAqL1xuICAgICAgICAvL1RyYWNlY3YoaXNncmFwaChsYyksIChzdGRlcnIsXCIgJyVjJyBcIiwgbGMpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi9cbiAgICAgICAgY29kZSA9IF9sZW5ndGhfY29kZVtsY107XG4gICAgICAgIHNlbmRfY29kZShzLCBjb2RlICsgTElURVJBTFMgKyAxLCBsdHJlZSk7IC8qIHNlbmQgdGhlIGxlbmd0aCBjb2RlICovXG4gICAgICAgIGV4dHJhID0gZXh0cmFfbGJpdHNbY29kZV07XG4gICAgICAgIGlmIChleHRyYSAhPT0gMCkge1xuICAgICAgICAgIGxjIC09IGJhc2VfbGVuZ3RoW2NvZGVdO1xuICAgICAgICAgIHNlbmRfYml0cyhzLCBsYywgZXh0cmEpOyAgICAgICAvKiBzZW5kIHRoZSBleHRyYSBsZW5ndGggYml0cyAqL1xuICAgICAgICB9XG4gICAgICAgIGRpc3QtLTsgLyogZGlzdCBpcyBub3cgdGhlIG1hdGNoIGRpc3RhbmNlIC0gMSAqL1xuICAgICAgICBjb2RlID0gZF9jb2RlKGRpc3QpO1xuICAgICAgICAvL0Fzc2VydCAoY29kZSA8IERfQ09ERVMsIFwiYmFkIGRfY29kZVwiKTtcblxuICAgICAgICBzZW5kX2NvZGUocywgY29kZSwgZHRyZWUpOyAgICAgICAvKiBzZW5kIHRoZSBkaXN0YW5jZSBjb2RlICovXG4gICAgICAgIGV4dHJhID0gZXh0cmFfZGJpdHNbY29kZV07XG4gICAgICAgIGlmIChleHRyYSAhPT0gMCkge1xuICAgICAgICAgIGRpc3QgLT0gYmFzZV9kaXN0W2NvZGVdO1xuICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyogc2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqL1xuICAgICAgICB9XG4gICAgICB9IC8qIGxpdGVyYWwgb3IgbWF0Y2ggcGFpciA/ICovXG5cbiAgICAgIC8qIENoZWNrIHRoYXQgdGhlIG92ZXJsYXkgYmV0d2VlbiBwZW5kaW5nX2J1ZiBhbmQgZF9idWYrbF9idWYgaXMgb2s6ICovXG4gICAgICAvL0Fzc2VydCgodUludCkocy0+cGVuZGluZykgPCBzLT5saXRfYnVmc2l6ZSArIDIqbHgsXG4gICAgICAvLyAgICAgICBcInBlbmRpbmdCdWYgb3ZlcmZsb3dcIik7XG5cbiAgICB9IHdoaWxlIChseCA8IHMubGFzdF9saXQpO1xuICB9XG5cbiAgc2VuZF9jb2RlKHMsIEVORF9CTE9DSywgbHRyZWUpO1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogQ29uc3RydWN0IG9uZSBIdWZmbWFuIHRyZWUgYW5kIGFzc2lnbnMgdGhlIGNvZGUgYml0IHN0cmluZ3MgYW5kIGxlbmd0aHMuXG4gKiBVcGRhdGUgdGhlIHRvdGFsIGJpdCBsZW5ndGggZm9yIHRoZSBjdXJyZW50IGJsb2NrLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGQgZnJlcSBpcyBzZXQgZm9yIGFsbCB0cmVlIGVsZW1lbnRzLlxuICogT1VUIGFzc2VydGlvbnM6IHRoZSBmaWVsZHMgbGVuIGFuZCBjb2RlIGFyZSBzZXQgdG8gdGhlIG9wdGltYWwgYml0IGxlbmd0aFxuICogICAgIGFuZCBjb3JyZXNwb25kaW5nIGNvZGUuIFRoZSBsZW5ndGggb3B0X2xlbiBpcyB1cGRhdGVkOyBzdGF0aWNfbGVuIGlzXG4gKiAgICAgYWxzbyB1cGRhdGVkIGlmIHN0cmVlIGlzIG5vdCBudWxsLiBUaGUgZmllbGQgbWF4X2NvZGUgaXMgc2V0LlxuICovXG5mdW5jdGlvbiBidWlsZF90cmVlKHMsIGRlc2MpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgdHJlZV9kZXNjICpkZXNjOyAvKiB0aGUgdHJlZSBkZXNjcmlwdG9yICovXG57XG4gIHZhciB0cmVlICAgICA9IGRlc2MuZHluX3RyZWU7XG4gIHZhciBzdHJlZSAgICA9IGRlc2Muc3RhdF9kZXNjLnN0YXRpY190cmVlO1xuICB2YXIgaGFzX3N0cmVlID0gZGVzYy5zdGF0X2Rlc2MuaGFzX3N0cmVlO1xuICB2YXIgZWxlbXMgICAgPSBkZXNjLnN0YXRfZGVzYy5lbGVtcztcbiAgdmFyIG4sIG07ICAgICAgICAgIC8qIGl0ZXJhdGUgb3ZlciBoZWFwIGVsZW1lbnRzICovXG4gIHZhciBtYXhfY29kZSA9IC0xOyAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi9cbiAgdmFyIG5vZGU7ICAgICAgICAgIC8qIG5ldyBub2RlIGJlaW5nIGNyZWF0ZWQgKi9cblxuICAvKiBDb25zdHJ1Y3QgdGhlIGluaXRpYWwgaGVhcCwgd2l0aCBsZWFzdCBmcmVxdWVudCBlbGVtZW50IGluXG4gICAqIGhlYXBbU01BTExFU1RdLiBUaGUgc29ucyBvZiBoZWFwW25dIGFyZSBoZWFwWzIqbl0gYW5kIGhlYXBbMipuKzFdLlxuICAgKiBoZWFwWzBdIGlzIG5vdCB1c2VkLlxuICAgKi9cbiAgcy5oZWFwX2xlbiA9IDA7XG4gIHMuaGVhcF9tYXggPSBIRUFQX1NJWkU7XG5cbiAgZm9yIChuID0gMDsgbiA8IGVsZW1zOyBuKyspIHtcbiAgICBpZiAodHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICAgIHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gbWF4X2NvZGUgPSBuO1xuICAgICAgcy5kZXB0aFtuXSA9IDA7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdHJlZVtuICogMiArIDFdLyouTGVuKi8gPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qIFRoZSBwa3ppcCBmb3JtYXQgcmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgZGlzdGFuY2UgY29kZSBleGlzdHMsXG4gICAqIGFuZCB0aGF0IGF0IGxlYXN0IG9uZSBiaXQgc2hvdWxkIGJlIHNlbnQgZXZlbiBpZiB0aGVyZSBpcyBvbmx5IG9uZVxuICAgKiBwb3NzaWJsZSBjb2RlLiBTbyB0byBhdm9pZCBzcGVjaWFsIGNoZWNrcyBsYXRlciBvbiB3ZSBmb3JjZSBhdCBsZWFzdFxuICAgKiB0d28gY29kZXMgb2Ygbm9uIHplcm8gZnJlcXVlbmN5LlxuICAgKi9cbiAgd2hpbGUgKHMuaGVhcF9sZW4gPCAyKSB7XG4gICAgbm9kZSA9IHMuaGVhcFsrK3MuaGVhcF9sZW5dID0gKG1heF9jb2RlIDwgMiA/ICsrbWF4X2NvZGUgOiAwKTtcbiAgICB0cmVlW25vZGUgKiAyXS8qLkZyZXEqLyA9IDE7XG4gICAgcy5kZXB0aFtub2RlXSA9IDA7XG4gICAgcy5vcHRfbGVuLS07XG5cbiAgICBpZiAoaGFzX3N0cmVlKSB7XG4gICAgICBzLnN0YXRpY19sZW4gLT0gc3RyZWVbbm9kZSAqIDIgKyAxXS8qLkxlbiovO1xuICAgIH1cbiAgICAvKiBub2RlIGlzIDAgb3IgMSBzbyBpdCBkb2VzIG5vdCBoYXZlIGV4dHJhIGJpdHMgKi9cbiAgfVxuICBkZXNjLm1heF9jb2RlID0gbWF4X2NvZGU7XG5cbiAgLyogVGhlIGVsZW1lbnRzIGhlYXBbaGVhcF9sZW4vMisxIC4uIGhlYXBfbGVuXSBhcmUgbGVhdmVzIG9mIHRoZSB0cmVlLFxuICAgKiBlc3RhYmxpc2ggc3ViLWhlYXBzIG9mIGluY3JlYXNpbmcgbGVuZ3RoczpcbiAgICovXG4gIGZvciAobiA9IChzLmhlYXBfbGVuID4+IDEvKmludCAvMiovKTsgbiA+PSAxOyBuLS0pIHsgcHFkb3duaGVhcChzLCB0cmVlLCBuKTsgfVxuXG4gIC8qIENvbnN0cnVjdCB0aGUgSHVmZm1hbiB0cmVlIGJ5IHJlcGVhdGVkbHkgY29tYmluaW5nIHRoZSBsZWFzdCB0d29cbiAgICogZnJlcXVlbnQgbm9kZXMuXG4gICAqL1xuICBub2RlID0gZWxlbXM7ICAgICAgICAgICAgICAvKiBuZXh0IGludGVybmFsIG5vZGUgb2YgdGhlIHRyZWUgKi9cbiAgZG8ge1xuICAgIC8vcHFyZW1vdmUocywgdHJlZSwgbik7ICAvKiBuID0gbm9kZSBvZiBsZWFzdCBmcmVxdWVuY3kgKi9cbiAgICAvKioqIHBxcmVtb3ZlICoqKi9cbiAgICBuID0gcy5oZWFwWzEvKlNNQUxMRVNUKi9dO1xuICAgIHMuaGVhcFsxLypTTUFMTEVTVCovXSA9IHMuaGVhcFtzLmhlYXBfbGVuLS1dO1xuICAgIHBxZG93bmhlYXAocywgdHJlZSwgMS8qU01BTExFU1QqLyk7XG4gICAgLyoqKi9cblxuICAgIG0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107IC8qIG0gPSBub2RlIG9mIG5leHQgbGVhc3QgZnJlcXVlbmN5ICovXG5cbiAgICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IG47IC8qIGtlZXAgdGhlIG5vZGVzIHNvcnRlZCBieSBmcmVxdWVuY3kgKi9cbiAgICBzLmhlYXBbLS1zLmhlYXBfbWF4XSA9IG07XG5cbiAgICAvKiBDcmVhdGUgYSBuZXcgbm9kZSBmYXRoZXIgb2YgbiBhbmQgbSAqL1xuICAgIHRyZWVbbm9kZSAqIDJdLyouRnJlcSovID0gdHJlZVtuICogMl0vKi5GcmVxKi8gKyB0cmVlW20gKiAyXS8qLkZyZXEqLztcbiAgICBzLmRlcHRoW25vZGVdID0gKHMuZGVwdGhbbl0gPj0gcy5kZXB0aFttXSA/IHMuZGVwdGhbbl0gOiBzLmRlcHRoW21dKSArIDE7XG4gICAgdHJlZVtuICogMiArIDFdLyouRGFkKi8gPSB0cmVlW20gKiAyICsgMV0vKi5EYWQqLyA9IG5vZGU7XG5cbiAgICAvKiBhbmQgaW5zZXJ0IHRoZSBuZXcgbm9kZSBpbiB0aGUgaGVhcCAqL1xuICAgIHMuaGVhcFsxLypTTUFMTEVTVCovXSA9IG5vZGUrKztcbiAgICBwcWRvd25oZWFwKHMsIHRyZWUsIDEvKlNNQUxMRVNUKi8pO1xuXG4gIH0gd2hpbGUgKHMuaGVhcF9sZW4gPj0gMik7XG5cbiAgcy5oZWFwWy0tcy5oZWFwX21heF0gPSBzLmhlYXBbMS8qU01BTExFU1QqL107XG5cbiAgLyogQXQgdGhpcyBwb2ludCwgdGhlIGZpZWxkcyBmcmVxIGFuZCBkYWQgYXJlIHNldC4gV2UgY2FuIG5vd1xuICAgKiBnZW5lcmF0ZSB0aGUgYml0IGxlbmd0aHMuXG4gICAqL1xuICBnZW5fYml0bGVuKHMsIGRlc2MpO1xuXG4gIC8qIFRoZSBmaWVsZCBsZW4gaXMgbm93IHNldCwgd2UgY2FuIGdlbmVyYXRlIHRoZSBiaXQgY29kZXMgKi9cbiAgZ2VuX2NvZGVzKHRyZWUsIG1heF9jb2RlLCBzLmJsX2NvdW50KTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNjYW4gYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgdG8gZGV0ZXJtaW5lIHRoZSBmcmVxdWVuY2llcyBvZiB0aGUgY29kZXNcbiAqIGluIHRoZSBiaXQgbGVuZ3RoIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHNjYW5fdHJlZShzLCB0cmVlLCBtYXhfY29kZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjdF9kYXRhICp0cmVlOyAgIC8qIHRoZSB0cmVlIHRvIGJlIHNjYW5uZWQgKi9cbi8vICAgIGludCBtYXhfY29kZTsgICAgLyogYW5kIGl0cyBsYXJnZXN0IGNvZGUgb2Ygbm9uIHplcm8gZnJlcXVlbmN5ICovXG57XG4gIHZhciBuOyAgICAgICAgICAgICAgICAgICAgIC8qIGl0ZXJhdGVzIG92ZXIgYWxsIHRyZWUgZWxlbWVudHMgKi9cbiAgdmFyIHByZXZsZW4gPSAtMTsgICAgICAgICAgLyogbGFzdCBlbWl0dGVkIGxlbmd0aCAqL1xuICB2YXIgY3VybGVuOyAgICAgICAgICAgICAgICAvKiBsZW5ndGggb2YgY3VycmVudCBjb2RlICovXG5cbiAgdmFyIG5leHRsZW4gPSB0cmVlWzAgKiAyICsgMV0vKi5MZW4qLzsgLyogbGVuZ3RoIG9mIG5leHQgY29kZSAqL1xuXG4gIHZhciBjb3VudCA9IDA7ICAgICAgICAgICAgIC8qIHJlcGVhdCBjb3VudCBvZiB0aGUgY3VycmVudCBjb2RlICovXG4gIHZhciBtYXhfY291bnQgPSA3OyAgICAgICAgIC8qIG1heCByZXBlYXQgY291bnQgKi9cbiAgdmFyIG1pbl9jb3VudCA9IDQ7ICAgICAgICAgLyogbWluIHJlcGVhdCBjb3VudCAqL1xuXG4gIGlmIChuZXh0bGVuID09PSAwKSB7XG4gICAgbWF4X2NvdW50ID0gMTM4O1xuICAgIG1pbl9jb3VudCA9IDM7XG4gIH1cbiAgdHJlZVsobWF4X2NvZGUgKyAxKSAqIDIgKyAxXS8qLkxlbiovID0gMHhmZmZmOyAvKiBndWFyZCAqL1xuXG4gIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIGN1cmxlbiA9IG5leHRsZW47XG4gICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovO1xuXG4gICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBjb250aW51ZTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPCBtaW5fY291bnQpIHtcbiAgICAgIHMuYmxfdHJlZVtjdXJsZW4gKiAyXS8qLkZyZXEqLyArPSBjb3VudDtcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuICE9PSAwKSB7XG5cbiAgICAgIGlmIChjdXJsZW4gIT09IHByZXZsZW4pIHsgcy5ibF90cmVlW2N1cmxlbiAqIDJdLyouRnJlcSovKys7IH1cbiAgICAgIHMuYmxfdHJlZVtSRVBfM182ICogMl0vKi5GcmVxKi8rKztcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHtcbiAgICAgIHMuYmxfdHJlZVtSRVBaXzNfMTAgKiAyXS8qLkZyZXEqLysrO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgIHMuYmxfdHJlZVtSRVBaXzExXzEzOCAqIDJdLyouRnJlcSovKys7XG4gICAgfVxuXG4gICAgY291bnQgPSAwO1xuICAgIHByZXZsZW4gPSBjdXJsZW47XG5cbiAgICBpZiAobmV4dGxlbiA9PT0gMCkge1xuICAgICAgbWF4X2NvdW50ID0gMTM4O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSBpZiAoY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBtYXhfY291bnQgPSA2O1xuICAgICAgbWluX2NvdW50ID0gMztcblxuICAgIH0gZWxzZSB7XG4gICAgICBtYXhfY291bnQgPSA3O1xuICAgICAgbWluX2NvdW50ID0gNDtcbiAgICB9XG4gIH1cbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIFNlbmQgYSBsaXRlcmFsIG9yIGRpc3RhbmNlIHRyZWUgaW4gY29tcHJlc3NlZCBmb3JtLCB1c2luZyB0aGUgY29kZXMgaW5cbiAqIGJsX3RyZWUuXG4gKi9cbmZ1bmN0aW9uIHNlbmRfdHJlZShzLCB0cmVlLCBtYXhfY29kZSlcbi8vICAgIGRlZmxhdGVfc3RhdGUgKnM7XG4vLyAgICBjdF9kYXRhICp0cmVlOyAvKiB0aGUgdHJlZSB0byBiZSBzY2FubmVkICovXG4vLyAgICBpbnQgbWF4X2NvZGU7ICAgICAgIC8qIGFuZCBpdHMgbGFyZ2VzdCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXF1ZW5jeSAqL1xue1xuICB2YXIgbjsgICAgICAgICAgICAgICAgICAgICAvKiBpdGVyYXRlcyBvdmVyIGFsbCB0cmVlIGVsZW1lbnRzICovXG4gIHZhciBwcmV2bGVuID0gLTE7ICAgICAgICAgIC8qIGxhc3QgZW1pdHRlZCBsZW5ndGggKi9cbiAgdmFyIGN1cmxlbjsgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgY29kZSAqL1xuXG4gIHZhciBuZXh0bGVuID0gdHJlZVswICogMiArIDFdLyouTGVuKi87IC8qIGxlbmd0aCBvZiBuZXh0IGNvZGUgKi9cblxuICB2YXIgY291bnQgPSAwOyAgICAgICAgICAgICAvKiByZXBlYXQgY291bnQgb2YgdGhlIGN1cnJlbnQgY29kZSAqL1xuICB2YXIgbWF4X2NvdW50ID0gNzsgICAgICAgICAvKiBtYXggcmVwZWF0IGNvdW50ICovXG4gIHZhciBtaW5fY291bnQgPSA0OyAgICAgICAgIC8qIG1pbiByZXBlYXQgY291bnQgKi9cblxuICAvKiB0cmVlW21heF9jb2RlKzFdLkxlbiA9IC0xOyAqLyAgLyogZ3VhcmQgYWxyZWFkeSBzZXQgKi9cbiAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICBtYXhfY291bnQgPSAxMzg7XG4gICAgbWluX2NvdW50ID0gMztcbiAgfVxuXG4gIGZvciAobiA9IDA7IG4gPD0gbWF4X2NvZGU7IG4rKykge1xuICAgIGN1cmxlbiA9IG5leHRsZW47XG4gICAgbmV4dGxlbiA9IHRyZWVbKG4gKyAxKSAqIDIgKyAxXS8qLkxlbiovO1xuXG4gICAgaWYgKCsrY291bnQgPCBtYXhfY291bnQgJiYgY3VybGVuID09PSBuZXh0bGVuKSB7XG4gICAgICBjb250aW51ZTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPCBtaW5fY291bnQpIHtcbiAgICAgIGRvIHsgc2VuZF9jb2RlKHMsIGN1cmxlbiwgcy5ibF90cmVlKTsgfSB3aGlsZSAoLS1jb3VudCAhPT0gMCk7XG5cbiAgICB9IGVsc2UgaWYgKGN1cmxlbiAhPT0gMCkge1xuICAgICAgaWYgKGN1cmxlbiAhPT0gcHJldmxlbikge1xuICAgICAgICBzZW5kX2NvZGUocywgY3VybGVuLCBzLmJsX3RyZWUpO1xuICAgICAgICBjb3VudC0tO1xuICAgICAgfVxuICAgICAgLy9Bc3NlcnQoY291bnQgPj0gMyAmJiBjb3VudCA8PSA2LCBcIiAzXzY/XCIpO1xuICAgICAgc2VuZF9jb2RlKHMsIFJFUF8zXzYsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAyKTtcblxuICAgIH0gZWxzZSBpZiAoY291bnQgPD0gMTApIHtcbiAgICAgIHNlbmRfY29kZShzLCBSRVBaXzNfMTAsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAzLCAzKTtcblxuICAgIH0gZWxzZSB7XG4gICAgICBzZW5kX2NvZGUocywgUkVQWl8xMV8xMzgsIHMuYmxfdHJlZSk7XG4gICAgICBzZW5kX2JpdHMocywgY291bnQgLSAxMSwgNyk7XG4gICAgfVxuXG4gICAgY291bnQgPSAwO1xuICAgIHByZXZsZW4gPSBjdXJsZW47XG4gICAgaWYgKG5leHRsZW4gPT09IDApIHtcbiAgICAgIG1heF9jb3VudCA9IDEzODtcbiAgICAgIG1pbl9jb3VudCA9IDM7XG5cbiAgICB9IGVsc2UgaWYgKGN1cmxlbiA9PT0gbmV4dGxlbikge1xuICAgICAgbWF4X2NvdW50ID0gNjtcbiAgICAgIG1pbl9jb3VudCA9IDM7XG5cbiAgICB9IGVsc2Uge1xuICAgICAgbWF4X2NvdW50ID0gNztcbiAgICAgIG1pbl9jb3VudCA9IDQ7XG4gICAgfVxuICB9XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDb25zdHJ1Y3QgdGhlIEh1ZmZtYW4gdHJlZSBmb3IgdGhlIGJpdCBsZW5ndGhzIGFuZCByZXR1cm4gdGhlIGluZGV4IGluXG4gKiBibF9vcmRlciBvZiB0aGUgbGFzdCBiaXQgbGVuZ3RoIGNvZGUgdG8gc2VuZC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRfYmxfdHJlZShzKSB7XG4gIHZhciBtYXhfYmxpbmRleDsgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi9cblxuICAvKiBEZXRlcm1pbmUgdGhlIGJpdCBsZW5ndGggZnJlcXVlbmNpZXMgZm9yIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovXG4gIHNjYW5fdHJlZShzLCBzLmR5bl9sdHJlZSwgcy5sX2Rlc2MubWF4X2NvZGUpO1xuICBzY2FuX3RyZWUocywgcy5keW5fZHRyZWUsIHMuZF9kZXNjLm1heF9jb2RlKTtcblxuICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlOiAqL1xuICBidWlsZF90cmVlKHMsIHMuYmxfZGVzYyk7XG4gIC8qIG9wdF9sZW4gbm93IGluY2x1ZGVzIHRoZSBsZW5ndGggb2YgdGhlIHRyZWUgcmVwcmVzZW50YXRpb25zLCBleGNlcHRcbiAgICogdGhlIGxlbmd0aHMgb2YgdGhlIGJpdCBsZW5ndGhzIGNvZGVzIGFuZCB0aGUgNSs1KzQgYml0cyBmb3IgdGhlIGNvdW50cy5cbiAgICovXG5cbiAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgYml0IGxlbmd0aCBjb2RlcyB0byBzZW5kLiBUaGUgcGt6aXAgZm9ybWF0XG4gICAqIHJlcXVpcmVzIHRoYXQgYXQgbGVhc3QgNCBiaXQgbGVuZ3RoIGNvZGVzIGJlIHNlbnQuIChhcHBub3RlLnR4dCBzYXlzXG4gICAqIDMgYnV0IHRoZSBhY3R1YWwgdmFsdWUgdXNlZCBpcyA0LilcbiAgICovXG4gIGZvciAobWF4X2JsaW5kZXggPSBCTF9DT0RFUyAtIDE7IG1heF9ibGluZGV4ID49IDM7IG1heF9ibGluZGV4LS0pIHtcbiAgICBpZiAocy5ibF90cmVlW2JsX29yZGVyW21heF9ibGluZGV4XSAqIDIgKyAxXS8qLkxlbiovICE9PSAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi9cbiAgcy5vcHRfbGVuICs9IDMgKiAobWF4X2JsaW5kZXggKyAxKSArIDUgKyA1ICsgNDtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5keW4gdHJlZXM6IGR5biAlbGQsIHN0YXQgJWxkXCIsXG4gIC8vICAgICAgICBzLT5vcHRfbGVuLCBzLT5zdGF0aWNfbGVuKSk7XG5cbiAgcmV0dXJuIG1heF9ibGluZGV4O1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCB0aGUgaGVhZGVyIGZvciBhIGJsb2NrIHVzaW5nIGR5bmFtaWMgSHVmZm1hbiB0cmVlczogdGhlIGNvdW50cywgdGhlXG4gKiBsZW5ndGhzIG9mIHRoZSBiaXQgbGVuZ3RoIGNvZGVzLCB0aGUgbGl0ZXJhbCB0cmVlIGFuZCB0aGUgZGlzdGFuY2UgdHJlZS5cbiAqIElOIGFzc2VydGlvbjogbGNvZGVzID49IDI1NywgZGNvZGVzID49IDEsIGJsY29kZXMgPj0gNC5cbiAqL1xuZnVuY3Rpb24gc2VuZF9hbGxfdHJlZXMocywgbGNvZGVzLCBkY29kZXMsIGJsY29kZXMpXG4vLyAgICBkZWZsYXRlX3N0YXRlICpzO1xuLy8gICAgaW50IGxjb2RlcywgZGNvZGVzLCBibGNvZGVzOyAvKiBudW1iZXIgb2YgY29kZXMgZm9yIGVhY2ggdHJlZSAqL1xue1xuICB2YXIgcmFuazsgICAgICAgICAgICAgICAgICAgIC8qIGluZGV4IGluIGJsX29yZGVyICovXG5cbiAgLy9Bc3NlcnQgKGxjb2RlcyA+PSAyNTcgJiYgZGNvZGVzID49IDEgJiYgYmxjb2RlcyA+PSA0LCBcIm5vdCBlbm91Z2ggY29kZXNcIik7XG4gIC8vQXNzZXJ0IChsY29kZXMgPD0gTF9DT0RFUyAmJiBkY29kZXMgPD0gRF9DT0RFUyAmJiBibGNvZGVzIDw9IEJMX0NPREVTLFxuICAvLyAgICAgICAgXCJ0b28gbWFueSBjb2Rlc1wiKTtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5ibCBjb3VudHM6IFwiKSk7XG4gIHNlbmRfYml0cyhzLCBsY29kZXMgLSAyNTcsIDUpOyAvKiBub3QgKzI1NSBhcyBzdGF0ZWQgaW4gYXBwbm90ZS50eHQgKi9cbiAgc2VuZF9iaXRzKHMsIGRjb2RlcyAtIDEsICAgNSk7XG4gIHNlbmRfYml0cyhzLCBibGNvZGVzIC0gNCwgIDQpOyAvKiBub3QgLTMgYXMgc3RhdGVkIGluIGFwcG5vdGUudHh0ICovXG4gIGZvciAocmFuayA9IDA7IHJhbmsgPCBibGNvZGVzOyByYW5rKyspIHtcbiAgICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmJsIGNvZGUgJTJkIFwiLCBibF9vcmRlcltyYW5rXSkpO1xuICAgIHNlbmRfYml0cyhzLCBzLmJsX3RyZWVbYmxfb3JkZXJbcmFua10gKiAyICsgMV0vKi5MZW4qLywgMyk7XG4gIH1cbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5ibCB0cmVlOiBzZW50ICVsZFwiLCBzLT5iaXRzX3NlbnQpKTtcblxuICBzZW5kX3RyZWUocywgcy5keW5fbHRyZWUsIGxjb2RlcyAtIDEpOyAvKiBsaXRlcmFsIHRyZWUgKi9cbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJcXG5saXQgdHJlZTogc2VudCAlbGRcIiwgcy0+Yml0c19zZW50KSk7XG5cbiAgc2VuZF90cmVlKHMsIHMuZHluX2R0cmVlLCBkY29kZXMgLSAxKTsgLyogZGlzdGFuY2UgdHJlZSAqL1xuICAvL1RyYWNldigoc3RkZXJyLCBcIlxcbmRpc3QgdHJlZTogc2VudCAlbGRcIiwgcy0+Yml0c19zZW50KSk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBDaGVjayBpZiB0aGUgZGF0YSB0eXBlIGlzIFRFWFQgb3IgQklOQVJZLCB1c2luZyB0aGUgZm9sbG93aW5nIGFsZ29yaXRobTpcbiAqIC0gVEVYVCBpZiB0aGUgdHdvIGNvbmRpdGlvbnMgYmVsb3cgYXJlIHNhdGlzZmllZDpcbiAqICAgIGEpIFRoZXJlIGFyZSBubyBub24tcG9ydGFibGUgY29udHJvbCBjaGFyYWN0ZXJzIGJlbG9uZ2luZyB0byB0aGVcbiAqICAgICAgIFwiYmxhY2sgbGlzdFwiICgwLi42LCAxNC4uMjUsIDI4Li4zMSkuXG4gKiAgICBiKSBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgcHJpbnRhYmxlIGNoYXJhY3RlciBiZWxvbmdpbmcgdG8gdGhlXG4gKiAgICAgICBcIndoaXRlIGxpc3RcIiAoOSB7VEFCfSwgMTAge0xGfSwgMTMge0NSfSwgMzIuLjI1NSkuXG4gKiAtIEJJTkFSWSBvdGhlcndpc2UuXG4gKiAtIFRoZSBmb2xsb3dpbmcgcGFydGlhbGx5LXBvcnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBmb3JtIGFcbiAqICAgXCJncmF5IGxpc3RcIiB0aGF0IGlzIGlnbm9yZWQgaW4gdGhpcyBkZXRlY3Rpb24gYWxnb3JpdGhtOlxuICogICAoNyB7QkVMfSwgOCB7QlN9LCAxMSB7VlR9LCAxMiB7RkZ9LCAyNiB7U1VCfSwgMjcge0VTQ30pLlxuICogSU4gYXNzZXJ0aW9uOiB0aGUgZmllbGRzIEZyZXEgb2YgZHluX2x0cmVlIGFyZSBzZXQuXG4gKi9cbmZ1bmN0aW9uIGRldGVjdF9kYXRhX3R5cGUocykge1xuICAvKiBibGFja19tYXNrIGlzIHRoZSBiaXQgbWFzayBvZiBibGFjay1saXN0ZWQgYnl0ZXNcbiAgICogc2V0IGJpdHMgMC4uNiwgMTQuLjI1LCBhbmQgMjguLjMxXG4gICAqIDB4ZjNmZmMwN2YgPSBiaW5hcnkgMTExMTAwMTExMTExMTExMTExMDAwMDAwMDExMTExMTFcbiAgICovXG4gIHZhciBibGFja19tYXNrID0gMHhmM2ZmYzA3ZjtcbiAgdmFyIG47XG5cbiAgLyogQ2hlY2sgZm9yIG5vbi10ZXh0dWFsIChcImJsYWNrLWxpc3RlZFwiKSBieXRlcy4gKi9cbiAgZm9yIChuID0gMDsgbiA8PSAzMTsgbisrLCBibGFja19tYXNrID4+Pj0gMSkge1xuICAgIGlmICgoYmxhY2tfbWFzayAmIDEpICYmIChzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApKSB7XG4gICAgICByZXR1cm4gWl9CSU5BUlk7XG4gICAgfVxuICB9XG5cbiAgLyogQ2hlY2sgZm9yIHRleHR1YWwgKFwid2hpdGUtbGlzdGVkXCIpIGJ5dGVzLiAqL1xuICBpZiAocy5keW5fbHRyZWVbOSAqIDJdLyouRnJlcSovICE9PSAwIHx8IHMuZHluX2x0cmVlWzEwICogMl0vKi5GcmVxKi8gIT09IDAgfHxcbiAgICAgIHMuZHluX2x0cmVlWzEzICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICByZXR1cm4gWl9URVhUO1xuICB9XG4gIGZvciAobiA9IDMyOyBuIDwgTElURVJBTFM7IG4rKykge1xuICAgIGlmIChzLmR5bl9sdHJlZVtuICogMl0vKi5GcmVxKi8gIT09IDApIHtcbiAgICAgIHJldHVybiBaX1RFWFQ7XG4gICAgfVxuICB9XG5cbiAgLyogVGhlcmUgYXJlIG5vIFwiYmxhY2stbGlzdGVkXCIgb3IgXCJ3aGl0ZS1saXN0ZWRcIiBieXRlczpcbiAgICogdGhpcyBzdHJlYW0gZWl0aGVyIGlzIGVtcHR5IG9yIGhhcyB0b2xlcmF0ZWQgKFwiZ3JheS1saXN0ZWRcIikgYnl0ZXMgb25seS5cbiAgICovXG4gIHJldHVybiBaX0JJTkFSWTtcbn1cblxuXG52YXIgc3RhdGljX2luaXRfZG9uZSA9IGZhbHNlO1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIEluaXRpYWxpemUgdGhlIHRyZWUgZGF0YSBzdHJ1Y3R1cmVzIGZvciBhIG5ldyB6bGliIHN0cmVhbS5cbiAqL1xuZnVuY3Rpb24gX3RyX2luaXQocylcbntcblxuICBpZiAoIXN0YXRpY19pbml0X2RvbmUpIHtcbiAgICB0cl9zdGF0aWNfaW5pdCgpO1xuICAgIHN0YXRpY19pbml0X2RvbmUgPSB0cnVlO1xuICB9XG5cbiAgcy5sX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2x0cmVlLCBzdGF0aWNfbF9kZXNjKTtcbiAgcy5kX2Rlc2MgID0gbmV3IFRyZWVEZXNjKHMuZHluX2R0cmVlLCBzdGF0aWNfZF9kZXNjKTtcbiAgcy5ibF9kZXNjID0gbmV3IFRyZWVEZXNjKHMuYmxfdHJlZSwgc3RhdGljX2JsX2Rlc2MpO1xuXG4gIHMuYmlfYnVmID0gMDtcbiAgcy5iaV92YWxpZCA9IDA7XG5cbiAgLyogSW5pdGlhbGl6ZSB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIGZpcnN0IGZpbGU6ICovXG4gIGluaXRfYmxvY2socyk7XG59XG5cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTZW5kIGEgc3RvcmVkIGJsb2NrXG4gKi9cbmZ1bmN0aW9uIF90cl9zdG9yZWRfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrICovXG4vL3VsZyBzdG9yZWRfbGVuOyAgIC8qIGxlbmd0aCBvZiBpbnB1dCBibG9jayAqL1xuLy9pbnQgbGFzdDsgICAgICAgICAvKiBvbmUgaWYgdGhpcyBpcyB0aGUgbGFzdCBibG9jayBmb3IgYSBmaWxlICovXG57XG4gIHNlbmRfYml0cyhzLCAoU1RPUkVEX0JMT0NLIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpOyAgICAvKiBzZW5kIGJsb2NrIHR5cGUgKi9cbiAgY29weV9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIHRydWUpOyAvKiB3aXRoIGhlYWRlciAqL1xufVxuXG5cbi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICogU2VuZCBvbmUgZW1wdHkgc3RhdGljIGJsb2NrIHRvIGdpdmUgZW5vdWdoIGxvb2thaGVhZCBmb3IgaW5mbGF0ZS5cbiAqIFRoaXMgdGFrZXMgMTAgYml0cywgb2Ygd2hpY2ggNyBtYXkgcmVtYWluIGluIHRoZSBiaXQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBfdHJfYWxpZ24ocykge1xuICBzZW5kX2JpdHMocywgU1RBVElDX1RSRUVTIDw8IDEsIDMpO1xuICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBzdGF0aWNfbHRyZWUpO1xuICBiaV9mbHVzaChzKTtcbn1cblxuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAqIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgYmxvY2s6IGR5bmFtaWMgdHJlZXMsIHN0YXRpY1xuICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLlxuICovXG5mdW5jdGlvbiBfdHJfZmx1c2hfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KVxuLy9EZWZsYXRlU3RhdGUgKnM7XG4vL2NoYXJmICpidWY7ICAgICAgIC8qIGlucHV0IGJsb2NrLCBvciBOVUxMIGlmIHRvbyBvbGQgKi9cbi8vdWxnIHN0b3JlZF9sZW47ICAgLyogbGVuZ3RoIG9mIGlucHV0IGJsb2NrICovXG4vL2ludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi9cbntcbiAgdmFyIG9wdF9sZW5iLCBzdGF0aWNfbGVuYjsgIC8qIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gaW4gYnl0ZXMgKi9cbiAgdmFyIG1heF9ibGluZGV4ID0gMDsgICAgICAgIC8qIGluZGV4IG9mIGxhc3QgYml0IGxlbmd0aCBjb2RlIG9mIG5vbiB6ZXJvIGZyZXEgKi9cblxuICAvKiBCdWlsZCB0aGUgSHVmZm1hbiB0cmVlcyB1bmxlc3MgYSBzdG9yZWQgYmxvY2sgaXMgZm9yY2VkICovXG4gIGlmIChzLmxldmVsID4gMCkge1xuXG4gICAgLyogQ2hlY2sgaWYgdGhlIGZpbGUgaXMgYmluYXJ5IG9yIHRleHQgKi9cbiAgICBpZiAocy5zdHJtLmRhdGFfdHlwZSA9PT0gWl9VTktOT1dOKSB7XG4gICAgICBzLnN0cm0uZGF0YV90eXBlID0gZGV0ZWN0X2RhdGFfdHlwZShzKTtcbiAgICB9XG5cbiAgICAvKiBDb25zdHJ1Y3QgdGhlIGxpdGVyYWwgYW5kIGRpc3RhbmNlIHRyZWVzICovXG4gICAgYnVpbGRfdHJlZShzLCBzLmxfZGVzYyk7XG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxubGl0IGRhdGE6IGR5biAlbGQsIHN0YXQgJWxkXCIsIHMtPm9wdF9sZW4sXG4gICAgLy8gICAgICAgIHMtPnN0YXRpY19sZW4pKTtcblxuICAgIGJ1aWxkX3RyZWUocywgcy5kX2Rlc2MpO1xuICAgIC8vIFRyYWNldigoc3RkZXJyLCBcIlxcbmRpc3QgZGF0YTogZHluICVsZCwgc3RhdCAlbGRcIiwgcy0+b3B0X2xlbixcbiAgICAvLyAgICAgICAgcy0+c3RhdGljX2xlbikpO1xuICAgIC8qIEF0IHRoaXMgcG9pbnQsIG9wdF9sZW4gYW5kIHN0YXRpY19sZW4gYXJlIHRoZSB0b3RhbCBiaXQgbGVuZ3RocyBvZlxuICAgICAqIHRoZSBjb21wcmVzc2VkIGJsb2NrIGRhdGEsIGV4Y2x1ZGluZyB0aGUgdHJlZSByZXByZXNlbnRhdGlvbnMuXG4gICAgICovXG5cbiAgICAvKiBCdWlsZCB0aGUgYml0IGxlbmd0aCB0cmVlIGZvciB0aGUgYWJvdmUgdHdvIHRyZWVzLCBhbmQgZ2V0IHRoZSBpbmRleFxuICAgICAqIGluIGJsX29yZGVyIG9mIHRoZSBsYXN0IGJpdCBsZW5ndGggY29kZSB0byBzZW5kLlxuICAgICAqL1xuICAgIG1heF9ibGluZGV4ID0gYnVpbGRfYmxfdHJlZShzKTtcblxuICAgIC8qIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZy4gQ29tcHV0ZSB0aGUgYmxvY2sgbGVuZ3RocyBpbiBieXRlcy4gKi9cbiAgICBvcHRfbGVuYiA9IChzLm9wdF9sZW4gKyAzICsgNykgPj4+IDM7XG4gICAgc3RhdGljX2xlbmIgPSAocy5zdGF0aWNfbGVuICsgMyArIDcpID4+PiAzO1xuXG4gICAgLy8gVHJhY2V2KChzdGRlcnIsIFwiXFxub3B0ICVsdSglbHUpIHN0YXQgJWx1KCVsdSkgc3RvcmVkICVsdSBsaXQgJXUgXCIsXG4gICAgLy8gICAgICAgIG9wdF9sZW5iLCBzLT5vcHRfbGVuLCBzdGF0aWNfbGVuYiwgcy0+c3RhdGljX2xlbiwgc3RvcmVkX2xlbixcbiAgICAvLyAgICAgICAgcy0+bGFzdF9saXQpKTtcblxuICAgIGlmIChzdGF0aWNfbGVuYiA8PSBvcHRfbGVuYikgeyBvcHRfbGVuYiA9IHN0YXRpY19sZW5iOyB9XG5cbiAgfSBlbHNlIHtcbiAgICAvLyBBc3NlcnQoYnVmICE9IChjaGFyKikwLCBcImxvc3QgYnVmXCIpO1xuICAgIG9wdF9sZW5iID0gc3RhdGljX2xlbmIgPSBzdG9yZWRfbGVuICsgNTsgLyogZm9yY2UgYSBzdG9yZWQgYmxvY2sgKi9cbiAgfVxuXG4gIGlmICgoc3RvcmVkX2xlbiArIDQgPD0gb3B0X2xlbmIpICYmIChidWYgIT09IC0xKSkge1xuICAgIC8qIDQ6IHR3byB3b3JkcyBmb3IgdGhlIGxlbmd0aHMgKi9cblxuICAgIC8qIFRoZSB0ZXN0IGJ1ZiAhPSBOVUxMIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIExJVF9CVUZTSVpFID4gV1NJWkUuXG4gICAgICogT3RoZXJ3aXNlIHdlIGNhbid0IGhhdmUgcHJvY2Vzc2VkIG1vcmUgdGhhbiBXU0laRSBpbnB1dCBieXRlcyBzaW5jZVxuICAgICAqIHRoZSBsYXN0IGJsb2NrIGZsdXNoLCBiZWNhdXNlIGNvbXByZXNzaW9uIHdvdWxkIGhhdmUgYmVlblxuICAgICAqIHN1Y2Nlc3NmdWwuIElmIExJVF9CVUZTSVpFIDw9IFdTSVpFLCBpdCBpcyBuZXZlciB0b28gbGF0ZSB0b1xuICAgICAqIHRyYW5zZm9ybSBhIGJsb2NrIGludG8gYSBzdG9yZWQgYmxvY2suXG4gICAgICovXG4gICAgX3RyX3N0b3JlZF9ibG9jayhzLCBidWYsIHN0b3JlZF9sZW4sIGxhc3QpO1xuXG4gIH0gZWxzZSBpZiAocy5zdHJhdGVneSA9PT0gWl9GSVhFRCB8fCBzdGF0aWNfbGVuYiA9PT0gb3B0X2xlbmIpIHtcblxuICAgIHNlbmRfYml0cyhzLCAoU1RBVElDX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpO1xuICAgIGNvbXByZXNzX2Jsb2NrKHMsIHN0YXRpY19sdHJlZSwgc3RhdGljX2R0cmVlKTtcblxuICB9IGVsc2Uge1xuICAgIHNlbmRfYml0cyhzLCAoRFlOX1RSRUVTIDw8IDEpICsgKGxhc3QgPyAxIDogMCksIDMpO1xuICAgIHNlbmRfYWxsX3RyZWVzKHMsIHMubF9kZXNjLm1heF9jb2RlICsgMSwgcy5kX2Rlc2MubWF4X2NvZGUgKyAxLCBtYXhfYmxpbmRleCArIDEpO1xuICAgIGNvbXByZXNzX2Jsb2NrKHMsIHMuZHluX2x0cmVlLCBzLmR5bl9kdHJlZSk7XG4gIH1cbiAgLy8gQXNzZXJ0IChzLT5jb21wcmVzc2VkX2xlbiA9PSBzLT5iaXRzX3NlbnQsIFwiYmFkIGNvbXByZXNzZWQgc2l6ZVwiKTtcbiAgLyogVGhlIGFib3ZlIGNoZWNrIGlzIG1hZGUgbW9kIDJeMzIsIGZvciBmaWxlcyBsYXJnZXIgdGhhbiA1MTIgTUJcbiAgICogYW5kIHVMb25nIGltcGxlbWVudGVkIG9uIDMyIGJpdHMuXG4gICAqL1xuICBpbml0X2Jsb2NrKHMpO1xuXG4gIGlmIChsYXN0KSB7XG4gICAgYmlfd2luZHVwKHMpO1xuICB9XG4gIC8vIFRyYWNldigoc3RkZXJyLFwiXFxuY29tcHJsZW4gJWx1KCVsdSkgXCIsIHMtPmNvbXByZXNzZWRfbGVuPj4zLFxuICAvLyAgICAgICBzLT5jb21wcmVzc2VkX2xlbi03Kmxhc3QpKTtcbn1cblxuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKiBTYXZlIHRoZSBtYXRjaCBpbmZvIGFuZCB0YWxseSB0aGUgZnJlcXVlbmN5IGNvdW50cy4gUmV0dXJuIHRydWUgaWZcbiAqIHRoZSBjdXJyZW50IGJsb2NrIG11c3QgYmUgZmx1c2hlZC5cbiAqL1xuZnVuY3Rpb24gX3RyX3RhbGx5KHMsIGRpc3QsIGxjKVxuLy8gICAgZGVmbGF0ZV9zdGF0ZSAqcztcbi8vICAgIHVuc2lnbmVkIGRpc3Q7ICAvKiBkaXN0YW5jZSBvZiBtYXRjaGVkIHN0cmluZyAqL1xuLy8gICAgdW5zaWduZWQgbGM7ICAgIC8qIG1hdGNoIGxlbmd0aC1NSU5fTUFUQ0ggb3IgdW5tYXRjaGVkIGNoYXIgKGlmIGRpc3Q9PTApICovXG57XG4gIC8vdmFyIG91dF9sZW5ndGgsIGluX2xlbmd0aCwgZGNvZGU7XG5cbiAgcy5wZW5kaW5nX2J1ZltzLmRfYnVmICsgcy5sYXN0X2xpdCAqIDJdICAgICA9IChkaXN0ID4+PiA4KSAmIDB4ZmY7XG4gIHMucGVuZGluZ19idWZbcy5kX2J1ZiArIHMubGFzdF9saXQgKiAyICsgMV0gPSBkaXN0ICYgMHhmZjtcblxuICBzLnBlbmRpbmdfYnVmW3MubF9idWYgKyBzLmxhc3RfbGl0XSA9IGxjICYgMHhmZjtcbiAgcy5sYXN0X2xpdCsrO1xuXG4gIGlmIChkaXN0ID09PSAwKSB7XG4gICAgLyogbGMgaXMgdGhlIHVubWF0Y2hlZCBjaGFyICovXG4gICAgcy5keW5fbHRyZWVbbGMgKiAyXS8qLkZyZXEqLysrO1xuICB9IGVsc2Uge1xuICAgIHMubWF0Y2hlcysrO1xuICAgIC8qIEhlcmUsIGxjIGlzIHRoZSBtYXRjaCBsZW5ndGggLSBNSU5fTUFUQ0ggKi9cbiAgICBkaXN0LS07ICAgICAgICAgICAgIC8qIGRpc3QgPSBtYXRjaCBkaXN0YW5jZSAtIDEgKi9cbiAgICAvL0Fzc2VydCgodXNoKWRpc3QgPCAodXNoKU1BWF9ESVNUKHMpICYmXG4gICAgLy8gICAgICAgKHVzaClsYyA8PSAodXNoKShNQVhfTUFUQ0gtTUlOX01BVENIKSAmJlxuICAgIC8vICAgICAgICh1c2gpZF9jb2RlKGRpc3QpIDwgKHVzaClEX0NPREVTLCAgXCJfdHJfdGFsbHk6IGJhZCBtYXRjaFwiKTtcblxuICAgIHMuZHluX2x0cmVlWyhfbGVuZ3RoX2NvZGVbbGNdICsgTElURVJBTFMgKyAxKSAqIDJdLyouRnJlcSovKys7XG4gICAgcy5keW5fZHRyZWVbZF9jb2RlKGRpc3QpICogMl0vKi5GcmVxKi8rKztcbiAgfVxuXG4vLyAoISkgVGhpcyBibG9jayBpcyBkaXNhYmxlZCBpbiB6bGliIGRlZmF1bHRzLFxuLy8gZG9uJ3QgZW5hYmxlIGl0IGZvciBiaW5hcnkgY29tcGF0aWJpbGl0eVxuXG4vLyNpZmRlZiBUUlVOQ0FURV9CTE9DS1xuLy8gIC8qIFRyeSB0byBndWVzcyBpZiBpdCBpcyBwcm9maXRhYmxlIHRvIHN0b3AgdGhlIGN1cnJlbnQgYmxvY2sgaGVyZSAqL1xuLy8gIGlmICgocy5sYXN0X2xpdCAmIDB4MWZmZikgPT09IDAgJiYgcy5sZXZlbCA+IDIpIHtcbi8vICAgIC8qIENvbXB1dGUgYW4gdXBwZXIgYm91bmQgZm9yIHRoZSBjb21wcmVzc2VkIGxlbmd0aCAqL1xuLy8gICAgb3V0X2xlbmd0aCA9IHMubGFzdF9saXQqODtcbi8vICAgIGluX2xlbmd0aCA9IHMuc3Ryc3RhcnQgLSBzLmJsb2NrX3N0YXJ0O1xuLy9cbi8vICAgIGZvciAoZGNvZGUgPSAwOyBkY29kZSA8IERfQ09ERVM7IGRjb2RlKyspIHtcbi8vICAgICAgb3V0X2xlbmd0aCArPSBzLmR5bl9kdHJlZVtkY29kZSoyXS8qLkZyZXEqLyAqICg1ICsgZXh0cmFfZGJpdHNbZGNvZGVdKTtcbi8vICAgIH1cbi8vICAgIG91dF9sZW5ndGggPj4+PSAzO1xuLy8gICAgLy9UcmFjZXYoKHN0ZGVycixcIlxcbmxhc3RfbGl0ICV1LCBpbiAlbGQsIG91dCB+JWxkKCVsZCUlKSBcIixcbi8vICAgIC8vICAgICAgIHMtPmxhc3RfbGl0LCBpbl9sZW5ndGgsIG91dF9sZW5ndGgsXG4vLyAgICAvLyAgICAgICAxMDBMIC0gb3V0X2xlbmd0aCoxMDBML2luX2xlbmd0aCkpO1xuLy8gICAgaWYgKHMubWF0Y2hlcyA8IChzLmxhc3RfbGl0Pj4xKS8qaW50IC8yKi8gJiYgb3V0X2xlbmd0aCA8IChpbl9sZW5ndGg+PjEpLyppbnQgLzIqLykge1xuLy8gICAgICByZXR1cm4gdHJ1ZTtcbi8vICAgIH1cbi8vICB9XG4vLyNlbmRpZlxuXG4gIHJldHVybiAocy5sYXN0X2xpdCA9PT0gcy5saXRfYnVmc2l6ZSAtIDEpO1xuICAvKiBXZSBhdm9pZCBlcXVhbGl0eSB3aXRoIGxpdF9idWZzaXplIGJlY2F1c2Ugb2Ygd3JhcGFyb3VuZCBhdCA2NEtcbiAgICogb24gMTYgYml0IG1hY2hpbmVzIGFuZCBiZWNhdXNlIHN0b3JlZCBibG9ja3MgYXJlIHJlc3RyaWN0ZWQgdG9cbiAgICogNjRLLTEgYnl0ZXMuXG4gICAqL1xufVxuXG5leHBvcnRzLl90cl9pbml0ICA9IF90cl9pbml0O1xuZXhwb3J0cy5fdHJfc3RvcmVkX2Jsb2NrID0gX3RyX3N0b3JlZF9ibG9jaztcbmV4cG9ydHMuX3RyX2ZsdXNoX2Jsb2NrICA9IF90cl9mbHVzaF9ibG9jaztcbmV4cG9ydHMuX3RyX3RhbGx5ID0gX3RyX3RhbGx5O1xuZXhwb3J0cy5fdHJfYWxpZ24gPSBfdHJfYWxpZ247XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIDI6ICAgICAgJ25lZWQgZGljdGlvbmFyeScsICAgICAvKiBaX05FRURfRElDVCAgICAgICAyICAqL1xuICAxOiAgICAgICdzdHJlYW0gZW5kJywgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi9cbiAgMDogICAgICAnJywgICAgICAgICAgICAgICAgICAgIC8qIFpfT0sgICAgICAgICAgICAgIDAgICovXG4gICctMSc6ICAgJ2ZpbGUgZXJyb3InLCAgICAgICAgICAvKiBaX0VSUk5PICAgICAgICAgKC0xKSAqL1xuICAnLTInOiAgICdzdHJlYW0gZXJyb3InLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi9cbiAgJy0zJzogICAnZGF0YSBlcnJvcicsICAgICAgICAgIC8qIFpfREFUQV9FUlJPUiAgICAoLTMpICovXG4gICctNCc6ICAgJ2luc3VmZmljaWVudCBtZW1vcnknLCAvKiBaX01FTV9FUlJPUiAgICAgKC00KSAqL1xuICAnLTUnOiAgICdidWZmZXIgZXJyb3InLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi9cbiAgJy02JzogICAnaW5jb21wYXRpYmxlIHZlcnNpb24nIC8qIFpfVkVSU0lPTl9FUlJPUiAoLTYpICovXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG4vLyAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXJcbi8vIChDKSAyMDE0LTIwMTcgVml0YWx5IFB1enJpbiBhbmQgQW5kcmV5IFR1cGl0c2luXG4vL1xuLy8gVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWRcbi8vIHdhcnJhbnR5LiBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlc1xuLy8gYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gYW55b25lIHRvIHVzZSB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZSxcbi8vIGluY2x1ZGluZyBjb21tZXJjaWFsIGFwcGxpY2F0aW9ucywgYW5kIHRvIGFsdGVyIGl0IGFuZCByZWRpc3RyaWJ1dGUgaXRcbi8vIGZyZWVseSwgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIHJlc3RyaWN0aW9uczpcbi8vXG4vLyAxLiBUaGUgb3JpZ2luIG9mIHRoaXMgc29mdHdhcmUgbXVzdCBub3QgYmUgbWlzcmVwcmVzZW50ZWQ7IHlvdSBtdXN0IG5vdFxuLy8gICBjbGFpbSB0aGF0IHlvdSB3cm90ZSB0aGUgb3JpZ2luYWwgc29mdHdhcmUuIElmIHlvdSB1c2UgdGhpcyBzb2Z0d2FyZVxuLy8gICBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmVcbi8vICAgYXBwcmVjaWF0ZWQgYnV0IGlzIG5vdCByZXF1aXJlZC5cbi8vIDIuIEFsdGVyZWQgc291cmNlIHZlcnNpb25zIG11c3QgYmUgcGxhaW5seSBtYXJrZWQgYXMgc3VjaCwgYW5kIG11c3Qgbm90IGJlXG4vLyAgIG1pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS5cbi8vIDMuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IHNvdXJjZSBkaXN0cmlidXRpb24uXG5cbnZhciB1dGlscyAgICAgICAgID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG52YXIgYWRsZXIzMiAgICAgICA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xudmFyIGNyYzMyICAgICAgICAgPSByZXF1aXJlKCcuL2NyYzMyJyk7XG52YXIgaW5mbGF0ZV9mYXN0ICA9IHJlcXVpcmUoJy4vaW5mZmFzdCcpO1xudmFyIGluZmxhdGVfdGFibGUgPSByZXF1aXJlKCcuL2luZnRyZWVzJyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG4vKiBQdWJsaWMgY29uc3RhbnRzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuXG4vKiBBbGxvd2VkIGZsdXNoIHZhbHVlczsgc2VlIGRlZmxhdGUoKSBhbmQgaW5mbGF0ZSgpIGJlbG93IGZvciBkZXRhaWxzICovXG4vL3ZhciBaX05PX0ZMVVNIICAgICAgPSAwO1xuLy92YXIgWl9QQVJUSUFMX0ZMVVNIID0gMTtcbi8vdmFyIFpfU1lOQ19GTFVTSCAgICA9IDI7XG4vL3ZhciBaX0ZVTExfRkxVU0ggICAgPSAzO1xudmFyIFpfRklOSVNIICAgICAgICA9IDQ7XG52YXIgWl9CTE9DSyAgICAgICAgID0gNTtcbnZhciBaX1RSRUVTICAgICAgICAgPSA2O1xuXG5cbi8qIFJldHVybiBjb2RlcyBmb3IgdGhlIGNvbXByZXNzaW9uL2RlY29tcHJlc3Npb24gZnVuY3Rpb25zLiBOZWdhdGl2ZSB2YWx1ZXNcbiAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAqL1xudmFyIFpfT0sgICAgICAgICAgICA9IDA7XG52YXIgWl9TVFJFQU1fRU5EICAgID0gMTtcbnZhciBaX05FRURfRElDVCAgICAgPSAyO1xuLy92YXIgWl9FUlJOTyAgICAgICAgID0gLTE7XG52YXIgWl9TVFJFQU1fRVJST1IgID0gLTI7XG52YXIgWl9EQVRBX0VSUk9SICAgID0gLTM7XG52YXIgWl9NRU1fRVJST1IgICAgID0gLTQ7XG52YXIgWl9CVUZfRVJST1IgICAgID0gLTU7XG4vL3ZhciBaX1ZFUlNJT05fRVJST1IgPSAtNjtcblxuLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICovXG52YXIgWl9ERUZMQVRFRCAgPSA4O1xuXG5cbi8qIFNUQVRFUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cbnZhciAgICBIRUFEID0gMTsgICAgICAgLyogaTogd2FpdGluZyBmb3IgbWFnaWMgaGVhZGVyICovXG52YXIgICAgRkxBR1MgPSAyOyAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1ldGhvZCBhbmQgZmxhZ3MgKGd6aXApICovXG52YXIgICAgVElNRSA9IDM7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqL1xudmFyICAgIE9TID0gNDsgICAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBmbGFncyBhbmQgb3BlcmF0aW5nIHN5c3RlbSAoZ3ppcCkgKi9cbnZhciAgICBFWExFTiA9IDU7ICAgICAgLyogaTogd2FpdGluZyBmb3IgZXh0cmEgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIEVYVFJBID0gNjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBleHRyYSBieXRlcyAoZ3ppcCkgKi9cbnZhciAgICBOQU1FID0gNzsgICAgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGZpbGUgbmFtZSAoZ3ppcCkgKi9cbnZhciAgICBDT01NRU5UID0gODsgICAgLyogaTogd2FpdGluZyBmb3IgZW5kIG9mIGNvbW1lbnQgKGd6aXApICovXG52YXIgICAgSENSQyA9IDk7ICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGhlYWRlciBjcmMgKGd6aXApICovXG52YXIgICAgRElDVElEID0gMTA7ICAgIC8qIGk6IHdhaXRpbmcgZm9yIGRpY3Rpb25hcnkgY2hlY2sgdmFsdWUgKi9cbnZhciAgICBESUNUID0gMTE7ICAgICAgLyogd2FpdGluZyBmb3IgaW5mbGF0ZVNldERpY3Rpb25hcnkoKSBjYWxsICovXG52YXIgICAgICAgIFRZUEUgPSAxMjsgICAgICAvKiBpOiB3YWl0aW5nIGZvciB0eXBlIGJpdHMsIGluY2x1ZGluZyBsYXN0LWZsYWcgYml0ICovXG52YXIgICAgICAgIFRZUEVETyA9IDEzOyAgICAvKiBpOiBzYW1lLCBidXQgc2tpcCBjaGVjayB0byBleGl0IGluZmxhdGUgb24gbmV3IGJsb2NrICovXG52YXIgICAgICAgIFNUT1JFRCA9IDE0OyAgICAvKiBpOiB3YWl0aW5nIGZvciBzdG9yZWQgc2l6ZSAobGVuZ3RoIGFuZCBjb21wbGVtZW50KSAqL1xudmFyICAgICAgICBDT1BZXyA9IDE1OyAgICAgLyogaS9vOiBzYW1lIGFzIENPUFkgYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgQ09QWSA9IDE2OyAgICAgIC8qIGkvbzogd2FpdGluZyBmb3IgaW5wdXQgb3Igb3V0cHV0IHRvIGNvcHkgc3RvcmVkIGJsb2NrICovXG52YXIgICAgICAgIFRBQkxFID0gMTc7ICAgICAvKiBpOiB3YWl0aW5nIGZvciBkeW5hbWljIGJsb2NrIHRhYmxlIGxlbmd0aHMgKi9cbnZhciAgICAgICAgTEVOTEVOUyA9IDE4OyAgIC8qIGk6IHdhaXRpbmcgZm9yIGNvZGUgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xudmFyICAgICAgICBDT0RFTEVOUyA9IDE5OyAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoL2xpdCBhbmQgZGlzdGFuY2UgY29kZSBsZW5ndGhzICovXG52YXIgICAgICAgICAgICBMRU5fID0gMjA7ICAgICAgLyogaTogc2FtZSBhcyBMRU4gYmVsb3csIGJ1dCBvbmx5IGZpcnN0IHRpbWUgaW4gKi9cbnZhciAgICAgICAgICAgIExFTiA9IDIxOyAgICAgICAvKiBpOiB3YWl0aW5nIGZvciBsZW5ndGgvbGl0L2VvYiBjb2RlICovXG52YXIgICAgICAgICAgICBMRU5FWFQgPSAyMjsgICAgLyogaTogd2FpdGluZyBmb3IgbGVuZ3RoIGV4dHJhIGJpdHMgKi9cbnZhciAgICAgICAgICAgIERJU1QgPSAyMzsgICAgICAvKiBpOiB3YWl0aW5nIGZvciBkaXN0YW5jZSBjb2RlICovXG52YXIgICAgICAgICAgICBESVNURVhUID0gMjQ7ICAgLyogaTogd2FpdGluZyBmb3IgZGlzdGFuY2UgZXh0cmEgYml0cyAqL1xudmFyICAgICAgICAgICAgTUFUQ0ggPSAyNTsgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byBjb3B5IHN0cmluZyAqL1xudmFyICAgICAgICAgICAgTElUID0gMjY7ICAgICAgIC8qIG86IHdhaXRpbmcgZm9yIG91dHB1dCBzcGFjZSB0byB3cml0ZSBsaXRlcmFsICovXG52YXIgICAgQ0hFQ0sgPSAyNzsgICAgIC8qIGk6IHdhaXRpbmcgZm9yIDMyLWJpdCBjaGVjayB2YWx1ZSAqL1xudmFyICAgIExFTkdUSCA9IDI4OyAgICAvKiBpOiB3YWl0aW5nIGZvciAzMi1iaXQgbGVuZ3RoIChnemlwKSAqL1xudmFyICAgIERPTkUgPSAyOTsgICAgICAvKiBmaW5pc2hlZCBjaGVjaywgZG9uZSAtLSByZW1haW4gaGVyZSB1bnRpbCByZXNldCAqL1xudmFyICAgIEJBRCA9IDMwOyAgICAgICAvKiBnb3QgYSBkYXRhIGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgTUVNID0gMzE7ICAgICAgIC8qIGdvdCBhbiBpbmZsYXRlKCkgbWVtb3J5IGVycm9yIC0tIHJlbWFpbiBoZXJlIHVudGlsIHJlc2V0ICovXG52YXIgICAgU1lOQyA9IDMyOyAgICAgIC8qIGxvb2tpbmcgZm9yIHN5bmNocm9uaXphdGlvbiBieXRlcyB0byByZXN0YXJ0IGluZmxhdGUoKSAqL1xuXG4vKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG5cblxudmFyIEVOT1VHSF9MRU5TID0gODUyO1xudmFyIEVOT1VHSF9ESVNUUyA9IDU5Mjtcbi8vdmFyIEVOT1VHSCA9ICAoRU5PVUdIX0xFTlMrRU5PVUdIX0RJU1RTKTtcblxudmFyIE1BWF9XQklUUyA9IDE1O1xuLyogMzJLIExaNzcgd2luZG93ICovXG52YXIgREVGX1dCSVRTID0gTUFYX1dCSVRTO1xuXG5cbmZ1bmN0aW9uIHpzd2FwMzIocSkge1xuICByZXR1cm4gICgoKHEgPj4+IDI0KSAmIDB4ZmYpICtcbiAgICAgICAgICAoKHEgPj4+IDgpICYgMHhmZjAwKSArXG4gICAgICAgICAgKChxICYgMHhmZjAwKSA8PCA4KSArXG4gICAgICAgICAgKChxICYgMHhmZikgPDwgMjQpKTtcbn1cblxuXG5mdW5jdGlvbiBJbmZsYXRlU3RhdGUoKSB7XG4gIHRoaXMubW9kZSA9IDA7ICAgICAgICAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZSBtb2RlICovXG4gIHRoaXMubGFzdCA9IGZhbHNlOyAgICAgICAgICAvKiB0cnVlIGlmIHByb2Nlc3NpbmcgbGFzdCBibG9jayAqL1xuICB0aGlzLndyYXAgPSAwOyAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCAqL1xuICB0aGlzLmhhdmVkaWN0ID0gZmFsc2U7ICAgICAgLyogdHJ1ZSBpZiBkaWN0aW9uYXJ5IHByb3ZpZGVkICovXG4gIHRoaXMuZmxhZ3MgPSAwOyAgICAgICAgICAgICAvKiBnemlwIGhlYWRlciBtZXRob2QgYW5kIGZsYWdzICgwIGlmIHpsaWIpICovXG4gIHRoaXMuZG1heCA9IDA7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqL1xuICB0aGlzLmNoZWNrID0gMDsgICAgICAgICAgICAgLyogcHJvdGVjdGVkIGNvcHkgb2YgY2hlY2sgdmFsdWUgKi9cbiAgdGhpcy50b3RhbCA9IDA7ICAgICAgICAgICAgIC8qIHByb3RlY3RlZCBjb3B5IG9mIG91dHB1dCBjb3VudCAqL1xuICAvLyBUT0RPOiBtYXkgYmUge31cbiAgdGhpcy5oZWFkID0gbnVsbDsgICAgICAgICAgIC8qIHdoZXJlIHRvIHNhdmUgZ3ppcCBoZWFkZXIgaW5mb3JtYXRpb24gKi9cblxuICAvKiBzbGlkaW5nIHdpbmRvdyAqL1xuICB0aGlzLndiaXRzID0gMDsgICAgICAgICAgICAgLyogbG9nIGJhc2UgMiBvZiByZXF1ZXN0ZWQgd2luZG93IHNpemUgKi9cbiAgdGhpcy53c2l6ZSA9IDA7ICAgICAgICAgICAgIC8qIHdpbmRvdyBzaXplIG9yIHplcm8gaWYgbm90IHVzaW5nIHdpbmRvdyAqL1xuICB0aGlzLndoYXZlID0gMDsgICAgICAgICAgICAgLyogdmFsaWQgYnl0ZXMgaW4gdGhlIHdpbmRvdyAqL1xuICB0aGlzLnduZXh0ID0gMDsgICAgICAgICAgICAgLyogd2luZG93IHdyaXRlIGluZGV4ICovXG4gIHRoaXMud2luZG93ID0gbnVsbDsgICAgICAgICAvKiBhbGxvY2F0ZWQgc2xpZGluZyB3aW5kb3csIGlmIG5lZWRlZCAqL1xuXG4gIC8qIGJpdCBhY2N1bXVsYXRvciAqL1xuICB0aGlzLmhvbGQgPSAwOyAgICAgICAgICAgICAgLyogaW5wdXQgYml0IGFjY3VtdWxhdG9yICovXG4gIHRoaXMuYml0cyA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBpbiBcImluXCIgKi9cblxuICAvKiBmb3Igc3RyaW5nIGFuZCBzdG9yZWQgYmxvY2sgY29weWluZyAqL1xuICB0aGlzLmxlbmd0aCA9IDA7ICAgICAgICAgICAgLyogbGl0ZXJhbCBvciBsZW5ndGggb2YgZGF0YSB0byBjb3B5ICovXG4gIHRoaXMub2Zmc2V0ID0gMDsgICAgICAgICAgICAvKiBkaXN0YW5jZSBiYWNrIHRvIGNvcHkgc3RyaW5nIGZyb20gKi9cblxuICAvKiBmb3IgdGFibGUgYW5kIGNvZGUgZGVjb2RpbmcgKi9cbiAgdGhpcy5leHRyYSA9IDA7ICAgICAgICAgICAgIC8qIGV4dHJhIGJpdHMgbmVlZGVkICovXG5cbiAgLyogZml4ZWQgYW5kIGR5bmFtaWMgY29kZSB0YWJsZXMgKi9cbiAgdGhpcy5sZW5jb2RlID0gbnVsbDsgICAgICAgICAgLyogc3RhcnRpbmcgdGFibGUgZm9yIGxlbmd0aC9saXRlcmFsIGNvZGVzICovXG4gIHRoaXMuZGlzdGNvZGUgPSBudWxsOyAgICAgICAgIC8qIHN0YXJ0aW5nIHRhYmxlIGZvciBkaXN0YW5jZSBjb2RlcyAqL1xuICB0aGlzLmxlbmJpdHMgPSAwOyAgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgbGVuY29kZSAqL1xuICB0aGlzLmRpc3RiaXRzID0gMDsgICAgICAgICAgLyogaW5kZXggYml0cyBmb3IgZGlzdGNvZGUgKi9cblxuICAvKiBkeW5hbWljIHRhYmxlIGJ1aWxkaW5nICovXG4gIHRoaXMubmNvZGUgPSAwOyAgICAgICAgICAgICAvKiBudW1iZXIgb2YgY29kZSBsZW5ndGggY29kZSBsZW5ndGhzICovXG4gIHRoaXMubmxlbiA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgbGVuZ3RoIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLm5kaXN0ID0gMDsgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGRpc3RhbmNlIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLmhhdmUgPSAwOyAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGUgbGVuZ3RocyBpbiBsZW5zW10gKi9cbiAgdGhpcy5uZXh0ID0gbnVsbDsgICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIGNvZGVzW10gKi9cblxuICB0aGlzLmxlbnMgPSBuZXcgdXRpbHMuQnVmMTYoMzIwKTsgLyogdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIGNvZGUgbGVuZ3RocyAqL1xuICB0aGlzLndvcmsgPSBuZXcgdXRpbHMuQnVmMTYoMjg4KTsgLyogd29yayBhcmVhIGZvciBjb2RlIHRhYmxlIGJ1aWxkaW5nICovXG5cbiAgLypcbiAgIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBwb2ludGVycyBpbiBqcywgd2UgdXNlIGxlbmNvZGUgYW5kIGRpc3Rjb2RlIGRpcmVjdGx5XG4gICBhcyBidWZmZXJzIHNvIHdlIGRvbid0IG5lZWQgY29kZXNcbiAgKi9cbiAgLy90aGlzLmNvZGVzID0gbmV3IHV0aWxzLkJ1ZjMyKEVOT1VHSCk7ICAgICAgIC8qIHNwYWNlIGZvciBjb2RlIHRhYmxlcyAqL1xuICB0aGlzLmxlbmR5biA9IG51bGw7ICAgICAgICAgICAgICAvKiBkeW5hbWljIHRhYmxlIGZvciBsZW5ndGgvbGl0ZXJhbCBjb2RlcyAoSlMgc3BlY2lmaWMpICovXG4gIHRoaXMuZGlzdGR5biA9IG51bGw7ICAgICAgICAgICAgIC8qIGR5bmFtaWMgdGFibGUgZm9yIGRpc3RhbmNlIGNvZGVzIChKUyBzcGVjaWZpYykgKi9cbiAgdGhpcy5zYW5lID0gMDsgICAgICAgICAgICAgICAgICAgLyogaWYgZmFsc2UsIGFsbG93IGludmFsaWQgZGlzdGFuY2UgdG9vIGZhciAqL1xuICB0aGlzLmJhY2sgPSAwOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGJhY2sgb2YgbGFzdCB1bnByb2Nlc3NlZCBsZW5ndGgvbGl0ICovXG4gIHRoaXMud2FzID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgbGVuZ3RoIG9mIG1hdGNoICovXG59XG5cbmZ1bmN0aW9uIGluZmxhdGVSZXNldEtlZXAoc3RybSkge1xuICB2YXIgc3RhdGU7XG5cbiAgaWYgKCFzdHJtIHx8ICFzdHJtLnN0YXRlKSB7IHJldHVybiBaX1NUUkVBTV9FUlJPUjsgfVxuICBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIHN0cm0udG90YWxfaW4gPSBzdHJtLnRvdGFsX291dCA9IHN0YXRlLnRvdGFsID0gMDtcbiAgc3RybS5tc2cgPSAnJzsgLypaX05VTEwqL1xuICBpZiAoc3RhdGUud3JhcCkgeyAgICAgICAvKiB0byBzdXBwb3J0IGlsbC1jb25jZWl2ZWQgSmF2YSB0ZXN0IHN1aXRlICovXG4gICAgc3RybS5hZGxlciA9IHN0YXRlLndyYXAgJiAxO1xuICB9XG4gIHN0YXRlLm1vZGUgPSBIRUFEO1xuICBzdGF0ZS5sYXN0ID0gMDtcbiAgc3RhdGUuaGF2ZWRpY3QgPSAwO1xuICBzdGF0ZS5kbWF4ID0gMzI3Njg7XG4gIHN0YXRlLmhlYWQgPSBudWxsLypaX05VTEwqLztcbiAgc3RhdGUuaG9sZCA9IDA7XG4gIHN0YXRlLmJpdHMgPSAwO1xuICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLm5leHQgPSBzdGF0ZS5jb2RlcztcbiAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfTEVOUyk7XG4gIHN0YXRlLmRpc3Rjb2RlID0gc3RhdGUuZGlzdGR5biA9IG5ldyB1dGlscy5CdWYzMihFTk9VR0hfRElTVFMpO1xuXG4gIHN0YXRlLnNhbmUgPSAxO1xuICBzdGF0ZS5iYWNrID0gLTE7XG4gIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogcmVzZXRcXG5cIikpO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZVJlc2V0KHN0cm0pIHtcbiAgdmFyIHN0YXRlO1xuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICBzdGF0ZS53c2l6ZSA9IDA7XG4gIHN0YXRlLndoYXZlID0gMDtcbiAgc3RhdGUud25leHQgPSAwO1xuICByZXR1cm4gaW5mbGF0ZVJlc2V0S2VlcChzdHJtKTtcblxufVxuXG5mdW5jdGlvbiBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpIHtcbiAgdmFyIHdyYXA7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBnZXQgdGhlIHN0YXRlICovXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSkgeyByZXR1cm4gWl9TVFJFQU1fRVJST1I7IH1cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGV4dHJhY3Qgd3JhcCByZXF1ZXN0IGZyb20gd2luZG93Qml0cyBwYXJhbWV0ZXIgKi9cbiAgaWYgKHdpbmRvd0JpdHMgPCAwKSB7XG4gICAgd3JhcCA9IDA7XG4gICAgd2luZG93Qml0cyA9IC13aW5kb3dCaXRzO1xuICB9XG4gIGVsc2Uge1xuICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDE7XG4gICAgaWYgKHdpbmRvd0JpdHMgPCA0OCkge1xuICAgICAgd2luZG93Qml0cyAmPSAxNTtcbiAgICB9XG4gIH1cblxuICAvKiBzZXQgbnVtYmVyIG9mIHdpbmRvdyBiaXRzLCBmcmVlIHdpbmRvdyBpZiBkaWZmZXJlbnQgKi9cbiAgaWYgKHdpbmRvd0JpdHMgJiYgKHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSkpIHtcbiAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7XG4gIH1cbiAgaWYgKHN0YXRlLndpbmRvdyAhPT0gbnVsbCAmJiBzdGF0ZS53Yml0cyAhPT0gd2luZG93Qml0cykge1xuICAgIHN0YXRlLndpbmRvdyA9IG51bGw7XG4gIH1cblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJlc2V0IHRoZSByZXN0IG9mIGl0ICovXG4gIHN0YXRlLndyYXAgPSB3cmFwO1xuICBzdGF0ZS53Yml0cyA9IHdpbmRvd0JpdHM7XG4gIHJldHVybiBpbmZsYXRlUmVzZXQoc3RybSk7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSB7XG4gIHZhciByZXQ7XG4gIHZhciBzdGF0ZTtcblxuICBpZiAoIXN0cm0pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIC8vc3RybS5tc2cgPSBaX05VTEw7ICAgICAgICAgICAgICAgICAvKiBpbiBjYXNlIHdlIHJldHVybiBhbiBlcnJvciAqL1xuXG4gIHN0YXRlID0gbmV3IEluZmxhdGVTdGF0ZSgpO1xuXG4gIC8vaWYgKHN0YXRlID09PSBaX05VTEwpIHJldHVybiBaX01FTV9FUlJPUjtcbiAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiBhbGxvY2F0ZWRcXG5cIikpO1xuICBzdHJtLnN0YXRlID0gc3RhdGU7XG4gIHN0YXRlLndpbmRvdyA9IG51bGwvKlpfTlVMTCovO1xuICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpO1xuICBpZiAocmV0ICE9PSBaX09LKSB7XG4gICAgc3RybS5zdGF0ZSA9IG51bGwvKlpfTlVMTCovO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVJbml0KHN0cm0pIHtcbiAgcmV0dXJuIGluZmxhdGVJbml0MihzdHJtLCBERUZfV0JJVFMpO1xufVxuXG5cbi8qXG4gUmV0dXJuIHN0YXRlIHdpdGggbGVuZ3RoIGFuZCBkaXN0YW5jZSBkZWNvZGluZyB0YWJsZXMgYW5kIGluZGV4IHNpemVzIHNldCB0b1xuIGZpeGVkIGNvZGUgZGVjb2RpbmcuICBOb3JtYWxseSB0aGlzIHJldHVybnMgZml4ZWQgdGFibGVzIGZyb20gaW5mZml4ZWQuaC5cbiBJZiBCVUlMREZJWEVEIGlzIGRlZmluZWQsIHRoZW4gaW5zdGVhZCB0aGlzIHJvdXRpbmUgYnVpbGRzIHRoZSB0YWJsZXMgdGhlXG4gZmlyc3QgdGltZSBpdCdzIGNhbGxlZCwgYW5kIHJldHVybnMgdGhvc2UgdGFibGVzIHRoZSBmaXJzdCB0aW1lIGFuZFxuIHRoZXJlYWZ0ZXIuICBUaGlzIHJlZHVjZXMgdGhlIHNpemUgb2YgdGhlIGNvZGUgYnkgYWJvdXQgMksgYnl0ZXMsIGluXG4gZXhjaGFuZ2UgZm9yIGEgbGl0dGxlIGV4ZWN1dGlvbiB0aW1lLiAgSG93ZXZlciwgQlVJTERGSVhFRCBzaG91bGQgbm90IGJlXG4gdXNlZCBmb3IgdGhyZWFkZWQgYXBwbGljYXRpb25zLCBzaW5jZSB0aGUgcmV3cml0aW5nIG9mIHRoZSB0YWJsZXMgYW5kIHZpcmdpblxuIG1heSBub3QgYmUgdGhyZWFkLXNhZmUuXG4gKi9cbnZhciB2aXJnaW4gPSB0cnVlO1xuXG52YXIgbGVuZml4LCBkaXN0Zml4OyAvLyBXZSBoYXZlIG5vIHBvaW50ZXJzIGluIEpTLCBzbyBrZWVwIHRhYmxlcyBzZXBhcmF0ZVxuXG5mdW5jdGlvbiBmaXhlZHRhYmxlcyhzdGF0ZSkge1xuICAvKiBidWlsZCBmaXhlZCBodWZmbWFuIHRhYmxlcyBpZiBmaXJzdCBjYWxsIChtYXkgbm90IGJlIHRocmVhZCBzYWZlKSAqL1xuICBpZiAodmlyZ2luKSB7XG4gICAgdmFyIHN5bTtcblxuICAgIGxlbmZpeCA9IG5ldyB1dGlscy5CdWYzMig1MTIpO1xuICAgIGRpc3RmaXggPSBuZXcgdXRpbHMuQnVmMzIoMzIpO1xuXG4gICAgLyogbGl0ZXJhbC9sZW5ndGggdGFibGUgKi9cbiAgICBzeW0gPSAwO1xuICAgIHdoaWxlIChzeW0gPCAxNDQpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG4gICAgd2hpbGUgKHN5bSA8IDI1NikgeyBzdGF0ZS5sZW5zW3N5bSsrXSA9IDk7IH1cbiAgICB3aGlsZSAoc3ltIDwgMjgwKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNzsgfVxuICAgIHdoaWxlIChzeW0gPCAyODgpIHsgc3RhdGUubGVuc1tzeW0rK10gPSA4OyB9XG5cbiAgICBpbmZsYXRlX3RhYmxlKExFTlMsICBzdGF0ZS5sZW5zLCAwLCAyODgsIGxlbmZpeCwgICAwLCBzdGF0ZS53b3JrLCB7IGJpdHM6IDkgfSk7XG5cbiAgICAvKiBkaXN0YW5jZSB0YWJsZSAqL1xuICAgIHN5bSA9IDA7XG4gICAgd2hpbGUgKHN5bSA8IDMyKSB7IHN0YXRlLmxlbnNbc3ltKytdID0gNTsgfVxuXG4gICAgaW5mbGF0ZV90YWJsZShESVNUUywgc3RhdGUubGVucywgMCwgMzIsICAgZGlzdGZpeCwgMCwgc3RhdGUud29yaywgeyBiaXRzOiA1IH0pO1xuXG4gICAgLyogZG8gdGhpcyBqdXN0IG9uY2UgKi9cbiAgICB2aXJnaW4gPSBmYWxzZTtcbiAgfVxuXG4gIHN0YXRlLmxlbmNvZGUgPSBsZW5maXg7XG4gIHN0YXRlLmxlbmJpdHMgPSA5O1xuICBzdGF0ZS5kaXN0Y29kZSA9IGRpc3RmaXg7XG4gIHN0YXRlLmRpc3RiaXRzID0gNTtcbn1cblxuXG4vKlxuIFVwZGF0ZSB0aGUgd2luZG93IHdpdGggdGhlIGxhc3Qgd3NpemUgKG5vcm1hbGx5IDMySykgYnl0ZXMgd3JpdHRlbiBiZWZvcmVcbiByZXR1cm5pbmcuICBJZiB3aW5kb3cgZG9lcyBub3QgZXhpc3QgeWV0LCBjcmVhdGUgaXQuICBUaGlzIGlzIG9ubHkgY2FsbGVkXG4gd2hlbiBhIHdpbmRvdyBpcyBhbHJlYWR5IGluIHVzZSwgb3Igd2hlbiBvdXRwdXQgaGFzIGJlZW4gd3JpdHRlbiBkdXJpbmcgdGhpc1xuIGluZmxhdGUgY2FsbCwgYnV0IHRoZSBlbmQgb2YgdGhlIGRlZmxhdGUgc3RyZWFtIGhhcyBub3QgYmVlbiByZWFjaGVkIHlldC5cbiBJdCBpcyBhbHNvIGNhbGxlZCB0byBjcmVhdGUgYSB3aW5kb3cgZm9yIGRpY3Rpb25hcnkgZGF0YSB3aGVuIGEgZGljdGlvbmFyeVxuIGlzIGxvYWRlZC5cblxuIFByb3ZpZGluZyBvdXRwdXQgYnVmZmVycyBsYXJnZXIgdGhhbiAzMksgdG8gaW5mbGF0ZSgpIHNob3VsZCBwcm92aWRlIGEgc3BlZWRcbiBhZHZhbnRhZ2UsIHNpbmNlIG9ubHkgdGhlIGxhc3QgMzJLIG9mIG91dHB1dCBpcyBjb3BpZWQgdG8gdGhlIHNsaWRpbmcgd2luZG93XG4gdXBvbiByZXR1cm4gZnJvbSBpbmZsYXRlKCksIGFuZCBzaW5jZSBhbGwgZGlzdGFuY2VzIGFmdGVyIHRoZSBmaXJzdCAzMksgb2ZcbiBvdXRwdXQgd2lsbCBmYWxsIGluIHRoZSBvdXRwdXQgZGF0YSwgbWFraW5nIG1hdGNoIGNvcGllcyBzaW1wbGVyIGFuZCBmYXN0ZXIuXG4gVGhlIGFkdmFudGFnZSBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBzaXplIG9mIHRoZSBwcm9jZXNzb3IncyBkYXRhIGNhY2hlcy5cbiAqL1xuZnVuY3Rpb24gdXBkYXRld2luZG93KHN0cm0sIHNyYywgZW5kLCBjb3B5KSB7XG4gIHZhciBkaXN0O1xuICB2YXIgc3RhdGUgPSBzdHJtLnN0YXRlO1xuXG4gIC8qIGlmIGl0IGhhc24ndCBiZWVuIGRvbmUgYWxyZWFkeSwgYWxsb2NhdGUgc3BhY2UgZm9yIHRoZSB3aW5kb3cgKi9cbiAgaWYgKHN0YXRlLndpbmRvdyA9PT0gbnVsbCkge1xuICAgIHN0YXRlLndzaXplID0gMSA8PCBzdGF0ZS53Yml0cztcbiAgICBzdGF0ZS53bmV4dCA9IDA7XG4gICAgc3RhdGUud2hhdmUgPSAwO1xuXG4gICAgc3RhdGUud2luZG93ID0gbmV3IHV0aWxzLkJ1Zjgoc3RhdGUud3NpemUpO1xuICB9XG5cbiAgLyogY29weSBzdGF0ZS0+d3NpemUgb3IgbGVzcyBvdXRwdXQgYnl0ZXMgaW50byB0aGUgY2lyY3VsYXIgd2luZG93ICovXG4gIGlmIChjb3B5ID49IHN0YXRlLndzaXplKSB7XG4gICAgdXRpbHMuYXJyYXlTZXQoc3RhdGUud2luZG93LCBzcmMsIGVuZCAtIHN0YXRlLndzaXplLCBzdGF0ZS53c2l6ZSwgMCk7XG4gICAgc3RhdGUud25leHQgPSAwO1xuICAgIHN0YXRlLndoYXZlID0gc3RhdGUud3NpemU7XG4gIH1cbiAgZWxzZSB7XG4gICAgZGlzdCA9IHN0YXRlLndzaXplIC0gc3RhdGUud25leHQ7XG4gICAgaWYgKGRpc3QgPiBjb3B5KSB7XG4gICAgICBkaXN0ID0gY29weTtcbiAgICB9XG4gICAgLy96bWVtY3B5KHN0YXRlLT53aW5kb3cgKyBzdGF0ZS0+d25leHQsIGVuZCAtIGNvcHksIGRpc3QpO1xuICAgIHV0aWxzLmFycmF5U2V0KHN0YXRlLndpbmRvdywgc3JjLCBlbmQgLSBjb3B5LCBkaXN0LCBzdGF0ZS53bmV4dCk7XG4gICAgY29weSAtPSBkaXN0O1xuICAgIGlmIChjb3B5KSB7XG4gICAgICAvL3ptZW1jcHkoc3RhdGUtPndpbmRvdywgZW5kIC0gY29weSwgY29weSk7XG4gICAgICB1dGlscy5hcnJheVNldChzdGF0ZS53aW5kb3csIHNyYywgZW5kIC0gY29weSwgY29weSwgMCk7XG4gICAgICBzdGF0ZS53bmV4dCA9IGNvcHk7XG4gICAgICBzdGF0ZS53aGF2ZSA9IHN0YXRlLndzaXplO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHN0YXRlLnduZXh0ICs9IGRpc3Q7XG4gICAgICBpZiAoc3RhdGUud25leHQgPT09IHN0YXRlLndzaXplKSB7IHN0YXRlLnduZXh0ID0gMDsgfVxuICAgICAgaWYgKHN0YXRlLndoYXZlIDwgc3RhdGUud3NpemUpIHsgc3RhdGUud2hhdmUgKz0gZGlzdDsgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZShzdHJtLCBmbHVzaCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBpbnB1dCwgb3V0cHV0OyAgICAgICAgICAvLyBpbnB1dC9vdXRwdXQgYnVmZmVyc1xuICB2YXIgbmV4dDsgICAgICAgICAgICAgICAgICAgLyogbmV4dCBpbnB1dCBJTkRFWCAqL1xuICB2YXIgcHV0OyAgICAgICAgICAgICAgICAgICAgLyogbmV4dCBvdXRwdXQgSU5ERVggKi9cbiAgdmFyIGhhdmUsIGxlZnQ7ICAgICAgICAgICAgIC8qIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0ICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBiaXQgYnVmZmVyICovXG4gIHZhciBiaXRzOyAgICAgICAgICAgICAgICAgICAvKiBiaXRzIGluIGJpdCBidWZmZXIgKi9cbiAgdmFyIF9pbiwgX291dDsgICAgICAgICAgICAgIC8qIHNhdmUgc3RhcnRpbmcgYXZhaWxhYmxlIGlucHV0IGFuZCBvdXRwdXQgKi9cbiAgdmFyIGNvcHk7ICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBzdG9yZWQgb3IgbWF0Y2ggYnl0ZXMgdG8gY29weSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBieXRlcyBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcbiAgdmFyIGhlcmUgPSAwOyAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgZGVjb2RpbmcgdGFibGUgZW50cnkgKi9cbiAgdmFyIGhlcmVfYml0cywgaGVyZV9vcCwgaGVyZV92YWw7IC8vIHBha2VkIFwiaGVyZVwiIGRlbm9ybWFsaXplZCAoSlMgc3BlY2lmaWMpXG4gIC8vdmFyIGxhc3Q7ICAgICAgICAgICAgICAgICAgIC8qIHBhcmVudCB0YWJsZSBlbnRyeSAqL1xuICB2YXIgbGFzdF9iaXRzLCBsYXN0X29wLCBsYXN0X3ZhbDsgLy8gcGFrZWQgXCJsYXN0XCIgZGVub3JtYWxpemVkIChKUyBzcGVjaWZpYylcbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCB0byBjb3B5IGZvciByZXBlYXRzLCBiaXRzIHRvIGRyb3AgKi9cbiAgdmFyIHJldDsgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiBjb2RlICovXG4gIHZhciBoYnVmID0gbmV3IHV0aWxzLkJ1ZjgoNCk7ICAgIC8qIGJ1ZmZlciBmb3IgZ3ppcCBoZWFkZXIgY3JjIGNhbGN1bGF0aW9uICovXG4gIHZhciBvcHRzO1xuXG4gIHZhciBuOyAvLyB0ZW1wb3JhcnkgdmFyIGZvciBORUVEX0JJVFNcblxuICB2YXIgb3JkZXIgPSAvKiBwZXJtdXRhdGlvbiBvZiBjb2RlIGxlbmd0aHMgKi9cbiAgICBbIDE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTUgXTtcblxuXG4gIGlmICghc3RybSB8fCAhc3RybS5zdGF0ZSB8fCAhc3RybS5vdXRwdXQgfHxcbiAgICAgICghc3RybS5pbnB1dCAmJiBzdHJtLmF2YWlsX2luICE9PSAwKSkge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKHN0YXRlLm1vZGUgPT09IFRZUEUpIHsgc3RhdGUubW9kZSA9IFRZUEVETzsgfSAgICAvKiBza2lwIGNoZWNrICovXG5cblxuICAvLy0tLSBMT0FEKCkgLS0tXG4gIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gIG91dHB1dCA9IHN0cm0ub3V0cHV0O1xuICBsZWZ0ID0gc3RybS5hdmFpbF9vdXQ7XG4gIG5leHQgPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgaGF2ZSA9IHN0cm0uYXZhaWxfaW47XG4gIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICBiaXRzID0gc3RhdGUuYml0cztcbiAgLy8tLS1cblxuICBfaW4gPSBoYXZlO1xuICBfb3V0ID0gbGVmdDtcbiAgcmV0ID0gWl9PSztcblxuICBpbmZfbGVhdmU6IC8vIGdvdG8gZW11bGF0aW9uXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKHN0YXRlLm1vZGUpIHtcbiAgICAgIGNhc2UgSEVBRDpcbiAgICAgICAgaWYgKHN0YXRlLndyYXAgPT09IDApIHtcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRURPO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTtcbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoKHN0YXRlLndyYXAgJiAyKSAmJiBob2xkID09PSAweDhiMWYpIHsgIC8qIGd6aXAgaGVhZGVyICovXG4gICAgICAgICAgc3RhdGUuY2hlY2sgPSAwLypjcmMzMigwTCwgWl9OVUxMLCAwKSovO1xuICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAvLz09PS8vXG5cbiAgICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICAgIGhvbGQgPSAwO1xuICAgICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5tb2RlID0gRkxBR1M7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUuZmxhZ3MgPSAwOyAgICAgICAgICAgLyogZXhwZWN0IHpsaWIgaGVhZGVyICovXG4gICAgICAgIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoc3RhdGUud3JhcCAmIDEpIHx8ICAgLyogY2hlY2sgaWYgemxpYiBoZWFkZXIgYWxsb3dlZCAqL1xuICAgICAgICAgICgoKGhvbGQgJiAweGZmKS8qQklUUyg4KSovIDw8IDgpICsgKGhvbGQgPj4gOCkpICUgMzEpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgaGVhZGVyIGNoZWNrJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmICgoaG9sZCAmIDB4MGYpLypCSVRTKDQpKi8gIT09IFpfREVGTEFURUQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICd1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLy0tLSBEUk9QQklUUyg0KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNDtcbiAgICAgICAgYml0cyAtPSA0O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIGxlbiA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDg7XG4gICAgICAgIGlmIChzdGF0ZS53Yml0cyA9PT0gMCkge1xuICAgICAgICAgIHN0YXRlLndiaXRzID0gbGVuO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlbiA+IHN0YXRlLndiaXRzKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCB3aW5kb3cgc2l6ZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5kbWF4ID0gMSA8PCBsZW47XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICB6bGliIGhlYWRlciBva1xcblwiKSk7XG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IDEvKmFkbGVyMzIoMEwsIFpfTlVMTCwgMCkqLztcbiAgICAgICAgc3RhdGUubW9kZSA9IGhvbGQgJiAweDIwMCA/IERJQ1RJRCA6IFRZUEU7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgRkxBR1M6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5mbGFncyA9IGhvbGQ7XG4gICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgJiAweGZmKSAhPT0gWl9ERUZMQVRFRCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gY29tcHJlc3Npb24gbWV0aG9kJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4ZTAwMCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ3Vua25vd24gaGVhZGVyIGZsYWdzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQudGV4dCA9ICgoaG9sZCA+PiA4KSAmIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgIC8vPT09IENSQzIoc3RhdGUuY2hlY2ssIGhvbGQpO1xuICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICBoYnVmWzFdID0gKGhvbGQgPj4+IDgpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCAyLCAwKTtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgIGJpdHMgPSAwO1xuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0YXRlLm1vZGUgPSBUSU1FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRJTUU6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQudGltZSA9IGhvbGQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDNChzdGF0ZS5jaGVjaywgaG9sZClcbiAgICAgICAgICBoYnVmWzBdID0gaG9sZCAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsxXSA9IChob2xkID4+PiA4KSAmIDB4ZmY7XG4gICAgICAgICAgaGJ1ZlsyXSA9IChob2xkID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgIGhidWZbM10gPSAoaG9sZCA+Pj4gMjQpICYgMHhmZjtcbiAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBoYnVmLCA0LCAwKTtcbiAgICAgICAgICAvLz09PVxuICAgICAgICB9XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gT1M7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgT1M6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE2KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQueGZsYWdzID0gKGhvbGQgJiAweGZmKTtcbiAgICAgICAgICBzdGF0ZS5oZWFkLm9zID0gKGhvbGQgPj4gOCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgLy89PT0gQ1JDMihzdGF0ZS5jaGVjaywgaG9sZCk7XG4gICAgICAgICAgaGJ1ZlswXSA9IGhvbGQgJiAweGZmO1xuICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgIHN0YXRlLmNoZWNrID0gY3JjMzIoc3RhdGUuY2hlY2ssIGhidWYsIDIsIDApO1xuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgfVxuICAgICAgICAvLz09PSBJTklUQklUUygpO1xuICAgICAgICBob2xkID0gMDtcbiAgICAgICAgYml0cyA9IDA7XG4gICAgICAgIC8vPT09Ly9cbiAgICAgICAgc3RhdGUubW9kZSA9IEVYTEVOO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEVYTEVOOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQ7XG4gICAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICAgIHN0YXRlLmhlYWQuZXh0cmFfbGVuID0gaG9sZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICAvLz09PSBDUkMyKHN0YXRlLmNoZWNrLCBob2xkKTtcbiAgICAgICAgICAgIGhidWZbMF0gPSBob2xkICYgMHhmZjtcbiAgICAgICAgICAgIGhidWZbMV0gPSAoaG9sZCA+Pj4gOCkgJiAweGZmO1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaGJ1ZiwgMiwgMCk7XG4gICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmV4dHJhID0gbnVsbC8qWl9OVUxMKi87XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubW9kZSA9IEVYVFJBO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIEVYVFJBOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA0MDApIHtcbiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICAgIGlmIChjb3B5ID4gaGF2ZSkgeyBjb3B5ID0gaGF2ZTsgfVxuICAgICAgICAgIGlmIChjb3B5KSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS5oZWFkLmV4dHJhX2xlbiAtIHN0YXRlLmxlbmd0aDtcbiAgICAgICAgICAgICAgaWYgKCFzdGF0ZS5oZWFkLmV4dHJhKSB7XG4gICAgICAgICAgICAgICAgLy8gVXNlIHVudHlwZWQgYXJyYXkgZm9yIG1vcmUgY29udmVuaWVudCBwcm9jZXNzaW5nIGxhdGVyXG4gICAgICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYSA9IG5ldyBBcnJheShzdGF0ZS5oZWFkLmV4dHJhX2xlbik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgdXRpbHMuYXJyYXlTZXQoXG4gICAgICAgICAgICAgICAgc3RhdGUuaGVhZC5leHRyYSxcbiAgICAgICAgICAgICAgICBpbnB1dCxcbiAgICAgICAgICAgICAgICBuZXh0LFxuICAgICAgICAgICAgICAgIC8vIGV4dHJhIGZpZWxkIGlzIGxpbWl0ZWQgdG8gNjU1MzYgYnl0ZXNcbiAgICAgICAgICAgICAgICAvLyAtIG5vIG5lZWQgZm9yIGFkZGl0aW9uYWwgc2l6ZSBjaGVja1xuICAgICAgICAgICAgICAgIGNvcHksXG4gICAgICAgICAgICAgICAgLypsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gPyBzdGF0ZS5oZWFkLmV4dHJhX21heCA6IGNvcHksKi9cbiAgICAgICAgICAgICAgICBsZW5cbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgLy96bWVtY3B5KHN0YXRlLmhlYWQuZXh0cmEgKyBsZW4sIG5leHQsXG4gICAgICAgICAgICAgIC8vICAgICAgICBsZW4gKyBjb3B5ID4gc3RhdGUuaGVhZC5leHRyYV9tYXggP1xuICAgICAgICAgICAgICAvLyAgICAgICAgc3RhdGUuaGVhZC5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5sZW5ndGggPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTkFNRTtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBOQU1FOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDA4MDApIHtcbiAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICBjb3B5ID0gMDtcbiAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAvLyBUT0RPOiAyIG9yIDEgYnl0ZXM/XG4gICAgICAgICAgICBsZW4gPSBpbnB1dFtuZXh0ICsgY29weSsrXTtcbiAgICAgICAgICAgIC8qIHVzZSBjb25zdGFudCBsaW1pdCBiZWNhdXNlIGluIGpzIHdlIHNob3VsZCBub3QgcHJlYWxsb2NhdGUgbWVtb3J5ICovXG4gICAgICAgICAgICBpZiAoc3RhdGUuaGVhZCAmJiBsZW4gJiZcbiAgICAgICAgICAgICAgICAoc3RhdGUubGVuZ3RoIDwgNjU1MzYgLypzdGF0ZS5oZWFkLm5hbWVfbWF4Ki8pKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGxlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTtcblxuICAgICAgICAgIGlmIChzdGF0ZS5mbGFncyAmIDB4MDIwMCkge1xuICAgICAgICAgICAgc3RhdGUuY2hlY2sgPSBjcmMzMihzdGF0ZS5jaGVjaywgaW5wdXQsIGNvcHksIG5leHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBoYXZlIC09IGNvcHk7XG4gICAgICAgICAgbmV4dCArPSBjb3B5O1xuICAgICAgICAgIGlmIChsZW4pIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoc3RhdGUuaGVhZCkge1xuICAgICAgICAgIHN0YXRlLmhlYWQubmFtZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUubGVuZ3RoID0gMDtcbiAgICAgICAgc3RhdGUubW9kZSA9IENPTU1FTlQ7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09NTUVOVDpcbiAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgxMDAwKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgY29weSA9IDA7XG4gICAgICAgICAgZG8ge1xuICAgICAgICAgICAgbGVuID0gaW5wdXRbbmV4dCArIGNvcHkrK107XG4gICAgICAgICAgICAvKiB1c2UgY29uc3RhbnQgbGltaXQgYmVjYXVzZSBpbiBqcyB3ZSBzaG91bGQgbm90IHByZWFsbG9jYXRlIG1lbW9yeSAqL1xuICAgICAgICAgICAgaWYgKHN0YXRlLmhlYWQgJiYgbGVuICYmXG4gICAgICAgICAgICAgICAgKHN0YXRlLmxlbmd0aCA8IDY1NTM2IC8qc3RhdGUuaGVhZC5jb21tX21heCovKSkge1xuICAgICAgICAgICAgICBzdGF0ZS5oZWFkLmNvbW1lbnQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShsZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gd2hpbGUgKGxlbiAmJiBjb3B5IDwgaGF2ZSk7XG4gICAgICAgICAgaWYgKHN0YXRlLmZsYWdzICYgMHgwMjAwKSB7XG4gICAgICAgICAgICBzdGF0ZS5jaGVjayA9IGNyYzMyKHN0YXRlLmNoZWNrLCBpbnB1dCwgY29weSwgbmV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgaWYgKGxlbikgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChzdGF0ZS5oZWFkKSB7XG4gICAgICAgICAgc3RhdGUuaGVhZC5jb21tZW50ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5tb2RlID0gSENSQztcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBIQ1JDOlxuICAgICAgICBpZiAoc3RhdGUuZmxhZ3MgJiAweDAyMDApIHtcbiAgICAgICAgICAvLz09PSBORUVEQklUUygxNik7ICovXG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCAxNikge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIGlmIChob2xkICE9PSAoc3RhdGUuY2hlY2sgJiAweGZmZmYpKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdoZWFkZXIgY3JjIG1pc21hdGNoJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXRlLmhlYWQpIHtcbiAgICAgICAgICBzdGF0ZS5oZWFkLmhjcmMgPSAoKHN0YXRlLmZsYWdzID4+IDkpICYgMSk7XG4gICAgICAgICAgc3RhdGUuaGVhZC5kb25lID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gVFlQRTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIERJQ1RJRDpcbiAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpOyAqL1xuICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgfVxuICAgICAgICAvLz09PS8vXG4gICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9IHpzd2FwMzIoaG9sZCk7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gRElDVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBESUNUOlxuICAgICAgICBpZiAoc3RhdGUuaGF2ZWRpY3QgPT09IDApIHtcbiAgICAgICAgICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gICAgICAgICAgc3RybS5uZXh0X291dCA9IHB1dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX291dCA9IGxlZnQ7XG4gICAgICAgICAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgICAgICAgICBzdHJtLmF2YWlsX2luID0gaGF2ZTtcbiAgICAgICAgICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgICAgICAgICBzdGF0ZS5iaXRzID0gYml0cztcbiAgICAgICAgICAvLy0tLVxuICAgICAgICAgIHJldHVybiBaX05FRURfRElDVDtcbiAgICAgICAgfVxuICAgICAgICBzdHJtLmFkbGVyID0gc3RhdGUuY2hlY2sgPSAxLyphZGxlcjMyKDBMLCBaX05VTEwsIDApKi87XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIFRZUEU6XG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9CTE9DSyB8fCBmbHVzaCA9PT0gWl9UUkVFUykgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBUWVBFRE86XG4gICAgICAgIGlmIChzdGF0ZS5sYXN0KSB7XG4gICAgICAgICAgLy8tLS0gQllURUJJVFMoKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBiaXRzICYgNztcbiAgICAgICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQ0hFQ0s7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0gTkVFREJJVFMoMyk7ICovXG4gICAgICAgIHdoaWxlIChiaXRzIDwgMykge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5sYXN0ID0gKGhvbGQgJiAweDAxKS8qQklUUygxKSovO1xuICAgICAgICAvLy0tLSBEUk9QQklUUygxKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gMTtcbiAgICAgICAgYml0cyAtPSAxO1xuICAgICAgICAvLy0tLS8vXG5cbiAgICAgICAgc3dpdGNoICgoaG9sZCAmIDB4MDMpLypCSVRTKDIpKi8pIHtcbiAgICAgICAgICBjYXNlIDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdG9yZWQgYmxvY2sgKi9cbiAgICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgIHN0b3JlZCBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IFNUT1JFRDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpeGVkIGJsb2NrICovXG4gICAgICAgICAgICBmaXhlZHRhYmxlcyhzdGF0ZSk7XG4gICAgICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICBmaXhlZCBjb2RlcyBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IExFTl87ICAgICAgICAgICAgIC8qIGRlY29kZSBjb2RlcyAqL1xuICAgICAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7XG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDIpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSAyO1xuICAgICAgICAgICAgICBiaXRzIC09IDI7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZHluYW1pYyBibG9jayAqL1xuICAgICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgZHluYW1pYyBjb2RlcyBibG9jayVzXFxuXCIsXG4gICAgICAgICAgICAvLyAgICAgICAgc3RhdGUubGFzdCA/IFwiIChsYXN0KVwiIDogXCJcIikpO1xuICAgICAgICAgICAgc3RhdGUubW9kZSA9IFRBQkxFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBibG9jayB0eXBlJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgU1RPUkVEOlxuICAgICAgICAvLy0tLSBCWVRFQklUUygpIC0tLS8vIC8qIGdvIHRvIGJ5dGUgYm91bmRhcnkgKi9cbiAgICAgICAgaG9sZCA+Pj49IGJpdHMgJiA3O1xuICAgICAgICBiaXRzIC09IGJpdHMgJiA3O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAzMikge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBpZiAoKGhvbGQgJiAweGZmZmYpICE9PSAoKGhvbGQgPj4+IDE2KSBeIDB4ZmZmZikpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIHN0b3JlZCBibG9jayBsZW5ndGhzJztcbiAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IGhvbGQgJiAweGZmZmY7XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgc3RvcmVkIGxlbmd0aCAldVxcblwiLFxuICAgICAgICAvLyAgICAgICAgc3RhdGUubGVuZ3RoKSk7XG4gICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgIGhvbGQgPSAwO1xuICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09QWV87XG4gICAgICAgIGlmIChmbHVzaCA9PT0gWl9UUkVFUykgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBDT1BZXzpcbiAgICAgICAgc3RhdGUubW9kZSA9IENPUFk7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09QWTpcbiAgICAgICAgY29weSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgaWYgKGNvcHkpIHtcbiAgICAgICAgICBpZiAoY29weSA+IGhhdmUpIHsgY29weSA9IGhhdmU7IH1cbiAgICAgICAgICBpZiAoY29weSA+IGxlZnQpIHsgY29weSA9IGxlZnQ7IH1cbiAgICAgICAgICBpZiAoY29weSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAvLy0tLSB6bWVtY3B5KHB1dCwgbmV4dCwgY29weSk7IC0tLVxuICAgICAgICAgIHV0aWxzLmFycmF5U2V0KG91dHB1dCwgaW5wdXQsIG5leHQsIGNvcHksIHB1dCk7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIGhhdmUgLT0gY29weTtcbiAgICAgICAgICBuZXh0ICs9IGNvcHk7XG4gICAgICAgICAgbGVmdCAtPSBjb3B5O1xuICAgICAgICAgIHB1dCArPSBjb3B5O1xuICAgICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgc3RvcmVkIGVuZFxcblwiKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgVEFCTEU6XG4gICAgICAgIC8vPT09IE5FRURCSVRTKDE0KTsgKi9cbiAgICAgICAgd2hpbGUgKGJpdHMgPCAxNCkge1xuICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgIH1cbiAgICAgICAgLy89PT0vL1xuICAgICAgICBzdGF0ZS5ubGVuID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMjU3O1xuICAgICAgICAvLy0tLSBEUk9QQklUUyg1KSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gNTtcbiAgICAgICAgYml0cyAtPSA1O1xuICAgICAgICAvLy0tLS8vXG4gICAgICAgIHN0YXRlLm5kaXN0ID0gKGhvbGQgJiAweDFmKS8qQklUUyg1KSovICsgMTtcbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoNSkgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IDU7XG4gICAgICAgIGJpdHMgLT0gNTtcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5uY29kZSA9IChob2xkICYgMHgwZikvKkJJVFMoNCkqLyArIDQ7XG4gICAgICAgIC8vLS0tIERST1BCSVRTKDQpIC0tLS8vXG4gICAgICAgIGhvbGQgPj4+PSA0O1xuICAgICAgICBiaXRzIC09IDQ7XG4gICAgICAgIC8vLS0tLy9cbi8vI2lmbmRlZiBQS1pJUF9CVUdfV09SS0FST1VORFxuICAgICAgICBpZiAoc3RhdGUubmxlbiA+IDI4NiB8fCBzdGF0ZS5uZGlzdCA+IDMwKSB7XG4gICAgICAgICAgc3RybS5tc2cgPSAndG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgdGFibGUgc2l6ZXMgb2tcXG5cIikpO1xuICAgICAgICBzdGF0ZS5oYXZlID0gMDtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkxFTlM7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOTEVOUzpcbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCBzdGF0ZS5uY29kZSkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDMpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMykge1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUygzKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSAzO1xuICAgICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgd2hpbGUgKHN0YXRlLmhhdmUgPCAxOSkge1xuICAgICAgICAgIHN0YXRlLmxlbnNbb3JkZXJbc3RhdGUuaGF2ZSsrXV0gPSAwO1xuICAgICAgICB9XG4gICAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAgIC8vc3RhdGUubmV4dCA9IHN0YXRlLmNvZGVzO1xuICAgICAgICAvL3N0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0O1xuICAgICAgICAvLyBTd2l0Y2ggdG8gdXNlIGR5bmFtaWMgdGFibGVcbiAgICAgICAgc3RhdGUubGVuY29kZSA9IHN0YXRlLmxlbmR5bjtcbiAgICAgICAgc3RhdGUubGVuYml0cyA9IDc7XG5cbiAgICAgICAgb3B0cyA9IHsgYml0czogc3RhdGUubGVuYml0cyB9O1xuICAgICAgICByZXQgPSBpbmZsYXRlX3RhYmxlKENPREVTLCBzdGF0ZS5sZW5zLCAwLCAxOSwgc3RhdGUubGVuY29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG5cbiAgICAgICAgaWYgKHJldCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSBsZW5ndGhzIHNldCc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldigoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgIGNvZGUgbGVuZ3RocyBva1xcblwiKSk7XG4gICAgICAgIHN0YXRlLmhhdmUgPSAwO1xuICAgICAgICBzdGF0ZS5tb2RlID0gQ09ERUxFTlM7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgQ09ERUxFTlM6XG4gICAgICAgIHdoaWxlIChzdGF0ZS5oYXZlIDwgc3RhdGUubmxlbiArIHN0YXRlLm5kaXN0KSB7XG4gICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgaGVyZSA9IHN0YXRlLmxlbmNvZGVbaG9sZCAmICgoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgoaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoaGVyZV92YWwgPCAxNikge1xuICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgc3RhdGUubGVuc1tzdGF0ZS5oYXZlKytdID0gaGVyZV92YWw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGhlcmVfdmFsID09PSAxNikge1xuICAgICAgICAgICAgICAvLz09PSBORUVEQklUUyhoZXJlLmJpdHMgKyAyKTtcbiAgICAgICAgICAgICAgbiA9IGhlcmVfYml0cyArIDI7XG4gICAgICAgICAgICAgIHdoaWxlIChiaXRzIDwgbikge1xuICAgICAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgLy89PT0vL1xuICAgICAgICAgICAgICAvLy0tLSBEUk9QQklUUyhoZXJlLmJpdHMpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIGJpdHMgLT0gaGVyZV9iaXRzO1xuICAgICAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgICAgIGlmIChzdGF0ZS5oYXZlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBiaXQgbGVuZ3RoIHJlcGVhdCc7XG4gICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsZW4gPSBzdGF0ZS5sZW5zW3N0YXRlLmhhdmUgLSAxXTtcbiAgICAgICAgICAgICAgY29weSA9IDMgKyAoaG9sZCAmIDB4MDMpOy8vQklUUygyKTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMikgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDI7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMjtcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaGVyZV92YWwgPT09IDE3KSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDMpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgMztcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgICAgY29weSA9IDMgKyAoaG9sZCAmIDB4MDcpOy8vQklUUygzKTtcbiAgICAgICAgICAgICAgLy8tLS0gRFJPUEJJVFMoMykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IDM7XG4gICAgICAgICAgICAgIGJpdHMgLT0gMztcbiAgICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIC8vPT09IE5FRURCSVRTKGhlcmUuYml0cyArIDcpO1xuICAgICAgICAgICAgICBuID0gaGVyZV9iaXRzICsgNztcbiAgICAgICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgICAgbGVuID0gMDtcbiAgICAgICAgICAgICAgY29weSA9IDExICsgKGhvbGQgJiAweDdmKTsvL0JJVFMoNyk7XG4gICAgICAgICAgICAgIC8vLS0tIERST1BCSVRTKDcpIC0tLS8vXG4gICAgICAgICAgICAgIGhvbGQgPj4+PSA3O1xuICAgICAgICAgICAgICBiaXRzIC09IDc7XG4gICAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzdGF0ZS5oYXZlICsgY29weSA+IHN0YXRlLm5sZW4gKyBzdGF0ZS5uZGlzdCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0JztcbiAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB3aGlsZSAoY29weS0tKSB7XG4gICAgICAgICAgICAgIHN0YXRlLmxlbnNbc3RhdGUuaGF2ZSsrXSA9IGxlbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKiBoYW5kbGUgZXJyb3IgYnJlYWtzIGluIHdoaWxlICovXG4gICAgICAgIGlmIChzdGF0ZS5tb2RlID09PSBCQUQpIHsgYnJlYWs7IH1cblxuICAgICAgICAvKiBjaGVjayBmb3IgZW5kLW9mLWJsb2NrIGNvZGUgKGJldHRlciBoYXZlIG9uZSkgKi9cbiAgICAgICAgaWYgKHN0YXRlLmxlbnNbMjU2XSA9PT0gMCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgY29kZSAtLSBtaXNzaW5nIGVuZC1vZi1ibG9jayc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8qIGJ1aWxkIGNvZGUgdGFibGVzIC0tIG5vdGU6IGRvIG5vdCBjaGFuZ2UgdGhlIGxlbmJpdHMgb3IgZGlzdGJpdHNcbiAgICAgICAgICAgdmFsdWVzIGhlcmUgKDkgYW5kIDYpIHdpdGhvdXQgcmVhZGluZyB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaFxuICAgICAgICAgICBjb25jZXJuaW5nIHRoZSBFTk9VR0ggY29uc3RhbnRzLCB3aGljaCBkZXBlbmQgb24gdGhvc2UgdmFsdWVzICovXG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSA5O1xuXG4gICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmxlbmJpdHMgfTtcbiAgICAgICAgcmV0ID0gaW5mbGF0ZV90YWJsZShMRU5TLCBzdGF0ZS5sZW5zLCAwLCBzdGF0ZS5ubGVuLCBzdGF0ZS5sZW5jb2RlLCAwLCBzdGF0ZS53b3JrLCBvcHRzKTtcbiAgICAgICAgLy8gV2UgaGF2ZSBzZXBhcmF0ZSB0YWJsZXMgJiBubyBwb2ludGVycy4gMiBjb21tZW50ZWQgbGluZXMgYmVsb3cgbm90IG5lZWRlZC5cbiAgICAgICAgLy8gc3RhdGUubmV4dF9pbmRleCA9IG9wdHMudGFibGVfaW5kZXg7XG4gICAgICAgIHN0YXRlLmxlbmJpdHMgPSBvcHRzLmJpdHM7XG4gICAgICAgIC8vIHN0YXRlLmxlbmNvZGUgPSBzdGF0ZS5uZXh0O1xuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGxpdGVyYWwvbGVuZ3RocyBzZXQnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5kaXN0Yml0cyA9IDY7XG4gICAgICAgIC8vc3RhdGUuZGlzdGNvZGUuY29weShzdGF0ZS5jb2Rlcyk7XG4gICAgICAgIC8vIFN3aXRjaCB0byB1c2UgZHluYW1pYyB0YWJsZVxuICAgICAgICBzdGF0ZS5kaXN0Y29kZSA9IHN0YXRlLmRpc3RkeW47XG4gICAgICAgIG9wdHMgPSB7IGJpdHM6IHN0YXRlLmRpc3RiaXRzIH07XG4gICAgICAgIHJldCA9IGluZmxhdGVfdGFibGUoRElTVFMsIHN0YXRlLmxlbnMsIHN0YXRlLm5sZW4sIHN0YXRlLm5kaXN0LCBzdGF0ZS5kaXN0Y29kZSwgMCwgc3RhdGUud29yaywgb3B0cyk7XG4gICAgICAgIC8vIFdlIGhhdmUgc2VwYXJhdGUgdGFibGVzICYgbm8gcG9pbnRlcnMuIDIgY29tbWVudGVkIGxpbmVzIGJlbG93IG5vdCBuZWVkZWQuXG4gICAgICAgIC8vIHN0YXRlLm5leHRfaW5kZXggPSBvcHRzLnRhYmxlX2luZGV4O1xuICAgICAgICBzdGF0ZS5kaXN0Yml0cyA9IG9wdHMuYml0cztcbiAgICAgICAgLy8gc3RhdGUuZGlzdGNvZGUgPSBzdGF0ZS5uZXh0O1xuXG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlcyBzZXQnO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgJ2luZmxhdGU6ICAgICAgIGNvZGVzIG9rXFxuJykpO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOXztcbiAgICAgICAgaWYgKGZsdXNoID09PSBaX1RSRUVTKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIExFTl86XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU47XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOOlxuICAgICAgICBpZiAoaGF2ZSA+PSA2ICYmIGxlZnQgPj0gMjU4KSB7XG4gICAgICAgICAgLy8tLS0gUkVTVE9SRSgpIC0tLVxuICAgICAgICAgIHN0cm0ubmV4dF9vdXQgPSBwdXQ7XG4gICAgICAgICAgc3RybS5hdmFpbF9vdXQgPSBsZWZ0O1xuICAgICAgICAgIHN0cm0ubmV4dF9pbiA9IG5leHQ7XG4gICAgICAgICAgc3RybS5hdmFpbF9pbiA9IGhhdmU7XG4gICAgICAgICAgc3RhdGUuaG9sZCA9IGhvbGQ7XG4gICAgICAgICAgc3RhdGUuYml0cyA9IGJpdHM7XG4gICAgICAgICAgLy8tLS1cbiAgICAgICAgICBpbmZsYXRlX2Zhc3Qoc3RybSwgX291dCk7XG4gICAgICAgICAgLy8tLS0gTE9BRCgpIC0tLVxuICAgICAgICAgIHB1dCA9IHN0cm0ubmV4dF9vdXQ7XG4gICAgICAgICAgb3V0cHV0ID0gc3RybS5vdXRwdXQ7XG4gICAgICAgICAgbGVmdCA9IHN0cm0uYXZhaWxfb3V0O1xuICAgICAgICAgIG5leHQgPSBzdHJtLm5leHRfaW47XG4gICAgICAgICAgaW5wdXQgPSBzdHJtLmlucHV0O1xuICAgICAgICAgIGhhdmUgPSBzdHJtLmF2YWlsX2luO1xuICAgICAgICAgIGhvbGQgPSBzdGF0ZS5ob2xkO1xuICAgICAgICAgIGJpdHMgPSBzdGF0ZS5iaXRzO1xuICAgICAgICAgIC8vLS0tXG5cbiAgICAgICAgICBpZiAoc3RhdGUubW9kZSA9PT0gVFlQRSkge1xuICAgICAgICAgICAgc3RhdGUuYmFjayA9IC0xO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5iYWNrID0gMDtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2hvbGQgJiAoKDEgPDwgc3RhdGUubGVuYml0cykgLSAxKV07ICAvKkJJVFMoc3RhdGUubGVuYml0cykqL1xuICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgIGhlcmVfb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZjtcbiAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICBpZiAoaGVyZV9iaXRzIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiYgKGhlcmVfb3AgJiAweGYwKSA9PT0gMCkge1xuICAgICAgICAgIGxhc3RfYml0cyA9IGhlcmVfYml0cztcbiAgICAgICAgICBsYXN0X29wID0gaGVyZV9vcDtcbiAgICAgICAgICBsYXN0X3ZhbCA9IGhlcmVfdmFsO1xuICAgICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICAgIGhlcmUgPSBzdGF0ZS5sZW5jb2RlW2xhc3RfdmFsICtcbiAgICAgICAgICAgICAgICAgICAgKChob2xkICYgKCgxIDw8IChsYXN0X2JpdHMgKyBsYXN0X29wKSkgLSAxKSkvKkJJVFMobGFzdC5iaXRzICsgbGFzdC5vcCkqLyA+PiBsYXN0X2JpdHMpXTtcbiAgICAgICAgICAgIGhlcmVfYml0cyA9IGhlcmUgPj4+IDI0O1xuICAgICAgICAgICAgaGVyZV9vcCA9IChoZXJlID4+PiAxNikgJiAweGZmO1xuICAgICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgICBpZiAoKGxhc3RfYml0cyArIGhlcmVfYml0cykgPD0gYml0cykgeyBicmVhazsgfVxuICAgICAgICAgICAgLy8tLS0gUFVMTEJZVEUoKSAtLS0vL1xuICAgICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgICBoYXZlLS07XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgIC8vLS0tLy9cbiAgICAgICAgICB9XG4gICAgICAgICAgLy8tLS0gRFJPUEJJVFMobGFzdC5iaXRzKSAtLS0vL1xuICAgICAgICAgIGhvbGQgPj4+PSBsYXN0X2JpdHM7XG4gICAgICAgICAgYml0cyAtPSBsYXN0X2JpdHM7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLmJhY2sgKz0gbGFzdF9iaXRzO1xuICAgICAgICB9XG4gICAgICAgIC8vLS0tIERST1BCSVRTKGhlcmUuYml0cykgLS0tLy9cbiAgICAgICAgaG9sZCA+Pj49IGhlcmVfYml0cztcbiAgICAgICAgYml0cyAtPSBoZXJlX2JpdHM7XG4gICAgICAgIC8vLS0tLy9cbiAgICAgICAgc3RhdGUuYmFjayArPSBoZXJlX2JpdHM7XG4gICAgICAgIHN0YXRlLmxlbmd0aCA9IGhlcmVfdmFsO1xuICAgICAgICBpZiAoaGVyZV9vcCA9PT0gMCkge1xuICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/XG4gICAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcXG5cIiA6XG4gICAgICAgICAgLy8gICAgICAgIFwiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxcblwiLCBoZXJlLnZhbCkpO1xuICAgICAgICAgIHN0YXRlLm1vZGUgPSBMSVQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiAzMikge1xuICAgICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBcImluZmxhdGU6ICAgICAgICAgZW5kIG9mIGJsb2NrXFxuXCIpKTtcbiAgICAgICAgICBzdGF0ZS5iYWNrID0gLTE7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IFRZUEU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGhlcmVfb3AgJiA2NCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgbGl0ZXJhbC9sZW5ndGggY29kZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5leHRyYSA9IGhlcmVfb3AgJiAxNTtcbiAgICAgICAgc3RhdGUubW9kZSA9IExFTkVYVDtcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2FzZSBMRU5FWFQ6XG4gICAgICAgIGlmIChzdGF0ZS5leHRyYSkge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKHN0YXRlLmV4dHJhKTtcbiAgICAgICAgICBuID0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgd2hpbGUgKGJpdHMgPCBuKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgc3RhdGUubGVuZ3RoICs9IGhvbGQgJiAoKDEgPDwgc3RhdGUuZXh0cmEpIC0gMSkvKkJJVFMoc3RhdGUuZXh0cmEpKi87XG4gICAgICAgICAgLy8tLS0gRFJPUEJJVFMoc3RhdGUuZXh0cmEpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IHN0YXRlLmV4dHJhO1xuICAgICAgICAgIGJpdHMgLT0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIHN0YXRlLmJhY2sgKz0gc3RhdGUuZXh0cmE7XG4gICAgICAgIH1cbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBsZW5ndGggJXVcXG5cIiwgc3RhdGUubGVuZ3RoKSk7XG4gICAgICAgIHN0YXRlLndhcyA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgc3RhdGUubW9kZSA9IERJU1Q7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRElTVDpcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgIGhlcmUgPSBzdGF0ZS5kaXN0Y29kZVtob2xkICYgKCgxIDw8IHN0YXRlLmRpc3RiaXRzKSAtIDEpXTsvKkJJVFMoc3RhdGUuZGlzdGJpdHMpKi9cbiAgICAgICAgICBoZXJlX2JpdHMgPSBoZXJlID4+PiAyNDtcbiAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgaGVyZV92YWwgPSBoZXJlICYgMHhmZmZmO1xuXG4gICAgICAgICAgaWYgKChoZXJlX2JpdHMpIDw9IGJpdHMpIHsgYnJlYWs7IH1cbiAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgaWYgKGhhdmUgPT09IDApIHsgYnJlYWsgaW5mX2xlYXZlOyB9XG4gICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgIH1cbiAgICAgICAgaWYgKChoZXJlX29wICYgMHhmMCkgPT09IDApIHtcbiAgICAgICAgICBsYXN0X2JpdHMgPSBoZXJlX2JpdHM7XG4gICAgICAgICAgbGFzdF9vcCA9IGhlcmVfb3A7XG4gICAgICAgICAgbGFzdF92YWwgPSBoZXJlX3ZhbDtcbiAgICAgICAgICBmb3IgKDs7KSB7XG4gICAgICAgICAgICBoZXJlID0gc3RhdGUuZGlzdGNvZGVbbGFzdF92YWwgK1xuICAgICAgICAgICAgICAgICAgICAoKGhvbGQgJiAoKDEgPDwgKGxhc3RfYml0cyArIGxhc3Rfb3ApKSAtIDEpKS8qQklUUyhsYXN0LmJpdHMgKyBsYXN0Lm9wKSovID4+IGxhc3RfYml0cyldO1xuICAgICAgICAgICAgaGVyZV9iaXRzID0gaGVyZSA+Pj4gMjQ7XG4gICAgICAgICAgICBoZXJlX29wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmY7XG4gICAgICAgICAgICBoZXJlX3ZhbCA9IGhlcmUgJiAweGZmZmY7XG5cbiAgICAgICAgICAgIGlmICgobGFzdF9iaXRzICsgaGVyZV9iaXRzKSA8PSBiaXRzKSB7IGJyZWFrOyB9XG4gICAgICAgICAgICAvLy0tLSBQVUxMQllURSgpIC0tLS8vXG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgICAgLy8tLS0vL1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhsYXN0LmJpdHMpIC0tLS8vXG4gICAgICAgICAgaG9sZCA+Pj49IGxhc3RfYml0cztcbiAgICAgICAgICBiaXRzIC09IGxhc3RfYml0cztcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBsYXN0X2JpdHM7XG4gICAgICAgIH1cbiAgICAgICAgLy8tLS0gRFJPUEJJVFMoaGVyZS5iaXRzKSAtLS0vL1xuICAgICAgICBob2xkID4+Pj0gaGVyZV9iaXRzO1xuICAgICAgICBiaXRzIC09IGhlcmVfYml0cztcbiAgICAgICAgLy8tLS0vL1xuICAgICAgICBzdGF0ZS5iYWNrICs9IGhlcmVfYml0cztcbiAgICAgICAgaWYgKGhlcmVfb3AgJiA2NCkge1xuICAgICAgICAgIHN0cm0ubXNnID0gJ2ludmFsaWQgZGlzdGFuY2UgY29kZSc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBzdGF0ZS5vZmZzZXQgPSBoZXJlX3ZhbDtcbiAgICAgICAgc3RhdGUuZXh0cmEgPSAoaGVyZV9vcCkgJiAxNTtcbiAgICAgICAgc3RhdGUubW9kZSA9IERJU1RFWFQ7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgRElTVEVYVDpcbiAgICAgICAgaWYgKHN0YXRlLmV4dHJhKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoc3RhdGUuZXh0cmEpO1xuICAgICAgICAgIG4gPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IG4pIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgaG9sZCArPSBpbnB1dFtuZXh0KytdIDw8IGJpdHM7XG4gICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09Ly9cbiAgICAgICAgICBzdGF0ZS5vZmZzZXQgKz0gaG9sZCAmICgoMSA8PCBzdGF0ZS5leHRyYSkgLSAxKS8qQklUUyhzdGF0ZS5leHRyYSkqLztcbiAgICAgICAgICAvLy0tLSBEUk9QQklUUyhzdGF0ZS5leHRyYSkgLS0tLy9cbiAgICAgICAgICBob2xkID4+Pj0gc3RhdGUuZXh0cmE7XG4gICAgICAgICAgYml0cyAtPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgICAvLy0tLS8vXG4gICAgICAgICAgc3RhdGUuYmFjayArPSBzdGF0ZS5leHRyYTtcbiAgICAgICAgfVxuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgICAgICAgaWYgKHN0YXRlLm9mZnNldCA+IHN0YXRlLmRtYXgpIHtcbiAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxcblwiLCBzdGF0ZS5vZmZzZXQpKTtcbiAgICAgICAgc3RhdGUubW9kZSA9IE1BVENIO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIE1BVENIOlxuICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgY29weSA9IF9vdXQgLSBsZWZ0O1xuICAgICAgICBpZiAoc3RhdGUub2Zmc2V0ID4gY29weSkgeyAgICAgICAgIC8qIGNvcHkgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICBjb3B5ID0gc3RhdGUub2Zmc2V0IC0gY29weTtcbiAgICAgICAgICBpZiAoY29weSA+IHN0YXRlLndoYXZlKSB7XG4gICAgICAgICAgICBpZiAoc3RhdGUuc2FuZSkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuLy8gKCEpIFRoaXMgYmxvY2sgaXMgZGlzYWJsZWQgaW4gemxpYiBkZWZhdWx0cyxcbi8vIGRvbid0IGVuYWJsZSBpdCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHlcbi8vI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUlxuLy8gICAgICAgICAgVHJhY2UoKHN0ZGVyciwgXCJpbmZsYXRlLmMgdG9vIGZhclxcblwiKSk7XG4vLyAgICAgICAgICBjb3B5IC09IHN0YXRlLndoYXZlO1xuLy8gICAgICAgICAgaWYgKGNvcHkgPiBzdGF0ZS5sZW5ndGgpIHsgY29weSA9IHN0YXRlLmxlbmd0aDsgfVxuLy8gICAgICAgICAgaWYgKGNvcHkgPiBsZWZ0KSB7IGNvcHkgPSBsZWZ0OyB9XG4vLyAgICAgICAgICBsZWZ0IC09IGNvcHk7XG4vLyAgICAgICAgICBzdGF0ZS5sZW5ndGggLT0gY29weTtcbi8vICAgICAgICAgIGRvIHtcbi8vICAgICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IDA7XG4vLyAgICAgICAgICB9IHdoaWxlICgtLWNvcHkpO1xuLy8gICAgICAgICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgeyBzdGF0ZS5tb2RlID0gTEVOOyB9XG4vLyAgICAgICAgICBicmVhaztcbi8vI2VuZGlmXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUud25leHQpIHtcbiAgICAgICAgICAgIGNvcHkgLT0gc3RhdGUud25leHQ7XG4gICAgICAgICAgICBmcm9tID0gc3RhdGUud3NpemUgLSBjb3B5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGZyb20gPSBzdGF0ZS53bmV4dCAtIGNvcHk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjb3B5ID4gc3RhdGUubGVuZ3RoKSB7IGNvcHkgPSBzdGF0ZS5sZW5ndGg7IH1cbiAgICAgICAgICBmcm9tX3NvdXJjZSA9IHN0YXRlLndpbmRvdztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjb3B5IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgICAgZnJvbSA9IHB1dCAtIHN0YXRlLm9mZnNldDtcbiAgICAgICAgICBjb3B5ID0gc3RhdGUubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjb3B5ID4gbGVmdCkgeyBjb3B5ID0gbGVmdDsgfVxuICAgICAgICBsZWZ0IC09IGNvcHk7XG4gICAgICAgIHN0YXRlLmxlbmd0aCAtPSBjb3B5O1xuICAgICAgICBkbyB7XG4gICAgICAgICAgb3V0cHV0W3B1dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgIH0gd2hpbGUgKC0tY29weSk7XG4gICAgICAgIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHsgc3RhdGUubW9kZSA9IExFTjsgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgTElUOlxuICAgICAgICBpZiAobGVmdCA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgb3V0cHV0W3B1dCsrXSA9IHN0YXRlLmxlbmd0aDtcbiAgICAgICAgbGVmdC0tO1xuICAgICAgICBzdGF0ZS5tb2RlID0gTEVOO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgQ0hFQ0s6XG4gICAgICAgIGlmIChzdGF0ZS53cmFwKSB7XG4gICAgICAgICAgLy89PT0gTkVFREJJVFMoMzIpO1xuICAgICAgICAgIHdoaWxlIChiaXRzIDwgMzIpIHtcbiAgICAgICAgICAgIGlmIChoYXZlID09PSAwKSB7IGJyZWFrIGluZl9sZWF2ZTsgfVxuICAgICAgICAgICAgaGF2ZS0tO1xuICAgICAgICAgICAgLy8gVXNlICd8JyBpbnN0ZWFkIG9mICcrJyB0byBtYWtlIHN1cmUgdGhhdCByZXN1bHQgaXMgc2lnbmVkXG4gICAgICAgICAgICBob2xkIHw9IGlucHV0W25leHQrK10gPDwgYml0cztcbiAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIF9vdXQgLT0gbGVmdDtcbiAgICAgICAgICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICAgICAgICAgIHN0YXRlLnRvdGFsICs9IF9vdXQ7XG4gICAgICAgICAgaWYgKF9vdXQpIHtcbiAgICAgICAgICAgIHN0cm0uYWRsZXIgPSBzdGF0ZS5jaGVjayA9XG4gICAgICAgICAgICAgICAgLypVUERBVEUoc3RhdGUuY2hlY2ssIHB1dCAtIF9vdXQsIF9vdXQpOyovXG4gICAgICAgICAgICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgcHV0IC0gX291dCkgOiBhZGxlcjMyKHN0YXRlLmNoZWNrLCBvdXRwdXQsIF9vdXQsIHB1dCAtIF9vdXQpKTtcblxuICAgICAgICAgIH1cbiAgICAgICAgICBfb3V0ID0gbGVmdDtcbiAgICAgICAgICAvLyBOQjogY3JjMzIgc3RvcmVkIGFzIHNpZ25lZCAzMi1iaXQgaW50LCB6c3dhcDMyIHJldHVybnMgc2lnbmVkIHRvb1xuICAgICAgICAgIGlmICgoc3RhdGUuZmxhZ3MgPyBob2xkIDogenN3YXAzMihob2xkKSkgIT09IHN0YXRlLmNoZWNrKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgZGF0YSBjaGVjayc7XG4gICAgICAgICAgICBzdGF0ZS5tb2RlID0gQkFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vPT09IElOSVRCSVRTKCk7XG4gICAgICAgICAgaG9sZCA9IDA7XG4gICAgICAgICAgYml0cyA9IDA7XG4gICAgICAgICAgLy89PT0vL1xuICAgICAgICAgIC8vVHJhY2V2KChzdGRlcnIsIFwiaW5mbGF0ZTogICBjaGVjayBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBMRU5HVEg7XG4gICAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgTEVOR1RIOlxuICAgICAgICBpZiAoc3RhdGUud3JhcCAmJiBzdGF0ZS5mbGFncykge1xuICAgICAgICAgIC8vPT09IE5FRURCSVRTKDMyKTtcbiAgICAgICAgICB3aGlsZSAoYml0cyA8IDMyKSB7XG4gICAgICAgICAgICBpZiAoaGF2ZSA9PT0gMCkgeyBicmVhayBpbmZfbGVhdmU7IH1cbiAgICAgICAgICAgIGhhdmUtLTtcbiAgICAgICAgICAgIGhvbGQgKz0gaW5wdXRbbmV4dCsrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgaWYgKGhvbGQgIT09IChzdGF0ZS50b3RhbCAmIDB4ZmZmZmZmZmYpKSB7XG4gICAgICAgICAgICBzdHJtLm1zZyA9ICdpbmNvcnJlY3QgbGVuZ3RoIGNoZWNrJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy89PT0gSU5JVEJJVFMoKTtcbiAgICAgICAgICBob2xkID0gMDtcbiAgICAgICAgICBiaXRzID0gMDtcbiAgICAgICAgICAvLz09PS8vXG4gICAgICAgICAgLy9UcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGxlbmd0aCBtYXRjaGVzIHRyYWlsZXJcXG5cIikpO1xuICAgICAgICB9XG4gICAgICAgIHN0YXRlLm1vZGUgPSBET05FO1xuICAgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG4gICAgICBjYXNlIERPTkU6XG4gICAgICAgIHJldCA9IFpfU1RSRUFNX0VORDtcbiAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgY2FzZSBCQUQ6XG4gICAgICAgIHJldCA9IFpfREFUQV9FUlJPUjtcbiAgICAgICAgYnJlYWsgaW5mX2xlYXZlO1xuICAgICAgY2FzZSBNRU06XG4gICAgICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgICAgIGNhc2UgU1lOQzpcbiAgICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICAgIH1cbiAgfVxuXG4gIC8vIGluZl9sZWF2ZSA8LSBoZXJlIGlzIHJlYWwgcGxhY2UgZm9yIFwiZ290byBpbmZfbGVhdmVcIiwgZW11bGF0ZWQgdmlhIFwiYnJlYWsgaW5mX2xlYXZlXCJcblxuICAvKlxuICAgICBSZXR1cm4gZnJvbSBpbmZsYXRlKCksIHVwZGF0aW5nIHRoZSB0b3RhbCBjb3VudHMgYW5kIHRoZSBjaGVjayB2YWx1ZS5cbiAgICAgSWYgdGhlcmUgd2FzIG5vIHByb2dyZXNzIGR1cmluZyB0aGUgaW5mbGF0ZSgpIGNhbGwsIHJldHVybiBhIGJ1ZmZlclxuICAgICBlcnJvci4gIENhbGwgdXBkYXRld2luZG93KCkgdG8gY3JlYXRlIGFuZC9vciB1cGRhdGUgdGhlIHdpbmRvdyBzdGF0ZS5cbiAgICAgTm90ZTogYSBtZW1vcnkgZXJyb3IgZnJvbSBpbmZsYXRlKCkgaXMgbm9uLXJlY292ZXJhYmxlLlxuICAgKi9cblxuICAvLy0tLSBSRVNUT1JFKCkgLS0tXG4gIHN0cm0ubmV4dF9vdXQgPSBwdXQ7XG4gIHN0cm0uYXZhaWxfb3V0ID0gbGVmdDtcbiAgc3RybS5uZXh0X2luID0gbmV4dDtcbiAgc3RybS5hdmFpbF9pbiA9IGhhdmU7XG4gIHN0YXRlLmhvbGQgPSBob2xkO1xuICBzdGF0ZS5iaXRzID0gYml0cztcbiAgLy8tLS1cblxuICBpZiAoc3RhdGUud3NpemUgfHwgKF9vdXQgIT09IHN0cm0uYXZhaWxfb3V0ICYmIHN0YXRlLm1vZGUgPCBCQUQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA8IENIRUNLIHx8IGZsdXNoICE9PSBaX0ZJTklTSCkpKSB7XG4gICAgaWYgKHVwZGF0ZXdpbmRvdyhzdHJtLCBzdHJtLm91dHB1dCwgc3RybS5uZXh0X291dCwgX291dCAtIHN0cm0uYXZhaWxfb3V0KSkge1xuICAgICAgc3RhdGUubW9kZSA9IE1FTTtcbiAgICAgIHJldHVybiBaX01FTV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgX2luIC09IHN0cm0uYXZhaWxfaW47XG4gIF9vdXQgLT0gc3RybS5hdmFpbF9vdXQ7XG4gIHN0cm0udG90YWxfaW4gKz0gX2luO1xuICBzdHJtLnRvdGFsX291dCArPSBfb3V0O1xuICBzdGF0ZS50b3RhbCArPSBfb3V0O1xuICBpZiAoc3RhdGUud3JhcCAmJiBfb3V0KSB7XG4gICAgc3RybS5hZGxlciA9IHN0YXRlLmNoZWNrID0gLypVUERBVEUoc3RhdGUuY2hlY2ssIHN0cm0ubmV4dF9vdXQgLSBfb3V0LCBfb3V0KTsqL1xuICAgICAgKHN0YXRlLmZsYWdzID8gY3JjMzIoc3RhdGUuY2hlY2ssIG91dHB1dCwgX291dCwgc3RybS5uZXh0X291dCAtIF9vdXQpIDogYWRsZXIzMihzdGF0ZS5jaGVjaywgb3V0cHV0LCBfb3V0LCBzdHJtLm5leHRfb3V0IC0gX291dCkpO1xuICB9XG4gIHN0cm0uZGF0YV90eXBlID0gc3RhdGUuYml0cyArIChzdGF0ZS5sYXN0ID8gNjQgOiAwKSArXG4gICAgICAgICAgICAgICAgICAgIChzdGF0ZS5tb2RlID09PSBUWVBFID8gMTI4IDogMCkgK1xuICAgICAgICAgICAgICAgICAgICAoc3RhdGUubW9kZSA9PT0gTEVOXyB8fCBzdGF0ZS5tb2RlID09PSBDT1BZXyA/IDI1NiA6IDApO1xuICBpZiAoKChfaW4gPT09IDAgJiYgX291dCA9PT0gMCkgfHwgZmx1c2ggPT09IFpfRklOSVNIKSAmJiByZXQgPT09IFpfT0spIHtcbiAgICByZXQgPSBaX0JVRl9FUlJPUjtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBpbmZsYXRlRW5kKHN0cm0pIHtcblxuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUgLyp8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTAqLykge1xuICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjtcbiAgfVxuXG4gIHZhciBzdGF0ZSA9IHN0cm0uc3RhdGU7XG4gIGlmIChzdGF0ZS53aW5kb3cpIHtcbiAgICBzdGF0ZS53aW5kb3cgPSBudWxsO1xuICB9XG4gIHN0cm0uc3RhdGUgPSBudWxsO1xuICByZXR1cm4gWl9PSztcbn1cblxuZnVuY3Rpb24gaW5mbGF0ZUdldEhlYWRlcihzdHJtLCBoZWFkKSB7XG4gIHZhciBzdGF0ZTtcblxuICAvKiBjaGVjayBzdGF0ZSAqL1xuICBpZiAoIXN0cm0gfHwgIXN0cm0uc3RhdGUpIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcbiAgaWYgKChzdGF0ZS53cmFwICYgMikgPT09IDApIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG5cbiAgLyogc2F2ZSBoZWFkZXIgc3RydWN0dXJlICovXG4gIHN0YXRlLmhlYWQgPSBoZWFkO1xuICBoZWFkLmRvbmUgPSBmYWxzZTtcbiAgcmV0dXJuIFpfT0s7XG59XG5cbmZ1bmN0aW9uIGluZmxhdGVTZXREaWN0aW9uYXJ5KHN0cm0sIGRpY3Rpb25hcnkpIHtcbiAgdmFyIGRpY3RMZW5ndGggPSBkaWN0aW9uYXJ5Lmxlbmd0aDtcblxuICB2YXIgc3RhdGU7XG4gIHZhciBkaWN0aWQ7XG4gIHZhciByZXQ7XG5cbiAgLyogY2hlY2sgc3RhdGUgKi9cbiAgaWYgKCFzdHJtIC8qID09IFpfTlVMTCAqLyB8fCAhc3RybS5zdGF0ZSAvKiA9PSBaX05VTEwgKi8pIHsgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOyB9XG4gIHN0YXRlID0gc3RybS5zdGF0ZTtcblxuICBpZiAoc3RhdGUud3JhcCAhPT0gMCAmJiBzdGF0ZS5tb2RlICE9PSBESUNUKSB7XG4gICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SO1xuICB9XG5cbiAgLyogY2hlY2sgZm9yIGNvcnJlY3QgZGljdGlvbmFyeSBpZGVudGlmaWVyICovXG4gIGlmIChzdGF0ZS5tb2RlID09PSBESUNUKSB7XG4gICAgZGljdGlkID0gMTsgLyogYWRsZXIzMigwLCBudWxsLCAwKSovXG4gICAgLyogZGljdGlkID0gYWRsZXIzMihkaWN0aWQsIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpOyAqL1xuICAgIGRpY3RpZCA9IGFkbGVyMzIoZGljdGlkLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoLCAwKTtcbiAgICBpZiAoZGljdGlkICE9PSBzdGF0ZS5jaGVjaykge1xuICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLyogY29weSBkaWN0aW9uYXJ5IHRvIHdpbmRvdyB1c2luZyB1cGRhdGV3aW5kb3coKSwgd2hpY2ggd2lsbCBhbWVuZCB0aGVcbiAgIGV4aXN0aW5nIGRpY3Rpb25hcnkgaWYgYXBwcm9wcmlhdGUgKi9cbiAgcmV0ID0gdXBkYXRld2luZG93KHN0cm0sIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgsIGRpY3RMZW5ndGgpO1xuICBpZiAocmV0KSB7XG4gICAgc3RhdGUubW9kZSA9IE1FTTtcbiAgICByZXR1cm4gWl9NRU1fRVJST1I7XG4gIH1cbiAgc3RhdGUuaGF2ZWRpY3QgPSAxO1xuICAvLyBUcmFjZXYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgIGRpY3Rpb25hcnkgc2V0XFxuXCIpKTtcbiAgcmV0dXJuIFpfT0s7XG59XG5cbmV4cG9ydHMuaW5mbGF0ZVJlc2V0ID0gaW5mbGF0ZVJlc2V0O1xuZXhwb3J0cy5pbmZsYXRlUmVzZXQyID0gaW5mbGF0ZVJlc2V0MjtcbmV4cG9ydHMuaW5mbGF0ZVJlc2V0S2VlcCA9IGluZmxhdGVSZXNldEtlZXA7XG5leHBvcnRzLmluZmxhdGVJbml0ID0gaW5mbGF0ZUluaXQ7XG5leHBvcnRzLmluZmxhdGVJbml0MiA9IGluZmxhdGVJbml0MjtcbmV4cG9ydHMuaW5mbGF0ZSA9IGluZmxhdGU7XG5leHBvcnRzLmluZmxhdGVFbmQgPSBpbmZsYXRlRW5kO1xuZXhwb3J0cy5pbmZsYXRlR2V0SGVhZGVyID0gaW5mbGF0ZUdldEhlYWRlcjtcbmV4cG9ydHMuaW5mbGF0ZVNldERpY3Rpb25hcnkgPSBpbmZsYXRlU2V0RGljdGlvbmFyeTtcbmV4cG9ydHMuaW5mbGF0ZUluZm8gPSAncGFrbyBpbmZsYXRlIChmcm9tIE5vZGVjYSBwcm9qZWN0KSc7XG5cbi8qIE5vdCBpbXBsZW1lbnRlZFxuZXhwb3J0cy5pbmZsYXRlQ29weSA9IGluZmxhdGVDb3B5O1xuZXhwb3J0cy5pbmZsYXRlR2V0RGljdGlvbmFyeSA9IGluZmxhdGVHZXREaWN0aW9uYXJ5O1xuZXhwb3J0cy5pbmZsYXRlTWFyayA9IGluZmxhdGVNYXJrO1xuZXhwb3J0cy5pbmZsYXRlUHJpbWUgPSBpbmZsYXRlUHJpbWU7XG5leHBvcnRzLmluZmxhdGVTeW5jID0gaW5mbGF0ZVN5bmM7XG5leHBvcnRzLmluZmxhdGVTeW5jUG9pbnQgPSBpbmZsYXRlU3luY1BvaW50O1xuZXhwb3J0cy5pbmZsYXRlVW5kZXJtaW5lID0gaW5mbGF0ZVVuZGVybWluZTtcbiovXG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxuLy8gU2VlIHN0YXRlIGRlZnMgZnJvbSBpbmZsYXRlLmpzXG52YXIgQkFEID0gMzA7ICAgICAgIC8qIGdvdCBhIGRhdGEgZXJyb3IgLS0gcmVtYWluIGhlcmUgdW50aWwgcmVzZXQgKi9cbnZhciBUWVBFID0gMTI7ICAgICAgLyogaTogd2FpdGluZyBmb3IgdHlwZSBiaXRzLCBpbmNsdWRpbmcgbGFzdC1mbGFnIGJpdCAqL1xuXG4vKlxuICAgRGVjb2RlIGxpdGVyYWwsIGxlbmd0aCwgYW5kIGRpc3RhbmNlIGNvZGVzIGFuZCB3cml0ZSBvdXQgdGhlIHJlc3VsdGluZ1xuICAgbGl0ZXJhbCBhbmQgbWF0Y2ggYnl0ZXMgdW50aWwgZWl0aGVyIG5vdCBlbm91Z2ggaW5wdXQgb3Igb3V0cHV0IGlzXG4gICBhdmFpbGFibGUsIGFuIGVuZC1vZi1ibG9jayBpcyBlbmNvdW50ZXJlZCwgb3IgYSBkYXRhIGVycm9yIGlzIGVuY291bnRlcmVkLlxuICAgV2hlbiBsYXJnZSBlbm91Z2ggaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzIGFyZSBzdXBwbGllZCB0byBpbmZsYXRlKCksIGZvclxuICAgZXhhbXBsZSwgYSAxNksgaW5wdXQgYnVmZmVyIGFuZCBhIDY0SyBvdXRwdXQgYnVmZmVyLCBtb3JlIHRoYW4gOTUlIG9mIHRoZVxuICAgaW5mbGF0ZSBleGVjdXRpb24gdGltZSBpcyBzcGVudCBpbiB0aGlzIHJvdXRpbmUuXG5cbiAgIEVudHJ5IGFzc3VtcHRpb25zOlxuXG4gICAgICAgIHN0YXRlLm1vZGUgPT09IExFTlxuICAgICAgICBzdHJtLmF2YWlsX2luID49IDZcbiAgICAgICAgc3RybS5hdmFpbF9vdXQgPj0gMjU4XG4gICAgICAgIHN0YXJ0ID49IHN0cm0uYXZhaWxfb3V0XG4gICAgICAgIHN0YXRlLmJpdHMgPCA4XG5cbiAgIE9uIHJldHVybiwgc3RhdGUubW9kZSBpcyBvbmUgb2Y6XG5cbiAgICAgICAgTEVOIC0tIHJhbiBvdXQgb2YgZW5vdWdoIG91dHB1dCBzcGFjZSBvciBlbm91Z2ggYXZhaWxhYmxlIGlucHV0XG4gICAgICAgIFRZUEUgLS0gcmVhY2hlZCBlbmQgb2YgYmxvY2sgY29kZSwgaW5mbGF0ZSgpIHRvIGludGVycHJldCBuZXh0IGJsb2NrXG4gICAgICAgIEJBRCAtLSBlcnJvciBpbiBibG9jayBkYXRhXG5cbiAgIE5vdGVzOlxuXG4gICAgLSBUaGUgbWF4aW11bSBpbnB1dCBiaXRzIHVzZWQgYnkgYSBsZW5ndGgvZGlzdGFuY2UgcGFpciBpcyAxNSBiaXRzIGZvciB0aGVcbiAgICAgIGxlbmd0aCBjb2RlLCA1IGJpdHMgZm9yIHRoZSBsZW5ndGggZXh0cmEsIDE1IGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBjb2RlLFxuICAgICAgYW5kIDEzIGJpdHMgZm9yIHRoZSBkaXN0YW5jZSBleHRyYS4gIFRoaXMgdG90YWxzIDQ4IGJpdHMsIG9yIHNpeCBieXRlcy5cbiAgICAgIFRoZXJlZm9yZSBpZiBzdHJtLmF2YWlsX2luID49IDYsIHRoZW4gdGhlcmUgaXMgZW5vdWdoIGlucHV0IHRvIGF2b2lkXG4gICAgICBjaGVja2luZyBmb3IgYXZhaWxhYmxlIGlucHV0IHdoaWxlIGRlY29kaW5nLlxuXG4gICAgLSBUaGUgbWF4aW11bSBieXRlcyB0aGF0IGEgc2luZ2xlIGxlbmd0aC9kaXN0YW5jZSBwYWlyIGNhbiBvdXRwdXQgaXMgMjU4XG4gICAgICBieXRlcywgd2hpY2ggaXMgdGhlIG1heGltdW0gbGVuZ3RoIHRoYXQgY2FuIGJlIGNvZGVkLiAgaW5mbGF0ZV9mYXN0KClcbiAgICAgIHJlcXVpcmVzIHN0cm0uYXZhaWxfb3V0ID49IDI1OCBmb3IgZWFjaCBsb29wIHRvIGF2b2lkIGNoZWNraW5nIGZvclxuICAgICAgb3V0cHV0IHNwYWNlLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluZmxhdGVfZmFzdChzdHJtLCBzdGFydCkge1xuICB2YXIgc3RhdGU7XG4gIHZhciBfaW47ICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmlucHV0ICovXG4gIHZhciBsYXN0OyAgICAgICAgICAgICAgICAgICAvKiBoYXZlIGVub3VnaCBpbnB1dCB3aGlsZSBpbiA8IGxhc3QgKi9cbiAgdmFyIF9vdXQ7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0ub3V0cHV0ICovXG4gIHZhciBiZWc7ICAgICAgICAgICAgICAgICAgICAvKiBpbmZsYXRlKCkncyBpbml0aWFsIHN0cm0ub3V0cHV0ICovXG4gIHZhciBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB3aGlsZSBvdXQgPCBlbmQsIGVub3VnaCBzcGFjZSBhdmFpbGFibGUgKi9cbi8vI2lmZGVmIElORkxBVEVfU1RSSUNUXG4gIHZhciBkbWF4OyAgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIGRpc3RhbmNlIGZyb20gemxpYiBoZWFkZXIgKi9cbi8vI2VuZGlmXG4gIHZhciB3c2l6ZTsgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBvciB6ZXJvIGlmIG5vdCB1c2luZyB3aW5kb3cgKi9cbiAgdmFyIHdoYXZlOyAgICAgICAgICAgICAgICAgIC8qIHZhbGlkIGJ5dGVzIGluIHRoZSB3aW5kb3cgKi9cbiAgdmFyIHduZXh0OyAgICAgICAgICAgICAgICAgIC8qIHdpbmRvdyB3cml0ZSBpbmRleCAqL1xuICAvLyBVc2UgYHNfd2luZG93YCBpbnN0ZWFkIGB3aW5kb3dgLCBhdm9pZCBjb25mbGljdCB3aXRoIGluc3RydW1lbnRhdGlvbiB0b29sc1xuICB2YXIgc193aW5kb3c7ICAgICAgICAgICAgICAgLyogYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCBpZiB3c2l6ZSAhPSAwICovXG4gIHZhciBob2xkOyAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmhvbGQgKi9cbiAgdmFyIGJpdHM7ICAgICAgICAgICAgICAgICAgIC8qIGxvY2FsIHN0cm0uYml0cyAqL1xuICB2YXIgbGNvZGU7ICAgICAgICAgICAgICAgICAgLyogbG9jYWwgc3RybS5sZW5jb2RlICovXG4gIHZhciBkY29kZTsgICAgICAgICAgICAgICAgICAvKiBsb2NhbCBzdHJtLmRpc3Rjb2RlICovXG4gIHZhciBsbWFzazsgICAgICAgICAgICAgICAgICAvKiBtYXNrIGZvciBmaXJzdCBsZXZlbCBvZiBsZW5ndGggY29kZXMgKi9cbiAgdmFyIGRtYXNrOyAgICAgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGZpcnN0IGxldmVsIG9mIGRpc3RhbmNlIGNvZGVzICovXG4gIHZhciBoZXJlOyAgICAgICAgICAgICAgICAgICAvKiByZXRyaWV2ZWQgdGFibGUgZW50cnkgKi9cbiAgdmFyIG9wOyAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGUgYml0cywgb3BlcmF0aW9uLCBleHRyYSBiaXRzLCBvciAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIHdpbmRvdyBwb3NpdGlvbiwgd2luZG93IGJ5dGVzIHRvIGNvcHkgKi9cbiAgdmFyIGxlbjsgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoIGxlbmd0aCwgdW51c2VkIGJ5dGVzICovXG4gIHZhciBkaXN0OyAgICAgICAgICAgICAgICAgICAvKiBtYXRjaCBkaXN0YW5jZSAqL1xuICB2YXIgZnJvbTsgICAgICAgICAgICAgICAgICAgLyogd2hlcmUgdG8gY29weSBtYXRjaCBmcm9tICovXG4gIHZhciBmcm9tX3NvdXJjZTtcblxuXG4gIHZhciBpbnB1dCwgb3V0cHV0OyAvLyBKUyBzcGVjaWZpYywgYmVjYXVzZSB3ZSBoYXZlIG5vIHBvaW50ZXJzXG5cbiAgLyogY29weSBzdGF0ZSB0byBsb2NhbCB2YXJpYWJsZXMgKi9cbiAgc3RhdGUgPSBzdHJtLnN0YXRlO1xuICAvL2hlcmUgPSBzdGF0ZS5oZXJlO1xuICBfaW4gPSBzdHJtLm5leHRfaW47XG4gIGlucHV0ID0gc3RybS5pbnB1dDtcbiAgbGFzdCA9IF9pbiArIChzdHJtLmF2YWlsX2luIC0gNSk7XG4gIF9vdXQgPSBzdHJtLm5leHRfb3V0O1xuICBvdXRwdXQgPSBzdHJtLm91dHB1dDtcbiAgYmVnID0gX291dCAtIChzdGFydCAtIHN0cm0uYXZhaWxfb3V0KTtcbiAgZW5kID0gX291dCArIChzdHJtLmF2YWlsX291dCAtIDI1Nyk7XG4vLyNpZmRlZiBJTkZMQVRFX1NUUklDVFxuICBkbWF4ID0gc3RhdGUuZG1heDtcbi8vI2VuZGlmXG4gIHdzaXplID0gc3RhdGUud3NpemU7XG4gIHdoYXZlID0gc3RhdGUud2hhdmU7XG4gIHduZXh0ID0gc3RhdGUud25leHQ7XG4gIHNfd2luZG93ID0gc3RhdGUud2luZG93O1xuICBob2xkID0gc3RhdGUuaG9sZDtcbiAgYml0cyA9IHN0YXRlLmJpdHM7XG4gIGxjb2RlID0gc3RhdGUubGVuY29kZTtcbiAgZGNvZGUgPSBzdGF0ZS5kaXN0Y29kZTtcbiAgbG1hc2sgPSAoMSA8PCBzdGF0ZS5sZW5iaXRzKSAtIDE7XG4gIGRtYXNrID0gKDEgPDwgc3RhdGUuZGlzdGJpdHMpIC0gMTtcblxuXG4gIC8qIGRlY29kZSBsaXRlcmFscyBhbmQgbGVuZ3RoL2Rpc3RhbmNlcyB1bnRpbCBlbmQtb2YtYmxvY2sgb3Igbm90IGVub3VnaFxuICAgICBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSAqL1xuXG4gIHRvcDpcbiAgZG8ge1xuICAgIGlmIChiaXRzIDwgMTUpIHtcbiAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICBiaXRzICs9IDg7XG4gICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgYml0cyArPSA4O1xuICAgIH1cblxuICAgIGhlcmUgPSBsY29kZVtob2xkICYgbG1hc2tdO1xuXG4gICAgZG9sZW46XG4gICAgZm9yICg7OykgeyAvLyBHb3RvIGVtdWxhdGlvblxuICAgICAgb3AgPSBoZXJlID4+PiAyNC8qaGVyZS5iaXRzKi87XG4gICAgICBob2xkID4+Pj0gb3A7XG4gICAgICBiaXRzIC09IG9wO1xuICAgICAgb3AgPSAoaGVyZSA+Pj4gMTYpICYgMHhmZi8qaGVyZS5vcCovO1xuICAgICAgaWYgKG9wID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaXRlcmFsICovXG4gICAgICAgIC8vVHJhY2V2digoc3RkZXJyLCBoZXJlLnZhbCA+PSAweDIwICYmIGhlcmUudmFsIDwgMHg3ZiA/XG4gICAgICAgIC8vICAgICAgICBcImluZmxhdGU6ICAgICAgICAgbGl0ZXJhbCAnJWMnXFxuXCIgOlxuICAgICAgICAvLyAgICAgICAgXCJpbmZsYXRlOiAgICAgICAgIGxpdGVyYWwgMHglMDJ4XFxuXCIsIGhlcmUudmFsKSk7XG4gICAgICAgIG91dHB1dFtfb3V0KytdID0gaGVyZSAmIDB4ZmZmZi8qaGVyZS52YWwqLztcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKG9wICYgMTYpIHsgICAgICAgICAgICAgICAgICAgICAvKiBsZW5ndGggYmFzZSAqL1xuICAgICAgICBsZW4gPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovO1xuICAgICAgICBvcCAmPSAxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqL1xuICAgICAgICBpZiAob3ApIHtcbiAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7XG4gICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIH1cbiAgICAgICAgICBsZW4gKz0gaG9sZCAmICgoMSA8PCBvcCkgLSAxKTtcbiAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgYml0cyAtPSBvcDtcbiAgICAgICAgfVxuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGxlbmd0aCAldVxcblwiLCBsZW4pKTtcbiAgICAgICAgaWYgKGJpdHMgPCAxNSkge1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICAgIGhvbGQgKz0gaW5wdXRbX2luKytdIDw8IGJpdHM7XG4gICAgICAgICAgYml0cyArPSA4O1xuICAgICAgICB9XG4gICAgICAgIGhlcmUgPSBkY29kZVtob2xkICYgZG1hc2tdO1xuXG4gICAgICAgIGRvZGlzdDpcbiAgICAgICAgZm9yICg7OykgeyAvLyBnb3RvIGVtdWxhdGlvblxuICAgICAgICAgIG9wID0gaGVyZSA+Pj4gMjQvKmhlcmUuYml0cyovO1xuICAgICAgICAgIGhvbGQgPj4+PSBvcDtcbiAgICAgICAgICBiaXRzIC09IG9wO1xuICAgICAgICAgIG9wID0gKGhlcmUgPj4+IDE2KSAmIDB4ZmYvKmhlcmUub3AqLztcblxuICAgICAgICAgIGlmIChvcCAmIDE2KSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc3RhbmNlIGJhc2UgKi9cbiAgICAgICAgICAgIGRpc3QgPSBoZXJlICYgMHhmZmZmLypoZXJlLnZhbCovO1xuICAgICAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqL1xuICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkge1xuICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICBiaXRzICs9IDg7XG4gICAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHtcbiAgICAgICAgICAgICAgICBob2xkICs9IGlucHV0W19pbisrXSA8PCBiaXRzO1xuICAgICAgICAgICAgICAgIGJpdHMgKz0gODtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzdCArPSBob2xkICYgKCgxIDw8IG9wKSAtIDEpO1xuLy8jaWZkZWYgSU5GTEFURV9TVFJJQ1RcbiAgICAgICAgICAgIGlmIChkaXN0ID4gZG1heCkge1xuICAgICAgICAgICAgICBzdHJtLm1zZyA9ICdpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjayc7XG4gICAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICAgIGJyZWFrIHRvcDtcbiAgICAgICAgICAgIH1cbi8vI2VuZGlmXG4gICAgICAgICAgICBob2xkID4+Pj0gb3A7XG4gICAgICAgICAgICBiaXRzIC09IG9wO1xuICAgICAgICAgICAgLy9UcmFjZXZ2KChzdGRlcnIsIFwiaW5mbGF0ZTogICAgICAgICBkaXN0YW5jZSAldVxcblwiLCBkaXN0KSk7XG4gICAgICAgICAgICBvcCA9IF9vdXQgLSBiZWc7ICAgICAgICAgICAgICAgIC8qIG1heCBkaXN0YW5jZSBpbiBvdXRwdXQgKi9cbiAgICAgICAgICAgIGlmIChkaXN0ID4gb3ApIHsgICAgICAgICAgICAgICAgLyogc2VlIGlmIGNvcHkgZnJvbSB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgb3AgPSBkaXN0IC0gb3A7ICAgICAgICAgICAgICAgLyogZGlzdGFuY2UgYmFjayBpbiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgaWYgKG9wID4gd2hhdmUpIHtcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUuc2FuZSkge1xuICAgICAgICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSB0b28gZmFyIGJhY2snO1xuICAgICAgICAgICAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIHRvcDtcbiAgICAgICAgICAgICAgICB9XG5cbi8vICghKSBUaGlzIGJsb2NrIGlzIGRpc2FibGVkIGluIHpsaWIgZGVmYXVsdHMsXG4vLyBkb24ndCBlbmFibGUgaXQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5XG4vLyNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlJcbi8vICAgICAgICAgICAgICAgIGlmIChsZW4gPD0gb3AgLSB3aGF2ZSkge1xuLy8gICAgICAgICAgICAgICAgICBkbyB7XG4vLyAgICAgICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSAwO1xuLy8gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7XG4vLyAgICAgICAgICAgICAgICAgIGNvbnRpbnVlIHRvcDtcbi8vICAgICAgICAgICAgICAgIH1cbi8vICAgICAgICAgICAgICAgIGxlbiAtPSBvcCAtIHdoYXZlO1xuLy8gICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IDA7XG4vLyAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wID4gd2hhdmUpO1xuLy8gICAgICAgICAgICAgICAgaWYgKG9wID09PSAwKSB7XG4vLyAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDtcbi8vICAgICAgICAgICAgICAgICAgZG8ge1xuLy8gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4vLyAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTtcbi8vICAgICAgICAgICAgICAgICAgY29udGludWUgdG9wO1xuLy8gICAgICAgICAgICAgICAgfVxuLy8jZW5kaWZcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmcm9tID0gMDsgLy8gd2luZG93IGluZGV4XG4gICAgICAgICAgICAgIGZyb21fc291cmNlID0gc193aW5kb3c7XG4gICAgICAgICAgICAgIGlmICh3bmV4dCA9PT0gMCkgeyAgICAgICAgICAgLyogdmVyeSBjb21tb24gY2FzZSAqL1xuICAgICAgICAgICAgICAgIGZyb20gKz0gd3NpemUgLSBvcDtcbiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gd2luZG93ICovXG4gICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7XG4gICAgICAgICAgICAgICAgICBkbyB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApO1xuICAgICAgICAgICAgICAgICAgZnJvbSA9IF9vdXQgLSBkaXN0OyAgLyogcmVzdCBmcm9tIG91dHB1dCAqL1xuICAgICAgICAgICAgICAgICAgZnJvbV9zb3VyY2UgPSBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGVsc2UgaWYgKHduZXh0IDwgb3ApIHsgICAgICAvKiB3cmFwIGFyb3VuZCB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHdzaXplICsgd25leHQgLSBvcDtcbiAgICAgICAgICAgICAgICBvcCAtPSB3bmV4dDtcbiAgICAgICAgICAgICAgICBpZiAob3AgPCBsZW4pIHsgICAgICAgICAvKiBzb21lIGZyb20gZW5kIG9mIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSAwO1xuICAgICAgICAgICAgICAgICAgaWYgKHduZXh0IDwgbGVuKSB7ICAvKiBzb21lIGZyb20gc3RhcnQgb2Ygd2luZG93ICovXG4gICAgICAgICAgICAgICAgICAgIG9wID0gd25leHQ7XG4gICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDtcbiAgICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gc193aW5kb3dbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7XG4gICAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgICAgICAvKiByZXN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgLyogY29udGlndW91cyBpbiB3aW5kb3cgKi9cbiAgICAgICAgICAgICAgICBmcm9tICs9IHduZXh0IC0gb3A7XG4gICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqL1xuICAgICAgICAgICAgICAgICAgbGVuIC09IG9wO1xuICAgICAgICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IHNfd2luZG93W2Zyb20rK107XG4gICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLW9wKTtcbiAgICAgICAgICAgICAgICAgIGZyb20gPSBfb3V0IC0gZGlzdDsgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi9cbiAgICAgICAgICAgICAgICAgIGZyb21fc291cmNlID0gb3V0cHV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB3aGlsZSAobGVuID4gMikge1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBmcm9tX3NvdXJjZVtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGxlbiAtPSAzO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IGZyb21fc291cmNlW2Zyb20rK107XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gZnJvbV9zb3VyY2VbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICBmcm9tID0gX291dCAtIGRpc3Q7ICAgICAgICAgIC8qIGNvcHkgZGlyZWN0IGZyb20gb3V0cHV0ICovXG4gICAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbXVtIGxlbmd0aCBpcyB0aHJlZSAqL1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgb3V0cHV0W19vdXQrK10gPSBvdXRwdXRbZnJvbSsrXTtcbiAgICAgICAgICAgICAgICBvdXRwdXRbX291dCsrXSA9IG91dHB1dFtmcm9tKytdO1xuICAgICAgICAgICAgICAgIGxlbiAtPSAzO1xuICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gPiAyKTtcbiAgICAgICAgICAgICAgaWYgKGxlbikge1xuICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IDEpIHtcbiAgICAgICAgICAgICAgICAgIG91dHB1dFtfb3V0KytdID0gb3V0cHV0W2Zyb20rK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYgKChvcCAmIDY0KSA9PT0gMCkgeyAgICAgICAgICAvKiAybmQgbGV2ZWwgZGlzdGFuY2UgY29kZSAqL1xuICAgICAgICAgICAgaGVyZSA9IGRjb2RlWyhoZXJlICYgMHhmZmZmKS8qaGVyZS52YWwqLyArIChob2xkICYgKCgxIDw8IG9wKSAtIDEpKV07XG4gICAgICAgICAgICBjb250aW51ZSBkb2Rpc3Q7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBkaXN0YW5jZSBjb2RlJztcbiAgICAgICAgICAgIHN0YXRlLm1vZGUgPSBCQUQ7XG4gICAgICAgICAgICBicmVhayB0b3A7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7IC8vIG5lZWQgdG8gZW11bGF0ZSBnb3RvIHZpYSBcImNvbnRpbnVlXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSBpZiAoKG9wICYgNjQpID09PSAwKSB7ICAgICAgICAgICAgICAvKiAybmQgbGV2ZWwgbGVuZ3RoIGNvZGUgKi9cbiAgICAgICAgaGVyZSA9IGxjb2RlWyhoZXJlICYgMHhmZmZmKS8qaGVyZS52YWwqLyArIChob2xkICYgKCgxIDw8IG9wKSAtIDEpKV07XG4gICAgICAgIGNvbnRpbnVlIGRvbGVuO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAob3AgJiAzMikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGVuZC1vZi1ibG9jayAqL1xuICAgICAgICAvL1RyYWNldnYoKHN0ZGVyciwgXCJpbmZsYXRlOiAgICAgICAgIGVuZCBvZiBibG9ja1xcblwiKSk7XG4gICAgICAgIHN0YXRlLm1vZGUgPSBUWVBFO1xuICAgICAgICBicmVhayB0b3A7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgc3RybS5tc2cgPSAnaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlJztcbiAgICAgICAgc3RhdGUubW9kZSA9IEJBRDtcbiAgICAgICAgYnJlYWsgdG9wO1xuICAgICAgfVxuXG4gICAgICBicmVhazsgLy8gbmVlZCB0byBlbXVsYXRlIGdvdG8gdmlhIFwiY29udGludWVcIlxuICAgIH1cbiAgfSB3aGlsZSAoX2luIDwgbGFzdCAmJiBfb3V0IDwgZW5kKTtcblxuICAvKiByZXR1cm4gdW51c2VkIGJ5dGVzIChvbiBlbnRyeSwgYml0cyA8IDgsIHNvIGluIHdvbid0IGdvIHRvbyBmYXIgYmFjaykgKi9cbiAgbGVuID0gYml0cyA+PiAzO1xuICBfaW4gLT0gbGVuO1xuICBiaXRzIC09IGxlbiA8PCAzO1xuICBob2xkICY9ICgxIDw8IGJpdHMpIC0gMTtcblxuICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqL1xuICBzdHJtLm5leHRfaW4gPSBfaW47XG4gIHN0cm0ubmV4dF9vdXQgPSBfb3V0O1xuICBzdHJtLmF2YWlsX2luID0gKF9pbiA8IGxhc3QgPyA1ICsgKGxhc3QgLSBfaW4pIDogNSAtIChfaW4gLSBsYXN0KSk7XG4gIHN0cm0uYXZhaWxfb3V0ID0gKF9vdXQgPCBlbmQgPyAyNTcgKyAoZW5kIC0gX291dCkgOiAyNTcgLSAoX291dCAtIGVuZCkpO1xuICBzdGF0ZS5ob2xkID0gaG9sZDtcbiAgc3RhdGUuYml0cyA9IGJpdHM7XG4gIHJldHVybjtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxudmFyIHV0aWxzID0gcmVxdWlyZSgnLi4vdXRpbHMvY29tbW9uJyk7XG5cbnZhciBNQVhCSVRTID0gMTU7XG52YXIgRU5PVUdIX0xFTlMgPSA4NTI7XG52YXIgRU5PVUdIX0RJU1RTID0gNTkyO1xuLy92YXIgRU5PVUdIID0gKEVOT1VHSF9MRU5TK0VOT1VHSF9ESVNUUyk7XG5cbnZhciBDT0RFUyA9IDA7XG52YXIgTEVOUyA9IDE7XG52YXIgRElTVFMgPSAyO1xuXG52YXIgbGJhc2UgPSBbIC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovXG4gIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTMsIDE1LCAxNywgMTksIDIzLCAyNywgMzEsXG4gIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwXG5dO1xuXG52YXIgbGV4dCA9IFsgLyogTGVuZ3RoIGNvZGVzIDI1Ny4uMjg1IGV4dHJhICovXG4gIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxNywgMTcsIDE4LCAxOCwgMTgsIDE4LFxuICAxOSwgMTksIDE5LCAxOSwgMjAsIDIwLCAyMCwgMjAsIDIxLCAyMSwgMjEsIDIxLCAxNiwgNzIsIDc4XG5dO1xuXG52YXIgZGJhc2UgPSBbIC8qIERpc3RhbmNlIGNvZGVzIDAuLjI5IGJhc2UgKi9cbiAgMSwgMiwgMywgNCwgNSwgNywgOSwgMTMsIDE3LCAyNSwgMzMsIDQ5LCA2NSwgOTcsIDEyOSwgMTkzLFxuICAyNTcsIDM4NSwgNTEzLCA3NjksIDEwMjUsIDE1MzcsIDIwNDksIDMwNzMsIDQwOTcsIDYxNDUsXG4gIDgxOTMsIDEyMjg5LCAxNjM4NSwgMjQ1NzcsIDAsIDBcbl07XG5cbnZhciBkZXh0ID0gWyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBleHRyYSAqL1xuICAxNiwgMTYsIDE2LCAxNiwgMTcsIDE3LCAxOCwgMTgsIDE5LCAxOSwgMjAsIDIwLCAyMSwgMjEsIDIyLCAyMixcbiAgMjMsIDIzLCAyNCwgMjQsIDI1LCAyNSwgMjYsIDI2LCAyNywgMjcsXG4gIDI4LCAyOCwgMjksIDI5LCA2NCwgNjRcbl07XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gaW5mbGF0ZV90YWJsZSh0eXBlLCBsZW5zLCBsZW5zX2luZGV4LCBjb2RlcywgdGFibGUsIHRhYmxlX2luZGV4LCB3b3JrLCBvcHRzKVxue1xuICB2YXIgYml0cyA9IG9wdHMuYml0cztcbiAgICAgIC8vaGVyZSA9IG9wdHMuaGVyZTsgLyogdGFibGUgZW50cnkgZm9yIGR1cGxpY2F0aW9uICovXG5cbiAgdmFyIGxlbiA9IDA7ICAgICAgICAgICAgICAgLyogYSBjb2RlJ3MgbGVuZ3RoIGluIGJpdHMgKi9cbiAgdmFyIHN5bSA9IDA7ICAgICAgICAgICAgICAgLyogaW5kZXggb2YgY29kZSBzeW1ib2xzICovXG4gIHZhciBtaW4gPSAwLCBtYXggPSAwOyAgICAgICAgICAvKiBtaW5pbXVtIGFuZCBtYXhpbXVtIGNvZGUgbGVuZ3RocyAqL1xuICB2YXIgcm9vdCA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3Igcm9vdCB0YWJsZSAqL1xuICB2YXIgY3VyciA9IDA7ICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgaW5kZXggYml0cyBmb3IgY3VycmVudCB0YWJsZSAqL1xuICB2YXIgZHJvcCA9IDA7ICAgICAgICAgICAgICAvKiBjb2RlIGJpdHMgdG8gZHJvcCBmb3Igc3ViLXRhYmxlICovXG4gIHZhciBsZWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIHByZWZpeCBjb2RlcyBhdmFpbGFibGUgKi9cbiAgdmFyIHVzZWQgPSAwOyAgICAgICAgICAgICAgLyogY29kZSBlbnRyaWVzIGluIHRhYmxlIHVzZWQgKi9cbiAgdmFyIGh1ZmYgPSAwOyAgICAgICAgICAgICAgLyogSHVmZm1hbiBjb2RlICovXG4gIHZhciBpbmNyOyAgICAgICAgICAgICAgLyogZm9yIGluY3JlbWVudGluZyBjb2RlLCBpbmRleCAqL1xuICB2YXIgZmlsbDsgICAgICAgICAgICAgIC8qIGluZGV4IGZvciByZXBsaWNhdGluZyBlbnRyaWVzICovXG4gIHZhciBsb3c7ICAgICAgICAgICAgICAgLyogbG93IGJpdHMgZm9yIGN1cnJlbnQgcm9vdCBlbnRyeSAqL1xuICB2YXIgbWFzazsgICAgICAgICAgICAgIC8qIG1hc2sgZm9yIGxvdyByb290IGJpdHMgKi9cbiAgdmFyIG5leHQ7ICAgICAgICAgICAgIC8qIG5leHQgYXZhaWxhYmxlIHNwYWNlIGluIHRhYmxlICovXG4gIHZhciBiYXNlID0gbnVsbDsgICAgIC8qIGJhc2UgdmFsdWUgdGFibGUgdG8gdXNlICovXG4gIHZhciBiYXNlX2luZGV4ID0gMDtcbi8vICB2YXIgc2hvZXh0cmE7ICAgIC8qIGV4dHJhIGJpdHMgdGFibGUgdG8gdXNlICovXG4gIHZhciBlbmQ7ICAgICAgICAgICAgICAgICAgICAvKiB1c2UgYmFzZSBhbmQgZXh0cmEgZm9yIHN5bWJvbCA+IGVuZCAqL1xuICB2YXIgY291bnQgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi9cbiAgdmFyIG9mZnMgPSBuZXcgdXRpbHMuQnVmMTYoTUFYQklUUyArIDEpOyAvL1tNQVhCSVRTKzFdOyAgICAgLyogb2Zmc2V0cyBpbiB0YWJsZSBmb3IgZWFjaCBsZW5ndGggKi9cbiAgdmFyIGV4dHJhID0gbnVsbDtcbiAgdmFyIGV4dHJhX2luZGV4ID0gMDtcblxuICB2YXIgaGVyZV9iaXRzLCBoZXJlX29wLCBoZXJlX3ZhbDtcblxuICAvKlxuICAgUHJvY2VzcyBhIHNldCBvZiBjb2RlIGxlbmd0aHMgdG8gY3JlYXRlIGEgY2Fub25pY2FsIEh1ZmZtYW4gY29kZS4gIFRoZVxuICAgY29kZSBsZW5ndGhzIGFyZSBsZW5zWzAuLmNvZGVzLTFdLiAgRWFjaCBsZW5ndGggY29ycmVzcG9uZHMgdG8gdGhlXG4gICBzeW1ib2xzIDAuLmNvZGVzLTEuICBUaGUgSHVmZm1hbiBjb2RlIGlzIGdlbmVyYXRlZCBieSBmaXJzdCBzb3J0aW5nIHRoZVxuICAgc3ltYm9scyBieSBsZW5ndGggZnJvbSBzaG9ydCB0byBsb25nLCBhbmQgcmV0YWluaW5nIHRoZSBzeW1ib2wgb3JkZXJcbiAgIGZvciBjb2RlcyB3aXRoIGVxdWFsIGxlbmd0aHMuICBUaGVuIHRoZSBjb2RlIHN0YXJ0cyB3aXRoIGFsbCB6ZXJvIGJpdHNcbiAgIGZvciB0aGUgZmlyc3QgY29kZSBvZiB0aGUgc2hvcnRlc3QgbGVuZ3RoLCBhbmQgdGhlIGNvZGVzIGFyZSBpbnRlZ2VyXG4gICBpbmNyZW1lbnRzIGZvciB0aGUgc2FtZSBsZW5ndGgsIGFuZCB6ZXJvcyBhcmUgYXBwZW5kZWQgYXMgdGhlIGxlbmd0aFxuICAgaW5jcmVhc2VzLiAgRm9yIHRoZSBkZWZsYXRlIGZvcm1hdCwgdGhlc2UgYml0cyBhcmUgc3RvcmVkIGJhY2t3YXJkc1xuICAgZnJvbSB0aGVpciBtb3JlIG5hdHVyYWwgaW50ZWdlciBpbmNyZW1lbnQgb3JkZXJpbmcsIGFuZCBzbyB3aGVuIHRoZVxuICAgZGVjb2RpbmcgdGFibGVzIGFyZSBidWlsdCBpbiB0aGUgbGFyZ2UgbG9vcCBiZWxvdywgdGhlIGludGVnZXIgY29kZXNcbiAgIGFyZSBpbmNyZW1lbnRlZCBiYWNrd2FyZHMuXG5cbiAgIFRoaXMgcm91dGluZSBhc3N1bWVzLCBidXQgZG9lcyBub3QgY2hlY2ssIHRoYXQgYWxsIG9mIHRoZSBlbnRyaWVzIGluXG4gICBsZW5zW10gYXJlIGluIHRoZSByYW5nZSAwLi5NQVhCSVRTLiAgVGhlIGNhbGxlciBtdXN0IGFzc3VyZSB0aGlzLlxuICAgMS4uTUFYQklUUyBpcyBpbnRlcnByZXRlZCBhcyB0aGF0IGNvZGUgbGVuZ3RoLiAgemVybyBtZWFucyB0aGF0IHRoYXRcbiAgIHN5bWJvbCBkb2VzIG5vdCBvY2N1ciBpbiB0aGlzIGNvZGUuXG5cbiAgIFRoZSBjb2RlcyBhcmUgc29ydGVkIGJ5IGNvbXB1dGluZyBhIGNvdW50IG9mIGNvZGVzIGZvciBlYWNoIGxlbmd0aCxcbiAgIGNyZWF0aW5nIGZyb20gdGhhdCBhIHRhYmxlIG9mIHN0YXJ0aW5nIGluZGljZXMgZm9yIGVhY2ggbGVuZ3RoIGluIHRoZVxuICAgc29ydGVkIHRhYmxlLCBhbmQgdGhlbiBlbnRlcmluZyB0aGUgc3ltYm9scyBpbiBvcmRlciBpbiB0aGUgc29ydGVkXG4gICB0YWJsZS4gIFRoZSBzb3J0ZWQgdGFibGUgaXMgd29ya1tdLCB3aXRoIHRoYXQgc3BhY2UgYmVpbmcgcHJvdmlkZWQgYnlcbiAgIHRoZSBjYWxsZXIuXG5cbiAgIFRoZSBsZW5ndGggY291bnRzIGFyZSB1c2VkIGZvciBvdGhlciBwdXJwb3NlcyBhcyB3ZWxsLCBpLmUuIGZpbmRpbmdcbiAgIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGxlbmd0aCBjb2RlcywgZGV0ZXJtaW5pbmcgaWYgdGhlcmUgYXJlIGFueVxuICAgY29kZXMgYXQgYWxsLCBjaGVja2luZyBmb3IgYSB2YWxpZCBzZXQgb2YgbGVuZ3RocywgYW5kIGxvb2tpbmcgYWhlYWRcbiAgIGF0IGxlbmd0aCBjb3VudHMgdG8gZGV0ZXJtaW5lIHN1Yi10YWJsZSBzaXplcyB3aGVuIGJ1aWxkaW5nIHRoZVxuICAgZGVjb2RpbmcgdGFibGVzLlxuICAgKi9cblxuICAvKiBhY2N1bXVsYXRlIGxlbmd0aHMgZm9yIGNvZGVzIChhc3N1bWVzIGxlbnNbXSBhbGwgaW4gMC4uTUFYQklUUykgKi9cbiAgZm9yIChsZW4gPSAwOyBsZW4gPD0gTUFYQklUUzsgbGVuKyspIHtcbiAgICBjb3VudFtsZW5dID0gMDtcbiAgfVxuICBmb3IgKHN5bSA9IDA7IHN5bSA8IGNvZGVzOyBzeW0rKykge1xuICAgIGNvdW50W2xlbnNbbGVuc19pbmRleCArIHN5bV1dKys7XG4gIH1cblxuICAvKiBib3VuZCBjb2RlIGxlbmd0aHMsIGZvcmNlIHJvb3QgdG8gYmUgd2l0aGluIGNvZGUgbGVuZ3RocyAqL1xuICByb290ID0gYml0cztcbiAgZm9yIChtYXggPSBNQVhCSVRTOyBtYXggPj0gMTsgbWF4LS0pIHtcbiAgICBpZiAoY291bnRbbWF4XSAhPT0gMCkgeyBicmVhazsgfVxuICB9XG4gIGlmIChyb290ID4gbWF4KSB7XG4gICAgcm9vdCA9IG1heDtcbiAgfVxuICBpZiAobWF4ID09PSAwKSB7ICAgICAgICAgICAgICAgICAgICAgLyogbm8gc3ltYm9scyB0byBjb2RlIGF0IGFsbCAqL1xuICAgIC8vdGFibGUub3Bbb3B0cy50YWJsZV9pbmRleF0gPSA2NDsgIC8vaGVyZS5vcCA9ICh2YXIgY2hhcik2NDsgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqL1xuICAgIC8vdGFibGUuYml0c1tvcHRzLnRhYmxlX2luZGV4XSA9IDE7ICAgLy9oZXJlLmJpdHMgPSAodmFyIGNoYXIpMTtcbiAgICAvL3RhYmxlLnZhbFtvcHRzLnRhYmxlX2luZGV4KytdID0gMDsgICAvL2hlcmUudmFsID0gKHZhciBzaG9ydCkwO1xuICAgIHRhYmxlW3RhYmxlX2luZGV4KytdID0gKDEgPDwgMjQpIHwgKDY0IDw8IDE2KSB8IDA7XG5cblxuICAgIC8vdGFibGUub3Bbb3B0cy50YWJsZV9pbmRleF0gPSA2NDtcbiAgICAvL3RhYmxlLmJpdHNbb3B0cy50YWJsZV9pbmRleF0gPSAxO1xuICAgIC8vdGFibGUudmFsW29wdHMudGFibGVfaW5kZXgrK10gPSAwO1xuICAgIHRhYmxlW3RhYmxlX2luZGV4KytdID0gKDEgPDwgMjQpIHwgKDY0IDw8IDE2KSB8IDA7XG5cbiAgICBvcHRzLmJpdHMgPSAxO1xuICAgIHJldHVybiAwOyAgICAgLyogbm8gc3ltYm9scywgYnV0IHdhaXQgZm9yIGRlY29kaW5nIHRvIHJlcG9ydCBlcnJvciAqL1xuICB9XG4gIGZvciAobWluID0gMTsgbWluIDwgbWF4OyBtaW4rKykge1xuICAgIGlmIChjb3VudFttaW5dICE9PSAwKSB7IGJyZWFrOyB9XG4gIH1cbiAgaWYgKHJvb3QgPCBtaW4pIHtcbiAgICByb290ID0gbWluO1xuICB9XG5cbiAgLyogY2hlY2sgZm9yIGFuIG92ZXItc3Vic2NyaWJlZCBvciBpbmNvbXBsZXRlIHNldCBvZiBsZW5ndGhzICovXG4gIGxlZnQgPSAxO1xuICBmb3IgKGxlbiA9IDE7IGxlbiA8PSBNQVhCSVRTOyBsZW4rKykge1xuICAgIGxlZnQgPDw9IDE7XG4gICAgbGVmdCAtPSBjb3VudFtsZW5dO1xuICAgIGlmIChsZWZ0IDwgMCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gICAgICAgIC8qIG92ZXItc3Vic2NyaWJlZCAqL1xuICB9XG4gIGlmIChsZWZ0ID4gMCAmJiAodHlwZSA9PT0gQ09ERVMgfHwgbWF4ICE9PSAxKSkge1xuICAgIHJldHVybiAtMTsgICAgICAgICAgICAgICAgICAgICAgLyogaW5jb21wbGV0ZSBzZXQgKi9cbiAgfVxuXG4gIC8qIGdlbmVyYXRlIG9mZnNldHMgaW50byBzeW1ib2wgdGFibGUgZm9yIGVhY2ggbGVuZ3RoIGZvciBzb3J0aW5nICovXG4gIG9mZnNbMV0gPSAwO1xuICBmb3IgKGxlbiA9IDE7IGxlbiA8IE1BWEJJVFM7IGxlbisrKSB7XG4gICAgb2Zmc1tsZW4gKyAxXSA9IG9mZnNbbGVuXSArIGNvdW50W2xlbl07XG4gIH1cblxuICAvKiBzb3J0IHN5bWJvbHMgYnkgbGVuZ3RoLCBieSBzeW1ib2wgb3JkZXIgd2l0aGluIGVhY2ggbGVuZ3RoICovXG4gIGZvciAoc3ltID0gMDsgc3ltIDwgY29kZXM7IHN5bSsrKSB7XG4gICAgaWYgKGxlbnNbbGVuc19pbmRleCArIHN5bV0gIT09IDApIHtcbiAgICAgIHdvcmtbb2Zmc1tsZW5zW2xlbnNfaW5kZXggKyBzeW1dXSsrXSA9IHN5bTtcbiAgICB9XG4gIH1cblxuICAvKlxuICAgQ3JlYXRlIGFuZCBmaWxsIGluIGRlY29kaW5nIHRhYmxlcy4gIEluIHRoaXMgbG9vcCwgdGhlIHRhYmxlIGJlaW5nXG4gICBmaWxsZWQgaXMgYXQgbmV4dCBhbmQgaGFzIGN1cnIgaW5kZXggYml0cy4gIFRoZSBjb2RlIGJlaW5nIHVzZWQgaXMgaHVmZlxuICAgd2l0aCBsZW5ndGggbGVuLiAgVGhhdCBjb2RlIGlzIGNvbnZlcnRlZCB0byBhbiBpbmRleCBieSBkcm9wcGluZyBkcm9wXG4gICBiaXRzIG9mZiBvZiB0aGUgYm90dG9tLiAgRm9yIGNvZGVzIHdoZXJlIGxlbiBpcyBsZXNzIHRoYW4gZHJvcCArIGN1cnIsXG4gICB0aG9zZSB0b3AgZHJvcCArIGN1cnIgLSBsZW4gYml0cyBhcmUgaW5jcmVtZW50ZWQgdGhyb3VnaCBhbGwgdmFsdWVzIHRvXG4gICBmaWxsIHRoZSB0YWJsZSB3aXRoIHJlcGxpY2F0ZWQgZW50cmllcy5cblxuICAgcm9vdCBpcyB0aGUgbnVtYmVyIG9mIGluZGV4IGJpdHMgZm9yIHRoZSByb290IHRhYmxlLiAgV2hlbiBsZW4gZXhjZWVkc1xuICAgcm9vdCwgc3ViLXRhYmxlcyBhcmUgY3JlYXRlZCBwb2ludGVkIHRvIGJ5IHRoZSByb290IGVudHJ5IHdpdGggYW4gaW5kZXhcbiAgIG9mIHRoZSBsb3cgcm9vdCBiaXRzIG9mIGh1ZmYuICBUaGlzIGlzIHNhdmVkIGluIGxvdyB0byBjaGVjayBmb3Igd2hlbiBhXG4gICBuZXcgc3ViLXRhYmxlIHNob3VsZCBiZSBzdGFydGVkLiAgZHJvcCBpcyB6ZXJvIHdoZW4gdGhlIHJvb3QgdGFibGUgaXNcbiAgIGJlaW5nIGZpbGxlZCwgYW5kIGRyb3AgaXMgcm9vdCB3aGVuIHN1Yi10YWJsZXMgYXJlIGJlaW5nIGZpbGxlZC5cblxuICAgV2hlbiBhIG5ldyBzdWItdGFibGUgaXMgbmVlZGVkLCBpdCBpcyBuZWNlc3NhcnkgdG8gbG9vayBhaGVhZCBpbiB0aGVcbiAgIGNvZGUgbGVuZ3RocyB0byBkZXRlcm1pbmUgd2hhdCBzaXplIHN1Yi10YWJsZSBpcyBuZWVkZWQuICBUaGUgbGVuZ3RoXG4gICBjb3VudHMgYXJlIHVzZWQgZm9yIHRoaXMsIGFuZCBzbyBjb3VudFtdIGlzIGRlY3JlbWVudGVkIGFzIGNvZGVzIGFyZVxuICAgZW50ZXJlZCBpbiB0aGUgdGFibGVzLlxuXG4gICB1c2VkIGtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IHRhYmxlIGVudHJpZXMgaGF2ZSBiZWVuIGFsbG9jYXRlZCBmcm9tIHRoZVxuICAgcHJvdmlkZWQgKnRhYmxlIHNwYWNlLiAgSXQgaXMgY2hlY2tlZCBmb3IgTEVOUyBhbmQgRElTVCB0YWJsZXMgYWdhaW5zdFxuICAgdGhlIGNvbnN0YW50cyBFTk9VR0hfTEVOUyBhbmQgRU5PVUdIX0RJU1RTIHRvIGd1YXJkIGFnYWluc3QgY2hhbmdlcyBpblxuICAgdGhlIGluaXRpYWwgcm9vdCB0YWJsZSBzaXplIGNvbnN0YW50cy4gIFNlZSB0aGUgY29tbWVudHMgaW4gaW5mdHJlZXMuaFxuICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbiAgIHN5bSBpbmNyZW1lbnRzIHRocm91Z2ggYWxsIHN5bWJvbHMsIGFuZCB0aGUgbG9vcCB0ZXJtaW5hdGVzIHdoZW5cbiAgIGFsbCBjb2RlcyBvZiBsZW5ndGggbWF4LCBpLmUuIGFsbCBjb2RlcywgaGF2ZSBiZWVuIHByb2Nlc3NlZC4gIFRoaXNcbiAgIHJvdXRpbmUgcGVybWl0cyBpbmNvbXBsZXRlIGNvZGVzLCBzbyBhbm90aGVyIGxvb3AgYWZ0ZXIgdGhpcyBvbmUgZmlsbHNcbiAgIGluIHRoZSByZXN0IG9mIHRoZSBkZWNvZGluZyB0YWJsZXMgd2l0aCBpbnZhbGlkIGNvZGUgbWFya2Vycy5cbiAgICovXG5cbiAgLyogc2V0IHVwIGZvciBjb2RlIHR5cGUgKi9cbiAgLy8gcG9vciBtYW4gb3B0aW1pemF0aW9uIC0gdXNlIGlmLWVsc2UgaW5zdGVhZCBvZiBzd2l0Y2gsXG4gIC8vIHRvIGF2b2lkIGRlb3B0cyBpbiBvbGQgdjhcbiAgaWYgKHR5cGUgPT09IENPREVTKSB7XG4gICAgYmFzZSA9IGV4dHJhID0gd29yazsgICAgLyogZHVtbXkgdmFsdWUtLW5vdCB1c2VkICovXG4gICAgZW5kID0gMTk7XG5cbiAgfSBlbHNlIGlmICh0eXBlID09PSBMRU5TKSB7XG4gICAgYmFzZSA9IGxiYXNlO1xuICAgIGJhc2VfaW5kZXggLT0gMjU3O1xuICAgIGV4dHJhID0gbGV4dDtcbiAgICBleHRyYV9pbmRleCAtPSAyNTc7XG4gICAgZW5kID0gMjU2O1xuXG4gIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAvKiBESVNUUyAqL1xuICAgIGJhc2UgPSBkYmFzZTtcbiAgICBleHRyYSA9IGRleHQ7XG4gICAgZW5kID0gLTE7XG4gIH1cblxuICAvKiBpbml0aWFsaXplIG9wdHMgZm9yIGxvb3AgKi9cbiAgaHVmZiA9IDA7ICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgKi9cbiAgc3ltID0gMDsgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIGNvZGUgc3ltYm9sICovXG4gIGxlbiA9IG1pbjsgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBjb2RlIGxlbmd0aCAqL1xuICBuZXh0ID0gdGFibGVfaW5kZXg7ICAgICAgICAgICAgICAvKiBjdXJyZW50IHRhYmxlIHRvIGZpbGwgaW4gKi9cbiAgY3VyciA9IHJvb3Q7ICAgICAgICAgICAgICAgIC8qIGN1cnJlbnQgdGFibGUgaW5kZXggYml0cyAqL1xuICBkcm9wID0gMDsgICAgICAgICAgICAgICAgICAgLyogY3VycmVudCBiaXRzIHRvIGRyb3AgZnJvbSBjb2RlIGZvciBpbmRleCAqL1xuICBsb3cgPSAtMTsgICAgICAgICAgICAgICAgICAgLyogdHJpZ2dlciBuZXcgc3ViLXRhYmxlIHdoZW4gbGVuID4gcm9vdCAqL1xuICB1c2VkID0gMSA8PCByb290OyAgICAgICAgICAvKiB1c2Ugcm9vdCB0YWJsZSBlbnRyaWVzICovXG4gIG1hc2sgPSB1c2VkIC0gMTsgICAgICAgICAgICAvKiBtYXNrIGZvciBjb21wYXJpbmcgbG93ICovXG5cbiAgLyogY2hlY2sgYXZhaWxhYmxlIHRhYmxlIHNwYWNlICovXG4gIGlmICgodHlwZSA9PT0gTEVOUyAmJiB1c2VkID4gRU5PVUdIX0xFTlMpIHx8XG4gICAgKHR5cGUgPT09IERJU1RTICYmIHVzZWQgPiBFTk9VR0hfRElTVFMpKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKiBwcm9jZXNzIGFsbCBjb2RlcyBhbmQgbWFrZSB0YWJsZSBlbnRyaWVzICovXG4gIGZvciAoOzspIHtcbiAgICAvKiBjcmVhdGUgdGFibGUgZW50cnkgKi9cbiAgICBoZXJlX2JpdHMgPSBsZW4gLSBkcm9wO1xuICAgIGlmICh3b3JrW3N5bV0gPCBlbmQpIHtcbiAgICAgIGhlcmVfb3AgPSAwO1xuICAgICAgaGVyZV92YWwgPSB3b3JrW3N5bV07XG4gICAgfVxuICAgIGVsc2UgaWYgKHdvcmtbc3ltXSA+IGVuZCkge1xuICAgICAgaGVyZV9vcCA9IGV4dHJhW2V4dHJhX2luZGV4ICsgd29ya1tzeW1dXTtcbiAgICAgIGhlcmVfdmFsID0gYmFzZVtiYXNlX2luZGV4ICsgd29ya1tzeW1dXTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBoZXJlX29wID0gMzIgKyA2NDsgICAgICAgICAvKiBlbmQgb2YgYmxvY2sgKi9cbiAgICAgIGhlcmVfdmFsID0gMDtcbiAgICB9XG5cbiAgICAvKiByZXBsaWNhdGUgZm9yIHRob3NlIGluZGljZXMgd2l0aCBsb3cgbGVuIGJpdHMgZXF1YWwgdG8gaHVmZiAqL1xuICAgIGluY3IgPSAxIDw8IChsZW4gLSBkcm9wKTtcbiAgICBmaWxsID0gMSA8PCBjdXJyO1xuICAgIG1pbiA9IGZpbGw7ICAgICAgICAgICAgICAgICAvKiBzYXZlIG9mZnNldCB0byBuZXh0IHRhYmxlICovXG4gICAgZG8ge1xuICAgICAgZmlsbCAtPSBpbmNyO1xuICAgICAgdGFibGVbbmV4dCArIChodWZmID4+IGRyb3ApICsgZmlsbF0gPSAoaGVyZV9iaXRzIDw8IDI0KSB8IChoZXJlX29wIDw8IDE2KSB8IGhlcmVfdmFsIHwwO1xuICAgIH0gd2hpbGUgKGZpbGwgIT09IDApO1xuXG4gICAgLyogYmFja3dhcmRzIGluY3JlbWVudCB0aGUgbGVuLWJpdCBjb2RlIGh1ZmYgKi9cbiAgICBpbmNyID0gMSA8PCAobGVuIC0gMSk7XG4gICAgd2hpbGUgKGh1ZmYgJiBpbmNyKSB7XG4gICAgICBpbmNyID4+PSAxO1xuICAgIH1cbiAgICBpZiAoaW5jciAhPT0gMCkge1xuICAgICAgaHVmZiAmPSBpbmNyIC0gMTtcbiAgICAgIGh1ZmYgKz0gaW5jcjtcbiAgICB9IGVsc2Uge1xuICAgICAgaHVmZiA9IDA7XG4gICAgfVxuXG4gICAgLyogZ28gdG8gbmV4dCBzeW1ib2wsIHVwZGF0ZSBjb3VudCwgbGVuICovXG4gICAgc3ltKys7XG4gICAgaWYgKC0tY291bnRbbGVuXSA9PT0gMCkge1xuICAgICAgaWYgKGxlbiA9PT0gbWF4KSB7IGJyZWFrOyB9XG4gICAgICBsZW4gPSBsZW5zW2xlbnNfaW5kZXggKyB3b3JrW3N5bV1dO1xuICAgIH1cblxuICAgIC8qIGNyZWF0ZSBuZXcgc3ViLXRhYmxlIGlmIG5lZWRlZCAqL1xuICAgIGlmIChsZW4gPiByb290ICYmIChodWZmICYgbWFzaykgIT09IGxvdykge1xuICAgICAgLyogaWYgZmlyc3QgdGltZSwgdHJhbnNpdGlvbiB0byBzdWItdGFibGVzICovXG4gICAgICBpZiAoZHJvcCA9PT0gMCkge1xuICAgICAgICBkcm9wID0gcm9vdDtcbiAgICAgIH1cblxuICAgICAgLyogaW5jcmVtZW50IHBhc3QgbGFzdCB0YWJsZSAqL1xuICAgICAgbmV4dCArPSBtaW47ICAgICAgICAgICAgLyogaGVyZSBtaW4gaXMgMSA8PCBjdXJyICovXG5cbiAgICAgIC8qIGRldGVybWluZSBsZW5ndGggb2YgbmV4dCB0YWJsZSAqL1xuICAgICAgY3VyciA9IGxlbiAtIGRyb3A7XG4gICAgICBsZWZ0ID0gMSA8PCBjdXJyO1xuICAgICAgd2hpbGUgKGN1cnIgKyBkcm9wIDwgbWF4KSB7XG4gICAgICAgIGxlZnQgLT0gY291bnRbY3VyciArIGRyb3BdO1xuICAgICAgICBpZiAobGVmdCA8PSAwKSB7IGJyZWFrOyB9XG4gICAgICAgIGN1cnIrKztcbiAgICAgICAgbGVmdCA8PD0gMTtcbiAgICAgIH1cblxuICAgICAgLyogY2hlY2sgZm9yIGVub3VnaCBzcGFjZSAqL1xuICAgICAgdXNlZCArPSAxIDw8IGN1cnI7XG4gICAgICBpZiAoKHR5cGUgPT09IExFTlMgJiYgdXNlZCA+IEVOT1VHSF9MRU5TKSB8fFxuICAgICAgICAodHlwZSA9PT0gRElTVFMgJiYgdXNlZCA+IEVOT1VHSF9ESVNUUykpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICB9XG5cbiAgICAgIC8qIHBvaW50IGVudHJ5IGluIHJvb3QgdGFibGUgdG8gc3ViLXRhYmxlICovXG4gICAgICBsb3cgPSBodWZmICYgbWFzaztcbiAgICAgIC8qdGFibGUub3BbbG93XSA9IGN1cnI7XG4gICAgICB0YWJsZS5iaXRzW2xvd10gPSByb290O1xuICAgICAgdGFibGUudmFsW2xvd10gPSBuZXh0IC0gb3B0cy50YWJsZV9pbmRleDsqL1xuICAgICAgdGFibGVbbG93XSA9IChyb290IDw8IDI0KSB8IChjdXJyIDw8IDE2KSB8IChuZXh0IC0gdGFibGVfaW5kZXgpIHwwO1xuICAgIH1cbiAgfVxuXG4gIC8qIGZpbGwgaW4gcmVtYWluaW5nIHRhYmxlIGVudHJ5IGlmIGNvZGUgaXMgaW5jb21wbGV0ZSAoZ3VhcmFudGVlZCB0byBoYXZlXG4gICBhdCBtb3N0IG9uZSByZW1haW5pbmcgZW50cnksIHNpbmNlIGlmIHRoZSBjb2RlIGlzIGluY29tcGxldGUsIHRoZVxuICAgbWF4aW11bSBjb2RlIGxlbmd0aCB0aGF0IHdhcyBhbGxvd2VkIHRvIGdldCB0aGlzIGZhciBpcyBvbmUgYml0KSAqL1xuICBpZiAoaHVmZiAhPT0gMCkge1xuICAgIC8vdGFibGUub3BbbmV4dCArIGh1ZmZdID0gNjQ7ICAgICAgICAgICAgLyogaW52YWxpZCBjb2RlIG1hcmtlciAqL1xuICAgIC8vdGFibGUuYml0c1tuZXh0ICsgaHVmZl0gPSBsZW4gLSBkcm9wO1xuICAgIC8vdGFibGUudmFsW25leHQgKyBodWZmXSA9IDA7XG4gICAgdGFibGVbbmV4dCArIGh1ZmZdID0gKChsZW4gLSBkcm9wKSA8PCAyNCkgfCAoNjQgPDwgMTYpIHwwO1xuICB9XG5cbiAgLyogc2V0IHJldHVybiBwYXJhbWV0ZXJzICovXG4gIC8vb3B0cy50YWJsZV9pbmRleCArPSB1c2VkO1xuICBvcHRzLmJpdHMgPSByb290O1xuICByZXR1cm4gMDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbi8vIChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlclxuLy8gKEMpIDIwMTQtMjAxNyBWaXRhbHkgUHV6cmluIGFuZCBBbmRyZXkgVHVwaXRzaW5cbi8vXG4vLyBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZFxuLy8gd2FycmFudHkuIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzXG4vLyBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLFxuLy8gaW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdFxuLy8gZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOlxuLy9cbi8vIDEuIFRoZSBvcmlnaW4gb2YgdGhpcyBzb2Z0d2FyZSBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90XG4vLyAgIGNsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlXG4vLyAgIGluIGEgcHJvZHVjdCwgYW4gYWNrbm93bGVkZ21lbnQgaW4gdGhlIHByb2R1Y3QgZG9jdW1lbnRhdGlvbiB3b3VsZCBiZVxuLy8gICBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLlxuLy8gMi4gQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmVcbi8vICAgbWlzcmVwcmVzZW50ZWQgYXMgYmVpbmcgdGhlIG9yaWdpbmFsIHNvZnR3YXJlLlxuLy8gMy4gVGhpcyBub3RpY2UgbWF5IG5vdCBiZSByZW1vdmVkIG9yIGFsdGVyZWQgZnJvbSBhbnkgc291cmNlIGRpc3RyaWJ1dGlvbi5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG5cbiAgLyogQWxsb3dlZCBmbHVzaCB2YWx1ZXM7IHNlZSBkZWZsYXRlKCkgYW5kIGluZmxhdGUoKSBiZWxvdyBmb3IgZGV0YWlscyAqL1xuICBaX05PX0ZMVVNIOiAgICAgICAgIDAsXG4gIFpfUEFSVElBTF9GTFVTSDogICAgMSxcbiAgWl9TWU5DX0ZMVVNIOiAgICAgICAyLFxuICBaX0ZVTExfRkxVU0g6ICAgICAgIDMsXG4gIFpfRklOSVNIOiAgICAgICAgICAgNCxcbiAgWl9CTE9DSzogICAgICAgICAgICA1LFxuICBaX1RSRUVTOiAgICAgICAgICAgIDYsXG5cbiAgLyogUmV0dXJuIGNvZGVzIGZvciB0aGUgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBmdW5jdGlvbnMuIE5lZ2F0aXZlIHZhbHVlc1xuICAqIGFyZSBlcnJvcnMsIHBvc2l0aXZlIHZhbHVlcyBhcmUgdXNlZCBmb3Igc3BlY2lhbCBidXQgbm9ybWFsIGV2ZW50cy5cbiAgKi9cbiAgWl9PSzogICAgICAgICAgICAgICAwLFxuICBaX1NUUkVBTV9FTkQ6ICAgICAgIDEsXG4gIFpfTkVFRF9ESUNUOiAgICAgICAgMixcbiAgWl9FUlJOTzogICAgICAgICAgIC0xLFxuICBaX1NUUkVBTV9FUlJPUjogICAgLTIsXG4gIFpfREFUQV9FUlJPUjogICAgICAtMyxcbiAgLy9aX01FTV9FUlJPUjogICAgIC00LFxuICBaX0JVRl9FUlJPUjogICAgICAgLTUsXG4gIC8vWl9WRVJTSU9OX0VSUk9SOiAtNixcblxuICAvKiBjb21wcmVzc2lvbiBsZXZlbHMgKi9cbiAgWl9OT19DT01QUkVTU0lPTjogICAgICAgICAwLFxuICBaX0JFU1RfU1BFRUQ6ICAgICAgICAgICAgIDEsXG4gIFpfQkVTVF9DT01QUkVTU0lPTjogICAgICAgOSxcbiAgWl9ERUZBVUxUX0NPTVBSRVNTSU9OOiAgIC0xLFxuXG5cbiAgWl9GSUxURVJFRDogICAgICAgICAgICAgICAxLFxuICBaX0hVRkZNQU5fT05MWTogICAgICAgICAgIDIsXG4gIFpfUkxFOiAgICAgICAgICAgICAgICAgICAgMyxcbiAgWl9GSVhFRDogICAgICAgICAgICAgICAgICA0LFxuICBaX0RFRkFVTFRfU1RSQVRFR1k6ICAgICAgIDAsXG5cbiAgLyogUG9zc2libGUgdmFsdWVzIG9mIHRoZSBkYXRhX3R5cGUgZmllbGQgKHRob3VnaCBzZWUgaW5mbGF0ZSgpKSAqL1xuICBaX0JJTkFSWTogICAgICAgICAgICAgICAgIDAsXG4gIFpfVEVYVDogICAgICAgICAgICAgICAgICAgMSxcbiAgLy9aX0FTQ0lJOiAgICAgICAgICAgICAgICAxLCAvLyA9IFpfVEVYVCAoZGVwcmVjYXRlZClcbiAgWl9VTktOT1dOOiAgICAgICAgICAgICAgICAyLFxuXG4gIC8qIFRoZSBkZWZsYXRlIGNvbXByZXNzaW9uIG1ldGhvZCAqL1xuICBaX0RFRkxBVEVEOiAgICAgICAgICAgICAgIDhcbiAgLy9aX05VTEw6ICAgICAgICAgICAgICAgICBudWxsIC8vIFVzZSAtMSBvciBudWxsIGlubGluZSwgZGVwZW5kaW5nIG9uIHZhciB0eXBlXG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgaWNvbnZMaXRlID0gcmVxdWlyZSgnaWNvbnYtbGl0ZScpO1xuLy8gTG9hZCBJY29udiBmcm9tIGFuIGV4dGVybmFsIGZpbGUgdG8gYmUgYWJsZSB0byBkaXNhYmxlIEljb252IGZvciB3ZWJwYWNrXG4vLyBBZGQgL1xcL2ljb252LWxvYWRlciQvIHRvIHdlYnBhY2suSWdub3JlUGx1Z2luIHRvIGlnbm9yZSBpdFxudmFyIEljb252ID0gcmVxdWlyZSgnLi9pY29udi1sb2FkZXInKTtcblxuLy8gRXhwb3NlIHRvIHRoZSB3b3JsZFxubW9kdWxlLmV4cG9ydHMuY29udmVydCA9IGNvbnZlcnQ7XG5cbi8qKlxuICogQ29udmVydCBlbmNvZGluZyBvZiBhbiBVVEYtOCBzdHJpbmcgb3IgYSBidWZmZXJcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ3xCdWZmZXJ9IHN0ciBTdHJpbmcgdG8gYmUgY29udmVydGVkXG4gKiBAcGFyYW0ge1N0cmluZ30gdG8gRW5jb2RpbmcgdG8gYmUgY29udmVydGVkIHRvXG4gKiBAcGFyYW0ge1N0cmluZ30gW2Zyb209J1VURi04J10gRW5jb2RpbmcgdG8gYmUgY29udmVydGVkIGZyb21cbiAqIEBwYXJhbSB7Qm9vbGVhbn0gdXNlTGl0ZSBJZiBzZXQgdG8gdHVyZSwgZm9yY2UgdG8gdXNlIGljb252TGl0ZVxuICogQHJldHVybiB7QnVmZmVyfSBFbmNvZGVkIHN0cmluZ1xuICovXG5mdW5jdGlvbiBjb252ZXJ0KHN0ciwgdG8sIGZyb20sIHVzZUxpdGUpIHtcbiAgICBmcm9tID0gY2hlY2tFbmNvZGluZyhmcm9tIHx8ICdVVEYtOCcpO1xuICAgIHRvID0gY2hlY2tFbmNvZGluZyh0byB8fCAnVVRGLTgnKTtcbiAgICBzdHIgPSBzdHIgfHwgJyc7XG5cbiAgICB2YXIgcmVzdWx0O1xuXG4gICAgaWYgKGZyb20gIT09ICdVVEYtOCcgJiYgdHlwZW9mIHN0ciA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgc3RyID0gbmV3IEJ1ZmZlcihzdHIsICdiaW5hcnknKTtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICAgICAgaWYgKHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBuZXcgQnVmZmVyKHN0cik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXN1bHQgPSBzdHI7XG4gICAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEljb252ICYmICF1c2VMaXRlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXN1bHQgPSBjb252ZXJ0SWNvbnYoc3RyLCB0bywgZnJvbSk7XG4gICAgICAgIH0gY2F0Y2ggKEUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoRSk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNvbnZlcnRJY29udkxpdGUoc3RyLCB0bywgZnJvbSk7XG4gICAgICAgICAgICB9IGNhdGNoIChFKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihFKTtcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBzdHI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmVzdWx0ID0gY29udmVydEljb252TGl0ZShzdHIsIHRvLCBmcm9tKTtcbiAgICAgICAgfSBjYXRjaCAoRSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihFKTtcbiAgICAgICAgICAgIHJlc3VsdCA9IHN0cjtcbiAgICAgICAgfVxuICAgIH1cblxuXG4gICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBCdWZmZXIocmVzdWx0LCAndXRmLTgnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuXG4vKipcbiAqIENvbnZlcnQgZW5jb2Rpbmcgb2YgYSBzdHJpbmcgd2l0aCBub2RlLWljb252IChpZiBhdmFpbGFibGUpXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QnVmZmVyfSBzdHIgU3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICogQHBhcmFtIHtTdHJpbmd9IHRvIEVuY29kaW5nIHRvIGJlIGNvbnZlcnRlZCB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtmcm9tPSdVVEYtOCddIEVuY29kaW5nIHRvIGJlIGNvbnZlcnRlZCBmcm9tXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IEVuY29kZWQgc3RyaW5nXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRJY29udihzdHIsIHRvLCBmcm9tKSB7XG4gICAgdmFyIHJlc3BvbnNlLCBpY29udjtcbiAgICBpY29udiA9IG5ldyBJY29udihmcm9tLCB0byArICcvL1RSQU5TTElULy9JR05PUkUnKTtcbiAgICByZXNwb25zZSA9IGljb252LmNvbnZlcnQoc3RyKTtcbiAgICByZXR1cm4gcmVzcG9uc2Uuc2xpY2UoMCwgcmVzcG9uc2UubGVuZ3RoKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGVuY29kaW5nIG9mIGFzdHJpbmcgd2l0aCBpY29udi1saXRlXG4gKlxuICogQHBhcmFtIHtTdHJpbmd8QnVmZmVyfSBzdHIgU3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICogQHBhcmFtIHtTdHJpbmd9IHRvIEVuY29kaW5nIHRvIGJlIGNvbnZlcnRlZCB0b1xuICogQHBhcmFtIHtTdHJpbmd9IFtmcm9tPSdVVEYtOCddIEVuY29kaW5nIHRvIGJlIGNvbnZlcnRlZCBmcm9tXG4gKiBAcmV0dXJuIHtCdWZmZXJ9IEVuY29kZWQgc3RyaW5nXG4gKi9cbmZ1bmN0aW9uIGNvbnZlcnRJY29udkxpdGUoc3RyLCB0bywgZnJvbSkge1xuICAgIGlmICh0byA9PT0gJ1VURi04Jykge1xuICAgICAgICByZXR1cm4gaWNvbnZMaXRlLmRlY29kZShzdHIsIGZyb20pO1xuICAgIH0gZWxzZSBpZiAoZnJvbSA9PT0gJ1VURi04Jykge1xuICAgICAgICByZXR1cm4gaWNvbnZMaXRlLmVuY29kZShzdHIsIHRvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gaWNvbnZMaXRlLmVuY29kZShpY29udkxpdGUuZGVjb2RlKHN0ciwgZnJvbSksIHRvKTtcbiAgICB9XG59XG5cbi8qKlxuICogQ29udmVydHMgY2hhcnNldCBuYW1lIGlmIG5lZWRlZFxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIENoYXJhY3RlciBzZXRcbiAqIEByZXR1cm4ge1N0cmluZ30gQ2hhcmFjdGVyIHNldCBuYW1lXG4gKi9cbmZ1bmN0aW9uIGNoZWNrRW5jb2RpbmcobmFtZSkge1xuICAgIHJldHVybiAobmFtZSB8fCAnJykudG9TdHJpbmcoKS50cmltKCkuXG4gICAgcmVwbGFjZSgvXmxhdGluW1xcLV9dPyhcXGQrKSQvaSwgJ0lTTy04ODU5LSQxJykuXG4gICAgcmVwbGFjZSgvXndpbig/OmRvd3MpP1tcXC1fXT8oXFxkKykkL2ksICdXSU5ET1dTLSQxJykuXG4gICAgcmVwbGFjZSgvXnV0ZltcXC1fXT8oXFxkKykkL2ksICdVVEYtJDEnKS5cbiAgICByZXBsYWNlKC9ea3NfY181NjAxXFwtMTk4NyQvaSwgJ0NQOTQ5JykuXG4gICAgcmVwbGFjZSgvXnVzW1xcLV9dP2FzY2lpJC9pLCAnQVNDSUknKS5cbiAgICB0b1VwcGVyQ2FzZSgpO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8vIFNvbWUgZW52aXJvbm1lbnRzIGRvbid0IGhhdmUgZ2xvYmFsIEJ1ZmZlciAoZS5nLiBSZWFjdCBOYXRpdmUpLlxuLy8gU29sdXRpb24gd291bGQgYmUgaW5zdGFsbGluZyBucG0gbW9kdWxlcyBcImJ1ZmZlclwiIGFuZCBcInN0cmVhbVwiIGV4cGxpY2l0bHkuXG52YXIgQnVmZmVyID0gcmVxdWlyZShcInNhZmVyLWJ1ZmZlclwiKS5CdWZmZXI7XG5cbnZhciBib21IYW5kbGluZyA9IHJlcXVpcmUoXCIuL2JvbS1oYW5kbGluZ1wiKSxcbiAgICBpY29udiA9IG1vZHVsZS5leHBvcnRzO1xuXG4vLyBBbGwgY29kZWNzIGFuZCBhbGlhc2VzIGFyZSBrZXB0IGhlcmUsIGtleWVkIGJ5IGVuY29kaW5nIG5hbWUvYWxpYXMuXG4vLyBUaGV5IGFyZSBsYXp5IGxvYWRlZCBpbiBgaWNvbnYuZ2V0Q29kZWNgIGZyb20gYGVuY29kaW5ncy9pbmRleC5qc2AuXG5pY29udi5lbmNvZGluZ3MgPSBudWxsO1xuXG4vLyBDaGFyYWN0ZXJzIGVtaXR0ZWQgaW4gY2FzZSBvZiBlcnJvci5cbmljb252LmRlZmF1bHRDaGFyVW5pY29kZSA9ICfvv70nO1xuaWNvbnYuZGVmYXVsdENoYXJTaW5nbGVCeXRlID0gJz8nO1xuXG4vLyBQdWJsaWMgQVBJLlxuaWNvbnYuZW5jb2RlID0gZnVuY3Rpb24gZW5jb2RlKHN0ciwgZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBzdHIgPSBcIlwiICsgKHN0ciB8fCBcIlwiKTsgLy8gRW5zdXJlIHN0cmluZy5cblxuICAgIHZhciBlbmNvZGVyID0gaWNvbnYuZ2V0RW5jb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG5cbiAgICB2YXIgcmVzID0gZW5jb2Rlci53cml0ZShzdHIpO1xuICAgIHZhciB0cmFpbCA9IGVuY29kZXIuZW5kKCk7XG4gICAgXG4gICAgcmV0dXJuICh0cmFpbCAmJiB0cmFpbC5sZW5ndGggPiAwKSA/IEJ1ZmZlci5jb25jYXQoW3JlcywgdHJhaWxdKSA6IHJlcztcbn1cblxuaWNvbnYuZGVjb2RlID0gZnVuY3Rpb24gZGVjb2RlKGJ1ZiwgZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIGJ1ZiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKCFpY29udi5za2lwRGVjb2RlV2FybmluZykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignSWNvbnYtbGl0ZSB3YXJuaW5nOiBkZWNvZGUoKS1pbmcgc3RyaW5ncyBpcyBkZXByZWNhdGVkLiBSZWZlciB0byBodHRwczovL2dpdGh1Yi5jb20vYXNodHVjaGtpbi9pY29udi1saXRlL3dpa2kvVXNlLUJ1ZmZlcnMtd2hlbi1kZWNvZGluZycpO1xuICAgICAgICAgICAgaWNvbnYuc2tpcERlY29kZVdhcm5pbmcgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgYnVmID0gQnVmZmVyLmZyb20oXCJcIiArIChidWYgfHwgXCJcIiksIFwiYmluYXJ5XCIpOyAvLyBFbnN1cmUgYnVmZmVyLlxuICAgIH1cblxuICAgIHZhciBkZWNvZGVyID0gaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgb3B0aW9ucyk7XG5cbiAgICB2YXIgcmVzID0gZGVjb2Rlci53cml0ZShidWYpO1xuICAgIHZhciB0cmFpbCA9IGRlY29kZXIuZW5kKCk7XG5cbiAgICByZXR1cm4gdHJhaWwgPyAocmVzICsgdHJhaWwpIDogcmVzO1xufVxuXG5pY29udi5lbmNvZGluZ0V4aXN0cyA9IGZ1bmN0aW9uIGVuY29kaW5nRXhpc3RzKGVuYykge1xuICAgIHRyeSB7XG4gICAgICAgIGljb252LmdldENvZGVjKGVuYyk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbn1cblxuLy8gTGVnYWN5IGFsaWFzZXMgdG8gY29udmVydCBmdW5jdGlvbnNcbmljb252LnRvRW5jb2RpbmcgPSBpY29udi5lbmNvZGU7XG5pY29udi5mcm9tRW5jb2RpbmcgPSBpY29udi5kZWNvZGU7XG5cbi8vIFNlYXJjaCBmb3IgYSBjb2RlYyBpbiBpY29udi5lbmNvZGluZ3MuIENhY2hlIGNvZGVjIGRhdGEgaW4gaWNvbnYuX2NvZGVjRGF0YUNhY2hlLlxuaWNvbnYuX2NvZGVjRGF0YUNhY2hlID0ge307XG5pY29udi5nZXRDb2RlYyA9IGZ1bmN0aW9uIGdldENvZGVjKGVuY29kaW5nKSB7XG4gICAgaWYgKCFpY29udi5lbmNvZGluZ3MpXG4gICAgICAgIGljb252LmVuY29kaW5ncyA9IHJlcXVpcmUoXCIuLi9lbmNvZGluZ3NcIik7IC8vIExhenkgbG9hZCBhbGwgZW5jb2RpbmcgZGVmaW5pdGlvbnMuXG4gICAgXG4gICAgLy8gQ2Fub25pY2FsaXplIGVuY29kaW5nIG5hbWU6IHN0cmlwIGFsbCBub24tYWxwaGFudW1lcmljIGNoYXJzIGFuZCBhcHBlbmRlZCB5ZWFyLlxuICAgIHZhciBlbmMgPSBpY29udi5fY2Fub25pY2FsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuXG4gICAgLy8gVHJhdmVyc2UgaWNvbnYuZW5jb2RpbmdzIHRvIGZpbmQgYWN0dWFsIGNvZGVjLlxuICAgIHZhciBjb2RlY09wdGlvbnMgPSB7fTtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICB2YXIgY29kZWMgPSBpY29udi5fY29kZWNEYXRhQ2FjaGVbZW5jXTtcbiAgICAgICAgaWYgKGNvZGVjKVxuICAgICAgICAgICAgcmV0dXJuIGNvZGVjO1xuXG4gICAgICAgIHZhciBjb2RlY0RlZiA9IGljb252LmVuY29kaW5nc1tlbmNdO1xuXG4gICAgICAgIHN3aXRjaCAodHlwZW9mIGNvZGVjRGVmKSB7XG4gICAgICAgICAgICBjYXNlIFwic3RyaW5nXCI6IC8vIERpcmVjdCBhbGlhcyB0byBvdGhlciBlbmNvZGluZy5cbiAgICAgICAgICAgICAgICBlbmMgPSBjb2RlY0RlZjtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSBcIm9iamVjdFwiOiAvLyBBbGlhcyB3aXRoIG9wdGlvbnMuIENhbiBiZSBsYXllcmVkLlxuICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiBjb2RlY0RlZilcbiAgICAgICAgICAgICAgICAgICAgY29kZWNPcHRpb25zW2tleV0gPSBjb2RlY0RlZltrZXldO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lKVxuICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lID0gZW5jO1xuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIGVuYyA9IGNvZGVjRGVmLnR5cGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgXCJmdW5jdGlvblwiOiAvLyBDb2RlYyBpdHNlbGYuXG4gICAgICAgICAgICAgICAgaWYgKCFjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lKVxuICAgICAgICAgICAgICAgICAgICBjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lID0gZW5jO1xuXG4gICAgICAgICAgICAgICAgLy8gVGhlIGNvZGVjIGZ1bmN0aW9uIG11c3QgbG9hZCBhbGwgdGFibGVzIGFuZCByZXR1cm4gb2JqZWN0IHdpdGggLmVuY29kZXIgYW5kIC5kZWNvZGVyIG1ldGhvZHMuXG4gICAgICAgICAgICAgICAgLy8gSXQnbGwgYmUgY2FsbGVkIG9ubHkgb25jZSAoZm9yIGVhY2ggZGlmZmVyZW50IG9wdGlvbnMgb2JqZWN0KS5cbiAgICAgICAgICAgICAgICBjb2RlYyA9IG5ldyBjb2RlY0RlZihjb2RlY09wdGlvbnMsIGljb252KTtcblxuICAgICAgICAgICAgICAgIGljb252Ll9jb2RlY0RhdGFDYWNoZVtjb2RlY09wdGlvbnMuZW5jb2RpbmdOYW1lXSA9IGNvZGVjOyAvLyBTYXZlIGl0IHRvIGJlIHJldXNlZCBsYXRlci5cbiAgICAgICAgICAgICAgICByZXR1cm4gY29kZWM7XG5cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRW5jb2Rpbmcgbm90IHJlY29nbml6ZWQ6ICdcIiArIGVuY29kaW5nICsgXCInIChzZWFyY2hlZCBhczogJ1wiK2VuYytcIicpXCIpO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5pY29udi5fY2Fub25pY2FsaXplRW5jb2RpbmcgPSBmdW5jdGlvbihlbmNvZGluZykge1xuICAgIC8vIENhbm9uaWNhbGl6ZSBlbmNvZGluZyBuYW1lOiBzdHJpcCBhbGwgbm9uLWFscGhhbnVtZXJpYyBjaGFycyBhbmQgYXBwZW5kZWQgeWVhci5cbiAgICByZXR1cm4gKCcnK2VuY29kaW5nKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoLzpcXGR7NH0kfFteMC05YS16XS9nLCBcIlwiKTtcbn1cblxuaWNvbnYuZ2V0RW5jb2RlciA9IGZ1bmN0aW9uIGdldEVuY29kZXIoZW5jb2RpbmcsIG9wdGlvbnMpIHtcbiAgICB2YXIgY29kZWMgPSBpY29udi5nZXRDb2RlYyhlbmNvZGluZyksXG4gICAgICAgIGVuY29kZXIgPSBuZXcgY29kZWMuZW5jb2RlcihvcHRpb25zLCBjb2RlYyk7XG5cbiAgICBpZiAoY29kZWMuYm9tQXdhcmUgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmFkZEJPTSlcbiAgICAgICAgZW5jb2RlciA9IG5ldyBib21IYW5kbGluZy5QcmVwZW5kQk9NKGVuY29kZXIsIG9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIGVuY29kZXI7XG59XG5cbmljb252LmdldERlY29kZXIgPSBmdW5jdGlvbiBnZXREZWNvZGVyKGVuY29kaW5nLCBvcHRpb25zKSB7XG4gICAgdmFyIGNvZGVjID0gaWNvbnYuZ2V0Q29kZWMoZW5jb2RpbmcpLFxuICAgICAgICBkZWNvZGVyID0gbmV3IGNvZGVjLmRlY29kZXIob3B0aW9ucywgY29kZWMpO1xuXG4gICAgaWYgKGNvZGVjLmJvbUF3YXJlICYmICEob3B0aW9ucyAmJiBvcHRpb25zLnN0cmlwQk9NID09PSBmYWxzZSkpXG4gICAgICAgIGRlY29kZXIgPSBuZXcgYm9tSGFuZGxpbmcuU3RyaXBCT00oZGVjb2Rlciwgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gZGVjb2Rlcjtcbn1cblxuXG4vLyBMb2FkIGV4dGVuc2lvbnMgaW4gTm9kZS4gQWxsIG9mIHRoZW0gYXJlIG9taXR0ZWQgaW4gQnJvd3NlcmlmeSBidWlsZCB2aWEgJ2Jyb3dzZXInIGZpZWxkIGluIHBhY2thZ2UuanNvbi5cbnZhciBub2RlVmVyID0gdHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmluZWQnICYmIHByb2Nlc3MudmVyc2lvbnMgJiYgcHJvY2Vzcy52ZXJzaW9ucy5ub2RlO1xuaWYgKG5vZGVWZXIpIHtcblxuICAgIC8vIExvYWQgc3RyZWFtaW5nIHN1cHBvcnQgaW4gTm9kZSB2MC4xMCtcbiAgICB2YXIgbm9kZVZlckFyciA9IG5vZGVWZXIuc3BsaXQoXCIuXCIpLm1hcChOdW1iZXIpO1xuICAgIGlmIChub2RlVmVyQXJyWzBdID4gMCB8fCBub2RlVmVyQXJyWzFdID49IDEwKSB7XG4gICAgICAgIHJlcXVpcmUoXCIuL3N0cmVhbXNcIikoaWNvbnYpO1xuICAgIH1cblxuICAgIC8vIExvYWQgTm9kZSBwcmltaXRpdmUgZXh0ZW5zaW9ucy5cbiAgICByZXF1aXJlKFwiLi9leHRlbmQtbm9kZVwiKShpY29udik7XG59XG5cbmlmIChcIsSAXCIgIT0gXCJcXHUwMTAwXCIpIHtcbiAgICBjb25zb2xlLmVycm9yKFwiaWNvbnYtbGl0ZSB3YXJuaW5nOiBqYXZhc2NyaXB0IGZpbGVzIHVzZSBlbmNvZGluZyBkaWZmZXJlbnQgZnJvbSB1dGYtOC4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hc2h0dWNoa2luL2ljb252LWxpdGUvd2lraS9KYXZhc2NyaXB0LXNvdXJjZS1maWxlLWVuY29kaW5ncyBmb3IgbW9yZSBpbmZvLlwiKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgQk9NQ2hhciA9ICdcXHVGRUZGJztcblxuZXhwb3J0cy5QcmVwZW5kQk9NID0gUHJlcGVuZEJPTVdyYXBwZXJcbmZ1bmN0aW9uIFByZXBlbmRCT01XcmFwcGVyKGVuY29kZXIsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmVuY29kZXIgPSBlbmNvZGVyO1xuICAgIHRoaXMuYWRkQk9NID0gdHJ1ZTtcbn1cblxuUHJlcGVuZEJPTVdyYXBwZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgaWYgKHRoaXMuYWRkQk9NKSB7XG4gICAgICAgIHN0ciA9IEJPTUNoYXIgKyBzdHI7XG4gICAgICAgIHRoaXMuYWRkQk9NID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci53cml0ZShzdHIpO1xufVxuXG5QcmVwZW5kQk9NV3JhcHBlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5lbmQoKTtcbn1cblxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5leHBvcnRzLlN0cmlwQk9NID0gU3RyaXBCT01XcmFwcGVyO1xuZnVuY3Rpb24gU3RyaXBCT01XcmFwcGVyKGRlY29kZXIsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmRlY29kZXIgPSBkZWNvZGVyO1xuICAgIHRoaXMucGFzcyA9IGZhbHNlO1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG59XG5cblN0cmlwQk9NV3JhcHBlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgcmVzID0gdGhpcy5kZWNvZGVyLndyaXRlKGJ1Zik7XG4gICAgaWYgKHRoaXMucGFzcyB8fCAhcmVzKVxuICAgICAgICByZXR1cm4gcmVzO1xuXG4gICAgaWYgKHJlc1swXSA9PT0gQk9NQ2hhcikge1xuICAgICAgICByZXMgPSByZXMuc2xpY2UoMSk7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcHRpb25zLnN0cmlwQk9NID09PSAnZnVuY3Rpb24nKVxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnN0cmlwQk9NKCk7XG4gICAgfVxuXG4gICAgdGhpcy5wYXNzID0gdHJ1ZTtcbiAgICByZXR1cm4gcmVzO1xufVxuXG5TdHJpcEJPTVdyYXBwZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmRlY29kZXIuZW5kKCk7XG59XG5cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vLyBVcGRhdGUgdGhpcyBhcnJheSBpZiB5b3UgYWRkL3JlbmFtZS9yZW1vdmUgZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkuXG4vLyBXZSBzdXBwb3J0IEJyb3dzZXJpZnkgYnkgc2tpcHBpbmcgYXV0b21hdGljIG1vZHVsZSBkaXNjb3ZlcnkgYW5kIHJlcXVpcmluZyBtb2R1bGVzIGRpcmVjdGx5LlxudmFyIG1vZHVsZXMgPSBbXG4gICAgcmVxdWlyZShcIi4vaW50ZXJuYWxcIiksXG4gICAgcmVxdWlyZShcIi4vdXRmMTZcIiksXG4gICAgcmVxdWlyZShcIi4vdXRmN1wiKSxcbiAgICByZXF1aXJlKFwiLi9zYmNzLWNvZGVjXCIpLFxuICAgIHJlcXVpcmUoXCIuL3NiY3MtZGF0YVwiKSxcbiAgICByZXF1aXJlKFwiLi9zYmNzLWRhdGEtZ2VuZXJhdGVkXCIpLFxuICAgIHJlcXVpcmUoXCIuL2RiY3MtY29kZWNcIiksXG4gICAgcmVxdWlyZShcIi4vZGJjcy1kYXRhXCIpLFxuXTtcblxuLy8gUHV0IGFsbCBlbmNvZGluZy9hbGlhcy9jb2RlYyBkZWZpbml0aW9ucyB0byBzaW5nbGUgb2JqZWN0IGFuZCBleHBvcnQgaXQuIFxuZm9yICh2YXIgaSA9IDA7IGkgPCBtb2R1bGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG1vZHVsZSA9IG1vZHVsZXNbaV07XG4gICAgZm9yICh2YXIgZW5jIGluIG1vZHVsZSlcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2R1bGUsIGVuYykpXG4gICAgICAgICAgICBleHBvcnRzW2VuY10gPSBtb2R1bGVbZW5jXTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJzYWZlci1idWZmZXJcIikuQnVmZmVyO1xuXG4vLyBFeHBvcnQgTm9kZS5qcyBpbnRlcm5hbCBlbmNvZGluZ3MuXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICAgIC8vIEVuY29kaW5nc1xuICAgIHV0Zjg6ICAgeyB0eXBlOiBcIl9pbnRlcm5hbFwiLCBib21Bd2FyZTogdHJ1ZX0sXG4gICAgY2VzdTg6ICB7IHR5cGU6IFwiX2ludGVybmFsXCIsIGJvbUF3YXJlOiB0cnVlfSxcbiAgICB1bmljb2RlMTF1dGY4OiBcInV0ZjhcIixcblxuICAgIHVjczI6ICAgeyB0eXBlOiBcIl9pbnRlcm5hbFwiLCBib21Bd2FyZTogdHJ1ZX0sXG4gICAgdXRmMTZsZTogXCJ1Y3MyXCIsXG5cbiAgICBiaW5hcnk6IHsgdHlwZTogXCJfaW50ZXJuYWxcIiB9LFxuICAgIGJhc2U2NDogeyB0eXBlOiBcIl9pbnRlcm5hbFwiIH0sXG4gICAgaGV4OiAgICB7IHR5cGU6IFwiX2ludGVybmFsXCIgfSxcblxuICAgIC8vIENvZGVjLlxuICAgIF9pbnRlcm5hbDogSW50ZXJuYWxDb2RlYyxcbn07XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbmZ1bmN0aW9uIEludGVybmFsQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIHRoaXMuZW5jID0gY29kZWNPcHRpb25zLmVuY29kaW5nTmFtZTtcbiAgICB0aGlzLmJvbUF3YXJlID0gY29kZWNPcHRpb25zLmJvbUF3YXJlO1xuXG4gICAgaWYgKHRoaXMuZW5jID09PSBcImJhc2U2NFwiKVxuICAgICAgICB0aGlzLmVuY29kZXIgPSBJbnRlcm5hbEVuY29kZXJCYXNlNjQ7XG4gICAgZWxzZSBpZiAodGhpcy5lbmMgPT09IFwiY2VzdThcIikge1xuICAgICAgICB0aGlzLmVuYyA9IFwidXRmOFwiOyAvLyBVc2UgdXRmOCBmb3IgZGVjb2RpbmcuXG4gICAgICAgIHRoaXMuZW5jb2RlciA9IEludGVybmFsRW5jb2RlckNlc3U4O1xuXG4gICAgICAgIC8vIEFkZCBkZWNvZGVyIGZvciB2ZXJzaW9ucyBvZiBOb2RlIG5vdCBzdXBwb3J0aW5nIENFU1UtOFxuICAgICAgICBpZiAoQnVmZmVyLmZyb20oJ2VkYTBiZGVkYjJhOScsICdoZXgnKS50b1N0cmluZygpICE9PSAn8J+SqScpIHtcbiAgICAgICAgICAgIHRoaXMuZGVjb2RlciA9IEludGVybmFsRGVjb2RlckNlc3U4O1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUgPSBpY29udi5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkludGVybmFsQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBJbnRlcm5hbEVuY29kZXI7XG5JbnRlcm5hbENvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gSW50ZXJuYWxEZWNvZGVyO1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBXZSB1c2Ugbm9kZS5qcyBpbnRlcm5hbCBkZWNvZGVyLiBJdHMgc2lnbmF0dXJlIGlzIHRoZSBzYW1lIGFzIG91cnMuXG52YXIgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyJykuU3RyaW5nRGVjb2RlcjtcblxuaWYgKCFTdHJpbmdEZWNvZGVyLnByb3RvdHlwZS5lbmQpIC8vIE5vZGUgdjAuOCBkb2Vzbid0IGhhdmUgdGhpcyBtZXRob2QuXG4gICAgU3RyaW5nRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7fTtcblxuXG5mdW5jdGlvbiBJbnRlcm5hbERlY29kZXIob3B0aW9ucywgY29kZWMpIHtcbiAgICBTdHJpbmdEZWNvZGVyLmNhbGwodGhpcywgY29kZWMuZW5jKTtcbn1cblxuSW50ZXJuYWxEZWNvZGVyLnByb3RvdHlwZSA9IFN0cmluZ0RlY29kZXIucHJvdG90eXBlO1xuXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFbmNvZGVyIGlzIG1vc3RseSB0cml2aWFsXG5cbmZ1bmN0aW9uIEludGVybmFsRW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuZW5jID0gY29kZWMuZW5jO1xufVxuXG5JbnRlcm5hbEVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgcmV0dXJuIEJ1ZmZlci5mcm9tKHN0ciwgdGhpcy5lbmMpO1xufVxuXG5JbnRlcm5hbEVuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBFeGNlcHQgYmFzZTY0IGVuY29kZXIsIHdoaWNoIG11c3Qga2VlcCBpdHMgc3RhdGUuXG5cbmZ1bmN0aW9uIEludGVybmFsRW5jb2RlckJhc2U2NChvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMucHJldlN0ciA9ICcnO1xufVxuXG5JbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgc3RyID0gdGhpcy5wcmV2U3RyICsgc3RyO1xuICAgIHZhciBjb21wbGV0ZVF1YWRzID0gc3RyLmxlbmd0aCAtIChzdHIubGVuZ3RoICUgNCk7XG4gICAgdGhpcy5wcmV2U3RyID0gc3RyLnNsaWNlKGNvbXBsZXRlUXVhZHMpO1xuICAgIHN0ciA9IHN0ci5zbGljZSgwLCBjb21wbGV0ZVF1YWRzKTtcblxuICAgIHJldHVybiBCdWZmZXIuZnJvbShzdHIsIFwiYmFzZTY0XCIpO1xufVxuXG5JbnRlcm5hbEVuY29kZXJCYXNlNjQucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbSh0aGlzLnByZXZTdHIsIFwiYmFzZTY0XCIpO1xufVxuXG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDRVNVLTggZW5jb2RlciBpcyBhbHNvIHNwZWNpYWwuXG5cbmZ1bmN0aW9uIEludGVybmFsRW5jb2RlckNlc3U4KG9wdGlvbnMsIGNvZGVjKSB7XG59XG5cbkludGVybmFsRW5jb2RlckNlc3U4LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHZhciBidWYgPSBCdWZmZXIuYWxsb2Moc3RyLmxlbmd0aCAqIDMpLCBidWZJZHggPSAwO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjaGFyQ29kZSA9IHN0ci5jaGFyQ29kZUF0KGkpO1xuICAgICAgICAvLyBOYWl2ZSBpbXBsZW1lbnRhdGlvbiwgYnV0IGl0IHdvcmtzIGJlY2F1c2UgQ0VTVS04IGlzIGVzcGVjaWFsbHkgZWFzeVxuICAgICAgICAvLyB0byBjb252ZXJ0IGZyb20gVVRGLTE2ICh3aGljaCBhbGwgSlMgc3RyaW5ncyBhcmUgZW5jb2RlZCBpbikuXG4gICAgICAgIGlmIChjaGFyQ29kZSA8IDB4ODApXG4gICAgICAgICAgICBidWZbYnVmSWR4KytdID0gY2hhckNvZGU7XG4gICAgICAgIGVsc2UgaWYgKGNoYXJDb2RlIDwgMHg4MDApIHtcbiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweEMwICsgKGNoYXJDb2RlID4+PiA2KTtcbiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweDgwICsgKGNoYXJDb2RlICYgMHgzZik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7IC8vIGNoYXJDb2RlIHdpbGwgYWx3YXlzIGJlIDwgMHgxMDAwMCBpbiBqYXZhc2NyaXB0LlxuICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IDB4RTAgKyAoY2hhckNvZGUgPj4+IDEyKTtcbiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweDgwICsgKChjaGFyQ29kZSA+Pj4gNikgJiAweDNmKTtcbiAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSAweDgwICsgKGNoYXJDb2RlICYgMHgzZik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwLCBidWZJZHgpO1xufVxuXG5JbnRlcm5hbEVuY29kZXJDZXN1OC5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDRVNVLTggZGVjb2RlciBpcyBub3QgaW1wbGVtZW50ZWQgaW4gTm9kZSB2NC4wK1xuXG5mdW5jdGlvbiBJbnRlcm5hbERlY29kZXJDZXN1OChvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuYWNjID0gMDtcbiAgICB0aGlzLmNvbnRCeXRlcyA9IDA7XG4gICAgdGhpcy5hY2NCeXRlcyA9IDA7XG4gICAgdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUgPSBjb2RlYy5kZWZhdWx0Q2hhclVuaWNvZGU7XG59XG5cbkludGVybmFsRGVjb2RlckNlc3U4LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIHZhciBhY2MgPSB0aGlzLmFjYywgY29udEJ5dGVzID0gdGhpcy5jb250Qnl0ZXMsIGFjY0J5dGVzID0gdGhpcy5hY2NCeXRlcywgXG4gICAgICAgIHJlcyA9ICcnO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJCeXRlID0gYnVmW2ldO1xuICAgICAgICBpZiAoKGN1ckJ5dGUgJiAweEMwKSAhPT0gMHg4MCkgeyAvLyBMZWFkaW5nIGJ5dGVcbiAgICAgICAgICAgIGlmIChjb250Qnl0ZXMgPiAwKSB7IC8vIFByZXZpb3VzIGNvZGUgaXMgaW52YWxpZFxuICAgICAgICAgICAgICAgIHJlcyArPSB0aGlzLmRlZmF1bHRDaGFyVW5pY29kZTtcbiAgICAgICAgICAgICAgICBjb250Qnl0ZXMgPSAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY3VyQnl0ZSA8IDB4ODApIHsgLy8gU2luZ2xlLWJ5dGUgY29kZVxuICAgICAgICAgICAgICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGN1ckJ5dGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJCeXRlIDwgMHhFMCkgeyAvLyBUd28tYnl0ZSBjb2RlXG4gICAgICAgICAgICAgICAgYWNjID0gY3VyQnl0ZSAmIDB4MUY7XG4gICAgICAgICAgICAgICAgY29udEJ5dGVzID0gMTsgYWNjQnl0ZXMgPSAxO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJCeXRlIDwgMHhGMCkgeyAvLyBUaHJlZS1ieXRlIGNvZGVcbiAgICAgICAgICAgICAgICBhY2MgPSBjdXJCeXRlICYgMHgwRjtcbiAgICAgICAgICAgICAgICBjb250Qnl0ZXMgPSAyOyBhY2NCeXRlcyA9IDE7XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBGb3VyIG9yIG1vcmUgYXJlIG5vdCBzdXBwb3J0ZWQgZm9yIENFU1UtOC5cbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7IC8vIENvbnRpbnVhdGlvbiBieXRlXG4gICAgICAgICAgICBpZiAoY29udEJ5dGVzID4gMCkgeyAvLyBXZSdyZSB3YWl0aW5nIGZvciBpdC5cbiAgICAgICAgICAgICAgICBhY2MgPSAoYWNjIDw8IDYpIHwgKGN1ckJ5dGUgJiAweDNmKTtcbiAgICAgICAgICAgICAgICBjb250Qnl0ZXMtLTsgYWNjQnl0ZXMrKztcbiAgICAgICAgICAgICAgICBpZiAoY29udEJ5dGVzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBvdmVybG9uZyBlbmNvZGluZywgYnV0IHN1cHBvcnQgTW9kaWZpZWQgVVRGLTggKGVuY29kaW5nIE5VTEwgYXMgQzAgODApXG4gICAgICAgICAgICAgICAgICAgIGlmIChhY2NCeXRlcyA9PT0gMiAmJiBhY2MgPCAweDgwICYmIGFjYyA+IDApXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFjY0J5dGVzID09PSAzICYmIGFjYyA8IDB4ODAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3R1YWxseSBhZGQgY2hhcmFjdGVyLlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYWNjKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgeyAvLyBVbmV4cGVjdGVkIGNvbnRpbnVhdGlvbiBieXRlXG4gICAgICAgICAgICAgICAgcmVzICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHRoaXMuYWNjID0gYWNjOyB0aGlzLmNvbnRCeXRlcyA9IGNvbnRCeXRlczsgdGhpcy5hY2NCeXRlcyA9IGFjY0J5dGVzO1xuICAgIHJldHVybiByZXM7XG59XG5cbkludGVybmFsRGVjb2RlckNlc3U4LnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVzID0gMDtcbiAgICBpZiAodGhpcy5jb250Qnl0ZXMgPiAwKVxuICAgICAgICByZXMgKz0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgcmV0dXJuIHJlcztcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJzYWZlci1idWZmZXJcIikuQnVmZmVyO1xuXG4vLyBOb3RlOiBVVEYxNi1MRSAob3IgVUNTMikgY29kZWMgaXMgTm9kZS5qcyBuYXRpdmUuIFNlZSBlbmNvZGluZ3MvaW50ZXJuYWwuanNcblxuLy8gPT0gVVRGMTYtQkUgY29kZWMuID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0cy51dGYxNmJlID0gVXRmMTZCRUNvZGVjO1xuZnVuY3Rpb24gVXRmMTZCRUNvZGVjKCkge1xufVxuXG5VdGYxNkJFQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGYxNkJFRW5jb2RlcjtcblV0ZjE2QkVDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IFV0ZjE2QkVEZWNvZGVyO1xuVXRmMTZCRUNvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7XG5cblxuLy8gLS0gRW5jb2RpbmdcblxuZnVuY3Rpb24gVXRmMTZCRUVuY29kZXIoKSB7XG59XG5cblV0ZjE2QkVFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHZhciBidWYgPSBCdWZmZXIuZnJvbShzdHIsICd1Y3MyJyk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgICAgdmFyIHRtcCA9IGJ1ZltpXTsgYnVmW2ldID0gYnVmW2krMV07IGJ1ZltpKzFdID0gdG1wO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufVxuXG5VdGYxNkJFRW5jb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG5cblxuLy8gLS0gRGVjb2RpbmdcblxuZnVuY3Rpb24gVXRmMTZCRURlY29kZXIoKSB7XG4gICAgdGhpcy5vdmVyZmxvd0J5dGUgPSAtMTtcbn1cblxuVXRmMTZCRURlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgaWYgKGJ1Zi5sZW5ndGggPT0gMClcbiAgICAgICAgcmV0dXJuICcnO1xuXG4gICAgdmFyIGJ1ZjIgPSBCdWZmZXIuYWxsb2MoYnVmLmxlbmd0aCArIDEpLFxuICAgICAgICBpID0gMCwgaiA9IDA7XG5cbiAgICBpZiAodGhpcy5vdmVyZmxvd0J5dGUgIT09IC0xKSB7XG4gICAgICAgIGJ1ZjJbMF0gPSBidWZbMF07XG4gICAgICAgIGJ1ZjJbMV0gPSB0aGlzLm92ZXJmbG93Qnl0ZTtcbiAgICAgICAgaSA9IDE7IGogPSAyO1xuICAgIH1cblxuICAgIGZvciAoOyBpIDwgYnVmLmxlbmd0aC0xOyBpICs9IDIsIGorPSAyKSB7XG4gICAgICAgIGJ1ZjJbal0gPSBidWZbaSsxXTtcbiAgICAgICAgYnVmMltqKzFdID0gYnVmW2ldO1xuICAgIH1cblxuICAgIHRoaXMub3ZlcmZsb3dCeXRlID0gKGkgPT0gYnVmLmxlbmd0aC0xKSA/IGJ1ZltidWYubGVuZ3RoLTFdIDogLTE7XG5cbiAgICByZXR1cm4gYnVmMi5zbGljZSgwLCBqKS50b1N0cmluZygndWNzMicpO1xufVxuXG5VdGYxNkJFRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG5cblxuLy8gPT0gVVRGLTE2IGNvZGVjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlY29kZXIgY2hvb3NlcyBhdXRvbWF0aWNhbGx5IGZyb20gVVRGLTE2TEUgYW5kIFVURi0xNkJFIHVzaW5nIEJPTSBhbmQgc3BhY2UtYmFzZWQgaGV1cmlzdGljLlxuLy8gRGVmYXVsdHMgdG8gVVRGLTE2TEUsIGFzIGl0J3MgcHJldmFsZW50IGFuZCBkZWZhdWx0IGluIE5vZGUuXG4vLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1VURi0xNiBhbmQgaHR0cDovL2VuY29kaW5nLnNwZWMud2hhdHdnLm9yZy8jdXRmLTE2bGVcbi8vIERlY29kZXIgZGVmYXVsdCBjYW4gYmUgY2hhbmdlZDogaWNvbnYuZGVjb2RlKGJ1ZiwgJ3V0ZjE2Jywge2RlZmF1bHRFbmNvZGluZzogJ3V0Zi0xNmJlJ30pO1xuXG4vLyBFbmNvZGVyIHVzZXMgVVRGLTE2TEUgYW5kIHByZXBlbmRzIEJPTSAod2hpY2ggY2FuIGJlIG92ZXJyaWRkZW4gd2l0aCBhZGRCT006IGZhbHNlKS5cblxuZXhwb3J0cy51dGYxNiA9IFV0ZjE2Q29kZWM7XG5mdW5jdGlvbiBVdGYxNkNvZGVjKGNvZGVjT3B0aW9ucywgaWNvbnYpIHtcbiAgICB0aGlzLmljb252ID0gaWNvbnY7XG59XG5cblV0ZjE2Q29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBVdGYxNkVuY29kZXI7XG5VdGYxNkNvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmMTZEZWNvZGVyO1xuXG5cbi8vIC0tIEVuY29kaW5nIChwYXNzLXRocm91Z2gpXG5cbmZ1bmN0aW9uIFV0ZjE2RW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIGlmIChvcHRpb25zLmFkZEJPTSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICBvcHRpb25zLmFkZEJPTSA9IHRydWU7XG4gICAgdGhpcy5lbmNvZGVyID0gY29kZWMuaWNvbnYuZ2V0RW5jb2RlcigndXRmLTE2bGUnLCBvcHRpb25zKTtcbn1cblxuVXRmMTZFbmNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKHN0cikge1xuICAgIHJldHVybiB0aGlzLmVuY29kZXIud3JpdGUoc3RyKTtcbn1cblxuVXRmMTZFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5lbmNvZGVyLmVuZCgpO1xufVxuXG5cbi8vIC0tIERlY29kaW5nXG5cbmZ1bmN0aW9uIFV0ZjE2RGVjb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gICAgdGhpcy5pbml0aWFsQnl0ZXMgPSBbXTtcbiAgICB0aGlzLmluaXRpYWxCeXRlc0xlbiA9IDA7XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjtcbn1cblxuVXRmMTZEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIGlmICghdGhpcy5kZWNvZGVyKSB7XG4gICAgICAgIC8vIENvZGVjIGlzIG5vdCBjaG9zZW4geWV0LiBBY2N1bXVsYXRlIGluaXRpYWwgYnl0ZXMuXG4gICAgICAgIHRoaXMuaW5pdGlhbEJ5dGVzLnB1c2goYnVmKTtcbiAgICAgICAgdGhpcy5pbml0aWFsQnl0ZXNMZW4gKz0gYnVmLmxlbmd0aDtcbiAgICAgICAgXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxCeXRlc0xlbiA8IDE2KSAvLyBXZSBuZWVkIG1vcmUgYnl0ZXMgdG8gdXNlIHNwYWNlIGhldXJpc3RpYyAoc2VlIGJlbG93KVxuICAgICAgICAgICAgcmV0dXJuICcnO1xuXG4gICAgICAgIC8vIFdlIGhhdmUgZW5vdWdoIGJ5dGVzIC0+IGRldGVjdCBlbmRpYW5uZXNzLlxuICAgICAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksXG4gICAgICAgICAgICBlbmNvZGluZyA9IGRldGVjdEVuY29kaW5nKGJ1ZiwgdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7XG4gICAgICAgIHRoaXMuZGVjb2RlciA9IHRoaXMuaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgdGhpcy5vcHRpb25zKTtcbiAgICAgICAgdGhpcy5pbml0aWFsQnl0ZXMubGVuZ3RoID0gdGhpcy5pbml0aWFsQnl0ZXNMZW4gPSAwO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmRlY29kZXIud3JpdGUoYnVmKTtcbn1cblxuVXRmMTZEZWNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuZGVjb2Rlcikge1xuICAgICAgICB2YXIgYnVmID0gQnVmZmVyLmNvbmNhdCh0aGlzLmluaXRpYWxCeXRlcyksXG4gICAgICAgICAgICBlbmNvZGluZyA9IGRldGVjdEVuY29kaW5nKGJ1ZiwgdGhpcy5vcHRpb25zLmRlZmF1bHRFbmNvZGluZyk7XG4gICAgICAgIHRoaXMuZGVjb2RlciA9IHRoaXMuaWNvbnYuZ2V0RGVjb2RlcihlbmNvZGluZywgdGhpcy5vcHRpb25zKTtcblxuICAgICAgICB2YXIgcmVzID0gdGhpcy5kZWNvZGVyLndyaXRlKGJ1ZiksXG4gICAgICAgICAgICB0cmFpbCA9IHRoaXMuZGVjb2Rlci5lbmQoKTtcblxuICAgICAgICByZXR1cm4gdHJhaWwgPyAocmVzICsgdHJhaWwpIDogcmVzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kZWNvZGVyLmVuZCgpO1xufVxuXG5mdW5jdGlvbiBkZXRlY3RFbmNvZGluZyhidWYsIGRlZmF1bHRFbmNvZGluZykge1xuICAgIHZhciBlbmMgPSBkZWZhdWx0RW5jb2RpbmcgfHwgJ3V0Zi0xNmxlJztcblxuICAgIGlmIChidWYubGVuZ3RoID49IDIpIHtcbiAgICAgICAgLy8gQ2hlY2sgQk9NLlxuICAgICAgICBpZiAoYnVmWzBdID09IDB4RkUgJiYgYnVmWzFdID09IDB4RkYpIC8vIFVURi0xNkJFIEJPTVxuICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmJlJztcbiAgICAgICAgZWxzZSBpZiAoYnVmWzBdID09IDB4RkYgJiYgYnVmWzFdID09IDB4RkUpIC8vIFVURi0xNkxFIEJPTVxuICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmxlJztcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAvLyBObyBCT00gZm91bmQuIFRyeSB0byBkZWR1Y2UgZW5jb2RpbmcgZnJvbSBpbml0aWFsIGNvbnRlbnQuXG4gICAgICAgICAgICAvLyBNb3N0IG9mIHRoZSB0aW1lLCB0aGUgY29udGVudCBoYXMgQVNDSUkgY2hhcnMgKFUrMDAqKiksIGJ1dCB0aGUgb3Bwb3NpdGUgKFUrKiowMCkgaXMgdW5jb21tb24uXG4gICAgICAgICAgICAvLyBTbywgd2UgY291bnQgQVNDSUkgYXMgaWYgaXQgd2FzIExFIG9yIEJFLCBhbmQgZGVjaWRlIGZyb20gdGhhdC5cbiAgICAgICAgICAgIHZhciBhc2NpaUNoYXJzTEUgPSAwLCBhc2NpaUNoYXJzQkUgPSAwLCAvLyBDb3VudHMgb2YgY2hhcnMgaW4gYm90aCBwb3NpdGlvbnNcbiAgICAgICAgICAgICAgICBfbGVuID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIChidWYubGVuZ3RoICUgMiksIDY0KTsgLy8gTGVuIGlzIGFsd2F5cyBldmVuLlxuXG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IF9sZW47IGkgKz0gMikge1xuICAgICAgICAgICAgICAgIGlmIChidWZbaV0gPT09IDAgJiYgYnVmW2krMV0gIT09IDApIGFzY2lpQ2hhcnNCRSsrO1xuICAgICAgICAgICAgICAgIGlmIChidWZbaV0gIT09IDAgJiYgYnVmW2krMV0gPT09IDApIGFzY2lpQ2hhcnNMRSsrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoYXNjaWlDaGFyc0JFID4gYXNjaWlDaGFyc0xFKVxuICAgICAgICAgICAgICAgIGVuYyA9ICd1dGYtMTZiZSc7XG4gICAgICAgICAgICBlbHNlIGlmIChhc2NpaUNoYXJzQkUgPCBhc2NpaUNoYXJzTEUpXG4gICAgICAgICAgICAgICAgZW5jID0gJ3V0Zi0xNmxlJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlbmM7XG59XG5cblxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQnVmZmVyID0gcmVxdWlyZShcInNhZmVyLWJ1ZmZlclwiKS5CdWZmZXI7XG5cbi8vIFVURi03IGNvZGVjLCBhY2NvcmRpbmcgdG8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzIxNTJcbi8vIFNlZSBhbHNvIGJlbG93IGEgVVRGLTctSU1BUCBjb2RlYywgYWNjb3JkaW5nIHRvIGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuM1xuXG5leHBvcnRzLnV0ZjcgPSBVdGY3Q29kZWM7XG5leHBvcnRzLnVuaWNvZGUxMXV0ZjcgPSAndXRmNyc7IC8vIEFsaWFzIFVOSUNPREUtMS0xLVVURi03XG5mdW5jdGlvbiBVdGY3Q29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIHRoaXMuaWNvbnYgPSBpY29udjtcbn07XG5cblV0ZjdDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjdFbmNvZGVyO1xuVXRmN0NvZGVjLnByb3RvdHlwZS5kZWNvZGVyID0gVXRmN0RlY29kZXI7XG5VdGY3Q29kZWMucHJvdG90eXBlLmJvbUF3YXJlID0gdHJ1ZTtcblxuXG4vLyAtLSBFbmNvZGluZ1xuXG52YXIgbm9uRGlyZWN0Q2hhcnMgPSAvW15BLVphLXowLTknXFwoXFwpLC1cXC5cXC86XFw/IFxcblxcclxcdF0rL2c7XG5cbmZ1bmN0aW9uIFV0ZjdFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252O1xufVxuXG5VdGY3RW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICAvLyBOYWl2ZSBpbXBsZW1lbnRhdGlvbi5cbiAgICAvLyBOb24tZGlyZWN0IGNoYXJzIGFyZSBlbmNvZGVkIGFzIFwiKzxiYXNlNjQ+LVwiOyBzaW5nbGUgXCIrXCIgY2hhciBpcyBlbmNvZGVkIGFzIFwiKy1cIi5cbiAgICByZXR1cm4gQnVmZmVyLmZyb20oc3RyLnJlcGxhY2Uobm9uRGlyZWN0Q2hhcnMsIGZ1bmN0aW9uKGNodW5rKSB7XG4gICAgICAgIHJldHVybiBcIitcIiArIChjaHVuayA9PT0gJysnID8gJycgOiBcbiAgICAgICAgICAgIHRoaXMuaWNvbnYuZW5jb2RlKGNodW5rLCAndXRmMTYtYmUnKS50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvPSskLywgJycpKSBcbiAgICAgICAgICAgICsgXCItXCI7XG4gICAgfS5iaW5kKHRoaXMpKSk7XG59XG5cblV0ZjdFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbn1cblxuXG4vLyAtLSBEZWNvZGluZ1xuXG5mdW5jdGlvbiBVdGY3RGVjb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuaWNvbnYgPSBjb2RlYy5pY29udjtcbiAgICB0aGlzLmluQmFzZTY0ID0gZmFsc2U7XG4gICAgdGhpcy5iYXNlNjRBY2N1bSA9ICcnO1xufVxuXG52YXIgYmFzZTY0UmVnZXggPSAvW0EtWmEtejAtOVxcLytdLztcbnZhciBiYXNlNjRDaGFycyA9IFtdO1xuZm9yICh2YXIgaSA9IDA7IGkgPCAyNTY7IGkrKylcbiAgICBiYXNlNjRDaGFyc1tpXSA9IGJhc2U2NFJlZ2V4LnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShpKSk7XG5cbnZhciBwbHVzQ2hhciA9ICcrJy5jaGFyQ29kZUF0KDApLCBcbiAgICBtaW51c0NoYXIgPSAnLScuY2hhckNvZGVBdCgwKSxcbiAgICBhbmRDaGFyID0gJyYnLmNoYXJDb2RlQXQoMCk7XG5cblV0ZjdEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIHZhciByZXMgPSBcIlwiLCBsYXN0SSA9IDAsXG4gICAgICAgIGluQmFzZTY0ID0gdGhpcy5pbkJhc2U2NCxcbiAgICAgICAgYmFzZTY0QWNjdW0gPSB0aGlzLmJhc2U2NEFjY3VtO1xuXG4gICAgLy8gVGhlIGRlY29kZXIgaXMgbW9yZSBpbnZvbHZlZCBhcyB3ZSBtdXN0IGhhbmRsZSBjaHVua3MgaW4gc3RyZWFtLlxuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBidWYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKCFpbkJhc2U2NCkgeyAvLyBXZSdyZSBpbiBkaXJlY3QgbW9kZS5cbiAgICAgICAgICAgIC8vIFdyaXRlIGRpcmVjdCBjaGFycyB1bnRpbCAnKydcbiAgICAgICAgICAgIGlmIChidWZbaV0gPT0gcGx1c0NoYXIpIHtcbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJLCBpKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxO1xuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gV2UgZGVjb2RlIGJhc2U2NC5cbiAgICAgICAgICAgIGlmICghYmFzZTY0Q2hhcnNbYnVmW2ldXSkgeyAvLyBCYXNlNjQgZW5kZWQuXG4gICAgICAgICAgICAgICAgaWYgKGkgPT0gbGFzdEkgJiYgYnVmW2ldID09IG1pbnVzQ2hhcikgey8vIFwiKy1cIiAtPiBcIitcIlxuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCIrXCI7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGI2NHN0ciA9IGJhc2U2NEFjY3VtICsgYnVmLnNsaWNlKGxhc3RJLCBpKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoQnVmZmVyLmZyb20oYjY0c3RyLCAnYmFzZTY0JyksIFwidXRmMTYtYmVcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSBtaW51c0NoYXIpIC8vIE1pbnVzIGlzIGFic29yYmVkIGFmdGVyIGJhc2U2NC5cbiAgICAgICAgICAgICAgICAgICAgaS0tO1xuXG4gICAgICAgICAgICAgICAgbGFzdEkgPSBpKzE7XG4gICAgICAgICAgICAgICAgaW5CYXNlNjQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFpbkJhc2U2NCkge1xuICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBiNjRzdHIgPSBiYXNlNjRBY2N1bSArIGJ1Zi5zbGljZShsYXN0SSkudG9TdHJpbmcoKTtcblxuICAgICAgICB2YXIgY2FuQmVEZWNvZGVkID0gYjY0c3RyLmxlbmd0aCAtIChiNjRzdHIubGVuZ3RoICUgOCk7IC8vIE1pbmltYWwgY2h1bms6IDIgcXVhZHMgLT4gMngzIGJ5dGVzIC0+IDMgY2hhcnMuXG4gICAgICAgIGJhc2U2NEFjY3VtID0gYjY0c3RyLnNsaWNlKGNhbkJlRGVjb2RlZCk7IC8vIFRoZSByZXN0IHdpbGwgYmUgZGVjb2RlZCBpbiBmdXR1cmUuXG4gICAgICAgIGI2NHN0ciA9IGI2NHN0ci5zbGljZSgwLCBjYW5CZURlY29kZWQpO1xuXG4gICAgICAgIHJlcyArPSB0aGlzLmljb252LmRlY29kZShCdWZmZXIuZnJvbShiNjRzdHIsICdiYXNlNjQnKSwgXCJ1dGYxNi1iZVwiKTtcbiAgICB9XG5cbiAgICB0aGlzLmluQmFzZTY0ID0gaW5CYXNlNjQ7XG4gICAgdGhpcy5iYXNlNjRBY2N1bSA9IGJhc2U2NEFjY3VtO1xuXG4gICAgcmV0dXJuIHJlcztcbn1cblxuVXRmN0RlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXMgPSBcIlwiO1xuICAgIGlmICh0aGlzLmluQmFzZTY0ICYmIHRoaXMuYmFzZTY0QWNjdW0ubGVuZ3RoID4gMClcbiAgICAgICAgcmVzID0gdGhpcy5pY29udi5kZWNvZGUoQnVmZmVyLmZyb20odGhpcy5iYXNlNjRBY2N1bSwgJ2Jhc2U2NCcpLCBcInV0ZjE2LWJlXCIpO1xuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlO1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJztcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbi8vIFVURi03LUlNQVAgY29kZWMuXG4vLyBSRkMzNTAxIFNlYy4gNS4xLjMgTW9kaWZpZWQgVVRGLTcgKGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzM1MDEjc2VjdGlvbi01LjEuMylcbi8vIERpZmZlcmVuY2VzOlxuLy8gICogQmFzZTY0IHBhcnQgaXMgc3RhcnRlZCBieSBcIiZcIiBpbnN0ZWFkIG9mIFwiK1wiXG4vLyAgKiBEaXJlY3QgY2hhcmFjdGVycyBhcmUgMHgyMC0weDdFLCBleGNlcHQgXCImXCIgKDB4MjYpXG4vLyAgKiBJbiBCYXNlNjQsIFwiLFwiIGlzIHVzZWQgaW5zdGVhZCBvZiBcIi9cIlxuLy8gICogQmFzZTY0IG11c3Qgbm90IGJlIHVzZWQgdG8gcmVwcmVzZW50IGRpcmVjdCBjaGFyYWN0ZXJzLlxuLy8gICogTm8gaW1wbGljaXQgc2hpZnQgYmFjayBmcm9tIEJhc2U2NCAoc2hvdWxkIGFsd2F5cyBlbmQgd2l0aCAnLScpXG4vLyAgKiBTdHJpbmcgbXVzdCBlbmQgaW4gbm9uLXNoaWZ0ZWQgcG9zaXRpb24uXG4vLyAgKiBcIi0mXCIgd2hpbGUgaW4gYmFzZTY0IGlzIG5vdCBhbGxvd2VkLlxuXG5cbmV4cG9ydHMudXRmN2ltYXAgPSBVdGY3SU1BUENvZGVjO1xuZnVuY3Rpb24gVXRmN0lNQVBDb2RlYyhjb2RlY09wdGlvbnMsIGljb252KSB7XG4gICAgdGhpcy5pY29udiA9IGljb252O1xufTtcblxuVXRmN0lNQVBDb2RlYy5wcm90b3R5cGUuZW5jb2RlciA9IFV0ZjdJTUFQRW5jb2RlcjtcblV0ZjdJTUFQQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBVdGY3SU1BUERlY29kZXI7XG5VdGY3SU1BUENvZGVjLnByb3RvdHlwZS5ib21Bd2FyZSA9IHRydWU7XG5cblxuLy8gLS0gRW5jb2RpbmdcblxuZnVuY3Rpb24gVXRmN0lNQVBFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252O1xuICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gQnVmZmVyLmFsbG9jKDYpO1xuICAgIHRoaXMuYmFzZTY0QWNjdW1JZHggPSAwO1xufVxuXG5VdGY3SU1BUEVuY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oc3RyKSB7XG4gICAgdmFyIGluQmFzZTY0ID0gdGhpcy5pbkJhc2U2NCxcbiAgICAgICAgYmFzZTY0QWNjdW0gPSB0aGlzLmJhc2U2NEFjY3VtLFxuICAgICAgICBiYXNlNjRBY2N1bUlkeCA9IHRoaXMuYmFzZTY0QWNjdW1JZHgsXG4gICAgICAgIGJ1ZiA9IEJ1ZmZlci5hbGxvYyhzdHIubGVuZ3RoKjUgKyAxMCksIGJ1ZklkeCA9IDA7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgdUNoYXIgPSBzdHIuY2hhckNvZGVBdChpKTtcbiAgICAgICAgaWYgKDB4MjAgPD0gdUNoYXIgJiYgdUNoYXIgPD0gMHg3RSkgeyAvLyBEaXJlY3QgY2hhcmFjdGVyIG9yICcmJy5cbiAgICAgICAgICAgIGlmIChpbkJhc2U2NCkge1xuICAgICAgICAgICAgICAgIGlmIChiYXNlNjRBY2N1bUlkeCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmSWR4ICs9IGJ1Zi53cml0ZShiYXNlNjRBY2N1bS5zbGljZSgwLCBiYXNlNjRBY2N1bUlkeCkudG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcLy9nLCAnLCcpLnJlcGxhY2UoLz0rJC8sICcnKSwgYnVmSWR4KTtcbiAgICAgICAgICAgICAgICAgICAgYmFzZTY0QWNjdW1JZHggPSAwO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJ1ZltidWZJZHgrK10gPSBtaW51c0NoYXI7IC8vIFdyaXRlICctJywgdGhlbiBnbyB0byBkaXJlY3QgbW9kZS5cbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWluQmFzZTY0KSB7XG4gICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IHVDaGFyOyAvLyBXcml0ZSBkaXJlY3QgY2hhcmFjdGVyXG5cbiAgICAgICAgICAgICAgICBpZiAodUNoYXIgPT09IGFuZENoYXIpICAvLyBBbXBlcnNhbmQgLT4gJyYtJ1xuICAgICAgICAgICAgICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7IC8vIE5vbi1kaXJlY3QgY2hhcmFjdGVyXG4gICAgICAgICAgICBpZiAoIWluQmFzZTY0KSB7XG4gICAgICAgICAgICAgICAgYnVmW2J1ZklkeCsrXSA9IGFuZENoYXI7IC8vIFdyaXRlICcmJywgdGhlbiBnbyB0byBiYXNlNjQgbW9kZS5cbiAgICAgICAgICAgICAgICBpbkJhc2U2NCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5CYXNlNjQpIHtcbiAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bVtiYXNlNjRBY2N1bUlkeCsrXSA9IHVDaGFyID4+IDg7XG4gICAgICAgICAgICAgICAgYmFzZTY0QWNjdW1bYmFzZTY0QWNjdW1JZHgrK10gPSB1Q2hhciAmIDB4RkY7XG5cbiAgICAgICAgICAgICAgICBpZiAoYmFzZTY0QWNjdW1JZHggPT0gYmFzZTY0QWNjdW0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZklkeCArPSBidWYud3JpdGUoYmFzZTY0QWNjdW0udG9TdHJpbmcoJ2Jhc2U2NCcpLnJlcGxhY2UoL1xcLy9nLCAnLCcpLCBidWZJZHgpO1xuICAgICAgICAgICAgICAgICAgICBiYXNlNjRBY2N1bUlkeCA9IDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGluQmFzZTY0O1xuICAgIHRoaXMuYmFzZTY0QWNjdW1JZHggPSBiYXNlNjRBY2N1bUlkeDtcblxuICAgIHJldHVybiBidWYuc2xpY2UoMCwgYnVmSWR4KTtcbn1cblxuVXRmN0lNQVBFbmNvZGVyLnByb3RvdHlwZS5lbmQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jKDEwKSwgYnVmSWR4ID0gMDtcbiAgICBpZiAodGhpcy5pbkJhc2U2NCkge1xuICAgICAgICBpZiAodGhpcy5iYXNlNjRBY2N1bUlkeCA+IDApIHtcbiAgICAgICAgICAgIGJ1ZklkeCArPSBidWYud3JpdGUodGhpcy5iYXNlNjRBY2N1bS5zbGljZSgwLCB0aGlzLmJhc2U2NEFjY3VtSWR4KS50b1N0cmluZygnYmFzZTY0JykucmVwbGFjZSgvXFwvL2csICcsJykucmVwbGFjZSgvPSskLywgJycpLCBidWZJZHgpO1xuICAgICAgICAgICAgdGhpcy5iYXNlNjRBY2N1bUlkeCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBidWZbYnVmSWR4KytdID0gbWludXNDaGFyOyAvLyBXcml0ZSAnLScsIHRoZW4gZ28gdG8gZGlyZWN0IG1vZGUuXG4gICAgICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnVmLnNsaWNlKDAsIGJ1ZklkeCk7XG59XG5cblxuLy8gLS0gRGVjb2RpbmdcblxuZnVuY3Rpb24gVXRmN0lNQVBEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5pY29udiA9IGNvZGVjLmljb252O1xuICAgIHRoaXMuaW5CYXNlNjQgPSBmYWxzZTtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gJyc7XG59XG5cbnZhciBiYXNlNjRJTUFQQ2hhcnMgPSBiYXNlNjRDaGFycy5zbGljZSgpO1xuYmFzZTY0SU1BUENoYXJzWycsJy5jaGFyQ29kZUF0KDApXSA9IHRydWU7XG5cblV0ZjdJTUFQRGVjb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihidWYpIHtcbiAgICB2YXIgcmVzID0gXCJcIiwgbGFzdEkgPSAwLFxuICAgICAgICBpbkJhc2U2NCA9IHRoaXMuaW5CYXNlNjQsXG4gICAgICAgIGJhc2U2NEFjY3VtID0gdGhpcy5iYXNlNjRBY2N1bTtcblxuICAgIC8vIFRoZSBkZWNvZGVyIGlzIG1vcmUgaW52b2x2ZWQgYXMgd2UgbXVzdCBoYW5kbGUgY2h1bmtzIGluIHN0cmVhbS5cbiAgICAvLyBJdCBpcyBmb3JnaXZpbmcsIGNsb3NlciB0byBzdGFuZGFyZCBVVEYtNyAoZm9yIGV4YW1wbGUsICctJyBpcyBvcHRpb25hbCBhdCB0aGUgZW5kKS5cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICghaW5CYXNlNjQpIHsgLy8gV2UncmUgaW4gZGlyZWN0IG1vZGUuXG4gICAgICAgICAgICAvLyBXcml0ZSBkaXJlY3QgY2hhcnMgdW50aWwgJyYnXG4gICAgICAgICAgICBpZiAoYnVmW2ldID09IGFuZENoYXIpIHtcbiAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoYnVmLnNsaWNlKGxhc3RJLCBpKSwgXCJhc2NpaVwiKTsgLy8gV3JpdGUgZGlyZWN0IGNoYXJzLlxuICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxO1xuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgLy8gV2UgZGVjb2RlIGJhc2U2NC5cbiAgICAgICAgICAgIGlmICghYmFzZTY0SU1BUENoYXJzW2J1ZltpXV0pIHsgLy8gQmFzZTY0IGVuZGVkLlxuICAgICAgICAgICAgICAgIGlmIChpID09IGxhc3RJICYmIGJ1ZltpXSA9PSBtaW51c0NoYXIpIHsgLy8gXCImLVwiIC0+IFwiJlwiXG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIiZcIjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYjY0c3RyID0gYmFzZTY0QWNjdW0gKyBidWYuc2xpY2UobGFzdEksIGkpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnLycpO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gdGhpcy5pY29udi5kZWNvZGUoQnVmZmVyLmZyb20oYjY0c3RyLCAnYmFzZTY0JyksIFwidXRmMTYtYmVcIik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGJ1ZltpXSAhPSBtaW51c0NoYXIpIC8vIE1pbnVzIG1heSBiZSBhYnNvcmJlZCBhZnRlciBiYXNlNjQuXG4gICAgICAgICAgICAgICAgICAgIGktLTtcblxuICAgICAgICAgICAgICAgIGxhc3RJID0gaSsxO1xuICAgICAgICAgICAgICAgIGluQmFzZTY0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYmFzZTY0QWNjdW0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlmICghaW5CYXNlNjQpIHtcbiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKGJ1Zi5zbGljZShsYXN0SSksIFwiYXNjaWlcIik7IC8vIFdyaXRlIGRpcmVjdCBjaGFycy5cbiAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgYjY0c3RyID0gYmFzZTY0QWNjdW0gKyBidWYuc2xpY2UobGFzdEkpLnRvU3RyaW5nKCkucmVwbGFjZSgvLC9nLCAnLycpO1xuXG4gICAgICAgIHZhciBjYW5CZURlY29kZWQgPSBiNjRzdHIubGVuZ3RoIC0gKGI2NHN0ci5sZW5ndGggJSA4KTsgLy8gTWluaW1hbCBjaHVuazogMiBxdWFkcyAtPiAyeDMgYnl0ZXMgLT4gMyBjaGFycy5cbiAgICAgICAgYmFzZTY0QWNjdW0gPSBiNjRzdHIuc2xpY2UoY2FuQmVEZWNvZGVkKTsgLy8gVGhlIHJlc3Qgd2lsbCBiZSBkZWNvZGVkIGluIGZ1dHVyZS5cbiAgICAgICAgYjY0c3RyID0gYjY0c3RyLnNsaWNlKDAsIGNhbkJlRGVjb2RlZCk7XG5cbiAgICAgICAgcmVzICs9IHRoaXMuaWNvbnYuZGVjb2RlKEJ1ZmZlci5mcm9tKGI2NHN0ciwgJ2Jhc2U2NCcpLCBcInV0ZjE2LWJlXCIpO1xuICAgIH1cblxuICAgIHRoaXMuaW5CYXNlNjQgPSBpbkJhc2U2NDtcbiAgICB0aGlzLmJhc2U2NEFjY3VtID0gYmFzZTY0QWNjdW07XG5cbiAgICByZXR1cm4gcmVzO1xufVxuXG5VdGY3SU1BUERlY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZXMgPSBcIlwiO1xuICAgIGlmICh0aGlzLmluQmFzZTY0ICYmIHRoaXMuYmFzZTY0QWNjdW0ubGVuZ3RoID4gMClcbiAgICAgICAgcmVzID0gdGhpcy5pY29udi5kZWNvZGUoQnVmZmVyLmZyb20odGhpcy5iYXNlNjRBY2N1bSwgJ2Jhc2U2NCcpLCBcInV0ZjE2LWJlXCIpO1xuXG4gICAgdGhpcy5pbkJhc2U2NCA9IGZhbHNlO1xuICAgIHRoaXMuYmFzZTY0QWNjdW0gPSAnJztcbiAgICByZXR1cm4gcmVzO1xufVxuXG5cbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIEJ1ZmZlciA9IHJlcXVpcmUoXCJzYWZlci1idWZmZXJcIikuQnVmZmVyO1xuXG4vLyBTaW5nbGUtYnl0ZSBjb2RlYy4gTmVlZHMgYSAnY2hhcnMnIHN0cmluZyBwYXJhbWV0ZXIgdGhhdCBjb250YWlucyAyNTYgb3IgMTI4IGNoYXJzIHRoYXRcbi8vIGNvcnJlc3BvbmQgdG8gZW5jb2RlZCBieXRlcyAoaWYgMTI4IC0gdGhlbiBsb3dlciBoYWxmIGlzIEFTQ0lJKS4gXG5cbmV4cG9ydHMuX3NiY3MgPSBTQkNTQ29kZWM7XG5mdW5jdGlvbiBTQkNTQ29kZWMoY29kZWNPcHRpb25zLCBpY29udikge1xuICAgIGlmICghY29kZWNPcHRpb25zKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTQkNTIGNvZGVjIGlzIGNhbGxlZCB3aXRob3V0IHRoZSBkYXRhLlwiKVxuICAgIFxuICAgIC8vIFByZXBhcmUgY2hhciBidWZmZXIgZm9yIGRlY29kaW5nLlxuICAgIGlmICghY29kZWNPcHRpb25zLmNoYXJzIHx8IChjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoICE9PSAxMjggJiYgY29kZWNPcHRpb25zLmNoYXJzLmxlbmd0aCAhPT0gMjU2KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRW5jb2RpbmcgJ1wiK2NvZGVjT3B0aW9ucy50eXBlK1wiJyBoYXMgaW5jb3JyZWN0ICdjaGFycycgKG11c3QgYmUgb2YgbGVuIDEyOCBvciAyNTYpXCIpO1xuICAgIFxuICAgIGlmIChjb2RlY09wdGlvbnMuY2hhcnMubGVuZ3RoID09PSAxMjgpIHtcbiAgICAgICAgdmFyIGFzY2lpU3RyaW5nID0gXCJcIjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMjg7IGkrKylcbiAgICAgICAgICAgIGFzY2lpU3RyaW5nICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoaSk7XG4gICAgICAgIGNvZGVjT3B0aW9ucy5jaGFycyA9IGFzY2lpU3RyaW5nICsgY29kZWNPcHRpb25zLmNoYXJzO1xuICAgIH1cblxuICAgIHRoaXMuZGVjb2RlQnVmID0gQnVmZmVyLmZyb20oY29kZWNPcHRpb25zLmNoYXJzLCAndWNzMicpO1xuICAgIFxuICAgIC8vIEVuY29kaW5nIGJ1ZmZlci5cbiAgICB2YXIgZW5jb2RlQnVmID0gQnVmZmVyLmFsbG9jKDY1NTM2LCBpY29udi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVBdCgwKSk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvZGVjT3B0aW9ucy5jaGFycy5sZW5ndGg7IGkrKylcbiAgICAgICAgZW5jb2RlQnVmW2NvZGVjT3B0aW9ucy5jaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7XG5cbiAgICB0aGlzLmVuY29kZUJ1ZiA9IGVuY29kZUJ1Zjtcbn1cblxuU0JDU0NvZGVjLnByb3RvdHlwZS5lbmNvZGVyID0gU0JDU0VuY29kZXI7XG5TQkNTQ29kZWMucHJvdG90eXBlLmRlY29kZXIgPSBTQkNTRGVjb2RlcjtcblxuXG5mdW5jdGlvbiBTQkNTRW5jb2RlcihvcHRpb25zLCBjb2RlYykge1xuICAgIHRoaXMuZW5jb2RlQnVmID0gY29kZWMuZW5jb2RlQnVmO1xufVxuXG5TQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICB2YXIgYnVmID0gQnVmZmVyLmFsbG9jKHN0ci5sZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgaSsrKVxuICAgICAgICBidWZbaV0gPSB0aGlzLmVuY29kZUJ1ZltzdHIuY2hhckNvZGVBdChpKV07XG4gICAgXG4gICAgcmV0dXJuIGJ1Zjtcbn1cblxuU0JDU0VuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xufVxuXG5cbmZ1bmN0aW9uIFNCQ1NEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgdGhpcy5kZWNvZGVCdWYgPSBjb2RlYy5kZWNvZGVCdWY7XG59XG5cblNCQ1NEZWNvZGVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKGJ1Zikge1xuICAgIC8vIFN0cmluZ3MgYXJlIGltbXV0YWJsZSBpbiBKUyAtPiB3ZSB1c2UgdWNzMiBidWZmZXIgdG8gc3BlZWQgdXAgY29tcHV0YXRpb25zLlxuICAgIHZhciBkZWNvZGVCdWYgPSB0aGlzLmRlY29kZUJ1ZjtcbiAgICB2YXIgbmV3QnVmID0gQnVmZmVyLmFsbG9jKGJ1Zi5sZW5ndGgqMik7XG4gICAgdmFyIGlkeDEgPSAwLCBpZHgyID0gMDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJ1Zi5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZHgxID0gYnVmW2ldKjI7IGlkeDIgPSBpKjI7XG4gICAgICAgIG5ld0J1ZltpZHgyXSA9IGRlY29kZUJ1ZltpZHgxXTtcbiAgICAgICAgbmV3QnVmW2lkeDIrMV0gPSBkZWNvZGVCdWZbaWR4MSsxXTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0J1Zi50b1N0cmluZygndWNzMicpO1xufVxuXG5TQkNTRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuLy8gTWFudWFsbHkgYWRkZWQgZGF0YSB0byBiZSB1c2VkIGJ5IHNiY3MgY29kZWMgaW4gYWRkaXRpb24gdG8gZ2VuZXJhdGVkIG9uZS5cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgLy8gTm90IHN1cHBvcnRlZCBieSBpY29udiwgbm90IHN1cmUgd2h5LlxuICAgIFwiMTAwMjlcIjogXCJtYWNjZW50ZXVyb1wiLFxuICAgIFwibWFjY2VudGV1cm9cIjoge1xuICAgICAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgICAgICBcImNoYXJzXCI6IFwiw4TEgMSBw4nEhMOWw5zDocSFxIzDpMSNxIbEh8OpxbnFusSOw63Ej8SSxJPElsOzxJfDtMO2w7XDusSaxJvDvOKAoMKwxJjCo8Kn4oCiwrbDn8KuwqnihKLEmcKo4omgxKPErsSvxKriiaTiiaXEq8S24oiC4oiRxYLEu8S8xL3EvsS5xLrFhcWGxYPCrOKImsWExYfiiIbCq8K74oCmwqDFiMWQw5XFkcWM4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rFjcWUxZXFmOKAueKAusWZxZbFl8Wg4oCa4oCexaHFmsWbw4HFpMWlw43FvcW+xarDk8OUxavFrsOaxa/FsMWxxbLFs8Odw73Et8W7xYHFvMSiy4dcIlxuICAgIH0sXG5cbiAgICBcIjgwOFwiOiBcImNwODA4XCIsXG4gICAgXCJpYm04MDhcIjogXCJjcDgwOFwiLFxuICAgIFwiY3A4MDhcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgICAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0ITRlNCH0ZfQjtGewrDiiJnCt+KImuKEluKCrOKWoMKgXCJcbiAgICB9LFxuXG4gICAgXCJtaWtcIjoge1xuICAgICAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgICAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/ilJTilLTilKzilJzilIDilLzilaPilZHilZrilZTilanilabilaDilZDilazilJDilpHilpLilpPilILilKTihJbCp+KVl+KVneKUmOKUjOKWiOKWhOKWjOKWkOKWgM6xw5/Ok8+AzqPPg8K1z4TOps6YzqnOtOKIns+GzrXiiKniiaHCseKJpeKJpOKMoOKMocO34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICAgIH0sXG5cbiAgICAvLyBBbGlhc2VzIG9mIGdlbmVyYXRlZCBlbmNvZGluZ3MuXG4gICAgXCJhc2NpaThiaXRcIjogXCJhc2NpaVwiLFxuICAgIFwidXNhc2NpaVwiOiBcImFzY2lpXCIsXG4gICAgXCJhbnNpeDM0XCI6IFwiYXNjaWlcIixcbiAgICBcImFuc2l4MzQxOTY4XCI6IFwiYXNjaWlcIixcbiAgICBcImFuc2l4MzQxOTg2XCI6IFwiYXNjaWlcIixcbiAgICBcImNzYXNjaWlcIjogXCJhc2NpaVwiLFxuICAgIFwiY3AzNjdcIjogXCJhc2NpaVwiLFxuICAgIFwiaWJtMzY3XCI6IFwiYXNjaWlcIixcbiAgICBcImlzb2lyNlwiOiBcImFzY2lpXCIsXG4gICAgXCJpc282NDZ1c1wiOiBcImFzY2lpXCIsXG4gICAgXCJpc282NDZpcnZcIjogXCJhc2NpaVwiLFxuICAgIFwidXNcIjogXCJhc2NpaVwiLFxuXG4gICAgXCJsYXRpbjFcIjogXCJpc284ODU5MVwiLFxuICAgIFwibGF0aW4yXCI6IFwiaXNvODg1OTJcIixcbiAgICBcImxhdGluM1wiOiBcImlzbzg4NTkzXCIsXG4gICAgXCJsYXRpbjRcIjogXCJpc284ODU5NFwiLFxuICAgIFwibGF0aW41XCI6IFwiaXNvODg1OTlcIixcbiAgICBcImxhdGluNlwiOiBcImlzbzg4NTkxMFwiLFxuICAgIFwibGF0aW43XCI6IFwiaXNvODg1OTEzXCIsXG4gICAgXCJsYXRpbjhcIjogXCJpc284ODU5MTRcIixcbiAgICBcImxhdGluOVwiOiBcImlzbzg4NTkxNVwiLFxuICAgIFwibGF0aW4xMFwiOiBcImlzbzg4NTkxNlwiLFxuXG4gICAgXCJjc2lzb2xhdGluMVwiOiBcImlzbzg4NTkxXCIsXG4gICAgXCJjc2lzb2xhdGluMlwiOiBcImlzbzg4NTkyXCIsXG4gICAgXCJjc2lzb2xhdGluM1wiOiBcImlzbzg4NTkzXCIsXG4gICAgXCJjc2lzb2xhdGluNFwiOiBcImlzbzg4NTk0XCIsXG4gICAgXCJjc2lzb2xhdGluY3lyaWxsaWNcIjogXCJpc284ODU5NVwiLFxuICAgIFwiY3Npc29sYXRpbmFyYWJpY1wiOiBcImlzbzg4NTk2XCIsXG4gICAgXCJjc2lzb2xhdGluZ3JlZWtcIiA6IFwiaXNvODg1OTdcIixcbiAgICBcImNzaXNvbGF0aW5oZWJyZXdcIjogXCJpc284ODU5OFwiLFxuICAgIFwiY3Npc29sYXRpbjVcIjogXCJpc284ODU5OVwiLFxuICAgIFwiY3Npc29sYXRpbjZcIjogXCJpc284ODU5MTBcIixcblxuICAgIFwibDFcIjogXCJpc284ODU5MVwiLFxuICAgIFwibDJcIjogXCJpc284ODU5MlwiLFxuICAgIFwibDNcIjogXCJpc284ODU5M1wiLFxuICAgIFwibDRcIjogXCJpc284ODU5NFwiLFxuICAgIFwibDVcIjogXCJpc284ODU5OVwiLFxuICAgIFwibDZcIjogXCJpc284ODU5MTBcIixcbiAgICBcImw3XCI6IFwiaXNvODg1OTEzXCIsXG4gICAgXCJsOFwiOiBcImlzbzg4NTkxNFwiLFxuICAgIFwibDlcIjogXCJpc284ODU5MTVcIixcbiAgICBcImwxMFwiOiBcImlzbzg4NTkxNlwiLFxuXG4gICAgXCJpc29pcjE0XCI6IFwiaXNvNjQ2anBcIixcbiAgICBcImlzb2lyNTdcIjogXCJpc282NDZjblwiLFxuICAgIFwiaXNvaXIxMDBcIjogXCJpc284ODU5MVwiLFxuICAgIFwiaXNvaXIxMDFcIjogXCJpc284ODU5MlwiLFxuICAgIFwiaXNvaXIxMDlcIjogXCJpc284ODU5M1wiLFxuICAgIFwiaXNvaXIxMTBcIjogXCJpc284ODU5NFwiLFxuICAgIFwiaXNvaXIxNDRcIjogXCJpc284ODU5NVwiLFxuICAgIFwiaXNvaXIxMjdcIjogXCJpc284ODU5NlwiLFxuICAgIFwiaXNvaXIxMjZcIjogXCJpc284ODU5N1wiLFxuICAgIFwiaXNvaXIxMzhcIjogXCJpc284ODU5OFwiLFxuICAgIFwiaXNvaXIxNDhcIjogXCJpc284ODU5OVwiLFxuICAgIFwiaXNvaXIxNTdcIjogXCJpc284ODU5MTBcIixcbiAgICBcImlzb2lyMTY2XCI6IFwidGlzNjIwXCIsXG4gICAgXCJpc29pcjE3OVwiOiBcImlzbzg4NTkxM1wiLFxuICAgIFwiaXNvaXIxOTlcIjogXCJpc284ODU5MTRcIixcbiAgICBcImlzb2lyMjAzXCI6IFwiaXNvODg1OTE1XCIsXG4gICAgXCJpc29pcjIyNlwiOiBcImlzbzg4NTkxNlwiLFxuXG4gICAgXCJjcDgxOVwiOiBcImlzbzg4NTkxXCIsXG4gICAgXCJpYm04MTlcIjogXCJpc284ODU5MVwiLFxuXG4gICAgXCJjeXJpbGxpY1wiOiBcImlzbzg4NTk1XCIsXG5cbiAgICBcImFyYWJpY1wiOiBcImlzbzg4NTk2XCIsXG4gICAgXCJhcmFiaWM4XCI6IFwiaXNvODg1OTZcIixcbiAgICBcImVjbWExMTRcIjogXCJpc284ODU5NlwiLFxuICAgIFwiYXNtbzcwOFwiOiBcImlzbzg4NTk2XCIsXG5cbiAgICBcImdyZWVrXCIgOiBcImlzbzg4NTk3XCIsXG4gICAgXCJncmVlazhcIiA6IFwiaXNvODg1OTdcIixcbiAgICBcImVjbWExMThcIiA6IFwiaXNvODg1OTdcIixcbiAgICBcImVsb3Q5MjhcIiA6IFwiaXNvODg1OTdcIixcblxuICAgIFwiaGVicmV3XCI6IFwiaXNvODg1OThcIixcbiAgICBcImhlYnJldzhcIjogXCJpc284ODU5OFwiLFxuXG4gICAgXCJ0dXJraXNoXCI6IFwiaXNvODg1OTlcIixcbiAgICBcInR1cmtpc2g4XCI6IFwiaXNvODg1OTlcIixcblxuICAgIFwidGhhaVwiOiBcImlzbzg4NTkxMVwiLFxuICAgIFwidGhhaThcIjogXCJpc284ODU5MTFcIixcblxuICAgIFwiY2VsdGljXCI6IFwiaXNvODg1OTE0XCIsXG4gICAgXCJjZWx0aWM4XCI6IFwiaXNvODg1OTE0XCIsXG4gICAgXCJpc29jZWx0aWNcIjogXCJpc284ODU5MTRcIixcblxuICAgIFwidGlzNjIwMFwiOiBcInRpczYyMFwiLFxuICAgIFwidGlzNjIwMjUyOTFcIjogXCJ0aXM2MjBcIixcbiAgICBcInRpczYyMDI1MzMwXCI6IFwidGlzNjIwXCIsXG5cbiAgICBcIjEwMDAwXCI6IFwibWFjcm9tYW5cIixcbiAgICBcIjEwMDA2XCI6IFwibWFjZ3JlZWtcIixcbiAgICBcIjEwMDA3XCI6IFwibWFjY3lyaWxsaWNcIixcbiAgICBcIjEwMDc5XCI6IFwibWFjaWNlbGFuZFwiLFxuICAgIFwiMTAwODFcIjogXCJtYWN0dXJraXNoXCIsXG5cbiAgICBcImNzcGM4Y29kZXBhZ2U0MzdcIjogXCJjcDQzN1wiLFxuICAgIFwiY3NwYzc3NWJhbHRpY1wiOiBcImNwNzc1XCIsXG4gICAgXCJjc3BjODUwbXVsdGlsaW5ndWFsXCI6IFwiY3A4NTBcIixcbiAgICBcImNzcGNwODUyXCI6IFwiY3A4NTJcIixcbiAgICBcImNzcGM4NjJsYXRpbmhlYnJld1wiOiBcImNwODYyXCIsXG4gICAgXCJjcGdyXCI6IFwiY3A4NjlcIixcblxuICAgIFwibXNlZVwiOiBcImNwMTI1MFwiLFxuICAgIFwibXNjeXJsXCI6IFwiY3AxMjUxXCIsXG4gICAgXCJtc2Fuc2lcIjogXCJjcDEyNTJcIixcbiAgICBcIm1zZ3JlZWtcIjogXCJjcDEyNTNcIixcbiAgICBcIm1zdHVya1wiOiBcImNwMTI1NFwiLFxuICAgIFwibXNoZWJyXCI6IFwiY3AxMjU1XCIsXG4gICAgXCJtc2FyYWJcIjogXCJjcDEyNTZcIixcbiAgICBcIndpbmJhbHRyaW1cIjogXCJjcDEyNTdcIixcblxuICAgIFwiY3AyMDg2NlwiOiBcImtvaThyXCIsXG4gICAgXCIyMDg2NlwiOiBcImtvaThyXCIsXG4gICAgXCJpYm04NzhcIjogXCJrb2k4clwiLFxuICAgIFwiY3Nrb2k4clwiOiBcImtvaThyXCIsXG5cbiAgICBcImNwMjE4NjZcIjogXCJrb2k4dVwiLFxuICAgIFwiMjE4NjZcIjogXCJrb2k4dVwiLFxuICAgIFwiaWJtMTE2OFwiOiBcImtvaTh1XCIsXG5cbiAgICBcInN0cmsxMDQ4MjAwMlwiOiBcInJrMTA0OFwiLFxuXG4gICAgXCJ0Y3ZuNTcxMlwiOiBcInRjdm5cIixcbiAgICBcInRjdm41NzEyMVwiOiBcInRjdm5cIixcblxuICAgIFwiZ2IxOTg4ODBcIjogXCJpc282NDZjblwiLFxuICAgIFwiY25cIjogXCJpc282NDZjblwiLFxuXG4gICAgXCJjc2lzbzE0amlzYzYyMjByb1wiOiBcImlzbzY0NmpwXCIsXG4gICAgXCJqaXNjNjIyMDE5Njlyb1wiOiBcImlzbzY0NmpwXCIsXG4gICAgXCJqcFwiOiBcImlzbzY0NmpwXCIsXG5cbiAgICBcImNzaHByb21hbjhcIjogXCJocHJvbWFuOFwiLFxuICAgIFwicjhcIjogXCJocHJvbWFuOFwiLFxuICAgIFwicm9tYW44XCI6IFwiaHByb21hbjhcIixcbiAgICBcInhyb21hbjhcIjogXCJocHJvbWFuOFwiLFxuICAgIFwiaWJtMTA1MVwiOiBcImhwcm9tYW44XCIsXG5cbiAgICBcIm1hY1wiOiBcIm1hY2ludG9zaFwiLFxuICAgIFwiY3NtYWNpbnRvc2hcIjogXCJtYWNpbnRvc2hcIixcbn07XG5cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vLyBHZW5lcmF0ZWQgZGF0YSBmb3Igc2JjcyBjb2RlYy4gRG9uJ3QgZWRpdCBtYW51YWxseS4gUmVnZW5lcmF0ZSB1c2luZyBnZW5lcmF0aW9uL2dlbi1zYmNzLmpzIHNjcmlwdC5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBcIjQzN1wiOiBcImNwNDM3XCIsXG4gIFwiNzM3XCI6IFwiY3A3MzdcIixcbiAgXCI3NzVcIjogXCJjcDc3NVwiLFxuICBcIjg1MFwiOiBcImNwODUwXCIsXG4gIFwiODUyXCI6IFwiY3A4NTJcIixcbiAgXCI4NTVcIjogXCJjcDg1NVwiLFxuICBcIjg1NlwiOiBcImNwODU2XCIsXG4gIFwiODU3XCI6IFwiY3A4NTdcIixcbiAgXCI4NThcIjogXCJjcDg1OFwiLFxuICBcIjg2MFwiOiBcImNwODYwXCIsXG4gIFwiODYxXCI6IFwiY3A4NjFcIixcbiAgXCI4NjJcIjogXCJjcDg2MlwiLFxuICBcIjg2M1wiOiBcImNwODYzXCIsXG4gIFwiODY0XCI6IFwiY3A4NjRcIixcbiAgXCI4NjVcIjogXCJjcDg2NVwiLFxuICBcIjg2NlwiOiBcImNwODY2XCIsXG4gIFwiODY5XCI6IFwiY3A4NjlcIixcbiAgXCI4NzRcIjogXCJ3aW5kb3dzODc0XCIsXG4gIFwiOTIyXCI6IFwiY3A5MjJcIixcbiAgXCIxMDQ2XCI6IFwiY3AxMDQ2XCIsXG4gIFwiMTEyNFwiOiBcImNwMTEyNFwiLFxuICBcIjExMjVcIjogXCJjcDExMjVcIixcbiAgXCIxMTI5XCI6IFwiY3AxMTI5XCIsXG4gIFwiMTEzM1wiOiBcImNwMTEzM1wiLFxuICBcIjExNjFcIjogXCJjcDExNjFcIixcbiAgXCIxMTYyXCI6IFwiY3AxMTYyXCIsXG4gIFwiMTE2M1wiOiBcImNwMTE2M1wiLFxuICBcIjEyNTBcIjogXCJ3aW5kb3dzMTI1MFwiLFxuICBcIjEyNTFcIjogXCJ3aW5kb3dzMTI1MVwiLFxuICBcIjEyNTJcIjogXCJ3aW5kb3dzMTI1MlwiLFxuICBcIjEyNTNcIjogXCJ3aW5kb3dzMTI1M1wiLFxuICBcIjEyNTRcIjogXCJ3aW5kb3dzMTI1NFwiLFxuICBcIjEyNTVcIjogXCJ3aW5kb3dzMTI1NVwiLFxuICBcIjEyNTZcIjogXCJ3aW5kb3dzMTI1NlwiLFxuICBcIjEyNTdcIjogXCJ3aW5kb3dzMTI1N1wiLFxuICBcIjEyNThcIjogXCJ3aW5kb3dzMTI1OFwiLFxuICBcIjI4NTkxXCI6IFwiaXNvODg1OTFcIixcbiAgXCIyODU5MlwiOiBcImlzbzg4NTkyXCIsXG4gIFwiMjg1OTNcIjogXCJpc284ODU5M1wiLFxuICBcIjI4NTk0XCI6IFwiaXNvODg1OTRcIixcbiAgXCIyODU5NVwiOiBcImlzbzg4NTk1XCIsXG4gIFwiMjg1OTZcIjogXCJpc284ODU5NlwiLFxuICBcIjI4NTk3XCI6IFwiaXNvODg1OTdcIixcbiAgXCIyODU5OFwiOiBcImlzbzg4NTk4XCIsXG4gIFwiMjg1OTlcIjogXCJpc284ODU5OVwiLFxuICBcIjI4NjAwXCI6IFwiaXNvODg1OTEwXCIsXG4gIFwiMjg2MDFcIjogXCJpc284ODU5MTFcIixcbiAgXCIyODYwM1wiOiBcImlzbzg4NTkxM1wiLFxuICBcIjI4NjA0XCI6IFwiaXNvODg1OTE0XCIsXG4gIFwiMjg2MDVcIjogXCJpc284ODU5MTVcIixcbiAgXCIyODYwNlwiOiBcImlzbzg4NTkxNlwiLFxuICBcIndpbmRvd3M4NzRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/ve+/ve+/ve+/veKApu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlO+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vcKg4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li677+977+977+977+94Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4Lmb77+977+977+977+9XCJcbiAgfSxcbiAgXCJ3aW44NzRcIjogXCJ3aW5kb3dzODc0XCIsXG4gIFwiY3A4NzRcIjogXCJ3aW5kb3dzODc0XCIsXG4gIFwid2luZG93czEyNTBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/veKAmu+/veKAnuKApuKAoOKAoe+/veKAsMWg4oC5xZrFpMW9xbnvv73igJjigJnigJzigJ3igKLigJPigJTvv73ihKLFoeKAusWbxaXFvsW6wqDLh8uYxYHCpMSEwqbCp8KowqnFnsKrwqzCrcKuxbvCsMKxy5vFgsK0wrXCtsK3wrjEhcWfwrvEvcudxL7FvMWUw4HDgsSCw4TEucSGw4fEjMOJxJjDi8Saw43DjsSOxJDFg8WHw5PDlMWQw5bDl8WYxa7DmsWww5zDncWiw5/FlcOhw6LEg8OkxLrEh8OnxI3DqcSZw6vEm8Otw67Ej8SRxYTFiMOzw7TFkcO2w7fFmcWvw7rFscO8w73Fo8uZXCJcbiAgfSxcbiAgXCJ3aW4xMjUwXCI6IFwid2luZG93czEyNTBcIixcbiAgXCJjcDEyNTBcIjogXCJ3aW5kb3dzMTI1MFwiLFxuICBcIndpbmRvd3MxMjUxXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLQgtCD4oCa0ZPigJ7igKbigKDigKHigqzigLDQieKAudCK0IzQi9CP0ZLigJjigJnigJzigJ3igKLigJPigJTvv73ihKLRmeKAutGa0ZzRm9GfwqDQjtGe0IjCpNKQwqbCp9CBwqnQhMKrwqzCrcKu0IfCsMKx0IbRltKRwrXCtsK30ZHihJbRlMK70ZjQhdGV0ZfQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj1wiXG4gIH0sXG4gIFwid2luMTI1MVwiOiBcIndpbmRvd3MxMjUxXCIsXG4gIFwiY3AxMjUxXCI6IFwid2luZG93czEyNTFcIixcbiAgXCJ3aW5kb3dzMTI1MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLvv73Fve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSixaHigLrFk++/vcW+xbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcIndpbjEyNTJcIjogXCJ3aW5kb3dzMTI1MlwiLFxuICBcImNwMTI1MlwiOiBcIndpbmRvd3MxMjUyXCIsXG4gIFwid2luZG93czEyNTNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrO+/veKAmsaS4oCe4oCm4oCg4oCh77+94oCw77+94oC577+977+977+977+977+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+94oSi77+94oC677+977+977+977+9wqDOhc6GwqPCpMKlwqbCp8Kowqnvv73Cq8Kswq3CruKAlcKwwrHCssKzzoTCtcK2wrfOiM6JzorCu86Mwr3Ojs6PzpDOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6h77+9zqPOpM6lzqbOp86ozqnOqs6rzqzOrc6uzq/OsM6xzrLOs860zrXOts63zrjOuc66zrvOvM69zr7Ov8+Az4HPgs+Dz4TPhc+Gz4fPiM+Jz4rPi8+Mz43Pju+/vVwiXG4gIH0sXG4gIFwid2luMTI1M1wiOiBcIndpbmRvd3MxMjUzXCIsXG4gIFwiY3AxMjUzXCI6IFwid2luZG93czEyNTNcIixcbiAgXCJ3aW5kb3dzMTI1NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHLhuKAsMWg4oC5xZLvv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPvv73vv73FuMKgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnCusK7wrzCvcK+wr/DgMOBw4LDg8OEw4XDhsOHw4jDicOKw4vDjMONw47Dj8Sew5HDksOTw5TDlcOWw5fDmMOZw5rDm8OcxLDFnsOfw6DDocOiw6PDpMOlw6bDp8Oow6nDqsOrw6zDrcOuw6/En8Oxw7LDs8O0w7XDtsO3w7jDucO6w7vDvMSxxZ/Dv1wiXG4gIH0sXG4gIFwid2luMTI1NFwiOiBcIndpbmRvd3MxMjU0XCIsXG4gIFwiY3AxMjU0XCI6IFwid2luZG93czEyNTRcIixcbiAgXCJ3aW5kb3dzMTI1NVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCaxpLigJ7igKbigKDigKHLhuKAsO+/veKAue+/ve+/ve+/ve+/ve+/veKAmOKAmeKAnOKAneKAouKAk+KAlMuc4oSi77+94oC677+977+977+977+9wqDCocKiwqPigqrCpcKmwqfCqMKpw5fCq8Kswq3CrsKvwrDCscKywrPCtMK1wrbCt8K4wrnDt8K7wrzCvcK+wr/WsNax1rLWs9a01rXWtta31rjWuda61rvWvNa91r7Wv9eA14HXgteD17DXsdey17PXtO+/ve+/ve+/ve+/ve+/ve+/ve+/vdeQ15HXkteT15TXldeW15fXmNeZ15rXm9ec153Xntef16DXodei16PXpNel16bXp9eo16nXqu+/ve+/veKAjuKAj++/vVwiXG4gIH0sXG4gIFwid2luMTI1NVwiOiBcIndpbmRvd3MxMjU1XCIsXG4gIFwiY3AxMjU1XCI6IFwid2luZG93czEyNTVcIixcbiAgXCJ3aW5kb3dzMTI1NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs2b7igJrGkuKAnuKApuKAoOKAocuG4oCw2bnigLnFktqG2pjaiNqv4oCY4oCZ4oCc4oCd4oCi4oCT4oCU2qnihKLakeKAusWT4oCM4oCN2rrCoNiMwqLCo8KkwqXCpsKnwqjCqdq+wqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK52JvCu8K8wr3Cvtif24HYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtsOX2LfYuNi52LrZgNmB2YLZg8Og2YTDotmF2YbZh9mIw6fDqMOpw6rDq9mJ2YrDrsOv2YvZjNmN2Y7DtNmP2ZDDt9mRw7nZksO7w7zigI7igI/bklwiXG4gIH0sXG4gIFwid2luMTI1NlwiOiBcIndpbmRvd3MxMjU2XCIsXG4gIFwiY3AxMjU2XCI6IFwid2luZG93czEyNTZcIixcbiAgXCJ3aW5kb3dzMTI1N1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4oKs77+94oCa77+94oCe4oCm4oCg4oCh77+94oCw77+94oC577+9wqjLh8K477+94oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+94oSi77+94oC677+9wq/Lm++/vcKg77+9wqLCo8Kk77+9wqbCp8OYwqnFlsKrwqzCrcKuw4bCsMKxwrLCs8K0wrXCtsK3w7jCucWXwrvCvMK9wr7DpsSExK7EgMSGw4TDhcSYxJLEjMOJxbnElsSixLbEqsS7xaDFg8WFw5PFjMOVw5bDl8WyxYHFmsWqw5zFu8W9w5/EhcSvxIHEh8Okw6XEmcSTxI3DqcW6xJfEo8S3xKvEvMWhxYTFhsOzxY3DtcO2w7fFs8WCxZvFq8O8xbzFvsuZXCJcbiAgfSxcbiAgXCJ3aW4xMjU3XCI6IFwid2luZG93czEyNTdcIixcbiAgXCJjcDEyNTdcIjogXCJ3aW5kb3dzMTI1N1wiLFxuICBcIndpbmRvd3MxMjU4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLigqzvv73igJrGkuKAnuKApuKAoOKAocuG4oCw77+94oC5xZLvv73vv73vv73vv73igJjigJnigJzigJ3igKLigJPigJTLnOKEou+/veKAusWT77+977+9xbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCxILDhMOFw4bDh8OIw4nDisOLzIDDjcOOw4/EkMORzInDk8OUxqDDlsOXw5jDmcOaw5vDnMavzIPDn8Ogw6HDosSDw6TDpcOmw6fDqMOpw6rDq8yBw63DrsOvxJHDscyjw7PDtMahw7bDt8O4w7nDusO7w7zGsOKCq8O/XCJcbiAgfSxcbiAgXCJ3aW4xMjU4XCI6IFwid2luZG93czEyNThcIixcbiAgXCJjcDEyNThcIjogXCJ3aW5kb3dzMTI1OFwiLFxuICBcImlzbzg4NTkxXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPw5DDkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zDncOew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Oww7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8w73DvsO/XCJcbiAgfSxcbiAgXCJjcDI4NTkxXCI6IFwiaXNvODg1OTFcIixcbiAgXCJpc284ODU5MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITLmMWBwqTEvcWawqfCqMWgxZ7FpMW5wq3FvcW7wrDEhcubxYLCtMS+xZvLh8K4xaHFn8WlxbrLncW+xbzFlMOBw4LEgsOExLnEhsOHxIzDicSYw4vEmsONw47EjsSQxYPFh8OTw5TFkMOWw5fFmMWuw5rFsMOcw53FosOfxZXDocOixIPDpMS6xIfDp8SNw6nEmcOrxJvDrcOuxI/EkcWExYjDs8O0xZHDtsO3xZnFr8O6xbHDvMO9xaPLmVwiXG4gIH0sXG4gIFwiY3AyODU5MlwiOiBcImlzbzg4NTkyXCIsXG4gIFwiaXNvODg1OTNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSmy5jCo8Kk77+9xKTCp8KoxLDFnsSexLTCre+/vcW7wrDEp8KywrPCtMK1xKXCt8K4xLHFn8SfxLXCve+/vcW8w4DDgcOC77+9w4TEisSIw4fDiMOJw4rDi8OMw43DjsOP77+9w5HDksOTw5TEoMOWw5fEnMOZw5rDm8OcxazFnMOfw6DDocOi77+9w6TEi8SJw6fDqMOpw6rDq8Osw63DrsOv77+9w7HDssOzw7TEocO2w7fEncO5w7rDu8O8xa3FncuZXCJcbiAgfSxcbiAgXCJjcDI4NTkzXCI6IFwiaXNvODg1OTNcIixcbiAgXCJpc284ODU5NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgxITEuMWWwqTEqMS7wqfCqMWgxJLEosWmwq3FvcKvwrDEhcubxZfCtMSpxLzLh8K4xaHEk8SjxafFisW+xYvEgMOBw4LDg8OEw4XDhsSuxIzDicSYw4vElsONw47EqsSQxYXFjMS2w5TDlcOWw5fDmMWyw5rDm8OcxajFqsOfxIHDocOiw6PDpMOlw6bEr8SNw6nEmcOrxJfDrcOuxKvEkcWGxY3Et8O0w7XDtsO3w7jFs8O6w7vDvMWpxavLmVwiXG4gIH0sXG4gIFwiY3AyODU5NFwiOiBcImlzbzg4NTk0XCIsXG4gIFwiaXNvODg1OTVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoNCB0ILQg9CE0IXQhtCH0IjQidCK0IvQjMKt0I7Qj9CQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP4oSW0ZHRktGT0ZTRldGW0ZfRmNGZ0ZrRm9GcwqfRntGfXCJcbiAgfSxcbiAgXCJjcDI4NTk1XCI6IFwiaXNvODg1OTVcIixcbiAgXCJpc284ODU5NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kg77+977+977+9wqTvv73vv73vv73vv73vv73vv73vv73YjMKt77+977+977+977+977+977+977+977+977+977+977+977+977+92Jvvv73vv73vv73Yn++/vdih2KLYo9ik2KXYptin2KjYqdiq2KvYrNit2K7Yr9iw2LHYstiz2LTYtdi22LfYuNi52Lrvv73vv73vv73vv73vv73ZgNmB2YLZg9mE2YXZhtmH2YjZidmK2YvZjNmN2Y7Zj9mQ2ZHZku+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwiY3AyODU5NlwiOiBcImlzbzg4NTk2XCIsXG4gIFwiaXNvODg1OTdcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOKAmOKAmcKj4oKs4oKvwqbCp8KowqnNusKrwqzCre+/veKAlcKwwrHCssKzzoTOhc6GwrfOiM6JzorCu86Mwr3Ojs6PzpDOkc6SzpPOlM6VzpbOl86YzpnOms6bzpzOnc6ezp/OoM6h77+9zqPOpM6lzqbOp86ozqnOqs6rzqzOrc6uzq/OsM6xzrLOs860zrXOts63zrjOuc66zrvOvM69zr7Ov8+Az4HPgs+Dz4TPhc+Gz4fPiM+Jz4rPi8+Mz43Pju+/vVwiXG4gIH0sXG4gIFwiY3AyODU5N1wiOiBcImlzbzg4NTk3XCIsXG4gIFwiaXNvODg1OThcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoO+/vcKiwqPCpMKlwqbCp8KowqnDl8KrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucO3wrvCvMK9wr7vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73igJfXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rvv73vv73igI7igI/vv71cIlxuICB9LFxuICBcImNwMjg1OThcIjogXCJpc284ODU5OFwiLFxuICBcImlzbzg4NTk5XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv8OAw4HDgsODw4TDhcOGw4fDiMOJw4rDi8OMw43DjsOPxJ7DkcOSw5PDlMOVw5bDl8OYw5nDmsObw5zEsMWew5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8Sfw7HDssOzw7TDtcO2w7fDuMO5w7rDu8O8xLHFn8O/XCJcbiAgfSxcbiAgXCJjcDI4NTk5XCI6IFwiaXNvODg1OTlcIixcbiAgXCJpc284ODU5MTBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSExJLEosSqxKjEtsKnxLvEkMWgxabFvcKtxarFisKwxIXEk8SjxKvEqcS3wrfEvMSRxaHFp8W+4oCVxavFi8SAw4HDgsODw4TDhcOGxK7EjMOJxJjDi8SWw43DjsOPw5DFhcWMw5PDlMOVw5bFqMOYxbLDmsObw5zDncOew5/EgcOhw6LDo8Okw6XDpsSvxI3DqcSZw6vEl8Otw67Dr8OwxYbFjcOzw7TDtcO2xanDuMWzw7rDu8O8w73DvsS4XCJcbiAgfSxcbiAgXCJjcDI4NjAwXCI6IFwiaXNvODg1OTEwXCIsXG4gIFwiaXNvODg1OTExXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv71cIlxuICB9LFxuICBcImNwMjg2MDFcIjogXCJpc284ODU5MTFcIixcbiAgXCJpc284ODU5MTNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOKAncKiwqPCpOKAnsKmwqfDmMKpxZbCq8Kswq3CrsOGwrDCscKywrPigJzCtcK2wrfDuMK5xZfCu8K8wr3CvsOmxITErsSAxIbDhMOFxJjEksSMw4nFucSWxKLEtsSqxLvFoMWDxYXDk8WMw5XDlsOXxbLFgcWaxarDnMW7xb3Dn8SFxK/EgcSHw6TDpcSZxJPEjcOpxbrEl8SjxLfEq8S8xaHFhMWGw7PFjcO1w7bDt8WzxYLFm8Wrw7zFvMW+4oCZXCJcbiAgfSxcbiAgXCJjcDI4NjAzXCI6IFwiaXNvODg1OTEzXCIsXG4gIFwiaXNvODg1OTE0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDhuILhuIPCo8SKxIvhuIrCp+G6gMKp4bqC4biL4buywq3CrsW44bie4bifxKDEoeG5gOG5gcK24bmW4bqB4bmX4bqD4bmg4buz4bqE4bqF4bmhw4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/FtMORw5LDk8OUw5XDluG5qsOYw5nDmsObw5zDncW2w5/DoMOhw6LDo8Okw6XDpsOnw6jDqcOqw6vDrMOtw67Dr8W1w7HDssOzw7TDtcO24bmrw7jDucO6w7vDvMO9xbfDv1wiXG4gIH0sXG4gIFwiY3AyODYwNFwiOiBcImlzbzg4NTkxNFwiLFxuICBcImlzbzg4NTkxNVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKj4oKswqXFoMKnxaHCqcKqwqvCrMKtwq7Cr8KwwrHCssKzxb3CtcK2wrfFvsK5wrrCu8WSxZPFuMK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/DkMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdw57Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcImNwMjg2MDVcIjogXCJpc284ODU5MTVcIixcbiAgXCJpc284ODU5MTZcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoMSExIXFgeKCrOKAnsWgwqfFocKpyJjCq8W5wq3FusW7wrDCscSMxYLFveKAncK2wrfFvsSNyJnCu8WSxZPFuMW8w4DDgcOCxILDhMSGw4bDh8OIw4nDisOLw4zDjcOOw4/EkMWDw5LDk8OUxZDDlsWaxbDDmcOaw5vDnMSYyJrDn8Ogw6HDosSDw6TEh8Omw6fDqMOpw6rDq8Osw63DrsOvxJHFhMOyw7PDtMWRw7bFm8Wxw7nDusO7w7zEmcibw79cIlxuICB9LFxuICBcImNwMjg2MDZcIjogXCJpc284ODU5MTZcIixcbiAgXCJjcDQzN1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcwqLCo8Kl4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm00MzdcIjogXCJjcDQzN1wiLFxuICBcImNzaWJtNDM3XCI6IFwiY3A0MzdcIixcbiAgXCJjcDczN1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwizpHOks6TzpTOlc6WzpfOmM6ZzprOm86czp3Ons6fzqDOoc6jzqTOpc6mzqfOqM6pzrHOss6zzrTOtc62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4LPhM+Fz4bPh8+I4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paAz4nOrM6tzq7Pis6vz4zPjc+Lz47Ohs6IzonOis6Mzo7Oj8Kx4oml4omkzqrOq8O34omIwrDiiJnCt+KImuKBv8Ky4pagwqBcIlxuICB9LFxuICBcImlibTczN1wiOiBcImNwNzM3XCIsXG4gIFwiY3NpYm03MzdcIjogXCJjcDczN1wiLFxuICBcImNwNzc1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLEhsO8w6nEgcOkxKPDpcSHxYLEk8WWxZfEq8W5w4TDhcOJw6bDhsWNw7bEosKixZrFm8OWw5zDuMKjw5jDl8KkxIDEqsOzxbvFvMW64oCdwqbCqcKuwqzCvcK8xYHCq8K74paR4paS4paT4pSC4pSkxITEjMSYxJbilaPilZHilZfilZ3ErsWg4pSQ4pSU4pS04pSs4pSc4pSA4pS8xbLFquKVmuKVlOKVqeKVpuKVoOKVkOKVrMW9xIXEjcSZxJfEr8WhxbPFq8W+4pSY4pSM4paI4paE4paM4paQ4paAw5PDn8WMxYPDtcOVwrXFhMS2xLfEu8S8xYbEksWF4oCZwq3CseKAnMK+wrbCp8O34oCewrDiiJnCt8K5wrPCsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm03NzVcIjogXCJjcDc3NVwiLFxuICBcImNzaWJtNzc1XCI6IFwiY3A3NzVcIixcbiAgXCJjcDg1MFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOvw67DrMOEw4XDicOmw4bDtMO2w7LDu8O5w7/DlsOcw7jCo8OYw5fGksOhw63Ds8O6w7HDkcKqwrrCv8KuwqzCvcK8wqHCq8K74paR4paS4paT4pSC4pSkw4HDgsOAwqnilaPilZHilZfilZ3CosKl4pSQ4pSU4pS04pSs4pSc4pSA4pS8w6PDg+KVmuKVlOKVqeKVpuKVoOKVkOKVrMKkw7DDkMOKw4vDiMSxw43DjsOP4pSY4pSM4paI4paEwqbDjOKWgMOTw5/DlMOSw7XDlcK1w77DnsOaw5vDmcO9w53Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODUwXCI6IFwiY3A4NTBcIixcbiAgXCJjc2libTg1MFwiOiBcImNwODUwXCIsXG4gIFwiY3A4NTJcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6TFr8SHw6fFgsOrxZDFkcOuxbnDhMSGw4nEucS6w7TDtsS9xL7FmsWbw5bDnMWkxaXFgcOXxI3DocOtw7PDusSExIXFvcW+xJjEmcKsxbrEjMWfwqvCu+KWkeKWkuKWk+KUguKUpMOBw4LEmsWe4pWj4pWR4pWX4pWdxbvFvOKUkOKUlOKUtOKUrOKUnOKUgOKUvMSCxIPilZrilZTilanilabilaDilZDilazCpMSRxJDEjsOLxI/Fh8ONw47Em+KUmOKUjOKWiOKWhMWixa7iloDDk8Ofw5TFg8WExYjFoMWhxZTDmsWVxbDDvcOdxaPCtMKty53Lm8uHy5jCp8O3wrjCsMKoy5nFscWYxZnilqDCoFwiXG4gIH0sXG4gIFwiaWJtODUyXCI6IFwiY3A4NTJcIixcbiAgXCJjc2libTg1MlwiOiBcImNwODUyXCIsXG4gIFwiY3A4NTVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItGS0ILRk9CD0ZHQgdGU0ITRldCF0ZbQhtGX0IfRmNCI0ZnQidGa0IrRm9CL0ZzQjNGe0I7Rn9CP0Y7QrtGK0KrQsNCQ0LHQkdGG0KbQtNCU0LXQldGE0KTQs9CTwqvCu+KWkeKWkuKWk+KUguKUpNGF0KXQuNCY4pWj4pWR4pWX4pWd0LnQmeKUkOKUlOKUtOKUrOKUnOKUgOKUvNC60JrilZrilZTilanilabilaDilZDilazCpNC70JvQvNCc0L3QndC+0J7Qv+KUmOKUjOKWiOKWhNCf0Y/iloDQr9GA0KDRgdCh0YLQotGD0KPQttCW0LLQktGM0KzihJbCrdGL0KvQt9CX0YjQqNGN0K3RidCp0YfQp8Kn4pagwqBcIlxuICB9LFxuICBcImlibTg1NVwiOiBcImNwODU1XCIsXG4gIFwiY3NpYm04NTVcIjogXCJjcDg1NVwiLFxuICBcImNwODU2XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLXkNeR15LXk9eU15XXlteX15jXmdea15vXnNed157Xn9eg16HXotej16TXpdem16fXqNep16rvv73Co++/vcOX77+977+977+977+977+977+977+977+977+977+9wq7CrMK9wrzvv73Cq8K74paR4paS4paT4pSC4pSk77+977+977+9wqnilaPilZHilZfilZ3CosKl4pSQ4pSU4pS04pSs4pSc4pSA4pS877+977+94pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTvv73vv73vv73vv73vv73vv73vv73vv73vv73ilJjilIzilojiloTCpu+/veKWgO+/ve+/ve+/ve+/ve+/ve+/vcK177+977+977+977+977+977+977+9wq/CtMKtwrHigJfCvsK2wqfDt8K4wrDCqMK3wrnCs8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg1NlwiOiBcImNwODU2XCIsXG4gIFwiY3NpYm04NTZcIjogXCJjcDg1NlwiLFxuICBcImNwODU3XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsSxw4TDhcOJw6bDhsO0w7bDssO7w7nEsMOWw5zDuMKjw5jFnsWfw6HDrcOzw7rDscORxJ7En8K/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTCusKqw4rDi8OI77+9w43DjsOP4pSY4pSM4paI4paEwqbDjOKWgMOTw5/DlMOSw7XDlcK177+9w5fDmsObw5nDrMO/wq/CtMKtwrHvv73CvsK2wqfDt8K4wrDCqMK3wrnCs8Ky4pagwqBcIlxuICB9LFxuICBcImlibTg1N1wiOiBcImNwODU3XCIsXG4gIFwiY3NpYm04NTdcIjogXCJjcDg1N1wiLFxuICBcImNwODU4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDh8O8w6nDosOkw6DDpcOnw6rDq8Oow6/DrsOsw4TDhcOJw6bDhsO0w7bDssO7w7nDv8OWw5zDuMKjw5jDl8aSw6HDrcOzw7rDscORwqrCusK/wq7CrMK9wrzCocKrwrvilpHilpLilpPilILilKTDgcOCw4DCqeKVo+KVkeKVl+KVncKiwqXilJDilJTilLTilKzilJzilIDilLzDo8OD4pWa4pWU4pWp4pWm4pWg4pWQ4pWswqTDsMOQw4rDi8OI4oKsw43DjsOP4pSY4pSM4paI4paEwqbDjOKWgMOTw5/DlMOSw7XDlcK1w77DnsOaw5vDmcO9w53Cr8K0wq3CseKAl8K+wrbCp8O3wrjCsMKowrfCucKzwrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODU4XCI6IFwiY3A4NThcIixcbiAgXCJjc2libTg1OFwiOiBcImNwODU4XCIsXG4gIFwiY3A4NjBcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6PDoMOBw6fDqsOKw6jDjcOUw6zDg8OCw4nDgMOIw7TDtcOyw5rDucOMw5XDnMKiwqPDmeKCp8OTw6HDrcOzw7rDscORwqrCusK/w5LCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjBcIjogXCJjcDg2MFwiLFxuICBcImNzaWJtODYwXCI6IFwiY3A4NjBcIixcbiAgXCJjcDg2MVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDpMOgw6XDp8Oqw6vDqMOQw7DDnsOEw4XDicOmw4bDtMO2w77Du8Odw73DlsOcw7jCo8OY4oKnxpLDocOtw7PDusOBw43Dk8Oawr/ijJDCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjFcIjogXCJjcDg2MVwiLFxuICBcImNzaWJtODYxXCI6IFwiY3A4NjFcIixcbiAgXCJjcDg2MlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi15DXkdeS15PXlNeV15bXl9eY15nXmteb15zXndee15/XoNeh16LXo9ek16XXpten16jXqdeqwqLCo8Kl4oKnxpLDocOtw7PDusOxw5HCqsK6wr/ijJDCrMK9wrzCocKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjJcIjogXCJjcDg2MlwiLFxuICBcImNzaWJtODYyXCI6IFwiY3A4NjJcIixcbiAgXCJjcDg2M1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4fDvMOpw6LDgsOgwrbDp8Oqw6vDqMOvw67igJfDgMKnw4nDiMOKw7TDi8OPw7vDucKkw5TDnMKiwqPDmcObxpLCpsK0w7PDusKowrjCs8Kvw47ijJDCrMK9wrzCvsKrwrvilpHilpLilpPilILilKTilaHilaLilZbilZXilaPilZHilZfilZ3ilZzilZvilJDilJTilLTilKzilJzilIDilLzilZ7ilZ/ilZrilZTilanilabilaDilZDilazilafilajilaTilaXilZnilZjilZLilZPilavilarilJjilIzilojiloTilozilpDiloDOscOfzpPPgM6jz4PCtc+EzqbOmM6pzrTiiJ7Phs614oip4omhwrHiiaXiiaTijKDijKHDt+KJiMKw4oiZwrfiiJrigb/CsuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjNcIjogXCJjcDg2M1wiLFxuICBcImNzaWJtODYzXCI6IFwiY3A4NjNcIixcbiAgXCJjcDg2NFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMFxcdTAwMDFcXHUwMDAyXFx1MDAwM1xcdTAwMDRcXHUwMDA1XFx1MDAwNlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEwXFx1MDAxMVxcdTAwMTJcXHUwMDEzXFx1MDAxNFxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMThcXHUwMDE5XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZFxcdTAwMWVcXHUwMDFmICFcXFwiIyTZqiYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f8KwwrfiiJniiJrilpLilIDilILilLzilKTilKzilJzilLTilJDilIzilJTilJjOsuKIns+GwrHCvcK84omIwqvCu++7t++7uO+/ve+/ve+7u++7vO+/vcKgwq3vuoLCo8Kk77qE77+977+977qO77qP77qV77qZ2Izvup3vuqHvuqXZoNmh2aLZo9mk2aXZptmn2ajZqe+7kdib77qx77q177q52J/Cou+6gO+6ge+6g++6he+7iu+6i++6je+6ke+6k++6l++6m++6n++6o++6p++6qe+6q++6re+6r++6s++6t++6u++6v++7ge+7he+7i++7j8KmwqzDt8OX77uJ2YDvu5Pvu5fvu5vvu5/vu6Pvu6fvu6vvu63vu6/vu7Pvur3vu4zvu47vu43vu6Hvub3Zke+7pe+7qe+7rO+7sO+7su+7kO+7le+7te+7tu+7ne+7me+7seKWoO+/vVwiXG4gIH0sXG4gIFwiaWJtODY0XCI6IFwiY3A4NjRcIixcbiAgXCJjc2libTg2NFwiOiBcImNwODY0XCIsXG4gIFwiY3A4NjVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOHw7zDqcOiw6TDoMOlw6fDqsOrw6jDr8Ouw6zDhMOFw4nDpsOGw7TDtsOyw7vDucO/w5bDnMO4wqPDmOKCp8aSw6HDrcOzw7rDscORwqrCusK/4oyQwqzCvcK8wqHCq8Kk4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paAzrHDn86Tz4DOo8+DwrXPhM6mzpjOqc604oiez4bOteKIqeKJocKx4oml4omk4oyg4oyhw7fiiYjCsOKImcK34oia4oG/wrLilqDCoFwiXG4gIH0sXG4gIFwiaWJtODY1XCI6IFwiY3A4NjVcIixcbiAgXCJjc2libTg2NVwiOiBcImNwODY1XCIsXG4gIFwiY3A4NjZcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv+KWkeKWkuKWk+KUguKUpOKVoeKVouKVluKVleKVo+KVkeKVl+KVneKVnOKVm+KUkOKUlOKUtOKUrOKUnOKUgOKUvOKVnuKVn+KVmuKVlOKVqeKVpuKVoOKVkOKVrOKVp+KVqOKVpOKVpeKVmeKVmOKVkuKVk+KVq+KVquKUmOKUjOKWiOKWhOKWjOKWkOKWgNGA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjtGP0IHRkdCE0ZTQh9GX0I7RnsKw4oiZwrfiiJrihJbCpOKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjZcIjogXCJjcDg2NlwiLFxuICBcImNzaWJtODY2XCI6IFwiY3A4NjZcIixcbiAgXCJjcDg2OVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77+977+977+977+977+977+9zobvv73Ct8KswqbigJjigJnOiOKAlc6JzorOqs6M77+977+9zo7Oq8Kpzo/CssKzzqzCo86tzq7Or8+KzpDPjM+NzpHOks6TzpTOlc6WzpfCvc6YzpnCq8K74paR4paS4paT4pSC4pSkzprOm86czp3ilaPilZHilZfilZ3Ons6f4pSQ4pSU4pS04pSs4pSc4pSA4pS8zqDOoeKVmuKVlOKVqeKVpuKVoOKVkOKVrM6jzqTOpc6mzqfOqM6pzrHOss6z4pSY4pSM4paI4paEzrTOteKWgM62zrfOuM65zrrOu868zr3Ovs6/z4DPgc+Dz4LPhM6Ewq3Csc+Fz4bPh8Knz4jOhcKwwqjPic+LzrDPjuKWoMKgXCJcbiAgfSxcbiAgXCJpYm04NjlcIjogXCJjcDg2OVwiLFxuICBcImNzaWJtODY5XCI6IFwiY3A4NjlcIixcbiAgXCJjcDkyMlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKjwqTCpcKmwqfCqMKpwqrCq8Kswq3CruKAvsKwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/w4DDgcOCw4PDhMOFw4bDh8OIw4nDisOLw4zDjcOOw4/FoMORw5LDk8OUw5XDlsOXw5jDmcOaw5vDnMOdxb3Dn8Ogw6HDosOjw6TDpcOmw6fDqMOpw6rDq8Osw63DrsOvxaHDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcW+w79cIlxuICB9LFxuICBcImlibTkyMlwiOiBcImNwOTIyXCIsXG4gIFwiY3NpYm05MjJcIjogXCJjcDkyMlwiLFxuICBcImNwMTA0NlwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77qIw5fDt++jtu+jte+jtO+jt++5scKI4pag4pSC4pSA4pSQ4pSM4pSU4pSY77m577m777m977m/77m377qK77uw77uz77uy77uO77uP77uQ77u277u477u677u8wqDvo7rvo7nvo7jCpO+ju++6i++6ke+6l++6m++6n++6o9iMwq3vuqfvurPZoNmh2aLZo9mk2aXZptmn2ajZqe+6t9ib77q777q/77uK2J/vu4vYodii2KPYpNil2KbYp9io2KnYqtir2KzYrdiu2K/YsNix2LLYs9i02LXYtti377uH2LnYuu+7jO+6gu+6hO+6ju+7k9mA2YHZgtmD2YTZhdmG2YfZiNmJ2YrZi9mM2Y3ZjtmP2ZDZkdmS77uX77ub77uf76O877u177u377u577u777uj77un77us77up77+9XCJcbiAgfSxcbiAgXCJpYm0xMDQ2XCI6IFwiY3AxMDQ2XCIsXG4gIFwiY3NpYm0xMDQ2XCI6IFwiY3AxMDQ2XCIsXG4gIFwiY3AxMTI0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDQgdCC0pDQhNCF0IbQh9CI0InQitCL0IzCrdCO0I/QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj+KEltGR0ZLSkdGU0ZXRltGX0ZjRmdGa0ZvRnMKn0Z7Rn1wiXG4gIH0sXG4gIFwiaWJtMTEyNFwiOiBcImNwMTEyNFwiLFxuICBcImNzaWJtMTEyNFwiOiBcImNwMTEyNFwiLFxuICBcImNwMTEyNVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/4paR4paS4paT4pSC4pSk4pWh4pWi4pWW4pWV4pWj4pWR4pWX4pWd4pWc4pWb4pSQ4pSU4pS04pSs4pSc4pSA4pS84pWe4pWf4pWa4pWU4pWp4pWm4pWg4pWQ4pWs4pWn4pWo4pWk4pWl4pWZ4pWY4pWS4pWT4pWr4pWq4pSY4pSM4paI4paE4paM4paQ4paA0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y/QgdGR0pDSkdCE0ZTQhtGW0IfRl8K34oia4oSWwqTilqDCoFwiXG4gIH0sXG4gIFwiaWJtMTEyNVwiOiBcImNwMTEyNVwiLFxuICBcImNzaWJtMTEyNVwiOiBcImNwMTEyNVwiLFxuICBcImNwMTEyOVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKjwqTCpcKmwqfFk8KpwqrCq8Kswq3CrsKvwrDCscKywrPFuMK1wrbCt8WSwrnCusK7wrzCvcK+wr/DgMOBw4LEgsOEw4XDhsOHw4jDicOKw4vMgMONw47Dj8SQw5HMicOTw5TGoMOWw5fDmMOZw5rDm8Ocxq/Mg8Ofw6DDocOixIPDpMOlw6bDp8Oow6nDqsOrzIHDrcOuw6/EkcOxzKPDs8O0xqHDtsO3w7jDucO6w7vDvMaw4oKrw79cIlxuICB9LFxuICBcImlibTExMjlcIjogXCJjcDExMjlcIixcbiAgXCJjc2libTExMjlcIjogXCJjcDExMjlcIixcbiAgXCJjcDExMzNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHCgsKDwoTChcKGwofCiMKJworCi8KMwo3CjsKPwpDCkcKSwpPClMKVwpbCl8KYwpnCmsKbwpzCncKewp/CoOC6geC6guC6hOC6h+C6iOC6quC6iuC6jeC6lOC6leC6luC6l+C6meC6muC6m+C6nOC6neC6nuC6n+C6oeC6ouC6o+C6peC6p+C6q+C6reC6ru+/ve+/ve+/veC6r+C6sOC6suC6s+C6tOC6teC6tuC6t+C6uOC6ueC6vOC6seC6u+C6ve+/ve+/ve+/veC7gOC7geC7guC7g+C7hOC7iOC7ieC7iuC7i+C7jOC7jeC7hu+/veC7nOC7neKCre+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/veC7kOC7keC7kuC7k+C7lOC7leC7luC7l+C7mOC7me+/ve+/vcKiwqzCpu+/vVwiXG4gIH0sXG4gIFwiaWJtMTEzM1wiOiBcImNwMTEzM1wiLFxuICBcImNzaWJtMTEzM1wiOiBcImNwMTEzM1wiLFxuICBcImNwMTE2MVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+94LmI4LiB4LiC4LiD4LiE4LiF4LiG4LiH4LiI4LiJ4LiK4LiL4LiM4LiN4LiO4LiP4LiQ4LiR4LiS4LiT4LiU4LiV4LiW4LiX4LiY4LiZ4Lia4Lib4Lic4Lid4Lie4Lif4Lig4Lih4Lii4Lij4Lik4Lil4Lim4Lin4Lio4Lip4Liq4Lir4Lis4Lit4Liu4Liv4Liw4Lix4Liy4Liz4Li04Li14Li24Li34Li44Li54Li64LmJ4LmK4LmL4oKs4Li/4LmA4LmB4LmC4LmD4LmE4LmF4LmG4LmH4LmI4LmJ4LmK4LmL4LmM4LmN4LmO4LmP4LmQ4LmR4LmS4LmT4LmU4LmV4LmW4LmX4LmY4LmZ4Lma4LmbwqLCrMKmwqBcIlxuICB9LFxuICBcImlibTExNjFcIjogXCJjcDExNjFcIixcbiAgXCJjc2libTExNjFcIjogXCJjcDExNjFcIixcbiAgXCJjcDExNjJcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIuKCrMKBwoLCg8KE4oCmwobCh8KIwonCisKLwozCjcKOwo/CkOKAmOKAmeKAnOKAneKAouKAk+KAlMKYwpnCmsKbwpzCncKewp/CoOC4geC4guC4g+C4hOC4heC4huC4h+C4iOC4ieC4iuC4i+C4jOC4jeC4juC4j+C4kOC4keC4kuC4k+C4lOC4leC4luC4l+C4mOC4meC4muC4m+C4nOC4neC4nuC4n+C4oOC4oeC4ouC4o+C4pOC4peC4puC4p+C4qOC4qeC4quC4q+C4rOC4reC4ruC4r+C4sOC4seC4suC4s+C4tOC4teC4tuC4t+C4uOC4ueC4uu+/ve+/ve+/ve+/veC4v+C5gOC5geC5guC5g+C5hOC5heC5huC5h+C5iOC5ieC5iuC5i+C5jOC5jeC5juC5j+C5kOC5keC5kuC5k+C5lOC5leC5luC5l+C5mOC5meC5muC5m++/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwiaWJtMTE2MlwiOiBcImNwMTE2MlwiLFxuICBcImNzaWJtMTE2MlwiOiBcImNwMTE2MlwiLFxuICBcImNwMTE2M1wiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8KgwqHCosKj4oKswqXCpsKnxZPCqcKqwqvCrMKtwq7Cr8KwwrHCssKzxbjCtcK2wrfFksK5wrrCu8K8wr3CvsK/w4DDgcOCxILDhMOFw4bDh8OIw4nDisOLzIDDjcOOw4/EkMORzInDk8OUxqDDlsOXw5jDmcOaw5vDnMavzIPDn8Ogw6HDosSDw6TDpcOmw6fDqMOpw6rDq8yBw63DrsOvxJHDscyjw7PDtMahw7bDt8O4w7nDusO7w7zGsOKCq8O/XCJcbiAgfSxcbiAgXCJpYm0xMTYzXCI6IFwiY3AxMTYzXCIsXG4gIFwiY3NpYm0xMTYzXCI6IFwiY3AxMTYzXCIsXG4gIFwibWFjY3JvYXRpYW5cIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsWg4oSiwrTCqOKJoMW9w5jiiJ7CseKJpOKJpeKIhsK14oiC4oiR4oiPxaHiiKvCqsK64oSmxb7DuMK/wqHCrOKImsaS4omIxIbCq8SM4oCmwqDDgMODw5XFksWTxJDigJTigJzigJ3igJjigJnDt+KXiu+/vcKp4oGEwqTigLnigLrDhsK74oCTwrfigJrigJ7igLDDgsSHw4HEjcOIw43DjsOPw4zDk8OUxJHDksOaw5vDmcSxy4bLnMKvz4DDi8uawrjDisOmy4dcIlxuICB9LFxuICBcIm1hY2N5cmlsbGljXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLQkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv4oCgwrDCosKjwqfigKLCttCGwq7CqeKEotCC0ZLiiaDQg9GT4oiewrHiiaTiiaXRlsK14oiC0IjQhNGU0IfRl9CJ0ZnQitGa0ZjQhcKs4oiaxpLiiYjiiIbCq8K74oCmwqDQi9Gb0IzRnNGV4oCT4oCU4oCc4oCd4oCY4oCZw7figJ7QjtGe0I/Rn+KEltCB0ZHRj9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGOwqRcIlxuICB9LFxuICBcIm1hY2dyZWVrXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDhMK5wrLDicKzw5bDnM6Fw6DDosOkzoTCqMOnw6nDqMOqw6vCo+KEosOuw6/igKLCveKAsMO0w7bCpsKtw7nDu8O84oCgzpPOlM6YzpvOns6gw5/CrsKpzqPOqsKn4omgwrDOh86RwrHiiaTiiaXCpc6SzpXOls6XzpnOms6czqbOq86ozqnOrM6dwqzOn86h4omIzqTCq8K74oCmwqDOpc6nzobOiMWT4oCT4oCV4oCc4oCd4oCY4oCZw7fOic6KzozOjs6tzq7Or8+Mzo/Pjc6xzrLPiM60zrXPhs6zzrfOuc6+zrrOu868zr3Ov8+Az47Pgc+Dz4TOuM+Jz4LPh8+FzrbPis+LzpDOsO+/vVwiXG4gIH0sXG4gIFwibWFjaWNlbGFuZFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvMOdwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuOKBhMKkw5DDsMOew77DvcK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLh1wiXG4gIH0sXG4gIFwibWFjcm9tYW5cIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMOGw5jiiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbDpsO4wr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTigLnigLrvrIHvrILigKHCt+KAmuKAnuKAsMOCw4rDgcOLw4jDjcOOw4/DjMOTw5Tvv73DksOaw5vDmcSxy4bLnMKvy5jLmcuawrjLncuby4dcIlxuICB9LFxuICBcIm1hY3JvbWFuaWFcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsOEw4XDh8OJw5HDlsOcw6HDoMOiw6TDo8Olw6fDqcOow6rDq8Otw6zDrsOvw7HDs8Oyw7TDtsO1w7rDucO7w7zigKDCsMKiwqPCp+KAosK2w5/CrsKp4oSiwrTCqOKJoMSCxZ7iiJ7CseKJpOKJpcKlwrXiiILiiJHiiI/PgOKIq8KqwrrihKbEg8Wfwr/CocKs4oiaxpLiiYjiiIbCq8K74oCmwqDDgMODw5XFksWT4oCT4oCU4oCc4oCd4oCY4oCZw7fil4rDv8W44oGEwqTigLnigLrFosWj4oChwrfigJrigJ7igLDDgsOKw4HDi8OIw43DjsOPw4zDk8OU77+9w5LDmsObw5nEscuGy5zCr8uYy5nLmsK4y53Lm8uHXCJcbiAgfSxcbiAgXCJtYWN0aGFpXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCq8K74oCm76KM76KP76KS76KV76KY76KL76KO76KR76KU76KX4oCc4oCd76KZ77+94oCi76KE76KJ76KF76KG76KH76KI76KK76KN76KQ76KT76KW4oCY4oCZ77+9wqDguIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvu7/igIvigJPigJTguL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3ihKLguY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnCrsKp77+977+977+977+9XCJcbiAgfSxcbiAgXCJtYWN0dXJraXNoXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLDhMOFw4fDicORw5bDnMOhw6DDosOkw6PDpcOnw6nDqMOqw6vDrcOsw67Dr8Oxw7PDssO0w7bDtcO6w7nDu8O84oCgwrDCosKjwqfigKLCtsOfwq7CqeKEosK0wqjiiaDDhsOY4oiewrHiiaTiiaXCpcK14oiC4oiR4oiPz4DiiKvCqsK64oSmw6bDuMK/wqHCrOKImsaS4omI4oiGwqvCu+KApsKgw4DDg8OVxZLFk+KAk+KAlOKAnOKAneKAmOKAmcO34peKw7/FuMSexJ/EsMSxxZ7Fn+KAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZ77+9y4bLnMKvy5jLmcuawrjLncuby4dcIlxuICB9LFxuICBcIm1hY3VrcmFpbmVcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItCQ0JHQktCT0JTQldCW0JfQmNCZ0JrQm9Cc0J3QntCf0KDQodCi0KPQpNCl0KbQp9Co0KnQqtCr0KzQrdCu0K/igKDCsNKQwqPCp+KAosK20IbCrsKp4oSi0ILRkuKJoNCD0ZPiiJ7CseKJpOKJpdGWwrXSkdCI0ITRlNCH0ZfQidGZ0IrRmtGY0IXCrOKImsaS4omI4oiGwqvCu+KApsKg0IvRm9CM0ZzRleKAk+KAlOKAnOKAneKAmOKAmcO34oCe0I7RntCP0Z/ihJbQgdGR0Y/QsNCx0LLQs9C00LXQttC30LjQudC60LvQvNC90L7Qv9GA0YHRgtGD0YTRhdGG0YfRiNGJ0YrRi9GM0Y3RjsKkXCJcbiAgfSxcbiAgXCJrb2k4clwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR4pWT4pWU4pWV4pWW4pWX4pWY4pWZ4pWa4pWb4pWc4pWd4pWe4pWf4pWg4pWh0IHilaLilaPilaTilaXilabilafilajilanilarilavilazCqdGO0LDQsdGG0LTQtdGE0LPRhdC40LnQutC70LzQvdC+0L/Rj9GA0YHRgtGD0LbQstGM0YvQt9GI0Y3RidGH0YrQrtCQ0JHQptCU0JXQpNCT0KXQmNCZ0JrQm9Cc0J3QntCf0K/QoNCh0KLQo9CW0JLQrNCr0JfQqNCt0KnQp9CqXCJcbiAgfSxcbiAgXCJrb2k4dVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi4pSA4pSC4pSM4pSQ4pSU4pSY4pSc4pSk4pSs4pS04pS84paA4paE4paI4paM4paQ4paR4paS4paT4oyg4pag4oiZ4oia4omI4omk4omlwqDijKHCsMKywrfDt+KVkOKVkeKVktGR0ZTilZTRltGX4pWX4pWY4pWZ4pWa4pWb0pHilZ3ilZ7ilZ/ilaDilaHQgdCE4pWj0IbQh+KVpuKVp+KVqOKVqeKVqtKQ4pWswqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqlwiXG4gIH0sXG4gIFwia29pOHJ1XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLilIDilILilIzilJDilJTilJjilJzilKTilKzilLTilLziloDiloTilojilozilpDilpHilpLilpPijKDilqDiiJniiJriiYjiiaTiiaXCoOKMocKwwrLCt8O34pWQ4pWR4pWS0ZHRlOKVlNGW0ZfilZfilZjilZnilZrilZvSkdGe4pWe4pWf4pWg4pWh0IHQhOKVo9CG0IfilabilafilajilanilarSkNCOwqnRjtCw0LHRhtC00LXRhNCz0YXQuNC50LrQu9C80L3QvtC/0Y/RgNGB0YLRg9C20LLRjNGL0LfRiNGN0YnRh9GK0K7QkNCR0KbQlNCV0KTQk9Cl0JjQmdCa0JvQnNCd0J7Qn9Cv0KDQodCi0KPQltCS0KzQq9CX0KjQrdCp0KfQqlwiXG4gIH0sXG4gIFwia29pOHRcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcItKb0pPigJrSkuKAnuKApuKAoOKAoe+/veKAsNKz4oC50rLSt9K277+90prigJjigJnigJzigJ3igKLigJPigJTvv73ihKLvv73igLrvv73vv73vv73vv73vv73Tr9Ou0ZHCpNOjwqbCp++/ve+/ve+/vcKrwqzCrcKu77+9wrDCscKy0IHvv73TosK2wrfvv73ihJbvv73Cu++/ve+/ve+/vcKp0Y7QsNCx0YbQtNC10YTQs9GF0LjQudC60LvQvNC90L7Qv9GP0YDRgdGC0YPQttCy0YzRi9C30YjRjdGJ0YfRitCu0JDQkdCm0JTQldCk0JPQpdCY0JnQmtCb0JzQndCe0J/Qr9Cg0KHQotCj0JbQktCs0KvQl9Co0K3QqdCn0KpcIlxuICB9LFxuICBcImFybXNjaWk4XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLCgMKBwoLCg8KEwoXChsKHwojCicKKwovCjMKNwo7Cj8KQwpHCksKTwpTClcKWwpfCmMKZwprCm8Kcwp3CnsKfwqDvv73Wh9aJKSjCu8Kr4oCULtWdLC3WiuKAptWc1ZvVntSx1aHUstWi1LPVo9S01aTUtdWl1LbVptS31afUuNWo1LnVqdS61arUu9Wr1LzVrNS91a3UvtWu1L/Vr9WA1bDVgdWx1YLVstWD1bPVhNW01YXVtdWG1bbVh9W31YjVuNWJ1bnVitW61YvVu9WM1bzVjdW91Y7VvtWP1b/VkNaA1ZHWgdWS1oLVk9aD1ZTWhNWV1oXVltaG1Zrvv71cIlxuICB9LFxuICBcInJrMTA0OFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwi0ILQg+KAmtGT4oCe4oCm4oCg4oCh4oKs4oCw0InigLnQitKa0rrQj9GS4oCY4oCZ4oCc4oCd4oCi4oCT4oCU77+94oSi0ZnigLrRmtKb0rvRn8Kg0rDSsdOYwqTTqMKmwqfQgcKp0pLCq8Kswq3CrtKuwrDCsdCG0ZbTqcK1wrbCt9GR4oSW0pPCu9OZ0qLSo9Kv0JDQkdCS0JPQlNCV0JbQl9CY0JnQmtCb0JzQndCe0J/QoNCh0KLQo9Ck0KXQptCn0KjQqdCq0KvQrNCt0K7Qr9Cw0LHQstCz0LTQtdC20LfQuNC50LrQu9C80L3QvtC/0YDRgdGC0YPRhNGF0YbRh9GI0YnRitGL0YzRjdGO0Y9cIlxuICB9LFxuICBcInRjdm5cIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIlxcdTAwMDDDmuG7pFxcdTAwMDPhu6rhu6zhu65cXHUwMDA3XFxiXFx0XFxuXFx1MDAwYlxcZlxcclxcdTAwMGVcXHUwMDBmXFx1MDAxMOG7qOG7sOG7suG7tuG7uMOd4bu0XFx1MDAxOFxcdTAwMTlcXHUwMDFhXFx1MDAxYlxcdTAwMWNcXHUwMDFkXFx1MDAxZVxcdTAwMWYgIVxcXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXFxcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn/DgOG6osODw4HhuqDhurbhuqzDiOG6uuG6vMOJ4bq44buGw4zhu4jEqMON4buKw5Lhu47DlcOT4buM4buY4buc4bue4bug4bua4buiw5nhu6bFqMKgxILDgsOKw5TGoMavxJDEg8Oiw6rDtMahxrDEkeG6sMyAzInMg8yBzKPDoOG6o8Ojw6HhuqHhurLhurHhurPhurXhuq/hurThuq7huqbhuqjhuqrhuqThu4DhurfhuqfhuqnhuqvhuqXhuq3DqOG7guG6u+G6vcOp4bq54buB4buD4buF4bq/4buHw6zhu4nhu4Thur7hu5LEqcOt4buLw7Lhu5Thu4/DtcOz4buN4buT4buV4buX4buR4buZ4bud4buf4buh4bub4bujw7nhu5bhu6fFqcO64bul4bur4but4buv4bup4bux4buz4bu34bu5w73hu7Xhu5BcIlxuICB9LFxuICBcImdlb3JnaWFuYWNhZGVteVwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgeKAmsaS4oCe4oCm4oCg4oChy4bigLDFoOKAucWSwo3CjsKPwpDigJjigJnigJzigJ3igKLigJPigJTLnOKEosWh4oC6xZPCncKexbjCoMKhwqLCo8KkwqXCpsKnwqjCqcKqwqvCrMKtwq7Cr8KwwrHCssKzwrTCtcK2wrfCuMK5wrrCu8K8wr3CvsK/4YOQ4YOR4YOS4YOT4YOU4YOV4YOW4YOX4YOY4YOZ4YOa4YOb4YOc4YOd4YOe4YOf4YOg4YOh4YOi4YOj4YOk4YOl4YOm4YOn4YOo4YOp4YOq4YOr4YOs4YOt4YOu4YOv4YOw4YOx4YOy4YOz4YO04YO14YO2w6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcImdlb3JnaWFucHNcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIsKAwoHigJrGkuKAnuKApuKAoOKAocuG4oCwxaDigLnFksKNwo7Cj8KQ4oCY4oCZ4oCc4oCd4oCi4oCT4oCUy5zihKLFoeKAusWTwp3CnsW4wqDCocKiwqPCpMKlwqbCp8KowqnCqsKrwqzCrcKuwq/CsMKxwrLCs8K0wrXCtsK3wrjCucK6wrvCvMK9wr7Cv+GDkOGDkeGDkuGDk+GDlOGDleGDluGDseGDl+GDmOGDmeGDmuGDm+GDnOGDsuGDneGDnuGDn+GDoOGDoeGDouGDs+GDo+GDpOGDpeGDpuGDp+GDqOGDqeGDquGDq+GDrOGDreGDruGDtOGDr+GDsOGDtcOmw6fDqMOpw6rDq8Osw63DrsOvw7DDscOyw7PDtMO1w7bDt8O4w7nDusO7w7zDvcO+w79cIlxuICB9LFxuICBcInB0MTU0XCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLSltKS067Sk+KAnuKAptK20q7SstKv0qDTotKi0prSutK40pfigJjigJnigJzigJ3igKLigJPigJTSs9K30qHTo9Kj0pvSu9K5wqDQjtGe0IjTqNKY0rDCp9CBwqnTmMKrwqzTr8Ku0pzCsNKx0IbRltKZ06nCtsK30ZHihJbTmcK70ZjSqtKr0p3QkNCR0JLQk9CU0JXQltCX0JjQmdCa0JvQnNCd0J7Qn9Cg0KHQotCj0KTQpdCm0KfQqNCp0KrQq9Cs0K3QrtCv0LDQsdCy0LPQtNC10LbQt9C40LnQutC70LzQvdC+0L/RgNGB0YLRg9GE0YXRhtGH0YjRidGK0YvRjNGN0Y7Rj1wiXG4gIH0sXG4gIFwidmlzY2lpXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCJcXHUwMDAwXFx1MDAwMeG6slxcdTAwMDNcXHUwMDA04bq04bqqXFx1MDAwN1xcYlxcdFxcblxcdTAwMGJcXGZcXHJcXHUwMDBlXFx1MDAwZlxcdTAwMTBcXHUwMDExXFx1MDAxMlxcdTAwMTPhu7ZcXHUwMDE1XFx1MDAxNlxcdTAwMTdcXHUwMDE44bu4XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZOG7tFxcdTAwMWYgIVxcXCIjJCUmJygpKissLS4vMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWltcXFxcXV5fYGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6e3x9fn/huqDhuq7hurDhurbhuqThuqbhuqjhuqzhurzhurjhur7hu4Dhu4Lhu4Thu4bhu5Dhu5Lhu5Thu5bhu5jhu6Lhu5rhu5zhu57hu4rhu47hu4zhu4jhu6bFqOG7pOG7ssOV4bqv4bqx4bq34bql4bqn4bqp4bqt4bq94bq54bq/4buB4buD4buF4buH4buR4buT4buV4buX4bugxqDhu5nhu53hu5/hu4vhu7Dhu6jhu6rhu6zGoeG7m8avw4DDgcOCw4PhuqLEguG6s+G6tcOIw4nDiuG6usOMw43EqOG7s8SQ4bupw5LDk8OU4bqh4bu34bur4butw5nDmuG7ueG7tcOd4buhxrDDoMOhw6LDo+G6o8SD4buv4bqrw6jDqcOq4bq7w6zDrcSp4buJxJHhu7HDssOzw7TDteG7j+G7jeG7pcO5w7rFqeG7p8O94buj4buuXCJcbiAgfSxcbiAgXCJpc282NDZjblwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMFxcdTAwMDFcXHUwMDAyXFx1MDAwM1xcdTAwMDRcXHUwMDA1XFx1MDAwNlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEwXFx1MDAxMVxcdTAwMTJcXHUwMDEzXFx1MDAxNFxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMThcXHUwMDE5XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZFxcdTAwMWVcXHUwMDFmICFcXFwiI8KlJSYnKCkqKywtLi8wMTIzNDU2Nzg5Ojs8PT4/QEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaW1xcXFxdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH3igL5/77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9XCJcbiAgfSxcbiAgXCJpc282NDZqcFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiXFx1MDAwMFxcdTAwMDFcXHUwMDAyXFx1MDAwM1xcdTAwMDRcXHUwMDA1XFx1MDAwNlxcdTAwMDdcXGJcXHRcXG5cXHUwMDBiXFxmXFxyXFx1MDAwZVxcdTAwMGZcXHUwMDEwXFx1MDAxMVxcdTAwMTJcXHUwMDEzXFx1MDAxNFxcdTAwMTVcXHUwMDE2XFx1MDAxN1xcdTAwMThcXHUwMDE5XFx1MDAxYVxcdTAwMWJcXHUwMDFjXFx1MDAxZFxcdTAwMWVcXHUwMDFmICFcXFwiIyQlJicoKSorLC0uLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpbwqVdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH3igL5/77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9XCJcbiAgfSxcbiAgXCJocHJvbWFuOFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiwoDCgcKCwoPChMKFwobCh8KIwonCisKLwozCjcKOwo/CkMKRwpLCk8KUwpXClsKXwpjCmcKawpvCnMKdwp7Cn8Kgw4DDgsOIw4rDi8OOw4/CtMuLy4bCqMucw5nDm+KCpMKvw53DvcKww4fDp8ORw7HCocK/wqTCo8KlwqfGksKiw6LDqsO0w7vDocOpw7PDusOgw6jDssO5w6TDq8O2w7zDhcOuw5jDhsOlw63DuMOmw4TDrMOWw5zDicOvw5/DlMOBw4PDo8OQw7DDjcOMw5PDksOVw7XFoMWhw5rFuMO/w57DvsK3wrXCtsK+4oCUwrzCvcKqwrrCq+KWoMK7wrHvv71cIlxuICB9LFxuICBcIm1hY2ludG9zaFwiOiB7XG4gICAgXCJ0eXBlXCI6IFwiX3NiY3NcIixcbiAgICBcImNoYXJzXCI6IFwiw4TDhcOHw4nDkcOWw5zDocOgw6LDpMOjw6XDp8Opw6jDqsOrw63DrMOuw6/DscOzw7LDtMO2w7XDusO5w7vDvOKAoMKwwqLCo8Kn4oCiwrbDn8KuwqnihKLCtMKo4omgw4bDmOKInsKx4omk4omlwqXCteKIguKIkeKIj8+A4oirwqrCuuKEpsOmw7jCv8KhwqziiJrGkuKJiOKIhsKrwrvigKbCoMOAw4PDlcWSxZPigJPigJTigJzigJ3igJjigJnDt+KXisO/xbjigYTCpOKAueKAuu+sge+sguKAocK34oCa4oCe4oCww4LDisOBw4vDiMONw47Dj8OMw5PDlO+/vcOSw5rDm8OZxLHLhsucwq/LmMuZy5rCuMudy5vLh1wiXG4gIH0sXG4gIFwiYXNjaWlcIjoge1xuICAgIFwidHlwZVwiOiBcIl9zYmNzXCIsXG4gICAgXCJjaGFyc1wiOiBcIu+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/ve+/vVwiXG4gIH0sXG4gIFwidGlzNjIwXCI6IHtcbiAgICBcInR5cGVcIjogXCJfc2Jjc1wiLFxuICAgIFwiY2hhcnNcIjogXCLvv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73vv73guIHguILguIPguITguIXguIbguIfguIjguInguIrguIvguIzguI3guI7guI/guJDguJHguJLguJPguJTguJXguJbguJfguJjguJnguJrguJvguJzguJ3guJ7guJ/guKDguKHguKLguKPguKTguKXguKbguKfguKjguKnguKrguKvguKzguK3guK7guK/guLDguLHguLLguLPguLTguLXguLbguLfguLjguLnguLrvv73vv73vv73vv73guL/guYDguYHguYLguYPguYTguYXguYbguYfguYjguYnguYrguYvguYzguY3guY7guY/guZDguZHguZLguZPguZTguZXguZbguZfguZjguZnguZrguZvvv73vv73vv73vv71cIlxuICB9XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgQnVmZmVyID0gcmVxdWlyZShcInNhZmVyLWJ1ZmZlclwiKS5CdWZmZXI7XG5cbi8vIE11bHRpYnl0ZSBjb2RlYy4gSW4gdGhpcyBzY2hlbWUsIGEgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIGJ5IDEgb3IgbW9yZSBieXRlcy5cbi8vIE91ciBjb2RlYyBzdXBwb3J0cyBVVEYtMTYgc3Vycm9nYXRlcywgZXh0ZW5zaW9ucyBmb3IgR0IxODAzMCBhbmQgdW5pY29kZSBzZXF1ZW5jZXMuXG4vLyBUbyBzYXZlIG1lbW9yeSBhbmQgbG9hZGluZyB0aW1lLCB3ZSByZWFkIHRhYmxlIGZpbGVzIG9ubHkgd2hlbiByZXF1ZXN0ZWQuXG5cbmV4cG9ydHMuX2RiY3MgPSBEQkNTQ29kZWM7XG5cbnZhciBVTkFTU0lHTkVEID0gLTEsXG4gICAgR0IxODAzMF9DT0RFID0gLTIsXG4gICAgU0VRX1NUQVJUICA9IC0xMCxcbiAgICBOT0RFX1NUQVJUID0gLTEwMDAsXG4gICAgVU5BU1NJR05FRF9OT0RFID0gbmV3IEFycmF5KDB4MTAwKSxcbiAgICBERUZfQ0hBUiA9IC0xO1xuXG5mb3IgKHZhciBpID0gMDsgaSA8IDB4MTAwOyBpKyspXG4gICAgVU5BU1NJR05FRF9OT0RFW2ldID0gVU5BU1NJR05FRDtcblxuXG4vLyBDbGFzcyBEQkNTQ29kZWMgcmVhZHMgYW5kIGluaXRpYWxpemVzIG1hcHBpbmcgdGFibGVzLlxuZnVuY3Rpb24gREJDU0NvZGVjKGNvZGVjT3B0aW9ucywgaWNvbnYpIHtcbiAgICB0aGlzLmVuY29kaW5nTmFtZSA9IGNvZGVjT3B0aW9ucy5lbmNvZGluZ05hbWU7XG4gICAgaWYgKCFjb2RlY09wdGlvbnMpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkRCQ1MgY29kZWMgaXMgY2FsbGVkIHdpdGhvdXQgdGhlIGRhdGEuXCIpXG4gICAgaWYgKCFjb2RlY09wdGlvbnMudGFibGUpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVuY29kaW5nICdcIiArIHRoaXMuZW5jb2RpbmdOYW1lICsgXCInIGhhcyBubyBkYXRhLlwiKTtcblxuICAgIC8vIExvYWQgdGFibGVzLlxuICAgIHZhciBtYXBwaW5nVGFibGUgPSBjb2RlY09wdGlvbnMudGFibGUoKTtcblxuXG4gICAgLy8gRGVjb2RlIHRhYmxlczogTUJDUyAtPiBVbmljb2RlLlxuXG4gICAgLy8gZGVjb2RlVGFibGVzIGlzIGEgdHJpZSwgZW5jb2RlZCBhcyBhbiBhcnJheSBvZiBhcnJheXMgb2YgaW50ZWdlcnMuIEludGVybmFsIGFycmF5cyBhcmUgdHJpZSBub2RlcyBhbmQgYWxsIGhhdmUgbGVuID0gMjU2LlxuICAgIC8vIFRyaWUgcm9vdCBpcyBkZWNvZGVUYWJsZXNbMF0uXG4gICAgLy8gVmFsdWVzOiA+PSAgMCAtPiB1bmljb2RlIGNoYXJhY3RlciBjb2RlLiBjYW4gYmUgPiAweEZGRkZcbiAgICAvLyAgICAgICAgID09IFVOQVNTSUdORUQgLT4gdW5rbm93bi91bmFzc2lnbmVkIHNlcXVlbmNlLlxuICAgIC8vICAgICAgICAgPT0gR0IxODAzMF9DT0RFIC0+IHRoaXMgaXMgdGhlIGVuZCBvZiBhIEdCMTgwMzAgNC1ieXRlIHNlcXVlbmNlLlxuICAgIC8vICAgICAgICAgPD0gTk9ERV9TVEFSVCAtPiBpbmRleCBvZiB0aGUgbmV4dCBub2RlIGluIG91ciB0cmllIHRvIHByb2Nlc3MgbmV4dCBieXRlLlxuICAgIC8vICAgICAgICAgPD0gU0VRX1NUQVJUICAtPiBpbmRleCBvZiB0aGUgc3RhcnQgb2YgYSBjaGFyYWN0ZXIgY29kZSBzZXF1ZW5jZSwgaW4gZGVjb2RlVGFibGVTZXEuXG4gICAgdGhpcy5kZWNvZGVUYWJsZXMgPSBbXTtcbiAgICB0aGlzLmRlY29kZVRhYmxlc1swXSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKTsgLy8gQ3JlYXRlIHJvb3Qgbm9kZS5cblxuICAgIC8vIFNvbWV0aW1lcyBhIE1CQ1MgY2hhciBjb3JyZXNwb25kcyB0byBhIHNlcXVlbmNlIG9mIHVuaWNvZGUgY2hhcnMuIFdlIHN0b3JlIHRoZW0gYXMgYXJyYXlzIG9mIGludGVnZXJzIGhlcmUuIFxuICAgIHRoaXMuZGVjb2RlVGFibGVTZXEgPSBbXTtcblxuICAgIC8vIEFjdHVhbCBtYXBwaW5nIHRhYmxlcyBjb25zaXN0IG9mIGNodW5rcy4gVXNlIHRoZW0gdG8gZmlsbCB1cCBkZWNvZGUgdGFibGVzLlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFwcGluZ1RhYmxlLmxlbmd0aDsgaSsrKVxuICAgICAgICB0aGlzLl9hZGREZWNvZGVDaHVuayhtYXBwaW5nVGFibGVbaV0pO1xuXG4gICAgdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUgPSBpY29udi5kZWZhdWx0Q2hhclVuaWNvZGU7XG5cbiAgICBcbiAgICAvLyBFbmNvZGUgdGFibGVzOiBVbmljb2RlIC0+IERCQ1MuXG5cbiAgICAvLyBgZW5jb2RlVGFibGVgIGlzIGFycmF5IG1hcHBpbmcgZnJvbSB1bmljb2RlIGNoYXIgdG8gZW5jb2RlZCBjaGFyLiBBbGwgaXRzIHZhbHVlcyBhcmUgaW50ZWdlcnMgZm9yIHBlcmZvcm1hbmNlLlxuICAgIC8vIEJlY2F1c2UgaXQgY2FuIGJlIHNwYXJzZSwgaXQgaXMgcmVwcmVzZW50ZWQgYXMgYXJyYXkgb2YgYnVja2V0cyBieSAyNTYgY2hhcnMgZWFjaC4gQnVja2V0IGNhbiBiZSBudWxsLlxuICAgIC8vIFZhbHVlczogPj0gIDAgLT4gaXQgaXMgYSBub3JtYWwgY2hhci4gV3JpdGUgdGhlIHZhbHVlIChpZiA8PTI1NiB0aGVuIDEgYnl0ZSwgaWYgPD02NTUzNiB0aGVuIDIgYnl0ZXMsIGV0Yy4pLlxuICAgIC8vICAgICAgICAgPT0gVU5BU1NJR05FRCAtPiBubyBjb252ZXJzaW9uIGZvdW5kLiBPdXRwdXQgYSBkZWZhdWx0IGNoYXIuXG4gICAgLy8gICAgICAgICA8PSBTRVFfU1RBUlQgIC0+IGl0J3MgYW4gaW5kZXggaW4gZW5jb2RlVGFibGVTZXEsIHNlZSBiZWxvdy4gVGhlIGNoYXJhY3RlciBzdGFydHMgYSBzZXF1ZW5jZS5cbiAgICB0aGlzLmVuY29kZVRhYmxlID0gW107XG4gICAgXG4gICAgLy8gYGVuY29kZVRhYmxlU2VxYCBpcyB1c2VkIHdoZW4gYSBzZXF1ZW5jZSBvZiB1bmljb2RlIGNoYXJhY3RlcnMgaXMgZW5jb2RlZCBhcyBhIHNpbmdsZSBjb2RlLiBXZSB1c2UgYSB0cmVlIG9mXG4gICAgLy8gb2JqZWN0cyB3aGVyZSBrZXlzIGNvcnJlc3BvbmQgdG8gY2hhcmFjdGVycyBpbiBzZXF1ZW5jZSBhbmQgbGVhZnMgYXJlIHRoZSBlbmNvZGVkIGRiY3MgdmFsdWVzLiBBIHNwZWNpYWwgREVGX0NIQVIga2V5XG4gICAgLy8gbWVhbnMgZW5kIG9mIHNlcXVlbmNlIChuZWVkZWQgd2hlbiBvbmUgc2VxdWVuY2UgaXMgYSBzdHJpY3Qgc3Vic2VxdWVuY2Ugb2YgYW5vdGhlcikuXG4gICAgLy8gT2JqZWN0cyBhcmUga2VwdCBzZXBhcmF0ZWx5IGZyb20gZW5jb2RlVGFibGUgdG8gaW5jcmVhc2UgcGVyZm9ybWFuY2UuXG4gICAgdGhpcy5lbmNvZGVUYWJsZVNlcSA9IFtdO1xuXG4gICAgLy8gU29tZSBjaGFycyBjYW4gYmUgZGVjb2RlZCwgYnV0IG5lZWQgbm90IGJlIGVuY29kZWQuXG4gICAgdmFyIHNraXBFbmNvZGVDaGFycyA9IHt9O1xuICAgIGlmIChjb2RlY09wdGlvbnMuZW5jb2RlU2tpcFZhbHMpXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY29kZWNPcHRpb25zLmVuY29kZVNraXBWYWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdmFsID0gY29kZWNPcHRpb25zLmVuY29kZVNraXBWYWxzW2ldO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKVxuICAgICAgICAgICAgICAgIHNraXBFbmNvZGVDaGFyc1t2YWxdID0gdHJ1ZTtcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gdmFsLmZyb207IGogPD0gdmFsLnRvOyBqKyspXG4gICAgICAgICAgICAgICAgICAgIHNraXBFbmNvZGVDaGFyc1tqXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgXG4gICAgLy8gVXNlIGRlY29kZSB0cmllIHRvIHJlY3Vyc2l2ZWx5IGZpbGwgb3V0IGVuY29kZSB0YWJsZXMuXG4gICAgdGhpcy5fZmlsbEVuY29kZVRhYmxlKDAsIDAsIHNraXBFbmNvZGVDaGFycyk7XG5cbiAgICAvLyBBZGQgbW9yZSBlbmNvZGluZyBwYWlycyB3aGVuIG5lZWRlZC5cbiAgICBpZiAoY29kZWNPcHRpb25zLmVuY29kZUFkZCkge1xuICAgICAgICBmb3IgKHZhciB1Q2hhciBpbiBjb2RlY09wdGlvbnMuZW5jb2RlQWRkKVxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb2RlY09wdGlvbnMuZW5jb2RlQWRkLCB1Q2hhcikpXG4gICAgICAgICAgICAgICAgdGhpcy5fc2V0RW5jb2RlQ2hhcih1Q2hhci5jaGFyQ29kZUF0KDApLCBjb2RlY09wdGlvbnMuZW5jb2RlQWRkW3VDaGFyXSk7XG4gICAgfVxuXG4gICAgdGhpcy5kZWZDaGFyU0IgID0gdGhpcy5lbmNvZGVUYWJsZVswXVtpY29udi5kZWZhdWx0Q2hhclNpbmdsZUJ5dGUuY2hhckNvZGVBdCgwKV07XG4gICAgaWYgKHRoaXMuZGVmQ2hhclNCID09PSBVTkFTU0lHTkVEKSB0aGlzLmRlZkNoYXJTQiA9IHRoaXMuZW5jb2RlVGFibGVbMF1bJz8nXTtcbiAgICBpZiAodGhpcy5kZWZDaGFyU0IgPT09IFVOQVNTSUdORUQpIHRoaXMuZGVmQ2hhclNCID0gXCI/XCIuY2hhckNvZGVBdCgwKTtcblxuXG4gICAgLy8gTG9hZCAmIGNyZWF0ZSBHQjE4MDMwIHRhYmxlcyB3aGVuIG5lZWRlZC5cbiAgICBpZiAodHlwZW9mIGNvZGVjT3B0aW9ucy5nYjE4MDMwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuZ2IxODAzMCA9IGNvZGVjT3B0aW9ucy5nYjE4MDMwKCk7IC8vIExvYWQgR0IxODAzMCByYW5nZXMuXG5cbiAgICAgICAgLy8gQWRkIEdCMTgwMzAgZGVjb2RlIHRhYmxlcy5cbiAgICAgICAgdmFyIHRoaXJkQnl0ZU5vZGVJZHggPSB0aGlzLmRlY29kZVRhYmxlcy5sZW5ndGg7XG4gICAgICAgIHZhciB0aGlyZEJ5dGVOb2RlID0gdGhpcy5kZWNvZGVUYWJsZXNbdGhpcmRCeXRlTm9kZUlkeF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7XG5cbiAgICAgICAgdmFyIGZvdXJ0aEJ5dGVOb2RlSWR4ID0gdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoO1xuICAgICAgICB2YXIgZm91cnRoQnl0ZU5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tmb3VydGhCeXRlTm9kZUlkeF0gPSBVTkFTU0lHTkVEX05PREUuc2xpY2UoMCk7XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDB4ODE7IGkgPD0gMHhGRTsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgc2Vjb25kQnl0ZU5vZGVJZHggPSBOT0RFX1NUQVJUIC0gdGhpcy5kZWNvZGVUYWJsZXNbMF1baV07XG4gICAgICAgICAgICB2YXIgc2Vjb25kQnl0ZU5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1tzZWNvbmRCeXRlTm9kZUlkeF07XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMHgzMDsgaiA8PSAweDM5OyBqKyspXG4gICAgICAgICAgICAgICAgc2Vjb25kQnl0ZU5vZGVbal0gPSBOT0RFX1NUQVJUIC0gdGhpcmRCeXRlTm9kZUlkeDtcbiAgICAgICAgfVxuICAgICAgICBmb3IgKHZhciBpID0gMHg4MTsgaSA8PSAweEZFOyBpKyspXG4gICAgICAgICAgICB0aGlyZEJ5dGVOb2RlW2ldID0gTk9ERV9TVEFSVCAtIGZvdXJ0aEJ5dGVOb2RlSWR4O1xuICAgICAgICBmb3IgKHZhciBpID0gMHgzMDsgaSA8PSAweDM5OyBpKyspXG4gICAgICAgICAgICBmb3VydGhCeXRlTm9kZVtpXSA9IEdCMTgwMzBfQ09ERVxuICAgIH0gICAgICAgIFxufVxuXG5EQkNTQ29kZWMucHJvdG90eXBlLmVuY29kZXIgPSBEQkNTRW5jb2RlcjtcbkRCQ1NDb2RlYy5wcm90b3R5cGUuZGVjb2RlciA9IERCQ1NEZWNvZGVyO1xuXG4vLyBEZWNvZGVyIGhlbHBlcnNcbkRCQ1NDb2RlYy5wcm90b3R5cGUuX2dldERlY29kZVRyaWVOb2RlID0gZnVuY3Rpb24oYWRkcikge1xuICAgIHZhciBieXRlcyA9IFtdO1xuICAgIGZvciAoOyBhZGRyID4gMDsgYWRkciA+Pj0gOClcbiAgICAgICAgYnl0ZXMucHVzaChhZGRyICYgMHhGRik7XG4gICAgaWYgKGJ5dGVzLmxlbmd0aCA9PSAwKVxuICAgICAgICBieXRlcy5wdXNoKDApO1xuXG4gICAgdmFyIG5vZGUgPSB0aGlzLmRlY29kZVRhYmxlc1swXTtcbiAgICBmb3IgKHZhciBpID0gYnl0ZXMubGVuZ3RoLTE7IGkgPiAwOyBpLS0pIHsgLy8gVHJhdmVyc2Ugbm9kZXMgZGVlcGVyIGludG8gdGhlIHRyaWUuXG4gICAgICAgIHZhciB2YWwgPSBub2RlW2J5dGVzW2ldXTtcblxuICAgICAgICBpZiAodmFsID09IFVOQVNTSUdORUQpIHsgLy8gQ3JlYXRlIG5ldyBub2RlLlxuICAgICAgICAgICAgbm9kZVtieXRlc1tpXV0gPSBOT0RFX1NUQVJUIC0gdGhpcy5kZWNvZGVUYWJsZXMubGVuZ3RoO1xuICAgICAgICAgICAgdGhpcy5kZWNvZGVUYWJsZXMucHVzaChub2RlID0gVU5BU1NJR05FRF9OT0RFLnNsaWNlKDApKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgPD0gTk9ERV9TVEFSVCkgeyAvLyBFeGlzdGluZyBub2RlLlxuICAgICAgICAgICAgbm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW05PREVfU1RBUlQgLSB2YWxdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk92ZXJ3cml0ZSBieXRlIGluIFwiICsgdGhpcy5lbmNvZGluZ05hbWUgKyBcIiwgYWRkcjogXCIgKyBhZGRyLnRvU3RyaW5nKDE2KSk7XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xufVxuXG5cbkRCQ1NDb2RlYy5wcm90b3R5cGUuX2FkZERlY29kZUNodW5rID0gZnVuY3Rpb24oY2h1bmspIHtcbiAgICAvLyBGaXJzdCBlbGVtZW50IG9mIGNodW5rIGlzIHRoZSBoZXggbWJjcyBjb2RlIHdoZXJlIHdlIHN0YXJ0LlxuICAgIHZhciBjdXJBZGRyID0gcGFyc2VJbnQoY2h1bmtbMF0sIDE2KTtcblxuICAgIC8vIENob29zZSB0aGUgZGVjb2Rpbmcgbm9kZSB3aGVyZSB3ZSdsbCB3cml0ZSBvdXIgY2hhcnMuXG4gICAgdmFyIHdyaXRlVGFibGUgPSB0aGlzLl9nZXREZWNvZGVUcmllTm9kZShjdXJBZGRyKTtcbiAgICBjdXJBZGRyID0gY3VyQWRkciAmIDB4RkY7XG5cbiAgICAvLyBXcml0ZSBhbGwgb3RoZXIgZWxlbWVudHMgb2YgdGhlIGNodW5rIHRvIHRoZSB0YWJsZS5cbiAgICBmb3IgKHZhciBrID0gMTsgayA8IGNodW5rLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBwYXJ0ID0gY2h1bmtba107XG4gICAgICAgIGlmICh0eXBlb2YgcGFydCA9PT0gXCJzdHJpbmdcIikgeyAvLyBTdHJpbmcsIHdyaXRlIGFzLWlzLlxuICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBwYXJ0Lmxlbmd0aDspIHtcbiAgICAgICAgICAgICAgICB2YXIgY29kZSA9IHBhcnQuY2hhckNvZGVBdChsKyspO1xuICAgICAgICAgICAgICAgIGlmICgweEQ4MDAgPD0gY29kZSAmJiBjb2RlIDwgMHhEQzAwKSB7IC8vIERlY29kZSBzdXJyb2dhdGVcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVUcmFpbCA9IHBhcnQuY2hhckNvZGVBdChsKyspO1xuICAgICAgICAgICAgICAgICAgICBpZiAoMHhEQzAwIDw9IGNvZGVUcmFpbCAmJiBjb2RlVHJhaWwgPCAweEUwMDApXG4gICAgICAgICAgICAgICAgICAgICAgICB3cml0ZVRhYmxlW2N1ckFkZHIrK10gPSAweDEwMDAwICsgKGNvZGUgLSAweEQ4MDApICogMHg0MDAgKyAoY29kZVRyYWlsIC0gMHhEQzAwKTtcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW5jb3JyZWN0IHN1cnJvZ2F0ZSBwYWlyIGluIFwiICArIHRoaXMuZW5jb2RpbmdOYW1lICsgXCIgYXQgY2h1bmsgXCIgKyBjaHVua1swXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKDB4MEZGMCA8IGNvZGUgJiYgY29kZSA8PSAweDBGRkYpIHsgLy8gQ2hhcmFjdGVyIHNlcXVlbmNlIChvdXIgb3duIGVuY29kaW5nIHVzZWQpXG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAweEZGRiAtIGNvZGUgKyAyO1xuICAgICAgICAgICAgICAgICAgICB2YXIgc2VxID0gW107XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIG0gPSAwOyBtIDwgbGVuOyBtKyspXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXEucHVzaChwYXJ0LmNoYXJDb2RlQXQobCsrKSk7IC8vIFNpbXBsZSB2YXJpYXRpb246IGRvbid0IHN1cHBvcnQgc3Vycm9nYXRlcyBvciBzdWJzZXF1ZW5jZXMgaW4gc2VxLlxuXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlVGFibGVbY3VyQWRkcisrXSA9IFNFUV9TVEFSVCAtIHRoaXMuZGVjb2RlVGFibGVTZXEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRlY29kZVRhYmxlU2VxLnB1c2goc2VxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB3cml0ZVRhYmxlW2N1ckFkZHIrK10gPSBjb2RlOyAvLyBCYXNpYyBjaGFyXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwYXJ0ID09PSBcIm51bWJlclwiKSB7IC8vIEludGVnZXIsIG1lYW5pbmcgaW5jcmVhc2luZyBzZXF1ZW5jZSBzdGFydGluZyB3aXRoIHByZXYgY2hhcmFjdGVyLlxuICAgICAgICAgICAgdmFyIGNoYXJDb2RlID0gd3JpdGVUYWJsZVtjdXJBZGRyIC0gMV0gKyAxO1xuICAgICAgICAgICAgZm9yICh2YXIgbCA9IDA7IGwgPCBwYXJ0OyBsKyspXG4gICAgICAgICAgICAgICAgd3JpdGVUYWJsZVtjdXJBZGRyKytdID0gY2hhckNvZGUrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbmNvcnJlY3QgdHlwZSAnXCIgKyB0eXBlb2YgcGFydCArIFwiJyBnaXZlbiBpbiBcIiAgKyB0aGlzLmVuY29kaW5nTmFtZSArIFwiIGF0IGNodW5rIFwiICsgY2h1bmtbMF0pO1xuICAgIH1cbiAgICBpZiAoY3VyQWRkciA+IDB4RkYpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkluY29ycmVjdCBjaHVuayBpbiBcIiAgKyB0aGlzLmVuY29kaW5nTmFtZSArIFwiIGF0IGFkZHIgXCIgKyBjaHVua1swXSArIFwiOiB0b28gbG9uZ1wiICsgY3VyQWRkcik7XG59XG5cbi8vIEVuY29kZXIgaGVscGVyc1xuREJDU0NvZGVjLnByb3RvdHlwZS5fZ2V0RW5jb2RlQnVja2V0ID0gZnVuY3Rpb24odUNvZGUpIHtcbiAgICB2YXIgaGlnaCA9IHVDb2RlID4+IDg7IC8vIFRoaXMgY291bGQgYmUgPiAweEZGIGJlY2F1c2Ugb2YgYXN0cmFsIGNoYXJhY3RlcnMuXG4gICAgaWYgKHRoaXMuZW5jb2RlVGFibGVbaGlnaF0gPT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhpcy5lbmNvZGVUYWJsZVtoaWdoXSA9IFVOQVNTSUdORURfTk9ERS5zbGljZSgwKTsgLy8gQ3JlYXRlIGJ1Y2tldCBvbiBkZW1hbmQuXG4gICAgcmV0dXJuIHRoaXMuZW5jb2RlVGFibGVbaGlnaF07XG59XG5cbkRCQ1NDb2RlYy5wcm90b3R5cGUuX3NldEVuY29kZUNoYXIgPSBmdW5jdGlvbih1Q29kZSwgZGJjc0NvZGUpIHtcbiAgICB2YXIgYnVja2V0ID0gdGhpcy5fZ2V0RW5jb2RlQnVja2V0KHVDb2RlKTtcbiAgICB2YXIgbG93ID0gdUNvZGUgJiAweEZGO1xuICAgIGlmIChidWNrZXRbbG93XSA8PSBTRVFfU1RBUlQpXG4gICAgICAgIHRoaXMuZW5jb2RlVGFibGVTZXFbU0VRX1NUQVJULWJ1Y2tldFtsb3ddXVtERUZfQ0hBUl0gPSBkYmNzQ29kZTsgLy8gVGhlcmUncyBhbHJlYWR5IGEgc2VxdWVuY2UsIHNldCBhIHNpbmdsZS1jaGFyIHN1YnNlcXVlbmNlIG9mIGl0LlxuICAgIGVsc2UgaWYgKGJ1Y2tldFtsb3ddID09IFVOQVNTSUdORUQpXG4gICAgICAgIGJ1Y2tldFtsb3ddID0gZGJjc0NvZGU7XG59XG5cbkRCQ1NDb2RlYy5wcm90b3R5cGUuX3NldEVuY29kZVNlcXVlbmNlID0gZnVuY3Rpb24oc2VxLCBkYmNzQ29kZSkge1xuICAgIFxuICAgIC8vIEdldCB0aGUgcm9vdCBvZiBjaGFyYWN0ZXIgdHJlZSBhY2NvcmRpbmcgdG8gZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZXF1ZW5jZS5cbiAgICB2YXIgdUNvZGUgPSBzZXFbMF07XG4gICAgdmFyIGJ1Y2tldCA9IHRoaXMuX2dldEVuY29kZUJ1Y2tldCh1Q29kZSk7XG4gICAgdmFyIGxvdyA9IHVDb2RlICYgMHhGRjtcblxuICAgIHZhciBub2RlO1xuICAgIGlmIChidWNrZXRbbG93XSA8PSBTRVFfU1RBUlQpIHtcbiAgICAgICAgLy8gVGhlcmUncyBhbHJlYWR5IGEgc2VxdWVuY2Ugd2l0aCAgLSB1c2UgaXQuXG4gICAgICAgIG5vZGUgPSB0aGlzLmVuY29kZVRhYmxlU2VxW1NFUV9TVEFSVC1idWNrZXRbbG93XV07XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICAvLyBUaGVyZSB3YXMgbm8gc2VxdWVuY2Ugb2JqZWN0IC0gYWxsb2NhdGUgYSBuZXcgb25lLlxuICAgICAgICBub2RlID0ge307XG4gICAgICAgIGlmIChidWNrZXRbbG93XSAhPT0gVU5BU1NJR05FRCkgbm9kZVtERUZfQ0hBUl0gPSBidWNrZXRbbG93XTsgLy8gSWYgYSBjaGFyIHdhcyBzZXQgYmVmb3JlIC0gbWFrZSBpdCBhIHNpbmdsZS1jaGFyIHN1YnNlcXVlbmNlLlxuICAgICAgICBidWNrZXRbbG93XSA9IFNFUV9TVEFSVCAtIHRoaXMuZW5jb2RlVGFibGVTZXEubGVuZ3RoO1xuICAgICAgICB0aGlzLmVuY29kZVRhYmxlU2VxLnB1c2gobm9kZSk7XG4gICAgfVxuXG4gICAgLy8gVHJhdmVyc2UgdGhlIGNoYXJhY3RlciB0cmVlLCBhbGxvY2F0aW5nIG5ldyBub2RlcyBhcyBuZWVkZWQuXG4gICAgZm9yICh2YXIgaiA9IDE7IGogPCBzZXEubGVuZ3RoLTE7IGorKykge1xuICAgICAgICB2YXIgb2xkVmFsID0gbm9kZVt1Q29kZV07XG4gICAgICAgIGlmICh0eXBlb2Ygb2xkVmFsID09PSAnb2JqZWN0JylcbiAgICAgICAgICAgIG5vZGUgPSBvbGRWYWw7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgbm9kZSA9IG5vZGVbdUNvZGVdID0ge31cbiAgICAgICAgICAgIGlmIChvbGRWYWwgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICBub2RlW0RFRl9DSEFSXSA9IG9sZFZhbFxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBsZWFmIHRvIGdpdmVuIGRiY3NDb2RlLlxuICAgIHVDb2RlID0gc2VxW3NlcS5sZW5ndGgtMV07XG4gICAgbm9kZVt1Q29kZV0gPSBkYmNzQ29kZTtcbn1cblxuREJDU0NvZGVjLnByb3RvdHlwZS5fZmlsbEVuY29kZVRhYmxlID0gZnVuY3Rpb24obm9kZUlkeCwgcHJlZml4LCBza2lwRW5jb2RlQ2hhcnMpIHtcbiAgICB2YXIgbm9kZSA9IHRoaXMuZGVjb2RlVGFibGVzW25vZGVJZHhdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMHgxMDA7IGkrKykge1xuICAgICAgICB2YXIgdUNvZGUgPSBub2RlW2ldO1xuICAgICAgICB2YXIgbWJDb2RlID0gcHJlZml4ICsgaTtcbiAgICAgICAgaWYgKHNraXBFbmNvZGVDaGFyc1ttYkNvZGVdKVxuICAgICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgaWYgKHVDb2RlID49IDApXG4gICAgICAgICAgICB0aGlzLl9zZXRFbmNvZGVDaGFyKHVDb2RlLCBtYkNvZGUpO1xuICAgICAgICBlbHNlIGlmICh1Q29kZSA8PSBOT0RFX1NUQVJUKVxuICAgICAgICAgICAgdGhpcy5fZmlsbEVuY29kZVRhYmxlKE5PREVfU1RBUlQgLSB1Q29kZSwgbWJDb2RlIDw8IDgsIHNraXBFbmNvZGVDaGFycyk7XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IFNFUV9TVEFSVClcbiAgICAgICAgICAgIHRoaXMuX3NldEVuY29kZVNlcXVlbmNlKHRoaXMuZGVjb2RlVGFibGVTZXFbU0VRX1NUQVJUIC0gdUNvZGVdLCBtYkNvZGUpO1xuICAgIH1cbn1cblxuXG5cbi8vID09IEVuY29kZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIERCQ1NFbmNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgLy8gRW5jb2RlciBzdGF0ZVxuICAgIHRoaXMubGVhZFN1cnJvZ2F0ZSA9IC0xO1xuICAgIHRoaXMuc2VxT2JqID0gdW5kZWZpbmVkO1xuICAgIFxuICAgIC8vIFN0YXRpYyBkYXRhXG4gICAgdGhpcy5lbmNvZGVUYWJsZSA9IGNvZGVjLmVuY29kZVRhYmxlO1xuICAgIHRoaXMuZW5jb2RlVGFibGVTZXEgPSBjb2RlYy5lbmNvZGVUYWJsZVNlcTtcbiAgICB0aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZSA9IGNvZGVjLmRlZkNoYXJTQjtcbiAgICB0aGlzLmdiMTgwMzAgPSBjb2RlYy5nYjE4MDMwO1xufVxuXG5EQkNTRW5jb2Rlci5wcm90b3R5cGUud3JpdGUgPSBmdW5jdGlvbihzdHIpIHtcbiAgICB2YXIgbmV3QnVmID0gQnVmZmVyLmFsbG9jKHN0ci5sZW5ndGggKiAodGhpcy5nYjE4MDMwID8gNCA6IDMpKSxcbiAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IHRoaXMubGVhZFN1cnJvZ2F0ZSxcbiAgICAgICAgc2VxT2JqID0gdGhpcy5zZXFPYmosIG5leHRDaGFyID0gLTEsXG4gICAgICAgIGkgPSAwLCBqID0gMDtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgIC8vIDAuIEdldCBuZXh0IGNoYXJhY3Rlci5cbiAgICAgICAgaWYgKG5leHRDaGFyID09PSAtMSkge1xuICAgICAgICAgICAgaWYgKGkgPT0gc3RyLmxlbmd0aCkgYnJlYWs7XG4gICAgICAgICAgICB2YXIgdUNvZGUgPSBzdHIuY2hhckNvZGVBdChpKyspO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHVDb2RlID0gbmV4dENoYXI7XG4gICAgICAgICAgICBuZXh0Q2hhciA9IC0xOyAgICBcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIDEuIEhhbmRsZSBzdXJyb2dhdGVzLlxuICAgICAgICBpZiAoMHhEODAwIDw9IHVDb2RlICYmIHVDb2RlIDwgMHhFMDAwKSB7IC8vIENoYXIgaXMgb25lIG9mIHN1cnJvZ2F0ZXMuXG4gICAgICAgICAgICBpZiAodUNvZGUgPCAweERDMDApIHsgLy8gV2UndmUgZ290IGxlYWQgc3Vycm9nYXRlLlxuICAgICAgICAgICAgICAgIGlmIChsZWFkU3Vycm9nYXRlID09PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gdUNvZGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGxlYWRTdXJyb2dhdGUgPSB1Q29kZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gRG91YmxlIGxlYWQgc3Vycm9nYXRlIGZvdW5kLlxuICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IFVOQVNTSUdORUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHsgLy8gV2UndmUgZ290IHRyYWlsIHN1cnJvZ2F0ZS5cbiAgICAgICAgICAgICAgICBpZiAobGVhZFN1cnJvZ2F0ZSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdUNvZGUgPSAweDEwMDAwICsgKGxlYWRTdXJyb2dhdGUgLSAweEQ4MDApICogMHg0MDAgKyAodUNvZGUgLSAweERDMDApO1xuICAgICAgICAgICAgICAgICAgICBsZWFkU3Vycm9nYXRlID0gLTE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSW5jb21wbGV0ZSBzdXJyb2dhdGUgcGFpciAtIG9ubHkgdHJhaWwgc3Vycm9nYXRlIGZvdW5kLlxuICAgICAgICAgICAgICAgICAgICB1Q29kZSA9IFVOQVNTSUdORUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGxlYWRTdXJyb2dhdGUgIT09IC0xKSB7XG4gICAgICAgICAgICAvLyBJbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIC0gb25seSBsZWFkIHN1cnJvZ2F0ZSBmb3VuZC5cbiAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IHVDb2RlID0gVU5BU1NJR05FRDsgLy8gV3JpdGUgYW4gZXJyb3IsIHRoZW4gY3VycmVudCBjaGFyLlxuICAgICAgICAgICAgbGVhZFN1cnJvZ2F0ZSA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gMi4gQ29udmVydCB1Q29kZSBjaGFyYWN0ZXIuXG4gICAgICAgIHZhciBkYmNzQ29kZSA9IFVOQVNTSUdORUQ7XG4gICAgICAgIGlmIChzZXFPYmogIT09IHVuZGVmaW5lZCAmJiB1Q29kZSAhPSBVTkFTU0lHTkVEKSB7IC8vIFdlIGFyZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzZXF1ZW5jZVxuICAgICAgICAgICAgdmFyIHJlc0NvZGUgPSBzZXFPYmpbdUNvZGVdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNDb2RlID09PSAnb2JqZWN0JykgeyAvLyBTZXF1ZW5jZSBjb250aW51ZXMuXG4gICAgICAgICAgICAgICAgc2VxT2JqID0gcmVzQ29kZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzQ29kZSA9PSAnbnVtYmVyJykgeyAvLyBTZXF1ZW5jZSBmaW5pc2hlZC4gV3JpdGUgaXQuXG4gICAgICAgICAgICAgICAgZGJjc0NvZGUgPSByZXNDb2RlO1xuXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc0NvZGUgPT0gdW5kZWZpbmVkKSB7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIGlzIG5vdCBwYXJ0IG9mIHRoZSBzZXF1ZW5jZS5cblxuICAgICAgICAgICAgICAgIC8vIFRyeSBkZWZhdWx0IGNoYXJhY3RlciBmb3IgdGhpcyBzZXF1ZW5jZVxuICAgICAgICAgICAgICAgIHJlc0NvZGUgPSBzZXFPYmpbREVGX0NIQVJdO1xuICAgICAgICAgICAgICAgIGlmIChyZXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGJjc0NvZGUgPSByZXNDb2RlOyAvLyBGb3VuZC4gV3JpdGUgaXQuXG4gICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gdUNvZGU7IC8vIEN1cnJlbnQgY2hhcmFjdGVyIHdpbGwgYmUgd3JpdHRlbiB0b28gaW4gdGhlIG5leHQgaXRlcmF0aW9uLlxuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2hhdCBpZiB3ZSBoYXZlIG5vIGRlZmF1bHQ/IChyZXNDb2RlID09IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICAgICAgLy8gVGhlbiwgd2Ugc2hvdWxkIHdyaXRlIGZpcnN0IGNoYXIgb2YgdGhlIHNlcXVlbmNlIGFzLWlzIGFuZCB0cnkgdGhlIHJlc3QgcmVjdXJzaXZlbHkuXG4gICAgICAgICAgICAgICAgICAgIC8vIERpZG4ndCBkbyBpdCBmb3Igbm93IGJlY2F1c2Ugbm8gZW5jb2RpbmcgaGFzIHRoaXMgc2l0dWF0aW9uIHlldC5cbiAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5LCBqdXN0IHNraXAgdGhlIHNlcXVlbmNlIGFuZCB3cml0ZSBjdXJyZW50IGNoYXIuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VxT2JqID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlID49IDApIHsgIC8vIFJlZ3VsYXIgY2hhcmFjdGVyXG4gICAgICAgICAgICB2YXIgc3VidGFibGUgPSB0aGlzLmVuY29kZVRhYmxlW3VDb2RlID4+IDhdO1xuICAgICAgICAgICAgaWYgKHN1YnRhYmxlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgZGJjc0NvZGUgPSBzdWJ0YWJsZVt1Q29kZSAmIDB4RkZdO1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBpZiAoZGJjc0NvZGUgPD0gU0VRX1NUQVJUKSB7IC8vIFNlcXVlbmNlIHN0YXJ0XG4gICAgICAgICAgICAgICAgc2VxT2JqID0gdGhpcy5lbmNvZGVUYWJsZVNlcVtTRVFfU1RBUlQtZGJjc0NvZGVdO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZGJjc0NvZGUgPT0gVU5BU1NJR05FRCAmJiB0aGlzLmdiMTgwMzApIHtcbiAgICAgICAgICAgICAgICAvLyBVc2UgR0IxODAzMCBhbGdvcml0aG0gdG8gZmluZCBjaGFyYWN0ZXIocykgdG8gd3JpdGUuXG4gICAgICAgICAgICAgICAgdmFyIGlkeCA9IGZpbmRJZHgodGhpcy5nYjE4MDMwLnVDaGFycywgdUNvZGUpO1xuICAgICAgICAgICAgICAgIGlmIChpZHggIT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRiY3NDb2RlID0gdGhpcy5nYjE4MDMwLmdiQ2hhcnNbaWR4XSArICh1Q29kZSAtIHRoaXMuZ2IxODAzMC51Q2hhcnNbaWR4XSk7XG4gICAgICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gMHg4MSArIE1hdGguZmxvb3IoZGJjc0NvZGUgLyAxMjYwMCk7IGRiY3NDb2RlID0gZGJjc0NvZGUgJSAxMjYwMDtcbiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDMwICsgTWF0aC5mbG9vcihkYmNzQ29kZSAvIDEyNjApOyBkYmNzQ29kZSA9IGRiY3NDb2RlICUgMTI2MDtcbiAgICAgICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSAweDgxICsgTWF0aC5mbG9vcihkYmNzQ29kZSAvIDEwKTsgZGJjc0NvZGUgPSBkYmNzQ29kZSAlIDEwO1xuICAgICAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IDB4MzAgKyBkYmNzQ29kZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gMy4gV3JpdGUgZGJjc0NvZGUgY2hhcmFjdGVyLlxuICAgICAgICBpZiAoZGJjc0NvZGUgPT09IFVOQVNTSUdORUQpXG4gICAgICAgICAgICBkYmNzQ29kZSA9IHRoaXMuZGVmYXVsdENoYXJTaW5nbGVCeXRlO1xuICAgICAgICBcbiAgICAgICAgaWYgKGRiY3NDb2RlIDwgMHgxMDApIHtcbiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGJjc0NvZGUgPCAweDEwMDAwKSB7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlID4+IDg7ICAgLy8gaGlnaCBieXRlXG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlICYgMHhGRjsgLy8gbG93IGJ5dGVcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGUgPj4gMTY7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IChkYmNzQ29kZSA+PiA4KSAmIDB4RkY7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlICYgMHhGRjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuc2VxT2JqID0gc2VxT2JqO1xuICAgIHRoaXMubGVhZFN1cnJvZ2F0ZSA9IGxlYWRTdXJyb2dhdGU7XG4gICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKTtcbn1cblxuREJDU0VuY29kZXIucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLmxlYWRTdXJyb2dhdGUgPT09IC0xICYmIHRoaXMuc2VxT2JqID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybjsgLy8gQWxsIGNsZWFuLiBNb3N0IG9mdGVuIGNhc2UuXG5cbiAgICB2YXIgbmV3QnVmID0gQnVmZmVyLmFsbG9jKDEwKSwgaiA9IDA7XG5cbiAgICBpZiAodGhpcy5zZXFPYmopIHsgLy8gV2UncmUgaW4gdGhlIHNlcXVlbmNlLlxuICAgICAgICB2YXIgZGJjc0NvZGUgPSB0aGlzLnNlcU9ialtERUZfQ0hBUl07XG4gICAgICAgIGlmIChkYmNzQ29kZSAhPT0gdW5kZWZpbmVkKSB7IC8vIFdyaXRlIGJlZ2lubmluZyBvZiB0aGUgc2VxdWVuY2UuXG4gICAgICAgICAgICBpZiAoZGJjc0NvZGUgPCAweDEwMCkge1xuICAgICAgICAgICAgICAgIG5ld0J1ZltqKytdID0gZGJjc0NvZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdCdWZbaisrXSA9IGRiY3NDb2RlID4+IDg7ICAgLy8gaGlnaCBieXRlXG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSBkYmNzQ29kZSAmIDB4RkY7IC8vIGxvdyBieXRlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBTZWUgdG9kbyBhYm92ZS5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlcU9iaiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5sZWFkU3Vycm9nYXRlICE9PSAtMSkge1xuICAgICAgICAvLyBJbmNvbXBsZXRlIHN1cnJvZ2F0ZSBwYWlyIC0gb25seSBsZWFkIHN1cnJvZ2F0ZSBmb3VuZC5cbiAgICAgICAgbmV3QnVmW2orK10gPSB0aGlzLmRlZmF1bHRDaGFyU2luZ2xlQnl0ZTtcbiAgICAgICAgdGhpcy5sZWFkU3Vycm9nYXRlID0gLTE7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBuZXdCdWYuc2xpY2UoMCwgaik7XG59XG5cbi8vIEV4cG9ydCBmb3IgdGVzdGluZ1xuREJDU0VuY29kZXIucHJvdG90eXBlLmZpbmRJZHggPSBmaW5kSWR4O1xuXG5cbi8vID09IERlY29kZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmZ1bmN0aW9uIERCQ1NEZWNvZGVyKG9wdGlvbnMsIGNvZGVjKSB7XG4gICAgLy8gRGVjb2RlciBzdGF0ZVxuICAgIHRoaXMubm9kZUlkeCA9IDA7XG4gICAgdGhpcy5wcmV2QnVmID0gQnVmZmVyLmFsbG9jKDApO1xuXG4gICAgLy8gU3RhdGljIGRhdGFcbiAgICB0aGlzLmRlY29kZVRhYmxlcyA9IGNvZGVjLmRlY29kZVRhYmxlcztcbiAgICB0aGlzLmRlY29kZVRhYmxlU2VxID0gY29kZWMuZGVjb2RlVGFibGVTZXE7XG4gICAgdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUgPSBjb2RlYy5kZWZhdWx0Q2hhclVuaWNvZGU7XG4gICAgdGhpcy5nYjE4MDMwID0gY29kZWMuZ2IxODAzMDtcbn1cblxuREJDU0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24oYnVmKSB7XG4gICAgdmFyIG5ld0J1ZiA9IEJ1ZmZlci5hbGxvYyhidWYubGVuZ3RoKjIpLFxuICAgICAgICBub2RlSWR4ID0gdGhpcy5ub2RlSWR4LCBcbiAgICAgICAgcHJldkJ1ZiA9IHRoaXMucHJldkJ1ZiwgcHJldkJ1Zk9mZnNldCA9IHRoaXMucHJldkJ1Zi5sZW5ndGgsXG4gICAgICAgIHNlcVN0YXJ0ID0gLXRoaXMucHJldkJ1Zi5sZW5ndGgsIC8vIGlkeCBvZiB0aGUgc3RhcnQgb2YgY3VycmVudCBwYXJzZWQgc2VxdWVuY2UuXG4gICAgICAgIHVDb2RlO1xuXG4gICAgaWYgKHByZXZCdWZPZmZzZXQgPiAwKSAvLyBNYWtlIHByZXYgYnVmIG92ZXJsYXAgYSBsaXR0bGUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gc2xpY2UgbGF0ZXIuXG4gICAgICAgIHByZXZCdWYgPSBCdWZmZXIuY29uY2F0KFtwcmV2QnVmLCBidWYuc2xpY2UoMCwgMTApXSk7XG4gICAgXG4gICAgZm9yICh2YXIgaSA9IDAsIGogPSAwOyBpIDwgYnVmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBjdXJCeXRlID0gKGkgPj0gMCkgPyBidWZbaV0gOiBwcmV2QnVmW2kgKyBwcmV2QnVmT2Zmc2V0XTtcblxuICAgICAgICAvLyBMb29rdXAgaW4gY3VycmVudCB0cmllIG5vZGUuXG4gICAgICAgIHZhciB1Q29kZSA9IHRoaXMuZGVjb2RlVGFibGVzW25vZGVJZHhdW2N1ckJ5dGVdO1xuXG4gICAgICAgIGlmICh1Q29kZSA+PSAwKSB7IFxuICAgICAgICAgICAgLy8gTm9ybWFsIGNoYXJhY3RlciwganVzdCB1c2UgaXQuXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPT09IFVOQVNTSUdORUQpIHsgLy8gVW5rbm93biBjaGFyLlxuICAgICAgICAgICAgLy8gVE9ETzogQ2FsbGJhY2sgd2l0aCBzZXEuXG4gICAgICAgICAgICAvL3ZhciBjdXJTZXEgPSAoc2VxU3RhcnQgPj0gMCkgPyBidWYuc2xpY2Uoc2VxU3RhcnQsIGkrMSkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCwgaSsxICsgcHJldkJ1Zk9mZnNldCk7XG4gICAgICAgICAgICBpID0gc2VxU3RhcnQ7IC8vIFRyeSB0byBwYXJzZSBhZ2FpbiwgYWZ0ZXIgc2tpcHBpbmcgZmlyc3QgYnl0ZSBvZiB0aGUgc2VxdWVuY2UgKCdpJyB3aWxsIGJlIGluY3JlbWVudGVkIGJ5ICdmb3InIGN5Y2xlKS5cbiAgICAgICAgICAgIHVDb2RlID0gdGhpcy5kZWZhdWx0Q2hhclVuaWNvZGUuY2hhckNvZGVBdCgwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh1Q29kZSA9PT0gR0IxODAzMF9DT0RFKSB7XG4gICAgICAgICAgICB2YXIgY3VyU2VxID0gKHNlcVN0YXJ0ID49IDApID8gYnVmLnNsaWNlKHNlcVN0YXJ0LCBpKzEpIDogcHJldkJ1Zi5zbGljZShzZXFTdGFydCArIHByZXZCdWZPZmZzZXQsIGkrMSArIHByZXZCdWZPZmZzZXQpO1xuICAgICAgICAgICAgdmFyIHB0ciA9IChjdXJTZXFbMF0tMHg4MSkqMTI2MDAgKyAoY3VyU2VxWzFdLTB4MzApKjEyNjAgKyAoY3VyU2VxWzJdLTB4ODEpKjEwICsgKGN1clNlcVszXS0weDMwKTtcbiAgICAgICAgICAgIHZhciBpZHggPSBmaW5kSWR4KHRoaXMuZ2IxODAzMC5nYkNoYXJzLCBwdHIpO1xuICAgICAgICAgICAgdUNvZGUgPSB0aGlzLmdiMTgwMzAudUNoYXJzW2lkeF0gKyBwdHIgLSB0aGlzLmdiMTgwMzAuZ2JDaGFyc1tpZHhdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHVDb2RlIDw9IE5PREVfU1RBUlQpIHsgLy8gR28gdG8gbmV4dCB0cmllIG5vZGUuXG4gICAgICAgICAgICBub2RlSWR4ID0gTk9ERV9TVEFSVCAtIHVDb2RlO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodUNvZGUgPD0gU0VRX1NUQVJUKSB7IC8vIE91dHB1dCBhIHNlcXVlbmNlIG9mIGNoYXJzLlxuICAgICAgICAgICAgdmFyIHNlcSA9IHRoaXMuZGVjb2RlVGFibGVTZXFbU0VRX1NUQVJUIC0gdUNvZGVdO1xuICAgICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBzZXEubGVuZ3RoIC0gMTsgaysrKSB7XG4gICAgICAgICAgICAgICAgdUNvZGUgPSBzZXFba107XG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSAmIDB4RkY7XG4gICAgICAgICAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSA+PiA4O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdUNvZGUgPSBzZXFbc2VxLmxlbmd0aC0xXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJpY29udi1saXRlIGludGVybmFsIGVycm9yOiBpbnZhbGlkIGRlY29kaW5nIHRhYmxlIHZhbHVlIFwiICsgdUNvZGUgKyBcIiBhdCBcIiArIG5vZGVJZHggKyBcIi9cIiArIGN1ckJ5dGUpO1xuXG4gICAgICAgIC8vIFdyaXRlIHRoZSBjaGFyYWN0ZXIgdG8gYnVmZmVyLCBoYW5kbGluZyBoaWdoZXIgcGxhbmVzIHVzaW5nIHN1cnJvZ2F0ZSBwYWlyLlxuICAgICAgICBpZiAodUNvZGUgPiAweEZGRkYpIHsgXG4gICAgICAgICAgICB1Q29kZSAtPSAweDEwMDAwO1xuICAgICAgICAgICAgdmFyIHVDb2RlTGVhZCA9IDB4RDgwMCArIE1hdGguZmxvb3IodUNvZGUgLyAweDQwMCk7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlTGVhZCAmIDB4RkY7XG4gICAgICAgICAgICBuZXdCdWZbaisrXSA9IHVDb2RlTGVhZCA+PiA4O1xuXG4gICAgICAgICAgICB1Q29kZSA9IDB4REMwMCArIHVDb2RlICUgMHg0MDA7XG4gICAgICAgIH1cbiAgICAgICAgbmV3QnVmW2orK10gPSB1Q29kZSAmIDB4RkY7XG4gICAgICAgIG5ld0J1ZltqKytdID0gdUNvZGUgPj4gODtcblxuICAgICAgICAvLyBSZXNldCB0cmllIG5vZGUuXG4gICAgICAgIG5vZGVJZHggPSAwOyBzZXFTdGFydCA9IGkrMTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGVJZHggPSBub2RlSWR4O1xuICAgIHRoaXMucHJldkJ1ZiA9IChzZXFTdGFydCA+PSAwKSA/IGJ1Zi5zbGljZShzZXFTdGFydCkgOiBwcmV2QnVmLnNsaWNlKHNlcVN0YXJ0ICsgcHJldkJ1Zk9mZnNldCk7XG4gICAgcmV0dXJuIG5ld0J1Zi5zbGljZSgwLCBqKS50b1N0cmluZygndWNzMicpO1xufVxuXG5EQkNTRGVjb2Rlci5wcm90b3R5cGUuZW5kID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJldCA9ICcnO1xuXG4gICAgLy8gVHJ5IHRvIHBhcnNlIGFsbCByZW1haW5pbmcgY2hhcnMuXG4gICAgd2hpbGUgKHRoaXMucHJldkJ1Zi5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIFNraXAgMSBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlci5cbiAgICAgICAgcmV0ICs9IHRoaXMuZGVmYXVsdENoYXJVbmljb2RlO1xuICAgICAgICB2YXIgYnVmID0gdGhpcy5wcmV2QnVmLnNsaWNlKDEpO1xuXG4gICAgICAgIC8vIFBhcnNlIHJlbWFpbmluZyBhcyB1c3VhbC5cbiAgICAgICAgdGhpcy5wcmV2QnVmID0gQnVmZmVyLmFsbG9jKDApO1xuICAgICAgICB0aGlzLm5vZGVJZHggPSAwO1xuICAgICAgICBpZiAoYnVmLmxlbmd0aCA+IDApXG4gICAgICAgICAgICByZXQgKz0gdGhpcy53cml0ZShidWYpO1xuICAgIH1cblxuICAgIHRoaXMubm9kZUlkeCA9IDA7XG4gICAgcmV0dXJuIHJldDtcbn1cblxuLy8gQmluYXJ5IHNlYXJjaCBmb3IgR0IxODAzMC4gUmV0dXJucyBsYXJnZXN0IGkgc3VjaCB0aGF0IHRhYmxlW2ldIDw9IHZhbC5cbmZ1bmN0aW9uIGZpbmRJZHgodGFibGUsIHZhbCkge1xuICAgIGlmICh0YWJsZVswXSA+IHZhbClcbiAgICAgICAgcmV0dXJuIC0xO1xuXG4gICAgdmFyIGwgPSAwLCByID0gdGFibGUubGVuZ3RoO1xuICAgIHdoaWxlIChsIDwgci0xKSB7IC8vIGFsd2F5cyB0YWJsZVtsXSA8PSB2YWwgPCB0YWJsZVtyXVxuICAgICAgICB2YXIgbWlkID0gbCArIE1hdGguZmxvb3IoKHItbCsxKS8yKTtcbiAgICAgICAgaWYgKHRhYmxlW21pZF0gPD0gdmFsKVxuICAgICAgICAgICAgbCA9IG1pZDtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgciA9IG1pZDtcbiAgICB9XG4gICAgcmV0dXJuIGw7XG59XG5cbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vLyBEZXNjcmlwdGlvbiBvZiBzdXBwb3J0ZWQgZG91YmxlIGJ5dGUgZW5jb2RpbmdzIGFuZCBhbGlhc2VzLlxuLy8gVGFibGVzIGFyZSBub3QgcmVxdWlyZSgpLWQgdW50aWwgdGhleSBhcmUgbmVlZGVkIHRvIHNwZWVkIHVwIGxpYnJhcnkgbG9hZC5cbi8vIHJlcXVpcmUoKS1zIGFyZSBkaXJlY3QgdG8gc3VwcG9ydCBCcm93c2VyaWZ5LlxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBcbiAgICAvLyA9PSBKYXBhbmVzZS9TaGlmdEpJUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gQWxsIGphcGFuZXNlIGVuY29kaW5ncyBhcmUgYmFzZWQgb24gSklTIFggc2V0IG9mIHN0YW5kYXJkczpcbiAgICAvLyBKSVMgWCAwMjAxIC0gU2luZ2xlLWJ5dGUgZW5jb2Rpbmcgb2YgQVNDSUkgKyDCpSArIEthbmEgY2hhcnMgYXQgMHhBMS0weERGLlxuICAgIC8vIEpJUyBYIDAyMDggLSBNYWluIHNldCBvZiA2ODc5IGNoYXJhY3RlcnMsIHBsYWNlZCBpbiA5NHg5NCBwbGFuZSwgdG8gYmUgZW5jb2RlZCBieSAyIGJ5dGVzLiBcbiAgICAvLyAgICAgICAgICAgICAgSGFzIHNldmVyYWwgdmFyaWF0aW9ucyBpbiAxOTc4LCAxOTgzLCAxOTkwIGFuZCAxOTk3LlxuICAgIC8vIEpJUyBYIDAyMTIgLSBTdXBwbGVtZW50YXJ5IHBsYW5lIG9mIDYwNjcgY2hhcnMgaW4gOTR4OTQgcGxhbmUuIDE5OTAuIEVmZmVjdGl2ZWx5IGRlYWQuXG4gICAgLy8gSklTIFggMDIxMyAtIEV4dGVuc2lvbiBhbmQgbW9kZXJuIHJlcGxhY2VtZW50IG9mIDAyMDggYW5kIDAyMTIuIFRvdGFsIGNoYXJzOiAxMTIzMy5cbiAgICAvLyAgICAgICAgICAgICAgMiBwbGFuZXMsIGZpcnN0IGlzIHN1cGVyc2V0IG9mIDAyMDgsIHNlY29uZCAtIHJldmlzZWQgMDIxMi5cbiAgICAvLyAgICAgICAgICAgICAgSW50cm9kdWNlZCBpbiAyMDAwLCByZXZpc2VkIDIwMDQuIFNvbWUgY2hhcmFjdGVycyBhcmUgaW4gVW5pY29kZSBQbGFuZSAyICgweDJ4eHh4KVxuXG4gICAgLy8gQnl0ZSBlbmNvZGluZ3MgYXJlOlxuICAgIC8vICAqIFNoaWZ0X0pJUzogQ29tcGF0aWJsZSB3aXRoIDAyMDEsIHVzZXMgbm90IGRlZmluZWQgY2hhcnMgaW4gdG9wIGhhbGYgYXMgbGVhZCBieXRlcyBmb3IgZG91YmxlLWJ5dGVcbiAgICAvLyAgICAgICAgICAgICAgIGVuY29kaW5nIG9mIDAyMDguIExlYWQgYnl0ZSByYW5nZXM6IDB4ODEtMHg5RiwgMHhFMC0weEVGOyBUcmFpbCBieXRlIHJhbmdlczogMHg0MC0weDdFLCAweDgwLTB4OUUsIDB4OUYtMHhGQy5cbiAgICAvLyAgICAgICAgICAgICAgIFdpbmRvd3MgQ1A5MzIgaXMgYSBzdXBlcnNldCBvZiBTaGlmdF9KSVMuIFNvbWUgY29tcGFuaWVzIGFkZGVkIG1vcmUgY2hhcnMsIG5vdGFibHkgS0RESS5cbiAgICAvLyAgKiBFVUMtSlA6ICAgIFVwIHRvIDMgYnl0ZXMgcGVyIGNoYXJhY3Rlci4gVXNlZCBtb3N0bHkgb24gKm5peGVzLlxuICAgIC8vICAgICAgICAgICAgICAgMHgwMC0weDdGICAgICAgIC0gbG93ZXIgcGFydCBvZiAwMjAxXG4gICAgLy8gICAgICAgICAgICAgICAweDhFLCAweEExLTB4REYgLSB1cHBlciBwYXJ0IG9mIDAyMDFcbiAgICAvLyAgICAgICAgICAgICAgICgweEExLTB4RkUpeDIgICAtIDAyMDggcGxhbmUgKDk0eDk0KS5cbiAgICAvLyAgICAgICAgICAgICAgIDB4OEYsICgweEExLTB4RkUpeDIgLSAwMjEyIHBsYW5lICg5NHg5NCkuXG4gICAgLy8gICogSklTIFggMjA4OiA3LWJpdCwgZGlyZWN0IGVuY29kaW5nIG9mIDAyMDguIEJ5dGUgcmFuZ2VzOiAweDIxLTB4N0UgKDk0IHZhbHVlcykuIFVuY29tbW9uLlxuICAgIC8vICAgICAgICAgICAgICAgVXNlZCBhcy1pcyBpbiBJU08yMDIyIGZhbWlseS5cbiAgICAvLyAgKiBJU08yMDIyLUpQOiBTdGF0ZWZ1bCBlbmNvZGluZywgd2l0aCBlc2NhcGUgc2VxdWVuY2VzIHRvIHN3aXRjaCBiZXR3ZWVuIEFTQ0lJLCBcbiAgICAvLyAgICAgICAgICAgICAgICAwMjAxLTE5NzYgUm9tYW4sIDAyMDgtMTk3OCwgMDIwOC0xOTgzLlxuICAgIC8vICAqIElTTzIwMjItSlAtMTogQWRkcyBlc2Mgc2VxIGZvciAwMjEyLTE5OTAuXG4gICAgLy8gICogSVNPMjAyMi1KUC0yOiBBZGRzIGVzYyBzZXEgZm9yIEdCMjMxMy0xOTgwLCBLU1gxMDAxLTE5OTIsIElTTzg4NTktMSwgSVNPODg1OS03LlxuICAgIC8vICAqIElTTzIwMjItSlAtMzogQWRkcyBlc2Mgc2VxIGZvciAwMjAxLTE5NzYgS2FuYSBzZXQsIDAyMTMtMjAwMCBQbGFuZXMgMSwgMi5cbiAgICAvLyAgKiBJU08yMDIyLUpQLTIwMDQ6IEFkZHMgMDIxMy0yMDA0IFBsYW5lIDEuXG4gICAgLy9cbiAgICAvLyBBZnRlciBKSVMgWCAwMjEzIGFwcGVhcmVkLCBTaGlmdF9KSVMtMjAwNCwgRVVDLUpJU1gwMjEzIGFuZCBJU08yMDIyLUpQLTIwMDQgZm9sbG93ZWQsIHdpdGgganVzdCBjaGFuZ2luZyB0aGUgcGxhbmVzLlxuICAgIC8vXG4gICAgLy8gT3ZlcmFsbCwgaXQgc2VlbXMgdGhhdCBpdCdzIGEgbWVzcyA6KCBodHRwOi8vd3d3OC5wbGFsYS5vci5qcC90a3Vib3RhMS91bmljb2RlLXN5bWJvbHMtbWFwMi5odG1sXG5cbiAgICAnc2hpZnRqaXMnOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL3NoaWZ0amlzLmpzb24nKSB9LFxuICAgICAgICBlbmNvZGVBZGQ6IHsnXFx1MDBhNSc6IDB4NUMsICdcXHUyMDNFJzogMHg3RX0sXG4gICAgICAgIGVuY29kZVNraXBWYWxzOiBbe2Zyb206IDB4RUQ0MCwgdG86IDB4Rjk0MH1dLFxuICAgIH0sXG4gICAgJ2Nzc2hpZnRqaXMnOiAnc2hpZnRqaXMnLFxuICAgICdtc2thbmppJzogJ3NoaWZ0amlzJyxcbiAgICAnc2ppcyc6ICdzaGlmdGppcycsXG4gICAgJ3dpbmRvd3MzMWonOiAnc2hpZnRqaXMnLFxuICAgICdtczMxaic6ICdzaGlmdGppcycsXG4gICAgJ3hzamlzJzogJ3NoaWZ0amlzJyxcbiAgICAnd2luZG93czkzMic6ICdzaGlmdGppcycsXG4gICAgJ21zOTMyJzogJ3NoaWZ0amlzJyxcbiAgICAnOTMyJzogJ3NoaWZ0amlzJyxcbiAgICAnY3A5MzInOiAnc2hpZnRqaXMnLFxuXG4gICAgJ2V1Y2pwJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9ldWNqcC5qc29uJykgfSxcbiAgICAgICAgZW5jb2RlQWRkOiB7J1xcdTAwYTUnOiAweDVDLCAnXFx1MjAzRSc6IDB4N0V9LFxuICAgIH0sXG5cbiAgICAvLyBUT0RPOiBLRERJIGV4dGVuc2lvbiB0byBTaGlmdF9KSVNcbiAgICAvLyBUT0RPOiBJQk0gQ0NTSUQgOTQyID0gQ1A5MzIsIGJ1dCBGMC1GOSBjdXN0b20gY2hhcnMgYW5kIG90aGVyIGNoYXIgY2hhbmdlcy5cbiAgICAvLyBUT0RPOiBJQk0gQ0NTSUQgOTQzID0gU2hpZnRfSklTID0gQ1A5MzIgd2l0aCBvcmlnaW5hbCBTaGlmdF9KSVMgbG93ZXIgMTI4IGNoYXJzLlxuXG5cbiAgICAvLyA9PSBDaGluZXNlL0dCSyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9HQktcbiAgICAvLyBXZSBtb3N0bHkgaW1wbGVtZW50IFczQyByZWNvbW1lbmRhdGlvbjogaHR0cHM6Ly93d3cudzMub3JnL1RSL2VuY29kaW5nLyNnYmstZW5jb2RlclxuXG4gICAgLy8gT2xkZXN0IEdCMjMxMiAoMTk4MSwgfjc2MDAgY2hhcnMpIGlzIGEgc3Vic2V0IG9mIENQOTM2XG4gICAgJ2diMjMxMic6ICdjcDkzNicsXG4gICAgJ2diMjMxMjgwJzogJ2NwOTM2JyxcbiAgICAnZ2IyMzEyMTk4MCc6ICdjcDkzNicsXG4gICAgJ2NzZ2IyMzEyJzogJ2NwOTM2JyxcbiAgICAnY3Npc281OGdiMjMxMjgwJzogJ2NwOTM2JyxcbiAgICAnZXVjY24nOiAnY3A5MzYnLFxuXG4gICAgLy8gTWljcm9zb2Z0J3MgQ1A5MzYgaXMgYSBzdWJzZXQgYW5kIGFwcHJveGltYXRpb24gb2YgR0JLLlxuICAgICd3aW5kb3dzOTM2JzogJ2NwOTM2JyxcbiAgICAnbXM5MzYnOiAnY3A5MzYnLFxuICAgICc5MzYnOiAnY3A5MzYnLFxuICAgICdjcDkzNic6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvY3A5MzYuanNvbicpIH0sXG4gICAgfSxcblxuICAgIC8vIEdCSyAofjIyMDAwIGNoYXJzKSBpcyBhbiBleHRlbnNpb24gb2YgQ1A5MzYgdGhhdCBhZGRlZCB1c2VyLW1hcHBlZCBjaGFycyBhbmQgc29tZSBvdGhlci5cbiAgICAnZ2JrJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9jcDkzNi5qc29uJykuY29uY2F0KHJlcXVpcmUoJy4vdGFibGVzL2diay1hZGRlZC5qc29uJykpIH0sXG4gICAgfSxcbiAgICAneGdiayc6ICdnYmsnLFxuICAgICdpc29pcjU4JzogJ2diaycsXG5cbiAgICAvLyBHQjE4MDMwIGlzIGFuIGFsZ29yaXRobWljIGV4dGVuc2lvbiBvZiBHQksuXG4gICAgLy8gTWFpbiBzb3VyY2U6IGh0dHBzOi8vd3d3LnczLm9yZy9UUi9lbmNvZGluZy8jZ2JrLWVuY29kZXJcbiAgICAvLyBodHRwOi8vaWN1LXByb2plY3Qub3JnL2RvY3MvcGFwZXJzL2diMTgwMzAuaHRtbFxuICAgIC8vIGh0dHA6Ly9zb3VyY2UuaWN1LXByb2plY3Qub3JnL3JlcG9zL2ljdS9kYXRhL3RydW5rL2NoYXJzZXQvZGF0YS94bWwvZ2ItMTgwMzAtMjAwMC54bWxcbiAgICAvLyBodHRwOi8vd3d3LmtobmdhaS5jb20vY2hpbmVzZS9jaGFybWFwL3RibGdiay5waHA/cGFnZT0wXG4gICAgJ2diMTgwMzAnOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL2NwOTM2Lmpzb24nKS5jb25jYXQocmVxdWlyZSgnLi90YWJsZXMvZ2JrLWFkZGVkLmpzb24nKSkgfSxcbiAgICAgICAgZ2IxODAzMDogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9nYjE4MDMwLXJhbmdlcy5qc29uJykgfSxcbiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFsweDgwXSxcbiAgICAgICAgZW5jb2RlQWRkOiB7J+KCrCc6IDB4QTJFM30sXG4gICAgfSxcblxuICAgICdjaGluZXNlJzogJ2diMTgwMzAnLFxuXG5cbiAgICAvLyA9PSBLb3JlYW4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gRVVDLUtSLCBLU19DXzU2MDEgYW5kIEtTIFggMTAwMSBhcmUgZXhhY3RseSB0aGUgc2FtZS5cbiAgICAnd2luZG93czk0OSc6ICdjcDk0OScsXG4gICAgJ21zOTQ5JzogJ2NwOTQ5JyxcbiAgICAnOTQ5JzogJ2NwOTQ5JyxcbiAgICAnY3A5NDknOiB7XG4gICAgICAgIHR5cGU6ICdfZGJjcycsXG4gICAgICAgIHRhYmxlOiBmdW5jdGlvbigpIHsgcmV0dXJuIHJlcXVpcmUoJy4vdGFibGVzL2NwOTQ5Lmpzb24nKSB9LFxuICAgIH0sXG5cbiAgICAnY3NldWNrcic6ICdjcDk0OScsXG4gICAgJ2Nza3NjNTYwMTE5ODcnOiAnY3A5NDknLFxuICAgICdldWNrcic6ICdjcDk0OScsXG4gICAgJ2lzb2lyMTQ5JzogJ2NwOTQ5JyxcbiAgICAna29yZWFuJzogJ2NwOTQ5JyxcbiAgICAna3NjNTYwMTE5ODcnOiAnY3A5NDknLFxuICAgICdrc2M1NjAxMTk4OSc6ICdjcDk0OScsXG4gICAgJ2tzYzU2MDEnOiAnY3A5NDknLFxuXG5cbiAgICAvLyA9PSBCaWc1L1RhaXdhbi9Ib25nIEtvbmcgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gICAgLy8gVGhlcmUgYXJlIGxvdHMgb2YgdGFibGVzIGZvciBCaWc1IGFuZCBjcDk1MC4gUGxlYXNlIHNlZSB0aGUgZm9sbG93aW5nIGxpbmtzIGZvciBoaXN0b3J5OlxuICAgIC8vIGh0dHA6Ly9tb3p0dy5vcmcvZG9jcy9iaWc1LyAgaHR0cDovL3d3dy5oYWlibGUuZGUvYnJ1bm8vY2hhcnNldHMvY29udmVyc2lvbi10YWJsZXMvQmlnNS5odG1sXG4gICAgLy8gVmFyaWF0aW9ucywgaW4gcm91Z2hseSBudW1iZXIgb2YgZGVmaW5lZCBjaGFyczpcbiAgICAvLyAgKiBXaW5kb3dzIENQIDk1MDogTWljcm9zb2Z0IHZhcmlhbnQgb2YgQmlnNS4gQ2Fub25pY2FsOiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy9NQVBQSU5HUy9WRU5ET1JTL01JQ1NGVC9XSU5ET1dTL0NQOTUwLlRYVFxuICAgIC8vICAqIFdpbmRvd3MgQ1AgOTUxOiBNaWNyb3NvZnQgdmFyaWFudCBvZiBCaWc1LUhLU0NTLTIwMDEuIFNlZW1zIHRvIGJlIG5ldmVyIHB1YmxpYy4gaHR0cDovL21lLmFiZWxjaGV1bmcub3JnL2FydGljbGVzL3Jlc2VhcmNoL3doYXQtaXMtY3A5NTEvXG4gICAgLy8gICogQmlnNS0yMDAzIChUYWl3YW4gc3RhbmRhcmQpIGFsbW9zdCBzdXBlcnNldCBvZiBjcDk1MC5cbiAgICAvLyAgKiBVbmljb2RlLWF0LW9uIChVQU8pIC8gTW96aWxsYSAxLjguIEZhbGxpbmcgb3V0IG9mIHVzZSBvbiB0aGUgV2ViLiBOb3Qgc3VwcG9ydGVkIGJ5IG90aGVyIGJyb3dzZXJzLlxuICAgIC8vICAqIEJpZzUtSEtTQ1MgKC0yMDAxLCAtMjAwNCwgLTIwMDgpLiBIb25nIEtvbmcgc3RhbmRhcmQuIFxuICAgIC8vICAgIG1hbnkgdW5pY29kZSBjb2RlIHBvaW50cyBtb3ZlZCBmcm9tIFBVQSB0byBTdXBwbGVtZW50YXJ5IHBsYW5lIChVKzJYWFhYKSBvdmVyIHRoZSB5ZWFycy5cbiAgICAvLyAgICBQbHVzLCBpdCBoYXMgNCBjb21iaW5pbmcgc2VxdWVuY2VzLlxuICAgIC8vICAgIFNlZW1zIHRoYXQgTW96aWxsYSByZWZ1c2VkIHRvIHN1cHBvcnQgaXQgZm9yIDEwIHlycy4gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyNDMxIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTMxMDI5OVxuICAgIC8vICAgIGJlY2F1c2UgYmlnNS1oa3NjcyBpcyB0aGUgb25seSBlbmNvZGluZyB0byBpbmNsdWRlIGFzdHJhbCBjaGFyYWN0ZXJzIGluIG5vbi1hbGdvcml0aG1pYyB3YXkuXG4gICAgLy8gICAgSW1wbGVtZW50YXRpb25zIGFyZSBub3QgY29uc2lzdGVudCB3aXRoaW4gYnJvd3NlcnM7IHNvbWV0aW1lcyBsYWJlbGVkIGFzIGp1c3QgYmlnNS5cbiAgICAvLyAgICBNUyBJbnRlcm5ldCBFeHBsb3JlciBzd2l0Y2hlcyBmcm9tIGJpZzUgdG8gYmlnNS1oa3NjcyB3aGVuIGEgcGF0Y2ggYXBwbGllZC5cbiAgICAvLyAgICBHcmVhdCBkaXNjdXNzaW9uICYgcmVjYXAgb2Ygd2hhdCdzIGdvaW5nIG9uIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTkxMjQ3MCNjMzFcbiAgICAvLyAgICBJbiB0aGUgZW5jb2RlciwgaXQgbWlnaHQgbWFrZSBzZW5zZSB0byBzdXBwb3J0IGVuY29kaW5nIG9sZCBQVUEgbWFwcGluZ3MgdG8gQmlnNSBieXRlcyBzZXEtcy5cbiAgICAvLyAgICBPZmZpY2lhbCBzcGVjOiBodHRwOi8vd3d3Lm9nY2lvLmdvdi5oay9lbi9idXNpbmVzcy90ZWNoX3Byb21vdGlvbi9jY2xpL3Rlcm1zL2RvYy8yMDAzY21wXzIwMDgudHh0XG4gICAgLy8gICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5vZ2Npby5nb3YuaGsvdGMvYnVzaW5lc3MvdGVjaF9wcm9tb3Rpb24vY2NsaS90ZXJtcy9kb2MvaGtzY3MtMjAwOC1iaWc1LWlzby50eHRcbiAgICAvLyBcbiAgICAvLyBDdXJyZW50IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRvIGRlYWwgd2l0aCBCaWc1KC1IS1NDUykgaXMgaW4gdGhlIEVuY29kaW5nIFN0YW5kYXJkLCBodHRwOi8vZW5jb2Rpbmcuc3BlYy53aGF0d2cub3JnLyNiaWc1LWVuY29kZXJcbiAgICAvLyBVbmljb2RlIG1hcHBpbmcgKGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL01BUFBJTkdTL09CU09MRVRFL0VBU1RBU0lBL09USEVSL0JJRzUuVFhUKSBpcyBzYWlkIHRvIGJlIHdyb25nLlxuXG4gICAgJ3dpbmRvd3M5NTAnOiAnY3A5NTAnLFxuICAgICdtczk1MCc6ICdjcDk1MCcsXG4gICAgJzk1MCc6ICdjcDk1MCcsXG4gICAgJ2NwOTUwJzoge1xuICAgICAgICB0eXBlOiAnX2RiY3MnLFxuICAgICAgICB0YWJsZTogZnVuY3Rpb24oKSB7IHJldHVybiByZXF1aXJlKCcuL3RhYmxlcy9jcDk1MC5qc29uJykgfSxcbiAgICB9LFxuXG4gICAgLy8gQmlnNSBoYXMgbWFueSB2YXJpYXRpb25zIGFuZCBpcyBhbiBleHRlbnNpb24gb2YgY3A5NTAuIFdlIHVzZSBFbmNvZGluZyBTdGFuZGFyZCdzIGFzIGEgY29uc2Vuc3VzLlxuICAgICdiaWc1JzogJ2JpZzVoa3NjcycsXG4gICAgJ2JpZzVoa3Njcyc6IHtcbiAgICAgICAgdHlwZTogJ19kYmNzJyxcbiAgICAgICAgdGFibGU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gcmVxdWlyZSgnLi90YWJsZXMvY3A5NTAuanNvbicpLmNvbmNhdChyZXF1aXJlKCcuL3RhYmxlcy9iaWc1LWFkZGVkLmpzb24nKSkgfSxcbiAgICAgICAgZW5jb2RlU2tpcFZhbHM6IFsweGEyY2NdLFxuICAgIH0sXG5cbiAgICAnY25iaWc1JzogJ2JpZzVoa3NjcycsXG4gICAgJ2NzYmlnNSc6ICdiaWc1aGtzY3MnLFxuICAgICd4eGJpZzUnOiAnYmlnNWhrc2NzJyxcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbnZhciBpY29udl9wYWNrYWdlO1xudmFyIEljb252O1xuXG50cnkge1xuICAgIC8vIHRoaXMgaXMgdG8gZm9vbCBicm93c2VyaWZ5IHNvIGl0IGRvZXNuJ3QgdHJ5IChpbiB2YWluKSB0byBpbnN0YWxsIGljb252LlxuICAgIGljb252X3BhY2thZ2UgPSAnaWNvbnYnO1xuICAgIEljb252ID0gcmVxdWlyZShpY29udl9wYWNrYWdlKS5JY29udjtcbn0gY2F0Y2ggKEUpIHtcbiAgICAvLyBub2RlLWljb252IG5vdCBwcmVzZW50XG59XG5cbm1vZHVsZS5leHBvcnRzID0gSWNvbnY7XG4iLCJmdW5jdGlvbiB3ZWJwYWNrRW1wdHlDb250ZXh0KHJlcSkge1xuXHR2YXIgZSA9IG5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIgKyByZXEgKyBcIidcIik7XG5cdGUuY29kZSA9ICdNT0RVTEVfTk9UX0ZPVU5EJztcblx0dGhyb3cgZTtcbn1cbndlYnBhY2tFbXB0eUNvbnRleHQua2V5cyA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH07XG53ZWJwYWNrRW1wdHlDb250ZXh0LnJlc29sdmUgPSB3ZWJwYWNrRW1wdHlDb250ZXh0O1xubW9kdWxlLmV4cG9ydHMgPSB3ZWJwYWNrRW1wdHlDb250ZXh0O1xud2VicGFja0VtcHR5Q29udGV4dC5pZCA9IDI2MjsiLCIndXNlIHN0cmljdCc7XG5cbnZhciBpc1N0cmVhbSA9IG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuXHRyZXR1cm4gc3RyZWFtICE9PSBudWxsICYmIHR5cGVvZiBzdHJlYW0gPT09ICdvYmplY3QnICYmIHR5cGVvZiBzdHJlYW0ucGlwZSA9PT0gJ2Z1bmN0aW9uJztcbn07XG5cbmlzU3RyZWFtLndyaXRhYmxlID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuXHRyZXR1cm4gaXNTdHJlYW0oc3RyZWFtKSAmJiBzdHJlYW0ud3JpdGFibGUgIT09IGZhbHNlICYmIHR5cGVvZiBzdHJlYW0uX3dyaXRlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBzdHJlYW0uX3dyaXRhYmxlU3RhdGUgPT09ICdvYmplY3QnO1xufTtcblxuaXNTdHJlYW0ucmVhZGFibGUgPSBmdW5jdGlvbiAoc3RyZWFtKSB7XG5cdHJldHVybiBpc1N0cmVhbShzdHJlYW0pICYmIHN0cmVhbS5yZWFkYWJsZSAhPT0gZmFsc2UgJiYgdHlwZW9mIHN0cmVhbS5fcmVhZCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc3RyZWFtLl9yZWFkYWJsZVN0YXRlID09PSAnb2JqZWN0Jztcbn07XG5cbmlzU3RyZWFtLmR1cGxleCA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcblx0cmV0dXJuIGlzU3RyZWFtLndyaXRhYmxlKHN0cmVhbSkgJiYgaXNTdHJlYW0ucmVhZGFibGUoc3RyZWFtKTtcbn07XG5cbmlzU3RyZWFtLnRyYW5zZm9ybSA9IGZ1bmN0aW9uIChzdHJlYW0pIHtcblx0cmV0dXJuIGlzU3RyZWFtLmR1cGxleChzdHJlYW0pICYmIHR5cGVvZiBzdHJlYW0uX3RyYW5zZm9ybSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Ygc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZSA9PT0gJ29iamVjdCc7XG59O1xuIiwiXG4vKipcbiAqIHJlc3BvbnNlLmpzXG4gKlxuICogUmVzcG9uc2UgY2xhc3MgcHJvdmlkZXMgY29udGVudCBkZWNvZGluZ1xuICovXG5cbnZhciBodHRwID0gcmVxdWlyZSgnaHR0cCcpO1xudmFyIEhlYWRlcnMgPSByZXF1aXJlKCcuL2hlYWRlcnMnKTtcbnZhciBCb2R5ID0gcmVxdWlyZSgnLi9ib2R5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVzcG9uc2U7XG5cbi8qKlxuICogUmVzcG9uc2UgY2xhc3NcbiAqXG4gKiBAcGFyYW0gICBTdHJlYW0gIGJvZHkgIFJlYWRhYmxlIHN0cmVhbVxuICogQHBhcmFtICAgT2JqZWN0ICBvcHRzICBSZXNwb25zZSBvcHRpb25zXG4gKiBAcmV0dXJuICBWb2lkXG4gKi9cbmZ1bmN0aW9uIFJlc3BvbnNlKGJvZHksIG9wdHMpIHtcblxuXHRvcHRzID0gb3B0cyB8fCB7fTtcblxuXHR0aGlzLnVybCA9IG9wdHMudXJsO1xuXHR0aGlzLnN0YXR1cyA9IG9wdHMuc3RhdHVzIHx8IDIwMDtcblx0dGhpcy5zdGF0dXNUZXh0ID0gb3B0cy5zdGF0dXNUZXh0IHx8IGh0dHAuU1RBVFVTX0NPREVTW3RoaXMuc3RhdHVzXTtcblx0dGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0cy5oZWFkZXJzKTtcblx0dGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMDtcblxuXHRCb2R5LmNhbGwodGhpcywgYm9keSwgb3B0cyk7XG5cbn1cblxuUmVzcG9uc2UucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb2R5LnByb3RvdHlwZSk7XG5cbi8qKlxuICogQ2xvbmUgdGhpcyByZXNwb25zZVxuICpcbiAqIEByZXR1cm4gIFJlc3BvbnNlXG4gKi9cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2Nsb25lKHRoaXMpLCB7XG5cdFx0dXJsOiB0aGlzLnVybFxuXHRcdCwgc3RhdHVzOiB0aGlzLnN0YXR1c1xuXHRcdCwgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0XG5cdFx0LCBoZWFkZXJzOiB0aGlzLmhlYWRlcnNcblx0XHQsIG9rOiB0aGlzLm9rXG5cdH0pO1xufTtcbiIsIlxuLyoqXG4gKiByZXF1ZXN0LmpzXG4gKlxuICogUmVxdWVzdCBjbGFzcyBjb250YWlucyBzZXJ2ZXIgb25seSBvcHRpb25zXG4gKi9cblxudmFyIHBhcnNlX3VybCA9IHJlcXVpcmUoJ3VybCcpLnBhcnNlO1xudmFyIEhlYWRlcnMgPSByZXF1aXJlKCcuL2hlYWRlcnMnKTtcbnZhciBCb2R5ID0gcmVxdWlyZSgnLi9ib2R5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVxdWVzdDtcblxuLyoqXG4gKiBSZXF1ZXN0IGNsYXNzXG4gKlxuICogQHBhcmFtICAgTWl4ZWQgICBpbnB1dCAgVXJsIG9yIFJlcXVlc3QgaW5zdGFuY2VcbiAqIEBwYXJhbSAgIE9iamVjdCAgaW5pdCAgIEN1c3RvbSBvcHRpb25zXG4gKiBAcmV0dXJuICBWb2lkXG4gKi9cbmZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIGluaXQpIHtcblx0dmFyIHVybCwgdXJsX3BhcnNlZDtcblxuXHQvLyBub3JtYWxpemUgaW5wdXRcblx0aWYgKCEoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuXHRcdHVybCA9IGlucHV0O1xuXHRcdHVybF9wYXJzZWQgPSBwYXJzZV91cmwodXJsKTtcblx0XHRpbnB1dCA9IHt9O1xuXHR9IGVsc2Uge1xuXHRcdHVybCA9IGlucHV0LnVybDtcblx0XHR1cmxfcGFyc2VkID0gcGFyc2VfdXJsKHVybCk7XG5cdH1cblxuXHQvLyBub3JtYWxpemUgaW5pdFxuXHRpbml0ID0gaW5pdCB8fCB7fTtcblxuXHQvLyBmZXRjaCBzcGVjIG9wdGlvbnNcblx0dGhpcy5tZXRob2QgPSBpbml0Lm1ldGhvZCB8fCBpbnB1dC5tZXRob2QgfHwgJ0dFVCc7XG5cdHRoaXMucmVkaXJlY3QgPSBpbml0LnJlZGlyZWN0IHx8IGlucHV0LnJlZGlyZWN0IHx8ICdmb2xsb3cnO1xuXHR0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbml0LmhlYWRlcnMgfHwgaW5wdXQuaGVhZGVycyB8fCB7fSk7XG5cdHRoaXMudXJsID0gdXJsO1xuXG5cdC8vIHNlcnZlciBvbmx5IG9wdGlvbnNcblx0dGhpcy5mb2xsb3cgPSBpbml0LmZvbGxvdyAhPT0gdW5kZWZpbmVkID9cblx0XHRpbml0LmZvbGxvdyA6IGlucHV0LmZvbGxvdyAhPT0gdW5kZWZpbmVkID9cblx0XHRpbnB1dC5mb2xsb3cgOiAyMDtcblx0dGhpcy5jb21wcmVzcyA9IGluaXQuY29tcHJlc3MgIT09IHVuZGVmaW5lZCA/XG5cdFx0aW5pdC5jb21wcmVzcyA6IGlucHV0LmNvbXByZXNzICE9PSB1bmRlZmluZWQgP1xuXHRcdGlucHV0LmNvbXByZXNzIDogdHJ1ZTtcblx0dGhpcy5jb3VudGVyID0gaW5pdC5jb3VudGVyIHx8IGlucHV0LmNvdW50ZXIgfHwgMDtcblx0dGhpcy5hZ2VudCA9IGluaXQuYWdlbnQgfHwgaW5wdXQuYWdlbnQ7XG5cblx0Qm9keS5jYWxsKHRoaXMsIGluaXQuYm9keSB8fCB0aGlzLl9jbG9uZShpbnB1dCksIHtcblx0XHR0aW1lb3V0OiBpbml0LnRpbWVvdXQgfHwgaW5wdXQudGltZW91dCB8fCAwLFxuXHRcdHNpemU6IGluaXQuc2l6ZSB8fCBpbnB1dC5zaXplIHx8IDBcblx0fSk7XG5cblx0Ly8gc2VydmVyIHJlcXVlc3Qgb3B0aW9uc1xuXHR0aGlzLnByb3RvY29sID0gdXJsX3BhcnNlZC5wcm90b2NvbDtcblx0dGhpcy5ob3N0bmFtZSA9IHVybF9wYXJzZWQuaG9zdG5hbWU7XG5cdHRoaXMucG9ydCA9IHVybF9wYXJzZWQucG9ydDtcblx0dGhpcy5wYXRoID0gdXJsX3BhcnNlZC5wYXRoO1xuXHR0aGlzLmF1dGggPSB1cmxfcGFyc2VkLmF1dGg7XG59XG5cblJlcXVlc3QucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShCb2R5LnByb3RvdHlwZSk7XG5cbi8qKlxuICogQ2xvbmUgdGhpcyByZXF1ZXN0XG4gKlxuICogQHJldHVybiAgUmVxdWVzdFxuICovXG5SZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuXHRyZXR1cm4gbmV3IFJlcXVlc3QodGhpcyk7XG59O1xuIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file From e92a15e072895f77afbc37351a7bfc482242c5b9 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Nov 2019 15:24:56 +0900 Subject: [PATCH 13/49] Add logs to find out if tests hang on website getting operational --- BTCPayServer.Tests/BTCPayServerTester.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/BTCPayServer.Tests/BTCPayServerTester.cs b/BTCPayServer.Tests/BTCPayServerTester.cs index 3f8e89b80..bbd71e3c8 100644 --- a/BTCPayServer.Tests/BTCPayServerTester.cs +++ b/BTCPayServer.Tests/BTCPayServerTester.cs @@ -230,9 +230,10 @@ namespace BTCPayServer.Tests rateProvider.Providers.Add("bittrex", bittrex); } - + Logs.Tester.LogInformation("Waiting site is operational..."); await WaitSiteIsOperational(); + Logs.Tester.LogInformation("Site is now operational"); } private async Task WaitSiteIsOperational() From c6bba9188b18f1f9d888c090f0bd08e46e40cfff Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Nov 2019 15:56:58 +0900 Subject: [PATCH 14/49] Improve error message for CanUsePosApp --- BTCPayServer.Tests/UnitTest1.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BTCPayServer.Tests/UnitTest1.cs b/BTCPayServer.Tests/UnitTest1.cs index caf8fa5fb..0bb424d2e 100644 --- a/BTCPayServer.Tests/UnitTest1.cs +++ b/BTCPayServer.Tests/UnitTest1.cs @@ -2021,7 +2021,7 @@ noninventoryitem: //verify invoices where created invoices = user.BitPay.GetInvoices(); Assert.Equal(2, invoices.Count(invoice => invoice.ItemCode.Equals("noninventoryitem"))); - var inventoryItemInvoice = invoices.SingleOrDefault(invoice => invoice.ItemCode.Equals("inventoryitem")); + var inventoryItemInvoice = Assert.Single(invoices.Where(invoice => invoice.ItemCode.Equals("inventoryitem"))); Assert.NotNull(inventoryItemInvoice); //let's mark the inventoryitem invoice as invalid, thsi should return the item to back in stock From 92bdb20e1cb9fe00a4233a3309ff971262b223c2 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Nov 2019 16:04:47 +0900 Subject: [PATCH 15/49] Add new sponsor --- BTCPayServer/Views/Account/_WelcomeLayout.cshtml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml b/BTCPayServer/Views/Account/_WelcomeLayout.cshtml index 124f1af0b..0dc5c3dec 100644 --- a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml +++ b/BTCPayServer/Views/Account/_WelcomeLayout.cshtml @@ -80,7 +80,15 @@ Square Crypto -
+
+ + Sponsor DG lab + +
+ DG Lab +
+
+
Sponsor ACINQ From e6505040e00257c1dda37ed0a5b246bf11a53496 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Nov 2019 16:06:41 +0900 Subject: [PATCH 16/49] Missing svg --- BTCPayServer/wwwroot/img/dglab.svg | 2901 ++++++++++++++++++++++++++++ 1 file changed, 2901 insertions(+) create mode 100644 BTCPayServer/wwwroot/img/dglab.svg diff --git a/BTCPayServer/wwwroot/img/dglab.svg b/BTCPayServer/wwwroot/img/dglab.svg new file mode 100644 index 000000000..6fe2a3c49 --- /dev/null +++ b/BTCPayServer/wwwroot/img/dglab.svg @@ -0,0 +1,2901 @@ + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + 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 +wztpi62xxLsXYklpsGlEQ+Vbja2hmhtLqWl3LyXKjI3rlzUyZORKm+qm8G6f0T637LuaVK850TYu +sZILzVzvJQmmZM9av0kX5t3Vqcg/Tt7LjAqxvsvCUnXqRT87M3aS1Cm8dBmx8Apn6lQuPEnXTN0t +EiTX8NKeKRsqzHsNoZDfE91SLZ6SjncyK75oTjz2qb0bFKua4d1YJWnr2M/JSaJJOt19dDk2SDST +ZGVCwpvY0fAkXberfSQrnMNDn9A5hrYhPc1NNMq/Blv0tDSZoyoe6SPUHlkodK7X0G6qFLSY2xM0 +dsZyV1Rz89WkjnbOXDmsHGbPPtJw5kw+aKyR7NFp1Qie61r3XddWsK6FRnWtEuxRq6KqkQmW6qR1 +u+91vqxMQQ9my5d1OR+FQyUrIVudfSVjvvvciOik952nUD50Ryn1Yae6IPpKiEzQVUM1e1JcVGg3 +dS2xuh+Vpegjh9DsjnqEiC4xHyb8jyRLx00Piy0SWp1uCI1T5ftL1zJOZn/p3wnSQYlGxk+fRWT8 +3EfaI0M+SdNRg5SmytBhdUl55v4ui229VyTpCpYxzWfMGTrdjDlYx1mWCCWvFqyZ7MWF0k4dzo8H +7/IFEw1lKj8mrePuRXJlLLu6+o6GOnekxw7vvbwUwqrllZt1ZPqTh5W2Oeu9DEvS59u1JJ15iSTp +ylXa7fnwnsay//c0ouRrTq6/Mqk7im5+PgiPVjTDRKk6yvJ+d9Cw/rbq8FWHde6/Hv6IM4OSLaXR +WB2tabH6+rQ+ljGPTOudJKeDv7FL3Txml5NGdEepadrR0e263I67w3xqXeuqbsK+tUu6ZnscSbJX +/tCatexx7BKrVWOX1I6NSewO39nWDiN7b8wlreOt7HN8x9/UZO+Xr/Sqfg11elJ3R025zE+76Sa2 +kZ9/B92YeccVWWaK70SZ5ktj4vlWlLe0q8+t6DjKZ9qULI9X91wIpzS+9NWlkY0UEWHa57D8V043 +n4nrapM0jtWE6CjzzEvKt6apNd9Ok+ZbX2OHsicb+kivrpSPKh3d5lLOB9WM505XJnhcGn3YS9FB +r3sv1YRGzIfRVPVsrbPKpMmplKR6mOuVVkSStaNKbVZliUdSHz9ZmtQrm7WxlE3qw777ljqptJNd +Uocl9VGb1JFdsJAIweFzDj3tBqXwIDtMuxviiN1J4fGkMjFas2So1pbuql4nxYPGRg== + + + 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 +dS3zwbYN+7hGr63b1bCPV3trtRJHet1qm41eMZbY7u2YK+MFMa8SiHgJIOZlgRFiXgiIuTH2LCu4 +aZvEFwshUmtlxwY3bdMqjVXei+v0nGV3qMiOFuf5Pd++bdnxNq112vaXHZ96xrVz/jxvmzQNRLxS +IOJFQsxLBJIHPDDiAh/owQFiXjQQ8RpBxKsAMf7xTnuxnC6hqUN9XYmqA5EqqRh3lTnW11a5ZdM5 +m86edM6ms71WbFuF6JgxsCNezOOJjaFyprJxvh43eWK93VXWv3SlEqv0bjyzvxadxRM7a7EdK3mw +7TX6r2GbbNdi/Yi12tTSx7VaOf2xT70Va7HWp05CzOsBKBDxIlUg5pUDEmJeD4h5VSDmlYPvemX1 +GSt9K6/pzum3Svy032St9BsdYyaatXcNW13H2uOLq/TVbCrbtS3Sx46t5tfZbmVvkjq2stsmPU7a +VFoNW+GOFNsqHTNN+9iWpfXo3fPiLO0/dem+edcP/ZitbWkxU6w5Z3kzfVmnZqeGbVrXbqtl1+67 +3f6nvB8/f/x6q70b9rkVy9am9Egzde+Jq/QtX+8Y1jtX7Fi2xRPXygnFnrZae3F79804d639Oc85 +KabUTpxxnu2PraU23+t44u/Glv6VjS2uFc/ctuJbnVqc7Te+udqJ22Kc76QWT/yW44l+OaE48c9M +vzO1mM7OP39S/8aTfmc7M+Z4Ys6cUKw+s/U66f+s9i31jNvSSnGl02m21p3jiXQ6JxRndce03ovp +13zdUkzt/Ystnjjn+1Z27JkvvfnevvQ+ztWrT9mxurvFPt9e7/v+s2PG+OvtSO/8at2d3ok/y67d ++L7/vJ3fccWS2nqx03tnvnTinvW23/fPHE9sTijiWt/KjhdT2rOddlfaM99bLa305sbe9FKfNmNK +/XquTnHunrUxzvWf+qw3v/U57aTVOZ5YKScUv11iOuv0e/3xpS3belPc9+LP9/Gk9HY7xxP7c1fb +lLrbxm+d2nz/La63p3fGOVtKOaFoaaUX14uvpY5t2zyzxZfO/vz37z+euCfF2DmeON3+czzRr3NM +Mrc6xxOztTfXr/84W2rpnY4dT5/W77z4s1t3Oi2+Xus/vjZ/37bUZ7tXWt193lo5nki7cW5qcd+3 +37MtfqfdnW9fjLN9e/Od1bPFdFZLvTPOln7F/rNprT279nRLe1Z/TC/HEx07JxRvnX9fUlz7/r+9 +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 +oTpQBxjCdV9Hy/s+KSGq205dp/K0vJLYsXAuFha3UWQu5E5c2K1CQIEnlsvzeIgQ9+mDAJErtven +FqK6rWRKqUAPAQWGnSjsRFzIgTpVa8WBGysvBF2m/7BR4lIf98HDTvRxHzxVMnkqkJRNAD/uAwlk +WWRCUuaZOtG1eOWFoeehuOWdOHVMyr7UB4juxAr5OpXLJGxhSZl0IQgPlar7WJ+XhZVqAVMsLuXz +PNVH1UJRx+JUJSGq2zoTi1NxpfhB+y7LS7F0XwTRqVorzxRbKZUJDFmpr/V1H7wWGHYg2NGpStwm +NKVAmThh5PNU3if0WiLSO+mU+kJfKFKpXB8hHS4tW1LPgCC6MHaslCp0eQ1yKRUXUyGLQ0XrIR2q +7kO3xRBhSsW5LkQWViquQq8FeiYwpeJkqnW6pIxr2Rm6WqGLhMYWsBuJOUQjhl/H6sKQU33Elivs +RHFDCWowwgExI0RgAh6MMAMdaMiIJp7Ww5QqVeLC1MkjhiC6k9h9JdE9pEMDjKfUxxJDmFjdx7VA +FveFMYd0nFidqhS7kFN5YKrl8j6WGLo8F5PHcomn6F764uOnX1Ng/LoW14o5pCN6jKeP80rhx8U8 +a7WkDNuQskw/pCPLZB5DFCKFYGrzlLxn7HXeTB/TSr2vzbnWW6utfrNn23/fY5wcT8x/215MvW91 +LDs6tT5rvf0dL71U5ra5fq12Xix9VmyfvsWzzqd2/s9Z7bUWiHm1IJY6DJno9Dme+JQ+xxO75+cs +O777d8b9l077tKd194Qi7cey4tm52vnXMab55p/t+LrPW7069To/33zzte34fT6duT7++27nt9t3 +bGe189pZ58+/+N4pu3364+yWvr9zTDL/7bTdYotr18/9FH+7rRnbe29ueu29HE+8lxOK99r5jbG1 +/3bO6nRar+1+58y4r532zls5nuiVY5LheKL9r+9tv2218753vjLjrrRrrt34ejdu/7aUYo4nNktJ +9IhBQgtEvDLRMVMJ1oobTCWYA0YwIj7W4hGhBiKUUAMRSvB4ZsuujynF1V6LKb703y9t+/jdckLR +5p+O6WeKp8x/6+1rK/761+Lq/rLvzH2/cVe/FM9/nAOg2tGIVEhc1xcVWhUyFA4M48IGR4XsonDM +CxscFTIsQzcq5nSJOEfIGdEN1SEeMFpCPLSAG74lxMNFhnlkOFjghhBZAjc8ScXzGWby+RCoQSMP +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 +xMQ+eVOe6HPKrCcSks6kItotkookKhYMQ/NxjDlCVLrtYTWgj4PmBRCwNxefY6eAmAcXVrf5vFLL +X2ghPQaUm29iiWgZx3N4RLdVMCQRFBkNVsOAF1gmGoxcD6kLX3Vbt0nnKLrV5QKZ3mw0EY4mjAbR +8k2EHZI4EU5MGI1/Sh43CDUciKbjHnaa8uQNwMtYsaggAFH5qVAE2qTGhbALTKDVVAcy81agftKn +R5+w2+IigBNmICCXBzT2cTwhfdyxwWo0QCmWz6tDVfRkLRTpNbkQQwcNA1NARwAyPcs3IWuliTCb +Z9Tpuq7bYDHWRQAsJGgN2GhRo8HGWAMWY13AaqwGDAAsWmwbYRQTrJEBBEX1zttzNm5/v25lzwcb +dF6fc+Zs++lTd1ffKuet3S/tZ3f8jfuXUnfpm8vrnU7xlHhmt/PmLKvtnG+1eGLbsuLHFlucbzv+ +in+KJvV56b1+L7Y5v7z3G9TvfWovztdKbB+0jyvta2l1ainN9GmWfjdXw3queNq21b70/I2zvfVt +fYlxvtVma9tlxn+x/YnvlBV7Z3qfzoolvtRxxvjzi3BnOnvOxlVa+9vGzltxrm9t9w== + + + bHz752tr257Se16c8efa8xv42sbV5V/alMrbc9vgb3ktvrjbYpc3f+P7M7V/G18rv77P2bCz6b2Y +5qdUUppnbSrtzLje7A82bO3pNc/alU63cubfXI8txt0V3/yTYitn/YbP3Bfnm22dctJ/jClt3DLP +z9uG3sa2bb0+u0p8fXPd7q5f3VJqZbX9FX++t2bZ/Q2L8f/0irN1+bM6tp1p9ulu7fyKJa3X5lvv +Jvo7Hz/Ost6fs+3jiq2k/Zto23y+PR+/39uf728u77+33un3m+LqVdKe7n4ntZlKt/PnlPUxxTNn +xxhXeJ1+RZvG38b259/bVT7+z/l+z0ml7Wln++yuk1a39Kedned0WX2KnnrTWmVT3zY0N84VV8c9 +P+fq/f75c9Mqq7v7tPXplBnn2rfmrpPO7A36T8fdm0aeGGenffHN9NavMzvOLjO29VaJ8Ve31PrT +eu20ua3FkuLG/bVtU9m+uRpe/7+zbIqzzWB2z/1e63fb/8117b0UX9pw/DS3zTbP/sZ0enG+9lZa +ZaWz77VdvV2+z03UqN42Tyx7iub3rP/utnq1Wfb9m2mm92um9PGlU07rYAPPpvOzrPj9N9dTm/O3 +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 + + + From a9de1c2c642c880a0c868ed5cea15bb8f0b0c6e3 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Nov 2019 17:37:57 +0900 Subject: [PATCH 17/49] Add link to foundation website --- BTCPayServer/Views/Account/_WelcomeLayout.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml b/BTCPayServer/Views/Account/_WelcomeLayout.cshtml index 0dc5c3dec..369cfcc6c 100644 --- a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml +++ b/BTCPayServer/Views/Account/_WelcomeLayout.cshtml @@ -71,7 +71,7 @@

-

Our supporters

+

Our supporters

Sponsor Square Crypto From 9bafce806949e66dc91d74bdb37da85a1c9e794a Mon Sep 17 00:00:00 2001 From: pavlenex Date: Wed, 13 Nov 2019 10:38:31 +0100 Subject: [PATCH 18/49] Add DG Labs logo to readme --- README.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6dfca4db7..05cbfb772 100644 --- a/README.md +++ b/README.md @@ -146,10 +146,17 @@ The BTCPay Server Project is proudly supported by these entities through the [BT - Sponsor Square Crypto + Square Crypto
Square Crypto
+ + + + DG Lab +
+ DG Lab +
From 89353b8e7cf356f37652533a7fa5b538ebf5c471 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Wed, 13 Nov 2019 18:50:04 +0900 Subject: [PATCH 19/49] Remove svg trash --- BTCPayServer/wwwroot/img/dglab.svg | 2886 +--------------------------- 1 file changed, 4 insertions(+), 2882 deletions(-) diff --git a/BTCPayServer/wwwroot/img/dglab.svg b/BTCPayServer/wwwroot/img/dglab.svg index 6fe2a3c49..5b8d90779 100644 --- a/BTCPayServer/wwwroot/img/dglab.svg +++ b/BTCPayServer/wwwroot/img/dglab.svg @@ -1,30 +1,13 @@ - - - - - - - - -]> - + - - - - - - - + - - - - - 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 -wztpi62xxLsXYklpsGlEQ+Vbja2hmhtLqWl3LyXKjI3rlzUyZORKm+qm8G6f0T637LuaVK850TYu -sZILzVzvJQmmZM9av0kX5t3Vqcg/Tt7LjAqxvsvCUnXqRT87M3aS1Cm8dBmx8Apn6lQuPEnXTN0t -EiTX8NKeKRsqzHsNoZDfE91SLZ6SjncyK75oTjz2qb0bFKua4d1YJWnr2M/JSaJJOt19dDk2SDST -ZGVCwpvY0fAkXberfSQrnMNDn9A5hrYhPc1NNMq/Blv0tDSZoyoe6SPUHlkodK7X0G6qFLSY2xM0 -dsZyV1Rz89WkjnbOXDmsHGbPPtJw5kw+aKyR7NFp1Qie61r3XddWsK6FRnWtEuxRq6KqkQmW6qR1 -u+91vqxMQQ9my5d1OR+FQyUrIVudfSVjvvvciOik952nUD50Ryn1Yae6IPpKiEzQVUM1e1JcVGg3 -dS2xuh+Vpegjh9DsjnqEiC4xHyb8jyRLx00Piy0SWp1uCI1T5ftL1zJOZn/p3wnSQYlGxk+fRWT8 -3EfaI0M+SdNRg5SmytBhdUl55v4ui229VyTpCpYxzWfMGTrdjDlYx1mWCCWvFqyZ7MWF0k4dzo8H -7/IFEw1lKj8mrePuRXJlLLu6+o6GOnekxw7vvbwUwqrllZt1ZPqTh5W2Oeu9DEvS59u1JJ15iSTp -ylXa7fnwnsay//c0ouRrTq6/Mqk7im5+PgiPVjTDRKk6yvJ+d9Cw/rbq8FWHde6/Hv6IM4OSLaXR -WB2tabH6+rQ+ljGPTOudJKeDv7FL3Txml5NGdEepadrR0e263I67w3xqXeuqbsK+tUu6ZnscSbJX -/tCatexx7BKrVWOX1I6NSewO39nWDiN7b8wlreOt7HN8x9/UZO+Xr/Sqfg11elJ3R025zE+76Sa2 -kZ9/B92YeccVWWaK70SZ5ktj4vlWlLe0q8+t6DjKZ9qULI9X91wIpzS+9NWlkY0UEWHa57D8V043 -n4nrapM0jtWE6CjzzEvKt6apNd9Ok+ZbX2OHsicb+kivrpSPKh3d5lLOB9WM505XJnhcGn3YS9FB -r3sv1YRGzIfRVPVsrbPKpMmplKR6mOuVVkSStaNKbVZliUdSHz9ZmtQrm7WxlE3qw777ljqptJNd -Uocl9VGb1JFdsJAIweFzDj3tBqXwIDtMuxviiN1J4fGkMjFas2So1pbuql4nxYPGRg== - - - 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 -dS3zwbYN+7hGr63b1bCPV3trtRJHet1qm41eMZbY7u2YK+MFMa8SiHgJIOZlgRFiXgiIuTH2LCu4 -aZvEFwshUmtlxwY3bdMqjVXei+v0nGV3qMiOFuf5Pd++bdnxNq112vaXHZ96xrVz/jxvmzQNRLxS -IOJFQsxLBJIHPDDiAh/owQFiXjQQ8RpBxKsAMf7xTnuxnC6hqUN9XYmqA5EqqRh3lTnW11a5ZdM5 -m86edM6ms71WbFuF6JgxsCNezOOJjaFyprJxvh43eWK93VXWv3SlEqv0bjyzvxadxRM7a7EdK3mw -7TX6r2GbbNdi/Yi12tTSx7VaOf2xT70Va7HWp05CzOsBKBDxIlUg5pUDEmJeD4h5VSDmlYPvemX1 -GSt9K6/pzum3Svy032St9BsdYyaatXcNW13H2uOLq/TVbCrbtS3Sx46t5tfZbmVvkjq2stsmPU7a -VFoNW+GOFNsqHTNN+9iWpfXo3fPiLO0/dem+edcP/ZitbWkxU6w5Z3kzfVmnZqeGbVrXbqtl1+67 -3f6nvB8/f/x6q70b9rkVy9am9Egzde+Jq/QtX+8Y1jtX7Fi2xRPXygnFnrZae3F79804d639Oc85 -KabUTpxxnu2PraU23+t44u/Glv6VjS2uFc/ctuJbnVqc7Te+udqJ22Kc76QWT/yW44l+OaE48c9M -vzO1mM7OP39S/8aTfmc7M+Z4Ys6cUKw+s/U66f+s9i31jNvSSnGl02m21p3jiXQ6JxRndce03ovp -13zdUkzt/Ystnjjn+1Z27JkvvfnevvQ+ztWrT9mxurvFPt9e7/v+s2PG+OvtSO/8at2d3ok/y67d -+L7/vJ3fccWS2nqx03tnvnTinvW23/fPHE9sTijiWt/KjhdT2rOddlfaM99bLa305sbe9FKfNmNK -/XquTnHunrUxzvWf+qw3v/U57aTVOZ5YKScUv11iOuv0e/3xpS3belPc9+LP9/Gk9HY7xxP7c1fb -lLrbxm+d2nz/La63p3fGOVtKOaFoaaUX14uvpY5t2zyzxZfO/vz37z+euCfF2DmeON3+czzRr3NM -Mrc6xxOztTfXr/84W2rpnY4dT5/W77z4s1t3Oi2+Xus/vjZ/37bUZ7tXWt193lo5nki7cW5qcd+3 -37MtfqfdnW9fjLN9e/Od1bPFdFZLvTPOln7F/rNprT279nRLe1Z/TC/HEx07JxRvnX9fUlz7/r+9 -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 -oTpQBxjCdV9Hy/s+KSGq205dp/K0vJLYsXAuFha3UWQu5E5c2K1CQIEnlsvzeIgQ9+mDAJErtven -FqK6rWRKqUAPAQWGnSjsRFzIgTpVa8WBGysvBF2m/7BR4lIf98HDTvRxHzxVMnkqkJRNAD/uAwlk -WWRCUuaZOtG1eOWFoeehuOWdOHVMyr7UB4juxAr5OpXLJGxhSZl0IQgPlar7WJ+XhZVqAVMsLuXz -PNVH1UJRx+JUJSGq2zoTi1NxpfhB+y7LS7F0XwTRqVorzxRbKZUJDFmpr/V1H7wWGHYg2NGpStwm -NKVAmThh5PNU3if0WiLSO+mU+kJfKFKpXB8hHS4tW1LPgCC6MHaslCp0eQ1yKRUXUyGLQ0XrIR2q -7kO3xRBhSsW5LkQWViquQq8FeiYwpeJkqnW6pIxr2Rm6WqGLhMYWsBuJOUQjhl/H6sKQU33Elivs -RHFDCWowwgExI0RgAh6MMAMdaMiIJp7Ww5QqVeLC1MkjhiC6k9h9JdE9pEMDjKfUxxJDmFjdx7VA -FveFMYd0nFidqhS7kFN5YKrl8j6WGLo8F5PHcomn6F764uOnX1Ng/LoW14o5pCN6jKeP80rhx8U8 -a7WkDNuQskw/pCPLZB5DFCKFYGrzlLxn7HXeTB/TSr2vzbnWW6utfrNn23/fY5wcT8x/215MvW91 -LDs6tT5rvf0dL71U5ra5fq12Xix9VmyfvsWzzqd2/s9Z7bUWiHm1IJY6DJno9Dme+JQ+xxO75+cs -O777d8b9l077tKd194Qi7cey4tm52vnXMab55p/t+LrPW7069To/33zzte34fT6duT7++27nt9t3 -bGe189pZ58+/+N4pu3364+yWvr9zTDL/7bTdYotr18/9FH+7rRnbe29ueu29HE+8lxOK99r5jbG1 -/3bO6nRar+1+58y4r532zls5nuiVY5LheKL9r+9tv2218753vjLjrrRrrt34ejdu/7aUYo4nNktJ -9IhBQgtEvDLRMVMJ1oobTCWYA0YwIj7W4hGhBiKUUAMRSvB4ZsuujynF1V6LKb703y9t+/jdckLR -5p+O6WeKp8x/6+1rK/761+Lq/rLvzH2/cVe/FM9/nAOg2tGIVEhc1xcVWhUyFA4M48IGR4XsonDM -CxscFTIsQzcq5nSJOEfIGdEN1SEeMFpCPLSAG74lxMNFhnlkOFjghhBZAjc8ScXzGWby+RCoQSMP -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 -xMQ+eVOe6HPKrCcSks6kItotkookKhYMQ/NxjDlCVLrtYTWgj4PmBRCwNxefY6eAmAcXVrf5vFLL -X2ghPQaUm29iiWgZx3N4RLdVMCQRFBkNVsOAF1gmGoxcD6kLX3Vbt0nnKLrV5QKZ3mw0EY4mjAbR -8k2EHZI4EU5MGI1/Sh43CDUciKbjHnaa8uQNwMtYsaggAFH5qVAE2qTGhbALTKDVVAcy81agftKn -R5+w2+IigBNmICCXBzT2cTwhfdyxwWo0QCmWz6tDVfRkLRTpNbkQQwcNA1NARwAyPcs3IWuliTCb -Z9Tpuq7bYDHWRQAsJGgN2GhRo8HGWAMWY13AaqwGDAAsWmwbYRQTrJEBBEX1zttzNm5/v25lzwcb -dF6fc+Zs++lTd1ffKuet3S/tZ3f8jfuXUnfpm8vrnU7xlHhmt/PmLKvtnG+1eGLbsuLHFlucbzv+ -in+KJvV56b1+L7Y5v7z3G9TvfWovztdKbB+0jyvta2l1ainN9GmWfjdXw3queNq21b70/I2zvfVt -fYlxvtVma9tlxn+x/YnvlBV7Z3qfzoolvtRxxvjzi3BnOnvOxlVa+9vGzltxrm9t9w== - - - bHz752tr257Se16c8efa8xv42sbV5V/alMrbc9vgb3ktvrjbYpc3f+P7M7V/G18rv77P2bCz6b2Y -5qdUUppnbSrtzLje7A82bO3pNc/alU63cubfXI8txt0V3/yTYitn/YbP3Bfnm22dctJ/jClt3DLP -z9uG3sa2bb0+u0p8fXPd7q5f3VJqZbX9FX++t2bZ/Q2L8f/0irN1+bM6tp1p9ulu7fyKJa3X5lvv -Jvo7Hz/Ost6fs+3jiq2k/Zto23y+PR+/39uf728u77+33un3m+LqVdKe7n4ntZlKt/PnlPUxxTNn -xxhXeJ1+RZvG38b259/bVT7+z/l+z0ml7Wln++yuk1a39Kedned0WX2KnnrTWmVT3zY0N84VV8c9 -P+fq/f75c9Mqq7v7tPXplBnn2rfmrpPO7A36T8fdm0aeGGenffHN9NavMzvOLjO29VaJ8Ve31PrT -eu20ua3FkuLG/bVtU9m+uRpe/7+zbIqzzWB2z/1e63fb/8117b0UX9pw/DS3zTbP/sZ0enG+9lZa -ZaWz77VdvV2+z03UqN42Tyx7iub3rP/utnq1Wfb9m2mm92um9PGlU07rYAPPpvOzrPj9N9dTm/O3 -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 - - From 9e31154808ed5aa04f900955fa99cc9d45455006 Mon Sep 17 00:00:00 2001 From: Umar Bolatov Date: Wed, 13 Nov 2019 18:35:45 -0800 Subject: [PATCH 20/49] Improve mobile view on new welcome layout fix #1155 --- .../Views/Account/_WelcomeLayout.cshtml | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml b/BTCPayServer/Views/Account/_WelcomeLayout.cshtml index 369cfcc6c..2b22336f1 100644 --- a/BTCPayServer/Views/Account/_WelcomeLayout.cshtml +++ b/BTCPayServer/Views/Account/_WelcomeLayout.cshtml @@ -9,28 +9,62 @@ -
+
From c7da4e3eff4f747b56bb76b1bc7a6432596eca32 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 14 Nov 2019 17:14:08 +0900 Subject: [PATCH 21/49] Add TestTimeouts --- BTCPayServer.Tests/CrowdfundTests.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/BTCPayServer.Tests/CrowdfundTests.cs b/BTCPayServer.Tests/CrowdfundTests.cs index 2e526e424..f00fe5576 100644 --- a/BTCPayServer.Tests/CrowdfundTests.cs +++ b/BTCPayServer.Tests/CrowdfundTests.cs @@ -35,7 +35,7 @@ namespace BTCPayServer.Tests Logs.LogProvider = new XUnitLogProvider(helper); } - [Fact] + [Fact(Timeout = TestTimeout)] [Trait("Integration", "Integration")] public async Task CanCreateAndDeleteCrowdfundApp() { @@ -75,7 +75,7 @@ namespace BTCPayServer.Tests - [Fact] + [Fact(Timeout = TestTimeout)] [Trait("Integration", "Integration")] public async Task CanContributeOnlyWhenAllowed() { @@ -167,7 +167,7 @@ namespace BTCPayServer.Tests } } - [Fact] + [Fact(Timeout = TestTimeout)] [Trait("Integration", "Integration")] public async Task CanComputeCrowdfundModel() { From 6900964c03e823c740169d8198cdff2600453d06 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 14 Nov 2019 18:49:04 +0900 Subject: [PATCH 22/49] Fix debug log not showing (Fix #1157) --- .../Configuration/BTCPayServerOptions.cs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/BTCPayServer/Configuration/BTCPayServerOptions.cs b/BTCPayServer/Configuration/BTCPayServerOptions.cs index 438168473..47cfbc801 100644 --- a/BTCPayServer/Configuration/BTCPayServerOptions.cs +++ b/BTCPayServer/Configuration/BTCPayServerOptions.cs @@ -58,7 +58,16 @@ namespace BTCPayServer.Configuration public static string GetDebugLog(IConfiguration configuration) { - return configuration.GetValue("debuglog", null); + var logfile = configuration.GetValue("debuglog", null); + if (!string.IsNullOrEmpty(logfile)) + { + if (!Path.IsPathRooted(logfile)) + { + var networkType = DefaultConfiguration.GetNetworkType(configuration); + logfile = Path.Combine(configuration.GetDataDir(networkType), logfile); + } + } + return logfile; } public static LogEventLevel GetDebugLogLevel(IConfiguration configuration) { @@ -207,11 +216,6 @@ namespace BTCPayServer.Configuration LogFile = GetDebugLog(conf); if (!string.IsNullOrEmpty(LogFile)) - { - if (!Path.IsPathRooted(LogFile)) - LogFile = Path.Combine(DataDir, LogFile); - } - if (!string.IsNullOrEmpty(LogFile)) { Logs.Configuration.LogInformation("LogFile: " + LogFile); Logs.Configuration.LogInformation("Log Level: " + GetDebugLogLevel(conf)); From bcb85e20841050bb32c064ae477fb098031c824d Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 14 Nov 2019 20:55:18 +0900 Subject: [PATCH 23/49] Errors not working in PointOfSale (#1141) --- .../Controllers/AppsPublicController.cs | 51 ++++++++++++------- .../Views/AppsPublic/ViewPointOfSale.cshtml | 4 ++ 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/BTCPayServer/Controllers/AppsPublicController.cs b/BTCPayServer/Controllers/AppsPublicController.cs index adf4ee1d1..f4f5d46b1 100644 --- a/BTCPayServer/Controllers/AppsPublicController.cs +++ b/BTCPayServer/Controllers/AppsPublicController.cs @@ -165,26 +165,39 @@ namespace BTCPayServer.Controllers } } var store = await _AppService.GetStore(app); - var invoice = await _InvoiceController.CreateInvoiceCore(new CreateInvoiceRequest() + try { - ItemCode = choice?.Id, - ItemDesc = title, - Currency = settings.Currency, - Price = price, - BuyerEmail = email, - OrderId = orderId, - NotificationURL = - string.IsNullOrEmpty(notificationUrl) ? settings.NotificationUrl : notificationUrl, - NotificationEmail = settings.NotificationEmail, - RedirectURL = redirectUrl ?? Request.GetDisplayUrl(), - FullNotifications = true, - ExtendedNotifications = true, - PosData = string.IsNullOrEmpty(posData) ? null : posData, - RedirectAutomatically = settings.RedirectAutomatically, - }, store, HttpContext.Request.GetAbsoluteRoot(), - new List() { AppService.GetAppInternalTag(appId) }, - cancellationToken); - return RedirectToAction(nameof(InvoiceController.Checkout), "Invoice", new { invoiceId = invoice.Data.Id }); + var invoice = await _InvoiceController.CreateInvoiceCore(new CreateInvoiceRequest() + { + ItemCode = choice?.Id, + ItemDesc = title, + Currency = settings.Currency, + Price = price, + BuyerEmail = email, + OrderId = orderId, + NotificationURL = + string.IsNullOrEmpty(notificationUrl) ? settings.NotificationUrl : notificationUrl, + NotificationEmail = settings.NotificationEmail, + RedirectURL = redirectUrl ?? Request.GetDisplayUrl(), + FullNotifications = true, + ExtendedNotifications = true, + PosData = string.IsNullOrEmpty(posData) ? null : posData, + RedirectAutomatically = settings.RedirectAutomatically, + }, store, HttpContext.Request.GetAbsoluteRoot(), + new List() { AppService.GetAppInternalTag(appId) }, + cancellationToken); + return RedirectToAction(nameof(InvoiceController.Checkout), "Invoice", new { invoiceId = invoice.Data.Id }); + } + catch (BitpayHttpException e) + { + TempData.SetStatusMessageModel(new StatusMessageModel() + { + Html = e.Message.Replace("\n", "
", StringComparison.OrdinalIgnoreCase), + Severity = StatusMessageModel.StatusSeverity.Error, + AllowDismiss = true + }); + return RedirectToAction(nameof(ViewPointOfSale), new { appId = appId }); + } } [HttpGet] diff --git a/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml b/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml index ba25d7eb9..732253a20 100644 --- a/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml +++ b/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml @@ -185,6 +185,10 @@ + @if (this.TempData.HasStatusMessage()) + { + + } @if (Model.EnableShoppingCart) { From 57a69495659262a20d8317b071816df69262edfc Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Thu, 14 Nov 2019 21:13:41 +0900 Subject: [PATCH 24/49] Fix View app on Crowdfunding (#1141) --- .../Controllers/AppsController.Crowdfund.cs | 27 ++++++++++++------- .../Views/Apps/UpdateCrowdfund.cshtml | 4 +-- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/BTCPayServer/Controllers/AppsController.Crowdfund.cs b/BTCPayServer/Controllers/AppsController.Crowdfund.cs index 267d26f46..c352c6e29 100644 --- a/BTCPayServer/Controllers/AppsController.Crowdfund.cs +++ b/BTCPayServer/Controllers/AppsController.Crowdfund.cs @@ -68,7 +68,7 @@ namespace BTCPayServer.Controllers } [HttpPost] [Route("{appId}/settings/crowdfund")] - public async Task UpdateCrowdfund(string appId, UpdateCrowdfundViewModel vm) + public async Task UpdateCrowdfund(string appId, UpdateCrowdfundViewModel vm, string command = null) { if (!string.IsNullOrEmpty( vm.TargetCurrency) && _currencies.GetCurrencyData(vm.TargetCurrency, false) == null) ModelState.AddModelError(nameof(vm.TargetCurrency), "Invalid currency"); @@ -156,16 +156,25 @@ namespace BTCPayServer.Controllers app.TagAllInvoices = vm.UseAllStoreInvoices; app.SetSettings(newSettings); - await _AppService.UpdateOrCreateApp(app); - _EventAggregator.Publish(new AppUpdated() + if (command == "save") { - AppId = appId, - StoreId = app.StoreDataId, - Settings = newSettings - }); - TempData[WellKnownTempData.SuccessMessage] = "App updated"; - return RedirectToAction(nameof(UpdateCrowdfund), new {appId}); + await _AppService.UpdateOrCreateApp(app); + + _EventAggregator.Publish(new AppUpdated() + { + AppId = appId, + StoreId = app.StoreDataId, + Settings = newSettings + }); + TempData[WellKnownTempData.SuccessMessage] = "App updated"; + return RedirectToAction(nameof(UpdateCrowdfund), new { appId }); + } + else if (command == "viewapp") + { + return RedirectToAction(nameof(AppsPublicController.ViewCrowdfund), "AppsPublic", new { appId }); + } + return NotFound(); } } } diff --git a/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml b/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml index 06430ea86..ef6d272b7 100644 --- a/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml +++ b/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml @@ -215,9 +215,9 @@
From fdc1aa25e43674234ba29b75c44aac12008e3d54 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Sat, 26 Oct 2019 21:20:39 +0200 Subject: [PATCH 25/49] Use variable based bootstrap and creativestart fix --- .../HostedServices/CssThemeManager.cs | 20 +- BTCPayServer/Services/ThemesSettings.cs | 5 + .../Views/AppsPublic/ViewCrowdfund.cshtml | 3 +- .../Views/AppsPublic/ViewPointOfSale.cshtml | 15 +- .../PaymentRequest/ViewPaymentRequest.cshtml | 13 +- .../ShowLightningNodeInfo.cshtml | 1 + BTCPayServer/Views/Shared/Header.cshtml | 1 + BTCPayServer/Views/Shared/_Layout.cshtml | 2 +- BTCPayServer/bundleconfig.json | 12 +- BTCPayServer/wwwroot/css/btcpay-theme.css | 76 + .../wwwroot/vendor/bootstrap/bootstrap.css | 6998 ++++++++++++ .../{bootstrap4/js => bootstrap}/bootstrap.js | 0 .../js => bootstrap}/bootstrap.js.map | 0 .../bootstrap4-creativestart/creative.css | 387 +- .../vendor/bootstrap4/css/_variables.scss | 4 - .../vendor/bootstrap4/css/bootstrap.css | 9898 ----------------- .../vendor/bootstrap4/js/bootstrap.bundle.js | 6818 ------------ .../bootstrap4/js/bootstrap.bundle.js.map | 1 - .../bootstrap4/js/bootstrap.bundle.min.js | 7 - .../bootstrap4/js/bootstrap.bundle.min.js.map | 1 - .../vendor/bootstrap4/js/bootstrap.min.js | 7 - .../vendor/bootstrap4/js/bootstrap.min.js.map | 1 - 22 files changed, 7228 insertions(+), 17042 deletions(-) create mode 100644 BTCPayServer/wwwroot/css/btcpay-theme.css create mode 100644 BTCPayServer/wwwroot/vendor/bootstrap/bootstrap.css rename BTCPayServer/wwwroot/vendor/{bootstrap4/js => bootstrap}/bootstrap.js (100%) rename BTCPayServer/wwwroot/vendor/{bootstrap4/js => bootstrap}/bootstrap.js.map (100%) delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/css/_variables.scss delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/css/bootstrap.css delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.bundle.js delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.bundle.js.map delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.bundle.min.js delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.bundle.min.js.map delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.min.js delete mode 100644 BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.min.js.map diff --git a/BTCPayServer/HostedServices/CssThemeManager.cs b/BTCPayServer/HostedServices/CssThemeManager.cs index 7545d1c53..3ab7c671f 100644 --- a/BTCPayServer/HostedServices/CssThemeManager.cs +++ b/BTCPayServer/HostedServices/CssThemeManager.cs @@ -21,12 +21,16 @@ namespace BTCPayServer.HostedServices { public void Update(ThemeSettings data) { + if (String.IsNullOrWhiteSpace(data.ThemeCssUri)) + _themeUri = "/css/btcpay-theme.css"; + else + _themeUri = data.ThemeCssUri; + if (String.IsNullOrWhiteSpace(data.BootstrapCssUri)) - _bootstrapUri = "/vendor/bootstrap4/css/bootstrap.css?v=" + DateTime.Now.Ticks; + _bootstrapUri = "/vendor/bootstrap/bootstrap.css"; else _bootstrapUri = data.BootstrapCssUri; - if (String.IsNullOrWhiteSpace(data.CreativeStartCssUri)) _creativeStartUri = "/vendor/bootstrap4-creativestart/creative.css?v=" + DateTime.Now.Ticks; else @@ -34,6 +38,12 @@ namespace BTCPayServer.HostedServices FirstRun = data.FirstRun; } + private string _themeUri; + public string ThemeUri + { + get { return _themeUri; } + } + private string _bootstrapUri; public string BootstrapUri { @@ -77,7 +87,7 @@ namespace BTCPayServer.HostedServices public void OnActionExecuted(ActionExecutedContext context) { - + } public void OnActionExecuting(ActionExecutingContext context) @@ -94,6 +104,10 @@ namespace BTCPayServer.HostedServices { policies.Clear(); } + if (manager.ThemeUri != null && Uri.TryCreate(manager.ThemeUri, UriKind.Absolute, out uri)) + { + policies.Clear(); + } } } } diff --git a/BTCPayServer/Services/ThemesSettings.cs b/BTCPayServer/Services/ThemesSettings.cs index c27e2e3bd..73061b79b 100644 --- a/BTCPayServer/Services/ThemesSettings.cs +++ b/BTCPayServer/Services/ThemesSettings.cs @@ -9,6 +9,11 @@ namespace BTCPayServer.Services { public class ThemeSettings { + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] + [MaxLength(500)] + [Display(Name = "Custom theme CSS file")] + public string ThemeCssUri { get; set; } + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Populate)] [MaxLength(500)] [Display(Name = "Custom bootstrap CSS file")] diff --git a/BTCPayServer/Views/AppsPublic/ViewCrowdfund.cshtml b/BTCPayServer/Views/AppsPublic/ViewCrowdfund.cshtml index 03de8cb8c..98fada78c 100644 --- a/BTCPayServer/Views/AppsPublic/ViewCrowdfund.cshtml +++ b/BTCPayServer/Views/AppsPublic/ViewCrowdfund.cshtml @@ -14,6 +14,7 @@ + @if (Model.CustomCSSLink != null) { @@ -32,7 +33,7 @@ @if (!string.IsNullOrEmpty(Model.EmbeddedCSS)) { - @Safe.Raw($""); + @Safe.Raw($""); } diff --git a/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml b/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml index 732253a20..553999696 100644 --- a/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml +++ b/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml @@ -22,6 +22,7 @@ + @if (Model.CustomCSSLink != null) { @@ -47,15 +48,15 @@ max-width: 320px; margin: auto; } - - .js-cart-item-count::-webkit-inner-spin-button, - .js-cart-item-count::-webkit-outer-spin-button { + + .js-cart-item-count::-webkit-inner-spin-button, + .js-cart-item-count::-webkit-outer-spin-button { -webkit-appearance: none; -moz-appearance: none; appearance: none; - margin: 0; + margin: 0; } - + @if (!string.IsNullOrEmpty(Model.EmbeddedCSS)) { @@ -318,7 +319,7 @@ @String.Format(Model.ButtonText, @item.Price.Formatted) @if (item.Inventory.HasValue) { - +
@if (item.Inventory > 0) { @@ -453,7 +454,7 @@
}else if (anyInventoryItems) { -
 
+
 
}
diff --git a/BTCPayServer/Views/PaymentRequest/ViewPaymentRequest.cshtml b/BTCPayServer/Views/PaymentRequest/ViewPaymentRequest.cshtml index 2b5249b27..3d8111b88 100644 --- a/BTCPayServer/Views/PaymentRequest/ViewPaymentRequest.cshtml +++ b/BTCPayServer/Views/PaymentRequest/ViewPaymentRequest.cshtml @@ -15,6 +15,7 @@ + @if (Model.CustomCSSLink != null) { @@ -31,7 +32,7 @@ } - + @Safe.Raw(Model.EmbeddedCSS) @@ -185,8 +186,8 @@ else Pay now - - @@ -206,12 +206,11 @@ else
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:''}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})}); -//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.min.js.map b/BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.min.js.map deleted file mode 100644 index a2100fa39..000000000 --- a/BTCPayServer/wwwroot/vendor/bootstrap4/js/bootstrap.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../rollupPluginBabelHelpers","../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["_defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","_createClass","Constructor","protoProps","staticProps","prototype","_extends","assign","arguments","source","hasOwnProperty","call","apply","this","$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Util","transition","transitionEndEmulator","duration","called","one","TRANSITION_END","triggerTransitionEnd","_this","prefix","Math","random","document","getElementById","element","selector","getAttribute","charAt","escapeSelector","substr","replace","find","err","offsetHeight","trigger","end","Boolean","obj","nodeType","componentName","config","configTypes","property","expectedTypes","value","valueType","isElement","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","window","QUnit","fn","emulateTransitionEnd","supportsTransitionEnd","event","special","is","handleObj","handler","_element","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","getSelectorFromElement","parent","closest","closeEvent","CLOSE","removeClass","hasClass","_destroyElement","detach","CLOSED","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","on","CLICK_DATA_API","noConflict","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","button","FOCUS_BLUR_DATA_API","Carousel","Default","DefaultType","Direction","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","INDICATORS","_addEventListeners","next","_slide","nextWhenVisible","hidden","css","prev","pause","NEXT_PREV","cycle","interval","setInterval","visibilityState","bind","to","index","ACTIVE_ITEM","activeIndex","_getItemIndex","SLID","direction","off","typeCheckConfig","keyboard","KEYDOWN","_this2","_keydown","MOUSEENTER","MOUSELEAVE","documentElement","TOUCHEND","setTimeout","tagName","which","makeArray","ITEM","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","wrap","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","SLIDE","_setActiveIndicatorElement","ACTIVE","nextIndicator","children","addClass","directionalClassName","orderClassName","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","reflow","_this3","action","slide","TypeError","_dataApiClickHandler","slideIndex","DATA_SLIDE","LOAD_DATA_API","DATA_RIDE","$carousel","Collapse","Dimension","_isTransitioning","_triggerArray","id","tabToggles","DATA_TOGGLE","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","ACTIVES","not","startEvent","SHOW","dimension","_getDimension","style","attr","setTransitioning","complete","SHOWN","scrollSize","slice","HIDE","getBoundingClientRect","HIDDEN","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","Dropdown","REGEXP_KEYDOWN","ARROW_UP_KEYCODE","AttachmentMap","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","boundary","_getPopperConfig","noop","destroy","update","scheduleUpdate","CLICK","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","offsetConf","offset","offsets","flip","toggles","context","dropdownMenu","hideEvent","parentNode","_dataApiKeydownHandler","items","get","KEYDOWN_DATA_API","KEYUP_DATA_API","e","Modal","_dialog","DIALOG","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_originalBodyPadding","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","body","_setEscapeEvent","_setResizeEvent","CLICK_DISMISS","DATA_DISMISS","MOUSEDOWN_DISMISS","MOUSEUP_DISMISS","_showBackdrop","_showElement","FOCUSIN","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","display","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this4","has","KEYDOWN_DISMISS","RESIZE","_this6","_resetAdjustments","_resetScrollbar","_this7","_removeBackdrop","callback","animate","backdrop","doAnimate","createElement","className","appendTo","_this8","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","FIXED_CONTENT","actualPadding","calculatedPadding","parseFloat","_this9","STICKY_CONTENT","actualMargin","marginRight","calculatedMargin","NAVBAR_TOGGLER","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","Tooltip","BSCLS_PREFIX_REGEX","HoverState","Trigger","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","getUID","setContent","animation","attachment","_getAttachment","addAttachmentClass","container","INSERTED","fallbackPlacement","originalPlacement","_handlePopperPlacementChange","_fixTransition","prevHoverState","_TRANSITION_DURATION","_cleanTipClass","getTitle","CLASS_PREFIX","template","$tip","setElementContent","content","html","empty","append","text","title","split","forEach","eventIn","eventOut","FOCUSOUT","_fixTitle","titleType","delay","tabClass","join","initConfigAnimation","Popover","subClass","superClass","create","__proto__","_getContent","ScrollSpy","OffsetMethod","_scrollElement","NAV_LINKS","LIST_ITEMS","DROPDOWN_ITEMS","_offsets","_targets","_activeTarget","_scrollHeight","SCROLL","_process","refresh","autoMethod","offsetMethod","method","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","DROPDOWN","DROPDOWN_TOGGLE","parents","NAV_LIST_GROUP","NAV_ITEMS","ACTIVATE","scrollSpys","DATA_SPY","$spy","Tab","previous","listElement","itemSelector","nodeName","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","version"],"mappings":"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","sourcesContent":["export { _createClass as createClass, _extends as extends, _inheritsLoose as inheritsLoose };\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n let transition = false\n\n const MAX_UID = 1000000\n\n // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-zA-Z]+)/)[1].toLowerCase()\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: transition.end,\n delegateType: transition.end,\n handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n }\n return undefined // eslint-disable-line no-undefined\n }\n }\n }\n\n function transitionEndTest() {\n if (typeof window !== 'undefined' && window.QUnit) {\n return false\n }\n\n return {\n end: 'transitionend'\n }\n }\n\n function transitionEndEmulator(duration) {\n let called = false\n\n $(this).one(Util.TRANSITION_END, () => {\n called = true\n })\n\n setTimeout(() => {\n if (!called) {\n Util.triggerTransitionEnd(this)\n }\n }, duration)\n\n return this\n }\n\n function setTransitionEndSupport() {\n transition = transitionEndTest()\n\n $.fn.emulateTransitionEnd = transitionEndEmulator\n\n if (Util.supportsTransitionEnd()) {\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n }\n }\n\n function escapeId(selector) {\n // We escape IDs in case of special selectors (selector = '#myId:something')\n // $.escapeSelector does not exist in jQuery < 3\n selector = typeof $.escapeSelector === 'function' ? $.escapeSelector(selector).substr(1)\n : selector.replace(/(:|\\.|\\[|\\]|,|=|@)/g, '\\\\$1')\n\n return selector\n }\n\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n const Util = {\n\n TRANSITION_END: 'bsTransitionEnd',\n\n getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix))\n return prefix\n },\n\n getSelectorFromElement(element) {\n let selector = element.getAttribute('data-target')\n if (!selector || selector === '#') {\n selector = element.getAttribute('href') || ''\n }\n\n // If it's an ID\n if (selector.charAt(0) === '#') {\n selector = escapeId(selector)\n }\n\n try {\n const $selector = $(document).find(selector)\n return $selector.length > 0 ? selector : null\n } catch (err) {\n return null\n }\n },\n\n reflow(element) {\n return element.offsetHeight\n },\n\n triggerTransitionEnd(element) {\n $(element).trigger(transition.end)\n },\n\n supportsTransitionEnd() {\n return Boolean(transition)\n },\n\n isElement(obj) {\n return (obj[0] || obj).nodeType\n },\n\n typeCheckConfig(componentName, config, configTypes) {\n for (const property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && Util.isElement(value)\n ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`)\n }\n }\n }\n }\n }\n\n setTransitionEndSupport()\n\n return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'alert'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.alert'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n\n const Selector = {\n DISMISS : '[data-dismiss=\"alert\"]'\n }\n\n const Event = {\n CLOSE : `close${EVENT_KEY}`,\n CLOSED : `closed${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n ALERT : 'alert',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Alert {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n close(element) {\n element = element || this._element\n\n const rootElement = this._getRootElement(element)\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent.isDefaultPrevented()) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Private\n\n _getRootElement(element) {\n const selector = Util.getSelectorFromElement(element)\n let parent = false\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n if (!parent) {\n parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n }\n\n return parent\n }\n\n _triggerCloseEvent(element) {\n const closeEvent = $.Event(Event.CLOSE)\n\n $(element).trigger(closeEvent)\n return closeEvent\n }\n\n _removeElement(element) {\n $(element).removeClass(ClassName.SHOW)\n\n if (!Util.supportsTransitionEnd() ||\n !$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element)\n return\n }\n\n $(element)\n .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n _destroyElement(element) {\n $(element)\n .detach()\n .trigger(Event.CLOSED)\n .remove()\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $element = $(this)\n let data = $element.data(DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n $element.data(DATA_KEY, data)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(\n Event.CLICK_DATA_API,\n Selector.DISMISS,\n Alert._handleDismiss(new Alert())\n )\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface\n $.fn[NAME].Constructor = Alert\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Alert._jQueryInterface\n }\n\n return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'button'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.button'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const ClassName = {\n ACTIVE : 'active',\n BUTTON : 'btn',\n FOCUS : 'focus'\n }\n\n const Selector = {\n DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n DATA_TOGGLE : '[data-toggle=\"buttons\"]',\n INPUT : 'input',\n ACTIVE : '.active',\n BUTTON : '.btn'\n }\n\n const Event = {\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n `blur${EVENT_KEY}${DATA_API_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Button {\n constructor(element) {\n this._element = element\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n // Public\n\n toggle() {\n let triggerChangeEvent = true\n let addAriaPressed = true\n const rootElement = $(this._element).closest(\n Selector.DATA_TOGGLE\n )[0]\n\n if (rootElement) {\n const input = $(this._element).find(Selector.INPUT)[0]\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked &&\n $(this._element).hasClass(ClassName.ACTIVE)) {\n triggerChangeEvent = false\n } else {\n const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName.ACTIVE)\n }\n }\n }\n\n if (triggerChangeEvent) {\n if (input.hasAttribute('disabled') ||\n rootElement.hasAttribute('disabled') ||\n input.classList.contains('disabled') ||\n rootElement.classList.contains('disabled')) {\n return\n }\n input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n $(input).trigger('change')\n }\n\n input.focus()\n addAriaPressed = false\n }\n }\n\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed',\n !$(this._element).hasClass(ClassName.ACTIVE))\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName.ACTIVE)\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n this._element = null\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n $(this).data(DATA_KEY, data)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n event.preventDefault()\n\n let button = event.target\n\n if (!$(button).hasClass(ClassName.BUTTON)) {\n button = $(button).closest(Selector.BUTTON)\n }\n\n Button._jQueryInterface.call($(button), 'toggle')\n })\n .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n const button = $(event.target).closest(Selector.BUTTON)[0]\n $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Button._jQueryInterface\n $.fn[NAME].Constructor = Button\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Button._jQueryInterface\n }\n\n return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'carousel'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.carousel'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n const ARROW_LEFT_KEYCODE = 37 // KeyboardEvent.which value for left arrow key\n const ARROW_RIGHT_KEYCODE = 39 // KeyboardEvent.which value for right arrow key\n const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n const Default = {\n interval : 5000,\n keyboard : true,\n slide : false,\n pause : 'hover',\n wrap : true\n }\n\n const DefaultType = {\n interval : '(number|boolean)',\n keyboard : 'boolean',\n slide : '(boolean|string)',\n pause : '(string|boolean)',\n wrap : 'boolean'\n }\n\n const Direction = {\n NEXT : 'next',\n PREV : 'prev',\n LEFT : 'left',\n RIGHT : 'right'\n }\n\n const Event = {\n SLIDE : `slide${EVENT_KEY}`,\n SLID : `slid${EVENT_KEY}`,\n KEYDOWN : `keydown${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`,\n TOUCHEND : `touchend${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n CAROUSEL : 'carousel',\n ACTIVE : 'active',\n SLIDE : 'slide',\n RIGHT : 'carousel-item-right',\n LEFT : 'carousel-item-left',\n NEXT : 'carousel-item-next',\n PREV : 'carousel-item-prev',\n ITEM : 'carousel-item'\n }\n\n const Selector = {\n ACTIVE : '.active',\n ACTIVE_ITEM : '.active.carousel-item',\n ITEM : '.carousel-item',\n NEXT_PREV : '.carousel-item-next, .carousel-item-prev',\n INDICATORS : '.carousel-indicators',\n DATA_SLIDE : '[data-slide], [data-slide-to]',\n DATA_RIDE : '[data-ride=\"carousel\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Carousel {\n constructor(element, config) {\n this._items = null\n this._interval = null\n this._activeElement = null\n\n this._isPaused = false\n this._isSliding = false\n\n this.touchTimeout = null\n\n this._config = this._getConfig(config)\n this._element = $(element)[0]\n this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden &&\n ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if ($(this._element).find(Selector.NEXT_PREV)[0] &&\n Util.supportsTransitionEnd()) {\n Util.triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n $(this._element).one(Event.SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const direction = index > activeIndex\n ? Direction.NEXT\n : Direction.PREV\n\n this._slide(direction, this._items[index])\n }\n\n dispose() {\n $(this._element).off(EVENT_KEY)\n $.removeData(this._element, DATA_KEY)\n\n this._items = null\n this._config = null\n this._element = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n $(this._element)\n .on(Event.KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n $(this._element)\n .on(Event.MOUSEENTER, (event) => this.pause(event))\n .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n if ('ontouchstart' in document.documentElement) {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n $(this._element).on(Event.TOUCHEND, () => {\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n })\n }\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault()\n this.prev()\n break\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault()\n this.next()\n break\n default:\n }\n }\n\n _getItemIndex(element) {\n this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n return this._items.indexOf(element)\n }\n\n _getItemByDirection(direction, activeElement) {\n const isNextDirection = direction === Direction.NEXT\n const isPrevDirection = direction === Direction.PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = isPrevDirection && activeIndex === 0 ||\n isNextDirection && activeIndex === lastItemIndex\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = direction === Direction.PREV ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1\n ? this._items[this._items.length - 1] : this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n const slideEvent = $.Event(Event.SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n\n $(this._element).trigger(slideEvent)\n\n return slideEvent\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n $(this._indicatorsElement)\n .find(Selector.ACTIVE)\n .removeClass(ClassName.ACTIVE)\n\n const nextIndicator = this._indicatorsElement.children[\n this._getItemIndex(element)\n ]\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName.ACTIVE)\n }\n }\n }\n\n _slide(direction, element) {\n const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || activeElement &&\n this._getItemByDirection(direction, activeElement)\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n let directionalClassName\n let orderClassName\n let eventDirectionName\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName.LEFT\n orderClassName = ClassName.NEXT\n eventDirectionName = Direction.LEFT\n } else {\n directionalClassName = ClassName.RIGHT\n orderClassName = ClassName.PREV\n eventDirectionName = Direction.RIGHT\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.isDefaultPrevented()) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n\n const slidEvent = $.Event(Event.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.SLIDE)) {\n $(nextElement).addClass(orderClassName)\n\n Util.reflow(nextElement)\n\n $(activeElement).addClass(directionalClassName)\n $(nextElement).addClass(directionalClassName)\n\n $(activeElement)\n .one(Util.TRANSITION_END, () => {\n $(nextElement)\n .removeClass(`${directionalClassName} ${orderClassName}`)\n .addClass(ClassName.ACTIVE)\n\n $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n this._isSliding = false\n\n setTimeout(() => $(this._element).trigger(slidEvent), 0)\n })\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n $(activeElement).removeClass(ClassName.ACTIVE)\n $(nextElement).addClass(ClassName.ACTIVE)\n\n this._isSliding = false\n $(this._element).trigger(slidEvent)\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n let _config = {\n ...Default,\n ...$(this).data()\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n data[action]()\n } else if (_config.interval) {\n data.pause()\n data.cycle()\n }\n })\n }\n\n static _dataApiClickHandler(event) {\n const selector = Util.getSelectorFromElement(this)\n\n if (!selector) {\n return\n }\n\n const target = $(selector)[0]\n\n if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n return\n }\n\n const config = {\n ...$(target).data(),\n ...$(this).data()\n }\n const slideIndex = this.getAttribute('data-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel._jQueryInterface.call($(target), config)\n\n if (slideIndex) {\n $(target).data(DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n $(window).on(Event.LOAD_DATA_API, () => {\n $(Selector.DATA_RIDE).each(function () {\n const $carousel = $(this)\n Carousel._jQueryInterface.call($carousel, $carousel.data())\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Carousel._jQueryInterface\n $.fn[NAME].Constructor = Carousel\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Carousel._jQueryInterface\n }\n\n return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'collapse'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.collapse'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 600\n\n const Default = {\n toggle : true,\n parent : ''\n }\n\n const DefaultType = {\n toggle : 'boolean',\n parent : '(string|element)'\n }\n\n const Event = {\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SHOW : 'show',\n COLLAPSE : 'collapse',\n COLLAPSING : 'collapsing',\n COLLAPSED : 'collapsed'\n }\n\n const Dimension = {\n WIDTH : 'width',\n HEIGHT : 'height'\n }\n\n const Selector = {\n ACTIVES : '.show, .collapsing',\n DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Collapse {\n constructor(element, config) {\n this._isTransitioning = false\n this._element = element\n this._config = this._getConfig(config)\n this._triggerArray = $.makeArray($(\n `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n ))\n const tabToggles = $(Selector.DATA_TOGGLE)\n for (let i = 0; i < tabToggles.length; i++) {\n const elem = tabToggles[i]\n const selector = Util.getSelectorFromElement(elem)\n if (selector !== null && $(selector).filter(element).length > 0) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle() {\n if ($(this._element).hasClass(ClassName.SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning ||\n $(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = $.makeArray(\n $(this._parent)\n .find(Selector.ACTIVES)\n .filter(`[data-parent=\"${this._config.parent}\"]`)\n )\n if (actives.length === 0) {\n actives = null\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY)\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = $.Event(Event.SHOW)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n if (!activesData) {\n $(actives).data(DATA_KEY, null)\n }\n }\n\n const dimension = this._getDimension()\n\n $(this._element)\n .removeClass(ClassName.COLLAPSE)\n .addClass(ClassName.COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length > 0) {\n $(this._triggerArray)\n .removeClass(ClassName.COLLAPSED)\n .attr('aria-expanded', true)\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .addClass(ClassName.SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n $(this._element).trigger(Event.SHOWN)\n }\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning ||\n !$(this._element).hasClass(ClassName.SHOW)) {\n return\n }\n\n const startEvent = $.Event(Event.HIDE)\n $(this._element).trigger(startEvent)\n if (startEvent.isDefaultPrevented()) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n Util.reflow(this._element)\n\n $(this._element)\n .addClass(ClassName.COLLAPSING)\n .removeClass(ClassName.COLLAPSE)\n .removeClass(ClassName.SHOW)\n\n if (this._triggerArray.length > 0) {\n for (let i = 0; i < this._triggerArray.length; i++) {\n const trigger = this._triggerArray[i]\n const selector = Util.getSelectorFromElement(trigger)\n if (selector !== null) {\n const $elem = $(selector)\n if (!$elem.hasClass(ClassName.SHOW)) {\n $(trigger).addClass(ClassName.COLLAPSED)\n .attr('aria-expanded', false)\n }\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n $(this._element)\n .removeClass(ClassName.COLLAPSING)\n .addClass(ClassName.COLLAPSE)\n .trigger(Event.HIDDEN)\n }\n\n this._element.style[dimension] = ''\n\n if (!Util.supportsTransitionEnd()) {\n complete()\n return\n }\n\n $(this._element)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n this._config = null\n this._parent = null\n this._element = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n }\n\n _getParent() {\n let parent = null\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent\n\n // It's a jQuery object\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0]\n }\n } else {\n parent = $(this._config.parent)[0]\n }\n\n const selector =\n `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n $(parent).find(selector).each((i, element) => {\n this._addAriaAndCollapsedClass(\n Collapse._getTargetFromElement(element),\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (element) {\n const isOpen = $(element).hasClass(ClassName.SHOW)\n\n if (triggerArray.length > 0) {\n $(triggerArray)\n .toggleClass(ClassName.COLLAPSED, !isOpen)\n .attr('aria-expanded', isOpen)\n }\n }\n }\n\n // Static\n\n static _getTargetFromElement(element) {\n const selector = Util.getSelectorFromElement(element)\n return selector ? $(selector)[0] : null\n }\n\n static _jQueryInterface(config) {\n return this.each(function () {\n const $this = $(this)\n let data = $this.data(DATA_KEY)\n const _config = {\n ...Default,\n ...$this.data(),\n ...typeof config === 'object' && config\n }\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(this, _config)\n $this.data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault()\n }\n\n const $trigger = $(this)\n const selector = Util.getSelectorFromElement(this)\n $(selector).each(function () {\n const $target = $(this)\n const data = $target.data(DATA_KEY)\n const config = data ? 'toggle' : $trigger.data()\n Collapse._jQueryInterface.call($target, config)\n })\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Collapse._jQueryInterface\n $.fn[NAME].Constructor = Collapse\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Collapse._jQueryInterface\n }\n\n return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'dropdown'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.dropdown'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n const SPACE_KEYCODE = 32 // KeyboardEvent.which value for space key\n const TAB_KEYCODE = 9 // KeyboardEvent.which value for tab key\n const ARROW_UP_KEYCODE = 38 // KeyboardEvent.which value for up arrow key\n const ARROW_DOWN_KEYCODE = 40 // KeyboardEvent.which value for down arrow key\n const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n const REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`,\n KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n KEYUP_DATA_API : `keyup${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DISABLED : 'disabled',\n SHOW : 'show',\n DROPUP : 'dropup',\n DROPRIGHT : 'dropright',\n DROPLEFT : 'dropleft',\n MENURIGHT : 'dropdown-menu-right',\n MENULEFT : 'dropdown-menu-left',\n POSITION_STATIC : 'position-static'\n }\n\n const Selector = {\n DATA_TOGGLE : '[data-toggle=\"dropdown\"]',\n FORM_CHILD : '.dropdown form',\n MENU : '.dropdown-menu',\n NAVBAR_NAV : '.navbar-nav',\n VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled)'\n }\n\n const AttachmentMap = {\n TOP : 'top-start',\n TOPEND : 'top-end',\n BOTTOM : 'bottom-start',\n BOTTOMEND : 'bottom-end',\n RIGHT : 'right-start',\n RIGHTEND : 'right-end',\n LEFT : 'left-start',\n LEFTEND : 'left-end'\n }\n\n const Default = {\n offset : 0,\n flip : true,\n boundary : 'scrollParent'\n }\n\n const DefaultType = {\n offset : '(number|string|function)',\n flip : 'boolean',\n boundary : '(string|element)'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Dropdown {\n constructor(element, config) {\n this._element = element\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this._element)\n const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n Dropdown._clearMenus()\n\n if (isActive) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n $(parent).trigger(showEvent)\n\n if (showEvent.isDefaultPrevented()) {\n return\n }\n\n // Disable totally Popper.js for Dropdown in Navbar\n if (!this._inNavbar) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n }\n let element = this._element\n // For dropup with alignment we use the parent as popper container\n if ($(parent).hasClass(ClassName.DROPUP)) {\n if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) {\n element = parent\n }\n }\n // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName.POSITION_STATIC)\n }\n this._popper = new Popper(element, this._menu, this._getPopperConfig())\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n $(this._menu).toggleClass(ClassName.SHOW)\n $(parent)\n .toggleClass(ClassName.SHOW)\n .trigger($.Event(Event.SHOWN, relatedTarget))\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._element).off(EVENT_KEY)\n this._element = null\n this._menu = null\n if (this._popper !== null) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Private\n\n _addEventListeners() {\n $(this._element).on(Event.CLICK, (event) => {\n event.preventDefault()\n event.stopPropagation()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this._element).data(),\n ...config\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getMenuElement() {\n if (!this._menu) {\n const parent = Dropdown._getParentFromElement(this._element)\n this._menu = $(parent).find(Selector.MENU)[0]\n }\n return this._menu\n }\n\n _getPlacement() {\n const $parentDropdown = $(this._element).parent()\n let placement = AttachmentMap.BOTTOM\n\n // Handle dropup\n if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n placement = AttachmentMap.TOP\n if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.TOPEND\n }\n } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT\n } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n placement = AttachmentMap.LEFT\n } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND\n }\n return placement\n }\n\n _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0\n }\n\n _getPopperConfig() {\n const offsetConf = {}\n if (typeof this._config.offset === 'function') {\n offsetConf.fn = (data) => {\n data.offsets = {\n ...data.offsets,\n ...this._config.offset(data.offsets) || {}\n }\n return data\n }\n } else {\n offsetConf.offset = this._config.offset\n }\n const popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: offsetConf,\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }\n\n return popperConfig\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n\n static _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return\n }\n\n const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n for (let i = 0; i < toggles.length; i++) {\n const parent = Dropdown._getParentFromElement(toggles[i])\n const context = $(toggles[i]).data(DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!$(parent).hasClass(ClassName.SHOW)) {\n continue\n }\n\n if (event && (event.type === 'click' &&\n /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n $.contains(parent, event.target)) {\n continue\n }\n\n const hideEvent = $.Event(Event.HIDE, relatedTarget)\n $(parent).trigger(hideEvent)\n if (hideEvent.isDefaultPrevented()) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n $(dropdownMenu).removeClass(ClassName.SHOW)\n $(parent)\n .removeClass(ClassName.SHOW)\n .trigger($.Event(Event.HIDDEN, relatedTarget))\n }\n }\n\n static _getParentFromElement(element) {\n let parent\n const selector = Util.getSelectorFromElement(element)\n\n if (selector) {\n parent = $(selector)[0]\n }\n\n return parent || element.parentNode\n }\n\n // eslint-disable-next-line complexity\n static _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName)\n ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n return\n }\n\n const parent = Dropdown._getParentFromElement(this)\n const isActive = $(parent).hasClass(ClassName.SHOW)\n\n if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n $(toggle).trigger('focus')\n }\n\n $(this).trigger('click')\n return\n }\n\n const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n if (items.length === 0) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n index--\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n index++\n }\n\n if (index < 0) {\n index = 0\n }\n\n items[index].focus()\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document)\n .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n event.preventDefault()\n event.stopPropagation()\n Dropdown._jQueryInterface.call($(this), 'toggle')\n })\n .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n e.stopPropagation()\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Dropdown._jQueryInterface\n $.fn[NAME].Constructor = Dropdown\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Dropdown._jQueryInterface\n }\n\n return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'modal'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.modal'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 300\n const BACKDROP_TRANSITION_DURATION = 150\n const ESCAPE_KEYCODE = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n const Default = {\n backdrop : true,\n keyboard : true,\n focus : true,\n show : true\n }\n\n const DefaultType = {\n backdrop : '(boolean|string)',\n keyboard : 'boolean',\n focus : 'boolean',\n show : 'boolean'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n RESIZE : `resize${EVENT_KEY}`,\n CLICK_DISMISS : `click.dismiss${EVENT_KEY}`,\n KEYDOWN_DISMISS : `keydown.dismiss${EVENT_KEY}`,\n MOUSEUP_DISMISS : `mouseup.dismiss${EVENT_KEY}`,\n MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n BACKDROP : 'modal-backdrop',\n OPEN : 'modal-open',\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n DIALOG : '.modal-dialog',\n DATA_TOGGLE : '[data-toggle=\"modal\"]',\n DATA_DISMISS : '[data-dismiss=\"modal\"]',\n FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT : '.sticky-top',\n NAVBAR_TOGGLER : '.navbar-toggler'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Modal {\n constructor(element, config) {\n this._config = this._getConfig(config)\n this._element = element\n this._dialog = $(element).find(Selector.DIALOG)[0]\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._originalBodyPadding = 0\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isTransitioning || this._isShown) {\n return\n }\n\n if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {\n this._isTransitioning = true\n }\n\n const showEvent = $.Event(Event.SHOW, {\n relatedTarget\n })\n\n $(this._element).trigger(showEvent)\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n $(document.body).addClass(ClassName.OPEN)\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(this._element).on(\n Event.CLICK_DISMISS,\n Selector.DATA_DISMISS,\n (event) => this.hide(event)\n )\n\n $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n if ($(event.target).is(this._element)) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (this._isTransitioning || !this._isShown) {\n return\n }\n\n const hideEvent = $.Event(Event.HIDE)\n\n $(this._element).trigger(hideEvent)\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return\n }\n\n this._isShown = false\n\n const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)\n\n if (transition) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n $(document).off(Event.FOCUSIN)\n\n $(this._element).removeClass(ClassName.SHOW)\n\n $(this._element).off(Event.CLICK_DISMISS)\n $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n if (transition) {\n $(this._element)\n .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n\n $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n this._config = null\n this._element = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n Util.typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const transition = Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)\n\n if (!this._element.parentNode ||\n this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.scrollTop = 0\n\n if (transition) {\n Util.reflow(this._element)\n }\n\n $(this._element).addClass(ClassName.SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const shownEvent = $.Event(Event.SHOWN, {\n relatedTarget\n })\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n this._isTransitioning = false\n $(this._element).trigger(shownEvent)\n }\n\n if (transition) {\n $(this._dialog)\n .one(Util.TRANSITION_END, transitionComplete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n $(document)\n .off(Event.FOCUSIN) // Guard against infinite focus loop\n .on(Event.FOCUSIN, (event) => {\n if (document !== event.target &&\n this._element !== event.target &&\n $(this._element).has(event.target).length === 0) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n if (event.which === ESCAPE_KEYCODE) {\n event.preventDefault()\n this.hide()\n }\n })\n } else if (!this._isShown) {\n $(this._element).off(Event.KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n } else {\n $(window).off(Event.RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n this._showBackdrop(() => {\n $(document.body).removeClass(ClassName.OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n $(this._element).trigger(Event.HIDDEN)\n })\n }\n\n _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove()\n this._backdrop = null\n }\n }\n\n _showBackdrop(callback) {\n const animate = $(this._element).hasClass(ClassName.FADE)\n ? ClassName.FADE : ''\n\n if (this._isShown && this._config.backdrop) {\n const doAnimate = Util.supportsTransitionEnd() && animate\n\n this._backdrop = document.createElement('div')\n this._backdrop.className = ClassName.BACKDROP\n\n if (animate) {\n $(this._backdrop).addClass(animate)\n }\n\n $(this._backdrop).appendTo(document.body)\n\n $(this._element).on(Event.CLICK_DISMISS, (event) => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n if (event.target !== event.currentTarget) {\n return\n }\n if (this._config.backdrop === 'static') {\n this._element.focus()\n } else {\n this.hide()\n }\n })\n\n if (doAnimate) {\n Util.reflow(this._backdrop)\n }\n\n $(this._backdrop).addClass(ClassName.SHOW)\n\n if (!callback) {\n return\n }\n\n if (!doAnimate) {\n callback()\n return\n }\n\n $(this._backdrop)\n .one(Util.TRANSITION_END, callback)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName.SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n if (callback) {\n callback()\n }\n }\n\n if (Util.supportsTransitionEnd() &&\n $(this._element).hasClass(ClassName.FADE)) {\n $(this._backdrop)\n .one(Util.TRANSITION_END, callbackRemove)\n .emulateTransitionEnd(BACKDROP_TRANSITION_DURATION)\n } else {\n callbackRemove()\n }\n } else if (callback) {\n callback()\n }\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing =\n this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n // Adjust fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const actualPadding = $(element)[0].style.paddingRight\n const calculatedPadding = $(element).css('padding-right')\n $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n })\n\n // Adjust sticky content margin\n $(Selector.STICKY_CONTENT).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n })\n\n // Adjust navbar-toggler margin\n $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n const actualMargin = $(element)[0].style.marginRight\n const calculatedMargin = $(element).css('margin-right')\n $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n })\n\n // Adjust body padding\n const actualPadding = document.body.style.paddingRight\n const calculatedPadding = $('body').css('padding-right')\n $('body').data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n }\n }\n\n _resetScrollbar() {\n // Restore fixed content padding\n $(Selector.FIXED_CONTENT).each((index, element) => {\n const padding = $(element).data('padding-right')\n if (typeof padding !== 'undefined') {\n $(element).css('padding-right', padding).removeData('padding-right')\n }\n })\n\n // Restore sticky content and navbar-toggler margin\n $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n const margin = $(element).data('margin-right')\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right')\n }\n })\n\n // Restore body padding\n const padding = $('body').data('padding-right')\n if (typeof padding !== 'undefined') {\n $('body').css('padding-right', padding).removeData('padding-right')\n }\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = {\n ...Modal.Default,\n ...$(this).data(),\n ...typeof config === 'object' && config\n }\n\n if (!data) {\n data = new Modal(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config](relatedTarget)\n } else if (_config.show) {\n data.show(relatedTarget)\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n let target\n const selector = Util.getSelectorFromElement(this)\n\n if (selector) {\n target = $(selector)[0]\n }\n\n const config = $(target).data(DATA_KEY)\n ? 'toggle' : {\n ...$(target).data(),\n ...$(this).data()\n }\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n const $target = $(target).one(Event.SHOW, (showEvent) => {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return\n }\n\n $target.one(Event.HIDDEN, () => {\n if ($(this).is(':visible')) {\n this.focus()\n }\n })\n })\n\n Modal._jQueryInterface.call($(target), config, this)\n })\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Modal._jQueryInterface\n $.fn[NAME].Constructor = Modal\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Modal._jQueryInterface\n }\n\n return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'tooltip'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.tooltip'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const TRANSITION_DURATION = 150\n const CLASS_PREFIX = 'bs-tooltip'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const DefaultType = {\n animation : 'boolean',\n template : 'string',\n title : '(string|element|function)',\n trigger : 'string',\n delay : '(number|object)',\n html : 'boolean',\n selector : '(string|boolean)',\n placement : '(string|function)',\n offset : '(number|string)',\n container : '(string|element|boolean)',\n fallbackPlacement : '(string|array)',\n boundary : '(string|element)'\n }\n\n const AttachmentMap = {\n AUTO : 'auto',\n TOP : 'top',\n RIGHT : 'right',\n BOTTOM : 'bottom',\n LEFT : 'left'\n }\n\n const Default = {\n animation : true,\n template : '
' +\n '
' +\n '
',\n trigger : 'hover focus',\n title : '',\n delay : 0,\n html : false,\n selector : false,\n placement : 'top',\n offset : 0,\n container : false,\n fallbackPlacement : 'flip',\n boundary : 'scrollParent'\n }\n\n const HoverState = {\n SHOW : 'show',\n OUT : 'out'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TOOLTIP : '.tooltip',\n TOOLTIP_INNER : '.tooltip-inner',\n ARROW : '.arrow'\n }\n\n const Trigger = {\n HOVER : 'hover',\n FOCUS : 'focus',\n CLICK : 'click',\n MANUAL : 'manual'\n }\n\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Tooltip {\n constructor(element, config) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n }\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.element = element\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const dataKey = this.constructor.DATA_KEY\n let context = $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n $.removeData(this.element, this.constructor.DATA_KEY)\n\n $(this.element).off(this.constructor.EVENT_KEY)\n $(this.element).closest('.modal').off('hide.bs.modal')\n\n if (this.tip) {\n $(this.tip).remove()\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.element = null\n this.config = null\n this.tip = null\n }\n\n show() {\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n const showEvent = $.Event(this.constructor.Event.SHOW)\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent)\n\n const isInTheDom = $.contains(\n this.element.ownerDocument.documentElement,\n this.element\n )\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = Util.getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this.element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n $(tip).addClass(ClassName.FADE)\n }\n\n const placement = typeof this.config.placement === 'function'\n ? this.config.placement.call(this, tip, this.element)\n : this.config.placement\n\n const attachment = this._getAttachment(placement)\n this.addAttachmentClass(attachment)\n\n const container = this.config.container === false ? document.body : $(this.config.container)\n\n $(tip).data(this.constructor.DATA_KEY, this)\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container)\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED)\n\n this._popper = new Popper(this.element, tip, {\n placement: attachment,\n modifiers: {\n offset: {\n offset: this.config.offset\n },\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: (data) => {\n if (data.originalPlacement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n },\n onUpdate: (data) => {\n this._handlePopperPlacementChange(data)\n }\n })\n\n $(tip).addClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n $('body').children().on('mouseover', null, $.noop)\n }\n\n const complete = () => {\n if (this.config.animation) {\n this._fixTransition()\n }\n const prevHoverState = this._hoverState\n this._hoverState = null\n\n $(this.element).trigger(this.constructor.Event.SHOWN)\n\n if (prevHoverState === HoverState.OUT) {\n this._leave(null, this)\n }\n }\n\n if (Util.supportsTransitionEnd() && $(this.tip).hasClass(ClassName.FADE)) {\n $(this.tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(Tooltip._TRANSITION_DURATION)\n } else {\n complete()\n }\n }\n }\n\n hide(callback) {\n const tip = this.getTipElement()\n const hideEvent = $.Event(this.constructor.Event.HIDE)\n const complete = () => {\n if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this.element.removeAttribute('aria-describedby')\n $(this.element).trigger(this.constructor.Event.HIDDEN)\n if (this._popper !== null) {\n this._popper.destroy()\n }\n\n if (callback) {\n callback()\n }\n }\n\n $(this.element).trigger(hideEvent)\n\n if (hideEvent.isDefaultPrevented()) {\n return\n }\n\n $(tip).removeClass(ClassName.SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n $('body').children().off('mouseover', null, $.noop)\n }\n\n this._activeTrigger[Trigger.CLICK] = false\n this._activeTrigger[Trigger.FOCUS] = false\n this._activeTrigger[Trigger.HOVER] = false\n\n if (Util.supportsTransitionEnd() &&\n $(this.tip).hasClass(ClassName.FADE)) {\n $(tip)\n .one(Util.TRANSITION_END, complete)\n .emulateTransitionEnd(TRANSITION_DURATION)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n setElementContent($element, content) {\n const html = this.config.html\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content)\n }\n } else {\n $element.text($(content).text())\n }\n } else {\n $element[html ? 'html' : 'text'](content)\n }\n }\n\n getTitle() {\n let title = this.element.getAttribute('data-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function'\n ? this.config.title.call(this.element)\n : this.config.title\n }\n\n return title\n }\n\n // Private\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach((trigger) => {\n if (trigger === 'click') {\n $(this.element).on(\n this.constructor.Event.CLICK,\n this.config.selector,\n (event) => this.toggle(event)\n )\n } else if (trigger !== Trigger.MANUAL) {\n const eventIn = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSEENTER\n : this.constructor.Event.FOCUSIN\n const eventOut = trigger === Trigger.HOVER\n ? this.constructor.Event.MOUSELEAVE\n : this.constructor.Event.FOCUSOUT\n\n $(this.element)\n .on(\n eventIn,\n this.config.selector,\n (event) => this._enter(event)\n )\n .on(\n eventOut,\n this.config.selector,\n (event) => this._leave(event)\n )\n }\n\n $(this.element).closest('.modal').on(\n 'hide.bs.modal',\n () => this.hide()\n )\n })\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const titleType = typeof this.element.getAttribute('data-original-title')\n if (this.element.getAttribute('title') ||\n titleType !== 'string') {\n this.element.setAttribute(\n 'data-original-title',\n this.element.getAttribute('title') || ''\n )\n this.element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n ] = true\n }\n\n if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n const dataKey = this.constructor.DATA_KEY\n\n context = context || $(event.currentTarget).data(dataKey)\n\n if (!context) {\n context = new this.constructor(\n event.currentTarget,\n this._getDelegateConfig()\n )\n $(event.currentTarget).data(dataKey, context)\n }\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n ] = false\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HoverState.OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HoverState.OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...$(this.element).data(),\n ...config\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n Util.typeCheckConfig(\n NAME,\n config,\n this.constructor.DefaultType\n )\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n _handlePopperPlacementChange(data) {\n this._cleanTipClass()\n this.addAttachmentClass(this._getAttachment(data.placement))\n }\n\n _fixTransition() {\n const tip = this.getTipElement()\n const initConfigAnimation = this.config.animation\n if (tip.getAttribute('x-placement') !== null) {\n return\n }\n $(tip).removeClass(ClassName.FADE)\n this.config.animation = false\n this.hide()\n this.show()\n this.config.animation = initConfigAnimation\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Tooltip._jQueryInterface\n $.fn[NAME].Constructor = Tooltip\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Tooltip._jQueryInterface\n }\n\n return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'popover'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.popover'\n const EVENT_KEY = `.${DATA_KEY}`\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n const CLASS_PREFIX = 'bs-popover'\n const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n const Default = {\n ...Tooltip.Default,\n placement : 'right',\n trigger : 'click',\n content : '',\n template : '
' +\n '
' +\n '

' +\n '
'\n }\n\n const DefaultType = {\n ...Tooltip.DefaultType,\n content : '(string|element|function)'\n }\n\n const ClassName = {\n FADE : 'fade',\n SHOW : 'show'\n }\n\n const Selector = {\n TITLE : '.popover-header',\n CONTENT : '.popover-body'\n }\n\n const Event = {\n HIDE : `hide${EVENT_KEY}`,\n HIDDEN : `hidden${EVENT_KEY}`,\n SHOW : `show${EVENT_KEY}`,\n SHOWN : `shown${EVENT_KEY}`,\n INSERTED : `inserted${EVENT_KEY}`,\n CLICK : `click${EVENT_KEY}`,\n FOCUSIN : `focusin${EVENT_KEY}`,\n FOCUSOUT : `focusout${EVENT_KEY}`,\n MOUSEENTER : `mouseenter${EVENT_KEY}`,\n MOUSELEAVE : `mouseleave${EVENT_KEY}`\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class Popover extends Tooltip {\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n }\n\n getTipElement() {\n this.tip = this.tip || $(this.config.template)[0]\n return this.tip\n }\n\n setContent() {\n const $tip = $(this.getTipElement())\n\n // We use append for html objects to maintain js events\n this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this.element)\n }\n this.setElementContent($tip.find(Selector.CONTENT), content)\n\n $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n }\n\n // Private\n\n _getContent() {\n return this.element.getAttribute('data-content') ||\n this.config.content\n }\n\n _cleanTipClass() {\n const $tip = $(this.getTipElement())\n const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''))\n }\n }\n\n // Static\n\n static _jQueryInterface(config) {\n return this.each(function () {\n let data = $(this).data(DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /destroy|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n $(this).data(DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n data[config]()\n }\n })\n }\n }\n\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Popover._jQueryInterface\n $.fn[NAME].Constructor = Popover\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT\n return Popover._jQueryInterface\n }\n\n return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n const NAME = 'scrollspy'\n const VERSION = '4.0.0'\n const DATA_KEY = 'bs.scrollspy'\n const EVENT_KEY = `.${DATA_KEY}`\n const DATA_API_KEY = '.data-api'\n const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n const Default = {\n offset : 10,\n method : 'auto',\n target : ''\n }\n\n const DefaultType = {\n offset : 'number',\n method : 'string',\n target : '(string|element)'\n }\n\n const Event = {\n ACTIVATE : `activate${EVENT_KEY}`,\n SCROLL : `scroll${EVENT_KEY}`,\n LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n }\n\n const ClassName = {\n DROPDOWN_ITEM : 'dropdown-item',\n DROPDOWN_MENU : 'dropdown-menu',\n ACTIVE : 'active'\n }\n\n const Selector = {\n DATA_SPY : '[data-spy=\"scroll\"]',\n ACTIVE : '.active',\n NAV_LIST_GROUP : '.nav, .list-group',\n NAV_LINKS : '.nav-link',\n NAV_ITEMS : '.nav-item',\n LIST_ITEMS : '.list-group-item',\n DROPDOWN : '.dropdown',\n DROPDOWN_ITEMS : '.dropdown-item',\n DROPDOWN_TOGGLE : '.dropdown-toggle'\n }\n\n const OffsetMethod = {\n OFFSET : 'offset',\n POSITION : 'position'\n }\n\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n class ScrollSpy {\n constructor(element, config) {\n this._element = element\n this._scrollElement = element.tagName === 'BODY' ? window : element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${Selector.NAV_LINKS},` +\n `${this._config.target} ${Selector.LIST_ITEMS},` +\n `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get VERSION() {\n return VERSION\n }\n\n static get Default() {\n return Default\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window\n ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n const offsetMethod = this._config.method === 'auto'\n ? autoMethod : this._config.method\n\n const offsetBase = offsetMethod === OffsetMethod.POSITION\n ? this._getScrollTop() : 0\n\n this._offsets = []\n this._targets = []\n\n this._scrollHeight = this._getScrollHeight()\n\n const targets = $.makeArray($(this._selector))\n\n targets\n .map((element) => {\n let target\n const targetSelector = Util.getSelectorFromElement(element)\n\n if (targetSelector) {\n target = $(targetSelector)[0]\n }\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [\n $(target)[offsetMethod]().top + offsetBase,\n targetSelector\n ]\n }\n }\n return null\n })\n .filter((item) => item)\n .sort((a, b) => a[0] - b[0])\n .forEach((item) => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n $.removeData(this._element, DATA_KEY)\n $(this._scrollElement).off(EVENT_KEY)\n\n this._element = null\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n\n if (typeof config.target !== 'string') {\n let id = $(config.target).attr('id')\n if (!id) {\n id = Util.getUID(NAME)\n $(config.target).attr('id', id)\n }\n config.target = `#${id}`\n }\n\n Util.typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window\n ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window\n ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset +\n scrollHeight -\n this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' ||\n scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n let queries = this._selector.split(',')\n // eslint-disable-next-line arrow-body-style\n queries = queries.map((selector) => {\n return `${selector}[data-target=\"${target}\"],` +\n `${selector}[href=\"${target}\"]`\n })\n\n const $link = $(queries.join(','))\n\n if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n $link.addClass(ClassName.ACTIVE)\n } else {\n // Set triggered link as active\n $link.addClass(ClassName.ACTIVE)\n // Set triggered links parents as active\n // With both
+
+ + + +
From 6dd3c79c23ce8f9c4c608d17ad4060b1765097b8 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Fri, 1 Nov 2019 15:45:59 +0100 Subject: [PATCH 28/49] Move themes and bootstrap --- .../HostedServices/CssThemeManager.cs | 6 +- BTCPayServer/Views/Server/Theme.cshtml | 5 +- BTCPayServer/bundleconfig.json | 2 +- .../{vendor/bootstrap => css}/bootstrap.css | 218 +++++++++--------- BTCPayServer/wwwroot/css/btcpay-theme.css | 76 ------ .../creative.css | 0 .../Open-Sans.css => css/fonts.css} | 0 BTCPayServer/wwwroot/css/modern-theme.css | 88 ------- BTCPayServer/wwwroot/css/themes/classic.css | 77 +++++++ BTCPayServer/wwwroot/css/themes/modern.css | 81 +++++++ 10 files changed, 273 insertions(+), 280 deletions(-) rename BTCPayServer/wwwroot/{vendor/bootstrap => css}/bootstrap.css (96%) delete mode 100644 BTCPayServer/wwwroot/css/btcpay-theme.css rename BTCPayServer/wwwroot/{vendor/bootstrap4-creativestart => css}/creative.css (100%) rename BTCPayServer/wwwroot/{vendor/bootstrap4-creativestart/Open-Sans.css => css/fonts.css} (100%) delete mode 100644 BTCPayServer/wwwroot/css/modern-theme.css create mode 100644 BTCPayServer/wwwroot/css/themes/classic.css create mode 100644 BTCPayServer/wwwroot/css/themes/modern.css diff --git a/BTCPayServer/HostedServices/CssThemeManager.cs b/BTCPayServer/HostedServices/CssThemeManager.cs index b1abd3479..8c1814206 100644 --- a/BTCPayServer/HostedServices/CssThemeManager.cs +++ b/BTCPayServer/HostedServices/CssThemeManager.cs @@ -22,17 +22,17 @@ namespace BTCPayServer.HostedServices public void Update(ThemeSettings data) { if (String.IsNullOrWhiteSpace(data.ThemeCssUri)) - _themeUri = "/css/modern-theme.css"; + _themeUri = "/css/themes/classic.css"; else _themeUri = data.ThemeCssUri; if (String.IsNullOrWhiteSpace(data.BootstrapCssUri)) - _bootstrapUri = "/vendor/bootstrap/bootstrap.css"; + _bootstrapUri = "/css/bootstrap.css"; else _bootstrapUri = data.BootstrapCssUri; if (String.IsNullOrWhiteSpace(data.CreativeStartCssUri)) - _creativeStartUri = "/vendor/bootstrap4-creativestart/creative.css?v=" + DateTime.Now.Ticks; + _creativeStartUri = "/css/creative.css"; else _creativeStartUri = data.CreativeStartCssUri; FirstRun = data.FirstRun; diff --git a/BTCPayServer/Views/Server/Theme.cshtml b/BTCPayServer/Views/Server/Theme.cshtml index b488f06fc..f0493720a 100644 --- a/BTCPayServer/Views/Server/Theme.cshtml +++ b/BTCPayServer/Views/Server/Theme.cshtml @@ -35,11 +35,10 @@
-
diff --git a/BTCPayServer/bundleconfig.json b/BTCPayServer/bundleconfig.json index 5a31f6602..7d97f7910 100644 --- a/BTCPayServer/bundleconfig.json +++ b/BTCPayServer/bundleconfig.json @@ -2,7 +2,7 @@ { "outputFileName": "wwwroot/bundles/main-bundle.min.css", "inputFiles": [ - "wwwroot/vendor/bootstrap4-creativestart/Open-Sans.css", + "wwwroot/css/fonts.css", "wwwroot/vendor/magnific-popup/magnific-popup.css", "wwwroot/vendor/font-awesome/css/font-awesome.css", "wwwroot/main/**/*.css", diff --git a/BTCPayServer/wwwroot/vendor/bootstrap/bootstrap.css b/BTCPayServer/wwwroot/css/bootstrap.css similarity index 96% rename from BTCPayServer/wwwroot/vendor/bootstrap/bootstrap.css rename to BTCPayServer/wwwroot/css/bootstrap.css index 07d1bf158..c1bf9f810 100644 --- a/BTCPayServer/wwwroot/vendor/bootstrap/bootstrap.css +++ b/BTCPayServer/wwwroot/css/bootstrap.css @@ -152,7 +152,7 @@ table { caption { padding-top: 0.75rem; padding-bottom: 0.75rem; - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); text-align: left; caption-side: bottom; } @@ -361,7 +361,7 @@ mark, .blockquote-footer { display: block; font-size: 80%; - color: var(--btcpay-color-gray-600); } + color: var(--btcpay-color-neutral-600); } .blockquote-footer::before { content: "\2014\00A0"; } @@ -372,7 +372,7 @@ mark, .img-thumbnail { padding: 0.25rem; background-color: var(--btcpay-bg-body); - border: 1px solid var(--btcpay-color-gray-300); + border: 1px solid var(--btcpay-color-neutral-300); border-radius: 0.25rem; max-width: 100%; height: auto; } @@ -386,7 +386,7 @@ mark, .figure-caption { font-size: 90%; - color: var(--btcpay-color-gray-600); } + color: var(--btcpay-color-neutral-600); } code { font-size: 87.5%; @@ -399,7 +399,7 @@ kbd { padding: 0.2rem 0.4rem; font-size: 87.5%; color: var(--btcpay-color-white); - background-color: var(--btcpay-color-gray-900); + background-color: var(--btcpay-color-neutral-900); border-radius: 0.2rem; } kbd kbd { padding: 0; @@ -409,7 +409,7 @@ kbd { pre { display: block; font-size: 87.5%; - color: var(--btcpay-color-gray-900); } + color: var(--btcpay-color-neutral-900); } pre code { font-size: inherit; color: inherit; @@ -1014,22 +1014,22 @@ pre { .table td { padding: 0.75rem; vertical-align: top; - border-top: 1px solid var(--btcpay-color-gray-300); } + border-top: 1px solid var(--btcpay-color-neutral-300); } .table thead th { vertical-align: bottom; - border-bottom: 2px solid var(--btcpay-color-gray-300); } + border-bottom: 2px solid var(--btcpay-color-neutral-300); } .table tbody + tbody { - border-top: 2px solid var(--btcpay-color-gray-300); } + border-top: 2px solid var(--btcpay-color-neutral-300); } .table-sm th, .table-sm td { padding: 0.3rem; } .table-bordered { - border: 1px solid var(--btcpay-color-gray-300); } + border: 1px solid var(--btcpay-color-neutral-300); } .table-bordered th, .table-bordered td { - border: 1px solid var(--btcpay-color-gray-300); } + border: 1px solid var(--btcpay-color-neutral-300); } .table-bordered thead th, .table-bordered thead td { border-bottom-width: 2px; } @@ -1196,21 +1196,21 @@ pre { .table .thead-dark th { color: var(--btcpay-color-white); - background-color: var(--btcpay-color-gray-800); - border-color: var(--btcpay-color-gray-700); } + background-color: var(--btcpay-color-neutral-800); + border-color: var(--btcpay-color-neutral-700); } .table .thead-light th { - color: var(--btcpay-color-gray-700); - background-color: var(--btcpay-color-gray-200); - border-color: var(--btcpay-color-gray-300); } + color: var(--btcpay-color-neutral-700); + background-color: var(--btcpay-color-neutral-200); + border-color: var(--btcpay-color-neutral-300); } .table-dark { color: var(--btcpay-color-white); - background-color: var(--btcpay-color-gray-800); } + background-color: var(--btcpay-color-neutral-800); } .table-dark th, .table-dark td, .table-dark thead th { - border-color: var(--btcpay-color-gray-700); } + border-color: var(--btcpay-color-neutral-700); } .table-dark.table-bordered { border: 0; } .table-dark.table-striped tbody tr:nth-of-type(odd) { @@ -1271,10 +1271,10 @@ pre { font-size: 1rem; font-weight: 400; line-height: 1.5; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); background-color: var(--btcpay-color-white); background-clip: padding-box; - border: 1px solid var(--btcpay-color-gray-400); + border: 1px solid var(--btcpay-color-neutral-400); border-radius: 0.25rem; transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } @media (prefers-reduced-motion: reduce) { @@ -1284,20 +1284,20 @@ pre { background-color: transparent; border: 0; } .form-control:focus { - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); background-color: var(--btcpay-color-white); border-color: var(--btcpay-color-primary-alpha); outline: 0; box-shadow: 0 0 0 0.2rem var(--btcpay-color-primary-alpha); } .form-control::placeholder { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); opacity: 1; } .form-control:disabled, .form-control[readonly] { - background-color: var(--btcpay-color-gray-200); + background-color: var(--btcpay-color-neutral-200); opacity: 1; } select.form-control:focus::-ms-value { - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); background-color: var(--btcpay-color-white); } .form-control-file, @@ -1386,7 +1386,7 @@ textarea.form-control { margin-top: 0.3rem; margin-left: -1.25rem; } .form-check-input:disabled ~ .form-check-label { - color: var(--btcpay-color-gray-600); } + color: var(--btcpay-color-neutral-600); } .form-check-label { margin-bottom: 0; } @@ -1445,7 +1445,7 @@ textarea.form-control { .was-validated .custom-select:valid, .custom-select.is-valid { border-color: var(--btcpay-color-success); padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='var(--btcpay-color-gray-800)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='var(--btcpay-color-neutral-800)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } .was-validated .custom-select:valid:focus, .custom-select.is-valid:focus { border-color: var(--btcpay-color-success); box-shadow: 0 0 0 0.2rem var(--btcpay-color-success-alpha); } @@ -1542,7 +1542,7 @@ textarea.form-control { .was-validated .custom-select:invalid, .custom-select.is-invalid { border-color: var(--btcpay-color-danger); padding-right: calc((1em + 0.75rem) * 3 / 4 + 1.75rem); - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='var(--btcpay-color-gray-800)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='var(--btcpay-color-neutral-800)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='%23dc3545' viewBox='-2 -2 7 7'%3e%3cpath stroke='%23dc3545' d='M0 0l3 3m0-3L0 3'/%3e%3ccircle r='.5'/%3e%3ccircle cx='3' r='.5'/%3e%3ccircle cy='3' r='.5'/%3e%3ccircle cx='3' cy='3' r='.5'/%3e%3c/svg%3E") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); } .was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus { border-color: var(--btcpay-color-danger); box-shadow: 0 0 0 0.2rem var(--btcpay-color-danger-alpha); } @@ -1764,22 +1764,22 @@ fieldset:disabled a.btn { box-shadow: 0 0 0 0.2rem var(--btcpay-color-info-alpha); } .btn-warning { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning); border-color: var(--btcpay-color-warning); } .btn-warning:hover { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning-dark); border-color: var(--btcpay-color-warning-dark); } .btn-warning:focus, .btn-warning.focus { box-shadow: 0 0 0 0.2rem var(--btcpay-color-warning-alpha); } .btn-warning.disabled, .btn-warning:disabled { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning); border-color: var(--btcpay-color-warning); } .btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active, .show > .btn-warning.dropdown-toggle { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning-dark); border-color: var(--btcpay-color-warning-dark); } .btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus, @@ -1810,22 +1810,22 @@ fieldset:disabled a.btn { box-shadow: 0 0 0 0.2rem var(--btcpay-color-danger-alpha); } .btn-light { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light); border-color: var(--btcpay-color-light); } .btn-light:hover { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light-dark); border-color: var(--btcpay-color-light-dark); } .btn-light:focus, .btn-light.focus { box-shadow: 0 0 0 0.2rem var(--btcpay-color-light-alpha); } .btn-light.disabled, .btn-light:disabled { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light); border-color: var(--btcpay-color-light); } .btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active, .show > .btn-light.dropdown-toggle { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light-dark); border-color: var(--btcpay-color-light-dark); } .btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus, @@ -1943,7 +1943,7 @@ fieldset:disabled a.btn { color: var(--btcpay-color-warning); border-color: var(--btcpay-color-warning); } .btn-outline-warning:hover { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning); border-color: var(--btcpay-color-warning); } .btn-outline-warning:focus, .btn-outline-warning.focus { @@ -1953,7 +1953,7 @@ fieldset:disabled a.btn { background-color: transparent; } .btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active, .show > .btn-outline-warning.dropdown-toggle { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning); border-color: var(--btcpay-color-warning); } .btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus, @@ -1985,7 +1985,7 @@ fieldset:disabled a.btn { color: var(--btcpay-color-light); border-color: var(--btcpay-color-light); } .btn-outline-light:hover { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light); border-color: var(--btcpay-color-light); } .btn-outline-light:focus, .btn-outline-light.focus { @@ -1995,7 +1995,7 @@ fieldset:disabled a.btn { background-color: transparent; } .btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active, .show > .btn-outline-light.dropdown-toggle { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light); border-color: var(--btcpay-color-light); } .btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus, @@ -2034,7 +2034,7 @@ fieldset:disabled a.btn { text-decoration: underline; box-shadow: none; } .btn-link:disabled, .btn-link.disabled { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); pointer-events: none; } .btn-lg, .btn-group-lg > .btn { @@ -2240,7 +2240,7 @@ input[type="button"].btn-block { height: 0; margin: 0.5rem 0; overflow: hidden; - border-top: 1px solid var(--btcpay-color-gray-200); } + border-top: 1px solid var(--btcpay-color-neutral-200); } .dropdown-item { display: block; @@ -2248,7 +2248,7 @@ input[type="button"].btn-block { padding: 0.25rem 1.5rem; clear: both; font-weight: 400; - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); text-align: inherit; white-space: nowrap; background-color: transparent; @@ -2256,13 +2256,13 @@ input[type="button"].btn-block { .dropdown-item:hover, .dropdown-item:focus { color: #16181b; text-decoration: none; - background-color: var(--btcpay-color-gray-100); } + background-color: var(--btcpay-color-neutral-100); } .dropdown-item.active, .dropdown-item:active { color: var(--btcpay-color-white); text-decoration: none; background-color: var(--btcpay-color-primary); } .dropdown-item.disabled, .dropdown-item:disabled { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); pointer-events: none; background-color: transparent; } @@ -2274,13 +2274,13 @@ input[type="button"].btn-block { padding: 0.5rem 1.5rem; margin-bottom: 0; font-size: 0.875rem; - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); white-space: nowrap; } .dropdown-item-text { display: block; padding: 0.25rem 1.5rem; - color: var(--btcpay-color-gray-900); } + color: var(--btcpay-color-neutral-900); } .btn-group, .btn-group-vertical { @@ -2455,11 +2455,11 @@ input[type="button"].btn-block { font-size: 1rem; font-weight: 400; line-height: 1.5; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); text-align: center; white-space: nowrap; - background-color: var(--btcpay-color-gray-200); - border: 1px solid var(--btcpay-color-gray-400); + background-color: var(--btcpay-color-neutral-200); + border: 1px solid var(--btcpay-color-neutral-400); border-radius: 0.25rem; } .input-group-text input[type="radio"], .input-group-text input[type="checkbox"] { @@ -2544,9 +2544,9 @@ input[type="button"].btn-block { background-color: var(--btcpay-color-primary-alpha); border-color: var(--btcpay-color-primary-alpha); } .custom-control-input:disabled ~ .custom-control-label { - color: var(--btcpay-color-gray-600); } + color: var(--btcpay-color-neutral-600); } .custom-control-input:disabled ~ .custom-control-label::before { - background-color: var(--btcpay-color-gray-200); } + background-color: var(--btcpay-color-neutral-200); } .custom-control-label { position: relative; @@ -2562,7 +2562,7 @@ input[type="button"].btn-block { pointer-events: none; content: ""; background-color: var(--btcpay-color-white); - border: var(--btcpay-color-gray-500) solid 1px; } + border: var(--btcpay-color-neutral-500) solid 1px; } .custom-control-label::after { position: absolute; top: 0.25rem; @@ -2613,7 +2613,7 @@ input[type="button"].btn-block { left: calc(-2.25rem + 2px); width: calc(1rem - 4px); height: calc(1rem - 4px); - background-color: var(--btcpay-color-gray-500); + background-color: var(--btcpay-color-neutral-500); border-radius: 0.5rem; transition: transform 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } @media (prefers-reduced-motion: reduce) { @@ -2633,11 +2633,11 @@ input[type="button"].btn-block { font-size: 1rem; font-weight: 400; line-height: 1.5; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); vertical-align: middle; - background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='var(--btcpay-color-gray-800)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; + background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='var(--btcpay-color-neutral-800)' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px; background-color: var(--btcpay-color-white); - border: 1px solid var(--btcpay-color-gray-400); + border: 1px solid var(--btcpay-color-neutral-400); border-radius: 0.25rem; appearance: none; } .custom-select:focus { @@ -2645,15 +2645,15 @@ input[type="button"].btn-block { outline: 0; box-shadow: 0 0 0 0.2rem var(--btcpay-color-primary-alpha); } .custom-select:focus::-ms-value { - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); background-color: var(--btcpay-color-white); } .custom-select[multiple], .custom-select[size]:not([size="1"]) { height: auto; padding-right: 0.75rem; background-image: none; } .custom-select:disabled { - color: var(--btcpay-color-gray-600); - background-color: var(--btcpay-color-gray-200); } + color: var(--btcpay-color-neutral-600); + background-color: var(--btcpay-color-neutral-200); } .custom-select::-ms-expand { display: none; } @@ -2689,7 +2689,7 @@ input[type="button"].btn-block { border-color: var(--btcpay-color-primary-alpha); box-shadow: 0 0 0 0.2rem var(--btcpay-color-primary-alpha); } .custom-file-input:disabled ~ .custom-file-label { - background-color: var(--btcpay-color-gray-200); } + background-color: var(--btcpay-color-neutral-200); } .custom-file-input:lang(en) ~ .custom-file-label::after { content: "Browse"; } .custom-file-input ~ .custom-file-label[data-browse]::after { @@ -2705,9 +2705,9 @@ input[type="button"].btn-block { padding: 0.375rem 0.75rem; font-weight: 400; line-height: 1.5; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); background-color: var(--btcpay-color-white); - border: 1px solid var(--btcpay-color-gray-400); + border: 1px solid var(--btcpay-color-neutral-400); border-radius: 0.25rem; } .custom-file-label::after { position: absolute; @@ -2719,9 +2719,9 @@ input[type="button"].btn-block { height: calc(1.5em + 0.75rem); padding: 0.375rem 0.75rem; line-height: 1.5; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); content: "Browse"; - background-color: var(--btcpay-color-gray-200); + background-color: var(--btcpay-color-neutral-200); border-left: inherit; border-radius: 0 0.25rem 0.25rem 0; } @@ -2760,7 +2760,7 @@ input[type="button"].btn-block { height: 0.5rem; color: transparent; cursor: pointer; - background-color: var(--btcpay-color-gray-300); + background-color: var(--btcpay-color-neutral-300); border-color: transparent; border-radius: 1rem; } .custom-range::-moz-range-thumb { @@ -2781,7 +2781,7 @@ input[type="button"].btn-block { height: 0.5rem; color: transparent; cursor: pointer; - background-color: var(--btcpay-color-gray-300); + background-color: var(--btcpay-color-neutral-300); border-color: transparent; border-radius: 1rem; } .custom-range::-ms-thumb { @@ -2809,22 +2809,22 @@ input[type="button"].btn-block { border-color: transparent; border-width: 0.5rem; } .custom-range::-ms-fill-lower { - background-color: var(--btcpay-color-gray-300); + background-color: var(--btcpay-color-neutral-300); border-radius: 1rem; } .custom-range::-ms-fill-upper { margin-right: 15px; - background-color: var(--btcpay-color-gray-300); + background-color: var(--btcpay-color-neutral-300); border-radius: 1rem; } .custom-range:disabled::-webkit-slider-thumb { - background-color: var(--btcpay-color-gray-500); } + background-color: var(--btcpay-color-neutral-500); } .custom-range:disabled::-webkit-slider-runnable-track { cursor: default; } .custom-range:disabled::-moz-range-thumb { - background-color: var(--btcpay-color-gray-500); } + background-color: var(--btcpay-color-neutral-500); } .custom-range:disabled::-moz-range-track { cursor: default; } .custom-range:disabled::-ms-thumb { - background-color: var(--btcpay-color-gray-500); } + background-color: var(--btcpay-color-neutral-500); } .custom-control-label::before, .custom-file-label, @@ -2849,12 +2849,12 @@ input[type="button"].btn-block { .nav-link:hover, .nav-link:focus { text-decoration: none; } .nav-link.disabled { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); pointer-events: none; cursor: default; } .nav-tabs { - border-bottom: 1px solid var(--btcpay-color-gray-300); } + border-bottom: 1px solid var(--btcpay-color-neutral-300); } .nav-tabs .nav-item { margin-bottom: -1px; } .nav-tabs .nav-link { @@ -2862,16 +2862,16 @@ input[type="button"].btn-block { border-top-left-radius: 0.25rem; border-top-right-radius: 0.25rem; } .nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { - border-color: var(--btcpay-color-gray-200) var(--btcpay-color-gray-200) var(--btcpay-color-gray-300); } + border-color: var(--btcpay-color-neutral-200) var(--btcpay-color-neutral-200) var(--btcpay-color-neutral-300); } .nav-tabs .nav-link.disabled { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); background-color: transparent; border-color: transparent; } .nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link { - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); background-color: var(--btcpay-bg-body); - border-color: var(--btcpay-color-gray-300) var(--btcpay-color-gray-300) var(--btcpay-bg-body); } + border-color: var(--btcpay-color-neutral-300) var(--btcpay-color-neutral-300) var(--btcpay-bg-body); } .nav-tabs .dropdown-menu { margin-top: -1px; border-top-left-radius: 0; @@ -3334,7 +3334,7 @@ input[type="button"].btn-block { padding: 0.75rem 1rem; margin-bottom: 1rem; list-style: none; - background-color: var(--btcpay-color-gray-200); + background-color: var(--btcpay-color-neutral-200); border-radius: 0.25rem; } .breadcrumb-item + .breadcrumb-item { @@ -3342,7 +3342,7 @@ input[type="button"].btn-block { .breadcrumb-item + .breadcrumb-item::before { display: inline-block; padding-right: 0.5rem; - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); content: "/"; } .breadcrumb-item + .breadcrumb-item:hover::before { @@ -3352,7 +3352,7 @@ input[type="button"].btn-block { text-decoration: none; } .breadcrumb-item.active { - color: var(--btcpay-color-gray-600); } + color: var(--btcpay-color-neutral-600); } .pagination { display: flex; @@ -3368,13 +3368,13 @@ input[type="button"].btn-block { line-height: 1.25; color: var(--btcpay-color-link); background-color: var(--btcpay-color-white); - border: 1px solid var(--btcpay-color-gray-300); } + border: 1px solid var(--btcpay-color-neutral-300); } .page-link:hover { z-index: 2; color: var(--btcpay-color-link-hover); text-decoration: none; - background-color: var(--btcpay-color-gray-200); - border-color: var(--btcpay-color-gray-300); } + background-color: var(--btcpay-color-neutral-200); + border-color: var(--btcpay-color-neutral-300); } .page-link:focus { z-index: 2; outline: 0; @@ -3396,11 +3396,11 @@ input[type="button"].btn-block { border-color: var(--btcpay-color-primary); } .page-item.disabled .page-link { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); pointer-events: none; cursor: auto; background-color: var(--btcpay-color-white); - border-color: var(--btcpay-color-gray-300); } + border-color: var(--btcpay-color-neutral-300); } .pagination-lg .page-link { padding: 0.75rem 1.5rem; @@ -3497,10 +3497,10 @@ input[type="button"].btn-block { box-shadow: 0 0 0 0.2rem var(--btcpay-color-info-alpha); } .badge-warning { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning); } a.badge-warning:hover, a.badge-warning:focus { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-warning-dark); } a.badge-warning:focus, a.badge-warning.focus { outline: 0; @@ -3517,10 +3517,10 @@ input[type="button"].btn-block { box-shadow: 0 0 0 0.2rem var(--btcpay-color-danger-alpha); } .badge-light { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light); } a.badge-light:hover, a.badge-light:focus { - color: var(--btcpay-color-gray-900); + color: var(--btcpay-color-neutral-900); background-color: var(--btcpay-color-light-dark); } a.badge-light:focus, a.badge-light.focus { outline: 0; @@ -3539,7 +3539,7 @@ input[type="button"].btn-block { .jumbotron { padding: 2rem 1rem; margin-bottom: 2rem; - background-color: var(--btcpay-color-gray-200); + background-color: var(--btcpay-color-neutral-200); border-radius: 0.3rem; } @media (min-width: 576px) { .jumbotron { @@ -3655,7 +3655,7 @@ input[type="button"].btn-block { height: 1rem; overflow: hidden; font-size: 0.75rem; - background-color: var(--btcpay-color-gray-200); + background-color: var(--btcpay-color-neutral-200); border-radius: 0.25rem; } .progress-bar { @@ -3696,16 +3696,16 @@ input[type="button"].btn-block { .list-group-item-action { width: 100%; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); text-align: inherit; } .list-group-item-action:hover, .list-group-item-action:focus { z-index: 1; - color: var(--btcpay-color-gray-700); + color: var(--btcpay-color-neutral-700); text-decoration: none; - background-color: var(--btcpay-color-gray-100); } + background-color: var(--btcpay-color-neutral-100); } .list-group-item-action:active { color: var(--btcpay-color-body); - background-color: var(--btcpay-color-gray-200); } + background-color: var(--btcpay-color-neutral-200); } .list-group-item { position: relative; @@ -3722,7 +3722,7 @@ input[type="button"].btn-block { border-bottom-right-radius: 0.25rem; border-bottom-left-radius: 0.25rem; } .list-group-item.disabled, .list-group-item:disabled { - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); pointer-events: none; background-color: var(--btcpay-color-white); } .list-group-item.active { @@ -3960,7 +3960,7 @@ a.close.disabled { display: flex; align-items: center; padding: 0.25rem 0.75rem; - color: var(--btcpay-color-gray-600); + color: var(--btcpay-color-neutral-600); background-color: rgba(255, 255, 255, 0.85); background-clip: padding-box; border-bottom: 1px solid rgba(0, 0, 0, 0.05); } @@ -4058,7 +4058,7 @@ a.close.disabled { align-items: flex-start; justify-content: space-between; padding: 1rem 1rem; - border-bottom: 1px solid var(--btcpay-color-gray-300); + border-bottom: 1px solid var(--btcpay-color-neutral-300); border-top-left-radius: 0.3rem; border-top-right-radius: 0.3rem; } .modal-header .close { @@ -4079,7 +4079,7 @@ a.close.disabled { align-items: center; justify-content: flex-end; padding: 1rem; - border-top: 1px solid var(--btcpay-color-gray-300); + border-top: 1px solid var(--btcpay-color-neutral-300); border-bottom-right-radius: 0.3rem; border-bottom-left-radius: 0.3rem; } .modal-footer > :not(:first-child) { @@ -4601,19 +4601,19 @@ button.bg-dark:focus { background-color: transparent !important; } .border { - border: 1px solid var(--btcpay-color-gray-300) !important; } + border: 1px solid var(--btcpay-color-neutral-300) !important; } .border-top { - border-top: 1px solid var(--btcpay-color-gray-300) !important; } + border-top: 1px solid var(--btcpay-color-neutral-300) !important; } .border-right { - border-right: 1px solid var(--btcpay-color-gray-300) !important; } + border-right: 1px solid var(--btcpay-color-neutral-300) !important; } .border-bottom { - border-bottom: 1px solid var(--btcpay-color-gray-300) !important; } + border-bottom: 1px solid var(--btcpay-color-neutral-300) !important; } .border-left { - border-left: 1px solid var(--btcpay-color-gray-300) !important; } + border-left: 1px solid var(--btcpay-color-neutral-300) !important; } .border-0 { border: 0 !important; } @@ -6908,7 +6908,7 @@ a.text-dark:hover, a.text-dark:focus { color: var(--btcpay-color-body) !important; } .text-muted { - color: var(--btcpay-color-gray-600) !important; } + color: var(--btcpay-color-neutral-600) !important; } .text-black-50 { color: rgba(0, 0, 0, 0.5) !important; } @@ -6953,7 +6953,7 @@ a.text-dark:hover, a.text-dark:focus { white-space: pre-wrap !important; } pre, blockquote { - border: 1px solid var(--btcpay-color-gray-500); + border: 1px solid var(--btcpay-color-neutral-500); page-break-inside: avoid; } thead { display: table-header-group; } @@ -6985,14 +6985,14 @@ a.text-dark:hover, a.text-dark:focus { background-color: var(--btcpay-color-white); } .table-bordered th, .table-bordered td { - border: 1px solid var(--btcpay-color-gray-300) !important; } + border: 1px solid var(--btcpay-color-neutral-300) !important; } .table-dark { color: inherit; } .table-dark th, .table-dark td, .table-dark thead th, .table-dark tbody + tbody { - border-color: var(--btcpay-color-gray-300); } + border-color: var(--btcpay-color-neutral-300); } .table .thead-dark th { color: inherit; - border-color: var(--btcpay-color-gray-300); } } + border-color: var(--btcpay-color-neutral-300); } } diff --git a/BTCPayServer/wwwroot/css/btcpay-theme.css b/BTCPayServer/wwwroot/css/btcpay-theme.css deleted file mode 100644 index 7170fe207..000000000 --- a/BTCPayServer/wwwroot/css/btcpay-theme.css +++ /dev/null @@ -1,76 +0,0 @@ -/* - * BTCPay variables as CSS custom properties. - * -> These get used in the _variables.scss - */ -:root { - --btcpay-accent-light: #CEDC21; - --btcpay-accent-medium: #51B13E; - --btcpay-accent-dark: #137547; - --btcpay-accent-darkest: #0F3B21; - --btcpay-neutral-100: #FBFAF8; - --btcpay-neutral-200: #F5F5F3; - --btcpay-neutral-300: #E5E5E5; - --btcpay-neutral-600: #536E8D; - --btcpay-neutral-700: #465C76; - --btcpay-neutral-900: #202C39; - --btcpay-color-white: #fff; - --btcpay-color-gray-100: #f8f9fa; - --btcpay-color-gray-200: #e9ecef; - --btcpay-color-gray-300: #dee2e6; - --btcpay-color-gray-400: #ced4da; - --btcpay-color-gray-500: #adb5bd; - --btcpay-color-gray-600: #6c757d; - --btcpay-color-gray-700: #495057; - --btcpay-color-gray-800: #343a40; - --btcpay-color-gray-900: #212529; - --btcpay-color-black: #000; - --btcpay-color-blue: #0069d9; - --btcpay-color-indigo: #6610f2; - --btcpay-color-purple: #6f42c1; - --btcpay-color-pink: #e83e8c; - --btcpay-color-red: #dc3545; - --btcpay-color-orange: #ff6f27; - --btcpay-color-yellow: #ffc107; - --btcpay-color-green: #329f80; - --btcpay-color-teal: #20c997; - --btcpay-color-cyan: #17a2b8; - --btcpay-color-primary: var(--btcpay-color-green); - --btcpay-color-primary-dark: #267861; - --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25); - --btcpay-color-secondary: var(--btcpay-color-gray-600); - --btcpay-color-secondary-dark: var(--btcpay-color-gray-800); - --btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25); - --btcpay-color-success: var(--btcpay-color-green); - --btcpay-color-success-dark: #1e7e34; - --btcpay-color-success-alpha: rgba(72, 180, 97, 0.25); - --btcpay-color-info: var(--btcpay-color-cyan); - --btcpay-color-info-dark: #117a8b; - --btcpay-color-info-alpha: rgba(58, 176, 195, 0.25); - --btcpay-color-warning: var(--btcpay-color-yellow); - --btcpay-color-warning-dark: #d39e00; - --btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25); - --btcpay-color-danger: var(--btcpay-color-red); - --btcpay-color-danger-dark: #bd2130; - --btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25); - --btcpay-color-light: var(--btcpay-color-gray-100); - --btcpay-color-light-dark: #dae0e5; - --btcpay-color-light-alpha: rgba(216, 217, 219, 0.25); - --btcpay-color-dark: var(--btcpay-neutral-900); - --btcpay-color-dark-dark: #1d2124; - --btcpay-color-dark-alpha: rgba(82, 88, 93, 0.25); - --btcpay-bg-body: var(--btcpay-color-gray-100); - --btcpay-bg-dark: var(--btcpay-accent-darkest); - --btcpay-color-body: var(--btcpay-color-gray-900); - --btcpay-color-link: var(--btcpay-color-primary); - --btcpay-color-link-hover: var(--btcpay-color-primary-dark); - --btcpay-font-size-base: 14px; - --btcpay-font-family-head: 'Open Sans', 'Helvetica Neue', Arial, sans-serif; - --btcpay-font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --btcpay-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } - -/* Bootstrap modifications */ -html { - font-size: var(--btcpay-font-size-base); } - -.bg-dark { - background-color: var(--btcpay-bg-dark) !important; } diff --git a/BTCPayServer/wwwroot/vendor/bootstrap4-creativestart/creative.css b/BTCPayServer/wwwroot/css/creative.css similarity index 100% rename from BTCPayServer/wwwroot/vendor/bootstrap4-creativestart/creative.css rename to BTCPayServer/wwwroot/css/creative.css diff --git a/BTCPayServer/wwwroot/vendor/bootstrap4-creativestart/Open-Sans.css b/BTCPayServer/wwwroot/css/fonts.css similarity index 100% rename from BTCPayServer/wwwroot/vendor/bootstrap4-creativestart/Open-Sans.css rename to BTCPayServer/wwwroot/css/fonts.css diff --git a/BTCPayServer/wwwroot/css/modern-theme.css b/BTCPayServer/wwwroot/css/modern-theme.css deleted file mode 100644 index 0baf14298..000000000 --- a/BTCPayServer/wwwroot/css/modern-theme.css +++ /dev/null @@ -1,88 +0,0 @@ -/* - * BTCPay variables as CSS custom properties. - * -> These get used in the _variables.scss - */ -:root { - --btcpay-accent-light: #CEDC21; - --btcpay-accent-medium: #51B13E; - --btcpay-accent-dark: #137547; - --btcpay-accent-darkest: #0F3B21; - --btcpay-neutral-100: #FBFAF8; - --btcpay-neutral-200: #F5F5F3; - --btcpay-neutral-300: #E5E5E5; - --btcpay-neutral-600: #536E8D; - --btcpay-neutral-700: #465C76; - --btcpay-neutral-900: #202C39; - --btcpay-color-white: #fff; - --btcpay-color-gray-100: #f8f9fa; - --btcpay-color-gray-200: #e9ecef; - --btcpay-color-gray-300: #dee2e6; - --btcpay-color-gray-400: #ced4da; - --btcpay-color-gray-500: #adb5bd; - --btcpay-color-gray-600: #6c757d; - --btcpay-color-gray-700: #495057; - --btcpay-color-gray-800: #343a40; - --btcpay-color-gray-900: #212529; - --btcpay-color-black: #000; - --btcpay-color-blue: #0069d9; - --btcpay-color-indigo: #6610f2; - --btcpay-color-purple: #6f42c1; - --btcpay-color-pink: #e83e8c; - --btcpay-color-red: #dc3545; - --btcpay-color-orange: #ff6f27; - --btcpay-color-yellow: #ffc107; - --btcpay-color-green: #329f80; - --btcpay-color-teal: #20c997; - --btcpay-color-cyan: #17a2b8; - --btcpay-color-primary: var(--btcpay-color-green); - --btcpay-color-primary-dark: #267861; - --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25); - --btcpay-color-secondary: var(--btcpay-color-gray-600); - --btcpay-color-secondary-dark: var(--btcpay-color-gray-800); - --btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25); - --btcpay-color-success: var(--btcpay-color-green); - --btcpay-color-success-dark: #1e7e34; - --btcpay-color-success-alpha: rgba(72, 180, 97, 0.25); - --btcpay-color-info: var(--btcpay-color-cyan); - --btcpay-color-info-dark: #117a8b; - --btcpay-color-info-alpha: rgba(58, 176, 195, 0.25); - --btcpay-color-warning: var(--btcpay-color-yellow); - --btcpay-color-warning-dark: #d39e00; - --btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25); - --btcpay-color-danger: var(--btcpay-color-red); - --btcpay-color-danger-dark: #bd2130; - --btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25); - --btcpay-color-light: var(--btcpay-color-gray-100); - --btcpay-color-light-dark: #dae0e5; - --btcpay-color-light-alpha: rgba(216, 217, 219, 0.25); - --btcpay-color-dark: var(--btcpay-neutral-900); - --btcpay-color-dark-dark: #1d2124; - --btcpay-color-dark-alpha: rgba(82, 88, 93, 0.25); - --btcpay-bg-body: var(--btcpay-color-gray-100); - --btcpay-bg-dark: var(--btcpay-neutral-900); - --btcpay-color-body: var(--btcpay-color-gray-900); - --btcpay-color-link: var(--btcpay-color-primary); - --btcpay-color-link-hover: var(--btcpay-color-primary-dark); - --btcpay-font-size-base: 16px; - --btcpay-font-family-head: 'Roboto Slab', 'Open Sans', 'Helvetica Neue', Arial, sans-serif; - --btcpay-font-family-base: -apple-system, 'Open Sans', BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --btcpay-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } - -/* Bootstrap modifications */ -@font-face { - font-family:"Roboto Slab"; - font-style:normal; - font-weight:700; - src:local("Roboto Slab Bold"),local("RobotoSlab-Bold"),url(../fonts/RobotoSlab-Bold.ttf) format("woff2"); - unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; -} - -html { - font-size: var(--btcpay-font-size-base); } - -.bg-dark { - background-color: var(--btcpay-bg-dark) !important; } - -header.masthead::before, -.service-box img { - filter: hue-rotate(410deg) saturate(33%); } diff --git a/BTCPayServer/wwwroot/css/themes/classic.css b/BTCPayServer/wwwroot/css/themes/classic.css new file mode 100644 index 000000000..a21b681c2 --- /dev/null +++ b/BTCPayServer/wwwroot/css/themes/classic.css @@ -0,0 +1,77 @@ +/* + * BTCPay variables as CSS custom properties. + * -> These get used in the _variables.scss + */ +:root { + --btcpay-accent-light: #CEDC21; + --btcpay-accent-medium: #51B13E; + --btcpay-accent-dark: #137547; + --btcpay-accent-darkest: #0F3B21; + + --btcpay-color-white: #fff; + --btcpay-color-black: #000; + + --btcpay-color-neutral-100: #f8f9fa; + --btcpay-color-neutral-200: #e9ecef; + --btcpay-color-neutral-300: #dee2e6; + --btcpay-color-neutral-400: #ced4da; + --btcpay-color-neutral-500: #adb5bd; + --btcpay-color-neutral-600: #6c757d; + --btcpay-color-neutral-700: #495057; + --btcpay-color-neutral-800: #343a40; + --btcpay-color-neutral-900: #212529; + + --btcpay-color-blue: #0069d9; + --btcpay-color-indigo: #6610f2; + --btcpay-color-purple: #6f42c1; + --btcpay-color-pink: #e83e8c; + --btcpay-color-red: #dc3545; + --btcpay-color-orange: #ff6f27; + --btcpay-color-yellow: #ffc107; + --btcpay-color-green: #329f80; + --btcpay-color-teal: #20c997; + --btcpay-color-cyan: #17a2b8; + + --btcpay-color-primary: var(--btcpay-color-green); + --btcpay-color-primary-dark: #267861; + --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25); + --btcpay-color-secondary: var(--btcpay-color-gray-600); + --btcpay-color-secondary-dark: var(--btcpay-color-gray-800); + --btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25); + --btcpay-color-success: var(--btcpay-color-green); + --btcpay-color-success-dark: #1e7e34; + --btcpay-color-success-alpha: rgba(72, 180, 97, 0.25); + --btcpay-color-info: var(--btcpay-color-cyan); + --btcpay-color-info-dark: #117a8b; + --btcpay-color-info-alpha: rgba(58, 176, 195, 0.25); + --btcpay-color-warning: var(--btcpay-color-yellow); + --btcpay-color-warning-dark: #d39e00; + --btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25); + --btcpay-color-danger: var(--btcpay-color-red); + --btcpay-color-danger-dark: #bd2130; + --btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25); + --btcpay-color-light: var(--btcpay-color-gray-100); + --btcpay-color-light-dark: #dae0e5; + --btcpay-color-light-alpha: rgba(216, 217, 219, 0.25); + --btcpay-color-dark: var(--btcpay-accent-darkest); + --btcpay-color-dark-dark: #05120a; + --btcpay-color-dark-alpha: rgba(51, 88, 66, 0.25); + + --btcpay-bg-body: var(--btcpay-color-gray-100); + --btcpay-bg-dark: var(--btcpay-accent-darkest); + + --btcpay-color-body: var(--btcpay-color-gray-900); + --btcpay-color-link: var(--btcpay-color-primary); + --btcpay-color-link-hover: var(--btcpay-color-primary-dark); + + --btcpay-font-size-base: 14px; + --btcpay-font-family-head: 'Open Sans', 'Helvetica Neue', Arial, sans-serif; + --btcpay-font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --btcpay-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +/* Bootstrap modifications */ +html { + font-size: var(--btcpay-font-size-base); } + +.bg-dark { + background-color: var(--btcpay-bg-dark) !important; } diff --git a/BTCPayServer/wwwroot/css/themes/modern.css b/BTCPayServer/wwwroot/css/themes/modern.css new file mode 100644 index 000000000..5b6f81b24 --- /dev/null +++ b/BTCPayServer/wwwroot/css/themes/modern.css @@ -0,0 +1,81 @@ +/* + * BTCPay variables as CSS custom properties. + * -> These get used in the _variables.scss + */ +:root { + --btcpay-accent-light: #CEDC21; + --btcpay-accent-medium: #51B13E; + --btcpay-accent-dark: #137547; + --btcpay-accent-darkest: #0F3B21; + + --btcpay-color-white: #fff; + --btcpay-color-black: #000; + + --btcpay-color-neutral-100: #FBFAF8; + --btcpay-color-neutral-200: #F5F5F3; + --btcpay-color-neutral-300: #E5E5E5; + --btcpay-color-neutral-400: #ced4da; + --btcpay-color-neutral-500: #adb5bd; + --btcpay-color-neutral-600: #536E8D; + --btcpay-color-neutral-700: #465C76; + --btcpay-color-neutral-800: #343a40; + --btcpay-color-neutral-900: #202C39; + + --btcpay-color-blue: #0069d9; + --btcpay-color-indigo: #6610f2; + --btcpay-color-purple: #6f42c1; + --btcpay-color-pink: #e83e8c; + --btcpay-color-red: #dc3545; + --btcpay-color-orange: #ff6f27; + --btcpay-color-yellow: #ffc107; + --btcpay-color-green: #329f80; + --btcpay-color-teal: #20c997; + --btcpay-color-cyan: #17a2b8; + + --btcpay-color-primary: var(--btcpay-color-green); + --btcpay-color-primary-dark: #267861; + --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25); + --btcpay-color-secondary: var(--btcpay-color-gray-600); + --btcpay-color-secondary-dark: var(--btcpay-color-gray-800); + --btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25); + --btcpay-color-success: var(--btcpay-color-green); + --btcpay-color-success-dark: #1e7e34; + --btcpay-color-success-alpha: rgba(72, 180, 97, 0.25); + --btcpay-color-info: var(--btcpay-color-cyan); + --btcpay-color-info-dark: #117a8b; + --btcpay-color-info-alpha: rgba(58, 176, 195, 0.25); + --btcpay-color-warning: var(--btcpay-color-yellow); + --btcpay-color-warning-dark: #d39e00; + --btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25); + --btcpay-color-danger: var(--btcpay-color-red); + --btcpay-color-danger-dark: #bd2130; + --btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25); + --btcpay-color-light: var(--btcpay-color-gray-100); + --btcpay-color-light-dark: #dae0e5; + --btcpay-color-light-alpha: rgba(216, 217, 219, 0.25); + --btcpay-color-dark: var(--btcpay-color-neutral-900); + --btcpay-color-dark-dark: #1d2124; + --btcpay-color-dark-alpha: rgba(82, 88, 93, 0.25); + + --btcpay-bg-body: var(--btcpay-color-gray-100); + --btcpay-bg-dark: var(--btcpay-color-neutral-900); + + --btcpay-color-body: var(--btcpay-color-gray-900); + --btcpay-color-link: var(--btcpay-color-primary); + --btcpay-color-link-hover: var(--btcpay-color-primary-dark); + + --btcpay-font-size-base: 16px; + --btcpay-font-family-head: 'Open Sans', 'Helvetica Neue', Arial, sans-serif; + --btcpay-font-family-base: -apple-system, 'Open Sans', BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --btcpay-font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } + +/* Bootstrap modifications */ +html { + font-size: var(--btcpay-font-size-base); } + +.bg-dark { + background-color: var(--btcpay-bg-dark) !important; } + +header.masthead::before, +.service-box img { + filter: hue-rotate(410deg) saturate(33%); } From 5942a840b2f80d7e834715cacd0a4c43e34b5416 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Fri, 1 Nov 2019 16:28:48 +0100 Subject: [PATCH 29/49] Move main bundle files also --- BTCPayServer/bundleconfig.json | 8 ++++---- BTCPayServer/wwwroot/{main => }/css/site.css | 0 BTCPayServer/wwwroot/{main => js}/site.js | 0 3 files changed, 4 insertions(+), 4 deletions(-) rename BTCPayServer/wwwroot/{main => }/css/site.css (100%) rename BTCPayServer/wwwroot/{main => js}/site.js (100%) diff --git a/BTCPayServer/bundleconfig.json b/BTCPayServer/bundleconfig.json index 7d97f7910..de7d69266 100644 --- a/BTCPayServer/bundleconfig.json +++ b/BTCPayServer/bundleconfig.json @@ -2,12 +2,12 @@ { "outputFileName": "wwwroot/bundles/main-bundle.min.css", "inputFiles": [ - "wwwroot/css/fonts.css", "wwwroot/vendor/magnific-popup/magnific-popup.css", "wwwroot/vendor/font-awesome/css/font-awesome.css", - "wwwroot/main/**/*.css", "wwwroot/vendor/animatecss/animate.css", - "wwwroot/vendor/flatpickr/flatpickr.css" + "wwwroot/vendor/flatpickr/flatpickr.css", + "wwwroot/css/fonts.css", + "wwwroot/css/site.css" ] }, { @@ -22,7 +22,7 @@ "wwwroot/vendor/bootstrap4-creativestart/*.js", "wwwroot/vendor/moment/moment.min.js", "wwwroot/vendor/flatpickr/flatpickr.js", - "wwwroot/main/**/*.js" + "wwwroot/main/site.js" ] }, { diff --git a/BTCPayServer/wwwroot/main/css/site.css b/BTCPayServer/wwwroot/css/site.css similarity index 100% rename from BTCPayServer/wwwroot/main/css/site.css rename to BTCPayServer/wwwroot/css/site.css diff --git a/BTCPayServer/wwwroot/main/site.js b/BTCPayServer/wwwroot/js/site.js similarity index 100% rename from BTCPayServer/wwwroot/main/site.js rename to BTCPayServer/wwwroot/js/site.js From 3a9ecd8b3302550ced5555e8726ee9400c669a72 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Fri, 1 Nov 2019 17:29:28 +0100 Subject: [PATCH 30/49] Dissect css rules and simplify color variables --- BTCPayServer/wwwroot/css/bootstrap.css | 2 +- BTCPayServer/wwwroot/css/site.css | 122 ++++++-------------- BTCPayServer/wwwroot/css/themes/classic.css | 70 ++++++++--- BTCPayServer/wwwroot/css/themes/modern.css | 39 +++---- 4 files changed, 105 insertions(+), 128 deletions(-) diff --git a/BTCPayServer/wwwroot/css/bootstrap.css b/BTCPayServer/wwwroot/css/bootstrap.css index c1bf9f810..143d77df4 100644 --- a/BTCPayServer/wwwroot/css/bootstrap.css +++ b/BTCPayServer/wwwroot/css/bootstrap.css @@ -390,7 +390,7 @@ mark, code { font-size: 87.5%; - color: var(--btcpay-color-pink); + color: var(--btcpay-color-info); word-break: break-word; } a > code { color: inherit; } diff --git a/BTCPayServer/wwwroot/css/site.css b/BTCPayServer/wwwroot/css/site.css index 568af150f..0c8ffc162 100644 --- a/BTCPayServer/wwwroot/css/site.css +++ b/BTCPayServer/wwwroot/css/site.css @@ -1,4 +1,5 @@ -html { +/* General and site-wide Bootstrap modifications */ +html { position: relative; min-height: 100%; } @@ -15,89 +16,8 @@ overflow: hidden; } - -.only-for-js, .input-group-clear { - display: none; -} - -#content { - background: #fff; - border: 1px solid #DFE3E8; - padding: 16px; - border-radius: 4px; -} - -.table { - background: #fff; - border: 1px solid #DFE3E8; - border-radius: 4px; - border-collapse: separate !important; - border-spacing: 0px !important; - margin-top: 16px; - margin-bottom: 16px; -} - -.table thead > tr { - height: 36px; -} - -.table thead th { - border-bottom: none; - border-top: none; - vertical-align: middle; - padding: 4px 12px 4px 12px; -} - -.table tbody tr:hover { - background-color: #f8fafc; -} - -.table tr { - height: 36px; -} - - .table th { - display: table-cell; - padding: 4px 12px 4px 12px; - vertical-align: middle; - } - - .table td { - display: table-cell; - padding: 4px 12px 4px 12px; - text-align: left; - color: #12161B; - font-size: 0.8125rem; - font-weight: 400; - vertical-align: middle; - } - -.removetopborder tr:first-child td { - border-top: none; -} - -.removetopborder tr:first-child th { - border-top: none; -} - -a.nav-link { - color: #66788A; -} - -.nav-pills .nav-link.active { - color: var(--gray-dark); - font-weight: 500; -} - -.nav-pills .nav-link.active, -.nav-pills .show > .nav-link { - color: #66788A; - background-color: #d9f7ef; - border-left: 5px solid var(--primary); - font-weight: 500; -} - -.display-when-ledger-connected { +.only-for-js, +.input-group-clear { display: none; } @@ -115,11 +35,6 @@ a.nav-link { } } -.invoice-details a{ - /* Prevent layout from breaking on hyperlinks with very long URLs as the visible text */ - word-break: break-word; -} - .smMaxWidth { max-width: 150px; } @@ -129,3 +44,32 @@ a.nav-link { max-width: 300px; } } + +a.nav-link { + color: var(--btcpay-color-nav-link, var(--btcpay-color-neutral-600)); + background: var(--btcpay-bg-nav-link, transparent); + transition-duration: .2s; + transition-property: background, color; +} + +a.nav-link:focus, +a.nav-link:hover { + color: var(--btcpay-color-nav-link-hover, var(--btcpay-color-neutral-700)); + background: var(--btcpay-bg-nav-link-hover, transparent); +} + +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--btcpay-color-nav-link-active, var(--btcpay-color-neutral-900)); + background: var(--btcpay-bg-nav-link-active, var(--btcpay-color-primary-alpha)); + font-weight: 500; +} + +.display-when-ledger-connected { + display: none; +} + +/* Prevent layout from breaking on hyperlinks with very long URLs as the visible text */ +.invoice-details a { + word-break: break-word; +} diff --git a/BTCPayServer/wwwroot/css/themes/classic.css b/BTCPayServer/wwwroot/css/themes/classic.css index a21b681c2..d53fc6a1a 100644 --- a/BTCPayServer/wwwroot/css/themes/classic.css +++ b/BTCPayServer/wwwroot/css/themes/classic.css @@ -21,33 +21,22 @@ --btcpay-color-neutral-800: #343a40; --btcpay-color-neutral-900: #212529; - --btcpay-color-blue: #0069d9; - --btcpay-color-indigo: #6610f2; - --btcpay-color-purple: #6f42c1; - --btcpay-color-pink: #e83e8c; - --btcpay-color-red: #dc3545; - --btcpay-color-orange: #ff6f27; - --btcpay-color-yellow: #ffc107; - --btcpay-color-green: #329f80; - --btcpay-color-teal: #20c997; - --btcpay-color-cyan: #17a2b8; - - --btcpay-color-primary: var(--btcpay-color-green); + --btcpay-color-primary: #329f80; --btcpay-color-primary-dark: #267861; --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25); --btcpay-color-secondary: var(--btcpay-color-gray-600); --btcpay-color-secondary-dark: var(--btcpay-color-gray-800); --btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25); - --btcpay-color-success: var(--btcpay-color-green); + --btcpay-color-success: #329f80; --btcpay-color-success-dark: #1e7e34; --btcpay-color-success-alpha: rgba(72, 180, 97, 0.25); - --btcpay-color-info: var(--btcpay-color-cyan); + --btcpay-color-info: #17a2b8; --btcpay-color-info-dark: #117a8b; --btcpay-color-info-alpha: rgba(58, 176, 195, 0.25); - --btcpay-color-warning: var(--btcpay-color-yellow); + --btcpay-color-warning: #ffc107; --btcpay-color-warning-dark: #d39e00; --btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25); - --btcpay-color-danger: var(--btcpay-color-red); + --btcpay-color-danger: #dc3545; --btcpay-color-danger-dark: #bd2130; --btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25); --btcpay-color-light: var(--btcpay-color-gray-100); @@ -71,7 +60,52 @@ /* Bootstrap modifications */ html { - font-size: var(--btcpay-font-size-base); } + font-size: var(--btcpay-font-size-base); +} .bg-dark { - background-color: var(--btcpay-bg-dark) !important; } + background-color: var(--btcpay-bg-dark) !important; +} + +.table { + margin: 16px 0; + border: 1px solid var(--btcpay-color-neutral-300); + border-radius: 4px; + border-collapse: separate !important; + border-spacing: 0px !important; +} + +.table thead > tr { + height: 36px; +} + +.table thead th { + border-bottom: none; + border-top: none; +} + +.table tbody tr:hover { + background-color: #f8fafc; +} + +.table tr { + height: 36px; +} + +.table th, +.table td { + display: table-cell; + padding: 4px 12px; + vertical-align: middle; +} + +.table td { + text-align: left; + font-size: 0.8125rem; + font-weight: 400; +} + +.removetopborder tr:first-child th, +.removetopborder tr:first-child td { + border-top: none; +} diff --git a/BTCPayServer/wwwroot/css/themes/modern.css b/BTCPayServer/wwwroot/css/themes/modern.css index 5b6f81b24..490f52fb4 100644 --- a/BTCPayServer/wwwroot/css/themes/modern.css +++ b/BTCPayServer/wwwroot/css/themes/modern.css @@ -21,33 +21,22 @@ --btcpay-color-neutral-800: #343a40; --btcpay-color-neutral-900: #202C39; - --btcpay-color-blue: #0069d9; - --btcpay-color-indigo: #6610f2; - --btcpay-color-purple: #6f42c1; - --btcpay-color-pink: #e83e8c; - --btcpay-color-red: #dc3545; - --btcpay-color-orange: #ff6f27; - --btcpay-color-yellow: #ffc107; - --btcpay-color-green: #329f80; - --btcpay-color-teal: #20c997; - --btcpay-color-cyan: #17a2b8; - - --btcpay-color-primary: var(--btcpay-color-green); + --btcpay-color-primary: #329f80; --btcpay-color-primary-dark: #267861; - --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.25); + --btcpay-color-primary-alpha: rgba(81, 173, 147, 0.2); --btcpay-color-secondary: var(--btcpay-color-gray-600); --btcpay-color-secondary-dark: var(--btcpay-color-gray-800); --btcpay-color-secondary-alpha: rgba(130, 138, 145, 0.25); - --btcpay-color-success: var(--btcpay-color-green); + --btcpay-color-success: #329f80; --btcpay-color-success-dark: #1e7e34; --btcpay-color-success-alpha: rgba(72, 180, 97, 0.25); - --btcpay-color-info: var(--btcpay-color-cyan); + --btcpay-color-info: #17a2b8; --btcpay-color-info-dark: #117a8b; --btcpay-color-info-alpha: rgba(58, 176, 195, 0.25); - --btcpay-color-warning: var(--btcpay-color-yellow); + --btcpay-color-warning: #ffc107; --btcpay-color-warning-dark: #d39e00; - --btcpay-color-warning-alpha: rgba(2 22, 170, 12, 0.25); - --btcpay-color-danger: var(--btcpay-color-red); + --btcpay-color-warning-alpha: rgba(222, 170, 12, 0.25); + --btcpay-color-danger: #dc3545; --btcpay-color-danger-dark: #bd2130; --btcpay-color-danger-alpha: rgba(225, 83, 97, 0.25); --btcpay-color-light: var(--btcpay-color-gray-100); @@ -71,11 +60,21 @@ /* Bootstrap modifications */ html { - font-size: var(--btcpay-font-size-base); } + font-size: var(--btcpay-font-size-base); +} .bg-dark { - background-color: var(--btcpay-bg-dark) !important; } + background-color: var(--btcpay-bg-dark) !important; +} header.masthead::before, .service-box img { filter: hue-rotate(410deg) saturate(33%); } + +.table { + margin: 24px 0 48px; +} + +.table th { + border-top: 0; +} From 50bf55cbdff5e95c5a625b5843d79c3e43a2a3c8 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Fri, 1 Nov 2019 21:55:05 +0100 Subject: [PATCH 31/49] Unify section headings --- BTCPayServer/Views/Account/ForgotPassword.cshtml | 4 ++-- BTCPayServer/Views/Account/Lockout.cshtml | 4 ++-- BTCPayServer/Views/Account/LoginWith2fa.cshtml | 6 +++--- .../Views/Account/LoginWithRecoveryCode.cshtml | 4 ++-- BTCPayServer/Views/Account/LoginWithU2F.cshtml | 6 +++--- BTCPayServer/Views/Account/SecondaryLogin.cshtml | 14 +++++++------- BTCPayServer/Views/Apps/CreateApp.cshtml | 4 ++-- BTCPayServer/Views/Apps/ListApps.cshtml | 4 ++-- BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml | 4 ++-- BTCPayServer/Views/Apps/UpdatePointOfSale.cshtml | 4 ++-- BTCPayServer/Views/Authorization/Authorize.cshtml | 4 ++-- BTCPayServer/Views/Home/BitpayTranslator.cshtml | 4 ++-- BTCPayServer/Views/Home/Home.cshtml | 9 +++++---- BTCPayServer/Views/Invoice/CreateInvoice.cshtml | 4 ++-- BTCPayServer/Views/Invoice/Invoice.cshtml | 4 ++-- BTCPayServer/Views/Invoice/ListInvoices.cshtml | 4 ++-- .../Views/PaymentRequest/EditPaymentRequest.cshtml | 4 ++-- .../Views/PaymentRequest/GetPaymentRequests.cshtml | 5 +++-- BTCPayServer/Views/Shared/_NavLayout.cshtml | 4 ++-- BTCPayServer/Views/Stores/RequestPairing.cshtml | 4 ++-- BTCPayServer/Views/UserStores/CreateStore.cshtml | 4 ++-- BTCPayServer/Views/UserStores/ListStores.cshtml | 4 ++-- BTCPayServer/Views/Wallets/ListWallets.cshtml | 4 ++-- BTCPayServer/Views/Wallets/WalletPSBTReady.cshtml | 4 ++-- BTCPayServer/wwwroot/css/creative.css | 11 ++++++----- BTCPayServer/wwwroot/css/site.css | 4 ++++ BTCPayServer/wwwroot/css/themes/classic.css | 2 +- BTCPayServer/wwwroot/css/themes/modern.css | 4 +++- 28 files changed, 73 insertions(+), 64 deletions(-) diff --git a/BTCPayServer/Views/Account/ForgotPassword.cshtml b/BTCPayServer/Views/Account/ForgotPassword.cshtml index 48d7fc087..5c3262a8b 100644 --- a/BTCPayServer/Views/Account/ForgotPassword.cshtml +++ b/BTCPayServer/Views/Account/ForgotPassword.cshtml @@ -14,8 +14,8 @@ }
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Account/Lockout.cshtml b/BTCPayServer/Views/Account/Lockout.cshtml index 4d8c0e1cf..d7bc0e07e 100644 --- a/BTCPayServer/Views/Account/Lockout.cshtml +++ b/BTCPayServer/Views/Account/Lockout.cshtml @@ -5,8 +5,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Account/LoginWith2fa.cshtml b/BTCPayServer/Views/Account/LoginWith2fa.cshtml index 2438df386..166aebff0 100644 --- a/BTCPayServer/Views/Account/LoginWith2fa.cshtml +++ b/BTCPayServer/Views/Account/LoginWith2fa.cshtml @@ -3,8 +3,8 @@
-
-

Two-factor authentication

+
+

Two-factor authentication


@@ -28,7 +28,7 @@
- +
diff --git a/BTCPayServer/Views/Account/LoginWithRecoveryCode.cshtml b/BTCPayServer/Views/Account/LoginWithRecoveryCode.cshtml index 6298b2c96..1af51bcaa 100644 --- a/BTCPayServer/Views/Account/LoginWithRecoveryCode.cshtml +++ b/BTCPayServer/Views/Account/LoginWithRecoveryCode.cshtml @@ -8,8 +8,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


You have requested to login with a recovery code. This login will not be remembered until you provide diff --git a/BTCPayServer/Views/Account/LoginWithU2F.cshtml b/BTCPayServer/Views/Account/LoginWithU2F.cshtml index e7b832382..97949f43d 100644 --- a/BTCPayServer/Views/Account/LoginWithU2F.cshtml +++ b/BTCPayServer/Views/Account/LoginWithU2F.cshtml @@ -16,10 +16,10 @@

-
-

U2F Authentication

+
+

U2F Authentication


- +

Insert your U2F device or a hardware wallet into your computer's USB port. If it has a button, tap on it.

diff --git a/BTCPayServer/Views/Account/SecondaryLogin.cshtml b/BTCPayServer/Views/Account/SecondaryLogin.cshtml index 4c6c2dd5e..1d985d167 100644 --- a/BTCPayServer/Views/Account/SecondaryLogin.cshtml +++ b/BTCPayServer/Views/Account/SecondaryLogin.cshtml @@ -8,24 +8,24 @@ @if (Model.LoginWith2FaViewModel != null && Model.LoginWithU2FViewModel != null) {
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


- +
}else if (Model.LoginWith2FaViewModel == null && Model.LoginWithU2FViewModel == null) {
-
-

Both 2FA and U2F Authentication Methods are not available. Please go to the https endpoint

+
+

Both 2FA and U2F Authentication Methods are not available. Please go to the https endpoint


} - - + +
@if (Model.LoginWith2FaViewModel != null) { diff --git a/BTCPayServer/Views/Apps/CreateApp.cshtml b/BTCPayServer/Views/Apps/CreateApp.cshtml index 50bc80c55..09ca302c6 100644 --- a/BTCPayServer/Views/Apps/CreateApp.cshtml +++ b/BTCPayServer/Views/Apps/CreateApp.cshtml @@ -5,8 +5,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Apps/ListApps.cshtml b/BTCPayServer/Views/Apps/ListApps.cshtml index 88632663d..db1b81dc0 100644 --- a/BTCPayServer/Views/Apps/ListApps.cshtml +++ b/BTCPayServer/Views/Apps/ListApps.cshtml @@ -14,8 +14,8 @@
}
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


Create and manage apps.

diff --git a/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml b/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml index ef6d272b7..ffcb90361 100644 --- a/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml +++ b/BTCPayServer/Views/Apps/UpdateCrowdfund.cshtml @@ -25,8 +25,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Apps/UpdatePointOfSale.cshtml b/BTCPayServer/Views/Apps/UpdatePointOfSale.cshtml index bdb1c9900..0e412913b 100644 --- a/BTCPayServer/Views/Apps/UpdatePointOfSale.cshtml +++ b/BTCPayServer/Views/Apps/UpdatePointOfSale.cshtml @@ -25,8 +25,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Authorization/Authorize.cshtml b/BTCPayServer/Views/Authorization/Authorize.cshtml index f4d9cb170..57085b8d9 100644 --- a/BTCPayServer/Views/Authorization/Authorize.cshtml +++ b/BTCPayServer/Views/Authorization/Authorize.cshtml @@ -14,8 +14,8 @@
-
-

Authorization Request

+
+

Authorization Request


@Model.ApplicationName is requesting access to your account.

diff --git a/BTCPayServer/Views/Home/BitpayTranslator.cshtml b/BTCPayServer/Views/Home/BitpayTranslator.cshtml index 98b25abd1..302563c85 100644 --- a/BTCPayServer/Views/Home/BitpayTranslator.cshtml +++ b/BTCPayServer/Views/Home/BitpayTranslator.cshtml @@ -21,8 +21,8 @@
}
-
-

The Bitpay Translator

+
+

The Bitpay Translator


Bitpay is using a deprecated standard in their invoices that most wallets do not support. Use this tool to transform their invoices to a regular address/amount.

diff --git a/BTCPayServer/Views/Home/Home.cshtml b/BTCPayServer/Views/Home/Home.cshtml index 5aec22c65..07912c8ed 100644 --- a/BTCPayServer/Views/Home/Home.cshtml +++ b/BTCPayServer/Views/Home/Home.cshtml @@ -19,7 +19,7 @@
-

A Payment Server for Bitcoin

+

A Payment Server for Bitcoin


@@ -73,7 +73,7 @@
-

Donate

+

Donate


BTCPay Server is proudly free and open-source, built and maintained
by a world-wide community of passionate contributors.
@@ -92,7 +92,7 @@

-

Let's Get In Touch!

+

Let's Get In Touch!


An open source project is nothing without its community
@@ -100,6 +100,8 @@

+
+
- diff --git a/BTCPayServer/Views/Invoice/CreateInvoice.cshtml b/BTCPayServer/Views/Invoice/CreateInvoice.cshtml index 0edee5a80..5ba652967 100644 --- a/BTCPayServer/Views/Invoice/CreateInvoice.cshtml +++ b/BTCPayServer/Views/Invoice/CreateInvoice.cshtml @@ -13,8 +13,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Invoice/Invoice.cshtml b/BTCPayServer/Views/Invoice/Invoice.cshtml index 099b21692..f49544c58 100644 --- a/BTCPayServer/Views/Invoice/Invoice.cshtml +++ b/BTCPayServer/Views/Invoice/Invoice.cshtml @@ -27,8 +27,8 @@ }
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/Invoice/ListInvoices.cshtml b/BTCPayServer/Views/Invoice/ListInvoices.cshtml index 5dd86093f..49c4653c9 100644 --- a/BTCPayServer/Views/Invoice/ListInvoices.cshtml +++ b/BTCPayServer/Views/Invoice/ListInvoices.cshtml @@ -18,8 +18,8 @@ }
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


Create, search or pay an invoice. (Help)

diff --git a/BTCPayServer/Views/PaymentRequest/EditPaymentRequest.cshtml b/BTCPayServer/Views/PaymentRequest/EditPaymentRequest.cshtml index 5bb6cccf7..5d5ce1d24 100644 --- a/BTCPayServer/Views/PaymentRequest/EditPaymentRequest.cshtml +++ b/BTCPayServer/Views/PaymentRequest/EditPaymentRequest.cshtml @@ -5,8 +5,8 @@
-
-

@(string.IsNullOrEmpty(Model.Id) ? "Create" : "Edit") Payment Request

+
+

@(string.IsNullOrEmpty(Model.Id) ? "Create" : "Edit") Payment Request


diff --git a/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml b/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml index 50874a7d5..443bc00d3 100644 --- a/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml +++ b/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml @@ -14,8 +14,9 @@
}
-
-

Payment Requests

+
+

Payment Requests

+
diff --git a/BTCPayServer/Views/Shared/_NavLayout.cshtml b/BTCPayServer/Views/Shared/_NavLayout.cshtml index 41437ef2c..08e8d46b3 100644 --- a/BTCPayServer/Views/Shared/_NavLayout.cshtml +++ b/BTCPayServer/Views/Shared/_NavLayout.cshtml @@ -11,10 +11,10 @@
-
+
@if (ViewBag.ShowMenu) { -

@title

+

@title


}
diff --git a/BTCPayServer/Views/Stores/RequestPairing.cshtml b/BTCPayServer/Views/Stores/RequestPairing.cshtml index fca35e04c..d4eafab1d 100644 --- a/BTCPayServer/Views/Stores/RequestPairing.cshtml +++ b/BTCPayServer/Views/Stores/RequestPairing.cshtml @@ -6,8 +6,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


Create and manage store settings.

diff --git a/BTCPayServer/Views/UserStores/CreateStore.cshtml b/BTCPayServer/Views/UserStores/CreateStore.cshtml index d7c0edc10..b1d3da5b6 100644 --- a/BTCPayServer/Views/UserStores/CreateStore.cshtml +++ b/BTCPayServer/Views/UserStores/CreateStore.cshtml @@ -5,8 +5,8 @@
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


diff --git a/BTCPayServer/Views/UserStores/ListStores.cshtml b/BTCPayServer/Views/UserStores/ListStores.cshtml index db4620df1..b0c376b6f 100644 --- a/BTCPayServer/Views/UserStores/ListStores.cshtml +++ b/BTCPayServer/Views/UserStores/ListStores.cshtml @@ -14,8 +14,8 @@
}
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


Create and manage store settings.

diff --git a/BTCPayServer/Views/Wallets/ListWallets.cshtml b/BTCPayServer/Views/Wallets/ListWallets.cshtml index abed6f779..9ea3b1327 100644 --- a/BTCPayServer/Views/Wallets/ListWallets.cshtml +++ b/BTCPayServer/Views/Wallets/ListWallets.cshtml @@ -15,8 +15,8 @@ }
-
-

@ViewData["Title"]

+
+

@ViewData["Title"]


Create and manage wallets.

diff --git a/BTCPayServer/Views/Wallets/WalletPSBTReady.cshtml b/BTCPayServer/Views/Wallets/WalletPSBTReady.cshtml index f2b76fe8d..7cb09e21f 100644 --- a/BTCPayServer/Views/Wallets/WalletPSBTReady.cshtml +++ b/BTCPayServer/Views/Wallets/WalletPSBTReady.cshtml @@ -12,8 +12,8 @@
}
-
-

Transaction review

+
+

Transaction review


@if (Model.CanCalculateBalance) { diff --git a/BTCPayServer/wwwroot/css/creative.css b/BTCPayServer/wwwroot/css/creative.css index eced54071..e24433398 100644 --- a/BTCPayServer/wwwroot/css/creative.css +++ b/BTCPayServer/wwwroot/css/creative.css @@ -22,17 +22,18 @@ p { } hr { - max-width: 50px; - border-width: 3px; - border-color: var(--btcpay-color-primary); + width: 50px; + height: 3px; + background: var(--btcpay-color-primary); + display: inline-block; } hr.light { - border-color: var(--btcpay-color-white); + background: var(--btcpay-color-white); } #mainNav { - background-color: var(--btcpay-bg-dark); + background: var(--btcpay-bg-dark); font-family: var(--btcpay-font-family-head); transition: all 0.2s; } diff --git a/BTCPayServer/wwwroot/css/site.css b/BTCPayServer/wwwroot/css/site.css index 0c8ffc162..4e600a79c 100644 --- a/BTCPayServer/wwwroot/css/site.css +++ b/BTCPayServer/wwwroot/css/site.css @@ -45,6 +45,10 @@ html { } } +.section-heading { + text-align: var(--btcpay-section-heading-text-align, center); +} + a.nav-link { color: var(--btcpay-color-nav-link, var(--btcpay-color-neutral-600)); background: var(--btcpay-bg-nav-link, transparent); diff --git a/BTCPayServer/wwwroot/css/themes/classic.css b/BTCPayServer/wwwroot/css/themes/classic.css index d53fc6a1a..49c98c7a8 100644 --- a/BTCPayServer/wwwroot/css/themes/classic.css +++ b/BTCPayServer/wwwroot/css/themes/classic.css @@ -68,7 +68,7 @@ html { } .table { - margin: 16px 0; + margin: 1rem 0; border: 1px solid var(--btcpay-color-neutral-300); border-radius: 4px; border-collapse: separate !important; diff --git a/BTCPayServer/wwwroot/css/themes/modern.css b/BTCPayServer/wwwroot/css/themes/modern.css index 490f52fb4..e269aa816 100644 --- a/BTCPayServer/wwwroot/css/themes/modern.css +++ b/BTCPayServer/wwwroot/css/themes/modern.css @@ -53,6 +53,8 @@ --btcpay-color-link: var(--btcpay-color-primary); --btcpay-color-link-hover: var(--btcpay-color-primary-dark); + --btcpay-section-heading-text-align: left; + --btcpay-font-size-base: 16px; --btcpay-font-family-head: 'Open Sans', 'Helvetica Neue', Arial, sans-serif; --btcpay-font-family-base: -apple-system, 'Open Sans', BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; @@ -72,7 +74,7 @@ header.masthead::before, filter: hue-rotate(410deg) saturate(33%); } .table { - margin: 24px 0 48px; + margin: 1.5rem 0 3rem; } .table th { From 205fd3c9cefdd595710f15f21bc8764f3fff6416 Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Fri, 1 Nov 2019 22:15:02 +0100 Subject: [PATCH 32/49] Use grid consistently --- BTCPayServer/Views/Apps/ListApps.cshtml | 77 ++--- .../Views/Invoice/ListInvoices.cshtml | 284 +++++++++--------- .../PaymentRequest/GetPaymentRequests.cshtml | 114 +++---- BTCPayServer/Views/Server/ListUsers.cshtml | 2 +- .../Views/UserStores/ListStores.cshtml | 72 +++-- BTCPayServer/Views/Wallets/ListWallets.cshtml | 58 ++-- BTCPayServer/Views/Wallets/WalletSend.cshtml | 2 +- 7 files changed, 311 insertions(+), 298 deletions(-) diff --git a/BTCPayServer/Views/Apps/ListApps.cshtml b/BTCPayServer/Views/Apps/ListApps.cshtml index db1b81dc0..0fc64c60e 100644 --- a/BTCPayServer/Views/Apps/ListApps.cshtml +++ b/BTCPayServer/Views/Apps/ListApps.cshtml @@ -20,51 +20,52 @@

Create and manage apps.

- -
-
+
- - - - - - - - - - - @foreach (var app in Model.Apps) - { +
+
StoreNameApp typeActions
+ - - - - + + + + - } - -
- @if (app.IsOwner) - { - @app.StoreName - } - else - { - @app.StoreName - } - @app.AppName@app.AppType - @if (app.IsOwner) - { - Settings - - } - View - - Remove - StoreNameApp typeActions
+ + + @foreach (var app in Model.Apps) + { + + + @if (app.IsOwner) + { + @app.StoreName + } + else + { + @app.StoreName + } + + @app.AppName + @app.AppType + + @if (app.IsOwner) + { + Settings - + } + View - + Remove + + + } + + +
diff --git a/BTCPayServer/Views/Invoice/ListInvoices.cshtml b/BTCPayServer/Views/Invoice/ListInvoices.cshtml index 49c4653c9..5cf8ad89c 100644 --- a/BTCPayServer/Views/Invoice/ListInvoices.cshtml +++ b/BTCPayServer/Views/Invoice/ListInvoices.cshtml @@ -45,7 +45,7 @@
-
+
Create a new invoice
- @{ - string listInvoices(int prevNext, int count) - { - var skip = Model.Skip; - if (prevNext == -1) - skip = Math.Max(0, Model.Skip - Model.Count); - else if (prevNext == 1) - skip = Model.Skip + count; - - var act = Url.Action("ListInvoices", new + + + @foreach (var invoice in Model.Invoices) + { + + + + @invoice.Date.ToBrowserDate() + + + + @if (invoice.RedirectUrl != string.Empty) + { + @invoice.OrderId + } + else + { + @invoice.OrderId + } + + @invoice.InvoiceId + + @if (invoice.CanMarkStatus) + { +
+ + +
+ } + else + { + @invoice.StatusString + } + + @invoice.AmountCurrency + + @if (invoice.ShowCheckout) + { + + Checkout + [^] + @if (!invoice.CanMarkStatus) + { + - + } + + } +   + Details + @**@ +   + + + + + + + +
+ +
+ + + } + + + + @{ + string listInvoices(int prevNext, int count) { - searchTerm = Model.SearchTerm, - skip = skip, - count = count, - }); + var skip = Model.Skip; + if (prevNext == -1) + skip = Math.Max(0, Model.Skip - Model.Count); + else if (prevNext == 1) + skip = Model.Skip + count; - return act; + var act = Url.Action("ListInvoices", new + { + searchTerm = Model.SearchTerm, + skip = skip, + count = count, + }); + + return act; + } } - } +
diff --git a/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml b/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml index 443bc00d3..1fd458ac6 100644 --- a/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml +++ b/BTCPayServer/Views/PaymentRequest/GetPaymentRequests.cshtml @@ -19,70 +19,72 @@
-
-
+
- - - - - - - - - - - - @foreach (var item in Model.Items) - { +
+
TitleExpiryPriceStatusActions
+ - - - - - + + + + + - } - -
@item.Title@(item.ExpiryDate?.ToString("g") ?? "No Expiry")@item.Amount @item.Currency@item.Status - Edit - - - View - - - Invoices - - - Pay - - - Clone - - - Remove - TitleExpiryPriceStatusActions
+ + + @foreach (var item in Model.Items) + { + + @item.Title + @(item.ExpiryDate?.ToString("g") ?? "No Expiry") + @item.Amount @item.Currency + @item.Status + + Edit + - + View + - + Invoices + - + Pay + - + Clone + - + Remove + + + } + + - + +
diff --git a/BTCPayServer/Views/Server/ListUsers.cshtml b/BTCPayServer/Views/Server/ListUsers.cshtml index d97bbced8..f0a7f1e62 100644 --- a/BTCPayServer/Views/Server/ListUsers.cshtml +++ b/BTCPayServer/Views/Server/ListUsers.cshtml @@ -5,7 +5,7 @@ -
+
Total Users: @Model.Total
-
- Create a new store - - - - - - - - - - @foreach (var store in Model.Stores) - { - - - - - - } - -
NameWebsiteActions
@store.Name - @if (!string.IsNullOrEmpty(store.WebSite)) - { - @store.WebSite - } - - Invoices - - @if (store.IsOwner) - { - Settings - - } - Remove -
+ +
+
+ + + + + + + + + + @foreach (var store in Model.Stores) + { + + + + + + } + +
NameWebsiteActions
@store.Name + @if (!string.IsNullOrEmpty(store.WebSite)) + { + @store.WebSite + } + + Invoices - + @if (store.IsOwner) + { + Settings - + } + Remove +
+
+
diff --git a/BTCPayServer/Views/Wallets/ListWallets.cshtml b/BTCPayServer/Views/Wallets/ListWallets.cshtml index 9ea3b1327..645424849 100644 --- a/BTCPayServer/Views/Wallets/ListWallets.cshtml +++ b/BTCPayServer/Views/Wallets/ListWallets.cshtml @@ -23,36 +23,38 @@
- - - - - - - - - - - @foreach (var wallet in Model.Wallets) - { +
+
Store NameCrypto CodeBalanceActions
+ - @if (wallet.IsOwner) - { - - } - else - { - - } - - - + + + + - } - -
@wallet.StoreName@wallet.StoreName@wallet.CryptoCode@wallet.Balance - Manage - Store NameCrypto CodeBalanceActions
+ + + @foreach (var wallet in Model.Wallets) + { + + @if (wallet.IsOwner) + { + @wallet.StoreName + } + else + { + @wallet.StoreName + } + @wallet.CryptoCode + @wallet.Balance + + Manage + + + } + + +
diff --git a/BTCPayServer/Views/Wallets/WalletSend.cshtml b/BTCPayServer/Views/Wallets/WalletSend.cshtml index 71172d4be..82ba6b75e 100644 --- a/BTCPayServer/Views/Wallets/WalletSend.cshtml +++ b/BTCPayServer/Views/Wallets/WalletSend.cshtml @@ -6,7 +6,7 @@ ViewData.SetActivePageAndTitle(WalletsNavPages.Send); } -
+
From 5bb6918465d855836c4f884f59bb0a14c816ff6d Mon Sep 17 00:00:00 2001 From: Dennis Reimann Date: Sat, 2 Nov 2019 16:57:53 +0100 Subject: [PATCH 33/49] Add Casa theme draft --- .../Views/AppsPublic/ViewPointOfSale.cshtml | 50 ++-- BTCPayServer/Views/Home/Home.cshtml | 77 +++--- BTCPayServer/Views/Server/Theme.cshtml | 1 + BTCPayServer/Views/Shared/_Layout.cshtml | 5 +- BTCPayServer/wwwroot/cart/js/cart.js | 38 +-- BTCPayServer/wwwroot/css/bootstrap.css | 244 +++++++++--------- BTCPayServer/wwwroot/css/creative.css | 52 ++-- BTCPayServer/wwwroot/css/site.css | 68 +++-- BTCPayServer/wwwroot/css/themes/casa.css | 103 ++++++++ BTCPayServer/wwwroot/css/themes/classic.css | 74 +++--- BTCPayServer/wwwroot/css/themes/modern.css | 72 +++--- BTCPayServer/wwwroot/img/github.svg | 6 + BTCPayServer/wwwroot/img/logo.svg | 10 + BTCPayServer/wwwroot/img/mattermost.svg | 6 + .../wwwroot/img/paybutton/donateto.svg | 23 +- BTCPayServer/wwwroot/img/slack.svg | 8 + BTCPayServer/wwwroot/img/twitter.svg | 3 + 17 files changed, 519 insertions(+), 321 deletions(-) create mode 100644 BTCPayServer/wwwroot/css/themes/casa.css create mode 100644 BTCPayServer/wwwroot/img/github.svg create mode 100644 BTCPayServer/wwwroot/img/logo.svg create mode 100644 BTCPayServer/wwwroot/img/mattermost.svg create mode 100644 BTCPayServer/wwwroot/img/slack.svg create mode 100644 BTCPayServer/wwwroot/img/twitter.svg diff --git a/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml b/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml index 553999696..490c35f53 100644 --- a/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml +++ b/BTCPayServer/Views/AppsPublic/ViewPointOfSale.cshtml @@ -49,14 +49,18 @@ margin: auto; } + .js-cart-item-count { + -moz-appearance:textfield; + margin: 0; + text-align: right; + } + .js-cart-item-count::-webkit-inner-spin-button, .js-cart-item-count::-webkit-outer-spin-button { -webkit-appearance: none; -moz-appearance: none; appearance: none; - margin: 0; } - @if (!string.IsNullOrEmpty(Model.EmbeddedCSS)) { @@ -70,10 +74,10 @@ {image} {title} - + - +
@@ -86,7 +90,7 @@
- {price} + {price} @@ -113,7 +117,7 @@ @@ -148,10 +152,10 @@ @if (Model.EnableTips) { - @Model.CustomTipText + @Model.CustomTipText - +
@@ -174,16 +178,16 @@ }
- + } @if (this.TempData.HasStatusMessage()) @@ -270,7 +274,7 @@
- +   0 @@ -343,16 +347,16 @@
diff --git a/BTCPayServer/Views/Home/Home.cshtml b/BTCPayServer/Views/Home/Home.cshtml index 07912c8ed..a68bf568b 100644 --- a/BTCPayServer/Views/Home/Home.cshtml +++ b/BTCPayServer/Views/Home/Home.cshtml @@ -3,7 +3,6 @@ ViewBag.AlwaysShrinkNavBar = false; } -
@@ -28,22 +27,22 @@
- -

Secure

+ +

Secure

The payment server does not need to know your private keys, so your money can't be stolen.

- -

Easy

+ +

Easy

A user-friendly Bitcoin checkout page for your customers.

- -

Visibility

+ +

Visibility

Manage, generate reports, and search for your invoices easily.

@@ -51,21 +50,15 @@
- -

Video tutorials

-
-
-
+ -
-
@@ -81,7 +74,28 @@

- + + + + + + + + + + + + + + + + + + + + + +

@@ -100,36 +114,31 @@

-
-
-
-
+ +