@datagrok/peptides 1.14.1 → 1.15.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/196.js +3 -0
  3. package/dist/196.js.LICENSE.txt +51 -0
  4. package/dist/209.js +2 -2
  5. package/dist/361.js +2 -0
  6. package/dist/381.js +2 -0
  7. package/dist/436.js +2 -0
  8. package/dist/694.js +2 -0
  9. package/dist/831.js +2 -0
  10. package/dist/868.js +2 -0
  11. package/dist/package-test.js +3 -2
  12. package/dist/package-test.js.LICENSE.txt +51 -0
  13. package/dist/package.js +3 -2
  14. package/dist/package.js.LICENSE.txt +51 -0
  15. package/files/help/logo-summary-table.md +23 -0
  16. package/files/help/monomer-position.md +31 -0
  17. package/files/help/most-potent-residues.md +17 -0
  18. package/files/icons/ribbon/logo-summary-viewer.svg +8 -0
  19. package/files/icons/ribbon/peptide-sar-vertical-viewer.svg +10 -0
  20. package/files/icons/ribbon/peptide-sar-viewer.svg +11 -0
  21. package/files/tests/100k.d42 +0 -0
  22. package/files/tests/200k.d42 +0 -0
  23. package/files/tests/50k.d42 +0 -0
  24. package/files/tests/{aligned_5k.d42 → 5k.d42} +0 -0
  25. package/package.json +5 -5
  26. package/src/model.ts +85 -175
  27. package/src/package-test.ts +7 -6
  28. package/src/tests/benchmarks.ts +95 -0
  29. package/src/tests/core.ts +4 -75
  30. package/src/tests/{algorithms.ts → misc.ts} +3 -16
  31. package/src/tests/model.ts +3 -14
  32. package/src/tests/table-view.ts +4 -14
  33. package/src/tests/viewers.ts +7 -1
  34. package/src/tests/widgets.ts +9 -1
  35. package/src/utils/algorithms.ts +166 -16
  36. package/src/utils/cell-renderer.ts +12 -7
  37. package/src/utils/constants.ts +2 -0
  38. package/src/utils/misc.ts +2 -1
  39. package/src/utils/parallel-mutation-cliffs.ts +106 -0
  40. package/src/utils/types.ts +1 -1
  41. package/src/viewers/logo-summary.ts +9 -6
  42. package/src/viewers/sar-viewer.ts +28 -14
  43. package/src/widgets/mutation-cliffs.ts +2 -2
  44. package/src/widgets/peptides.ts +15 -5
  45. package/src/widgets/selection.ts +9 -0
  46. package/src/widgets/settings.ts +3 -8
  47. package/src/workers/mutation-cliffs-worker.ts +77 -0
  48. package/dist/521.js +0 -2
  49. package/dist/677.js +0 -2
  50. package/dist/729.js +0 -2
  51. package/dist/959.js +0 -2
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @license
3
+ *
4
+ * Copyright 2019 Google LLC. All Rights Reserved.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ * ==============================================================================
18
+ */
19
+
20
+ /**
21
+ * @license
22
+ * BSD 3-Clause License
23
+ *
24
+ * Copyright (c) 2017, Leland McInnes
25
+ * All rights reserved.
26
+ *
27
+ * Redistribution and use in source and binary forms, with or without
28
+ * modification, are permitted provided that the following conditions are met:
29
+ *
30
+ * * Redistributions of source code must retain the above copyright notice, this
31
+ * list of conditions and the following disclaimer.
32
+ *
33
+ * * Redistributions in binary form must reproduce the above copyright notice,
34
+ * this list of conditions and the following disclaimer in the documentation
35
+ * and/or other materials provided with the distribution.
36
+ *
37
+ * * Neither the name of the copyright holder nor the names of its
38
+ * contributors may be used to endorse or promote products derived from
39
+ * this software without specific prior written permission.
40
+ *
41
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
42
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
44
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
45
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
47
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
48
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
50
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
51
+ */
package/dist/209.js CHANGED
@@ -1,2 +1,2 @@
1
- var peptides;(()=>{"use strict";var t,e,r={209:(t,e,r)=>{var a=r(814);class i{get data(){return this._data}get size(){return this._size}constructor(t,e){if(null==e){if(null==t)throw new Error("Arguments error: data or size is required.");if(this._data=t,this._size=(1+Math.sqrt(1+8*this._data.length))/2,this._size!=Math.floor(this._size))throw new Error(`Invalid data length ${this._data.length} leads to non integer size ${this._size}`)}else{this._size=e;const r=e*(e-1)/2;if(t){if(t.length!=r)throw new Error(`Invalid data length. Observations size ${e} requires data length ${r}.`);this._data=t}else this._data=new Float32Array(r)}}_linearizeIJ(t,e){if(!(t<e))throw new Error("i must be less than j");return this._size*t+e-Math.floor((t+2)*(t+1)/2)}get(t,e){return t==e?0:t<e?this._data[this._linearizeIJ(t,e)]:this._data[this._linearizeIJ(e,t)]}set(t,e,r){this._data[this._linearizeIJ(t,e)]=r}static calc(t,e){const r=t.length,n=new i(void 0,r);for(let i=0;i<r;i++)for(let s=i+1;s<r;s++)n.set(i,s,(0,a.k)(t[i])||(0,a.k)(t[s])?1:e(t[i],t[s]));return n}square(){for(let t=0;t<this._data.length;t++)this._data[t]=this._data[t]**2}add(t){if(this._size!==t._size)throw new Error(`Matrices must have the same size. This size: ${this._size}, other size: ${t._size}`);for(let e=0;e<this._data.length;e++)this._data[e]+=t._data[e]}sqrt(){for(let t=0;t<this._data.length;t++)this._data[t]=Math.sqrt(this._data[t])}normalize(){let t=0,e=this._data[0];for(let r=0;r<this._data.length;r++)this._data[r]<t&&(t=this._data[r]),this._data[r]>e&&(e=this._data[r]);const r=e-t;for(let a=0;a<this._data.length;a++)this._data[a]=0===r?this._data[a]-t:(this._data[a]-t)/(e-t)}}var n=r(40),s=r(811),o=r(979),h=r(697),l=r(850),c=r(489);const g={[n.CF.Euclidean]:l.dP},u={[n.W.Levenshtein]:s.T,[n.W.JaroWinkler]:o.H$,[n.W.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let r=0;for(let a=1;a<t.length;a++)r+=t[a]==e[a]?0:1;return r/t.length}}},d={[n.gk.Tanimoto]:h.KR,[n.gk.Dice]:h._h,[n.gk.Asymmetric]:h.yU,[n.gk.BraunBlanquet]:h.Dz,[n.gk.Cosine]:h.Zd,[n.gk.Kulczynski]:h.s,[n.gk.McConnaughey]:h.aW,[n.gk.RogotGoldberg]:h.MI,[n.gk.Russel]:h.fX,[n.gk.Sokal]:h.NB,[n.gk.Hamming]:h.UX,[n.gk.Euclidean]:h.WI},f={[n.Yc.NumericDistance]:h.bX},k={[n.Qe.Vector]:{[n.CF.Euclidean]:g[n.CF.Euclidean]},[n.Qe.String]:{[n.W.Levenshtein]:u[n.W.Levenshtein],[n.W.JaroWinkler]:u[n.W.JaroWinkler],[n.W.Manhattan]:u[n.W.Manhattan]},[n.Qe.BitArray]:{[n.gk.Tanimoto]:d[n.gk.Tanimoto],[n.gk.Dice]:d[n.gk.Dice],[n.gk.Asymmetric]:d[n.gk.Asymmetric],[n.gk.BraunBlanquet]:d[n.gk.BraunBlanquet],[n.gk.Cosine]:d[n.gk.Cosine],[n.gk.Kulczynski]:d[n.gk.Kulczynski],[n.gk.McConnaughey]:d[n.gk.McConnaughey],[n.gk.RogotGoldberg]:d[n.gk.RogotGoldberg],[n.gk.Russel]:d[n.gk.Russel],[n.gk.Sokal]:d[n.gk.Sokal]},[n.Qe.MacroMolecule]:{[c.U.HAMMING]:c.o[c.U.HAMMING],[c.U.LEVENSHTEIN]:c.o[c.U.LEVENSHTEIN],[c.U.NEEDLEMANN_WUNSCH]:c.o[c.U.NEEDLEMANN_WUNSCH]},[n.Qe.Number]:{[n.Yc.NumericDistance]:f[n.Yc.NumericDistance]}};Object.keys(k).reduce(((t,e)=>{for(const r of Object.keys(k[e]))t[r]=e;return t}),{});self.addEventListener("message",(({data:{peptidesList:t,metric:e}})=>{return r=void 0,a=void 0,s=function*(){const r={};try{const a=i.calc(t,((t,r)=>u[e](t,r)));r.distances=a.data}catch(t){r.error=t}self.postMessage(r)},new((n=void 0)||(n=Promise))((function(t,e){function i(t){try{h(s.next(t))}catch(t){e(t)}}function o(t){try{h(s.throw(t))}catch(t){e(t)}}function h(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(i,o)}h((s=s.apply(r,a||[])).next())}));var r,a,n,s}))}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={exports:{}};return r[t](n,n.exports,i),n.exports}i.m=r,i.x=()=>{var t=i.O(void 0,[677,521],(()=>i(209)));return i.O(t)},t=[],i.O=(e,r,a,n)=>{if(!r){var s=1/0;for(c=0;c<t.length;c++){for(var[r,a,n]=t[c],o=!0,h=0;h<r.length;h++)(!1&n||s>=n)&&Object.keys(i.O).every((t=>i.O[t](r[h])))?r.splice(h--,1):(o=!1,n<s&&(s=n));if(o){t.splice(c--,1);var l=a();void 0!==l&&(e=l)}}return e}n=n||0;for(var c=t.length;c>0&&t[c-1][2]>n;c--)t[c]=t[c-1];t[c]=[r,a,n]},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,r)=>(i.f[r](t,e),e)),[])),i.u=t=>t+".js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&!t;)t=r[a--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{var t={209:1};i.f.i=(e,r)=>{t[e]||importScripts(i.p+i.u(e))};var e=self.webpackChunkpeptides=self.webpackChunkpeptides||[],r=e.push.bind(e);e.push=e=>{var[a,n,s]=e;for(var o in n)i.o(n,o)&&(i.m[o]=n[o]);for(s&&s(i);a.length;)t[a.pop()]=1;r(e)}})(),e=i.x,i.x=()=>Promise.all([i.e(677),i.e(521)]).then(e);var n=i.x();peptides=n})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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LE9BRVYsSUFEQSxJQUFJSyxFQUFJNEgsRUFBUWpJLE9BQVMsRUFDbEJLLEdBQUssSUFBTXNILEdBQVdBLEVBQVlNLEVBQVE1SCxLQUFLMkgsR0FFeEQsQ0FJRCxJQUFLTCxFQUFXLE1BQU0sSUFBSTlILE1BQU0seURBQ2hDOEgsRUFBWUEsRUFBVVEsUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEY3QyxFQUFvQjhDLEVBQUlULEMsV0NkeEIsSUFBSVUsRUFBa0IsQ0FDckIsSUFBSyxHQWdCTi9DLEVBQW9CdUIsRUFBRXhHLEVBQUksQ0FBQ3lHLEVBQVNFLEtBRS9CcUIsRUFBZ0J2QixJQUVsQmMsY0FBY3RDLEVBQW9COEMsRUFBSTlDLEVBQW9CMkIsRUFBRUgsR0FFOUQsRUFHRCxJQUFJd0IsRUFBcUIzRSxLQUEyQixxQkFBSUEsS0FBMkIsc0JBQUssR0FDcEY0RSxFQUE2QkQsRUFBbUJFLEtBQUtDLEtBQUtILEdBQzlEQSxFQUFtQkUsS0F2QkNsSixJQUNuQixJQUFLMEcsRUFBVTBDLEVBQWFDLEdBQVdySixFQUN2QyxJQUFJLElBQUlpRyxLQUFZbUQsRUFDaEJwRCxFQUFvQm9CLEVBQUVnQyxFQUFhbkQsS0FDckNELEVBQW9CTSxFQUFFTCxHQUFZbUQsRUFBWW5ELElBSWhELElBREdvRCxHQUFTQSxFQUFRckQsR0FDZFUsRUFBU2hHLFFBQ2RxSSxFQUFnQnJDLEVBQVM0QyxPQUFTLEVBQ25DTCxFQUEyQmpKLEVBQUssQyxLWG5CN0JGLEVBQU9rRyxFQUFvQk8sRUFDL0JQLEVBQW9CTyxFQUFJLElBQ2hCbEIsUUFBUW9DLElBQUksQ0FDbEJ6QixFQUFvQmYsRUFBRSxLQUN0QmUsRUFBb0JmLEVBQUUsT0FDcEJZLEtBQUsvRixHWUpULElBQUkwRyxFQUFzQlIsRUFBb0JPLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvY2h1bmsgbG9hZGVkIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9zdGFydHVwIGNodW5rIGRlcGVuZGVuY2llcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvZGlzdGFuY2UtbWF0cml4LmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MvdHlwZWQtbWV0cmljcy5qcyIsIndlYnBhY2s6Ly9wZXB0aWRlcy8uL3NyYy91dGlscy9kaXN0YW5jZS1tYXRyaXgud29ya2VyLnRzIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2ltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDY3NyksXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDUyMSlcblx0XSkudGhlbihuZXh0KTtcbn07IiwiaW1wb3J0IHsgaXNOaWwgfSBmcm9tICcuL3V0aWxzJztcbi8qKiBEaXN0YW5jZSBtYXRyaXggY2xhc3MgY29tcGF0aWJsZSB3aXRoIGRhdGEgc3RydWN0dXJlIG9mIHNjaXB5LnNwYXRpYWwuZGlzdGFuY2UucGRpc3QgKi9cbmV4cG9ydCBjbGFzcyBEaXN0YW5jZU1hdHJpeCB7XG4gICAgZ2V0IGRhdGEoKSB7IHJldHVybiB0aGlzLl9kYXRhOyB9XG4gICAgZ2V0IHNpemUoKSB7IHJldHVybiB0aGlzLl9zaXplOyB9XG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtGbG9hdDMyQXJyYXl9IGRhdGEgRGlzdGFuY2UgZGF0YVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIE51bWJlciBvZiBvcmlnaW5hbCBvYnNlcnZhdGlvbnNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihkYXRhLCBzaXplKSB7XG4gICAgICAgIGlmIChzaXplID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKGRhdGEgPT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQXJndW1lbnRzIGVycm9yOiBkYXRhIG9yIHNpemUgaXMgcmVxdWlyZWQuJyk7XG4gICAgICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIHRoaXMuX3NpemUgPSAoMSArIE1hdGguc3FydCgxICsgNCAqIDIgKiB0aGlzLl9kYXRhLmxlbmd0aCkpIC8gMjtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zaXplICE9IE1hdGguZmxvb3IodGhpcy5fc2l6ZSkpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRhdGEgbGVuZ3RoICR7dGhpcy5fZGF0YS5sZW5ndGh9IGxlYWRzIHRvIG5vbiBpbnRlZ2VyIHNpemUgJHt0aGlzLl9zaXplfWApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2l6ZSA9IHNpemU7XG4gICAgICAgICAgICBjb25zdCBkYXRhTGVuZ3RoID0gc2l6ZSAqIChzaXplIC0gMSkgLyAyO1xuICAgICAgICAgICAgaWYgKGRhdGEpIHtcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggIT0gZGF0YUxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGRhdGEgbGVuZ3RoLiBPYnNlcnZhdGlvbnMgc2l6ZSAke3NpemV9IHJlcXVpcmVzIGRhdGEgbGVuZ3RoICR7ZGF0YUxlbmd0aH0uYCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZGF0YSA9IGRhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhID0gbmV3IEZsb2F0MzJBcnJheShkYXRhTGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBfbGluZWFyaXplSUooaSwgaikge1xuICAgICAgICBpZiAoIShpIDwgaikpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2kgbXVzdCBiZSBsZXNzIHRoYW4gaicpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZSAqIGkgKyBqIC0gTWF0aC5mbG9vcigoKGkgKyAyKSAqIChpICsgMSkpIC8gMik7XG4gICAgfVxuICAgIGdldChpLCBqKSB7XG4gICAgICAgIGlmIChpID09IGopXG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgZWxzZSBpZiAoaSA8IGopXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVt0aGlzLl9saW5lYXJpemVJSihpLCBqKV07XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhW3RoaXMuX2xpbmVhcml6ZUlKKGosIGkpXTtcbiAgICB9XG4gICAgc2V0KGksIGosIHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaSwgaildID0gdmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBjYWxjKGxpc3QsIG1ldGhvZCkge1xuICAgICAgICBjb25zdCBzaXplID0gbGlzdC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHJlcyA9IG5ldyBEaXN0YW5jZU1hdHJpeCh1bmRlZmluZWQsIHNpemUpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgc2l6ZTsgaisrKSB7XG4gICAgICAgICAgICAgICAgLy8gaWYgYW55IG9mIHRoZSB2YWx1ZXMgaXMgbnVsbCwgc2V0IGRpc3RhbmNlIHRvIDFcbiAgICAgICAgICAgICAgICByZXMuc2V0KGksIGosICFpc05pbChsaXN0W2ldKSAmJiAhaXNOaWwobGlzdFtqXSkgPyBtZXRob2QobGlzdFtpXSwgbGlzdFtqXSkgOiAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH1cbiAgICAvLyBzcXVhcmVzIGVhY2ggdmFsdWUgaW4gbWF0cml4IGluIHBsYWNlXG4gICAgc3F1YXJlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gdGhpcy5fZGF0YVtpXSAqKiAyO1xuICAgIH1cbiAgICAvLyBhZGRzIGFub3RoZXIgbWF0cml4IHRvIHRoaXMgb25lIGluIHBsYWNlXG4gICAgYWRkKG90aGVyKSB7XG4gICAgICAgIGlmICh0aGlzLl9zaXplICE9PSBvdGhlci5fc2l6ZSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWF0cmljZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHNpemUuIFRoaXMgc2l6ZTogJHt0aGlzLl9zaXplfSwgb3RoZXIgc2l6ZTogJHtvdGhlci5fc2l6ZX1gKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLl9kYXRhLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgdGhpcy5fZGF0YVtpXSArPSBvdGhlci5fZGF0YVtpXTtcbiAgICB9XG4gICAgLy8gc3F1YXJlIHJvb3QgZWFjaCB2YWx1ZSBpbiBtYXRyaXggaW4gcGxhY2VcbiAgICBzcXJ0KCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gTWF0aC5zcXJ0KHRoaXMuX2RhdGFbaV0pO1xuICAgIH1cbiAgICAvL25vcm1pbHplIGRpc3RhbmNlIG1hdHJpeCBpbiBwbGFjZVxuICAgIG5vcm1hbGl6ZSgpIHtcbiAgICAgICAgbGV0IG1pbiA9IDA7XG4gICAgICAgIGxldCBtYXggPSB0aGlzLl9kYXRhWzBdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhW2ldIDwgbWluKVxuICAgICAgICAgICAgICAgIG1pbiA9IHRoaXMuX2RhdGFbaV07XG4gICAgICAgICAgICBpZiAodGhpcy5fZGF0YVtpXSA+IG1heClcbiAgICAgICAgICAgICAgICBtYXggPSB0aGlzLl9kYXRhW2ldO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJhbmdlID0gbWF4IC0gbWluO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldID0gcmFuZ2UgPT09IDAgPyB0aGlzLl9kYXRhW2ldIC0gbWluIDogKHRoaXMuX2RhdGFbaV0gLSBtaW4pIC8gKG1heCAtIG1pbik7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkdsemRHRnVZMlV0YldGMGNtbDRMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaVpHbHpkR0Z1WTJVdGJXRjBjbWw0TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lKQlFVZEJMRTlCUVU4c1JVRkJReXhMUVVGTExFVkJRVU1zVFVGQlRTeFRRVUZUTEVOQlFVTTdRVUZGT1VJc01rWkJRVEpHTzBGQlF6TkdMRTFCUVUwc1QwRkJUeXhqUVVGak8wbEJTWHBDTEVsQlFVa3NTVUZCU1N4TFFVRnRRaXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlM5RExFbEJRVWtzU1VGQlNTeExRVUZoTEU5QlFVOHNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRmVrTTdPenRQUVVkSE8wbEJRMGdzV1VGQldTeEpRVUZ0UWl4RlFVRkZMRWxCUVdFN1VVRkROVU1zU1VGQlNTeEpRVUZKTEVsQlFVa3NVMEZCVXl4RlFVRkZPMWxCUTNKQ0xFbEJRVWtzU1VGQlNTeEpRVUZKTEZOQlFWTTdaMEpCUVVVc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5dzBRMEZCTkVNc1EwRkJReXhEUVVGRE8xbEJSWEpHTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTeXhEUVVGRE8xbEJRMjVDTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEyaEZMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU03WjBKQlEzUkRMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZFVKQlFYVkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTdzRRa0ZCT0VJc1NVRkJTU3hEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVOQlFVTTdVMEZEZGtjN1lVRkJUVHRaUVVOTUxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4RFFVRkRPMWxCUTJ4Q0xFMUJRVTBzVlVGQlZTeEhRVUZYTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEYWtRc1NVRkJTU3hKUVVGSkxFVkJRVVU3WjBKQlExSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1RVRkJUU3hKUVVGSkxGVkJRVlU3YjBKQlF6TkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zTUVOQlFUQkRMRWxCUVVrc2VVSkJRWGxDTEZWQlFWVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1owSkJRM2hITEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8yRkJRMjVDTzJsQ1FVRk5PMmRDUVVOTUxFbEJRVWtzUTBGQlF5eExRVUZMTEVkQlFVY3NTVUZCU1N4WlFVRlpMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03WVVGRE0wTTdVMEZEUmp0SlFVTklMRU5CUVVNN1NVRkZUeXhaUVVGWkxFTkJRVU1zUTBGQlV5eEZRVUZGTEVOQlFWTTdVVUZEZGtNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVRkZMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zZFVKQlFYVkNMRU5CUVVNc1EwRkJRenRSUVVOMlJDeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTnNSU3hEUVVGRE8wbEJSVVFzUjBGQlJ5eERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRPMUZCUTNSQ0xFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTTdXVUZEVWl4UFFVRlBMRU5CUVVNc1EwRkJRenRoUVVOT0xFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTTdXVUZEV2l4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETEZsQlFWa3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6czdXVUZGTTBNc1QwRkJUeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4WlFVRlpMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETDBNc1EwRkJRenRKUVVWRUxFZEJRVWNzUTBGQlF5eERRVUZUTEVWQlFVVXNRMEZCVXl4RlFVRkZMRXRCUVdFN1VVRkRja01zU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRXRCUVVzc1EwRkJRenRKUVVNNVF5eERRVUZETzBsQlJVUXNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJUeXhKUVVGeFFpeEZRVUZGTEUxQlFXOURPMUZCUXpORkxFMUJRVTBzU1VGQlNTeEhRVUZYTEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNN1VVRkRha01zVFVGQlRTeEhRVUZITEVkQlFVY3NTVUZCU1N4alFVRmpMRU5CUVVNc1UwRkJVeXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETzFGQlEyaEVMRXRCUVVzc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE4wSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNSMEZCUnl4SlFVRkpMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3WjBKQlEycERMR3RFUVVGclJEdG5Ra0ZEYkVRc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RlFVRkZMRWxCUVVrc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOc1JqdFRRVU5HTzFGQlEwUXNUMEZCVHl4SFFVRkhMRU5CUVVNN1NVRkRZaXhEUVVGRE8wbEJSVVFzZDBOQlFYZERPMGxCUTJwRExFMUJRVTA3VVVGRFdDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGRrTXNRMEZCUXp0SlFVVkVMREpEUVVFeVF6dEpRVU53UXl4SFFVRkhMRU5CUVVNc1MwRkJjVUk3VVVGRE9VSXNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhMUVVGTExFdEJRVXNzUTBGQlF5eExRVUZMTzFsQlF6VkNMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zWjBSQlFXZEVMRWxCUVVrc1EwRkJReXhMUVVGTExHbENRVUZwUWl4TFFVRkxMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU0xUnl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU53UXl4RFFVRkRPMGxCUlVRc05FTkJRVFJETzBsQlEzSkRMRWxCUVVrN1VVRkRWQ3hMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRE4wTXNRMEZCUXp0SlFVVkVMRzFEUVVGdFF6dEpRVU0xUWl4VFFVRlRPMUZCUTJRc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExb3NTVUZCU1N4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0UlFVTjRRaXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVN1dVRkRNVU1zU1VGQlNTeEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFZEJRVWM3WjBKQlEzSkNMRWRCUVVjc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMWxCUTNSQ0xFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhIUVVGSE8yZENRVU55UWl4SFFVRkhMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0VFFVTjJRanRSUVVORUxFMUJRVTBzUzBGQlN5eEhRVUZITEVkQlFVY3NSMEZCUnl4SFFVRkhMRU5CUVVNN1VVRkRlRUlzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RlFVRkZMRU5CUVVNc1JVRkJSVHRaUVVONFF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkROVVlzUTBGQlF6dERRVU5HSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUNvZ1lYTWdaM0p2YXlCbWNtOXRJQ2RrWVhSaFozSnZheTFoY0drdlozSnZheWM3WEc1cGJYQnZjblFnS2lCaGN5QjFhU0JtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2ZFdrbk8xeHVhVzF3YjNKMElDb2dZWE1nUkVjZ1puSnZiU0FuWkdGMFlXZHliMnN0WVhCcEwyUm5KenRjYm1sdGNHOXlkQ0I3YVhOT2FXeDlJR1p5YjIwZ0p5NHZkWFJwYkhNbk8xeHVYRzR2S2lvZ1JHbHpkR0Z1WTJVZ2JXRjBjbWw0SUdOc1lYTnpJR052YlhCaGRHbGliR1VnZDJsMGFDQmtZWFJoSUhOMGNuVmpkSFZ5WlNCdlppQnpZMmx3ZVM1emNHRjBhV0ZzTG1ScGMzUmhibU5sTG5Ca2FYTjBJQ292WEc1bGVIQnZjblFnWTJ4aGMzTWdSR2x6ZEdGdVkyVk5ZWFJ5YVhnZ2UxeHVJQ0JmWkdGMFlUb2dSbXh2WVhRek1rRnljbUY1TzF4dUlDQmZjMmw2WlRvZ2JuVnRZbVZ5TzF4dVhHNGdJR2RsZENCa1lYUmhLQ2s2SUVac2IyRjBNekpCY25KaGVTQjdJSEpsZEhWeWJpQjBhR2x6TGw5a1lYUmhPeUI5WEc1Y2JpQWdaMlYwSUhOcGVtVW9LVG9nYm5WdFltVnlJSHNnY21WMGRYSnVJSFJvYVhNdVgzTnBlbVU3SUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nUUhCaGNtRnRJSHRHYkc5aGRETXlRWEp5WVhsOUlHUmhkR0VnUkdsemRHRnVZMlVnWkdGMFlWeHVJQ0FnS2lCQWNHRnlZVzBnZTI1MWJXSmxjbjBnYzJsNlpTQk9kVzFpWlhJZ2IyWWdiM0pwWjJsdVlXd2diMkp6WlhKMllYUnBiMjV6WEc0Z0lDQXFMMXh1SUNCamIyNXpkSEoxWTNSdmNpaGtZWFJoUHpvZ1JteHZZWFF6TWtGeWNtRjVMQ0J6YVhwbFB6b2diblZ0WW1WeUtTQjdYRzRnSUNBZ2FXWWdLSE5wZW1VZ1BUMGdkVzVrWldacGJtVmtLU0I3WEc0Z0lDQWdJQ0JwWmlBb1pHRjBZU0E5UFNCMWJtUmxabWx1WldRcElIUm9jbTkzSUc1bGR5QkZjbkp2Y2lnblFYSm5kVzFsYm5SeklHVnljbTl5T2lCa1lYUmhJRzl5SUhOcGVtVWdhWE1nY21WeGRXbHlaV1F1SnlrN1hHNWNiaUFnSUNBZ0lIUm9hWE11WDJSaGRHRWdQU0JrWVhSaElUdGNiaUFnSUNBZ0lIUm9hWE11WDNOcGVtVWdQU0FvTVNBcklFMWhkR2d1YzNGeWRDZ3hJQ3NnTkNBcUlESWdLaUIwYUdsekxsOWtZWFJoTG14bGJtZDBhQ2twSUM4Z01qdGNiaUFnSUNBZ0lHbG1JQ2gwYUdsekxsOXphWHBsSUNFOUlFMWhkR2d1Wm14dmIzSW9kR2hwY3k1ZmMybDZaU2twWEc0Z0lDQWdJQ0FnSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWhnU1c1MllXeHBaQ0JrWVhSaElHeGxibWQwYUNBa2UzUm9hWE11WDJSaGRHRXViR1Z1WjNSb2ZTQnNaV0ZrY3lCMGJ5QnViMjRnYVc1MFpXZGxjaUJ6YVhwbElDUjdkR2hwY3k1ZmMybDZaWDFnS1R0Y2JpQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdkR2hwY3k1ZmMybDZaU0E5SUhOcGVtVTdYRzRnSUNBZ0lDQmpiMjV6ZENCa1lYUmhUR1Z1WjNSb09pQnVkVzFpWlhJZ1BTQnphWHBsSUNvZ0tITnBlbVVnTFNBeEtTQXZJREk3WEc0Z0lDQWdJQ0JwWmlBb1pHRjBZU2tnZTF4dUlDQWdJQ0FnSUNCcFppQW9aR0YwWVM1c1pXNW5kR2dnSVQwZ1pHRjBZVXhsYm1kMGFDbGNiaUFnSUNBZ0lDQWdJQ0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9ZRWx1ZG1Gc2FXUWdaR0YwWVNCc1pXNW5kR2d1SUU5aWMyVnlkbUYwYVc5dWN5QnphWHBsSUNSN2MybDZaWDBnY21WeGRXbHlaWE1nWkdGMFlTQnNaVzVuZEdnZ0pIdGtZWFJoVEdWdVozUm9mUzVnS1R0Y2JpQWdJQ0FnSUNBZ2RHaHBjeTVmWkdGMFlTQTlJR1JoZEdFN1hHNGdJQ0FnSUNCOUlHVnNjMlVnZTF4dUlDQWdJQ0FnSUNCMGFHbHpMbDlrWVhSaElEMGdibVYzSUVac2IyRjBNekpCY25KaGVTaGtZWFJoVEdWdVozUm9LVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzRnSUgxY2JseHVJQ0J3Y21sMllYUmxJRjlzYVc1bFlYSnBlbVZKU2locE9pQnVkVzFpWlhJc0lHbzZJRzUxYldKbGNpazZJRzUxYldKbGNpQjdYRzRnSUNBZ2FXWWdLQ0VvYVNBOElHb3BLU0IwYUhKdmR5QnVaWGNnUlhKeWIzSW9KMmtnYlhWemRDQmlaU0JzWlhOeklIUm9ZVzRnYWljcE8xeHVJQ0FnSUhKbGRIVnliaUIwYUdsekxsOXphWHBsSUNvZ2FTQXJJR29nTFNCTllYUm9MbVpzYjI5eUtDZ29hU0FySURJcElDb2dLR2tnS3lBeEtTa2dMeUF5S1R0Y2JpQWdmVnh1WEc0Z0lHZGxkQ2hwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrZ2UxeHVJQ0FnSUdsbUlDaHBJRDA5SUdvcFhHNGdJQ0FnSUNCeVpYUjFjbTRnTUR0Y2JpQWdJQ0JsYkhObElHbG1JQ2hwSUR3Z2FpbGNiaUFnSUNBZ0lISmxkSFZ5YmlCMGFHbHpMbDlrWVhSaFczUm9hWE11WDJ4cGJtVmhjbWw2WlVsS0tHa3NJR29wWFR0Y2JpQWdJQ0JsYkhObFhHNGdJQ0FnSUNCeVpYUjFjbTRnZEdocGN5NWZaR0YwWVZ0MGFHbHpMbDlzYVc1bFlYSnBlbVZKU2locUxDQnBLVjA3WEc0Z0lIMWNibHh1SUNCelpYUW9hVG9nYm5WdFltVnlMQ0JxT2lCdWRXMWlaWElzSUhaaGJIVmxPaUJ1ZFcxaVpYSXBJSHRjYmlBZ0lDQjBhR2x6TGw5a1lYUmhXM1JvYVhNdVgyeHBibVZoY21sNlpVbEtLR2tzSUdvcFhTQTlJSFpoYkhWbE8xeHVJQ0I5WEc1Y2JpQWdjM1JoZEdsaklHTmhiR004VkU5aWFqNG9iR2x6ZERvZ1NXNWtaWGhoWW14bFBGUlBZbW8rTENCdFpYUm9iMlE2SUNoaE9pQlVUMkpxTENCaU9pQlVUMkpxS1NBOVBpQnVkVzFpWlhJcE9pQkVhWE4wWVc1alpVMWhkSEpwZUNCN1hHNGdJQ0FnWTI5dWMzUWdjMmw2WlRvZ2JuVnRZbVZ5SUQwZ2JHbHpkQzVzWlc1bmRHZzdYRzRnSUNBZ1kyOXVjM1FnY21WeklEMGdibVYzSUVScGMzUmhibU5sVFdGMGNtbDRLSFZ1WkdWbWFXNWxaQ3dnYzJsNlpTazdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQnphWHBsT3lCcEt5c3BJSHRjYmlBZ0lDQWdJR1p2Y2lBb2JHVjBJR29nUFNCcElDc2dNVHNnYWlBOElITnBlbVU3SUdvckt5a2dlMXh1SUNBZ0lDQWdJQ0F2THlCcFppQmhibmtnYjJZZ2RHaGxJSFpoYkhWbGN5QnBjeUJ1ZFd4c0xDQnpaWFFnWkdsemRHRnVZMlVnZEc4Z01WeHVJQ0FnSUNBZ0lDQnlaWE11YzJWMEtHa3NJR29zSUNGcGMwNXBiQ2hzYVhOMFcybGRLU0FtSmlBaGFYTk9hV3dvYkdsemRGdHFYU2tnUHlCdFpYUm9iMlFvYkdsemRGdHBYU3dnYkdsemRGdHFYU2tnT2lBeEtUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJQ0FnY21WMGRYSnVJSEpsY3p0Y2JpQWdmVnh1WEc0Z0lDOHZJSE54ZFdGeVpYTWdaV0ZqYUNCMllXeDFaU0JwYmlCdFlYUnlhWGdnYVc0Z2NHeGhZMlZjYmlBZ2NIVmliR2xqSUhOeGRXRnlaU2dwSUh0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMlJoZEdFdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMmxkSUQwZ2RHaHBjeTVmWkdGMFlWdHBYU0FxS2lBeU8xeHVJQ0I5WEc1Y2JpQWdMeThnWVdSa2N5QmhibTkwYUdWeUlHMWhkSEpwZUNCMGJ5QjBhR2x6SUc5dVpTQnBiaUJ3YkdGalpWeHVJQ0J3ZFdKc2FXTWdZV1JrS0c5MGFHVnlPaUJFYVhOMFlXNWpaVTFoZEhKcGVDa2dlMXh1SUNBZ0lHbG1JQ2gwYUdsekxsOXphWHBsSUNFOVBTQnZkR2hsY2k1ZmMybDZaU2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdUV0YwY21salpYTWdiWFZ6ZENCb1lYWmxJSFJvWlNCellXMWxJSE5wZW1VdUlGUm9hWE1nYzJsNlpUb2dKSHQwYUdsekxsOXphWHBsZlN3Z2IzUm9aWElnYzJsNlpUb2dKSHR2ZEdobGNpNWZjMmw2WlgxZ0tUdGNiaUFnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIUm9hWE11WDJSaGRHRXViR1Z1WjNSb095QnBLeXNwWEc0Z0lDQWdJQ0IwYUdsekxsOWtZWFJoVzJsZElDczlJRzkwYUdWeUxsOWtZWFJoVzJsZE8xeHVJQ0I5WEc1Y2JpQWdMeThnYzNGMVlYSmxJSEp2YjNRZ1pXRmphQ0IyWVd4MVpTQnBiaUJ0WVhSeWFYZ2dhVzRnY0d4aFkyVmNiaUFnY0hWaWJHbGpJSE54Y25Rb0tTQjdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFEc2dhU3NyS1Z4dUlDQWdJQ0FnZEdocGN5NWZaR0YwWVZ0cFhTQTlJRTFoZEdndWMzRnlkQ2gwYUdsekxsOWtZWFJoVzJsZEtUdGNiaUFnZlZ4dVhHNGdJQzh2Ym05eWJXbHNlbVVnWkdsemRHRnVZMlVnYldGMGNtbDRJR2x1SUhCc1lXTmxYRzRnSUhCMVlteHBZeUJ1YjNKdFlXeHBlbVVvS1NCN1hHNGdJQ0FnYkdWMElHMXBiaUE5SURBN1hHNGdJQ0FnYkdWMElHMWhlQ0E5SUhSb2FYTXVYMlJoZEdGYk1GMDdYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFEc2dhU3NyS1NCN1hHNGdJQ0FnSUNCcFppQW9kR2hwY3k1ZlpHRjBZVnRwWFNBOElHMXBiaWxjYmlBZ0lDQWdJQ0FnYldsdUlEMGdkR2hwY3k1ZlpHRjBZVnRwWFR0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TGw5a1lYUmhXMmxkSUQ0Z2JXRjRLVnh1SUNBZ0lDQWdJQ0J0WVhnZ1BTQjBhR2x6TGw5a1lYUmhXMmxkTzF4dUlDQWdJSDFjYmlBZ0lDQmpiMjV6ZENCeVlXNW5aU0E5SUcxaGVDQXRJRzFwYmp0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMlJoZEdFdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMmxkSUQwZ2NtRnVaMlVnUFQwOUlEQWdQeUIwYUdsekxsOWtZWFJoVzJsZElDMGdiV2x1SURvZ0tIUm9hWE11WDJSaGRHRmJhVjBnTFNCdGFXNHBJQzhnS0cxaGVDQXRJRzFwYmlrN1hHNGdJSDFjYm4xY2JseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpibVJsZUdGaWJHVThWRTlpYWo0Z2UxeHVJQ0JiYVc1a1pYZzZJRzUxYldKbGNsMDZJRlJQWW1vN1hHNGdJR2RsZENCc1pXNW5kR2dvS1RvZ2JuVnRZbVZ5TzF4dWZWeHVJbDE5IiwiaW1wb3J0ICogYXMgZmwgZnJvbSAnZmFzdGVzdC1sZXZlbnNodGVpbic7XG5pbXBvcnQgeyBqYXJvV2lua2xlciB9IGZyb20gJ2phcm8td2lua2xlci10eXBlc2NyaXB0JztcbmltcG9ydCB7IGFzeW1tZXRyaWNEaXN0YW5jZSwgYnJhdW5CbGFucXVldERpc3RhbmNlLCBjb3NpbmVEaXN0YW5jZSwgZGljZURpc3RhbmNlLCBldWNsaWRlYW5EaXN0YW5jZSwgaGFtbWluZ0Rpc3RhbmNlLCBrdWxjenluc2tpRGlzdGFuY2UsIG1jQ29ubmF1Z2hleURpc3RhbmNlLCByb2dvdEdvbGRiZXJnRGlzdGFuY2UsIHJ1c3NlbERpc3RhbmNlLCBzb2thbERpc3RhbmNlLCB0YW5pbW90b0Rpc3RhbmNlLCBudW1lcmljRGlzdGFuY2UsIH0gZnJvbSAnLi4vZGlzdGFuY2UtbWV0cmljcy1tZXRob2RzJztcbmltcG9ydCB7IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlIH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy91dGlscy9zcmMvdmVjdG9yLW9wZXJhdGlvbnMnO1xuaW1wb3J0IHsgbW1EaXN0YW5jZUZ1bmN0aW9ucywgTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzIH0gZnJvbSAnLi4vbWFjcm9tb2xlY3VsZS1kaXN0YW5jZS1mdW5jdGlvbnMnO1xuaW1wb3J0IHsgRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMsIEJpdEFycmF5TWV0cmljc05hbWVzLCBTdHJpbmdNZXRyaWNzTmFtZXMsIFZlY3Rvck1ldHJpY3NOYW1lcywgTnVtYmVyTWV0cmljc05hbWVzIH0gZnJvbSAnLi9jb25zdHMnO1xuZXhwb3J0IGNvbnN0IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHMgPSB7XG4gICAgW1ZlY3Rvck1ldHJpY3NOYW1lcy5FdWNsaWRlYW5dOiBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3Qgc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogZmwuZGlzdGFuY2UsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl06IGphcm9XaW5rbGVyLFxuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXTogbWFuaGF0dGFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9dOiB0YW5pbW90b0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogZGljZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYXN5bW1ldHJpY0Rpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XTogYnJhdW5CbGFucXVldERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBjb3NpbmVEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGt1bGN6eW5za2lEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XTogbWNDb25uYXVnaGV5RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiByb2dvdEdvbGRiZXJnRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IHJ1c3NlbERpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Tb2thbF06IHNva2FsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkhhbW1pbmddOiBoYW1taW5nRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBudW1iZXJEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtOdW1iZXJNZXRyaWNzTmFtZXMuTnVtZXJpY0Rpc3RhbmNlXTogbnVtZXJpY0Rpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBBdmFpbGFibGVNZXRyaWNzID0ge1xuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5WZWN0b3JdOiB7XG4gICAgICAgIFtWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tWZWN0b3JNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5TdHJpbmddOiB7XG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5MZXZlbnNodGVpbl0sXG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdOiBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzW1N0cmluZ01ldHJpY3NOYW1lcy5KYXJvV2lua2xlcl0sXG4gICAgICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTWFuaGF0dGFuXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5CaXRBcnJheV06IHtcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuRGljZV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5CcmF1bkJsYW5xdWV0XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLk1jQ29ubmF1Z2hleV06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Sb2dvdEdvbGRiZXJnXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJ1c3NlbF06IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuU29rYWxdLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGVdOiB7XG4gICAgICAgIFtNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuSEFNTUlOR106IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddLFxuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTEVWRU5TSFRFSU5dLFxuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTkVFRExFTUFOTl9XVU5TQ0hdLFxuICAgIH0sXG4gICAgW0Rpc3RhbmNlTWV0cmljc1N1YmplY3RzLk51bWJlcl06IHtcbiAgICAgICAgW051bWJlck1ldHJpY3NOYW1lcy5OdW1lcmljRGlzdGFuY2VdOiBudW1iZXJEaXN0YW5jZU1ldHJpY3NNZXRob2RzW051bWJlck1ldHJpY3NOYW1lcy5OdW1lcmljRGlzdGFuY2VdLFxuICAgIH1cbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKVxuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGUudG9TdHJpbmcoKTtcbn1cbi8qKiBNYW5oYXR0YW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gc2VxdWVuY2VzIChtYXRjaCAtIDAsIG1pc21hdGNoIC0gMSkgbm9ybWFsaXplZCBmb3IgbGVuZ3RoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3RhbmNlKHMxLCBzMikge1xuICAgIGlmIChzMS5sZW5ndGggIT09IHMyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkaXN0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzMS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGRpc3QgKz0gczFbaV0gPT0gczJbaV0gPyAwIDogMTtcbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFVkJRMmhDTEdWQlFXVXNSMEZEYUVJc1RVRkJUU3cyUWtGQk5rSXNRMEZCUXp0QlFVVnlReXhQUVVGUExFVkJRVU1zTUVKQlFUQkNMRVZCUVVNc1RVRkJUU3hwUkVGQmFVUXNRMEZCUXp0QlFVY3pSaXhQUVVGUExFVkJRVU1zYlVKQlFXMUNMRVZCUVVVc2QwSkJRWGRDTEVWQlFVTXNUVUZCVFN4eFEwRkJjVU1zUTBGQlF6dEJRVU5zUnl4UFFVRlBMRVZCUVVNc2RVSkJRWFZDTEVWQlFVVXNiMEpCUVc5Q0xFVkJRMjVFTEd0Q1FVRnJRaXhGUVVGRkxHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZETEUxQlFVMHNWVUZCVlN4RFFVRkRPMEZCUnpsRkxFMUJRVTBzUTBGQlF5eE5RVUZOTERSQ1FVRTBRaXhIUVVGNVJEdEpRVU5vUnl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMREJDUVVFd1FqdERRVU16UkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzTkVKQlFUUkNMRWRCUVhsRU8wbEJRMmhITEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRkZCUVZFN1NVRkROME1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTeFhRVUZYTzBsQlF6ZERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc2FVSkJRV2xDTzBOQlEyeEVMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTdzRRa0ZCT0VJc1IwRkJOa1E3U1VGRGRFY3NRMEZCUXl4dlFrRkJiMElzUTBGQlF5eFJRVUZSTEVOQlFVTXNSVUZCUlN4blFrRkJaMEk3U1VGRGFrUXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNSVUZCUlN4WlFVRlpPMGxCUTNwRExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1ZVRkJWU3hEUVVGRExFVkJRVVVzYTBKQlFXdENPMGxCUTNKRUxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1lVRkJZU3hEUVVGRExFVkJRVVVzY1VKQlFYRkNPMGxCUXpORUxFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzWTBGQll6dEpRVU0zUXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZWQlFWVXNRMEZCUXl4RlFVRkZMR3RDUVVGclFqdEpRVU55UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRzlDUVVGdlFqdEpRVU42UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEdGQlFXRXNRMEZCUXl4RlFVRkZMSEZDUVVGeFFqdEpRVU16UkN4RFFVRkRMRzlDUVVGdlFpeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMR05CUVdNN1NVRkROME1zUTBGQlF5eHZRa0ZCYjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUlVGQlJTeGhRVUZoTzBsQlF6TkRMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVc1pVRkJaVHRKUVVNdlF5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGTkJRVk1zUTBGQlF5eEZRVUZGTEdsQ1FVRnBRanREUVVOd1JDeERRVUZETzBGQlJVWXNUVUZCVFN4RFFVRkRMRTFCUVUwc05FSkJRVFJDTEVkQlFYbEVPMGxCUTJoSExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1pVRkJaU3hEUVVGRExFVkJRVVVzWlVGQlpUdERRVU4wUkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzWjBKQlFXZENMRWRCUVVjN1NVRkRPVUlzUTBGQlF5eDFRa0ZCZFVJc1EwRkJReXhOUVVGTkxFTkJRVU1zUlVGQlJUdFJRVU5vUXl4RFFVRkRMR3RDUVVGclFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRFJDUVVFMFFpeERRVUZETEd0Q1FVRnJRaXhEUVVGRExGTkJRVk1zUTBGQlF6dExRVU16Ump0SlFVTkVMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNN1VVRkRPVVlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhYUVVGWExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4WFFVRlhMRU5CUVVNN1VVRkRPVVlzUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRNMFk3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTzFGQlEyeERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNVVUZCVVN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVVVGQlVTeERRVUZETzFGQlF6bEdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zU1VGQlNTeERRVUZETzFGQlEzUkdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEyeEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETzFGQlEzaEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6RkdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNWVUZCVlN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETzFGQlEyeEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNXVUZCV1N4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zV1VGQldTeERRVUZETzFGQlEzUkhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNZVUZCWVN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETzFGQlEzaEhMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETzFGQlF6RkdMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNTMEZCU3l4RFFVRkRMRVZCUVVVc09FSkJRVGhDTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zUzBGQlN5eERRVUZETzB0QlEzcEdPMGxCUTBRc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4aFFVRmhMRU5CUVVNc1JVRkJSVHRSUVVOMlF5eERRVUZETEhkQ1FVRjNRaXhEUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRTlCUVU4c1EwRkJRenRSUVVONlJpeERRVUZETEhkQ1FVRjNRaXhEUVVGRExGZEJRVmNzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMRmRCUVZjc1EwRkJRenRSUVVOcVJ5eERRVUZETEhkQ1FVRjNRaXhEUVVGRExHbENRVUZwUWl4RFFVRkRMRVZCUVVVc2JVSkJRVzFDTEVOQlFVTXNkMEpCUVhkQ0xFTkJRVU1zYVVKQlFXbENMRU5CUVVNN1MwRkRPVWM3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlEyaERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNaVUZCWlN4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zWlVGQlpTeERRVUZETzB0QlEzWkhPME5CUTBZc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlF5eE5RVUZOTEdkQ1FVRm5RaXhIUVVGeFFpeE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGblFpeERRVUZETzB0QlF6VkZMRTFCUVUwc1EwRkJReXhEUVVGRExFZEJRWEZDTEVWQlFVVXNSMEZCUnl4RlFVRkZMRVZCUVVVN1NVRkRja01zUzBGQlN5eE5RVUZOTEVkQlFVY3NTVUZCU1N4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUTBGQlF6dFJRVU40UlN4SFFVRkhMRU5CUVVNc1IwRkJlVUlzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXp0SlFVVjJReXhQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5pTEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVdWVUxFMUJRVTBzVlVGQlZTeGpRVUZqTEVOQlFVTXNTVUZCYTBJN1NVRkRMME1zVDBGQlR5eG5Ra0ZCWjBJc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeFJRVUZSTEVOQlFVTTdRVUZETlVNc1EwRkJRenRCUVVWRUxFMUJRVTBzVlVGQlZTeG5Ra0ZCWjBJc1EwRkJReXhKUVVGclFqdEpRVU5xUkN4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRlZCUVZVc1EwRkJRenRCUVVNNVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMR05CUVdNc1EwRkJReXhKUVVGclFqdEpRVU12UXl4UFFVRlBMR2RDUVVGblFpeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRkZCUVZFc1EwRkJRenRCUVVNMVF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSEZDUVVGeFFpeERRVUZETEVsQlFXdENPMGxCUTNSRUxFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzZFVKQlFYVkNMRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzBGQlEzQkdMRU5CUVVNN1FVRkZSQ3huUjBGQlowYzdRVUZEYUVjc1RVRkJUU3hWUVVGVkxHbENRVUZwUWl4RFFVRkRMRVZCUVZVc1JVRkJSU3hGUVVGVk8wbEJRM1JFTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTFCUVUwc1MwRkJTeXhGUVVGRkxFTkJRVU1zVFVGQlRTeEZRVUZGTzFGQlF6TkNMRTlCUVU4c1EwRkJReXhEUVVGRE8wdEJRMVk3VTBGQlRUdFJRVU5NTEVsQlFVa3NTVUZCU1N4SFFVRlhMRU5CUVVNc1EwRkJRenRSUVVOeVFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEUxQlFVMHNSVUZCUlN4RFFVRkRMRVZCUVVVN1dVRkRhRU1zU1VGQlNTeEpRVUZKTEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEycERMRTlCUVU4c1NVRkJTU3hIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTTdTMEZEZWtJN1FVRkRTQ3hEUVVGRE8wRkJSVVFzTkVSQlFUUkVPMEZCUXpWRUxFMUJRVTBzVDBGQlR5eFBRVUZQTzBsQlNXeENPenM3TzA5QlNVYzdTVUZEU0N4WlFVRlpMRTFCUVc5Q08xRkJRemxDTEVsQlFVa3NRMEZCUXl4TlFVRk5MRWRCUVVjc1RVRkJUU3hEUVVGRE8xRkJRM0pDTEVsQlFVa3NRMEZCUXl4UlFVRlJMRWRCUVVjc1owSkJRV2RDTEVOQlFVTXNUVUZCVFN4RFFVRjFRaXhEUVVGRE8wbEJRMnBGTEVOQlFVTTdTVUZGUkRzN096czdUMEZMUnp0SlFVTkpMRlZCUVZVc1EwRkJReXhKUVVGVk8xRkJRekZDTEUxQlFVMHNTVUZCU1N4SFFVVk9MR2RDUVVGblFpeERRVUZETzFGQlEzSkNMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zWTBGQll5eERRVUZETEVsQlFVa3NRMEZCUXl4UlFVRlJMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRU5CUVVNc1kwRkJZeXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTTdXVUZEZWtZc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF5eHRRa0ZCYlVJc1NVRkJTU3hEUVVGRExFMUJRVTBzYTBKQlFXdENMRWxCUVVrc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF5eERRVUZETzFGQlEyNUdMRTlCUVU4c2NVSkJRWEZDTEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRGVFTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNUVUZCVFN4RFFVRnhReXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTTdXVUZETjBVc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eFJRVUZSTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1RVRkJUU3hEUVVGdFFpeERRVUZETzBsQlEzWkVMRU5CUVVNN1NVRkZSRHM3T3pzN1QwRkxSenRKUVVOSkxFMUJRVTBzUTBGQlF5eHRRa0ZCYlVJc1EwRkJReXhSUVVFMFFqdFJRVU0xUkN4UFFVRlBMRTFCUVUwc1EwRkJReXhKUVVGSkxFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU5xUkN4RFFVRkRPMGxCUlVRN08wOUJSVWM3U1VGRFNDeE5RVUZOTEV0QlFVc3NhVUpCUVdsQ08xRkJRekZDTEU5QlFVOHNUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4RFFVRkRPMGxCUTNaRExFTkJRVU03UTBGRFJpSXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQXFJR0Z6SUdac0lHWnliMjBnSjJaaGMzUmxjM1F0YkdWMlpXNXphSFJsYVc0bk8xeHVhVzF3YjNKMElIdHFZWEp2VjJsdWEyeGxjbjBnWm5KdmJTQW5hbUZ5YnkxM2FXNXJiR1Z5TFhSNWNHVnpZM0pwY0hRbk8xeHVhVzF3YjNKMElIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdGNiaUFnWVhONWJXMWxkSEpwWTBScGMzUmhibU5sTEZ4dUlDQmljbUYxYmtKc1lXNXhkV1YwUkdsemRHRnVZMlVzWEc0Z0lHTnZjMmx1WlVScGMzUmhibU5sTEZ4dUlDQmthV05sUkdsemRHRnVZMlVzWEc0Z0lHVjFZMnhwWkdWaGJrUnBjM1JoYm1ObExGeHVJQ0JvWVcxdGFXNW5SR2x6ZEdGdVkyVXNYRzRnSUd0MWJHTjZlVzV6YTJsRWFYTjBZVzVqWlN4Y2JpQWdiV05EYjI1dVlYVm5hR1Y1UkdsemRHRnVZMlVzWEc0Z0lISnZaMjkwUjI5c1pHSmxjbWRFYVhOMFlXNWpaU3hjYmlBZ2NuVnpjMlZzUkdsemRHRnVZMlVzWEc0Z0lITnZhMkZzUkdsemRHRnVZMlVzWEc0Z0lIUmhibWx0YjNSdlJHbHpkR0Z1WTJVc1hHNGdJRzUxYldWeWFXTkVhWE4wWVc1alpTeGNibjBnWm5KdmJTQW5MaTR2WkdsemRHRnVZMlV0YldWMGNtbGpjeTF0WlhSb2IyUnpKenRjYmx4dWFXMXdiM0owSUh0allXeGpkV3hoZEdWRmRXTnNhV1JsWVc1RWFYTjBZVzVqWlgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRtVmpkRzl5TFc5d1pYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElFSnBkRUZ5Y21GNUlHWnliMjBnSjBCa1lYUmhaM0p2YXkxc2FXSnlZWEpwWlhNdmRYUnBiSE12YzNKakwySnBkQzFoY25KaGVTYzdYRzVwYlhCdmNuUWdlMVpsWTNSdmNpd2dVM1J5YVc1blJHbGpkR2x2Ym1GeWVYMGdabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZkSGx3WlMxa1pXTnNZWEpoZEdsdmJuTW5PMXh1YVcxd2IzSjBJSHR0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6TENCTmJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1elRtRnRaWE45SUdaeWIyMGdKeTR1TDIxaFkzSnZiVzlzWldOMWJHVXRaR2x6ZEdGdVkyVXRablZ1WTNScGIyNXpKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXNJRUpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TEZ4dUlDQlRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXNJRlpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeXdnVG5WdFltVnlUV1YwY21samMwNWhiV1Z6ZlNCbWNtOXRJQ2N1TDJOdmJuTjBjeWM3WEc1Y2JseHVaWGh3YjNKMElHTnZibk4wSUhabFkzUnZja1JwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJXWldOMGIzSXNJSGs2SUZabFkzUnZjaWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0V1pXTjBiM0pOWlhSeWFXTnpUbUZ0WlhNdVJYVmpiR2xrWldGdVhUb2dZMkZzWTNWc1lYUmxSWFZqYkdsa1pXRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnYzNSeWFXNW5SR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrY3pvZ2V5QmJibUZ0WlRvZ2MzUnlhVzVuWFRvZ0tIZzZJSE4wY21sdVp5d2dlVG9nYzNSeWFXNW5LU0E5UGlCdWRXMWlaWElnZlNBOUlIdGNiaUFnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1TVpYWmxibk5vZEdWcGJsMDZJR1pzTG1ScGMzUmhibU5sTEZ4dUlDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3BoY205WGFXNXJiR1Z5WFRvZ2FtRnliMWRwYm10c1pYSXNYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRXRnVhR0YwZEdGdVhUb2diV0Z1YUdGMGRHRnVSR2x6ZEdGdVkyVXNYRzU5TzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nUW1sMFFYSnlZWGtzSUhrNklFSnBkRUZ5Y21GNUtTQTlQaUJ1ZFcxaVpYSWdmU0E5SUh0Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxSaGJtbHRiM1J2WFRvZ2RHRnVhVzF2ZEc5RWFYTjBZVzVqWlN4Y2JpQWdXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtScFkyVmRPaUJrYVdObFJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhUb2dZWE41YlcxbGRISnBZMFJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRbkpoZFc1Q2JHRnVjWFZsZEYwNklHSnlZWFZ1UW14aGJuRjFaWFJFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMDZJR052YzJsdVpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVMzVnNZM3A1Ym5OcmFWMDZJR3QxYkdONmVXNXphMmxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwNklHMWpRMjl1Ym1GMVoyaGxlVVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVbTluYjNSSGIyeGtZbVZ5WjEwNklISnZaMjkwUjI5c1pHSmxjbWRFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMDZJSEoxYzNObGJFUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVUyOXJZV3hkT2lCemIydGhiRVJwYzNSaGJtTmxMRnh1SUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTR0Z0YldsdVoxMDZJR2hoYlcxcGJtZEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR1YxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUc1MWJXSmxja1JwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJ1ZFcxaVpYSXNJSGs2SUc1MWJXSmxjaWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVRuVnRaWEpwWTBScGMzUmhibU5sWFRvZ2JuVnRaWEpwWTBScGMzUmhibU5sTEZ4dWZUdGNibHh1Wlhod2IzSjBJR052Ym5OMElFRjJZV2xzWVdKc1pVMWxkSEpwWTNNZ1BTQjdYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVXWldOMGIzSmRPaUI3WEc0Z0lDQWdXMVpsWTNSdmNrMWxkSEpwWTNOT1lXMWxjeTVGZFdOc2FXUmxZVzVkT2lCMlpXTjBiM0pFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcxWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5NUZkV05zYVdSbFlXNWRMRnh1SUNCOUxGeHVJQ0JiUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVVM1J5YVc1blhUb2dlMXh1SUNBZ0lGdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUR1YyWlc1emFIUmxhVzVkT2lCemRISnBibWRFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcxTjBjbWx1WjAxbGRISnBZM05PWVcxbGN5NU1aWFpsYm5Ob2RHVnBibDBzWEc0Z0lDQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwNklITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3BoY205WGFXNXJiR1Z5WFN4Y2JpQWdJQ0JiVTNSeWFXNW5UV1YwY21samMwNWhiV1Z6TGsxaGJtaGhkSFJoYmwwNklITjBjbWx1WjBScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMazFoYm1oaGRIUmhibDBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVDYVhSQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5ZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5ZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUVhV05sWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtScFkyVmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVCYzNsdGJXVjBjbWxqWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtGemVXMXRaWFJ5YVdOZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUNjbUYxYmtKc1lXNXhkV1YwWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGtKeVlYVnVRbXhoYm5GMVpYUmRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRMjl6YVc1bFhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVTM1ZzWTNwNWJuTnJhVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVMZFd4amVubHVjMnRwWFN4Y2JpQWdJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVRXTkRiMjV1WVhWbmFHVjVYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMazFqUTI5dWJtRjFaMmhsZVYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsSnZaMjkwUjI5c1pHSmxjbWRkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VW05bmIzUkhiMnhrWW1WeVoxMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEoxYzNObGJGMDZJR0pwZEVGeWNtRjVSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVNkWE56Wld4ZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVRiMnRoYkYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VGIydGhiRjBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVOWVdOeWIwMXZiR1ZqZFd4bFhUb2dleUF2THlCdmNIUnBiMjVoYkNCaGNtZHpJRzVsWldSbFpDQm1iM0lnYldGamNtOXRiMnhsWTNWc1pTQm1kVzVqZEdsdmJuTWdkMmhwWTJnZ2FXNXBkR2xoYkdsNlpTQjBhR1Z0WEc0Z0lDQWdXMDF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5NUlRVTFOU1U1SFhUb2diVzFFYVhOMFlXNWpaVVoxYm1OMGFXOXVjMXROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVTRUZOVFVsT1IxMHNYRzRnSUNBZ1cwMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3k1TVJWWkZUbE5JVkVWSlRsMDZJRzF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5iVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMa3hGVmtWT1UwaFVSVWxPWFN4Y2JpQWdJQ0JiVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMazVGUlVSTVJVMUJUazVmVjFWT1UwTklYVG9nYlcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzF0TmJVUnBjM1JoYm1ObFJuVnVZM1JwYjI1elRtRnRaWE11VGtWRlJFeEZUVUZPVGw5WFZVNVRRMGhkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VG5WdFltVnlYVG9nZTF4dUlDQWdJRnRPZFcxaVpYSk5aWFJ5YVdOelRtRnRaWE11VG5WdFpYSnBZMFJwYzNSaGJtTmxYVG9nYm5WdFltVnlSR2x6ZEdGdVkyVk5aWFJ5YVdOelRXVjBhRzlrYzF0T2RXMWlaWEpOWlhSeWFXTnpUbUZ0WlhNdVRuVnRaWEpwWTBScGMzUmhibU5sWFN4Y2JpQWdmVnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtWeHVJQ0FnSUNBZ2NtVjBXM1poYkNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTmRJRDBnYTJWNU8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN3Z2UzMHBPMXh1WEc1bGVIQnZjblFnZEhsd1pTQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqY3p0Y2JtVjRjRzl5ZENCMGVYQmxJRlpsWTNSdmNrMWxkSEpwWTNNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjMXRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NVdaV04wYjNKZE8xeHVaWGh3YjNKMElIUjVjR1VnVTNSeWFXNW5UV1YwY21samN5QTlJR3RsZVc5bUlIUjVjR1Z2WmlCQmRtRnBiR0ZpYkdWTlpYUnlhV056VzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCQ2FYUkJjbkpoZVUxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1Q2FYUkJjbkpoZVYwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkSEpwWTNNZ1BTQlRkSEpwYm1kTlpYUnlhV056SUh3Z1FtbDBRWEp5WVhsTlpYUnlhV056SUh3Z1ZtVmpkRzl5VFdWMGNtbGpjeUI4WEc0Z0lFMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3lCOElFNTFiV0psY2sxbGRISnBZM05PWVcxbGN6dGNibHh1Wlhod2IzSjBJSFI1Y0dVZ1ZtRnNhV1JVZVhCbGN5QTlYRzRnSUhzZ1pHRjBZVG9nYzNSeWFXNW5XMTBzSUcxbGRISnBZem9nVTNSeWFXNW5UV1YwY21samN5QjhJRTF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5PWVcxbGN5QjlJSHhjYmlBZ2V5QmtZWFJoT2lCV1pXTjBiM0piWFN3Z2JXVjBjbWxqT2lCV1pXTjBiM0pOWlhSeWFXTnpJSDBnZkZ4dUlDQjdJR1JoZEdFNklFSnBkRUZ5Y21GNVcxMHNJRzFsZEhKcFl6b2dRbWwwUVhKeVlYbE5aWFJ5YVdOeklIMGdmRnh1SUNCN0lHUmhkR0U2SUc1MWJXSmxjbHRkTENCdFpYUnlhV002SUU1MWJXSmxjazFsZEhKcFkzTk9ZVzFsY3lCOU8xeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5UZEhKcGJtZE5aWFJ5YVdNb2JtRnRaVG9nUzI1dmQyNU5aWFJ5YVdOektTQjdYRzRnSUhKbGRIVnliaUJOWlhSeWFXTlViMFJoZEdGVWVYQmxXMjVoYldWZElEMDlJQ2RUZEhKcGJtY25PMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FYTkNhWFJCY25KaGVVMWxkSEpwWXlodVlXMWxPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnY21WMGRYSnVJRTFsZEhKcFkxUnZSR0YwWVZSNWNHVmJibUZ0WlYwZ1BUMGdKMEpwZEVGeWNtRjVKenRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHpWbVZqZEc5eVRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQW5WbVZqZEc5eUp6dGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdselRXRmpjbTlOYjJ4bFkzVnNaVTFsZEhKcFl5aHVZVzFsT2lCTGJtOTNiazFsZEhKcFkzTXBJSHRjYmlBZ2NtVjBkWEp1SUUxbGRISnBZMVJ2UkdGMFlWUjVjR1ZiYm1GdFpWMGdQVDBnUkdsemRHRnVZMlZOWlhSeWFXTnpVM1ZpYW1WamRITXVUV0ZqY205TmIyeGxZM1ZzWlM1MGIxTjBjbWx1WnlncE8xeHVmVnh1WEc0dktpb2dUV0Z1YUdGMGRHRnVJR1JwYzNSaGJtTmxJR0psZEhkbFpXNGdkSGR2SUhObGNYVmxibU5sY3lBb2JXRjBZMmdnTFNBd0xDQnRhWE50WVhSamFDQXRJREVwSUc1dmNtMWhiR2w2WldRZ1ptOXlJR3hsYm1kMGFDNGdLaTljYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJ0WVc1b1lYUjBZVzVFYVhOMFlXNWpaU2h6TVRvZ2MzUnlhVzVuTENCek1qb2djM1J5YVc1bktUb2diblZ0WW1WeUlIdGNiaUFnYVdZZ0tITXhMbXhsYm1kMGFDQWhQVDBnY3pJdWJHVnVaM1JvS1NCN1hHNGdJQ0FnY21WMGRYSnVJREU3WEc0Z0lIMGdaV3h6WlNCN1hHNGdJQ0FnYkdWMElHUnBjM1E2SUc1MWJXSmxjaUE5SURBN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlERTdJR2tnUENCek1TNXNaVzVuZEdnN0lHa3JLeWxjYmlBZ0lDQWdJR1JwYzNRZ0t6MGdjekZiYVYwZ1BUMGdjekpiYVYwZ1B5QXdJRG9nTVR0Y2JpQWdJQ0J5WlhSMWNtNGdaR2x6ZENBdklITXhMbXhsYm1kMGFEdGNiaUFnZlZ4dWZWeHVYRzR2S2lvZ1ZXNXBabWxsWkNCamJHRnpjeUJwYlhCc1pXMWxiblJwYm1jZ1pHbG1abVZ5Wlc1MElITjBjbWx1WnlCdFpXRnpkWEpsY3k0Z0tpOWNibVY0Y0c5eWRDQmpiR0Z6Y3lCTlpXRnpkWEpsSUh0Y2JpQWdjSEp2ZEdWamRHVmtJRzFsZEdodlpEb2dTMjV2ZDI1TlpYUnlhV056TzF4dUlDQndjbTkwWldOMFpXUWdaR0YwWVZSNWNHVTZJRUYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjenRjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRM0psWVhSbGN5QmhiaUJwYm5OMFlXNWpaU0J2WmlCTlpXRnpkWEpsSUhkcGRHZ2dMbHh1SUNBZ0tpQkFjR0Z5WVcwZ2UzTjBjbWx1WjMwZ2JXVjBhRzlrSUUxbGRHaHZaQ0IwYnlCallXeGpkV3hoZEdVZ1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCemRISnBibWR6TGx4dUlDQWdLaUJBYldWdFltVnliMllnVFdWaGMzVnlaWEpjYmlBZ0lDb3ZYRzRnSUdOdmJuTjBjblZqZEc5eUtHMWxkR2h2WkRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lDQWdkR2hwY3k1dFpYUm9iMlFnUFNCdFpYUm9iMlE3WEc0Z0lDQWdkR2hwY3k1a1lYUmhWSGx3WlNBOUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJXVjBhRzlrWFNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTTdYRzRnSUgxY2JseHVJQ0F2S2lwY2JpQWdJQ29nVW1WMGRYSnVjeUJqZFhOMGIyMGdjM1J5YVc1bklHUnBjM1JoYm1ObElHWjFibU4wYVc5dUlITndaV05wWm1sbFpDNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0dmNIUnpmU0J2Y0hSeklFOXdkR2x2Ym5NZ1ptOXlJSFJvWlNCdFpXRnpkWEpsTGlCMWMyVmtJR1p2Y2lCdFlXTnliMjF2YkdWamRXeGxJR1JwYzNSaGJtTmxjMXh1SUNBZ0tpQkFjbVYwZFhKdUlIdEVhWE4wWVc1alpVMWxkSEpwWTMwZ1EyRnNiR0poWTJzZ2IyWWdkR2hsSUcxbFlYTjFjbVVnWTJodmMyVnVMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSEIxWW14cFl5Qm5aWFJOWldGemRYSmxLRzl3ZEhNL09pQmhibmtwT2lCRWFYTjBZVzVqWlUxbGRISnBZeUI3WEc0Z0lDQWdZMjl1YzNRZ1pHbGpkRG9nZXlCYmEyVjVPaUJ6ZEhKcGJtZGRPbHh1SUNBZ0lDQWdlMXRyWlhreU9pQnpkSEpwYm1kZE9pQkVhWE4wWVc1alpVMWxkSEpwWXlCOElDZ29iM0IwY3pvZ1lXNTVLU0E5UGlCRWFYTjBZVzVqWlUxbGRISnBZeWw5WEc0Z0lDQWdmU0E5SUVGMllXbHNZV0pzWlUxbGRISnBZM003WEc0Z0lDQWdhV1lnS0NGa2FXTjBMbWhoYzA5M2JsQnliM0JsY25SNUtIUm9hWE11WkdGMFlWUjVjR1VwSUh4OElDRmthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRMbWhoYzA5M2JsQnliM0JsY25SNUtIUm9hWE11YldWMGFHOWtLU2xjYmlBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdWVzVyYm05M2JpQnRaV0Z6ZFhKbElDUjdkR2hwY3k1dFpYUm9iMlI5SUdadmNpQmtZWFJoSUhSNWNHVWdKSHQwYUdsekxtUmhkR0ZVZVhCbGZXQXBPMXh1SUNBZ0lISmxkSFZ5YmlCcGMwMWhZM0p2VFc5c1pXTjFiR1ZOWlhSeWFXTW9kR2hwY3k1dFpYUm9iMlFwSUQ5Y2JpQWdJQ0FnSUNoa2FXTjBXM1JvYVhNdVpHRjBZVlI1Y0dWZFczUm9hWE11YldWMGFHOWtYU0JoY3lBb0tHOXdkSE02SUdGdWVTa2dQVDRnUkdsemRHRnVZMlZOWlhSeWFXTXBLU2h2Y0hSektTQTZYRzRnSUNBZ0lDQmthV04wVzNSb2FYTXVaR0YwWVZSNWNHVmRXM1JvYVhNdWJXVjBhRzlrWFNCaGN5QkVhWE4wWVc1alpVMWxkSEpwWXp0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHTjFjM1J2YlNCemRISnBibWNnWkdsemRHRnVZMlVnWW5rZ2RHaGxJR2RwZG1WdUlHUmhkR0VnZEhsd1pTNWNiaUFnSUNvZ1FIQmhjbUZ0SUh0QmRtRnBiR0ZpYkdWRVlYUmhWSGx3WlhOOUlHUmhkR0ZVZVhCbElFMWxkSEpwWXlkeklHUmhkR0VnZEhsd1pWeHVJQ0FnS2lCQWNtVjBkWEp1SUh0emRISnBibWRiWFgwZ1RXVjBjbWxqSUc1aGJXVnpJSGRvYVdOb0lHVjRjR1ZqZEhNZ2RHaGxJR2RwZG1WdUlHUmhkR0VnZEhsd1pWeHVJQ0FnS2lCQWJXVnRZbVZ5YjJZZ1RXVmhjM1Z5WlhKY2JpQWdJQ292WEc0Z0lIQjFZbXhwWXlCemRHRjBhV01nWjJWMFRXVjBjbWxqUW5sRVlYUmhWSGx3WlNoa1lYUmhWSGx3WlRvZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWektUb2djM1J5YVc1blcxMGdlMXh1SUNBZ0lISmxkSFZ5YmlCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOelcyUmhkR0ZVZVhCbFhTazdYRzRnSUgxY2JseHVJQ0F2S2lvZ1VtVjBkWEp1Y3lCdFpYUnlhV01nYm1GdFpYTWdZWFpoYVd4aFlteGxMbHh1SUNBZ0tpQkFiV1Z0WW1WeWIyWWdUV1ZoYzNWeVpYSmNiaUFnSUNvdlhHNGdJSE4wWVhScFl5Qm5aWFFnWVhaaGFXeGhZbXhsVFdWaGMzVnlaWE1vS1RvZ2MzUnlhVzVuVzEwZ2UxeHVJQ0FnSUhKbGRIVnliaUJQWW1wbFkzUXVhMlY1Y3loQmRtRnBiR0ZpYkdWTlpYUnlhV056S1R0Y2JpQWdmVnh1ZlZ4dUlsMTkiLCJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbmltcG9ydCB7IERpc3RhbmNlTWF0cml4IH0gZnJvbSAnQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4JztcbmltcG9ydCB7IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMgfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy90eXBlZC1tZXRyaWNzJztcbmNvbnN0IGN0eCA9IHNlbGY7XG5jdHguYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsICh7IGRhdGE6IHsgcGVwdGlkZXNMaXN0LCBtZXRyaWMgfSB9KSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZG0gPSBEaXN0YW5jZU1hdHJpeC5jYWxjKHBlcHRpZGVzTGlzdCwgKGEsIGIpID0+IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbbWV0cmljXShhLCBiKSk7XG4gICAgICAgIGRhdGEuZGlzdGFuY2VzID0gZG0uZGF0YTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgZGF0YS5lcnJvciA9IGU7XG4gICAgfVxuICAgIHNlbGYucG9zdE1lc3NhZ2UoZGF0YSk7XG59KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV0YwY21sNExuZHZjbXRsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbVJwYzNSaGJtTmxMVzFoZEhKcGVDNTNiM0pyWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdPenM3T3pzN08wRkJRVUVzVDBGQlR5eEZRVUZETEdOQlFXTXNSVUZCUXl4TlFVRk5MRFJEUVVFMFF5eERRVUZETzBGQlF6RkZMRTlCUVU4c1JVRkJReXcwUWtGQk5FSXNSVUZCUXl4TlFVRk5MREJEUVVFd1F5eERRVUZETzBGQlJYUkdMRTFCUVUwc1IwRkJSeXhIUVVGWExFbEJRVmNzUTBGQlF6dEJRVVZvUXl4SFFVRkhMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNVMEZCVXl4RlFVRkZMRU5CUVU4c1JVRkJReXhKUVVGSkxFVkJRVVVzUlVGQlF5eFpRVUZaTEVWQlFVVXNUVUZCVFN4RlFVRkRMRVZCUVVNc1JVRkJSU3hGUVVGRk8wbEJRM1pGTEUxQlFVMHNTVUZCU1N4SFFVRTBReXhGUVVGRkxFTkJRVU03U1VGRGVrUXNTVUZCU1R0UlFVTkdMRTFCUVUwc1JVRkJSU3hIUVVGSExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNXVUZCV1N4RlFVTjZReXhEUVVGRExFTkJRVk1zUlVGQlJTeERRVUZUTEVWQlFVVXNSVUZCUlN4RFFVRkRMRFJDUVVFMFFpeERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEzaEZMRWxCUVVrc1EwRkJReXhUUVVGVExFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NRMEZCUXp0TFFVTXhRanRKUVVGRExFOUJRVThzUTBGQlF5eEZRVUZGTzFGQlExWXNTVUZCU1N4RFFVRkRMRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGFFSTdTVUZEUkN4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzBGQlEzcENMRU5CUVVNc1EwRkJRU3hEUVVGRExFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTBScGMzUmhibU5sVFdGMGNtbDRmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMMjFzTDNOeVl5OWthWE4wWVc1alpTMXRZWFJ5YVhnbk8xeHVhVzF3YjNKMElIdHpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpmU0JtY205dElDZEFaR0YwWVdkeWIyc3RiR2xpY21GeWFXVnpMMjFzTDNOeVl5OTBlWEJsWkMxdFpYUnlhV056Snp0Y2JseHVZMjl1YzNRZ1kzUjRPaUJYYjNKclpYSWdQU0J6Wld4bUlHRnpJR0Z1ZVR0Y2JseHVZM1I0TG1Ga1pFVjJaVzUwVEdsemRHVnVaWElvSjIxbGMzTmhaMlVuTENCaGMzbHVZeUFvZTJSaGRHRTZJSHR3WlhCMGFXUmxjMHhwYzNRc0lHMWxkSEpwWTMxOUtTQTlQaUI3WEc0Z0lHTnZibk4wSUdSaGRHRTZJSHRsY25KdmNqODZJR0Z1ZVN3Z1pHbHpkR0Z1WTJWelB6b2dSbXh2WVhRek1rRnljbUY1ZlNBOUlIdDlPMXh1SUNCMGNua2dlMXh1SUNBZ0lHTnZibk4wSUdSdElEMGdSR2x6ZEdGdVkyVk5ZWFJ5YVhndVkyRnNZeWh3WlhCMGFXUmxjMHhwYzNRc1hHNGdJQ0FnSUNBb1lUb2djM1J5YVc1bkxDQmlPaUJ6ZEhKcGJtY3BJRDArSUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYmJXVjBjbWxqWFNoaExDQmlLU2s3WEc0Z0lDQWdaR0YwWVM1a2FYTjBZVzVqWlhNZ1BTQmtiUzVrWVhSaE8xeHVJQ0I5SUdOaGRHTm9JQ2hsS1NCN1hHNGdJQ0FnWkdGMFlTNWxjbkp2Y2lBOUlHVTdYRzRnSUgxY2JpQWdjMlZzWmk1d2IzTjBUV1Z6YzJGblpTaGtZWFJoS1R0Y2JuMHBPMXh1SWwxOSIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4vLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuX193ZWJwYWNrX3JlcXVpcmVfXy5tID0gX193ZWJwYWNrX21vZHVsZXNfXztcblxuLy8gdGhlIHN0YXJ0dXAgZnVuY3Rpb25cbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG5cdC8vIFRoaXMgZW50cnkgbW9kdWxlIGRlcGVuZHMgb24gb3RoZXIgbG9hZGVkIGNodW5rcyBhbmQgZXhlY3V0aW9uIG5lZWQgdG8gYmUgZGVsYXllZFxuXHR2YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyh1bmRlZmluZWQsIFs2NzcsNTIxXSwgKCkgPT4gKF9fd2VicGFja19yZXF1aXJlX18oMjA5KSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiLy8gbm8gYmFzZVVSSVxuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQyMDk6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdIHx8IFtdO1xudmFyIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uID0gY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSBpbnN0YWxsQ2h1bms7XG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3QiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsIm5leHQiLCJEaXN0YW5jZU1hdHJpeCIsImRhdGEiLCJ0aGlzIiwiX2RhdGEiLCJzaXplIiwiX3NpemUiLCJjb25zdHJ1Y3RvciIsInVuZGVmaW5lZCIsIkVycm9yIiwiTWF0aCIsInNxcnQiLCJsZW5ndGgiLCJmbG9vciIsImRhdGFMZW5ndGgiLCJGbG9hdDMyQXJyYXkiLCJfbGluZWFyaXplSUoiLCJpIiwiaiIsImdldCIsInNldCIsInZhbHVlIiwiY2FsYyIsImxpc3QiLCJtZXRob2QiLCJyZXMiLCJzcXVhcmUiLCJhZGQiLCJvdGhlciIsIm5vcm1hbGl6ZSIsIm1pbiIsIm1heCIsInJhbmdlIiwidmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIkV1Y2xpZGVhbiIsInN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJMZXZlbnNodGVpbiIsIkphcm9XaW5rbGVyIiwiTWFuaGF0dGFuIiwiczEiLCJzMiIsImRpc3QiLCJiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJUYW5pbW90byIsIkRpY2UiLCJBc3ltbWV0cmljIiwiQnJhdW5CbGFucXVldCIsIkNvc2luZSIsIkt1bGN6eW5za2kiLCJNY0Nvbm5hdWdoZXkiLCJSb2dvdEdvbGRiZXJnIiwiUnVzc2VsIiwiU29rYWwiLCJIYW1taW5nIiwibnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIk51bWVyaWNEaXN0YW5jZSIsIkF2YWlsYWJsZU1ldHJpY3MiLCJWZWN0b3IiLCJTdHJpbmciLCJCaXRBcnJheSIsIk1hY3JvTW9sZWN1bGUiLCJIQU1NSU5HIiwiTEVWRU5TSFRFSU4iLCJORUVETEVNQU5OX1dVTlNDSCIsIk51bWJlciIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJyZXQiLCJrZXkiLCJ2YWwiLCJzZWxmIiwiYWRkRXZlbnRMaXN0ZW5lciIsInBlcHRpZGVzTGlzdCIsIm1ldHJpYyIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZG0iLCJhIiwiYiIsImRpc3RhbmNlcyIsImUiLCJlcnJvciIsInBvc3RNZXNzYWdlIiwiUCIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsImV4cG9ydHMiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiZXZlcnkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZiIsImNodW5rSWQiLCJhbGwiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJwdXNoIiwiYmluZCIsIm1vcmVNb2R1bGVzIiwicnVudGltZSIsInBvcCJdLCJzb3VyY2VSb290IjoiIn0=
1
+ var peptides;(()=>{"use strict";var t,e,r={9209:(t,e,r)=>{var a=r(6814);class i{get data(){return this._data}get size(){return this._size}constructor(t,e){if(null==e){if(null==t)throw new Error("Arguments error: data or size is required.");if(this._data=t,this._size=(1+Math.sqrt(1+8*this._data.length))/2,this._size!=Math.floor(this._size))throw new Error(`Invalid data length ${this._data.length} leads to non integer size ${this._size}`)}else{this._size=e;const r=e*(e-1)/2;if(t){if(t.length!=r)throw new Error(`Invalid data length. Observations size ${e} requires data length ${r}.`);this._data=t}else this._data=new Float32Array(r)}}_linearizeIJ(t,e){if(!(t<e))throw new Error("i must be less than j");return this._size*t+e-Math.floor((t+2)*(t+1)/2)}get(t,e){return t==e?0:t<e?this._data[this._linearizeIJ(t,e)]:this._data[this._linearizeIJ(e,t)]}set(t,e,r){this._data[this._linearizeIJ(t,e)]=r}static calc(t,e){const r=t.length,n=new i(void 0,r);for(let i=0;i<r;i++)for(let s=i+1;s<r;s++)n.set(i,s,(0,a.k)(t[i])||(0,a.k)(t[s])?1:e(t[i],t[s]));return n}square(){for(let t=0;t<this._data.length;t++)this._data[t]=this._data[t]**2}add(t){if(this._size!==t._size)throw new Error(`Matrices must have the same size. This size: ${this._size}, other size: ${t._size}`);for(let e=0;e<this._data.length;e++)this._data[e]+=t._data[e]}sqrt(){for(let t=0;t<this._data.length;t++)this._data[t]=Math.sqrt(this._data[t])}normalize(){let t=0,e=this._data[0];for(let r=0;r<this._data.length;r++)this._data[r]<t&&(t=this._data[r]),this._data[r]>e&&(e=this._data[r]);const r=e-t;for(let a=0;a<this._data.length;a++)this._data[a]=0===r?this._data[a]-t:(this._data[a]-t)/(e-t)}}var n=r(1040),s=r(1811),o=r(3979),h=r(5697),l=r(850),c=r(708);const g={[n.CF.Euclidean]:l.dP},d={[n.W.Levenshtein]:s.T,[n.W.JaroWinkler]:o.H$,[n.W.Manhattan]:function(t,e){if(t.length!==e.length)return 1;{let r=0;for(let a=1;a<t.length;a++)r+=t[a]==e[a]?0:1;return r/t.length}}},u={[n.gk.Tanimoto]:h.KR,[n.gk.Dice]:h._h,[n.gk.Asymmetric]:h.yU,[n.gk.BraunBlanquet]:h.Dz,[n.gk.Cosine]:h.Zd,[n.gk.Kulczynski]:h.s,[n.gk.McConnaughey]:h.aW,[n.gk.RogotGoldberg]:h.MI,[n.gk.Russel]:h.fX,[n.gk.Sokal]:h.NB,[n.gk.Hamming]:h.UX,[n.gk.Euclidean]:h.WI},f={[n.gd.TanimotoIntArray]:h.FV},k={[n.Yc.NumericDistance]:h.bX},_={[n.Qe.Vector]:{[n.CF.Euclidean]:g[n.CF.Euclidean]},[n.Qe.String]:{[n.W.Levenshtein]:d[n.W.Levenshtein],[n.W.JaroWinkler]:d[n.W.JaroWinkler],[n.W.Manhattan]:d[n.W.Manhattan]},[n.Qe.BitArray]:{[n.gk.Tanimoto]:u[n.gk.Tanimoto],[n.gk.Dice]:u[n.gk.Dice],[n.gk.Asymmetric]:u[n.gk.Asymmetric],[n.gk.BraunBlanquet]:u[n.gk.BraunBlanquet],[n.gk.Cosine]:u[n.gk.Cosine],[n.gk.Kulczynski]:u[n.gk.Kulczynski],[n.gk.McConnaughey]:u[n.gk.McConnaughey],[n.gk.RogotGoldberg]:u[n.gk.RogotGoldberg],[n.gk.Russel]:u[n.gk.Russel],[n.gk.Sokal]:u[n.gk.Sokal]},[n.Qe.MacroMolecule]:{[c.U.HAMMING]:c.o[c.U.HAMMING],[c.U.LEVENSHTEIN]:c.o[c.U.LEVENSHTEIN],[c.U.NEEDLEMANN_WUNSCH]:c.o[c.U.NEEDLEMANN_WUNSCH],[c.U.MONOMER_CHEMICAL_DISTANCE]:c.o[c.U.MONOMER_CHEMICAL_DISTANCE]},[n.Qe.Number]:{[n.Yc.NumericDistance]:k[n.Yc.NumericDistance]},[n.Qe.IntArray]:{[n.gd.TanimotoIntArray]:f[n.gd.TanimotoIntArray]}};Object.keys(_).reduce(((t,e)=>{for(const r of Object.keys(_[e]))t[r]=e;return t}),{});self.addEventListener("message",(({data:{peptidesList:t,metric:e}})=>{return r=void 0,a=void 0,s=function*(){const r={};try{const a=i.calc(t,((t,r)=>d[e](t,r)));r.distances=a.data}catch(t){r.error=t}self.postMessage(r)},new((n=void 0)||(n=Promise))((function(t,e){function i(t){try{h(s.next(t))}catch(t){e(t)}}function o(t){try{h(s.throw(t))}catch(t){e(t)}}function h(e){var r;e.done?t(e.value):(r=e.value,r instanceof n?r:new n((function(t){t(r)}))).then(i,o)}h((s=s.apply(r,a||[])).next())}));var r,a,n,s}))}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={exports:{}};return r[t](n,n.exports,i),n.exports}i.m=r,i.x=()=>{var t=i.O(void 0,[694,831],(()=>i(9209)));return i.O(t)},t=[],i.O=(e,r,a,n)=>{if(!r){var s=1/0;for(c=0;c<t.length;c++){for(var[r,a,n]=t[c],o=!0,h=0;h<r.length;h++)(!1&n||s>=n)&&Object.keys(i.O).every((t=>i.O[t](r[h])))?r.splice(h--,1):(o=!1,n<s&&(s=n));if(o){t.splice(c--,1);var l=a();void 0!==l&&(e=l)}}return e}n=n||0;for(var c=t.length;c>0&&t[c-1][2]>n;c--)t[c]=t[c-1];t[c]=[r,a,n]},i.d=(t,e)=>{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,r)=>(i.f[r](t,e),e)),[])),i.u=t=>t+".js",i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var r=e.getElementsByTagName("script");if(r.length)for(var a=r.length-1;a>-1&&!t;)t=r[a--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{var t={209:1};i.f.i=(e,r)=>{t[e]||importScripts(i.p+i.u(e))};var e=self.webpackChunkpeptides=self.webpackChunkpeptides||[],r=e.push.bind(e);e.push=e=>{var[a,n,s]=e;for(var o in n)i.o(n,o)&&(i.m[o]=n[o]);for(s&&s(i);a.length;)t[a.pop()]=1;r(e)}})(),e=i.x,i.x=()=>Promise.all([i.e(694),i.e(831)]).then(e);var n=i.x();peptides=n})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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S0FBS25HLEdZSlQsSUFBSThHLEVBQXNCUixFQUFvQk8sSSIsInNvdXJjZXMiOlsid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9kaXN0YW5jZS1tYXRyaXguanMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvdHlwZWQtbWV0cmljcy90eXBlZC1tZXRyaWNzLmpzIiwid2VicGFjazovL3BlcHRpZGVzLy4vc3JjL3V0aWxzL2Rpc3RhbmNlLW1hdHJpeC53b3JrZXIudHMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2dldCBqYXZhc2NyaXB0IGNodW5rIGZpbGVuYW1lIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvcHVibGljUGF0aCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKFtcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUoNjk0KSxcblx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmUoODMxKVxuXHRdKS50aGVuKG5leHQpO1xufTsiLCJpbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuLyoqIERpc3RhbmNlIG1hdHJpeCBjbGFzcyBjb21wYXRpYmxlIHdpdGggZGF0YSBzdHJ1Y3R1cmUgb2Ygc2NpcHkuc3BhdGlhbC5kaXN0YW5jZS5wZGlzdCAqL1xuZXhwb3J0IGNsYXNzIERpc3RhbmNlTWF0cml4IHtcbiAgICBnZXQgZGF0YSgpIHsgcmV0dXJuIHRoaXMuX2RhdGE7IH1cbiAgICBnZXQgc2l6ZSgpIHsgcmV0dXJuIHRoaXMuX3NpemU7IH1cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0Zsb2F0MzJBcnJheX0gZGF0YSBEaXN0YW5jZSBkYXRhXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNpemUgTnVtYmVyIG9mIG9yaWdpbmFsIG9ic2VydmF0aW9uc1xuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEsIHNpemUpIHtcbiAgICAgICAgaWYgKHNpemUgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZGF0YSA9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBcmd1bWVudHMgZXJyb3I6IGRhdGEgb3Igc2l6ZSBpcyByZXF1aXJlZC4nKTtcbiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBkYXRhO1xuICAgICAgICAgICAgdGhpcy5fc2l6ZSA9ICgxICsgTWF0aC5zcXJ0KDEgKyA0ICogMiAqIHRoaXMuX2RhdGEubGVuZ3RoKSkgLyAyO1xuICAgICAgICAgICAgaWYgKHRoaXMuX3NpemUgIT0gTWF0aC5mbG9vcih0aGlzLl9zaXplKSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBsZW5ndGggJHt0aGlzLl9kYXRhLmxlbmd0aH0gbGVhZHMgdG8gbm9uIGludGVnZXIgc2l6ZSAke3RoaXMuX3NpemV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9zaXplID0gc2l6ZTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFMZW5ndGggPSBzaXplICogKHNpemUgLSAxKSAvIDI7XG4gICAgICAgICAgICBpZiAoZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCAhPSBkYXRhTGVuZ3RoKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZGF0YSBsZW5ndGguIE9ic2VydmF0aW9ucyBzaXplICR7c2l6ZX0gcmVxdWlyZXMgZGF0YSBsZW5ndGggJHtkYXRhTGVuZ3RofS5gKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhID0gZGF0YTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RhdGEgPSBuZXcgRmxvYXQzMkFycmF5KGRhdGFMZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIF9saW5lYXJpemVJSihpLCBqKSB7XG4gICAgICAgIGlmICghKGkgPCBqKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaSBtdXN0IGJlIGxlc3MgdGhhbiBqJyk7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaXplICogaSArIGogLSBNYXRoLmZsb29yKCgoaSArIDIpICogKGkgKyAxKSkgLyAyKTtcbiAgICB9XG4gICAgZ2V0KGksIGopIHtcbiAgICAgICAgaWYgKGkgPT0gailcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICBlbHNlIGlmIChpIDwgailcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhW3RoaXMuX2xpbmVhcml6ZUlKKGksIGopXTtcbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFbdGhpcy5fbGluZWFyaXplSUooaiwgaSldO1xuICAgIH1cbiAgICBzZXQoaSwgaiwgdmFsdWUpIHtcbiAgICAgICAgdGhpcy5fZGF0YVt0aGlzLl9saW5lYXJpemVJSihpLCBqKV0gPSB2YWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGNhbGMobGlzdCwgbWV0aG9kKSB7XG4gICAgICAgIGNvbnN0IHNpemUgPSBsaXN0Lmxlbmd0aDtcbiAgICAgICAgY29uc3QgcmVzID0gbmV3IERpc3RhbmNlTWF0cml4KHVuZGVmaW5lZCwgc2l6ZSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gaSArIDE7IGogPCBzaXplOyBqKyspIHtcbiAgICAgICAgICAgICAgICAvLyBpZiBhbnkgb2YgdGhlIHZhbHVlcyBpcyBudWxsLCBzZXQgZGlzdGFuY2UgdG8gMVxuICAgICAgICAgICAgICAgIHJlcy5zZXQoaSwgaiwgIWlzTmlsKGxpc3RbaV0pICYmICFpc05pbChsaXN0W2pdKSA/IG1ldGhvZChsaXN0W2ldLCBsaXN0W2pdKSA6IDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXM7XG4gICAgfVxuICAgIC8vIHNxdWFyZXMgZWFjaCB2YWx1ZSBpbiBtYXRyaXggaW4gcGxhY2VcbiAgICBzcXVhcmUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSB0aGlzLl9kYXRhW2ldICoqIDI7XG4gICAgfVxuICAgIC8vIGFkZHMgYW5vdGhlciBtYXRyaXggdG8gdGhpcyBvbmUgaW4gcGxhY2VcbiAgICBhZGQob3RoZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuX3NpemUgIT09IG90aGVyLl9zaXplKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNYXRyaWNlcyBtdXN0IGhhdmUgdGhlIHNhbWUgc2l6ZS4gVGhpcyBzaXplOiAke3RoaXMuX3NpemV9LCBvdGhlciBzaXplOiAke290aGVyLl9zaXplfWApO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX2RhdGEubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICB0aGlzLl9kYXRhW2ldICs9IG90aGVyLl9kYXRhW2ldO1xuICAgIH1cbiAgICAvLyBzcXVhcmUgcm9vdCBlYWNoIHZhbHVlIGluIG1hdHJpeCBpbiBwbGFjZVxuICAgIHNxcnQoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSBNYXRoLnNxcnQodGhpcy5fZGF0YVtpXSk7XG4gICAgfVxuICAgIC8vbm9ybWlsemUgZGlzdGFuY2UgbWF0cml4IGluIHBsYWNlXG4gICAgbm9ybWFsaXplKCkge1xuICAgICAgICBsZXQgbWluID0gMDtcbiAgICAgICAgbGV0IG1heCA9IHRoaXMuX2RhdGFbMF07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX2RhdGFbaV0gPCBtaW4pXG4gICAgICAgICAgICAgICAgbWluID0gdGhpcy5fZGF0YVtpXTtcbiAgICAgICAgICAgIGlmICh0aGlzLl9kYXRhW2ldID4gbWF4KVxuICAgICAgICAgICAgICAgIG1heCA9IHRoaXMuX2RhdGFbaV07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcmFuZ2UgPSBtYXggLSBtaW47XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZGF0YS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIHRoaXMuX2RhdGFbaV0gPSByYW5nZSA9PT0gMCA/IHRoaXMuX2RhdGFbaV0gLSBtaW4gOiAodGhpcy5fZGF0YVtpXSAtIG1pbikgLyAobWF4IC0gbWluKTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laR2x6ZEdGdVkyVXRiV0YwY21sNExtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpWkdsemRHRnVZMlV0YldGMGNtbDRMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUpCUVVkQkxFOUJRVThzUlVGQlF5eExRVUZMTEVWQlFVTXNUVUZCVFN4VFFVRlRMRU5CUVVNN1FVRkZPVUlzTWtaQlFUSkdPMEZCUXpOR0xFMUJRVTBzVDBGQlR5eGpRVUZqTzBsQlNYcENMRWxCUVVrc1NVRkJTU3hMUVVGdFFpeFBRVUZQTEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJSUzlETEVsQlFVa3NTVUZCU1N4TFFVRmhMRTlCUVU4c1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTTdTVUZGZWtNN096dFBRVWRITzBsQlEwZ3NXVUZCV1N4SlFVRnRRaXhGUVVGRkxFbEJRV0U3VVVGRE5VTXNTVUZCU1N4SlFVRkpMRWxCUVVrc1UwRkJVeXhGUVVGRk8xbEJRM0pDTEVsQlFVa3NTVUZCU1N4SlFVRkpMRk5CUVZNN1owSkJRVVVzVFVGQlRTeEpRVUZKTEV0QlFVc3NRMEZCUXl3MFEwRkJORU1zUTBGQlF5eERRVUZETzFsQlJYSkdMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlN5eERRVUZETzFsQlEyNUNMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTJoRkxFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTTdaMEpCUTNSRExFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzU1VGQlNTeERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRMRU5CUVVNN1UwRkRka2M3WVVGQlRUdFpRVU5NTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMnhDTEUxQlFVMHNWVUZCVlN4SFFVRlhMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRha1FzU1VGQlNTeEpRVUZKTEVWQlFVVTdaMEpCUTFJc1NVRkJTU3hKUVVGSkxFTkJRVU1zVFVGQlRTeEpRVUZKTEZWQlFWVTdiMEpCUXpOQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNNRU5CUVRCRExFbEJRVWtzZVVKQlFYbENMRlZCUVZVc1IwRkJSeXhEUVVGRExFTkJRVU03WjBKQlEzaEhMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzU1VGQlNTeERRVUZETzJGQlEyNUNPMmxDUVVGTk8yZENRVU5NTEVsQlFVa3NRMEZCUXl4TFFVRkxMRWRCUVVjc1NVRkJTU3haUVVGWkxFTkJRVU1zVlVGQlZTeERRVUZETEVOQlFVTTdZVUZETTBNN1UwRkRSanRKUVVOSUxFTkJRVU03U1VGRlR5eFpRVUZaTEVOQlFVTXNRMEZCVXl4RlFVRkZMRU5CUVZNN1VVRkRka01zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRaUVVGRkxFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zUTBGQlF6dFJRVU4yUkN4UFFVRlBMRWxCUVVrc1EwRkJReXhMUVVGTExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRKUVVOc1JTeERRVUZETzBsQlJVUXNSMEZCUnl4RFFVRkRMRU5CUVZNc1JVRkJSU3hEUVVGVE8xRkJRM1JDTEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNN1dVRkRVaXhQUVVGUExFTkJRVU1zUTBGQlF6dGhRVU5PTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNN1dVRkRXaXhQUVVGUExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRMRmxCUVZrc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXpzN1dVRkZNME1zVDBGQlR5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRWxCUVVrc1EwRkJReXhaUVVGWkxFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkRMME1zUTBGQlF6dEpRVVZFTEVkQlFVY3NRMEZCUXl4RFFVRlRMRVZCUVVVc1EwRkJVeXhGUVVGRkxFdEJRV0U3VVVGRGNrTXNTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhKUVVGSkxFTkJRVU1zV1VGQldTeERRVUZETEVOQlFVTXNSVUZCUlN4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExFdEJRVXNzUTBGQlF6dEpRVU01UXl4RFFVRkRPMGxCUlVRc1RVRkJUU3hEUVVGRExFbEJRVWtzUTBGQlR5eEpRVUZ4UWl4RlFVRkZMRTFCUVc5RE8xRkJRek5GTEUxQlFVMHNTVUZCU1N4SFFVRlhMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU03VVVGRGFrTXNUVUZCVFN4SFFVRkhMRWRCUVVjc1NVRkJTU3hqUVVGakxFTkJRVU1zVTBGQlV5eEZRVUZGTEVsQlFVa3NRMEZCUXl4RFFVRkRPMUZCUTJoRUxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdXVUZETjBJc1MwRkJTeXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhKUVVGSkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVWQlFVVTdaMEpCUTJwRExHdEVRVUZyUkR0blFrRkRiRVFzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhGUVVGRkxFbEJRVWtzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dGhRVU5zUmp0VFFVTkdPMUZCUTBRc1QwRkJUeXhIUVVGSExFTkJRVU03U1VGRFlpeERRVUZETzBsQlJVUXNkME5CUVhkRE8wbEJRMnBETEUxQlFVMDdVVUZEV0N4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhOUVVGTkxFVkJRVVVzUTBGQlF5eEZRVUZGTzFsQlEzaERMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdTVUZEZGtNc1EwRkJRenRKUVVWRUxESkRRVUV5UXp0SlFVTndReXhIUVVGSExFTkJRVU1zUzBGQmNVSTdVVUZET1VJc1NVRkJTU3hKUVVGSkxFTkJRVU1zUzBGQlN5eExRVUZMTEV0QlFVc3NRMEZCUXl4TFFVRkxPMWxCUXpWQ0xFMUJRVTBzU1VGQlNTeExRVUZMTEVOQlFVTXNaMFJCUVdkRUxFbEJRVWtzUTBGQlF5eExRVUZMTEdsQ1FVRnBRaXhMUVVGTExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTXNRMEZCUXp0UlFVTTFSeXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1NVRkJTU3hEUVVGRExFdEJRVXNzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTNoRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1MwRkJTeXhEUVVGRExFdEJRVXNzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTndReXhEUVVGRE8wbEJSVVFzTkVOQlFUUkRPMGxCUTNKRExFbEJRVWs3VVVGRFZDeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRk8xbEJRM2hETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdTVUZETjBNc1EwRkJRenRKUVVWRUxHMURRVUZ0UXp0SlFVTTFRaXhUUVVGVE8xRkJRMlFzU1VGQlNTeEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTFvc1NVRkJTU3hIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONFFpeExRVUZMTEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1JVRkJSU3hEUVVGRExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4TlFVRk5MRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVU3V1VGRE1VTXNTVUZCU1N4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEVkQlFVYzdaMEpCUTNKQ0xFZEJRVWNzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM1JDTEVsQlFVa3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhEUVVGRExFTkJRVU1zUjBGQlJ5eEhRVUZITzJkQ1FVTnlRaXhIUVVGSExFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRUUVVOMlFqdFJRVU5FTEUxQlFVMHNTMEZCU3l4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExFTkJRVU03VVVGRGVFSXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hGUVVGRkxFTkJRVU1zUlVGQlJUdFpRVU40UXl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEV0QlFVc3NTMEZCU3l4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRE5VWXNRMEZCUXp0RFFVTkdJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJQ29nWVhNZ1ozSnZheUJtY205dElDZGtZWFJoWjNKdmF5MWhjR2t2WjNKdmF5YzdYRzVwYlhCdmNuUWdLaUJoY3lCMWFTQm1jbTl0SUNka1lYUmhaM0p2YXkxaGNHa3ZkV2tuTzF4dWFXMXdiM0owSUNvZ1lYTWdSRWNnWm5KdmJTQW5aR0YwWVdkeWIyc3RZWEJwTDJSbkp6dGNibWx0Y0c5eWRDQjdhWE5PYVd4OUlHWnliMjBnSnk0dmRYUnBiSE1uTzF4dVhHNHZLaW9nUkdsemRHRnVZMlVnYldGMGNtbDRJR05zWVhOeklHTnZiWEJoZEdsaWJHVWdkMmwwYUNCa1lYUmhJSE4wY25WamRIVnlaU0J2WmlCelkybHdlUzV6Y0dGMGFXRnNMbVJwYzNSaGJtTmxMbkJrYVhOMElDb3ZYRzVsZUhCdmNuUWdZMnhoYzNNZ1JHbHpkR0Z1WTJWTllYUnlhWGdnZTF4dUlDQmZaR0YwWVRvZ1JteHZZWFF6TWtGeWNtRjVPMXh1SUNCZmMybDZaVG9nYm5WdFltVnlPMXh1WEc0Z0lHZGxkQ0JrWVhSaEtDazZJRVpzYjJGME16SkJjbkpoZVNCN0lISmxkSFZ5YmlCMGFHbHpMbDlrWVhSaE95QjlYRzVjYmlBZ1oyVjBJSE5wZW1Vb0tUb2diblZ0WW1WeUlIc2djbVYwZFhKdUlIUm9hWE11WDNOcGVtVTdJSDFjYmx4dUlDQXZLaXBjYmlBZ0lDb2dRSEJoY21GdElIdEdiRzloZERNeVFYSnlZWGw5SUdSaGRHRWdSR2x6ZEdGdVkyVWdaR0YwWVZ4dUlDQWdLaUJBY0dGeVlXMGdlMjUxYldKbGNuMGdjMmw2WlNCT2RXMWlaWElnYjJZZ2IzSnBaMmx1WVd3Z2IySnpaWEoyWVhScGIyNXpYRzRnSUNBcUwxeHVJQ0JqYjI1emRISjFZM1J2Y2loa1lYUmhQem9nUm14dllYUXpNa0Z5Y21GNUxDQnphWHBsUHpvZ2JuVnRZbVZ5S1NCN1hHNGdJQ0FnYVdZZ0tITnBlbVVnUFQwZ2RXNWtaV1pwYm1Wa0tTQjdYRzRnSUNBZ0lDQnBaaUFvWkdGMFlTQTlQU0IxYm1SbFptbHVaV1FwSUhSb2NtOTNJRzVsZHlCRmNuSnZjaWduUVhKbmRXMWxiblJ6SUdWeWNtOXlPaUJrWVhSaElHOXlJSE5wZW1VZ2FYTWdjbVZ4ZFdseVpXUXVKeWs3WEc1Y2JpQWdJQ0FnSUhSb2FYTXVYMlJoZEdFZ1BTQmtZWFJoSVR0Y2JpQWdJQ0FnSUhSb2FYTXVYM05wZW1VZ1BTQW9NU0FySUUxaGRHZ3VjM0Z5ZENneElDc2dOQ0FxSURJZ0tpQjBhR2x6TGw5a1lYUmhMbXhsYm1kMGFDa3BJQzhnTWp0Y2JpQWdJQ0FnSUdsbUlDaDBhR2x6TGw5emFYcGxJQ0U5SUUxaGRHZ3VabXh2YjNJb2RHaHBjeTVmYzJsNlpTa3BYRzRnSUNBZ0lDQWdJSFJvY205M0lHNWxkeUJGY25KdmNpaGdTVzUyWVd4cFpDQmtZWFJoSUd4bGJtZDBhQ0FrZTNSb2FYTXVYMlJoZEdFdWJHVnVaM1JvZlNCc1pXRmtjeUIwYnlCdWIyNGdhVzUwWldkbGNpQnphWHBsSUNSN2RHaHBjeTVmYzJsNlpYMWdLVHRjYmlBZ0lDQjlJR1ZzYzJVZ2UxeHVJQ0FnSUNBZ2RHaHBjeTVmYzJsNlpTQTlJSE5wZW1VN1hHNGdJQ0FnSUNCamIyNXpkQ0JrWVhSaFRHVnVaM1JvT2lCdWRXMWlaWElnUFNCemFYcGxJQ29nS0hOcGVtVWdMU0F4S1NBdklESTdYRzRnSUNBZ0lDQnBaaUFvWkdGMFlTa2dlMXh1SUNBZ0lDQWdJQ0JwWmlBb1pHRjBZUzVzWlc1bmRHZ2dJVDBnWkdGMFlVeGxibWQwYUNsY2JpQWdJQ0FnSUNBZ0lDQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb1lFbHVkbUZzYVdRZ1pHRjBZU0JzWlc1bmRHZ3VJRTlpYzJWeWRtRjBhVzl1Y3lCemFYcGxJQ1I3YzJsNlpYMGdjbVZ4ZFdseVpYTWdaR0YwWVNCc1pXNW5kR2dnSkh0a1lYUmhUR1Z1WjNSb2ZTNWdLVHRjYmlBZ0lDQWdJQ0FnZEdocGN5NWZaR0YwWVNBOUlHUmhkR0U3WEc0Z0lDQWdJQ0I5SUdWc2MyVWdlMXh1SUNBZ0lDQWdJQ0IwYUdsekxsOWtZWFJoSUQwZ2JtVjNJRVpzYjJGME16SkJjbkpoZVNoa1lYUmhUR1Z1WjNSb0tUdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNGdJSDFjYmx4dUlDQndjbWwyWVhSbElGOXNhVzVsWVhKcGVtVkpTaWhwT2lCdWRXMWlaWElzSUdvNklHNTFiV0psY2lrNklHNTFiV0psY2lCN1hHNGdJQ0FnYVdZZ0tDRW9hU0E4SUdvcEtTQjBhSEp2ZHlCdVpYY2dSWEp5YjNJb0oya2diWFZ6ZENCaVpTQnNaWE56SUhSb1lXNGdhaWNwTzF4dUlDQWdJSEpsZEhWeWJpQjBhR2x6TGw5emFYcGxJQ29nYVNBcklHb2dMU0JOWVhSb0xtWnNiMjl5S0Nnb2FTQXJJRElwSUNvZ0tHa2dLeUF4S1NrZ0x5QXlLVHRjYmlBZ2ZWeHVYRzRnSUdkbGRDaHBPaUJ1ZFcxaVpYSXNJR282SUc1MWJXSmxjaWtnZTF4dUlDQWdJR2xtSUNocElEMDlJR29wWEc0Z0lDQWdJQ0J5WlhSMWNtNGdNRHRjYmlBZ0lDQmxiSE5sSUdsbUlDaHBJRHdnYWlsY2JpQWdJQ0FnSUhKbGRIVnliaUIwYUdsekxsOWtZWFJoVzNSb2FYTXVYMnhwYm1WaGNtbDZaVWxLS0drc0lHb3BYVHRjYmlBZ0lDQmxiSE5sWEc0Z0lDQWdJQ0J5WlhSMWNtNGdkR2hwY3k1ZlpHRjBZVnQwYUdsekxsOXNhVzVsWVhKcGVtVkpTaWhxTENCcEtWMDdYRzRnSUgxY2JseHVJQ0J6WlhRb2FUb2diblZ0WW1WeUxDQnFPaUJ1ZFcxaVpYSXNJSFpoYkhWbE9pQnVkVzFpWlhJcElIdGNiaUFnSUNCMGFHbHpMbDlrWVhSaFczUm9hWE11WDJ4cGJtVmhjbWw2WlVsS0tHa3NJR29wWFNBOUlIWmhiSFZsTzF4dUlDQjlYRzVjYmlBZ2MzUmhkR2xqSUdOaGJHTThWRTlpYWo0b2JHbHpkRG9nU1c1a1pYaGhZbXhsUEZSUFltbytMQ0J0WlhSb2IyUTZJQ2hoT2lCVVQySnFMQ0JpT2lCVVQySnFLU0E5UGlCdWRXMWlaWElwT2lCRWFYTjBZVzVqWlUxaGRISnBlQ0I3WEc0Z0lDQWdZMjl1YzNRZ2MybDZaVG9nYm5WdFltVnlJRDBnYkdsemRDNXNaVzVuZEdnN1hHNGdJQ0FnWTI5dWMzUWdjbVZ6SUQwZ2JtVjNJRVJwYzNSaGJtTmxUV0YwY21sNEtIVnVaR1ZtYVc1bFpDd2djMmw2WlNrN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCemFYcGxPeUJwS3lzcElIdGNiaUFnSUNBZ0lHWnZjaUFvYkdWMElHb2dQU0JwSUNzZ01Uc2dhaUE4SUhOcGVtVTdJR29yS3lrZ2UxeHVJQ0FnSUNBZ0lDQXZMeUJwWmlCaGJua2diMllnZEdobElIWmhiSFZsY3lCcGN5QnVkV3hzTENCelpYUWdaR2x6ZEdGdVkyVWdkRzhnTVZ4dUlDQWdJQ0FnSUNCeVpYTXVjMlYwS0drc0lHb3NJQ0ZwYzA1cGJDaHNhWE4wVzJsZEtTQW1KaUFoYVhOT2FXd29iR2x6ZEZ0cVhTa2dQeUJ0WlhSb2IyUW9iR2x6ZEZ0cFhTd2diR2x6ZEZ0cVhTa2dPaUF4S1R0Y2JpQWdJQ0FnSUgxY2JpQWdJQ0I5WEc0Z0lDQWdjbVYwZFhKdUlISmxjenRjYmlBZ2ZWeHVYRzRnSUM4dklITnhkV0Z5WlhNZ1pXRmphQ0IyWVd4MVpTQnBiaUJ0WVhSeWFYZ2dhVzRnY0d4aFkyVmNiaUFnY0hWaWJHbGpJSE54ZFdGeVpTZ3BJSHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRDBnZEdocGN5NWZaR0YwWVZ0cFhTQXFLaUF5TzF4dUlDQjlYRzVjYmlBZ0x5OGdZV1JrY3lCaGJtOTBhR1Z5SUcxaGRISnBlQ0IwYnlCMGFHbHpJRzl1WlNCcGJpQndiR0ZqWlZ4dUlDQndkV0pzYVdNZ1lXUmtLRzkwYUdWeU9pQkVhWE4wWVc1alpVMWhkSEpwZUNrZ2UxeHVJQ0FnSUdsbUlDaDBhR2x6TGw5emFYcGxJQ0U5UFNCdmRHaGxjaTVmYzJsNlpTbGNiaUFnSUNBZ0lIUm9jbTkzSUc1bGR5QkZjbkp2Y2loZ1RXRjBjbWxqWlhNZ2JYVnpkQ0JvWVhabElIUm9aU0J6WVcxbElITnBlbVV1SUZSb2FYTWdjMmw2WlRvZ0pIdDBhR2x6TGw5emFYcGxmU3dnYjNSb1pYSWdjMmw2WlRvZ0pIdHZkR2hsY2k1ZmMybDZaWDFnS1R0Y2JpQWdJQ0JtYjNJZ0tHeGxkQ0JwSUQwZ01Ec2dhU0E4SUhSb2FYTXVYMlJoZEdFdWJHVnVaM1JvT3lCcEt5c3BYRzRnSUNBZ0lDQjBhR2x6TGw5a1lYUmhXMmxkSUNzOUlHOTBhR1Z5TGw5a1lYUmhXMmxkTzF4dUlDQjlYRzVjYmlBZ0x5OGdjM0YxWVhKbElISnZiM1FnWldGamFDQjJZV3gxWlNCcGJpQnRZWFJ5YVhnZ2FXNGdjR3hoWTJWY2JpQWdjSFZpYkdsaklITnhjblFvS1NCN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLVnh1SUNBZ0lDQWdkR2hwY3k1ZlpHRjBZVnRwWFNBOUlFMWhkR2d1YzNGeWRDaDBhR2x6TGw5a1lYUmhXMmxkS1R0Y2JpQWdmVnh1WEc0Z0lDOHZibTl5Yldsc2VtVWdaR2x6ZEdGdVkyVWdiV0YwY21sNElHbHVJSEJzWVdObFhHNGdJSEIxWW14cFl5QnViM0p0WVd4cGVtVW9LU0I3WEc0Z0lDQWdiR1YwSUcxcGJpQTlJREE3WEc0Z0lDQWdiR1YwSUcxaGVDQTlJSFJvYVhNdVgyUmhkR0ZiTUYwN1hHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCMGFHbHpMbDlrWVhSaExteGxibWQwYURzZ2FTc3JLU0I3WEc0Z0lDQWdJQ0JwWmlBb2RHaHBjeTVmWkdGMFlWdHBYU0E4SUcxcGJpbGNiaUFnSUNBZ0lDQWdiV2x1SUQwZ2RHaHBjeTVmWkdGMFlWdHBYVHRjYmlBZ0lDQWdJR2xtSUNoMGFHbHpMbDlrWVhSaFcybGRJRDRnYldGNEtWeHVJQ0FnSUNBZ0lDQnRZWGdnUFNCMGFHbHpMbDlrWVhSaFcybGRPMXh1SUNBZ0lIMWNiaUFnSUNCamIyNXpkQ0J5WVc1blpTQTlJRzFoZUNBdElHMXBianRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFJvYVhNdVgyUmhkR0V1YkdWdVozUm9PeUJwS3lzcFhHNGdJQ0FnSUNCMGFHbHpMbDlrWVhSaFcybGRJRDBnY21GdVoyVWdQVDA5SURBZ1B5QjBhR2x6TGw5a1lYUmhXMmxkSUMwZ2JXbHVJRG9nS0hSb2FYTXVYMlJoZEdGYmFWMGdMU0J0YVc0cElDOGdLRzFoZUNBdElHMXBiaWs3WEc0Z0lIMWNibjFjYmx4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSmJtUmxlR0ZpYkdVOFZFOWlhajRnZTF4dUlDQmJhVzVrWlhnNklHNTFiV0psY2wwNklGUlBZbW83WEc0Z0lHZGxkQ0JzWlc1bmRHZ29LVG9nYm5WdFltVnlPMXh1ZlZ4dUlsMTkiLCJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgYXN5bW1ldHJpY0Rpc3RhbmNlLCBicmF1bkJsYW5xdWV0RGlzdGFuY2UsIGNvc2luZURpc3RhbmNlLCBkaWNlRGlzdGFuY2UsIGV1Y2xpZGVhbkRpc3RhbmNlLCBoYW1taW5nRGlzdGFuY2UsIGt1bGN6eW5za2lEaXN0YW5jZSwgbWNDb25uYXVnaGV5RGlzdGFuY2UsIHJvZ290R29sZGJlcmdEaXN0YW5jZSwgcnVzc2VsRGlzdGFuY2UsIHNva2FsRGlzdGFuY2UsIHRhbmltb3RvRGlzdGFuY2UsIG51bWVyaWNEaXN0YW5jZSwgdGFuaW1vdG9EaXN0YW5jZUludEFycmF5LCB9IGZyb20gJy4uL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IG1tRGlzdGFuY2VGdW5jdGlvbnMsIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcyB9IGZyb20gJy4uL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLCBCaXRBcnJheU1ldHJpY3NOYW1lcywgU3RyaW5nTWV0cmljc05hbWVzLCBWZWN0b3JNZXRyaWNzTmFtZXMsIE51bWJlck1ldHJpY3NOYW1lcywgSW50QXJyYXlNZXRyaWNzTmFtZXMgfSBmcm9tICcuL2NvbnN0cyc7XG5leHBvcnQgY29uc3QgdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBmbC5kaXN0YW5jZSxcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogamFyb1dpbmtsZXIsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5NYW5oYXR0YW5dOiBtYW5oYXR0YW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IHRhbmltb3RvRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBkaWNlRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBhc3ltbWV0cmljRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGNvc2luZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXToga3VsY3p5bnNraURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IHJvZ290R29sZGJlcmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogcnVzc2VsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogc29rYWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuSGFtbWluZ106IGhhbW1pbmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogZXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGludEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbSW50QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9JbnRBcnJheV06IHRhbmltb3RvRGlzdGFuY2VJbnRBcnJheSxcbn07XG5leHBvcnQgY29uc3QgbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWVyaWNEaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuVmVjdG9yXToge1xuICAgICAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHNbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuU3RyaW5nXToge1xuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuQml0QXJyYXldOiB7XG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5NYWNyb01vbGVjdWxlXToge1xuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTl06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5ORUVETEVNQU5OX1dVTlNDSF06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5NT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuTnVtYmVyXToge1xuICAgICAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWJlckRpc3RhbmNlTWV0cmljc01ldGhvZHNbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuSW50QXJyYXldOiB7XG4gICAgICAgIFtJbnRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b0ludEFycmF5XTogaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0ludEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvSW50QXJyYXldLFxuICAgIH1cbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKVxuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGUudG9TdHJpbmcoKTtcbn1cbi8qKiBNYW5oYXR0YW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gc2VxdWVuY2VzIChtYXRjaCAtIDAsIG1pc21hdGNoIC0gMSkgbm9ybWFsaXplZCBmb3IgbGVuZ3RoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3RhbmNlKHMxLCBzMikge1xuICAgIGlmIChzMS5sZW5ndGggIT09IHMyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkaXN0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzMS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGRpc3QgKz0gczFbaV0gPT0gczJbaV0gPyAwIDogMTtcbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFVkJRMmhDTEdWQlFXVXNSVUZEWml4M1FrRkJkMElzUjBGRGVrSXNUVUZCVFN3MlFrRkJOa0lzUTBGQlF6dEJRVVZ5UXl4UFFVRlBMRVZCUVVNc01FSkJRVEJDTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVWN6Uml4UFFVRlBMRVZCUVVNc2JVSkJRVzFDTEVWQlFVVXNkMEpCUVhkQ0xFVkJRVU1zVFVGQlRTeHhRMEZCY1VNc1EwRkJRenRCUVVOc1J5eFBRVUZQTEVWQlFVTXNkVUpCUVhWQ0xFVkJRVVVzYjBKQlFXOUNMRVZCUTI1RUxHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkRMRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJSM0JITEUxQlFVMHNRMEZCUXl4TlFVRk5MRFJDUVVFMFFpeEhRVUY1UkR0SlFVTm9SeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxEQkNRVUV3UWp0RFFVTXpSQ3hEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNORUpCUVRSQ0xFZEJRWGxFTzBsQlEyaEhMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGRkJRVkU3U1VGRE4wTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlN4WFFVRlhPMGxCUXpkRExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzYVVKQlFXbENPME5CUTJ4RUxFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzUjBGQk5rUTdTVUZEZEVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSU3huUWtGQlowSTdTVUZEYWtRc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3haUVVGWk8wbEJRM3BETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNhMEpCUVd0Q08wbEJRM0pFTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNjVUpCUVhGQ08wbEJRek5FTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNZMEZCWXp0SlFVTTNReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxHdENRVUZyUWp0SlFVTnlSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxHOUNRVUZ2UWp0SlFVTjZSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXpSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV003U1VGRE4wTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4aFFVRmhPMGxCUXpORExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzWlVGQlpUdEpRVU12UXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMR2xDUVVGcFFqdERRVU53UkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzT0VKQlFUaENMRWRCUVcxRk8wbEJRelZITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1JVRkJSU3gzUWtGQmQwSTdRMEZEYkVVc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlF5eE5RVUZOTERSQ1FVRTBRaXhIUVVGNVJEdEpRVU5vUnl4RFFVRkRMR3RDUVVGclFpeERRVUZETEdWQlFXVXNRMEZCUXl4RlFVRkZMR1ZCUVdVN1EwRkRkRVFzUTBGQlF6dEJRVVZHTEUxQlFVMHNRMEZCUXl4TlFVRk5MR2RDUVVGblFpeEhRVUZITzBsQlF6bENMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRNMFk3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlEyaERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlF6bEdMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlF6bEdMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETzB0QlF6TkdPMGxCUTBRc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSVHRSUVVOc1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVNNVJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOMFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVOc1J5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVONFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVOc1J5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVOMFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVONFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVONlJqdEpRVU5FTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVTdVVUZEZGtNc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEZWtZc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZEYWtjc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETzFGQlF6ZEhMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4NVFrRkJlVUlzUTBGQlF6dExRVU01U0R0SlFVTkVMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhsUVVGbExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRU5CUVVNN1MwRkRka2M3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTzFGQlEyeERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU12Unp0RFFVTkdMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1IwRkJjVUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU0xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGeFFpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMGxCUTNKRExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGZGtNc1QwRkJUeXhIUVVGSExFTkJRVU03UVVGRFlpeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRmxWQ3hOUVVGTkxGVkJRVlVzWTBGQll5eERRVUZETEVsQlFXdENPMGxCUXk5RExFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzVVVGQlVTeERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1NVRkJhMEk3U1VGRGFrUXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNN1FVRkRPVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4alFVRmpMRU5CUVVNc1NVRkJhMEk3U1VGREwwTXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1FVRkROVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4eFFrRkJjVUlzUTBGQlF5eEpRVUZyUWp0SlFVTjBSQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxIVkNRVUYxUWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU53Uml4RFFVRkRPMEZCUlVRc1owZEJRV2RITzBGQlEyaEhMRTFCUVUwc1ZVRkJWU3hwUWtGQmFVSXNRMEZCUXl4RlFVRlZMRVZCUVVVc1JVRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJUdFJRVU16UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOV08xTkJRVTA3VVVGRFRDeEpRVUZKTEVsQlFVa3NSMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRja0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzB0QlEzcENPMEZCUTBnc1EwRkJRenRCUVVWRUxEUkVRVUUwUkR0QlFVTTFSQ3hOUVVGTkxFOUJRVThzVDBGQlR6dEpRVWxzUWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4TlFVRnZRanRSUVVNNVFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCZFVJc1EwRkJRenRKUVVOcVJTeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4VlFVRlZMRU5CUVVNc1NVRkJWVHRSUVVNeFFpeE5RVUZOTEVsQlFVa3NSMEZGVGl4blFrRkJaMElzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzcEdMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYlVKQlFXMUNMRWxCUVVrc1EwRkJReXhOUVVGTkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU51Uml4UFFVRlBMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCY1VNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6ZEZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJiVUlzUTBGQlF6dEpRVU4yUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTU3hOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJORUk3VVVGRE5VUXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGFrUXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMGdzVFVGQlRTeExRVUZMTEdsQ1FVRnBRanRSUVVNeFFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm1iQ0JtY205dElDZG1ZWE4wWlhOMExXeGxkbVZ1YzJoMFpXbHVKenRjYm1sdGNHOXlkQ0I3YW1GeWIxZHBibXRzWlhKOUlHWnliMjBnSjJwaGNtOHRkMmx1YTJ4bGNpMTBlWEJsYzJOeWFYQjBKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3WEc0Z0lHRnplVzF0WlhSeWFXTkVhWE4wWVc1alpTeGNiaUFnWW5KaGRXNUNiR0Z1Y1hWbGRFUnBjM1JoYm1ObExGeHVJQ0JqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYmlBZ2FHRnRiV2x1WjBScGMzUmhibU5sTEZ4dUlDQnJkV3hqZW5sdWMydHBSR2x6ZEdGdVkyVXNYRzRnSUcxalEyOXVibUYxWjJobGVVUnBjM1JoYm1ObExGeHVJQ0J5YjJkdmRFZHZiR1JpWlhKblJHbHpkR0Z1WTJVc1hHNGdJSEoxYzNObGJFUnBjM1JoYm1ObExGeHVJQ0J6YjJ0aGJFUnBjM1JoYm1ObExGeHVJQ0IwWVc1cGJXOTBiMFJwYzNSaGJtTmxMRnh1SUNCdWRXMWxjbWxqUkdsemRHRnVZMlVzWEc0Z0lIUmhibWx0YjNSdlJHbHpkR0Z1WTJWSmJuUkJjbkpoZVN4Y2JuMGdabkp2YlNBbkxpNHZaR2x6ZEdGdVkyVXRiV1YwY21samN5MXRaWFJvYjJSekp6dGNibHh1YVcxd2IzSjBJSHRqWVd4amRXeGhkR1ZGZFdOc2FXUmxZVzVFYVhOMFlXNWpaWDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUVKcGRFRnljbUY1SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDJKcGRDMWhjbkpoZVNjN1hHNXBiWEJ2Y25RZ2UxWmxZM1J2Y2l3Z1UzUnlhVzVuUkdsamRHbHZibUZ5ZVgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHRiVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpMQ0JOYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTjlJR1p5YjIwZ0p5NHVMMjFoWTNKdmJXOXNaV04xYkdVdFpHbHpkR0Z1WTJVdFpuVnVZM1JwYjI1ekp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNc0lFSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMRnh1SUNCVGRISnBibWROWlhSeWFXTnpUbUZ0WlhNc0lGWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5d2dUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpMQ0JKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsYzMwZ1puSnZiU0FuTGk5amIyNXpkSE1uTzF4dVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCMlpXTjBiM0pFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nVm1WamRHOXlMQ0I1T2lCV1pXTjBiM0lwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlZtVmpkRzl5VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJ6ZEhKcGJtY3NJSGs2SUhOMGNtbHVaeWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRHVjJaVzV6YUhSbGFXNWRPaUJtYkM1a2FYTjBZVzVqWlN4Y2JpQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwNklHcGhjbTlYYVc1cmJHVnlMRnh1SUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrMWhibWhoZEhSaGJsMDZJRzFoYm1oaGRIUmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2N6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTa2dQVDRnYm5WdFltVnlJSDBnUFNCN1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjEwNklIUmhibWx0YjNSdlJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYVG9nWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFYTjViVzFsZEhKcFkxMDZJR0Z6ZVcxdFpYUnlhV05FYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0p5WVhWdVFteGhibkYxWlhSZE9pQmljbUYxYmtKc1lXNXhkV1YwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrdDFiR042ZVc1emEybGRPaUJyZFd4amVubHVjMnRwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZE9pQnRZME52Ym01aGRXZG9aWGxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEp2WjI5MFIyOXNaR0psY21kZE9pQnliMmR2ZEVkdmJHUmlaWEpuUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJ5ZFhOelpXeEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsTnZhMkZzWFRvZ2MyOXJZV3hFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa2hoYlcxcGJtZGRPaUJvWVcxdGFXNW5SR2x6ZEdGdVkyVXNYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUZkV05zYVdSbFlXNWRPaUJsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCcGJuUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2g0T2lCVmFXNTBNekpCY25KaGVTd2dlVG9nVldsdWRETXlRWEp5WVhrcElEMCtJRzUxYldKbGNpQjlJRDBnZTF4dUlDQmJTVzUwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VkdGdWFXMXZkRzlKYm5SQmNuSmhlVjA2SUhSaGJtbHRiM1J2UkdsemRHRnVZMlZKYm5SQmNuSmhlU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCdWRXMWlaWEpFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nYm5WdFltVnlMQ0I1T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlRuVnRZbVZ5VFdWMGNtbGpjMDVoYldWekxrNTFiV1Z5YVdORWFYTjBZVzVqWlYwNklHNTFiV1Z5YVdORWFYTjBZVzVqWlN4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOeklEMGdlMXh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11Vm1WamRHOXlYVG9nZTF4dUlDQWdJRnRXWldOMGIzSk5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFRvZ2RtVmpkRzl5UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdFdaV04wYjNKTlpYUnlhV056VG1GdFpYTXVSWFZqYkdsa1pXRnVYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDZJSHRjYmlBZ0lDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3hsZG1WdWMyaDBaV2x1WFRvZ2MzUnlhVzVuUkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUR1YyWlc1emFIUmxhVzVkTEZ4dUlDQWdJRnRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11U21GeWIxZHBibXRzWlhKZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwc1hHNGdJQ0FnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1TllXNW9ZWFIwWVc1ZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVOWVc1b1lYUjBZVzVkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11UW1sMFFYSnlZWGxkT2lCN1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVSR2xqWlYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UVhONWJXMWxkSEpwWTEwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRbkpoZFc1Q2JHRnVjWFZsZEYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1Q2NtRjFia0pzWVc1eGRXVjBYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UTI5emFXNWxYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa3QxYkdONmVXNXphMmxkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UzNWc1kzcDVibk5yYVYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrMWpRMjl1Ym1GMVoyaGxlVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVNiMmR2ZEVkdmJHUmlaWEpuWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKdloyOTBSMjlzWkdKbGNtZGRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVblZ6YzJWc1hTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVMjlyWVd4ZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVUyOXJZV3hkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VFdGamNtOU5iMnhsWTNWc1pWMDZJSHNnTHk4Z2IzQjBhVzl1WVd3Z1lYSm5jeUJ1WldWa1pXUWdabTl5SUcxaFkzSnZiVzlzWldOMWJHVWdablZ1WTNScGIyNXpJSGRvYVdOb0lHbHVhWFJwWVd4cGVtVWdkR2hsYlZ4dUlDQWdJRnROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVTRUZOVFVsT1IxMDZJRzF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5iVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMa2hCVFUxSlRrZGRMRnh1SUNBZ0lGdE5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNdVRFVldSVTVUU0ZSRlNVNWRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVNUlZaRlRsTklWRVZKVGwwc1hHNGdJQ0FnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVPUlVWRVRFVk5RVTVPWDFkVlRsTkRTRjA2SUcxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OYlRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGs1RlJVUk1SVTFCVGs1ZlYxVk9VME5JWFN4Y2JpQWdJQ0JiVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMazFQVGs5TlJWSmZRMGhGVFVsRFFVeGZSRWxUVkVGT1EwVmRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVOVDA1UFRVVlNYME5JUlUxSlEwRk1YMFJKVTFSQlRrTkZYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMazUxYldKbGNsMDZJSHRjYmlBZ0lDQmJUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpMazUxYldWeWFXTkVhWE4wWVc1alpWMDZJRzUxYldKbGNrUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iVG5WdFltVnlUV1YwY21samMwNWhiV1Z6TGs1MWJXVnlhV05FYVhOMFlXNWpaVjBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVKYm5SQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiU1c1MFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5SmJuUkJjbkpoZVYwNklHbHVkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjBsdWRFRnljbUY1WFN4Y2JpQWdmVnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtWeHVJQ0FnSUNBZ2NtVjBXM1poYkNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTmRJRDBnYTJWNU8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN3Z2UzMHBPMXh1WEc1bGVIQnZjblFnZEhsd1pTQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqY3p0Y2JtVjRjRzl5ZENCMGVYQmxJRlpsWTNSdmNrMWxkSEpwWTNNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjMXRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NVdaV04wYjNKZE8xeHVaWGh3YjNKMElIUjVjR1VnVTNSeWFXNW5UV1YwY21samN5QTlJR3RsZVc5bUlIUjVjR1Z2WmlCQmRtRnBiR0ZpYkdWTlpYUnlhV056VzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCQ2FYUkJjbkpoZVUxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1Q2FYUkJjbkpoZVYwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkSEpwWTNNZ1BTQlRkSEpwYm1kTlpYUnlhV056SUh3Z1FtbDBRWEp5WVhsTlpYUnlhV056SUh3Z1ZtVmpkRzl5VFdWMGNtbGpjeUI4WEc0Z0lFMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3lCOElFNTFiV0psY2sxbGRISnBZM05PWVcxbGN5QjhJRWx1ZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JXWVd4cFpGUjVjR1Z6SUQxY2JpQWdleUJrWVhSaE9pQnpkSEpwYm1kYlhTd2diV1YwY21sak9pQlRkSEpwYm1kTlpYUnlhV056SUh3Z1RXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6SUgwZ2ZGeHVJQ0I3SUdSaGRHRTZJRlpsWTNSdmNsdGRMQ0J0WlhSeWFXTTZJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZTQjhYRzRnSUhzZ1pHRjBZVG9nUW1sMFFYSnlZWGxiWFN3Z2JXVjBjbWxqT2lCQ2FYUkJjbkpoZVUxbGRISnBZM01nZlNCOFhHNGdJSHNnWkdGMFlUb2diblZ0WW1WeVcxMHNJRzFsZEhKcFl6b2dUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpJSDA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5OWVdOeWIwMXZiR1ZqZFd4bFRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQkVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1TllXTnliMDF2YkdWamRXeGxMblJ2VTNSeWFXNW5LQ2s3WEc1OVhHNWNiaThxS2lCTllXNW9ZWFIwWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdjMlZ4ZFdWdVkyVnpJQ2h0WVhSamFDQXRJREFzSUcxcGMyMWhkR05vSUMwZ01Ta2dibTl5YldGc2FYcGxaQ0JtYjNJZ2JHVnVaM1JvTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWhibWhoZEhSaGJrUnBjM1JoYm1ObEtITXhPaUJ6ZEhKcGJtY3NJSE15T2lCemRISnBibWNwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvY3pFdWJHVnVaM1JvSUNFOVBTQnpNaTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z01UdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnNaWFFnWkdsemREb2diblZ0WW1WeUlEMGdNRHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTVRzZ2FTQThJSE14TG14bGJtZDBhRHNnYVNzcktWeHVJQ0FnSUNBZ1pHbHpkQ0FyUFNCek1WdHBYU0E5UFNCek1sdHBYU0EvSURBZ09pQXhPMXh1SUNBZ0lISmxkSFZ5YmlCa2FYTjBJQzhnY3pFdWJHVnVaM1JvTzF4dUlDQjlYRzU5WEc1Y2JpOHFLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnYzNSeWFXNW5JRzFsWVhOMWNtVnpMaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRTFsWVhOMWNtVWdlMXh1SUNCd2NtOTBaV04wWldRZ2JXVjBhRzlrT2lCTGJtOTNiazFsZEhKcFkzTTdYRzRnSUhCeWIzUmxZM1JsWkNCa1lYUmhWSGx3WlRvZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWek8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRTFsWVhOMWNtVWdkMmwwYUNBdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhSb2IyUWdUV1YwYUc5a0lIUnZJR05oYkdOMWJHRjBaU0JrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSE4wY21sdVozTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYldWMGFHOWtPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnSUNCMGFHbHpMbTFsZEdodlpDQTlJRzFsZEdodlpEdGNiaUFnSUNCMGFHbHpMbVJoZEdGVWVYQmxJRDBnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR0WlhSb2IyUmRJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHTjFjM1J2YlNCemRISnBibWNnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjRnYzNCbFkybG1hV1ZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMjl3ZEhOOUlHOXdkSE1nVDNCMGFXOXVjeUJtYjNJZ2RHaGxJRzFsWVhOMWNtVXVJSFZ6WldRZ1ptOXlJRzFoWTNKdmJXOXNaV04xYkdVZ1pHbHpkR0Z1WTJWelhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JEWVd4c1ltRmpheUJ2WmlCMGFHVWdiV1ZoYzNWeVpTQmphRzl6Wlc0dVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFMWxZWE4xY21Vb2IzQjBjejg2SUdGdWVTazZJRVJwYzNSaGJtTmxUV1YwY21saklIdGNiaUFnSUNCamIyNXpkQ0JrYVdOME9pQjdJRnRyWlhrNklITjBjbWx1WjEwNlhHNGdJQ0FnSUNCN1cydGxlVEk2SUhOMGNtbHVaMTA2SUVScGMzUmhibU5sVFdWMGNtbGpJSHdnS0NodmNIUnpPaUJoYm5rcElEMCtJRVJwYzNSaGJtTmxUV1YwY21saktYMWNiaUFnSUNCOUlEMGdRWFpoYVd4aFlteGxUV1YwY21samN6dGNiaUFnSUNCcFppQW9JV1JwWTNRdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEdocGN5NWtZWFJoVkhsd1pTa2dmSHdnSVdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYwdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEdocGN5NXRaWFJvYjJRcEtWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVmJtdHViM2R1SUcxbFlYTjFjbVVnSkh0MGFHbHpMbTFsZEdodlpIMGdabTl5SUdSaGRHRWdkSGx3WlNBa2UzUm9hWE11WkdGMFlWUjVjR1Y5WUNrN1hHNGdJQ0FnY21WMGRYSnVJR2x6VFdGamNtOU5iMnhsWTNWc1pVMWxkSEpwWXloMGFHbHpMbTFsZEdodlpDa2dQMXh1SUNBZ0lDQWdLR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZElHRnpJQ2dvYjNCMGN6b2dZVzU1S1NBOVBpQkVhWE4wWVc1alpVMWxkSEpwWXlrcEtHOXdkSE1wSURwY2JpQWdJQ0FnSUdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYxYmRHaHBjeTV0WlhSb2IyUmRJR0Z6SUVScGMzUmhibU5sVFdWMGNtbGpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWTNWemRHOXRJSE4wY21sdVp5QmthWE4wWVc1alpTQmllU0IwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMEYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMzBnWkdGMFlWUjVjR1VnVFdWMGNtbGpKM01nWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVoxdGRmU0JOWlhSeWFXTWdibUZ0WlhNZ2QyaHBZMmdnWlhod1pXTjBjeUIwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJOWlhSeWFXTkNlVVJoZEdGVWVYQmxLR1JoZEdGVWVYQmxPaUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE1wT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iWkdGMFlWUjVjR1ZkS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJTWlhSMWNtNXpJRzFsZEhKcFl5QnVZVzFsY3lCaGRtRnBiR0ZpYkdVdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRDQmhkbUZwYkdGaWJHVk5aV0Z6ZFhKbGN5Z3BPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTXBPMXh1SUNCOVhHNTlYRzRpWFgwPSIsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgRGlzdGFuY2VNYXRyaXggfSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgnO1xuaW1wb3J0IHsgc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MnO1xuY29uc3QgY3R4ID0gc2VsZjtcbmN0eC5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgKHsgZGF0YTogeyBwZXB0aWRlc0xpc3QsIG1ldHJpYyB9IH0pID0+IF9fYXdhaXRlcih2b2lkIDAsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBkbSA9IERpc3RhbmNlTWF0cml4LmNhbGMocGVwdGlkZXNMaXN0LCAoYSwgYikgPT4gc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1ttZXRyaWNdKGEsIGIpKTtcbiAgICAgICAgZGF0YS5kaXN0YW5jZXMgPSBkbS5kYXRhO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBkYXRhLmVycm9yID0gZTtcbiAgICB9XG4gICAgc2VsZi5wb3N0TWVzc2FnZShkYXRhKTtcbn0pKTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpHbHpkR0Z1WTJVdGJXRjBjbWw0TG5kdmNtdGxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltUnBjM1JoYm1ObExXMWhkSEpwZUM1M2IzSnJaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN096czdPenM3TzBGQlFVRXNUMEZCVHl4RlFVRkRMR05CUVdNc1JVRkJReXhOUVVGTkxEUkRRVUUwUXl4RFFVRkRPMEZCUXpGRkxFOUJRVThzUlVGQlF5dzBRa0ZCTkVJc1JVRkJReXhOUVVGTkxEQkRRVUV3UXl4RFFVRkRPMEZCUlhSR0xFMUJRVTBzUjBGQlJ5eEhRVUZYTEVsQlFWY3NRMEZCUXp0QlFVVm9ReXhIUVVGSExFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVThzUlVGQlF5eEpRVUZKTEVWQlFVVXNSVUZCUXl4WlFVRlpMRVZCUVVVc1RVRkJUU3hGUVVGRExFVkJRVU1zUlVGQlJTeEZRVUZGTzBsQlEzWkZMRTFCUVUwc1NVRkJTU3hIUVVFMFF5eEZRVUZGTEVOQlFVTTdTVUZEZWtRc1NVRkJTVHRSUVVOR0xFMUJRVTBzUlVGQlJTeEhRVUZITEdOQlFXTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1dVRkJXU3hGUVVONlF5eERRVUZETEVOQlFWTXNSVUZCUlN4RFFVRlRMRVZCUVVVc1JVRkJSU3hEUVVGRExEUkNRVUUwUWl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNoRkxFbEJRVWtzUTBGQlF5eFRRVUZUTEVkQlFVY3NSVUZCUlN4RFFVRkRMRWxCUVVrc1EwRkJRenRMUVVNeFFqdEpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMUZCUTFZc1NVRkJTU3hEUVVGRExFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVTTdTMEZEYUVJN1NVRkRSQ3hKUVVGSkxFTkJRVU1zVjBGQlZ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMEZCUTNwQ0xFTkJRVU1zUTBGQlFTeERRVUZETEVOQlFVTWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdlMFJwYzNSaGJtTmxUV0YwY21sNGZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwyMXNMM055WXk5a2FYTjBZVzVqWlMxdFlYUnlhWGduTzF4dWFXMXdiM0owSUh0emRISnBibWRFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSemZTQm1jbTl0SUNkQVpHRjBZV2R5YjJzdGJHbGljbUZ5YVdWekwyMXNMM055WXk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYmx4dVkyOXVjM1FnWTNSNE9pQlhiM0pyWlhJZ1BTQnpaV3htSUdGeklHRnVlVHRjYmx4dVkzUjRMbUZrWkVWMlpXNTBUR2x6ZEdWdVpYSW9KMjFsYzNOaFoyVW5MQ0JoYzNsdVl5QW9lMlJoZEdFNklIdHdaWEIwYVdSbGMweHBjM1FzSUcxbGRISnBZMzE5S1NBOVBpQjdYRzRnSUdOdmJuTjBJR1JoZEdFNklIdGxjbkp2Y2o4NklHRnVlU3dnWkdsemRHRnVZMlZ6UHpvZ1JteHZZWFF6TWtGeWNtRjVmU0E5SUh0OU8xeHVJQ0IwY25rZ2UxeHVJQ0FnSUdOdmJuTjBJR1J0SUQwZ1JHbHpkR0Z1WTJWTllYUnlhWGd1WTJGc1l5aHdaWEIwYVdSbGMweHBjM1FzWEc0Z0lDQWdJQ0FvWVRvZ2MzUnlhVzVuTENCaU9pQnpkSEpwYm1jcElEMCtJSE4wY21sdVowUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iYldWMGNtbGpYU2hoTENCaUtTazdYRzRnSUNBZ1pHRjBZUzVrYVhOMFlXNWpaWE1nUFNCa2JTNWtZWFJoTzF4dUlDQjlJR05oZEdOb0lDaGxLU0I3WEc0Z0lDQWdaR0YwWVM1bGNuSnZjaUE5SUdVN1hHNGdJSDFjYmlBZ2MyVnNaaTV3YjNOMFRXVnpjMkZuWlNoa1lYUmhLVHRjYm4wcE8xeHVJbDE5IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzY5NCw4MzFdLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyg5MjA5KSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiLy8gbm8gYmFzZVVSSVxuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQyMDk6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdIHx8IFtdO1xudmFyIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uID0gY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSBpbnN0YWxsQ2h1bms7XG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3QiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsIm5leHQiLCJEaXN0YW5jZU1hdHJpeCIsImRhdGEiLCJ0aGlzIiwiX2RhdGEiLCJzaXplIiwiX3NpemUiLCJjb25zdHJ1Y3RvciIsInVuZGVmaW5lZCIsIkVycm9yIiwiTWF0aCIsInNxcnQiLCJsZW5ndGgiLCJmbG9vciIsImRhdGFMZW5ndGgiLCJGbG9hdDMyQXJyYXkiLCJfbGluZWFyaXplSUoiLCJpIiwiaiIsImdldCIsInNldCIsInZhbHVlIiwiY2FsYyIsImxpc3QiLCJtZXRob2QiLCJyZXMiLCJzcXVhcmUiLCJhZGQiLCJvdGhlciIsIm5vcm1hbGl6ZSIsIm1pbiIsIm1heCIsInJhbmdlIiwidmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIkV1Y2xpZGVhbiIsInN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJMZXZlbnNodGVpbiIsIkphcm9XaW5rbGVyIiwiTWFuaGF0dGFuIiwiczEiLCJzMiIsImRpc3QiLCJiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJUYW5pbW90byIsIkRpY2UiLCJBc3ltbWV0cmljIiwiQnJhdW5CbGFucXVldCIsIkNvc2luZSIsIkt1bGN6eW5za2kiLCJNY0Nvbm5hdWdoZXkiLCJSb2dvdEdvbGRiZXJnIiwiUnVzc2VsIiwiU29rYWwiLCJIYW1taW5nIiwiaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiVGFuaW1vdG9JbnRBcnJheSIsIm51bWJlckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJOdW1lcmljRGlzdGFuY2UiLCJBdmFpbGFibGVNZXRyaWNzIiwiVmVjdG9yIiwiU3RyaW5nIiwiQml0QXJyYXkiLCJNYWNyb01vbGVjdWxlIiwiSEFNTUlORyIsIkxFVkVOU0hURUlOIiwiTkVFRExFTUFOTl9XVU5TQ0giLCJNT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFIiwiTnVtYmVyIiwiSW50QXJyYXkiLCJPYmplY3QiLCJrZXlzIiwicmVkdWNlIiwicmV0Iiwia2V5IiwidmFsIiwic2VsZiIsImFkZEV2ZW50TGlzdGVuZXIiLCJwZXB0aWRlc0xpc3QiLCJtZXRyaWMiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsImdlbmVyYXRvciIsImRtIiwiYSIsImIiLCJkaXN0YW5jZXMiLCJlIiwiZXJyb3IiLCJwb3N0TWVzc2FnZSIsIlAiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJ4IiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIk8iLCJjaHVua0lkcyIsImZuIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJJbmZpbml0eSIsImV2ZXJ5Iiwic3BsaWNlIiwiciIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImYiLCJjaHVua0lkIiwiYWxsIiwicHJvbWlzZXMiLCJ1IiwiZyIsImdsb2JhbFRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJyZXBsYWNlIiwicCIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
package/dist/361.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunkpeptides=self.webpackChunkpeptides||[]).push([[361],{6361:(e,t,a)=>{a.d(t,{UH:()=>n.UH}),a(1040);var n=a(7861)},7861:(e,t,a)=>{a.d(t,{UH:()=>M});var n=a(1811),r=a(3979),o=a(5697),i=a(850),s=a(708),g=a(1040);const k={[g.CF.Euclidean]:i.dP},c={[g.W.Levenshtein]:n.T,[g.W.JaroWinkler]:r.H$,[g.W.Manhattan]:function(e,t){if(e.length!==t.length)return 1;{let a=0;for(let n=1;n<e.length;n++)a+=e[n]==t[n]?0:1;return a/e.length}}},u={[g.gk.Tanimoto]:o.KR,[g.gk.Dice]:o._h,[g.gk.Asymmetric]:o.yU,[g.gk.BraunBlanquet]:o.Dz,[g.gk.Cosine]:o.Zd,[g.gk.Kulczynski]:o.s,[g.gk.McConnaughey]:o.aW,[g.gk.RogotGoldberg]:o.MI,[g.gk.Russel]:o.fX,[g.gk.Sokal]:o.NB,[g.gk.Hamming]:o.UX,[g.gk.Euclidean]:o.WI},h={[g.gd.TanimotoIntArray]:o.FV},l={[g.Yc.NumericDistance]:o.bX},d={[g.Qe.Vector]:{[g.CF.Euclidean]:k[g.CF.Euclidean]},[g.Qe.String]:{[g.W.Levenshtein]:c[g.W.Levenshtein],[g.W.JaroWinkler]:c[g.W.JaroWinkler],[g.W.Manhattan]:c[g.W.Manhattan]},[g.Qe.BitArray]:{[g.gk.Tanimoto]:u[g.gk.Tanimoto],[g.gk.Dice]:u[g.gk.Dice],[g.gk.Asymmetric]:u[g.gk.Asymmetric],[g.gk.BraunBlanquet]:u[g.gk.BraunBlanquet],[g.gk.Cosine]:u[g.gk.Cosine],[g.gk.Kulczynski]:u[g.gk.Kulczynski],[g.gk.McConnaughey]:u[g.gk.McConnaughey],[g.gk.RogotGoldberg]:u[g.gk.RogotGoldberg],[g.gk.Russel]:u[g.gk.Russel],[g.gk.Sokal]:u[g.gk.Sokal]},[g.Qe.MacroMolecule]:{[s.U.HAMMING]:s.o[s.U.HAMMING],[s.U.LEVENSHTEIN]:s.o[s.U.LEVENSHTEIN],[s.U.NEEDLEMANN_WUNSCH]:s.o[s.U.NEEDLEMANN_WUNSCH],[s.U.MONOMER_CHEMICAL_DISTANCE]:s.o[s.U.MONOMER_CHEMICAL_DISTANCE]},[g.Qe.Number]:{[g.Yc.NumericDistance]:l[g.Yc.NumericDistance]},[g.Qe.IntArray]:{[g.gd.TanimotoIntArray]:h[g.gd.TanimotoIntArray]}},y=Object.keys(d).reduce(((e,t)=>{for(const a of Object.keys(d[t]))e[a]=t;return e}),{});class M{constructor(e){this.method=e,this.dataType=y[e]}getMeasure(e){const t=d;if(!t.hasOwnProperty(this.dataType)||!t[this.dataType].hasOwnProperty(this.method))throw new Error(`Unknown measure ${this.method} for data type ${this.dataType}`);return a=this.method,y[a]==g.Qe.MacroMolecule.toString()?t[this.dataType][this.method](e):t[this.dataType][this.method];var a}static getMetricByDataType(e){return Object.keys(d[e])}static get availableMeasures(){return Object.keys(d)}}}}]);
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVlDLEdBQ1JDLEtBQUtELE9BQVNBLEVBQ2RDLEtBQUtDLFNBQVdYLEVBQWlCUyxFQUNyQyxDQU9BLFVBQUFHLENBQVdDLEdBQ1AsTUFBTUMsRUFBT3pCLEVBQ2IsSUFBS3lCLEVBQUtDLGVBQWVMLEtBQUtDLFlBQWNHLEVBQUtKLEtBQUtDLFVBQVVJLGVBQWVMLEtBQUtELFFBQ2hGLE1BQU0sSUFBSU8sTUFBTSxtQkFBbUJOLEtBQUtELHdCQUF3QkMsS0FBS0MsWUFDekUsT0FwQzhCTSxFQW9DRFAsS0FBS0QsT0FuQy9CVCxFQUFpQmlCLElBQVMsS0FBd0J4QixjQUFjeUIsV0FvQy9ESixFQUFLSixLQUFLQyxVQUFVRCxLQUFLRCxRQUFRSSxHQUNqQ0MsRUFBS0osS0FBS0MsVUFBVUQsS0FBS0QsUUF0QzlCLElBQStCUSxDQXVDbEMsQ0FPQSwwQkFBT0UsQ0FBb0JSLEdBQ3ZCLE9BQU9WLE9BQU9DLEtBQUtiLEVBQWlCc0IsR0FDeEMsQ0FJQSw0QkFBV1MsR0FDUCxPQUFPbkIsT0FBT0MsS0FBS2IsRUFDdkIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL3BlcHRpZGVzLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL3R5cGVkLW1ldHJpY3MvdHlwZWQtbWV0cmljcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmbCBmcm9tICdmYXN0ZXN0LWxldmVuc2h0ZWluJztcbmltcG9ydCB7IGphcm9XaW5rbGVyIH0gZnJvbSAnamFyby13aW5rbGVyLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgYXN5bW1ldHJpY0Rpc3RhbmNlLCBicmF1bkJsYW5xdWV0RGlzdGFuY2UsIGNvc2luZURpc3RhbmNlLCBkaWNlRGlzdGFuY2UsIGV1Y2xpZGVhbkRpc3RhbmNlLCBoYW1taW5nRGlzdGFuY2UsIGt1bGN6eW5za2lEaXN0YW5jZSwgbWNDb25uYXVnaGV5RGlzdGFuY2UsIHJvZ290R29sZGJlcmdEaXN0YW5jZSwgcnVzc2VsRGlzdGFuY2UsIHNva2FsRGlzdGFuY2UsIHRhbmltb3RvRGlzdGFuY2UsIG51bWVyaWNEaXN0YW5jZSwgdGFuaW1vdG9EaXN0YW5jZUludEFycmF5LCB9IGZyb20gJy4uL2Rpc3RhbmNlLW1ldHJpY3MtbWV0aG9kcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVFdWNsaWRlYW5EaXN0YW5jZSB9IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL3ZlY3Rvci1vcGVyYXRpb25zJztcbmltcG9ydCB7IG1tRGlzdGFuY2VGdW5jdGlvbnMsIE1tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcyB9IGZyb20gJy4uL21hY3JvbW9sZWN1bGUtZGlzdGFuY2UtZnVuY3Rpb25zJztcbmltcG9ydCB7IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLCBCaXRBcnJheU1ldHJpY3NOYW1lcywgU3RyaW5nTWV0cmljc05hbWVzLCBWZWN0b3JNZXRyaWNzTmFtZXMsIE51bWJlck1ldHJpY3NOYW1lcywgSW50QXJyYXlNZXRyaWNzTmFtZXMgfSBmcm9tICcuL2NvbnN0cyc7XG5leHBvcnQgY29uc3QgdmVjdG9yRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IGNhbGN1bGF0ZUV1Y2xpZGVhbkRpc3RhbmNlLFxufTtcbmV4cG9ydCBjb25zdCBzdHJpbmdEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dOiBmbC5kaXN0YW5jZSxcbiAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogamFyb1dpbmtsZXIsXG4gICAgW1N0cmluZ01ldHJpY3NOYW1lcy5NYW5oYXR0YW5dOiBtYW5oYXR0YW5EaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzID0ge1xuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IHRhbmltb3RvRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdOiBkaWNlRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkFzeW1tZXRyaWNdOiBhc3ltbWV0cmljRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBicmF1bkJsYW5xdWV0RGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkNvc2luZV06IGNvc2luZURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5LdWxjenluc2tpXToga3VsY3p5bnNraURpc3RhbmNlLFxuICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBtY0Nvbm5hdWdoZXlEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ106IHJvZ290R29sZGJlcmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXTogcnVzc2VsRGlzdGFuY2UsXG4gICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogc29rYWxEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuSGFtbWluZ106IGhhbW1pbmdEaXN0YW5jZSxcbiAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuRXVjbGlkZWFuXTogZXVjbGlkZWFuRGlzdGFuY2UsXG59O1xuZXhwb3J0IGNvbnN0IGludEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbSW50QXJyYXlNZXRyaWNzTmFtZXMuVGFuaW1vdG9JbnRBcnJheV06IHRhbmltb3RvRGlzdGFuY2VJbnRBcnJheSxcbn07XG5leHBvcnQgY29uc3QgbnVtYmVyRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyA9IHtcbiAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWVyaWNEaXN0YW5jZSxcbn07XG5leHBvcnQgY29uc3QgQXZhaWxhYmxlTWV0cmljcyA9IHtcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuVmVjdG9yXToge1xuICAgICAgICBbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl06IHZlY3RvckRpc3RhbmNlTWV0cmljc01ldGhvZHNbVmVjdG9yTWV0cmljc05hbWVzLkV1Y2xpZGVhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuU3RyaW5nXToge1xuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkxldmVuc2h0ZWluXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuTGV2ZW5zaHRlaW5dLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLkphcm9XaW5rbGVyXTogc3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tTdHJpbmdNZXRyaWNzTmFtZXMuSmFyb1dpbmtsZXJdLFxuICAgICAgICBbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl06IHN0cmluZ0Rpc3RhbmNlTWV0cmljc01ldGhvZHNbU3RyaW5nTWV0cmljc05hbWVzLk1hbmhhdHRhbl0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuQml0QXJyYXldOiB7XG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5EaWNlXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLkRpY2VdLFxuICAgICAgICBbQml0QXJyYXlNZXRyaWNzTmFtZXMuQXN5bW1ldHJpY106IGJpdEFycmF5RGlzdGFuY2VNZXRyaWNzTWV0aG9kc1tCaXRBcnJheU1ldHJpY3NOYW1lcy5Bc3ltbWV0cmljXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkJyYXVuQmxhbnF1ZXRdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQnJhdW5CbGFucXVldF0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5Db3NpbmVdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuQ29zaW5lXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLkt1bGN6eW5za2ldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuS3VsY3p5bnNraV0sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5NY0Nvbm5hdWdoZXldOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuTWNDb25uYXVnaGV5XSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlJvZ290R29sZGJlcmddOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUm9nb3RHb2xkYmVyZ10sXG4gICAgICAgIFtCaXRBcnJheU1ldHJpY3NOYW1lcy5SdXNzZWxdOiBiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHNbQml0QXJyYXlNZXRyaWNzTmFtZXMuUnVzc2VsXSxcbiAgICAgICAgW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXTogYml0QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0JpdEFycmF5TWV0cmljc05hbWVzLlNva2FsXSxcbiAgICB9LFxuICAgIFtEaXN0YW5jZU1ldHJpY3NTdWJqZWN0cy5NYWNyb01vbGVjdWxlXToge1xuICAgICAgICBbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkhBTU1JTkddOiBtbURpc3RhbmNlRnVuY3Rpb25zW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5IQU1NSU5HXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5MRVZFTlNIVEVJTl06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLkxFVkVOU0hURUlOXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5ORUVETEVNQU5OX1dVTlNDSF06IG1tRGlzdGFuY2VGdW5jdGlvbnNbTW1EaXN0YW5jZUZ1bmN0aW9uc05hbWVzLk5FRURMRU1BTk5fV1VOU0NIXSxcbiAgICAgICAgW01tRGlzdGFuY2VGdW5jdGlvbnNOYW1lcy5NT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFXTogbW1EaXN0YW5jZUZ1bmN0aW9uc1tNbURpc3RhbmNlRnVuY3Rpb25zTmFtZXMuTU9OT01FUl9DSEVNSUNBTF9ESVNUQU5DRV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuTnVtYmVyXToge1xuICAgICAgICBbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV06IG51bWJlckRpc3RhbmNlTWV0cmljc01ldGhvZHNbTnVtYmVyTWV0cmljc05hbWVzLk51bWVyaWNEaXN0YW5jZV0sXG4gICAgfSxcbiAgICBbRGlzdGFuY2VNZXRyaWNzU3ViamVjdHMuSW50QXJyYXldOiB7XG4gICAgICAgIFtJbnRBcnJheU1ldHJpY3NOYW1lcy5UYW5pbW90b0ludEFycmF5XTogaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzW0ludEFycmF5TWV0cmljc05hbWVzLlRhbmltb3RvSW50QXJyYXldLFxuICAgIH1cbn07XG5leHBvcnQgY29uc3QgTWV0cmljVG9EYXRhVHlwZSA9IE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3MpXG4gICAgLnJlZHVjZSgocmV0LCBrZXkpID0+IHtcbiAgICBmb3IgKGNvbnN0IHZhbCBvZiBPYmplY3Qua2V5cyhBdmFpbGFibGVNZXRyaWNzW2tleV0pKVxuICAgICAgICByZXRbdmFsXSA9IGtleTtcbiAgICByZXR1cm4gcmV0O1xufSwge30pO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnU3RyaW5nJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpdEFycmF5TWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnQml0QXJyYXknO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVmVjdG9yTWV0cmljKG5hbWUpIHtcbiAgICByZXR1cm4gTWV0cmljVG9EYXRhVHlwZVtuYW1lXSA9PSAnVmVjdG9yJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hY3JvTW9sZWN1bGVNZXRyaWMobmFtZSkge1xuICAgIHJldHVybiBNZXRyaWNUb0RhdGFUeXBlW25hbWVdID09IERpc3RhbmNlTWV0cmljc1N1YmplY3RzLk1hY3JvTW9sZWN1bGUudG9TdHJpbmcoKTtcbn1cbi8qKiBNYW5oYXR0YW4gZGlzdGFuY2UgYmV0d2VlbiB0d28gc2VxdWVuY2VzIChtYXRjaCAtIDAsIG1pc21hdGNoIC0gMSkgbm9ybWFsaXplZCBmb3IgbGVuZ3RoLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmhhdHRhbkRpc3RhbmNlKHMxLCBzMikge1xuICAgIGlmIChzMS5sZW5ndGggIT09IHMyLmxlbmd0aCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGxldCBkaXN0ID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBzMS5sZW5ndGg7IGkrKylcbiAgICAgICAgICAgIGRpc3QgKz0gczFbaV0gPT0gczJbaV0gPyAwIDogMTtcbiAgICAgICAgcmV0dXJuIGRpc3QgLyBzMS5sZW5ndGg7XG4gICAgfVxufVxuLyoqIFVuaWZpZWQgY2xhc3MgaW1wbGVtZW50aW5nIGRpZmZlcmVudCBzdHJpbmcgbWVhc3VyZXMuICovXG5leHBvcnQgY2xhc3MgTWVhc3VyZSB7XG4gICAgLyoqXG4gICAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBNZWFzdXJlIHdpdGggLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtZXRob2QgTWV0aG9kIHRvIGNhbGN1bGF0ZSBkaXN0YW5jZSBiZXR3ZWVuIHN0cmluZ3MuXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgY29uc3RydWN0b3IobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubWV0aG9kID0gbWV0aG9kO1xuICAgICAgICB0aGlzLmRhdGFUeXBlID0gTWV0cmljVG9EYXRhVHlwZVttZXRob2RdO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGN1c3RvbSBzdHJpbmcgZGlzdGFuY2UgZnVuY3Rpb24gc3BlY2lmaWVkLlxuICAgICAqIEBwYXJhbSB7b3B0c30gb3B0cyBPcHRpb25zIGZvciB0aGUgbWVhc3VyZS4gdXNlZCBmb3IgbWFjcm9tb2xlY3VsZSBkaXN0YW5jZXNcbiAgICAgKiBAcmV0dXJuIHtEaXN0YW5jZU1ldHJpY30gQ2FsbGJhY2sgb2YgdGhlIG1lYXN1cmUgY2hvc2VuLlxuICAgICAqIEBtZW1iZXJvZiBNZWFzdXJlclxuICAgICAqL1xuICAgIGdldE1lYXN1cmUob3B0cykge1xuICAgICAgICBjb25zdCBkaWN0ID0gQXZhaWxhYmxlTWV0cmljcztcbiAgICAgICAgaWYgKCFkaWN0Lmhhc093blByb3BlcnR5KHRoaXMuZGF0YVR5cGUpIHx8ICFkaWN0W3RoaXMuZGF0YVR5cGVdLmhhc093blByb3BlcnR5KHRoaXMubWV0aG9kKSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBtZWFzdXJlICR7dGhpcy5tZXRob2R9IGZvciBkYXRhIHR5cGUgJHt0aGlzLmRhdGFUeXBlfWApO1xuICAgICAgICByZXR1cm4gaXNNYWNyb01vbGVjdWxlTWV0cmljKHRoaXMubWV0aG9kKSA/XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXShvcHRzKSA6XG4gICAgICAgICAgICBkaWN0W3RoaXMuZGF0YVR5cGVdW3RoaXMubWV0aG9kXTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmV0dXJucyBjdXN0b20gc3RyaW5nIGRpc3RhbmNlIGJ5IHRoZSBnaXZlbiBkYXRhIHR5cGUuXG4gICAgICogQHBhcmFtIHtBdmFpbGFibGVEYXRhVHlwZXN9IGRhdGFUeXBlIE1ldHJpYydzIGRhdGEgdHlwZVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSBNZXRyaWMgbmFtZXMgd2hpY2ggZXhwZWN0cyB0aGUgZ2l2ZW4gZGF0YSB0eXBlXG4gICAgICogQG1lbWJlcm9mIE1lYXN1cmVyXG4gICAgICovXG4gICAgc3RhdGljIGdldE1ldHJpY0J5RGF0YVR5cGUoZGF0YVR5cGUpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKEF2YWlsYWJsZU1ldHJpY3NbZGF0YVR5cGVdKTtcbiAgICB9XG4gICAgLyoqIFJldHVybnMgbWV0cmljIG5hbWVzIGF2YWlsYWJsZS5cbiAgICAgKiBAbWVtYmVyb2YgTWVhc3VyZXJcbiAgICAgKi9cbiAgICBzdGF0aWMgZ2V0IGF2YWlsYWJsZU1lYXN1cmVzKCkge1xuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMoQXZhaWxhYmxlTWV0cmljcyk7XG4gICAgfVxufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pZEhsd1pXUXRiV1YwY21samN5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSW5SNWNHVmtMVzFsZEhKcFkzTXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhMUVVGTExFVkJRVVVzVFVGQlRTeHhRa0ZCY1VJc1EwRkJRenRCUVVNeFF5eFBRVUZQTEVWQlFVTXNWMEZCVnl4RlFVRkRMRTFCUVUwc2VVSkJRWGxDTEVOQlFVTTdRVUZGY0VRc1QwRkJUeXhGUVVOTUxHdENRVUZyUWl4RlFVTnNRaXh4UWtGQmNVSXNSVUZEY2tJc1kwRkJZeXhGUVVOa0xGbEJRVmtzUlVGRFdpeHBRa0ZCYVVJc1JVRkRha0lzWlVGQlpTeEZRVU5tTEd0Q1FVRnJRaXhGUVVOc1FpeHZRa0ZCYjBJc1JVRkRjRUlzY1VKQlFYRkNMRVZCUTNKQ0xHTkJRV01zUlVGRFpDeGhRVUZoTEVWQlEySXNaMEpCUVdkQ0xFVkJRMmhDTEdWQlFXVXNSVUZEWml4M1FrRkJkMElzUjBGRGVrSXNUVUZCVFN3MlFrRkJOa0lzUTBGQlF6dEJRVVZ5UXl4UFFVRlBMRVZCUVVNc01FSkJRVEJDTEVWQlFVTXNUVUZCVFN4cFJFRkJhVVFzUTBGQlF6dEJRVWN6Uml4UFFVRlBMRVZCUVVNc2JVSkJRVzFDTEVWQlFVVXNkMEpCUVhkQ0xFVkJRVU1zVFVGQlRTeHhRMEZCY1VNc1EwRkJRenRCUVVOc1J5eFBRVUZQTEVWQlFVTXNkVUpCUVhWQ0xFVkJRVVVzYjBKQlFXOUNMRVZCUTI1RUxHdENRVUZyUWl4RlFVRkZMR3RDUVVGclFpeEZRVUZGTEd0Q1FVRnJRaXhGUVVGRkxHOUNRVUZ2UWl4RlFVRkRMRTFCUVUwc1ZVRkJWU3hEUVVGRE8wRkJSM0JITEUxQlFVMHNRMEZCUXl4TlFVRk5MRFJDUVVFMFFpeEhRVUY1UkR0SlFVTm9SeXhEUVVGRExHdENRVUZyUWl4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxEQkNRVUV3UWp0RFFVTXpSQ3hEUVVGRE8wRkJSVVlzVFVGQlRTeERRVUZETEUxQlFVMHNORUpCUVRSQ0xFZEJRWGxFTzBsQlEyaEhMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExGRkJRVkU3U1VGRE4wTXNRMEZCUXl4clFrRkJhMElzUTBGQlF5eFhRVUZYTEVOQlFVTXNSVUZCUlN4WFFVRlhPMGxCUXpkRExFTkJRVU1zYTBKQlFXdENMRU5CUVVNc1UwRkJVeXhEUVVGRExFVkJRVVVzYVVKQlFXbENPME5CUTJ4RUxFTkJRVU03UVVGRlJpeE5RVUZOTEVOQlFVTXNUVUZCVFN3NFFrRkJPRUlzUjBGQk5rUTdTVUZEZEVjc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSU3huUWtGQlowSTdTVUZEYWtRc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3haUVVGWk8wbEJRM3BETEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVlVGQlZTeERRVUZETEVWQlFVVXNhMEpCUVd0Q08wbEJRM0pFTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVXNjVUpCUVhGQ08wbEJRek5FTEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNZMEZCWXp0SlFVTTNReXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJReXhGUVVGRkxHdENRVUZyUWp0SlFVTnlSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRmxCUVZrc1EwRkJReXhGUVVGRkxHOUNRVUZ2UWp0SlFVTjZSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhGUVVGRkxIRkNRVUZ4UWp0SlFVTXpSQ3hEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJReXhGUVVGRkxHTkJRV003U1VGRE4wTXNRMEZCUXl4dlFrRkJiMElzUTBGQlF5eExRVUZMTEVOQlFVTXNSVUZCUlN4aFFVRmhPMGxCUXpORExFTkJRVU1zYjBKQlFXOUNMRU5CUVVNc1QwRkJUeXhEUVVGRExFVkJRVVVzWlVGQlpUdEpRVU12UXl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMR2xDUVVGcFFqdERRVU53UkN4RFFVRkRPMEZCUlVZc1RVRkJUU3hEUVVGRExFMUJRVTBzT0VKQlFUaENMRWRCUVcxRk8wbEJRelZITEVOQlFVTXNiMEpCUVc5Q0xFTkJRVU1zWjBKQlFXZENMRU5CUVVNc1JVRkJSU3gzUWtGQmQwSTdRMEZEYkVVc1EwRkJRenRCUVVWR0xFMUJRVTBzUTBGQlF5eE5RVUZOTERSQ1FVRTBRaXhIUVVGNVJEdEpRVU5vUnl4RFFVRkRMR3RDUVVGclFpeERRVUZETEdWQlFXVXNRMEZCUXl4RlFVRkZMR1ZCUVdVN1EwRkRkRVFzUTBGQlF6dEJRVVZHTEUxQlFVMHNRMEZCUXl4TlFVRk5MR2RDUVVGblFpeEhRVUZITzBsQlF6bENMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhUUVVGVExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4VFFVRlRMRU5CUVVNN1MwRkRNMFk3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlEyaERMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlF6bEdMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNWMEZCVnl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVjBGQlZ5eERRVUZETzFGQlF6bEdMRU5CUVVNc2EwSkJRV3RDTEVOQlFVTXNVMEZCVXl4RFFVRkRMRVZCUVVVc05FSkJRVFJDTEVOQlFVTXNhMEpCUVd0Q0xFTkJRVU1zVTBGQlV5eERRVUZETzB0QlF6TkdPMGxCUTBRc1EwRkJReXgxUWtGQmRVSXNRMEZCUXl4UlFVRlJMRU5CUVVNc1JVRkJSVHRSUVVOc1F5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRkZCUVZFc1EwRkJRenRSUVVNNVJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFbEJRVWtzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRWxCUVVrc1EwRkJRenRSUVVOMFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVOc1J5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVONFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExGVkJRVlVzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRlZCUVZVc1EwRkJRenRSUVVOc1J5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRmxCUVZrc1EwRkJRenRSUVVOMFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExHRkJRV0VzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMR0ZCUVdFc1EwRkJRenRSUVVONFJ5eERRVUZETEc5Q1FVRnZRaXhEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRTFCUVUwc1EwRkJRenRSUVVNeFJpeERRVUZETEc5Q1FVRnZRaXhEUVVGRExFdEJRVXNzUTBGQlF5eEZRVUZGTERoQ1FVRTRRaXhEUVVGRExHOUNRVUZ2UWl4RFFVRkRMRXRCUVVzc1EwRkJRenRMUVVONlJqdEpRVU5FTEVOQlFVTXNkVUpCUVhWQ0xFTkJRVU1zWVVGQllTeERRVUZETEVWQlFVVTdVVUZEZGtNc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFBRVUZQTEVOQlFVTTdVVUZEZWtZc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4WFFVRlhMRU5CUVVNc1JVRkJSU3h0UWtGQmJVSXNRMEZCUXl4M1FrRkJkMElzUTBGQlF5eFhRVUZYTEVOQlFVTTdVVUZEYWtjc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4cFFrRkJhVUlzUTBGQlF5eEZRVUZGTEcxQ1FVRnRRaXhEUVVGRExIZENRVUYzUWl4RFFVRkRMR2xDUVVGcFFpeERRVUZETzFGQlF6ZEhMRU5CUVVNc2QwSkJRWGRDTEVOQlFVTXNlVUpCUVhsQ0xFTkJRVU1zUlVGQlJTeHRRa0ZCYlVJc1EwRkJReXgzUWtGQmQwSXNRMEZCUXl4NVFrRkJlVUlzUTBGQlF6dExRVU01U0R0SlFVTkVMRU5CUVVNc2RVSkJRWFZDTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVN1VVRkRhRU1zUTBGQlF5eHJRa0ZCYTBJc1EwRkJReXhsUVVGbExFTkJRVU1zUlVGQlJTdzBRa0ZCTkVJc1EwRkJReXhyUWtGQmEwSXNRMEZCUXl4bFFVRmxMRU5CUVVNN1MwRkRka2M3U1VGRFJDeERRVUZETEhWQ1FVRjFRaXhEUVVGRExGRkJRVkVzUTBGQlF5eEZRVUZGTzFGQlEyeERMRU5CUVVNc2IwSkJRVzlDTEVOQlFVTXNaMEpCUVdkQ0xFTkJRVU1zUlVGQlJTdzRRa0ZCT0VJc1EwRkJReXh2UWtGQmIwSXNRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU12Unp0RFFVTkdMRU5CUVVNN1FVRkZSaXhOUVVGTkxFTkJRVU1zVFVGQlRTeG5Ra0ZCWjBJc1IwRkJjVUlzVFVGQlRTeERRVUZETEVsQlFVa3NRMEZCUXl4blFrRkJaMElzUTBGQlF6dExRVU0xUlN4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGeFFpeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZPMGxCUTNKRExFdEJRVXNzVFVGQlRTeEhRVUZITEVsQlFVa3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhuUWtGQlowSXNRMEZCUXl4SFFVRjVRaXhEUVVGRExFTkJRVU03VVVGRGVFVXNSMEZCUnl4RFFVRkRMRWRCUVhsQ0xFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTTdTVUZGZGtNc1QwRkJUeXhIUVVGSExFTkJRVU03UVVGRFlpeERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRU5CUVVNN1FVRmxWQ3hOUVVGTkxGVkJRVlVzWTBGQll5eERRVUZETEVsQlFXdENPMGxCUXk5RExFOUJRVThzWjBKQlFXZENMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzVVVGQlVTeERRVUZETzBGQlF6VkRMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzWjBKQlFXZENMRU5CUVVNc1NVRkJhMEk3U1VGRGFrUXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4VlFVRlZMRU5CUVVNN1FVRkRPVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4alFVRmpMRU5CUVVNc1NVRkJhMEk3U1VGREwwTXNUMEZCVHl4blFrRkJaMElzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UlFVRlJMRU5CUVVNN1FVRkROVU1zUTBGQlF6dEJRVVZFTEUxQlFVMHNWVUZCVlN4eFFrRkJjVUlzUTBGQlF5eEpRVUZyUWp0SlFVTjBSQ3hQUVVGUExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxIVkNRVUYxUWl4RFFVRkRMR0ZCUVdFc1EwRkJReXhSUVVGUkxFVkJRVVVzUTBGQlF6dEJRVU53Uml4RFFVRkRPMEZCUlVRc1owZEJRV2RITzBGQlEyaEhMRTFCUVUwc1ZVRkJWU3hwUWtGQmFVSXNRMEZCUXl4RlFVRlZMRVZCUVVVc1JVRkJWVHRKUVVOMFJDeEpRVUZKTEVWQlFVVXNRMEZCUXl4TlFVRk5MRXRCUVVzc1JVRkJSU3hEUVVGRExFMUJRVTBzUlVGQlJUdFJRVU16UWl4UFFVRlBMRU5CUVVNc1EwRkJRenRMUVVOV08xTkJRVTA3VVVGRFRDeEpRVUZKTEVsQlFVa3NSMEZCVnl4RFFVRkRMRU5CUVVNN1VVRkRja0lzUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZPMWxCUTJoRExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRMRWxCUVVrc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU5xUXl4UFFVRlBMRWxCUVVrc1IwRkJSeXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETzB0QlEzcENPMEZCUTBnc1EwRkJRenRCUVVWRUxEUkVRVUUwUkR0QlFVTTFSQ3hOUVVGTkxFOUJRVThzVDBGQlR6dEpRVWxzUWpzN096dFBRVWxITzBsQlEwZ3NXVUZCV1N4TlFVRnZRanRSUVVNNVFpeEpRVUZKTEVOQlFVTXNUVUZCVFN4SFFVRkhMRTFCUVUwc1EwRkJRenRSUVVOeVFpeEpRVUZKTEVOQlFVTXNVVUZCVVN4SFFVRkhMR2RDUVVGblFpeERRVUZETEUxQlFVMHNRMEZCZFVJc1EwRkJRenRKUVVOcVJTeERRVUZETzBsQlJVUTdPenM3TzA5QlMwYzdTVUZEU1N4VlFVRlZMRU5CUVVNc1NVRkJWVHRSUVVNeFFpeE5RVUZOTEVsQlFVa3NSMEZGVGl4blFrRkJaMElzUTBGQlF6dFJRVU55UWl4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHTkJRV01zUTBGQlF5eEpRVUZKTEVOQlFVTXNVVUZCVVN4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkRMR05CUVdNc1EwRkJReXhKUVVGSkxFTkJRVU1zVFVGQlRTeERRVUZETzFsQlEzcEdMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU1zYlVKQlFXMUNMRWxCUVVrc1EwRkJReXhOUVVGTkxHdENRVUZyUWl4SlFVRkpMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFJRVU51Uml4UFFVRlBMSEZDUVVGeFFpeERRVUZETEVsQlFVa3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRE8xbEJRM2hETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU1zU1VGQlNTeERRVUZETEUxQlFVMHNRMEZCY1VNc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eERRVUZETzFsQlF6ZEZMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRTFCUVUwc1EwRkJiVUlzUTBGQlF6dEpRVU4yUkN4RFFVRkRPMGxCUlVRN096czdPMDlCUzBjN1NVRkRTU3hOUVVGTkxFTkJRVU1zYlVKQlFXMUNMRU5CUVVNc1VVRkJORUk3VVVGRE5VUXNUMEZCVHl4TlFVRk5MRU5CUVVNc1NVRkJTU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRkZCUVZFc1EwRkJReXhEUVVGRExFTkJRVU03U1VGRGFrUXNRMEZCUXp0SlFVVkVPenRQUVVWSE8wbEJRMGdzVFVGQlRTeExRVUZMTEdsQ1FVRnBRanRSUVVNeFFpeFBRVUZQTEUxQlFVMHNRMEZCUXl4SlFVRkpMRU5CUVVNc1owSkJRV2RDTEVOQlFVTXNRMEZCUXp0SlFVTjJReXhEUVVGRE8wTkJRMFlpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnS2lCaGN5Qm1iQ0JtY205dElDZG1ZWE4wWlhOMExXeGxkbVZ1YzJoMFpXbHVKenRjYm1sdGNHOXlkQ0I3YW1GeWIxZHBibXRzWlhKOUlHWnliMjBnSjJwaGNtOHRkMmx1YTJ4bGNpMTBlWEJsYzJOeWFYQjBKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZOWlhSeWFXTjlJR1p5YjIwZ0owQmtZWFJoWjNKdmF5MXNhV0p5WVhKcFpYTXZkWFJwYkhNdmMzSmpMM1I1Y0dVdFpHVmpiR0Z5WVhScGIyNXpKenRjYm1sdGNHOXlkQ0I3WEc0Z0lHRnplVzF0WlhSeWFXTkVhWE4wWVc1alpTeGNiaUFnWW5KaGRXNUNiR0Z1Y1hWbGRFUnBjM1JoYm1ObExGeHVJQ0JqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYmlBZ2FHRnRiV2x1WjBScGMzUmhibU5sTEZ4dUlDQnJkV3hqZW5sdWMydHBSR2x6ZEdGdVkyVXNYRzRnSUcxalEyOXVibUYxWjJobGVVUnBjM1JoYm1ObExGeHVJQ0J5YjJkdmRFZHZiR1JpWlhKblJHbHpkR0Z1WTJVc1hHNGdJSEoxYzNObGJFUnBjM1JoYm1ObExGeHVJQ0J6YjJ0aGJFUnBjM1JoYm1ObExGeHVJQ0IwWVc1cGJXOTBiMFJwYzNSaGJtTmxMRnh1SUNCdWRXMWxjbWxqUkdsemRHRnVZMlVzWEc0Z0lIUmhibWx0YjNSdlJHbHpkR0Z1WTJWSmJuUkJjbkpoZVN4Y2JuMGdabkp2YlNBbkxpNHZaR2x6ZEdGdVkyVXRiV1YwY21samN5MXRaWFJvYjJSekp6dGNibHh1YVcxd2IzSjBJSHRqWVd4amRXeGhkR1ZGZFdOc2FXUmxZVzVFYVhOMFlXNWpaWDBnWm5KdmJTQW5RR1JoZEdGbmNtOXJMV3hwWW5KaGNtbGxjeTkxZEdsc2N5OXpjbU12ZG1WamRHOXlMVzl3WlhKaGRHbHZibk1uTzF4dWFXMXdiM0owSUVKcGRFRnljbUY1SUdaeWIyMGdKMEJrWVhSaFozSnZheTFzYVdKeVlYSnBaWE12ZFhScGJITXZjM0pqTDJKcGRDMWhjbkpoZVNjN1hHNXBiWEJ2Y25RZ2UxWmxZM1J2Y2l3Z1UzUnlhVzVuUkdsamRHbHZibUZ5ZVgwZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdmRIbHdaUzFrWldOc1lYSmhkR2x2Ym5Nbk8xeHVhVzF3YjNKMElIdHRiVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpMQ0JOYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTjlJR1p5YjIwZ0p5NHVMMjFoWTNKdmJXOXNaV04xYkdVdFpHbHpkR0Z1WTJVdFpuVnVZM1JwYjI1ekp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVk5aWFJ5YVdOelUzVmlhbVZqZEhNc0lFSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMRnh1SUNCVGRISnBibWROWlhSeWFXTnpUbUZ0WlhNc0lGWmxZM1J2Y2sxbGRISnBZM05PWVcxbGN5d2dUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpMQ0JKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsYzMwZ1puSnZiU0FuTGk5amIyNXpkSE1uTzF4dVhHNWNibVY0Y0c5eWRDQmpiMjV6ZENCMlpXTjBiM0pFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nVm1WamRHOXlMQ0I1T2lCV1pXTjBiM0lwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlZtVmpkRzl5VFdWMGNtbGpjMDVoYldWekxrVjFZMnhwWkdWaGJsMDZJR05oYkdOMWJHRjBaVVYxWTJ4cFpHVmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUhOMGNtbHVaMFJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhNNklIc2dXMjVoYldVNklITjBjbWx1WjEwNklDaDRPaUJ6ZEhKcGJtY3NJSGs2SUhOMGNtbHVaeWtnUFQ0Z2JuVnRZbVZ5SUgwZ1BTQjdYRzRnSUZ0VGRISnBibWROWlhSeWFXTnpUbUZ0WlhNdVRHVjJaVzV6YUhSbGFXNWRPaUJtYkM1a2FYTjBZVzVqWlN4Y2JpQWdXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwNklHcGhjbTlYYVc1cmJHVnlMRnh1SUNCYlUzUnlhVzVuVFdWMGNtbGpjMDVoYldWekxrMWhibWhoZEhSaGJsMDZJRzFoYm1oaGRIUmhia1JwYzNSaGJtTmxMRnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2N6b2dleUJiYm1GdFpUb2djM1J5YVc1blhUb2dLSGc2SUVKcGRFRnljbUY1TENCNU9pQkNhWFJCY25KaGVTa2dQVDRnYm5WdFltVnlJSDBnUFNCN1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjEwNklIUmhibWx0YjNSdlJHbHpkR0Z1WTJVc1hHNGdJRnRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYVG9nWkdsalpVUnBjM1JoYm1ObExGeHVJQ0JiUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVFYTjViVzFsZEhKcFkxMDZJR0Z6ZVcxdFpYUnlhV05FYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa0p5WVhWdVFteGhibkYxWlhSZE9pQmljbUYxYmtKc1lXNXhkV1YwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVEYjNOcGJtVmRPaUJqYjNOcGJtVkVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrdDFiR042ZVc1emEybGRPaUJyZFd4amVubHVjMnRwUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZE9pQnRZME52Ym01aGRXZG9aWGxFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMbEp2WjI5MFIyOXNaR0psY21kZE9pQnliMmR2ZEVkdmJHUmlaWEpuUkdsemRHRnVZMlVzWEc0Z0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJ5ZFhOelpXeEVhWE4wWVc1alpTeGNiaUFnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsTnZhMkZzWFRvZ2MyOXJZV3hFYVhOMFlXNWpaU3hjYmlBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa2hoYlcxcGJtZGRPaUJvWVcxdGFXNW5SR2x6ZEdGdVkyVXNYRzRnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NUZkV05zYVdSbFlXNWRPaUJsZFdOc2FXUmxZVzVFYVhOMFlXNWpaU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCcGJuUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITTZJSHNnVzI1aGJXVTZJSE4wY21sdVoxMDZJQ2g0T2lCVmFXNTBNekpCY25KaGVTd2dlVG9nVldsdWRETXlRWEp5WVhrcElEMCtJRzUxYldKbGNpQjlJRDBnZTF4dUlDQmJTVzUwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11VkdGdWFXMXZkRzlKYm5SQmNuSmhlVjA2SUhSaGJtbHRiM1J2UkdsemRHRnVZMlZKYm5SQmNuSmhlU3hjYm4wN1hHNWNibVY0Y0c5eWRDQmpiMjV6ZENCdWRXMWlaWEpFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSek9pQjdJRnR1WVcxbE9pQnpkSEpwYm1kZE9pQW9lRG9nYm5WdFltVnlMQ0I1T2lCdWRXMWlaWElwSUQwK0lHNTFiV0psY2lCOUlEMGdlMXh1SUNCYlRuVnRZbVZ5VFdWMGNtbGpjMDVoYldWekxrNTFiV1Z5YVdORWFYTjBZVzVqWlYwNklHNTFiV1Z5YVdORWFYTjBZVzVqWlN4Y2JuMDdYRzVjYm1WNGNHOXlkQ0JqYjI1emRDQkJkbUZwYkdGaWJHVk5aWFJ5YVdOeklEMGdlMXh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11Vm1WamRHOXlYVG9nZTF4dUlDQWdJRnRXWldOMGIzSk5aWFJ5YVdOelRtRnRaWE11UlhWamJHbGtaV0Z1WFRvZ2RtVmpkRzl5UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdFdaV04wYjNKTlpYUnlhV056VG1GdFpYTXVSWFZqYkdsa1pXRnVYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDZJSHRjYmlBZ0lDQmJVM1J5YVc1blRXVjBjbWxqYzA1aGJXVnpMa3hsZG1WdWMyaDBaV2x1WFRvZ2MzUnlhVzVuUkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdFRkSEpwYm1kTlpYUnlhV056VG1GdFpYTXVUR1YyWlc1emFIUmxhVzVkTEZ4dUlDQWdJRnRUZEhKcGJtZE5aWFJ5YVdOelRtRnRaWE11U21GeWIxZHBibXRzWlhKZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVLWVhKdlYybHVhMnhsY2wwc1hHNGdJQ0FnVzFOMGNtbHVaMDFsZEhKcFkzTk9ZVzFsY3k1TllXNW9ZWFIwWVc1ZE9pQnpkSEpwYm1kRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMU4wY21sdVowMWxkSEpwWTNOT1lXMWxjeTVOWVc1b1lYUjBZVzVkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11UW1sMFFYSnlZWGxkT2lCN1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhUb2dZbWwwUVhKeVlYbEVhWE4wWVc1alpVMWxkSEpwWTNOTlpYUm9iMlJ6VzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxsUmhibWx0YjNSdlhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVSR2xqWlYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1RWFXTmxYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UVhONWJXMWxkSEpwWTEwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1QmMzbHRiV1YwY21salhTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVRbkpoZFc1Q2JHRnVjWFZsZEYwNklHSnBkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRDYVhSQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1Q2NtRjFia0pzWVc1eGRXVjBYU3hjYmlBZ0lDQmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UTI5emFXNWxYVG9nWW1sMFFYSnlZWGxFYVhOMFlXNWpaVTFsZEhKcFkzTk5aWFJvYjJSelcwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa052YzJsdVpWMHNYRzRnSUNBZ1cwSnBkRUZ5Y21GNVRXVjBjbWxqYzA1aGJXVnpMa3QxYkdONmVXNXphMmxkT2lCaWFYUkJjbkpoZVVScGMzUmhibU5sVFdWMGNtbGpjMDFsZEdodlpITmJRbWwwUVhKeVlYbE5aWFJ5YVdOelRtRnRaWE11UzNWc1kzcDVibk5yYVYwc1hHNGdJQ0FnVzBKcGRFRnljbUY1VFdWMGNtbGpjMDVoYldWekxrMWpRMjl1Ym1GMVoyaGxlVjA2SUdKcGRFRnljbUY1UkdsemRHRnVZMlZOWlhSeWFXTnpUV1YwYUc5a2MxdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVOWTBOdmJtNWhkV2RvWlhsZExGeHVJQ0FnSUZ0Q2FYUkJjbkpoZVUxbGRISnBZM05PWVcxbGN5NVNiMmR2ZEVkdmJHUmlaWEpuWFRvZ1ltbDBRWEp5WVhsRWFYTjBZVzVqWlUxbGRISnBZM05OWlhSb2IyUnpXMEpwZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TGxKdloyOTBSMjlzWkdKbGNtZGRMRnh1SUNBZ0lGdENhWFJCY25KaGVVMWxkSEpwWTNOT1lXMWxjeTVTZFhOelpXeGRPaUJpYVhSQmNuSmhlVVJwYzNSaGJtTmxUV1YwY21samMwMWxkR2h2WkhOYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVblZ6YzJWc1hTeGNiaUFnSUNCYlFtbDBRWEp5WVhsTlpYUnlhV056VG1GdFpYTXVVMjlyWVd4ZE9pQmlhWFJCY25KaGVVUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iUW1sMFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVUyOXJZV3hkTEZ4dUlDQjlMRnh1SUNCYlJHbHpkR0Z1WTJWTlpYUnlhV056VTNWaWFtVmpkSE11VFdGamNtOU5iMnhsWTNWc1pWMDZJSHNnTHk4Z2IzQjBhVzl1WVd3Z1lYSm5jeUJ1WldWa1pXUWdabTl5SUcxaFkzSnZiVzlzWldOMWJHVWdablZ1WTNScGIyNXpJSGRvYVdOb0lHbHVhWFJwWVd4cGVtVWdkR2hsYlZ4dUlDQWdJRnROYlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VG1GdFpYTXVTRUZOVFVsT1IxMDZJRzF0UkdsemRHRnVZMlZHZFc1amRHbHZibk5iVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMa2hCVFUxSlRrZGRMRnh1SUNBZ0lGdE5iVVJwYzNSaGJtTmxSblZ1WTNScGIyNXpUbUZ0WlhNdVRFVldSVTVUU0ZSRlNVNWRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVNUlZaRlRsTklWRVZKVGwwc1hHNGdJQ0FnVzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVPUlVWRVRFVk5RVTVPWDFkVlRsTkRTRjA2SUcxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OYlRXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6TGs1RlJVUk1SVTFCVGs1ZlYxVk9VME5JWFN4Y2JpQWdJQ0JiVFcxRWFYTjBZVzVqWlVaMWJtTjBhVzl1YzA1aGJXVnpMazFQVGs5TlJWSmZRMGhGVFVsRFFVeGZSRWxUVkVGT1EwVmRPaUJ0YlVScGMzUmhibU5sUm5WdVkzUnBiMjV6VzAxdFJHbHpkR0Z1WTJWR2RXNWpkR2x2Ym5OT1lXMWxjeTVOVDA1UFRVVlNYME5JUlUxSlEwRk1YMFJKVTFSQlRrTkZYU3hjYmlBZ2ZTeGNiaUFnVzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMazUxYldKbGNsMDZJSHRjYmlBZ0lDQmJUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpMazUxYldWeWFXTkVhWE4wWVc1alpWMDZJRzUxYldKbGNrUnBjM1JoYm1ObFRXVjBjbWxqYzAxbGRHaHZaSE5iVG5WdFltVnlUV1YwY21samMwNWhiV1Z6TGs1MWJXVnlhV05FYVhOMFlXNWpaVjBzWEc0Z0lIMHNYRzRnSUZ0RWFYTjBZVzVqWlUxbGRISnBZM05UZFdKcVpXTjBjeTVKYm5SQmNuSmhlVjA2SUh0Y2JpQWdJQ0JiU1c1MFFYSnlZWGxOWlhSeWFXTnpUbUZ0WlhNdVZHRnVhVzF2ZEc5SmJuUkJjbkpoZVYwNklHbHVkRUZ5Y21GNVJHbHpkR0Z1WTJWTlpYUnlhV056VFdWMGFHOWtjMXRKYm5SQmNuSmhlVTFsZEhKcFkzTk9ZVzFsY3k1VVlXNXBiVzkwYjBsdWRFRnljbUY1WFN4Y2JpQWdmVnh1ZlR0Y2JseHVaWGh3YjNKMElHTnZibk4wSUUxbGRISnBZMVJ2UkdGMFlWUjVjR1U2SUZOMGNtbHVaMFJwWTNScGIyNWhjbmtnUFNCUFltcGxZM1F1YTJWNWN5aEJkbUZwYkdGaWJHVk5aWFJ5YVdOektWeHVJQ0F1Y21Wa2RXTmxLQ2h5WlhRNklGTjBjbWx1WjBScFkzUnBiMjVoY25rc0lHdGxlU2tnUFQ0Z2UxeHVJQ0FnSUdadmNpQW9ZMjl1YzNRZ2RtRnNJRzltSUU5aWFtVmpkQzVyWlhsektFRjJZV2xzWVdKc1pVMWxkSEpwWTNOYmEyVjVJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsYzEwcEtWeHVJQ0FnSUNBZ2NtVjBXM1poYkNCaGN5QkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTmRJRDBnYTJWNU8xeHVYRzRnSUNBZ2NtVjBkWEp1SUhKbGREdGNiaUFnZlN3Z2UzMHBPMXh1WEc1bGVIQnZjblFnZEhsd1pTQkJkbUZwYkdGaWJHVkVZWFJoVkhsd1pYTWdQU0JyWlhsdlppQjBlWEJsYjJZZ1FYWmhhV3hoWW14bFRXVjBjbWxqY3p0Y2JtVjRjRzl5ZENCMGVYQmxJRlpsWTNSdmNrMWxkSEpwWTNNZ1BTQnJaWGx2WmlCMGVYQmxiMllnUVhaaGFXeGhZbXhsVFdWMGNtbGpjMXRFYVhOMFlXNWpaVTFsZEhKcFkzTlRkV0pxWldOMGN5NVdaV04wYjNKZE8xeHVaWGh3YjNKMElIUjVjR1VnVTNSeWFXNW5UV1YwY21samN5QTlJR3RsZVc5bUlIUjVjR1Z2WmlCQmRtRnBiR0ZpYkdWTlpYUnlhV056VzBScGMzUmhibU5sVFdWMGNtbGpjMU4xWW1wbFkzUnpMbE4wY21sdVoxMDdYRzVsZUhCdmNuUWdkSGx3WlNCQ2FYUkJjbkpoZVUxbGRISnBZM01nUFNCclpYbHZaaUIwZVhCbGIyWWdRWFpoYVd4aFlteGxUV1YwY21samMxdEVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1Q2FYUkJjbkpoZVYwN1hHNWxlSEJ2Y25RZ2RIbHdaU0JMYm05M2JrMWxkSEpwWTNNZ1BTQlRkSEpwYm1kTlpYUnlhV056SUh3Z1FtbDBRWEp5WVhsTlpYUnlhV056SUh3Z1ZtVmpkRzl5VFdWMGNtbGpjeUI4WEc0Z0lFMXRSR2x6ZEdGdVkyVkdkVzVqZEdsdmJuTk9ZVzFsY3lCOElFNTFiV0psY2sxbGRISnBZM05PWVcxbGN5QjhJRWx1ZEVGeWNtRjVUV1YwY21samMwNWhiV1Z6TzF4dVhHNWxlSEJ2Y25RZ2RIbHdaU0JXWVd4cFpGUjVjR1Z6SUQxY2JpQWdleUJrWVhSaE9pQnpkSEpwYm1kYlhTd2diV1YwY21sak9pQlRkSEpwYm1kTlpYUnlhV056SUh3Z1RXMUVhWE4wWVc1alpVWjFibU4wYVc5dWMwNWhiV1Z6SUgwZ2ZGeHVJQ0I3SUdSaGRHRTZJRlpsWTNSdmNsdGRMQ0J0WlhSeWFXTTZJRlpsWTNSdmNrMWxkSEpwWTNNZ2ZTQjhYRzRnSUhzZ1pHRjBZVG9nUW1sMFFYSnlZWGxiWFN3Z2JXVjBjbWxqT2lCQ2FYUkJjbkpoZVUxbGRISnBZM01nZlNCOFhHNGdJSHNnWkdGMFlUb2diblZ0WW1WeVcxMHNJRzFsZEhKcFl6b2dUblZ0WW1WeVRXVjBjbWxqYzA1aGJXVnpJSDA3WEc1Y2JtVjRjRzl5ZENCbWRXNWpkR2x2YmlCcGMxTjBjbWx1WjAxbGRISnBZeWh1WVcxbE9pQkxibTkzYmsxbGRISnBZM01wSUh0Y2JpQWdjbVYwZFhKdUlFMWxkSEpwWTFSdlJHRjBZVlI1Y0dWYmJtRnRaVjBnUFQwZ0oxTjBjbWx1WnljN1hHNTlYRzVjYm1WNGNHOXlkQ0JtZFc1amRHbHZiaUJwYzBKcGRFRnljbUY1VFdWMGNtbGpLRzVoYldVNklFdHViM2R1VFdWMGNtbGpjeWtnZTF4dUlDQnlaWFIxY200Z1RXVjBjbWxqVkc5RVlYUmhWSGx3WlZ0dVlXMWxYU0E5UFNBblFtbDBRWEp5WVhrbk8xeHVmVnh1WEc1bGVIQnZjblFnWm5WdVkzUnBiMjRnYVhOV1pXTjBiM0pOWlhSeWFXTW9ibUZ0WlRvZ1MyNXZkMjVOWlhSeWFXTnpLU0I3WEc0Z0lISmxkSFZ5YmlCTlpYUnlhV05VYjBSaGRHRlVlWEJsVzI1aGJXVmRJRDA5SUNkV1pXTjBiM0luTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhWE5OWVdOeWIwMXZiR1ZqZFd4bFRXVjBjbWxqS0c1aGJXVTZJRXR1YjNkdVRXVjBjbWxqY3lrZ2UxeHVJQ0J5WlhSMWNtNGdUV1YwY21salZHOUVZWFJoVkhsd1pWdHVZVzFsWFNBOVBTQkVhWE4wWVc1alpVMWxkSEpwWTNOVGRXSnFaV04wY3k1TllXTnliMDF2YkdWamRXeGxMblJ2VTNSeWFXNW5LQ2s3WEc1OVhHNWNiaThxS2lCTllXNW9ZWFIwWVc0Z1pHbHpkR0Z1WTJVZ1ltVjBkMlZsYmlCMGQyOGdjMlZ4ZFdWdVkyVnpJQ2h0WVhSamFDQXRJREFzSUcxcGMyMWhkR05vSUMwZ01Ta2dibTl5YldGc2FYcGxaQ0JtYjNJZ2JHVnVaM1JvTGlBcUwxeHVaWGh3YjNKMElHWjFibU4wYVc5dUlHMWhibWhoZEhSaGJrUnBjM1JoYm1ObEtITXhPaUJ6ZEhKcGJtY3NJSE15T2lCemRISnBibWNwT2lCdWRXMWlaWElnZTF4dUlDQnBaaUFvY3pFdWJHVnVaM1JvSUNFOVBTQnpNaTVzWlc1bmRHZ3BJSHRjYmlBZ0lDQnlaWFIxY200Z01UdGNiaUFnZlNCbGJITmxJSHRjYmlBZ0lDQnNaWFFnWkdsemREb2diblZ0WW1WeUlEMGdNRHRjYmlBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTVRzZ2FTQThJSE14TG14bGJtZDBhRHNnYVNzcktWeHVJQ0FnSUNBZ1pHbHpkQ0FyUFNCek1WdHBYU0E5UFNCek1sdHBYU0EvSURBZ09pQXhPMXh1SUNBZ0lISmxkSFZ5YmlCa2FYTjBJQzhnY3pFdWJHVnVaM1JvTzF4dUlDQjlYRzU5WEc1Y2JpOHFLaUJWYm1sbWFXVmtJR05zWVhOeklHbHRjR3hsYldWdWRHbHVaeUJrYVdabVpYSmxiblFnYzNSeWFXNW5JRzFsWVhOMWNtVnpMaUFxTDF4dVpYaHdiM0owSUdOc1lYTnpJRTFsWVhOMWNtVWdlMXh1SUNCd2NtOTBaV04wWldRZ2JXVjBhRzlrT2lCTGJtOTNiazFsZEhKcFkzTTdYRzRnSUhCeWIzUmxZM1JsWkNCa1lYUmhWSGx3WlRvZ1FYWmhhV3hoWW14bFJHRjBZVlI1Y0dWek8xeHVYRzRnSUM4cUtseHVJQ0FnS2lCRGNtVmhkR1Z6SUdGdUlHbHVjM1JoYm1ObElHOW1JRTFsWVhOMWNtVWdkMmwwYUNBdVhHNGdJQ0FxSUVCd1lYSmhiU0I3YzNSeWFXNW5mU0J0WlhSb2IyUWdUV1YwYUc5a0lIUnZJR05oYkdOMWJHRjBaU0JrYVhOMFlXNWpaU0JpWlhSM1pXVnVJSE4wY21sdVozTXVYRzRnSUNBcUlFQnRaVzFpWlhKdlppQk5aV0Z6ZFhKbGNseHVJQ0FnS2k5Y2JpQWdZMjl1YzNSeWRXTjBiM0lvYldWMGFHOWtPaUJMYm05M2JrMWxkSEpwWTNNcElIdGNiaUFnSUNCMGFHbHpMbTFsZEdodlpDQTlJRzFsZEdodlpEdGNiaUFnSUNCMGFHbHpMbVJoZEdGVWVYQmxJRDBnVFdWMGNtbGpWRzlFWVhSaFZIbHdaVnR0WlhSb2IyUmRJR0Z6SUVGMllXbHNZV0pzWlVSaGRHRlVlWEJsY3p0Y2JpQWdmVnh1WEc0Z0lDOHFLbHh1SUNBZ0tpQlNaWFIxY201eklHTjFjM1J2YlNCemRISnBibWNnWkdsemRHRnVZMlVnWm5WdVkzUnBiMjRnYzNCbFkybG1hV1ZrTGx4dUlDQWdLaUJBY0dGeVlXMGdlMjl3ZEhOOUlHOXdkSE1nVDNCMGFXOXVjeUJtYjNJZ2RHaGxJRzFsWVhOMWNtVXVJSFZ6WldRZ1ptOXlJRzFoWTNKdmJXOXNaV04xYkdVZ1pHbHpkR0Z1WTJWelhHNGdJQ0FxSUVCeVpYUjFjbTRnZTBScGMzUmhibU5sVFdWMGNtbGpmU0JEWVd4c1ltRmpheUJ2WmlCMGFHVWdiV1ZoYzNWeVpTQmphRzl6Wlc0dVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2NIVmliR2xqSUdkbGRFMWxZWE4xY21Vb2IzQjBjejg2SUdGdWVTazZJRVJwYzNSaGJtTmxUV1YwY21saklIdGNiaUFnSUNCamIyNXpkQ0JrYVdOME9pQjdJRnRyWlhrNklITjBjbWx1WjEwNlhHNGdJQ0FnSUNCN1cydGxlVEk2SUhOMGNtbHVaMTA2SUVScGMzUmhibU5sVFdWMGNtbGpJSHdnS0NodmNIUnpPaUJoYm5rcElEMCtJRVJwYzNSaGJtTmxUV1YwY21saktYMWNiaUFnSUNCOUlEMGdRWFpoYVd4aFlteGxUV1YwY21samN6dGNiaUFnSUNCcFppQW9JV1JwWTNRdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEdocGN5NWtZWFJoVkhsd1pTa2dmSHdnSVdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYwdWFHRnpUM2R1VUhKdmNHVnlkSGtvZEdocGN5NXRaWFJvYjJRcEtWeHVJQ0FnSUNBZ2RHaHliM2NnYm1WM0lFVnljbTl5S0dCVmJtdHViM2R1SUcxbFlYTjFjbVVnSkh0MGFHbHpMbTFsZEdodlpIMGdabTl5SUdSaGRHRWdkSGx3WlNBa2UzUm9hWE11WkdGMFlWUjVjR1Y5WUNrN1hHNGdJQ0FnY21WMGRYSnVJR2x6VFdGamNtOU5iMnhsWTNWc1pVMWxkSEpwWXloMGFHbHpMbTFsZEdodlpDa2dQMXh1SUNBZ0lDQWdLR1JwWTNSYmRHaHBjeTVrWVhSaFZIbHdaVjFiZEdocGN5NXRaWFJvYjJSZElHRnpJQ2dvYjNCMGN6b2dZVzU1S1NBOVBpQkVhWE4wWVc1alpVMWxkSEpwWXlrcEtHOXdkSE1wSURwY2JpQWdJQ0FnSUdScFkzUmJkR2hwY3k1a1lYUmhWSGx3WlYxYmRHaHBjeTV0WlhSb2IyUmRJR0Z6SUVScGMzUmhibU5sVFdWMGNtbGpPMXh1SUNCOVhHNWNiaUFnTHlvcVhHNGdJQ0FxSUZKbGRIVnlibk1nWTNWemRHOXRJSE4wY21sdVp5QmthWE4wWVc1alpTQmllU0IwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsTGx4dUlDQWdLaUJBY0dGeVlXMGdlMEYyWVdsc1lXSnNaVVJoZEdGVWVYQmxjMzBnWkdGMFlWUjVjR1VnVFdWMGNtbGpKM01nWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ5WlhSMWNtNGdlM04wY21sdVoxdGRmU0JOWlhSeWFXTWdibUZ0WlhNZ2QyaHBZMmdnWlhod1pXTjBjeUIwYUdVZ1oybDJaVzRnWkdGMFlTQjBlWEJsWEc0Z0lDQXFJRUJ0WlcxaVpYSnZaaUJOWldGemRYSmxjbHh1SUNBZ0tpOWNiaUFnY0hWaWJHbGpJSE4wWVhScFl5Qm5aWFJOWlhSeWFXTkNlVVJoZEdGVWVYQmxLR1JoZEdGVWVYQmxPaUJCZG1GcGJHRmliR1ZFWVhSaFZIbHdaWE1wT2lCemRISnBibWRiWFNCN1hHNGdJQ0FnY21WMGRYSnVJRTlpYW1WamRDNXJaWGx6S0VGMllXbHNZV0pzWlUxbGRISnBZM05iWkdGMFlWUjVjR1ZkS1R0Y2JpQWdmVnh1WEc0Z0lDOHFLaUJTWlhSMWNtNXpJRzFsZEhKcFl5QnVZVzFsY3lCaGRtRnBiR0ZpYkdVdVhHNGdJQ0FxSUVCdFpXMWlaWEp2WmlCTlpXRnpkWEpsY2x4dUlDQWdLaTljYmlBZ2MzUmhkR2xqSUdkbGRDQmhkbUZwYkdGaWJHVk5aV0Z6ZFhKbGN5Z3BPaUJ6ZEhKcGJtZGJYU0I3WEc0Z0lDQWdjbVYwZFhKdUlFOWlhbVZqZEM1clpYbHpLRUYyWVdsc1lXSnNaVTFsZEhKcFkzTXBPMXh1SUNCOVhHNTlYRzRpWFgwPSJdLCJuYW1lcyI6WyJ2ZWN0b3JEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiRXVjbGlkZWFuIiwic3RyaW5nRGlzdGFuY2VNZXRyaWNzTWV0aG9kcyIsIkxldmVuc2h0ZWluIiwiSmFyb1dpbmtsZXIiLCJNYW5oYXR0YW4iLCJzMSIsInMyIiwibGVuZ3RoIiwiZGlzdCIsImkiLCJiaXRBcnJheURpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJUYW5pbW90byIsIkRpY2UiLCJBc3ltbWV0cmljIiwiQnJhdW5CbGFucXVldCIsIkNvc2luZSIsIkt1bGN6eW5za2kiLCJNY0Nvbm5hdWdoZXkiLCJSb2dvdEdvbGRiZXJnIiwiUnVzc2VsIiwiU29rYWwiLCJIYW1taW5nIiwiaW50QXJyYXlEaXN0YW5jZU1ldHJpY3NNZXRob2RzIiwiVGFuaW1vdG9JbnRBcnJheSIsIm51bWJlckRpc3RhbmNlTWV0cmljc01ldGhvZHMiLCJOdW1lcmljRGlzdGFuY2UiLCJBdmFpbGFibGVNZXRyaWNzIiwiVmVjdG9yIiwiU3RyaW5nIiwiQml0QXJyYXkiLCJNYWNyb01vbGVjdWxlIiwiSEFNTUlORyIsIkxFVkVOU0hURUlOIiwiTkVFRExFTUFOTl9XVU5TQ0giLCJNT05PTUVSX0NIRU1JQ0FMX0RJU1RBTkNFIiwiTnVtYmVyIiwiSW50QXJyYXkiLCJNZXRyaWNUb0RhdGFUeXBlIiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsInJldCIsImtleSIsInZhbCIsIk1lYXN1cmUiLCJjb25zdHJ1Y3RvciIsIm1ldGhvZCIsInRoaXMiLCJkYXRhVHlwZSIsImdldE1lYXN1cmUiLCJvcHRzIiwiZGljdCIsImhhc093blByb3BlcnR5IiwiRXJyb3IiLCJuYW1lIiwidG9TdHJpbmciLCJnZXRNZXRyaWNCeURhdGFUeXBlIiwiYXZhaWxhYmxlTWVhc3VyZXMiXSwic291cmNlUm9vdCI6IiJ9
package/dist/381.js ADDED
@@ -0,0 +1,2 @@
1
+ var peptides;(()=>{"use strict";var e,r,t={2381:(e,r,t)=>{var o=t(6814),n=t(6361);onmessage=async e=>{const{values:r,startIdx:t,endIdx:a,threshold:s,fnName:i,opts:p}=e.data,c=[],l=[],h=[],u=a-t;let f=0;const v=new n.UH(i).getMeasure(p),g=r.length-2-Math.floor(Math.sqrt(-8*t+4*r.length*(r.length-1)-7)/2-.5);let d=g,w=t-r.length*g+Math.floor((g+1)*(g+2)/2);for(;f<u;){const e=(0,o.k)(r[d])||(0,o.k)(r[w])?1:v(r[d],r[w]);1-e>=s&&(c.push(d),l.push(w),h.push(e)),f++,w++,w===r.length&&(d++,w=d+1)}const b=new Int32Array(c),m=new Int32Array(l),y=new Float32Array(h);postMessage({i:b,j:m,distance:y})}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e](a,a.exports,n),a.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[694,831,361],(()=>n(2381)));return n.O(e)},e=[],n.O=(r,t,o,a)=>{if(!t){var s=1/0;for(l=0;l<e.length;l++){for(var[t,o,a]=e[l],i=!0,p=0;p<t.length;p++)(!1&a||s>=a)&&Object.keys(n.O).every((e=>n.O[e](t[p])))?t.splice(p--,1):(i=!1,a<s&&(s=a));if(i){e.splice(l--,1);var c=o();void 0!==c&&(r=c)}}return r}a=a||0;for(var l=e.length;l>0&&e[l-1][2]>a;l--)e[l]=e[l-1];e[l]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={381:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkpeptides=self.webpackChunkpeptides||[],t=r.push.bind(r);r.push=r=>{var[o,a,s]=r;for(var i in a)n.o(a,i)&&(n.m[i]=a[i]);for(s&&s(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([694,831,361].map(n.e,n)).then(r);var a=n.x();peptides=a})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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SVIsRUFBSThFLEVBQVF0RSxPQUFTLEVBQ2xCUixHQUFLLElBQU13RSxHQUFXQSxFQUFZTSxFQUFROUUsS0FBSzZFLEdBRXhELENBSUQsSUFBS0wsRUFBVyxNQUFNLElBQUlRLE1BQU0seURBQ2hDUixFQUFZQSxFQUFVUyxRQUFRLE9BQVEsSUFBSUEsUUFBUSxRQUFTLElBQUlBLFFBQVEsWUFBYSxLQUNwRnpELEVBQW9CMEQsRUFBSVYsQyxXQ2R4QixJQUFJVyxFQUFrQixDQUNyQixJQUFLLEdBZ0JOM0QsRUFBb0I4QixFQUFFdEQsRUFBSSxDQUFDd0QsRUFBU0ksS0FFL0J1QixFQUFnQjNCLElBRWxCaUIsY0FBY2pELEVBQW9CMEQsRUFBSTFELEVBQW9CcUMsRUFBRUwsR0FFOUQsRUFHRCxJQUFJNEIsRUFBcUJDLEtBQTJCLHFCQUFJQSxLQUEyQixzQkFBSyxHQUNwRkMsRUFBNkJGLEVBQW1CckUsS0FBS3dFLEtBQUtILEdBQzlEQSxFQUFtQnJFLEtBdkJDaEIsSUFDbkIsSUFBS3FDLEVBQVVvRCxFQUFhQyxHQUFXMUYsRUFDdkMsSUFBSSxJQUFJMEIsS0FBWStELEVBQ2hCaEUsRUFBb0IwQixFQUFFc0MsRUFBYS9ELEtBQ3JDRCxFQUFvQk8sRUFBRU4sR0FBWStELEVBQVkvRCxJQUloRCxJQURHZ0UsR0FBU0EsRUFBUWpFLEdBQ2RZLEVBQVM1QixRQUNkMkUsRUFBZ0IvQyxFQUFTc0QsT0FBUyxFQUNuQ0osRUFBMkJ2RixFQUFLLEMsS1RuQjdCVixFQUFPbUMsRUFBb0JRLEVBQy9CUixFQUFvQlEsRUFBSSxJQUNoQnlCLFFBQVFDLElBQUksQ0FBQyxJQUFJLElBQUksS0FBS2lDLElBQUluRSxFQUFvQitCLEVBQUcvQixJQUFzQm9FLEtBQUt2RyxHVUR4RixJQUFJNEMsRUFBc0JULEVBQW9CUSxJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvc3RhcnR1cCBjaHVuayBkZXBlbmRlbmNpZXMiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3NwYXJzZS1tYXRyaXgtd29ya2VyLmpzIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL3BlcHRpZGVzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vcGVwdGlkZXMvd2VicGFjay9ydW50aW1lL2ltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly9wZXB0aWRlcy93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbNjk0LDgzMSwzNjFdLm1hcChfX3dlYnBhY2tfcmVxdWlyZV9fLmUsIF9fd2VicGFja19yZXF1aXJlX18pKS50aGVuKG5leHQpO1xufTsiLCJpbXBvcnQgeyBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTWVhc3VyZSB9IGZyb20gJy4uL3R5cGVkLW1ldHJpY3MnO1xub25tZXNzYWdlID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIHRocmVzaG9sZCwgZm5OYW1lLCBvcHRzIH0gPSBldmVudC5kYXRhO1xuICAgIGNvbnN0IGkgPSBbXTtcbiAgICBjb25zdCBqID0gW107XG4gICAgY29uc3QgZGlzdGFuY2VzID0gW107XG4gICAgY29uc3QgY2h1bmtTaXplID0gZW5kSWR4IC0gc3RhcnRJZHg7XG4gICAgLy9jb25zdCBtaSA9IHN0YXJ0Um93O1xuICAgIC8vY29uc3QgbWogPSBzdGFydENvbDtcbiAgICBsZXQgY250ID0gMDtcbiAgICBjb25zdCBkaXN0YW5jZUZuID0gbmV3IE1lYXN1cmUoZm5OYW1lKS5nZXRNZWFzdXJlKG9wdHMpO1xuICAgIGNvbnN0IHN0YXJ0Um93ID0gdmFsdWVzLmxlbmd0aCAtIDIgLSBNYXRoLmZsb29yKE1hdGguc3FydCgtOCAqIHN0YXJ0SWR4ICsgNCAqIHZhbHVlcy5sZW5ndGggKiAodmFsdWVzLmxlbmd0aCAtIDEpIC0gNykgLyAyIC0gMC41KTtcbiAgICBjb25zdCBzdGFydENvbCA9IHN0YXJ0SWR4IC0gdmFsdWVzLmxlbmd0aCAqIHN0YXJ0Um93ICsgTWF0aC5mbG9vcigoc3RhcnRSb3cgKyAxKSAqIChzdGFydFJvdyArIDIpIC8gMik7XG4gICAgbGV0IG1pID0gc3RhcnRSb3c7XG4gICAgbGV0IG1qID0gc3RhcnRDb2w7XG4gICAgd2hpbGUgKGNudCA8IGNodW5rU2l6ZSkge1xuICAgICAgICAvL2NvbnN0IHZhbHVlID0gc2VxMUxpc3RbbWldICYmIHNlcTFMaXN0W21qXSA/IGhhbW1pbmcoc2VxMUxpc3RbbWldLCBzZXExTGlzdFttal0pIDogMDtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAhaXNOaWwodmFsdWVzW21pXSkgJiYgIWlzTmlsKHZhbHVlc1ttal0pID9cbiAgICAgICAgICAgIGRpc3RhbmNlRm4odmFsdWVzW21pXSwgdmFsdWVzW21qXSkgOiAxO1xuICAgICAgICBpZiAoMSAtIHZhbHVlID49IHRocmVzaG9sZCkge1xuICAgICAgICAgICAgaS5wdXNoKG1pKTtcbiAgICAgICAgICAgIGoucHVzaChtaik7XG4gICAgICAgICAgICBkaXN0YW5jZXMucHVzaCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgY250Kys7XG4gICAgICAgIG1qKys7XG4gICAgICAgIGlmIChtaiA9PT0gdmFsdWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgbWkrKztcbiAgICAgICAgICAgIG1qID0gbWkgKyAxO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGlBcnJheSA9IG5ldyBJbnQzMkFycmF5KGkpO1xuICAgIGNvbnN0IGpBcnJheSA9IG5ldyBJbnQzMkFycmF5KGopO1xuICAgIGNvbnN0IGRpc3RhbmNlQXJyYXkgPSBuZXcgRmxvYXQzMkFycmF5KGRpc3RhbmNlcyk7XG4gICAgcG9zdE1lc3NhZ2UoeyBpOiBpQXJyYXksIGo6IGpBcnJheSwgZGlzdGFuY2U6IGRpc3RhbmNlQXJyYXkgfSk7XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzNCaGNuTmxMVzFoZEhKcGVDMTNiM0pyWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUp6Y0dGeWMyVXRiV0YwY21sNExYZHZjbXRsY2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVU1zUzBGQlN5eEZRVUZETEUxQlFVMHNVMEZCVXl4RFFVRkRPMEZCUXpsQ0xFOUJRVThzUlVGQlpTeFBRVUZQTEVWQlFVTXNUVUZCVFN4clFrRkJhMElzUTBGQlF6dEJRVU4yUkN4VFFVRlRMRWRCUVVjc1MwRkJTeXhGUVVGRkxFdEJRVXNzUlVGQlJTeEZRVUZGTzBsQlF6RkNMRTFCUVUwc1JVRkJReXhOUVVGTkxFVkJRVVVzVVVGQlVTeEZRVUZGTEUxQlFVMHNSVUZCUlN4VFFVRlRMRVZCUVVVc1RVRkJUU3hGUVVGRkxFbEJRVWtzUlVGQlF5eEhRVU52UkN4TFFVRkxMRU5CUVVNc1NVRkJTU3hEUVVGRE8wbEJRM2hJTEUxQlFVMHNRMEZCUXl4SFFVRmhMRVZCUVVVc1EwRkJRenRKUVVOMlFpeE5RVUZOTEVOQlFVTXNSMEZCWVN4RlFVRkZMRU5CUVVNN1NVRkRka0lzVFVGQlRTeFRRVUZUTEVkQlFXRXNSVUZCUlN4RFFVRkRPMGxCUXk5Q0xFMUJRVTBzVTBGQlV5eEhRVUZITEUxQlFVMHNSMEZCUnl4UlFVRlJMRU5CUVVNN1NVRkRjRU1zYzBKQlFYTkNPMGxCUTNSQ0xITkNRVUZ6UWp0SlFVTjBRaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEV2l4TlFVRk5MRlZCUVZVc1IwRkJSeXhKUVVGSkxFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4VlFVRlZMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03U1VGRGVFUXNUVUZCVFN4UlFVRlJMRWRCUVVjc1RVRkJUU3hEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkROME1zU1VGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhSUVVGUkxFZEJRVWNzUTBGQlF5eEhRVUZITEUxQlFVMHNRMEZCUXl4TlFVRk5MRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVTndSaXhOUVVGTkxGRkJRVkVzUjBGQlJ5eFJRVUZSTEVkQlFVY3NUVUZCVFN4RFFVRkRMRTFCUVUwc1IwRkJSeXhSUVVGUkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4RFFVRkRMRkZCUVZFc1IwRkJSeXhEUVVGRExFTkJRVU1zUjBGQlJ5eERRVUZETEZGQlFWRXNSMEZCUnl4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU4yUnl4SlFVRkpMRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU03U1VGRGJFSXNTVUZCU1N4RlFVRkZMRWRCUVVjc1VVRkJVU3hEUVVGRE8wbEJRMnhDTEU5QlFVOHNSMEZCUnl4SFFVRkhMRk5CUVZNc1JVRkJSVHRSUVVOMFFpeDFSa0ZCZFVZN1VVRkRka1lzVFVGQlRTeExRVUZMTEVkQlFVY3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0WlFVTjBSQ3hWUVVGVkxFTkJRVU1zVFVGQlRTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRla01zU1VGQlNTeERRVUZETEVkQlFVY3NTMEZCU3l4SlFVRkpMRk5CUVZNc1JVRkJSVHRaUVVNeFFpeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRMWdzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVOWUxGTkJRVk1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNN1UwRkRka0k3VVVGRFJDeEhRVUZITEVWQlFVVXNRMEZCUXp0UlFVTk9MRVZCUVVVc1JVRkJSU3hEUVVGRE8xRkJRMHdzU1VGQlNTeEZRVUZGTEV0QlFVc3NUVUZCVFN4RFFVRkRMRTFCUVUwc1JVRkJSVHRaUVVONFFpeEZRVUZGTEVWQlFVVXNRMEZCUXp0WlFVTk1MRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFOQlEySTdTMEZEUmp0SlFVVkVMRTFCUVUwc1RVRkJUU3hIUVVGSExFbEJRVWtzVlVGQlZTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUTJwRExFMUJRVTBzVFVGQlRTeEhRVUZITEVsQlFVa3NWVUZCVlN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8wbEJRMnBETEUxQlFVMHNZVUZCWVN4SFFVRkhMRWxCUVVrc1dVRkJXU3hEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBsQlEyeEVMRmRCUVZjc1EwRkJReXhGUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNRMEZCUXl4RlFVRkZMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzWVVGQllTeEZRVUZETEVOQlFVTXNRMEZCUXp0QlFVTXZSQ3hEUVVGRExFTkJRVU1pTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnZTJselRtbHNmU0JtY205dElDY3VMM1YwYVd4ekp6dGNibWx0Y0c5eWRDQjdTMjV2ZDI1TlpYUnlhV056TENCTlpXRnpkWEpsZlNCbWNtOXRJQ2N1TGk5MGVYQmxaQzF0WlhSeWFXTnpKenRjYm05dWJXVnpjMkZuWlNBOUlHRnplVzVqSUNobGRtVnVkQ2tnUFQ0Z2UxeHVJQ0JqYjI1emRDQjdkbUZzZFdWekxDQnpkR0Z5ZEVsa2VDd2daVzVrU1dSNExDQjBhSEpsYzJodmJHUXNJR1p1VG1GdFpTd2diM0IwYzMwNlhHNGdJQ0FnZTNaaGJIVmxjem9nYzNSeWFXNW5XMTBzSUhOMFlYSjBTV1I0T2lCdWRXMWlaWElzSUdWdVpFbGtlRG9nYm5WdFltVnlMQ0IwYUhKbGMyaHZiR1E2SUc1MWJXSmxjaXdnWm01T1lXMWxPaUJMYm05M2JrMWxkSEpwWTNNc0lHOXdkSE02SUdGdWVYMGdQU0JsZG1WdWRDNWtZWFJoTzF4dUlDQmpiMjV6ZENCcE9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCcU9pQnVkVzFpWlhKYlhTQTlJRnRkTzF4dUlDQmpiMjV6ZENCa2FYTjBZVzVqWlhNNklHNTFiV0psY2x0ZElEMGdXMTA3WEc0Z0lHTnZibk4wSUdOb2RXNXJVMmw2WlNBOUlHVnVaRWxrZUNBdElITjBZWEowU1dSNE8xeHVJQ0F2TDJOdmJuTjBJRzFwSUQwZ2MzUmhjblJTYjNjN1hHNGdJQzh2WTI5dWMzUWdiV29nUFNCemRHRnlkRU52YkR0Y2JpQWdiR1YwSUdOdWRDQTlJREE3WEc0Z0lHTnZibk4wSUdScGMzUmhibU5sUm00Z1BTQnVaWGNnVFdWaGMzVnlaU2htYms1aGJXVXBMbWRsZEUxbFlYTjFjbVVvYjNCMGN5azdYRzRnSUdOdmJuTjBJSE4wWVhKMFVtOTNJRDBnZG1Gc2RXVnpMbXhsYm1kMGFDQXRJRElnTFNCTllYUm9MbVpzYjI5eUtGeHVJQ0FnSUUxaGRHZ3VjM0Z5ZENndE9DQXFJSE4wWVhKMFNXUjRJQ3NnTkNBcUlIWmhiSFZsY3k1c1pXNW5kR2dnS2lBb2RtRnNkV1Z6TG14bGJtZDBhQ0F0SURFcElDMGdOeWtnTHlBeUlDMGdNQzQxS1R0Y2JpQWdZMjl1YzNRZ2MzUmhjblJEYjJ3Z1BTQnpkR0Z5ZEVsa2VDQXRJSFpoYkhWbGN5NXNaVzVuZEdnZ0tpQnpkR0Z5ZEZKdmR5QXJJRTFoZEdndVpteHZiM0lvS0hOMFlYSjBVbTkzSUNzZ01Ta2dLaUFvYzNSaGNuUlNiM2NnS3lBeUtTQXZJRElwTzF4dUlDQnNaWFFnYldrZ1BTQnpkR0Z5ZEZKdmR6dGNiaUFnYkdWMElHMXFJRDBnYzNSaGNuUkRiMnc3WEc0Z0lIZG9hV3hsSUNoamJuUWdQQ0JqYUhWdWExTnBlbVVwSUh0Y2JpQWdJQ0F2TDJOdmJuTjBJSFpoYkhWbElEMGdjMlZ4TVV4cGMzUmJiV2xkSUNZbUlITmxjVEZNYVhOMFcyMXFYU0EvSUdoaGJXMXBibWNvYzJWeE1VeHBjM1JiYldsZExDQnpaWEV4VEdsemRGdHRhbDBwSURvZ01EdGNiaUFnSUNCamIyNXpkQ0IyWVd4MVpTQTlJQ0ZwYzA1cGJDaDJZV3gxWlhOYmJXbGRLU0FtSmlBaGFYTk9hV3dvZG1Gc2RXVnpXMjFxWFNrZ1AxeHVJQ0FnSUNBZ1pHbHpkR0Z1WTJWR2JpaDJZV3gxWlhOYmJXbGRMQ0IyWVd4MVpYTmJiV3BkS1NBNklERTdYRzRnSUNBZ2FXWWdLREVnTFNCMllXeDFaU0ErUFNCMGFISmxjMmh2YkdRcElIdGNiaUFnSUNBZ0lHa3VjSFZ6YUNodGFTazdYRzRnSUNBZ0lDQnFMbkIxYzJnb2JXb3BPMXh1SUNBZ0lDQWdaR2x6ZEdGdVkyVnpMbkIxYzJnb2RtRnNkV1VwTzF4dUlDQWdJSDFjYmlBZ0lDQmpiblFyS3p0Y2JpQWdJQ0J0YWlzck8xeHVJQ0FnSUdsbUlDaHRhaUE5UFQwZ2RtRnNkV1Z6TG14bGJtZDBhQ2tnZTF4dUlDQWdJQ0FnYldrckt6dGNiaUFnSUNBZ0lHMXFJRDBnYldrZ0t5QXhPMXh1SUNBZ0lIMWNiaUFnZlZ4dVhHNGdJR052Ym5OMElHbEJjbkpoZVNBOUlHNWxkeUJKYm5Rek1rRnljbUY1S0drcE8xeHVJQ0JqYjI1emRDQnFRWEp5WVhrZ1BTQnVaWGNnU1c1ME16SkJjbkpoZVNocUtUdGNiaUFnWTI5dWMzUWdaR2x6ZEdGdVkyVkJjbkpoZVNBOUlHNWxkeUJHYkc5aGRETXlRWEp5WVhrb1pHbHpkR0Z1WTJWektUdGNiaUFnY0c5emRFMWxjM05oWjJVb2UyazZJR2xCY25KaGVTd2dham9nYWtGeWNtRjVMQ0JrYVhOMFlXNWpaVG9nWkdsemRHRnVZMlZCY25KaGVYMHBPMXh1ZlRzaVhYMD0iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNjk0LDgzMSwzNjFdLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXygyMzgxKSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiLy8gbm8gYmFzZVVSSVxuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQzODE6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdID0gc2VsZltcIndlYnBhY2tDaHVua3BlcHRpZGVzXCJdIHx8IFtdO1xudmFyIHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uID0gY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2guYmluZChjaHVua0xvYWRpbmdHbG9iYWwpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSBpbnN0YWxsQ2h1bms7XG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3QiLCIvLyBydW4gc3RhcnR1cFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLngoKTtcbiJdLCJuYW1lcyI6WyJkZWZlcnJlZCIsIm5leHQiLCJvbm1lc3NhZ2UiLCJhc3luYyIsImV2ZW50IiwidmFsdWVzIiwic3RhcnRJZHgiLCJlbmRJZHgiLCJ0aHJlc2hvbGQiLCJmbk5hbWUiLCJvcHRzIiwiZGF0YSIsImkiLCJqIiwiZGlzdGFuY2VzIiwiY2h1bmtTaXplIiwiY250IiwiZGlzdGFuY2VGbiIsImdldE1lYXN1cmUiLCJzdGFydFJvdyIsImxlbmd0aCIsIk1hdGgiLCJmbG9vciIsInNxcnQiLCJtaSIsIm1qIiwidmFsdWUiLCJwdXNoIiwiaUFycmF5IiwiSW50MzJBcnJheSIsImpBcnJheSIsImRpc3RhbmNlQXJyYXkiLCJGbG9hdDMyQXJyYXkiLCJwb3N0TWVzc2FnZSIsImRpc3RhbmNlIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJtIiwieCIsIl9fd2VicGFja19leHBvcnRzX18iLCJPIiwicmVzdWx0IiwiY2h1bmtJZHMiLCJmbiIsInByaW9yaXR5Iiwibm90RnVsZmlsbGVkIiwiSW5maW5pdHkiLCJmdWxmaWxsZWQiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImUiLCJjaHVua0lkIiwiUHJvbWlzZSIsImFsbCIsInJlZHVjZSIsInByb21pc2VzIiwidSIsImciLCJnbG9iYWxUaGlzIiwidGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsInNjcmlwdFVybCIsImltcG9ydFNjcmlwdHMiLCJsb2NhdGlvbiIsImRvY3VtZW50IiwiY3VycmVudFNjcmlwdCIsInNyYyIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsIkVycm9yIiwicmVwbGFjZSIsInAiLCJpbnN0YWxsZWRDaHVua3MiLCJjaHVua0xvYWRpbmdHbG9iYWwiLCJzZWxmIiwicGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24iLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwicG9wIiwibWFwIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=