diff --git a/dist/bulma-calendar.js b/dist/bulma-calendar.js index b2cbce6..391b60a 100644 --- a/dist/bulma-calendar.js +++ b/dist/bulma-calendar.js @@ -1,5 +1,8 @@ -var bulmaCalendar = (function () { -'use strict'; +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define('bulmaCalendar', factory) : + (global.bulmaCalendar = factory()); +}(this, (function () { 'use strict'; var datepicker_langs = { en: { @@ -767,4 +770,4 @@ class datePicker { return datePicker; -}()); +}))); diff --git a/dist/bulma-calendar.min.js b/dist/bulma-calendar.min.js index 17b9816..49035bb 100644 --- a/dist/bulma-calendar.min.js +++ b/dist/bulma-calendar.min.js @@ -1,4 +1,4 @@ -var bulmaCalendar=function(){'use strict';var a=Math.floor,b={en:{weekStart:1,previousMonth:'Previous Month',nextMonth:'Next Month',months:['January','February','March','April','May','June','July','August','September','October','November','December'],monthsShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],weekdays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],weekdaysShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat']},ru:{weekStart:1,previousMonth:'\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446',nextMonth:'\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446',months:['\u042F\u043D\u0432\u0430\u0440\u044C','\u0424\u0435\u0432\u0440\u0430\u043B\u044C','\u041C\u0430\u0440\u0442','\u0410\u043F\u0440\u0435\u043B\u044C','\u041C\u0430\u0439','\u0418\u044E\u043D\u044C','\u0418\u044E\u043B\u044C','\u0410\u0432\u0433\u0443\u0441\u0442','\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C','\u041E\u043A\u0442\u044F\u0431\u0440\u044C','\u041D\u043E\u044F\u0431\u0440\u044C','\u0414\u0435\u043A\u0430\u0431\u0440\u044C'],monthsShort:['\u042F\u043D\u0432','\u0424\u0435\u0432','\u041C\u0430\u0440','\u0410\u043F\u0440','\u041C\u0430\u0439','\u0418\u044E\u043D','\u0418\u044E\u043B','\u0410\u0432\u0433','\u0421\u0435\u043D','\u041E\u043A\u0442','\u041D\u043E\u044F','\u0414\u0435\u043A'],weekdays:['\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435','\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A','\u0412\u0442\u043E\u0440\u043D\u0438\u043A','\u0421\u0440\u0435\u0434\u0430','\u0427\u0435\u0442\u0432\u0435\u0440\u0433','\u041F\u044F\u0442\u043D\u0438\u0446\u0430','\u0421\u0443\u0431\u0431\u043E\u0442\u0430'],weekdaysShort:['\u0412\u0441','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431']},fr:{weekStart:1,previousMonth:'Mois pr\xE9c\xE9dent',nextMonth:'Mois suivant',months:['Janvier','F\xE9vrier','Mars','Avril','Mai','Juin','Juillet','Ao\xFBt','Septembre','Octobre','Novembre','D\xE9cembre'],monthsShort:['Jan','F\xE9v','Mar','Avr','Mai','Juin','Juil','Auo','Sep','Oct','Nov','D\xE9c'],weekdays:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],weekdaysShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam']},de:{weekStart:1,previousMonth:'Vorheriger Monat',nextMonth:'N\xE4chster Monat',months:['Januar','Februar','M\xE4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],monthsShort:['Jan','Febr','M\xE4rz','Apr','Mai','Juni','Juli','Aug','Sept','Okt','Nov','Dez'],weekdays:['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],weekdaysShort:['So','Mo','Di','Mi','Do','Fr','Sa']},tr:{weekStart:1,previousMonth:'\xD6nceki Ay',nextMonth:'Gelecek Ay',months:['Ocak','\u015Eubat','Mart','Nisan','May\u0131s','Haziran','Temmuz','A\u011Fustos','Eyl\xFCl','Ekim','Kas\u0131m','Aral\u0131k'],monthsShort:['Oca','\u015Eub','Mar','Nis','May','Haz','Tem','A\u011Fu','Eyl','Eki','Kas','Ara'],weekdays:['Pazar','Pazartesi','Sal\u0131','\xC7ar\u015Famba','Per\u015Fembe','Cuma','Cumartesi'],weekdaysShort:['Paz','Pzt','Sal','\xC7ar','Per','Cum','Cmt']},it:{weekStart:1,previousMonth:'Mese Precedente',nextMonth:'Prossimo Mese',months:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],monthsShort:['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],weekdays:['Domenica','Luned\xEC','Marted\xEC','Mercoled\xEC','Gioved\xEC','Venerd\xEC','Sabato'],weekdaysShort:['Dom','Lun','Mar','Mer','Gio','Ven','Sab']},th:{weekStart:1,previousMonth:'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32',nextMonth:'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E16\u0E31\u0E14\u0E44\u0E1B',months:['\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21','\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C','\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21','\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19','\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21','\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19','\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21','\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21','\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19','\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21','\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19','\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21'],monthsShort:['\u0E21.\u0E04.','\u0E01.\u0E1E.','\u0E21\u0E35.\u0E04.','\u0E40\u0E21.\u0E22.','\u0E1E.\u0E04.','\u0E21\u0E34.\u0E22.','\u0E01.\u0E04.','\u0E2A.\u0E04.','\u0E01.\u0E22.','\u0E15.\u0E04.','\u0E1E.\u0E22.','\u0E18.\u0E04.'],weekdays:['\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C','\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C','\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23','\u0E1E\u0E38\u0E18','\u0E1E\u0E24\u0E2B\u0E31\u0E2A\u0E1A\u0E14\u0E35','\u0E28\u0E38\u0E01\u0E23\u0E4C','\u0E40\u0E2A\u0E32\u0E23\u0E4C'],weekdaysShort:['\u0E2D\u0E32.','\u0E08.','\u0E2D.','\u0E1E.','\u0E1E\u0E24.','\u0E28.','\u0E2A.']},hr:{weekStart:2,previousMonth:'Pro\u0161li mjesec',nextMonth:'Slijede\u0107i mjesec',months:['sije\u010Danj','velja\u010Da','o\u017Eujak','travanj','svibanj','lipanj','srpanj','kolovoz','rujan','listopad','studeni','prosinac'],monthsShort:['sij','velj','o\u017Eu','tra','svi','lip','srp','kol','ruj','lis','stu','pro'],weekdays:['nedjelja','ponedjeljak','utorak','srijeda','\u010Detvrtak','petak','subota'],weekdaysShort:['ned','pon','uto','sri','\u010Det','pet','sub']},sr:{weekStart:2,previousMonth:'Pro\u0161li mesec',nextMonth:'Slede\u0107i mesec',months:['januar','februar','mart','april','maj','jun','jul','avgust','septembar','oktobar','novembar','decembar'],monthsShort:['jan','feb','mar','apr','maj','jun','jul','avg','sep','okt','nov','dec'],weekdays:['nedelja','ponedeljak','utorak','sreda','\u010Detvrtak','petak','subota'],weekdaysShort:['ned','pon','uto','sre','\u010Det','pet','sub']},"zh-cn":{weekStart:1,previousMonth:'\u4E0A\u4E2A\u6708',nextMonth:'\u4E0B\u4E2A\u6708',months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],monthsShort:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],weekdays:['\u661F\u671F\u5929','\u661F\u671F\u4E00','\u661F\u671F\u4E8C','\u661F\u671F\u4E09','\u661F\u671F\u56DB','\u661F\u671F\u4E94','\u661F\u671F\u516D'],weekdaysShort:['\u5468\u65E5','\u5468\u4E00','\u5468\u4E8C','\u5468\u4E09','\u5468\u56DB','\u5468\u4E94','\u5468\u516D']},es:{weekStart:1,previousMonth:'Mes anterior',nextMonth:'Pr\xF3ximo mes',months:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],monthsShort:['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],weekdays:['Domingo','Lunes','Martes','Mi\xE9rcoles','Jueves','Viernes','S\xE1bado'],weekdaysShort:['Dom','Lun','Mar','Mie','Jue','Vie','Sab']}};return class{constructor(a,b={}){if(this._clickEvent='ontouchstart'in window?'touchstart':'click',this.element='string'==typeof a?document.querySelector(a):a,!this.element)throw new Error('An invalid selector or non-DOM node has been provided.');this.options=Object.assign({},{startDate:new Date,minDate:null,maxDate:null,dateFormat:'yyyy-mm-dd',lang:'en',overlay:!1,closeOnOverlayClick:!0,closeOnSelect:!0,onSelect:null,onOpen:null,onClose:null,onRender:null},b),this._init()}_init(){return this._id='datePicker'+new Date().getTime()+a(9999*Math.random()),this.lang='undefined'==typeof b[this.lang]?'en':this.lang,this.element.value&&(this.options.startDate=this._parseDate(this.element.value)),this.options.startDate=this._parseDate(this._getFormatedDate(this.options.startDate,this.options.dateFormat)),this.options.minDate&&(this.options.minDate=this._parseDate(this._getFormatedDate(this.options.minDate,this.options.dateFormat))),this.options.maxDate&&(this.options.maxDate=this._parseDate(this._getFormatedDate(this.options.maxDate,this.options.dateFormat))),this.month=this.options.startDate.getMonth(),this.year=this.options.startDate.getFullYear(),this.day=this.options.startDate.getDate(),this.open=!1,this._build(),this._bindEvents(),this}_build(){const a=` +(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?module.exports=b():'function'==typeof define&&define.amd?define('bulmaCalendar',b):a.bulmaCalendar=b()})(this,function(){'use strict';var a=Math.floor,b={en:{weekStart:1,previousMonth:'Previous Month',nextMonth:'Next Month',months:['January','February','March','April','May','June','July','August','September','October','November','December'],monthsShort:['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],weekdays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],weekdaysShort:['Sun','Mon','Tue','Wed','Thu','Fri','Sat']},ru:{weekStart:1,previousMonth:'\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446',nextMonth:'\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0438\u0439 \u043C\u0435\u0441\u044F\u0446',months:['\u042F\u043D\u0432\u0430\u0440\u044C','\u0424\u0435\u0432\u0440\u0430\u043B\u044C','\u041C\u0430\u0440\u0442','\u0410\u043F\u0440\u0435\u043B\u044C','\u041C\u0430\u0439','\u0418\u044E\u043D\u044C','\u0418\u044E\u043B\u044C','\u0410\u0432\u0433\u0443\u0441\u0442','\u0421\u0435\u043D\u0442\u044F\u0431\u0440\u044C','\u041E\u043A\u0442\u044F\u0431\u0440\u044C','\u041D\u043E\u044F\u0431\u0440\u044C','\u0414\u0435\u043A\u0430\u0431\u0440\u044C'],monthsShort:['\u042F\u043D\u0432','\u0424\u0435\u0432','\u041C\u0430\u0440','\u0410\u043F\u0440','\u041C\u0430\u0439','\u0418\u044E\u043D','\u0418\u044E\u043B','\u0410\u0432\u0433','\u0421\u0435\u043D','\u041E\u043A\u0442','\u041D\u043E\u044F','\u0414\u0435\u043A'],weekdays:['\u0412\u043E\u0441\u043A\u0440\u0435\u0441\u0435\u043D\u044C\u0435','\u041F\u043E\u043D\u0435\u0434\u0435\u043B\u044C\u043D\u0438\u043A','\u0412\u0442\u043E\u0440\u043D\u0438\u043A','\u0421\u0440\u0435\u0434\u0430','\u0427\u0435\u0442\u0432\u0435\u0440\u0433','\u041F\u044F\u0442\u043D\u0438\u0446\u0430','\u0421\u0443\u0431\u0431\u043E\u0442\u0430'],weekdaysShort:['\u0412\u0441','\u041F\u043D','\u0412\u0442','\u0421\u0440','\u0427\u0442','\u041F\u0442','\u0421\u0431']},fr:{weekStart:1,previousMonth:'Mois pr\xE9c\xE9dent',nextMonth:'Mois suivant',months:['Janvier','F\xE9vrier','Mars','Avril','Mai','Juin','Juillet','Ao\xFBt','Septembre','Octobre','Novembre','D\xE9cembre'],monthsShort:['Jan','F\xE9v','Mar','Avr','Mai','Juin','Juil','Auo','Sep','Oct','Nov','D\xE9c'],weekdays:['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],weekdaysShort:['Dim','Lun','Mar','Mer','Jeu','Ven','Sam']},de:{weekStart:1,previousMonth:'Vorheriger Monat',nextMonth:'N\xE4chster Monat',months:['Januar','Februar','M\xE4rz','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'],monthsShort:['Jan','Febr','M\xE4rz','Apr','Mai','Juni','Juli','Aug','Sept','Okt','Nov','Dez'],weekdays:['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'],weekdaysShort:['So','Mo','Di','Mi','Do','Fr','Sa']},tr:{weekStart:1,previousMonth:'\xD6nceki Ay',nextMonth:'Gelecek Ay',months:['Ocak','\u015Eubat','Mart','Nisan','May\u0131s','Haziran','Temmuz','A\u011Fustos','Eyl\xFCl','Ekim','Kas\u0131m','Aral\u0131k'],monthsShort:['Oca','\u015Eub','Mar','Nis','May','Haz','Tem','A\u011Fu','Eyl','Eki','Kas','Ara'],weekdays:['Pazar','Pazartesi','Sal\u0131','\xC7ar\u015Famba','Per\u015Fembe','Cuma','Cumartesi'],weekdaysShort:['Paz','Pzt','Sal','\xC7ar','Per','Cum','Cmt']},it:{weekStart:1,previousMonth:'Mese Precedente',nextMonth:'Prossimo Mese',months:['Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre'],monthsShort:['Gen','Feb','Mar','Apr','Mag','Giu','Lug','Ago','Set','Ott','Nov','Dic'],weekdays:['Domenica','Luned\xEC','Marted\xEC','Mercoled\xEC','Gioved\xEC','Venerd\xEC','Sabato'],weekdaysShort:['Dom','Lun','Mar','Mer','Gio','Ven','Sab']},th:{weekStart:1,previousMonth:'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32',nextMonth:'\u0E40\u0E14\u0E37\u0E2D\u0E19\u0E16\u0E31\u0E14\u0E44\u0E1B',months:['\u0E21\u0E01\u0E23\u0E32\u0E04\u0E21','\u0E01\u0E38\u0E21\u0E20\u0E32\u0E1E\u0E31\u0E19\u0E18\u0E4C','\u0E21\u0E35\u0E19\u0E32\u0E04\u0E21','\u0E40\u0E21\u0E29\u0E32\u0E22\u0E19','\u0E1E\u0E24\u0E29\u0E20\u0E32\u0E04\u0E21','\u0E21\u0E34\u0E16\u0E38\u0E19\u0E32\u0E22\u0E19','\u0E01\u0E23\u0E01\u0E0E\u0E32\u0E04\u0E21','\u0E2A\u0E34\u0E07\u0E2B\u0E32\u0E04\u0E21','\u0E01\u0E31\u0E19\u0E22\u0E32\u0E22\u0E19','\u0E15\u0E38\u0E25\u0E32\u0E04\u0E21','\u0E1E\u0E24\u0E28\u0E08\u0E34\u0E01\u0E32\u0E22\u0E19','\u0E18\u0E31\u0E19\u0E27\u0E32\u0E04\u0E21'],monthsShort:['\u0E21.\u0E04.','\u0E01.\u0E1E.','\u0E21\u0E35.\u0E04.','\u0E40\u0E21.\u0E22.','\u0E1E.\u0E04.','\u0E21\u0E34.\u0E22.','\u0E01.\u0E04.','\u0E2A.\u0E04.','\u0E01.\u0E22.','\u0E15.\u0E04.','\u0E1E.\u0E22.','\u0E18.\u0E04.'],weekdays:['\u0E2D\u0E32\u0E17\u0E34\u0E15\u0E22\u0E4C','\u0E08\u0E31\u0E19\u0E17\u0E23\u0E4C','\u0E2D\u0E31\u0E07\u0E04\u0E32\u0E23','\u0E1E\u0E38\u0E18','\u0E1E\u0E24\u0E2B\u0E31\u0E2A\u0E1A\u0E14\u0E35','\u0E28\u0E38\u0E01\u0E23\u0E4C','\u0E40\u0E2A\u0E32\u0E23\u0E4C'],weekdaysShort:['\u0E2D\u0E32.','\u0E08.','\u0E2D.','\u0E1E.','\u0E1E\u0E24.','\u0E28.','\u0E2A.']},hr:{weekStart:2,previousMonth:'Pro\u0161li mjesec',nextMonth:'Slijede\u0107i mjesec',months:['sije\u010Danj','velja\u010Da','o\u017Eujak','travanj','svibanj','lipanj','srpanj','kolovoz','rujan','listopad','studeni','prosinac'],monthsShort:['sij','velj','o\u017Eu','tra','svi','lip','srp','kol','ruj','lis','stu','pro'],weekdays:['nedjelja','ponedjeljak','utorak','srijeda','\u010Detvrtak','petak','subota'],weekdaysShort:['ned','pon','uto','sri','\u010Det','pet','sub']},sr:{weekStart:2,previousMonth:'Pro\u0161li mesec',nextMonth:'Slede\u0107i mesec',months:['januar','februar','mart','april','maj','jun','jul','avgust','septembar','oktobar','novembar','decembar'],monthsShort:['jan','feb','mar','apr','maj','jun','jul','avg','sep','okt','nov','dec'],weekdays:['nedelja','ponedeljak','utorak','sreda','\u010Detvrtak','petak','subota'],weekdaysShort:['ned','pon','uto','sre','\u010Det','pet','sub']},"zh-cn":{weekStart:1,previousMonth:'\u4E0A\u4E2A\u6708',nextMonth:'\u4E0B\u4E2A\u6708',months:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],monthsShort:['\u4E00\u6708','\u4E8C\u6708','\u4E09\u6708','\u56DB\u6708','\u4E94\u6708','\u516D\u6708','\u4E03\u6708','\u516B\u6708','\u4E5D\u6708','\u5341\u6708','\u5341\u4E00\u6708','\u5341\u4E8C\u6708'],weekdays:['\u661F\u671F\u5929','\u661F\u671F\u4E00','\u661F\u671F\u4E8C','\u661F\u671F\u4E09','\u661F\u671F\u56DB','\u661F\u671F\u4E94','\u661F\u671F\u516D'],weekdaysShort:['\u5468\u65E5','\u5468\u4E00','\u5468\u4E8C','\u5468\u4E09','\u5468\u56DB','\u5468\u4E94','\u5468\u516D']},es:{weekStart:1,previousMonth:'Mes anterior',nextMonth:'Pr\xF3ximo mes',months:['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'],monthsShort:['Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic'],weekdays:['Domingo','Lunes','Martes','Mi\xE9rcoles','Jueves','Viernes','S\xE1bado'],weekdaysShort:['Dom','Lun','Mar','Mie','Jue','Vie','Sab']}};return class{constructor(a,b={}){if(this._clickEvent='ontouchstart'in window?'touchstart':'click',this.element='string'==typeof a?document.querySelector(a):a,!this.element)throw new Error('An invalid selector or non-DOM node has been provided.');this.options=Object.assign({},{startDate:new Date,minDate:null,maxDate:null,dateFormat:'yyyy-mm-dd',lang:'en',overlay:!1,closeOnOverlayClick:!0,closeOnSelect:!0,onSelect:null,onOpen:null,onClose:null,onRender:null},b),this._init()}_init(){return this._id='datePicker'+new Date().getTime()+a(9999*Math.random()),this.lang='undefined'==typeof b[this.lang]?'en':this.lang,this.element.value&&(this.options.startDate=this._parseDate(this.element.value)),this.options.startDate=this._parseDate(this._getFormatedDate(this.options.startDate,this.options.dateFormat)),this.options.minDate&&(this.options.minDate=this._parseDate(this._getFormatedDate(this.options.minDate,this.options.dateFormat))),this.options.maxDate&&(this.options.maxDate=this._parseDate(this._getFormatedDate(this.options.maxDate,this.options.dateFormat))),this.month=this.options.startDate.getMonth(),this.year=this.options.startDate.getFullYear(),this.day=this.options.startDate.getDate(),this.open=!1,this._build(),this._bindEvents(),this}_build(){const a=`
${this.options.overlay?'':''}
@@ -49,5 +49,5 @@ var bulmaCalendar=function(){'use strict';var a=Math.floor,b={en:{weekStart:1,pr
- `}_renderDays(){const a=new Date;let c='',d=this._getDaysInMonth(this.year,this.month),e=new Date(this.year,this.month,1).getDay();'undefined'!=typeof this.options.onRender&&null!=this.options.onRender&&this.options.onRender&&this.options.onRender(this),0e&&(e+=7));let f=d+e,g=f;for(;7=d+e,o=!1;i.setHours(0,0,0,0),j||(k=!1,l=!1),(i.getMonth()!==this.month||this.options.minDate&&(i.getTime()this.options.maxDate.getTime()))&&(o=!0),c+=this._renderDay(i.getDate(),this.month,this.year,j,m,o,n,!1,k,l)}this.datePickerCalendarBody.insertAdjacentHTML('beforeend',c),this.datePickerCalendarDays=this.datePickerCalendarBody.querySelectorAll('.calendar-date'),this._bindDaysEvents()}prevMonth(){this.month-=1,this._refreshCalendar()}_disablePrevMonth(){this.datePickerCalendarNavPreviousMonth.setAttribute('disabled','disabled')}_enablePrevMonth(){this.datePickerCalendarNavPreviousMonth.removeAttribute('disabled')}nextMonth(){this.month+=1,this._refreshCalendar()}_disableNextMonth(){this.datePickerCalendarNavNextMonth.setAttribute('disabled','disabled')}_enableNextMonth(){this.datePickerCalendarNavNextMonth.removeAttribute('disabled')}prevYear(){this.year-=1,this._refreshCalendar()}_disablePrevYear(){this.datePickerCalendarNavPreviousYear.setAttribute('disabled','disabled')}_enablePrevYear(){this.datePickerCalendarNavPreviousYear.removeAttribute('disabled')}nextYear(){this.year+=1,this._refreshCalendar()}_disableNextYear(){this.datePickerCalendarNavNextYear.setAttribute('disabled','disabled')}_enableNextYear(){this.datePickerCalendarNavNextYear.removeAttribute('disabled')}show(){this.element.value&&(this.options.startDate=this._parseDate(this.element.value)),this.month=this.options.startDate.getMonth(),this.year=this.options.startDate.getFullYear(),this.day=this.options.startDate.getDate(),this._refreshCalendar(),'undefined'!=typeof this.options.onOpen&&null!=this.options.onOpen&&this.options.onOpen&&this.options.onOpen(this),this.datePickerContainer.classList.add('is-active'),this.options.overlay||this._adjustPosition(),this.open=!0}hide(){this.open=!1,'undefined'!=typeof this.options.onClose&&null!=this.options.onClose&&this.options.onClose&&this.options.onClose(this),this.datePickerContainer.classList.remove('is-active')}_refreshCalendar(){var c=Math.abs;0>this.month&&(this.year-=Math.ceil(c(this.month)/12),this.month+=12),11=g?this._disableNextYear():this._enableNextYear(),this.year<=e&&this.month<=d?this._disablePrevMonth():this._enablePrevMonth(),this.year>=g&&this.month>=f?this._disableNextMonth():this._enableNextMonth(),this._renderDays(),this}_adjustPosition(){var a,b,c,d=this.datePickerCalendar.offsetWidth,e=this.datePickerCalendar.offsetHeight,f=window.innerWidth||document.documentElement.clientWidth,g=window.innerHeight||document.documentElement.clientHeight,h=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;if('function'==typeof this.element.getBoundingClientRect)c=this.element.getBoundingClientRect(),a=c.left+window.pageXOffset,b=c.bottom+window.pageYOffset;else for(a=this.element.offsetLeft,b=this.element.offsetTop+this.element.offsetHeight;this.element=this.element.offsetParent;)a+=this.element.offsetLeft,b+=this.element.offsetTop;this.datePickerCalendar.style.position='absolute',this.datePickerCalendar.style.left=a+'px',this.datePickerCalendar.style.top=b+'px'}destroy(){this.datePickerCalendar.remove()}_getFormatedDate(a,c){var d={d:a.getDate(),dd:a.getDate(),D:a.getDay(),m:a.getMonth()+1,mm:a.getMonth()+1,M:a.getMonth(),MM:a.getMonth(),yy:a.getFullYear().toString().substr(-2),yyyy:a.getFullYear()};return 10>d.dd&&(d.dd='0'+d.dd),10>d.mm&&(d.mm='0'+d.mm),d.D=b[this.options.lang].weekdays[d.D?d.D-1:6],d.M=b[this.options.lang].monthsShort[d.M],d.MM=b[this.options.lang].months[d.MM],c.replace(/(?:[dmM]{1,2}|D|yyyy|yy)/g,function(a){return'undefined'==typeof d[a]?a:d[a]})}_parseDate(a,b=void 0){const c=new Date;c.setHours(0,0,0,0),b||(b=this.options.dateFormat);const d=/((?:mm?)|(?:dd?)|(?:yyy?y?))[^0-9]((?:mm?)|(?:dd?)|(?:yyy?y?))[^0-9]((?:mm?)|(?:dd?)|(?:yyy?y?))/i,e=/(\d+)[^0-9](\d+)[^0-9](\d+)/i;let f=d.exec(b);if(f){let b=e.exec(a);if(b){switch(f[1][0]){case'd':c.setDate(b[1]);break;case'm':c.setMonth(b[1]-1);break;case'y':c.setFullYear(b[1]);}switch(f[2][0]){case'd':c.setDate(b[2]);break;case'm':c.setMonth(b[2]-1);break;case'y':c.setFullYear(b[2]);}switch(f[3][0]){case'd':c.setDate(b[3]);break;case'm':c.setMonth(b[3]-1);break;case'y':c.setFullYear(b[3]);}}}return c}_isLeapYear(a){return 0==a%4&&0!=a%100||0==a%400}_getDaysInMonth(a,b){return[31,this._isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]}_compareDates(c,a){return c.setHours(0,0,0,0),a.setHours(0,0,0,0),c.getTime()===a.getTime()}}}(); -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9leHRlbnNpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjZCQUFBLG1CQTRJdUQsQUFBSSxLQUFDLEFBQUssTUE1STdELEFBQWdCLEVBQUcsQ0FDckIsQUFBRSxHQUFFLENBQ0YsQUFBUyxVQUFFLEFBQUMsRUFDWixBQUFhLGNBQUUsQUFBZ0IsaUJBQy9CLEFBQVMsVUFBRSxBQUFZLGFBQ3ZCLEFBQU0sT0FBRSxDQUFDLEFBQVMsVUFBRSxBQUFVLFdBQUUsQUFBTyxRQUFFLEFBQU8sUUFBRSxBQUFLLE1BQUUsQUFBTSxPQUFFLEFBQU0sT0FBRSxBQUFRLFNBQUUsQUFBVyxZQUFFLEFBQVMsVUFBRSxBQUFVLFdBQUUsQUFBVSxBQUFDLFlBQ2xJLEFBQVcsWUFBRSxDQUFDLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxBQUFDLE9BQ2pHLEFBQVEsU0FBRSxDQUFDLEFBQVEsU0FBRSxBQUFRLFNBQUUsQUFBUyxVQUFFLEFBQVcsWUFBRSxBQUFVLFdBQUUsQUFBUSxTQUFFLEFBQVUsQUFBQyxZQUN4RixBQUFhLGNBQUUsQ0FBQyxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsQUFDakUsUUFDRCxBQUFFLEdBQUUsQ0FDRixBQUFTLFVBQUUsQUFBQyxFQUNaLEFBQWEsY0FBRSxBQUFrQiw4RkFDakMsQUFBUyxVQUFFLEFBQWlCLHdGQUM1QixBQUFNLE9BQUUsQ0FBQyxBQUFRLHVDQUFFLEFBQVMsNkNBQUUsQUFBTSwyQkFBRSxBQUFRLHVDQUFFLEFBQUsscUJBQUUsQUFBTSwyQkFBRSxBQUFNLDJCQUFFLEFBQVEsdUNBQUUsQUFBVSxtREFBRSxBQUFTLDZDQUFFLEFBQVEsdUNBQUUsQUFBUyxBQUFDLDhDQUM1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QUFDLFNBQ3BDLEFBQ0YsQ0FwcEJnQiIsImZpbGUiOiJidWxtYS1jYWxlbmRhci5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGF0ZXBpY2tlcl9sYW5ncyA9IHtcbiAgZW46IHtcbiAgICB3ZWVrU3RhcnQ6IDEsXG4gICAgcHJldmlvdXNNb250aDogJ1ByZXZpb3VzIE1vbnRoJyxcbiAgICBuZXh0TW9udGg6ICdOZXh0IE1vbnRoJyxcbiAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgIG1vbnRoc1Nob3J0OiBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sXG4gICAgd2Vla2RheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddXG4gIH0sXG4gIHJ1OiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICfQn9GA0LXQtNGL0LTRg9GJ0LjQuSDQvNC10YHRj9GGJyxcbiAgICBuZXh0TW9udGg6ICfQodC70LXQtNGD0Y7RidC40Lkg0LzQtdGB0Y/RhicsXG4gICAgbW9udGhzOiBbJ9Cv0L3QstCw0YDRjCcsICfQpNC10LLRgNCw0LvRjCcsICfQnNCw0YDRgicsICfQkNC/0YDQtdC70YwnLCAn0JzQsNC5JywgJ9CY0Y7QvdGMJywgJ9CY0Y7Qu9GMJywgJ9CQ0LLQs9GD0YHRgicsICfQodC10L3RgtGP0LHRgNGMJywgJ9Ce0LrRgtGP0LHRgNGMJywgJ9Cd0L7Rj9Cx0YDRjCcsICfQlNC10LrQsNCx0YDRjCddLFxuICAgIG1vbnRoc1Nob3J0OiBbJ9Cv0L3QsicsICfQpNC10LInLCAn0JzQsNGAJywgJ9CQ0L/RgCcsICfQnNCw0LknLCAn0JjRjtC9JywgJ9CY0Y7QuycsICfQkNCy0LMnLCAn0KHQtdC9JywgJ9Ce0LrRgicsICfQndC+0Y8nLCAn0JTQtdC6J10sXG4gICAgd2Vla2RheXM6IFsn0JLQvtGB0LrRgNC10YHQtdC90YzQtScsICfQn9C+0L3QtdC00LXQu9GM0L3QuNC6JywgJ9CS0YLQvtGA0L3QuNC6JywgJ9Ch0YDQtdC00LAnLCAn0KfQtdGC0LLQtdGA0LMnLCAn0J/Rj9GC0L3QuNGG0LAnLCAn0KHRg9Cx0LHQvtGC0LAnXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ9CS0YEnLCAn0J/QvScsICfQktGCJywgJ9Ch0YAnLCAn0KfRgicsICfQn9GCJywgJ9Ch0LEnXVxuICB9LFxuICBmcjoge1xuICAgIHdlZWtTdGFydDogMSxcbiAgICBwcmV2aW91c01vbnRoOiAnTW9pcyBwcsOpY8OpZGVudCcsXG4gICAgbmV4dE1vbnRoOiAnTW9pcyBzdWl2YW50JyxcbiAgICBtb250aHM6IFsnSmFudmllcicsICdGw6l2cmllcicsICdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCAnQW/Du3QnLCAnU2VwdGVtYnJlJywgJ09jdG9icmUnLCAnTm92ZW1icmUnLCAnRMOpY2VtYnJlJ10sXG4gICAgbW9udGhzU2hvcnQ6IFsnSmFuJywgJ0bDqXYnLCAnTWFyJywgJ0F2cicsICdNYWknLCAnSnVpbicsICdKdWlsJywgJ0F1bycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEw6ljJ10sXG4gICAgd2Vla2RheXM6IFsnRGltYW5jaGUnLCAnTHVuZGknLCAnTWFyZGknLCAnTWVyY3JlZGknLCAnSmV1ZGknLCAnVmVuZHJlZGknLCAnU2FtZWRpJ10sXG4gICAgd2Vla2RheXNTaG9ydDogWydEaW0nLCAnTHVuJywgJ01hcicsICdNZXInLCAnSmV1JywgJ1ZlbicsICdTYW0nXVxuICB9LFxuICBkZToge1xuICAgIHdlZWtTdGFydDogMSxcbiAgICBwcmV2aW91c01vbnRoOiAnVm9yaGVyaWdlciBNb25hdCcsXG4gICAgbmV4dE1vbnRoOiAnTsOkY2hzdGVyIE1vbmF0JyxcbiAgICBtb250aHM6IFsnSmFudWFyJywgJ0ZlYnJ1YXInLCAnTcOkcnonLCAnQXByaWwnLCAnTWFpJywgJ0p1bmknLCAnSnVsaScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09rdG9iZXInLCAnTm92ZW1iZXInLCAnRGV6ZW1iZXInXSxcbiAgICBtb250aHNTaG9ydDogWydKYW4nLCAnRmVicicsICdNw6RyeicsICdBcHInLCAnTWFpJywgJ0p1bmknLCAnSnVsaScsICdBdWcnLCAnU2VwdCcsICdPa3QnLCAnTm92JywgJ0RleiddLFxuICAgIHdlZWtkYXlzOiBbJ1Nvbm50YWcnLCAnTW9udGFnJywgJ0RpZW5zdGFnJywgJ01pdHR3b2NoJywgJ0Rvbm5lcnN0YWcnLCAnRnJlaXRhZycsICdTYW1zdGFnJ10sXG4gICAgd2Vla2RheXNTaG9ydDogWydTbycsICdNbycsICdEaScsICdNaScsICdEbycsICdGcicsICdTYSddXG4gIH0sXG4gIHRyOiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICfDlm5jZWtpIEF5JyxcbiAgICBuZXh0TW9udGg6ICdHZWxlY2VrIEF5JyxcbiAgICBtb250aHM6IFsnT2NhaycsICfFnnViYXQnLCAnTWFydCcsICdOaXNhbicsICdNYXnEsXMnLCAnSGF6aXJhbicsICdUZW1tdXonLCAnQcSfdXN0b3MnLCAnRXlsw7xsJywgJ0VraW0nLCAnS2FzxLFtJywgJ0FyYWzEsWsnXSxcbiAgICBtb250aHNTaG9ydDogWydPY2EnLCAnxZ51YicsICdNYXInLCAnTmlzJywgJ01heScsICdIYXonLCAnVGVtJywgJ0HEn3UnLCAnRXlsJywgJ0VraScsICdLYXMnLCAnQXJhJ10sXG4gICAgd2Vla2RheXM6IFsnUGF6YXInLCAnUGF6YXJ0ZXNpJywgJ1NhbMSxJywgJ8OHYXLFn2FtYmEnLCAnUGVyxZ9lbWJlJywgJ0N1bWEnLCAnQ3VtYXJ0ZXNpJ10sXG4gICAgd2Vla2RheXNTaG9ydDogWydQYXonLCAnUHp0JywgJ1NhbCcsICfDh2FyJywgJ1BlcicsICdDdW0nLCAnQ210J11cbiAgfSxcbiAgaXQ6IHtcbiAgICB3ZWVrU3RhcnQ6IDEsXG4gICAgcHJldmlvdXNNb250aDogJ01lc2UgUHJlY2VkZW50ZScsXG4gICAgbmV4dE1vbnRoOiAnUHJvc3NpbW8gTWVzZScsXG4gICAgbW9udGhzOiBbJ0dlbm5haW8nLCAnRmViYnJhaW8nLCAnTWFyem8nLCAnQXByaWxlJywgJ01hZ2dpbycsICdHaXVnbm8nLCAnTHVnbGlvJywgJ0Fnb3N0bycsICdTZXR0ZW1icmUnLCAnT3R0b2JyZScsICdOb3ZlbWJyZScsICdEaWNlbWJyZSddLFxuICAgIG1vbnRoc1Nob3J0OiBbJ0dlbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYWcnLCAnR2l1JywgJ0x1ZycsICdBZ28nLCAnU2V0JywgJ090dCcsICdOb3YnLCAnRGljJ10sXG4gICAgd2Vla2RheXM6IFsnRG9tZW5pY2EnLCAnTHVuZWTDrCcsICdNYXJ0ZWTDrCcsICdNZXJjb2xlZMOsJywgJ0dpb3ZlZMOsJywgJ1ZlbmVyZMOsJywgJ1NhYmF0byddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsnRG9tJywgJ0x1bicsICdNYXInLCAnTWVyJywgJ0dpbycsICdWZW4nLCAnU2FiJ11cbiAgfSxcbiAgdGg6IHtcbiAgICB3ZWVrU3RhcnQ6IDEsXG4gICAgcHJldmlvdXNNb250aDogJ+C5gOC4lOC4t+C4reC4meC4geC5iOC4reC4meC4q+C4meC5ieC4sicsXG4gICAgbmV4dE1vbnRoOiAn4LmA4LiU4Li34Lit4LiZ4LiW4Lix4LiU4LmE4LibJyxcbiAgICBtb250aHM6IFsn4Lih4LiB4Lij4Liy4LiE4LihJywgJ+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCcsICfguKHguLXguJnguLLguITguKEnLCAn4LmA4Lih4Lip4Liy4Lii4LiZJywgJ+C4nuC4pOC4qeC4oOC4suC4hOC4oScsICfguKHguLTguJbguLjguJnguLLguKLguJknLCAn4LiB4Lij4LiB4LiO4Liy4LiE4LihJywgJ+C4quC4tOC4h+C4q+C4suC4hOC4oScsICfguIHguLHguJnguKLguLLguKLguJknLCAn4LiV4Li44Lil4Liy4LiE4LihJywgJ+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mScsICfguJjguLHguJnguKfguLLguITguKEnXSxcbiAgICBtb250aHNTaG9ydDogWyfguKEu4LiELicsICfguIEu4LieLicsICfguKHguLUu4LiELicsICfguYDguKEu4LiiLicsICfguJ4u4LiELicsICfguKHguLQu4LiiLicsICfguIEu4LiELicsICfguKou4LiELicsICfguIEu4LiiLicsICfguJUu4LiELicsICfguJ4u4LiiLicsICfguJgu4LiELiddLFxuICAgIHdlZWtkYXlzOiBbJ+C4reC4suC4l+C4tOC4leC4ouC5jCcsICfguIjguLHguJnguJfguKPguYwnLCAn4Lit4Lix4LiH4LiE4Liy4LijJywgJ+C4nuC4uOC4mCcsICfguJ7guKTguKvguLHguKrguJrguJTguLUnLCAn4Lio4Li44LiB4Lij4LmMJywgJ+C5gOC4quC4suC4o+C5jCddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsn4Lit4LiyLicsICfguIguJywgJ+C4rS4nLCAn4LieLicsICfguJ7guKQuJywgJ+C4qC4nLCAn4LiqLiddXG4gIH0sXG4gIGhyOiB7XG4gICAgd2Vla1N0YXJ0OiAyLFxuICAgIHByZXZpb3VzTW9udGg6ICdQcm/FoWxpIG1qZXNlYycsXG4gICAgbmV4dE1vbnRoOiAnU2xpamVkZcSHaSBtamVzZWMnLFxuICAgIG1vbnRoczogWydzaWplxI1hbmonLCAndmVsamHEjWEnLCAnb8W+dWphaycsICd0cmF2YW5qJywgJ3N2aWJhbmonLCAnbGlwYW5qJywgJ3NycGFuaicsICdrb2xvdm96JywgJ3J1amFuJywgJ2xpc3RvcGFkJywgJ3N0dWRlbmknLCAncHJvc2luYWMnXSxcbiAgICBtb250aHNTaG9ydDogWydzaWonLCAndmVsaicsICdvxb51JywgJ3RyYScsICdzdmknLCAnbGlwJywgJ3NycCcsICdrb2wnLCAncnVqJywgJ2xpcycsICdzdHUnLCAncHJvJ10sXG4gICAgd2Vla2RheXM6IFsnbmVkamVsamEnLCAncG9uZWRqZWxqYWsnLCAndXRvcmFrJywgJ3NyaWplZGEnLCAnxI1ldHZydGFrJywgJ3BldGFrJywgJ3N1Ym90YSddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsnbmVkJywgJ3BvbicsICd1dG8nLCAnc3JpJywgJ8SNZXQnLCAncGV0JywgJ3N1YiddXG4gIH0sXG4gIHNyOiB7XG4gICAgd2Vla1N0YXJ0OiAyLFxuICAgIHByZXZpb3VzTW9udGg6ICdQcm/FoWxpIG1lc2VjJyxcbiAgICBuZXh0TW9udGg6ICdTbGVkZcSHaSBtZXNlYycsXG4gICAgbW9udGhzOiBbJ2phbnVhcicsICdmZWJydWFyJywgJ21hcnQnLCAnYXByaWwnLCAnbWFqJywgJ2p1bicsICdqdWwnLCAnYXZndXN0JywgJ3NlcHRlbWJhcicsICdva3RvYmFyJywgJ25vdmVtYmFyJywgJ2RlY2VtYmFyJ10sXG4gICAgbW9udGhzU2hvcnQ6IFsnamFuJywgJ2ZlYicsICdtYXInLCAnYXByJywgJ21haicsICdqdW4nLCAnanVsJywgJ2F2ZycsICdzZXAnLCAnb2t0JywgJ25vdicsICdkZWMnXSxcbiAgICB3ZWVrZGF5czogWyduZWRlbGphJywgJ3BvbmVkZWxqYWsnLCAndXRvcmFrJywgJ3NyZWRhJywgJ8SNZXR2cnRhaycsICdwZXRhaycsICdzdWJvdGEnXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ25lZCcsICdwb24nLCAndXRvJywgJ3NyZScsICfEjWV0JywgJ3BldCcsICdzdWInXVxuICB9LFxuICAnemgtY24nOiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICfkuIrkuKrmnIgnLFxuICAgIG5leHRNb250aDogJ+S4i+S4quaciCcsXG4gICAgbW9udGhzOiBbJ+S4gOaciCcsICfkuozmnIgnLCAn5LiJ5pyIJywgJ+Wbm+aciCcsICfkupTmnIgnLCAn5YWt5pyIJywgJ+S4g+aciCcsICflhavmnIgnLCAn5Lmd5pyIJywgJ+WNgeaciCcsICfljYHkuIDmnIgnLCAn5Y2B5LqM5pyIJ10sXG4gICAgbW9udGhzU2hvcnQ6IFsn5LiA5pyIJywgJ+S6jOaciCcsICfkuInmnIgnLCAn5Zub5pyIJywgJ+S6lOaciCcsICflha3mnIgnLCAn5LiD5pyIJywgJ+WFq+aciCcsICfkuZ3mnIgnLCAn5Y2B5pyIJywgJ+WNgeS4gOaciCcsICfljYHkuozmnIgnXSxcbiAgICB3ZWVrZGF5czogWyfmmJ/mnJ/lpKknLCAn5pif5pyf5LiAJywgJ+aYn+acn+S6jCcsICfmmJ/mnJ/kuIknLCAn5pif5pyf5ZubJywgJ+aYn+acn+S6lCcsICfmmJ/mnJ/lha0nXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ+WRqOaXpScsICflkajkuIAnLCAn5ZGo5LqMJywgJ+WRqOS4iScsICflkajlm5snLCAn5ZGo5LqUJywgJ+WRqOWFrSddXG4gIH0sXG4gIGVzOiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICdNZXMgYW50ZXJpb3InLFxuICAgIG5leHRNb250aDogJ1Byw7N4aW1vIG1lcycsXG4gICAgbW9udGhzOiBbJ0VuZXJvJywgJ0ZlYnJlcm8nLCAnTWFyem8nLCAnQWJyaWwnLCAnTWF5bycsICdKdW5pbycsICdKdWxpbycsICdBZ29zdG8nLCAnU2VwdGllbWJyZScsICdPY3R1YnJlJywgJ05vdmllbWJyZScsICdEaWNpZW1icmUnXSxcbiAgICBtb250aHNTaG9ydDogWydFbmUnLCAnRmViJywgJ01hcicsICdBYnInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQWdvJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RpYyddLFxuICAgIHdlZWtkYXlzOiBbJ0RvbWluZ28nLCAnTHVuZXMnLCAnTWFydGVzJywgJ01pw6lyY29sZXMnLCAnSnVldmVzJywgJ1ZpZXJuZXMnLCAnU8OhYmFkbyddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsnRG9tJywgJ0x1bicsICdNYXInLCAnTWllJywgJ0p1ZScsICdWaWUnLCAnU2FiJ11cbiAgfVxufVxuXG5jbGFzcyBkYXRlUGlja2VyIHtcbiAgY29uc3RydWN0b3Ioc2VsZWN0b3IsIG9wdGlvbnMgPSB7fSkge1xuICAgIC8vIERldGVybWluZSBjbGljayBldmVudCBkZXBlbmRpbmcgb24gaWYgd2UgYXJlIG9uIFRvdWNoIGRldmljZSBvciBub3RcbiAgICB0aGlzLl9jbGlja0V2ZW50ID0gKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykgPyAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuXG4gICAgdGhpcy5lbGVtZW50ID0gdHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIDogc2VsZWN0b3I7XG4gICAgLy8gQW4gaW52YWxpZCBzZWxlY3RvciBvciBub24tRE9NIG5vZGUgaGFzIGJlZW4gcHJvdmlkZWQuXG4gICAgaWYgKCF0aGlzLmVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQW4gaW52YWxpZCBzZWxlY3RvciBvciBub24tRE9NIG5vZGUgaGFzIGJlZW4gcHJvdmlkZWQuJyk7XG4gICAgfVxuXG4gICAgLy8vIFNldCBkZWZhdWx0IG9wdGlvbnMgYW5kIG1lcmdlIHdpdGggaW5zdGFuY2UgZGVmaW5lZFxuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIG1pbkRhdGU6IG51bGwsXG4gICAgICBtYXhEYXRlOiBudWxsLFxuICAgICAgZGF0ZUZvcm1hdDogJ3l5eXktbW0tZGQnLCAvLyB0aGUgZGVmYXVsdCBkYXRhIGZvcm1hdCBgZmllbGRgIHZhbHVlXG4gICAgICBsYW5nOiAnZW4nLCAvLyBpbnRlcm5hdGlvbmFsaXphdGlvblxuICAgICAgb3ZlcmxheTogZmFsc2UsXG4gICAgICBjbG9zZU9uT3ZlcmxheUNsaWNrOiB0cnVlLFxuICAgICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICAgIC8vIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICAgICAgb25TZWxlY3Q6IG51bGwsXG4gICAgICBvbk9wZW46IG51bGwsXG4gICAgICBvbkNsb3NlOiBudWxsLFxuICAgICAgb25SZW5kZXI6IG51bGxcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIC8vIEluaXRpYXRlIHBsdWdpblxuICAgIHRoaXMuX2luaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZSBwbHVnaW4gaW5zdGFuY2VcbiAgICogQG1ldGhvZCBfaW5pdFxuICAgKiBAcmV0dXJuIHtkYXRlUGlja2VyfSBDdXJyZW50IHBsdWdpbiBpbnN0YW5jZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdGhpcy5faWQgPSAnZGF0ZVBpY2tlcicgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcig5OTk5KSk7XG4gICAgdGhpcy5sYW5nID0gdHlwZW9mIGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5sYW5nXSAhPT0gJ3VuZGVmaW5lZCcgPyB0aGlzLmxhbmcgOiAnZW4nO1xuICAgIC8vIFNldCB0aGUgc3RhcnREYXRlIHRvIHRoZSBpbnB1dCB2YWx1ZVxuICAgIGlmICh0aGlzLmVsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zdGFydERhdGUgPSB0aGlzLl9wYXJzZURhdGUodGhpcy5lbGVtZW50LnZhbHVlKTtcbiAgICB9XG4gICAgLy8gVHJhbnNmb3JtIHN0YXJ0IGRhdGUgYWNjb3JkaW5nIHRvIGRhdGVGb3JtYXQgb3B0aW9uXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSA9IHRoaXMuX3BhcnNlRGF0ZSh0aGlzLl9nZXRGb3JtYXRlZERhdGUodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSwgdGhpcy5vcHRpb25zLmRhdGVGb3JtYXQpKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluRGF0ZSkge1xuICAgICAgdGhpcy5vcHRpb25zLm1pbkRhdGUgPSB0aGlzLl9wYXJzZURhdGUodGhpcy5fZ2V0Rm9ybWF0ZWREYXRlKHRoaXMub3B0aW9ucy5taW5EYXRlLCB0aGlzLm9wdGlvbnMuZGF0ZUZvcm1hdCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLm1heERhdGUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhEYXRlID0gdGhpcy5fcGFyc2VEYXRlKHRoaXMuX2dldEZvcm1hdGVkRGF0ZSh0aGlzLm9wdGlvbnMubWF4RGF0ZSwgdGhpcy5vcHRpb25zLmRhdGVGb3JtYXQpKTtcbiAgICB9XG5cbiAgICB0aGlzLm1vbnRoID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMueWVhciA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLmRheSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RGF0ZSgpO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5fYnVpbGQoKTtcbiAgICB0aGlzLl9iaW5kRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBkYXRlUGlja2VyIEhUTUwgY29tcG9uZW50IGFuZCBhcHBlbmQgaXQgdG8gdGhlIERPTVxuICAgKiBAbWV0aG9kIF9idWlsZFxuICAgKiBAcmV0dXJuIHtkYXRlUGlja2VyfSBDdXJyZW50IHBsdWdpbiBpbnN0YW5jZVxuICAgKi9cbiAgX2J1aWxkKCkge1xuICAgIC8vIERlZmluZSBkYXRlUGlja2VyIFRlbXBsYXRlXG4gICAgY29uc3QgZGF0ZVBpY2tlciA9IGBcbiAgICAgIDxkaXYgaWQ9JyR7dGhpcy5faWR9JyBjbGFzcz1cImRhdGVwaWNrZXIgJHt0aGlzLm9wdGlvbnMub3ZlcmxheSA/ICdtb2RhbCcgOiAnJ31cIj5cbiAgICAgICAgJHt0aGlzLm9wdGlvbnMub3ZlcmxheSA/ICc8ZGl2IGNsYXNzPVwibW9kYWwtYmFja2dyb3VuZFwiPjwvZGl2PicgOiAnJ31cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLW5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLW5hdi1tb250aFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsZW5kYXItbmF2LXByZXZpb3VzLW1vbnRoIGJ1dHRvbiBpcy1zbWFsbCBpcy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDUwIDgwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIi41ZW1cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBwb2ludHM9XCI0NS42Myw3NS44IDAuMzc1LDM4LjA4NyA0NS42MywwLjM3NSBcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItbW9udGhcIj4ke2RhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLm1vbnRoc1t0aGlzLm1vbnRoXX08L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGVuZGFyLW5hdi1uZXh0LW1vbnRoIGJ1dHRvbiBpcy1zbWFsbCBpcy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDUwIDgwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIi41ZW1cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBwb2ludHM9XCIwLjM3NSwwLjM3NSA0NS42MywzOC4wODcgMC4zNzUsNzUuOCBcIi8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItbmF2LWRheVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5XCI+JHt0aGlzLmRheX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLW5hdi15ZWFyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxlbmRhci1uYXYtcHJldmlvdXMteWVhciBidXR0b24gaXMtc21hbGwgaXMtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA1MCA4MFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgICAgICA8cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIuNWVtXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgcG9pbnRzPVwiNDUuNjMsNzUuOCAwLjM3NSwzOC4wODcgNDUuNjMsMC4zNzUgXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXllYXJcIj4ke3RoaXMueWVhcn08L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGVuZGFyLW5hdi1uZXh0LXllYXIgYnV0dG9uIGlzLXNtYWxsIGlzLXRleHRcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgNTAgODBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiLjVlbVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHBvaW50cz1cIjAuMzc1LDAuMzc1IDQ1LjYzLDM4LjA4NyAwLjM3NSw3NS44IFwiLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXRlXCI+JHt0aGlzLl9nZXREYXlOYW1lKDAsIHRydWUpfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF0ZVwiPiR7dGhpcy5fZ2V0RGF5TmFtZSgxLCB0cnVlKX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWRhdGVcIj4ke3RoaXMuX2dldERheU5hbWUoMiwgdHJ1ZSl9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXRlXCI+JHt0aGlzLl9nZXREYXlOYW1lKDMsIHRydWUpfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF0ZVwiPiR7dGhpcy5fZ2V0RGF5TmFtZSg0LCB0cnVlKX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWRhdGVcIj4ke3RoaXMuX2dldERheU5hbWUoNSwgdHJ1ZSl9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXRlXCI+JHt0aGlzLl9nZXREYXlOYW1lKDYsIHRydWUpfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgICAvLyBBZGQgZGF0ZXBpY2tlciBIVE1MIGVsZW1lbnQgdG8gRG9jdW1lbnQgQm9keVxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBkYXRlUGlja2VyKTtcblxuICAgIC8vIFNhdmUgcG9pbnRlciB0byBlYWNoIGRhdGVQaWNrZXIgZWxlbWVudCBmb3IgbGF0ZXIgdXNlXG4gICAgdGhpcy5kYXRlUGlja2VyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5faWQpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyID0gdGhpcy5kYXRlUGlja2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhcicpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcmxheSkge1xuICAgICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRoaXMuZGF0ZVBpY2tlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcubW9kYWwtYmFja2dyb3VuZCcpO1xuICAgICAgdGhpcy5kYXRlUGlja2VyQ2xvc2VCdXR0b24gPSB0aGlzLmRhdGVQaWNrZXJDb250YWluZXIucXVlcnlTZWxlY3RvcignLm1vZGFsLWNsb3NlJyk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2ID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLW5hdicpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TW9udGggPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5xdWVyeVNlbGVjdG9yKCcuY2FsZW5kYXItbW9udGgnKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdlllYXIgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5xdWVyeVNlbGVjdG9yKCcuY2FsZW5kYXIteWVhcicpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2RGF5ID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLWRheScpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNNb250aCA9IHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhci1uYXYtcHJldmlvdXMtbW9udGgnKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdk5leHRNb250aCA9IHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhci1uYXYtbmV4dC1tb250aCcpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNZZWFyID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXYucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLW5hdi1wcmV2aW91cy15ZWFyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZOZXh0WWVhciA9IHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhci1uYXYtbmV4dC15ZWFyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJIZWFkZXIgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5xdWVyeVNlbGVjdG9yKCcuY2FsZW5kYXItaGVhZGVyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJCb2R5ID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLWJvZHknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGFsbCBldmVudHNcbiAgICogQG1ldGhvZCBfYmluZEV2ZW50c1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgX2JpbmRFdmVudHMoKSB7XG4gICAgLy8gQmluZCBldmVudCB0byBlbGVtZW50IGluIG9yZGVyIHRvIGRpc3BsYXkvaGlkZSBkYXRlUGlja2VyIG9uIGNsaWNrXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVybGF5KSB7XG4gICAgICAvLyBCaW5kIGNsb3NlIGV2ZW50IG9uIENsb3NlIGJ1dHRvblxuICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlckNsb3NlQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlckNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gQmluZCBjbG9zZSBldmVudCBvbiBvdmVybGF5IGJhc2VkIG9uIG9wdGlvbnNcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xvc2VPbk92ZXJsYXlDbGljaykge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJpbmQgeWVhciBuYXZpZ2F0aW9uIGV2ZW50c1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNZZWFyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMucHJldlllYXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdk5leHRZZWFyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubmV4dFllYXIoKTtcbiAgICB9KTtcblxuICAgIC8vIEJpbmQgbW9udGggbmF2aWdhdGlvbiBldmVudHNcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdlByZXZpb3VzTW9udGguYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9jbGlja0V2ZW50LCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5wcmV2TW9udGgoKTtcbiAgICB9KTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdk5leHRNb250aC5hZGRFdmVudExpc3RlbmVyKHRoaXMuX2NsaWNrRXZlbnQsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm5leHRNb250aCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgZXZlbnRzIG9uIGVhY2ggRGF5IGl0ZW1cbiAgICogQG1ldGhvZCBfYmluZERheXNFdmVudHNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIF9iaW5kRGF5c0V2ZW50cygpIHtcbiAgICBbXS5mb3JFYWNoLmNhbGwodGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJEYXlzLCAoY2FsZW5kYXJEYXkpID0+IHtcbiAgICAgIGNhbGVuZGFyRGF5LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIWUuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLWRpc2FibGVkJykpIHtcbiAgICAgICAgICBsZXQgZGF0ZSA9IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LmRhdGUuc3BsaXQoJy0nKTtcbiAgICAgICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZTtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vblNlbGVjdCAhPSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uU2VsZWN0ICE9IG51bGwgJiZcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uU2VsZWN0KG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gdGhpcy5fZ2V0Rm9ybWF0ZWREYXRlKChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSksIHRoaXMub3B0aW9ucy5kYXRlRm9ybWF0KTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxvY2FsaXplZCBkYXkgbmFtZVxuICAgKiBAbWV0aG9kIHJlbmRlckRheU5hbWVcbiAgICogQHBhcmFtICB7W3R5cGVdfSAgICAgIGRheSAgICAgICAgICBbZGVzY3JpcHRpb25dXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59ICAgICBbYWJicj1mYWxzZV0gW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtbdHlwZV19ICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIF9nZXREYXlOYW1lKGRheSwgYWJiciA9IGZhbHNlKSB7XG4gICAgZGF5ICs9IGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLndlZWtTdGFydDtcbiAgICB3aGlsZSAoZGF5ID49IDcpIHtcbiAgICAgIGRheSAtPSA3O1xuICAgIH1cblxuICAgIHJldHVybiBhYmJyID8gZGF0ZXBpY2tlcl9sYW5nc1t0aGlzLm9wdGlvbnMubGFuZ10ud2Vla2RheXNTaG9ydFtkYXldIDogZGF0ZXBpY2tlcl9sYW5nc1t0aGlzLm9wdGlvbnMubGFuZ10ud2Vla2RheXNbZGF5XTtcbiAgfVxuXG4gIF9yZW5kZXJEYXkoZGF5LCBtb250aCwgeWVhciwgaXNTZWxlY3RlZCwgaXNUb2RheSwgaXNEaXNhYmxlZCwgaXNFbXB0eSwgaXNCZXR3ZWVuLCBpc1NlbGVjdGVkSW4sIGlzU2VsZWN0ZWRPdXQpIHtcbiAgICByZXR1cm4gYFxuICAgICAgPGRpdiBkYXRhLWRhdGU9XCIke2Ake3llYXJ9LSR7bW9udGh9LSR7ZGF5fWB9XCIgY2xhc3M9XCJjYWxlbmRhci1kYXRlJHtpc0Rpc2FibGVkID8gJyBpcy1kaXNhYmxlZCcgOiAnJ30ke2lzQmV0d2VlbiA/ICcgY2FsZW5kYXItcmFuZ2UnIDogJyd9JHtpc1NlbGVjdGVkSW4gPyAnIGNhbGVuZGFyLXJhbmdlLXN0YXJ0JyA6ICcnfSR7aXNTZWxlY3RlZE91dCA/ICcgY2FsZW5kYXItcmFuZ2UtZW5kJyA6ICcnfVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGF0ZS1pdGVtJHtpc1RvZGF5ID8gJyBpcy10b2RheScgOiAnJ30ke2lzU2VsZWN0ZWQgPyAnIGlzLWFjdGl2ZScgOiAnJ31cIj4ke2RheX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBfcmVuZGVyRGF5cygpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBkYXlzID0gJyc7XG5cbiAgICBsZXQgbnVtYmVyT2ZEYXlzID0gdGhpcy5fZ2V0RGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKSxcbiAgICAgIGJlZm9yZSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgMSkuZ2V0RGF5KCk7XG5cbiAgICAvLyBDYWxsIG9uUmVuZGVyIGNhbGxiYWNrIGlmIGRlZmluZWRcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vblJlbmRlciAhPSAndW5kZWZpbmVkJyAmJlxuICAgICAgdGhpcy5vcHRpb25zLm9uUmVuZGVyICE9IG51bGwgJiZcbiAgICAgIHRoaXMub3B0aW9ucy5vblJlbmRlcikge1xuICAgICAgdGhpcy5vcHRpb25zLm9uUmVuZGVyKHRoaXMpO1xuICAgIH1cblxuICAgIC8vIEdldCBzdGFydCBkYXkgZnJvbSBvcHRpb25zXG4gICAgaWYgKGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLndlZWtTdGFydCA+IDApIHtcbiAgICAgIGJlZm9yZSAtPSBkYXRlcGlja2VyX2xhbmdzW3RoaXMub3B0aW9ucy5sYW5nXS53ZWVrU3RhcnQ7XG4gICAgICBpZiAoYmVmb3JlIDwgMCkge1xuICAgICAgICBiZWZvcmUgKz0gNztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2VsbHMgPSBudW1iZXJPZkRheXMgKyBiZWZvcmUsXG4gICAgICBhZnRlciA9IGNlbGxzO1xuICAgIHdoaWxlIChhZnRlciA+IDcpIHtcbiAgICAgIGFmdGVyIC09IDc7XG4gICAgfVxuXG4gICAgY2VsbHMgKz0gNyAtIGFmdGVyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHM7IGkrKykge1xuICAgICAgdmFyIGRheSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgMSArIChpIC0gYmVmb3JlKSksXG4gICAgICAgIGlzQmV0d2VlbiA9IGZhbHNlLFxuICAgICAgICBpc1NlbGVjdGVkID0gdGhpcy5fY29tcGFyZURhdGVzKGRheSwgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSksXG4gICAgICAgIGlzU2VsZWN0ZWRJbiA9IGZhbHNlLFxuICAgICAgICBpc1NlbGVjdGVkT3V0ID0gZmFsc2UsXG4gICAgICAgIGlzVG9kYXkgPSB0aGlzLl9jb21wYXJlRGF0ZXMoZGF5LCBub3cpLFxuICAgICAgICBpc0VtcHR5ID0gaSA8IGJlZm9yZSB8fCBpID49IChudW1iZXJPZkRheXMgKyBiZWZvcmUpLFxuICAgICAgICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAgIGRheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgICAgaWYgKCFpc1NlbGVjdGVkKSB7XG4gICAgICAgIGlzU2VsZWN0ZWRJbiA9IGZhbHNlO1xuICAgICAgICBpc1NlbGVjdGVkT3V0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXkuZ2V0TW9udGgoKSAhPT0gdGhpcy5tb250aCB8fCAodGhpcy5vcHRpb25zLm1pbkRhdGUgJiZcbiAgICAgICAgKGRheS5nZXRUaW1lKCkgPCB0aGlzLm9wdGlvbnMubWluRGF0ZS5nZXRUaW1lKCkgfHwgZGF5LmdldFRpbWUoKSA+IHRoaXMub3B0aW9ucy5tYXhEYXRlLmdldFRpbWUoKSkpKSB7XG4gICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBkYXlzICs9IHRoaXMuX3JlbmRlckRheShkYXkuZ2V0RGF0ZSgpLCB0aGlzLm1vbnRoLCB0aGlzLnllYXIsIGlzU2VsZWN0ZWQsIGlzVG9kYXksIGlzRGlzYWJsZWQsIGlzRW1wdHksIGlzQmV0d2VlbiwgaXNTZWxlY3RlZEluLCBpc1NlbGVjdGVkT3V0KTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhckJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBkYXlzKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhckRheXMgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhckJvZHkucXVlcnlTZWxlY3RvckFsbCgnLmNhbGVuZGFyLWRhdGUnKTtcbiAgICB0aGlzLl9iaW5kRGF5c0V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyBtb250aCBhbmQgcmVnZW5lcmF0ZSBjYWxlbmRhclxuICAgKiBAbWV0aG9kIHByZXZNb250aFxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcHJldk1vbnRoKCkge1xuICAgIHRoaXMubW9udGggLT0gMTtcbiAgICB0aGlzLl9yZWZyZXNoQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIF9kaXNhYmxlUHJldk1vbnRoKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNNb250aC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICBfZW5hYmxlUHJldk1vbnRoKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNNb250aC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gdGhlIG5leHQgbW9udGggYW5kIHJlZ2VuZXJhdGUgY2FsZW5kYXJcbiAgICogQG1ldGhvZCBuZXh0TW9udGhcbiAgICogQHJldHVybiB7fVxuICAgKi9cbiAgbmV4dE1vbnRoKCkge1xuICAgIHRoaXMubW9udGggKz0gMTtcbiAgICB0aGlzLl9yZWZyZXNoQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIF9kaXNhYmxlTmV4dE1vbnRoKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TmV4dE1vbnRoLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgfVxuXG4gIF9lbmFibGVOZXh0TW9udGgoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZOZXh0TW9udGgucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyB5ZWFyIGFuZCByZWdlbmVyYXRlIGNhbGVuZGFyXG4gICAqIEBtZXRob2QgcHJldlllYXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByZXZZZWFyKCkge1xuICAgIHRoaXMueWVhciAtPSAxO1xuICAgIHRoaXMuX3JlZnJlc2hDYWxlbmRhcigpO1xuICB9XG5cbiAgX2Rpc2FibGVQcmV2WWVhcigpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdlByZXZpb3VzWWVhci5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICBfZW5hYmxlUHJldlllYXIoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZQcmV2aW91c1llYXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyB5ZWFyIGFuZCByZWdlbmVyYXRlIGNhbGVuZGFyXG4gICAqIEBtZXRob2QgbmV4dFllYXJcbiAgICogQHJldHVybiB7fVxuICAgKi9cbiAgbmV4dFllYXIoKSB7XG4gICAgdGhpcy55ZWFyICs9IDE7XG4gICAgdGhpcy5fcmVmcmVzaENhbGVuZGFyKCk7XG4gIH1cblxuICBfZGlzYWJsZU5leHRZZWFyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TmV4dFllYXIuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICB9XG5cbiAgX2VuYWJsZU5leHRZZWFyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TmV4dFllYXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgZGF0ZVBpY2tlciBIVE1MIENvbXBvbmVudFxuICAgKiBAbWV0aG9kIHNob3dcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHNob3coKSB7XG4gICAgLy8gU2V0IHRoZSBzdGFydERhdGUgdG8gdGhlIGlucHV0IHZhbHVlXG4gICAgaWYgKHRoaXMuZWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSA9IHRoaXMuX3BhcnNlRGF0ZSh0aGlzLmVsZW1lbnQudmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLm1vbnRoID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMueWVhciA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLmRheSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RGF0ZSgpO1xuICAgIHRoaXMuX3JlZnJlc2hDYWxlbmRhcigpO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMub25PcGVuICE9ICd1bmRlZmluZWQnICYmXG4gICAgICB0aGlzLm9wdGlvbnMub25PcGVuICE9IG51bGwgJiZcbiAgICAgIHRoaXMub3B0aW9ucy5vbk9wZW4pIHtcbiAgICAgIHRoaXMub3B0aW9ucy5vbk9wZW4odGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlUGlja2VyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX2FkanVzdFBvc2l0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBkYXRlUGlja2VyIEhUTUwgQ29tcG9uZW50XG4gICAqIEBtZXRob2QgaGlkZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgaGlkZSgpIHtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vbkNsb3NlICE9ICd1bmRlZmluZWQnICYmXG4gICAgICB0aGlzLm9wdGlvbnMub25DbG9zZSAhPSBudWxsICYmXG4gICAgICB0aGlzLm9wdGlvbnMub25DbG9zZSkge1xuICAgICAgdGhpcy5vcHRpb25zLm9uQ2xvc2UodGhpcyk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGNhbGVuZGFyIHdpdGggbmV3IHllYXIvbW9udGggZGF5c1xuICAgKiBAbWV0aG9kIF9yZWZyZXNoQ2FsZW5kYXJcbiAgICogQHJldHVybiB7W3R5cGVdfSAgICAgICAgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgX3JlZnJlc2hDYWxlbmRhcigpIHtcbiAgICBpZiAodGhpcy5tb250aCA8IDApIHtcbiAgICAgIHRoaXMueWVhciAtPSBNYXRoLmNlaWwoTWF0aC5hYnModGhpcy5tb250aCkgLyAxMik7XG4gICAgICB0aGlzLm1vbnRoICs9IDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb250aCA+IDExKSB7XG4gICAgICB0aGlzLnllYXIgKz0gTWF0aC5mbG9vcihNYXRoLmFicyh0aGlzLm1vbnRoKSAvIDEyKTtcbiAgICAgIHRoaXMubW9udGggLT0gMTI7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TW9udGguaW5uZXJIVE1MID0gZGF0ZXBpY2tlcl9sYW5nc1t0aGlzLm9wdGlvbnMubGFuZ10ubW9udGhzW3RoaXMubW9udGhdO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2WWVhci5pbm5lckhUTUwgPSB0aGlzLnllYXI7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZEYXkuaW5uZXJIVE1MID0gdGhpcy5kYXk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJCb2R5LmlubmVySFRNTCA9ICcnO1xuXG4gICAgbGV0IG1pbk1vbnRoID0gMCxcbiAgICAgIG1pblllYXIgPSAwLFxuICAgICAgbWF4TW9udGggPSAxMixcbiAgICAgIG1heFllYXIgPSA5OTk5O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5taW5EYXRlKSB7XG4gICAgICBtaW5Nb250aCA9IHRoaXMub3B0aW9ucy5taW5EYXRlLmdldE1vbnRoKCk7XG4gICAgICBtaW5ZZWFyID0gdGhpcy5vcHRpb25zLm1pbkRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhEYXRlKSB7XG4gICAgICBtYXhNb250aCA9IHRoaXMub3B0aW9ucy5tYXhEYXRlLmdldE1vbnRoKCk7XG4gICAgICBtYXhZZWFyID0gdGhpcy5vcHRpb25zLm1heERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy55ZWFyIDw9IG1pblllYXIpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVQcmV2WWVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbmFibGVQcmV2WWVhcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnllYXIgPj0gbWF4WWVhcikge1xuICAgICAgdGhpcy5fZGlzYWJsZU5leHRZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VuYWJsZU5leHRZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA8PSBtaW5ZZWFyICYmIHRoaXMubW9udGggPD0gbWluTW9udGgpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVQcmV2TW9udGgoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW5hYmxlUHJldk1vbnRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA+PSBtYXhZZWFyICYmIHRoaXMubW9udGggPj0gbWF4TW9udGgpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVOZXh0TW9udGgoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW5hYmxlTmV4dE1vbnRoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVuZGVyRGF5cygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlIGNhbGVuZGFyIHBvc2l0aW9uXG4gICAqIEBtZXRob2QgX2FkanVzdFBvc2l0aW9uXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBfYWRqdXN0UG9zaXRpb24oKSB7XG4gICAgdmFyIHdpZHRoID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5vZmZzZXRIZWlnaHQsXG4gICAgICB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuICAgICAgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxcbiAgICAgIHNjcm9sbFRvcCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgbGVmdCwgdG9wLCBjbGllbnRSZWN0O1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgIHRvcCA9IGNsaWVudFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gdGhpcy5lbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICB0b3AgPSB0aGlzLmVsZW1lbnQub2Zmc2V0VG9wICsgdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgIHdoaWxlICgodGhpcy5lbGVtZW50ID0gdGhpcy5lbGVtZW50Lm9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgbGVmdCArPSB0aGlzLmVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICAgICAgdG9wICs9IHRoaXMuZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5zdHlsZS50b3AgPSB0b3AgKyAncHgnO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgZGF0ZVBpY2tlclxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICogQHJldHVybiB7W3R5cGVdfSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyLnJlbW92ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZGF0ZSBhY2NvcmRpbmcgdG8gcGFzc2VkIGZvcm1hdFxuICAgKiBAbWV0aG9kIF9nZXRGb3JtYXRlZERhdGVcbiAgICogQHBhcmFtIHtEYXRlfSAgIGR0ICAgICBEYXRlIG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IEZvcm1hdCBzdHJpbmdcbiAgICogICAgICBkICAgIC0gZGF5IG9mIG1vbnRoXG4gICAqICAgICAgZGQgICAtIDItZGlnaXRzIGRheSBvZiBtb250aFxuICAgKiAgICAgIEQgICAgLSBkYXkgb2Ygd2Vla1xuICAgKiAgICAgIG0gICAgLSBtb250aCBudW1iZXJcbiAgICogICAgICBtbSAgIC0gMi1kaWdpdHMgbW9udGggbnVtYmVyXG4gICAqICAgICAgTSAgICAtIHNob3J0IG1vbnRoIG5hbWVcbiAgICogICAgICBNTSAgIC0gZnVsbCBtb250aCBuYW1lXG4gICAqICAgICAgeXkgICAtIDItZGlnaXRzIHllYXIgbnVtYmVyXG4gICAqICAgICAgeXl5eSAtIDQtZGlnaXRzIHllYXIgbnVtYmVyXG4gICAqL1xuICBfZ2V0Rm9ybWF0ZWREYXRlKGR0LCBmb3JtYXQpIHtcbiAgICB2YXIgaXRlbXMgPSB7XG4gICAgICBkOiBkdC5nZXREYXRlKCksXG4gICAgICBkZDogZHQuZ2V0RGF0ZSgpLFxuICAgICAgRDogZHQuZ2V0RGF5KCksXG4gICAgICBtOiBkdC5nZXRNb250aCgpICsgMSxcbiAgICAgIG1tOiBkdC5nZXRNb250aCgpICsgMSxcbiAgICAgIE06IGR0LmdldE1vbnRoKCksXG4gICAgICBNTTogZHQuZ2V0TW9udGgoKSxcbiAgICAgIHl5OiBkdC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyKC0yKSxcbiAgICAgIHl5eXk6IGR0LmdldEZ1bGxZZWFyKClcbiAgICB9O1xuXG4gICAgaXRlbXMuZGQgPCAxMCAmJiAoaXRlbXMuZGQgPSAnMCcgKyBpdGVtcy5kZCk7XG4gICAgaXRlbXMubW0gPCAxMCAmJiAoaXRlbXMubW0gPSAnMCcgKyBpdGVtcy5tbSk7XG4gICAgaXRlbXMuRCA9IGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLndlZWtkYXlzW2l0ZW1zLkQgPyBpdGVtcy5EIC0gMSA6IDZdO1xuICAgIGl0ZW1zLk0gPSBkYXRlcGlja2VyX2xhbmdzW3RoaXMub3B0aW9ucy5sYW5nXS5tb250aHNTaG9ydFtpdGVtcy5NXTtcbiAgICBpdGVtcy5NTSA9IGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLm1vbnRoc1tpdGVtcy5NTV07XG5cbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoLyg/OltkbU1dezEsMn18RHx5eXl5fHl5KS9nLCBmdW5jdGlvbihtKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGl0ZW1zW21dICE9PSAndW5kZWZpbmVkJyA/IGl0ZW1zW21dIDogbTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBEYXRlIHN0cmluZyBiYXNlZCBvbiB0aGUgRGF0ZSBGb3JtYXQgZ2l2ZW5cbiAgICogQG1ldGhvZCBfcGFyc2VEYXRlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gICBkYXRlU3RyaW5nICAgICAgICAgIERhdGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSAge1tTdHJpbmd9ICAgW2Zvcm1hdD11bmRlZmluZWRdIERhdGUgRm9ybWF0XG4gICAqIEByZXR1cm4ge0RhdGV9ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUgT2JqZWN0IGluaXRpYWxpemVkIHdpdGggRGF0ZSBTdHJpbmcgYmFzZWQgb24gdGhlIERhdGUgRm9ybWF0XG4gICAqL1xuICBfcGFyc2VEYXRlKGRhdGVTdHJpbmcsIGZvcm1hdCA9IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gdGhpcy5vcHRpb25zLmRhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0UGF0dGVybiA9IC8oKD86bW0/KXwoPzpkZD8pfCg/Onl5eT95PykpW14wLTldKCg/Om1tPyl8KD86ZGQ/KXwoPzp5eXk/eT8pKVteMC05XSgoPzptbT8pfCg/OmRkPyl8KD86eXl5P3k/KSkvaTtcbiAgICBjb25zdCBkYXRlUGF0dGVybiA9IC8oXFxkKylbXjAtOV0oXFxkKylbXjAtOV0oXFxkKykvaTtcblxuICAgIGxldCBtYXRjaEZvcm1hdCA9IGZvcm1hdFBhdHRlcm4uZXhlYyhmb3JtYXQpO1xuICAgIGlmIChtYXRjaEZvcm1hdCkge1xuICAgICAgbGV0IG1hdGNoRGF0ZSA9IGRhdGVQYXR0ZXJuLmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAobWF0Y2hEYXRlKSB7XG4gICAgICAgIHN3aXRjaChtYXRjaEZvcm1hdFsxXVswXSkge1xuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgZGF0ZS5zZXREYXRlKG1hdGNoRGF0ZVsxXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGRhdGUuc2V0TW9udGgobWF0Y2hEYXRlWzFdIC0gMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIobWF0Y2hEYXRlWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoKG1hdGNoRm9ybWF0WzJdWzBdKSB7XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBkYXRlLnNldERhdGUobWF0Y2hEYXRlWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgZGF0ZS5zZXRNb250aChtYXRjaERhdGVbMl0gLSAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcihtYXRjaERhdGVbMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2gobWF0Y2hGb3JtYXRbM11bMF0pIHtcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShtYXRjaERhdGVbM10pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICBkYXRlLnNldE1vbnRoKG1hdGNoRGF0ZVszXSAtIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKG1hdGNoRGF0ZVszXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGdpdmVuIHllYXIgaXMgTGVhcFllYXIgb3Igbm90XG4gICAqIEBtZXRob2QgX2lzTGVhcFllYXJcbiAgICogQHBhcmFtICB7SW50ZWdlcn0gICB5ZWFyIFllYXIgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgIFRydWUgaWYgTGVhcFllYXIgdGhlbiBGYWxzZVxuICAgKi9cbiAgX2lzTGVhcFllYXIoeWVhcikge1xuICAgIC8vIHNvbHV0aW9uIGJ5IE1hdHRpIFZpcmtrdW5lbjogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDg4MTk1MVxuICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBtb250aFxuICAgKiBAbWV0aG9kIF9nZXREYXlzSW5Nb250aFxuICAgKiBAcGFyYW0gIHtJbnRlZ2VyfSAgICAgICB5ZWFyICBZZWFyIHRvIGNoZWNrIGlmIHdlIGFyZSBmYWNpbmcgYSBsZWFweWVhciBvciBub3RcbiAgICogQHBhcmFtICB7SW50ZWdlcn0gICAgICAgbW9udGggTW9udGggZm9yIHdoaWNoIHdlIHdhbnQgdG8ga25vdyB0aGUgYW1vdW50IG9mIGRheXNcbiAgICogQHJldHVybiB7SW50ZWdlcn0gICAgICAgICAgICAgIERheXMgYW1vdW50XG4gICAqL1xuICBfZ2V0RGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgICByZXR1cm4gWzMxLCB0aGlzLl9pc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vbnRoXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIHR3byBkYXRlc1xuICAgKiBAbWV0aG9kIF9jb21wYXJlRGF0ZXNcbiAgICogQHBhcmFtICB7RGF0ZX0gICAgIGEgRmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gICAqIEBwYXJhbSAge0RhdGV9ICAgICBiIFNlY29uZCBEYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgKiBAcmV0dXJuIHtCb29sZWFufSAgICBUcnVlIGlmIGRhdGVzIGFyZSBlcXVhbCB0aGVuIGZhbHNlXG4gICAqL1xuICBfY29tcGFyZURhdGVzKGEsIGIpIHtcbiAgICAvLyB3ZWFrIGRhdGUgY29tcGFyaXNvblxuICAgIGEuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgYi5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRhdGVQaWNrZXI7XG4iXX0= + `}_renderDays(){const a=new Date;let c='',d=this._getDaysInMonth(this.year,this.month),e=new Date(this.year,this.month,1).getDay();'undefined'!=typeof this.options.onRender&&null!=this.options.onRender&&this.options.onRender&&this.options.onRender(this),0e&&(e+=7));let f=d+e,g=f;for(;7=d+e,o=!1;i.setHours(0,0,0,0),j||(k=!1,l=!1),(i.getMonth()!==this.month||this.options.minDate&&(i.getTime()this.options.maxDate.getTime()))&&(o=!0),c+=this._renderDay(i.getDate(),this.month,this.year,j,m,o,n,!1,k,l)}this.datePickerCalendarBody.insertAdjacentHTML('beforeend',c),this.datePickerCalendarDays=this.datePickerCalendarBody.querySelectorAll('.calendar-date'),this._bindDaysEvents()}prevMonth(){this.month-=1,this._refreshCalendar()}_disablePrevMonth(){this.datePickerCalendarNavPreviousMonth.setAttribute('disabled','disabled')}_enablePrevMonth(){this.datePickerCalendarNavPreviousMonth.removeAttribute('disabled')}nextMonth(){this.month+=1,this._refreshCalendar()}_disableNextMonth(){this.datePickerCalendarNavNextMonth.setAttribute('disabled','disabled')}_enableNextMonth(){this.datePickerCalendarNavNextMonth.removeAttribute('disabled')}prevYear(){this.year-=1,this._refreshCalendar()}_disablePrevYear(){this.datePickerCalendarNavPreviousYear.setAttribute('disabled','disabled')}_enablePrevYear(){this.datePickerCalendarNavPreviousYear.removeAttribute('disabled')}nextYear(){this.year+=1,this._refreshCalendar()}_disableNextYear(){this.datePickerCalendarNavNextYear.setAttribute('disabled','disabled')}_enableNextYear(){this.datePickerCalendarNavNextYear.removeAttribute('disabled')}show(){this.element.value&&(this.options.startDate=this._parseDate(this.element.value)),this.month=this.options.startDate.getMonth(),this.year=this.options.startDate.getFullYear(),this.day=this.options.startDate.getDate(),this._refreshCalendar(),'undefined'!=typeof this.options.onOpen&&null!=this.options.onOpen&&this.options.onOpen&&this.options.onOpen(this),this.datePickerContainer.classList.add('is-active'),this.options.overlay||this._adjustPosition(),this.open=!0}hide(){this.open=!1,'undefined'!=typeof this.options.onClose&&null!=this.options.onClose&&this.options.onClose&&this.options.onClose(this),this.datePickerContainer.classList.remove('is-active')}_refreshCalendar(){var c=Math.abs;0>this.month&&(this.year-=Math.ceil(c(this.month)/12),this.month+=12),11=g?this._disableNextYear():this._enableNextYear(),this.year<=e&&this.month<=d?this._disablePrevMonth():this._enablePrevMonth(),this.year>=g&&this.month>=f?this._disableNextMonth():this._enableNextMonth(),this._renderDays(),this}_adjustPosition(){var a,b,c,d=this.datePickerCalendar.offsetWidth,e=this.datePickerCalendar.offsetHeight,f=window.innerWidth||document.documentElement.clientWidth,g=window.innerHeight||document.documentElement.clientHeight,h=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop;if('function'==typeof this.element.getBoundingClientRect)c=this.element.getBoundingClientRect(),a=c.left+window.pageXOffset,b=c.bottom+window.pageYOffset;else for(a=this.element.offsetLeft,b=this.element.offsetTop+this.element.offsetHeight;this.element=this.element.offsetParent;)a+=this.element.offsetLeft,b+=this.element.offsetTop;this.datePickerCalendar.style.position='absolute',this.datePickerCalendar.style.left=a+'px',this.datePickerCalendar.style.top=b+'px'}destroy(){this.datePickerCalendar.remove()}_getFormatedDate(a,c){var d={d:a.getDate(),dd:a.getDate(),D:a.getDay(),m:a.getMonth()+1,mm:a.getMonth()+1,M:a.getMonth(),MM:a.getMonth(),yy:a.getFullYear().toString().substr(-2),yyyy:a.getFullYear()};return 10>d.dd&&(d.dd='0'+d.dd),10>d.mm&&(d.mm='0'+d.mm),d.D=b[this.options.lang].weekdays[d.D?d.D-1:6],d.M=b[this.options.lang].monthsShort[d.M],d.MM=b[this.options.lang].months[d.MM],c.replace(/(?:[dmM]{1,2}|D|yyyy|yy)/g,function(a){return'undefined'==typeof d[a]?a:d[a]})}_parseDate(a,b=void 0){const c=new Date;c.setHours(0,0,0,0),b||(b=this.options.dateFormat);const d=/((?:mm?)|(?:dd?)|(?:yyy?y?))[^0-9]((?:mm?)|(?:dd?)|(?:yyy?y?))[^0-9]((?:mm?)|(?:dd?)|(?:yyy?y?))/i,e=/(\d+)[^0-9](\d+)[^0-9](\d+)/i;let f=d.exec(b);if(f){let b=e.exec(a);if(b){switch(f[1][0]){case'd':c.setDate(b[1]);break;case'm':c.setMonth(b[1]-1);break;case'y':c.setFullYear(b[1]);}switch(f[2][0]){case'd':c.setDate(b[2]);break;case'm':c.setMonth(b[2]-1);break;case'y':c.setFullYear(b[2]);}switch(f[3][0]){case'd':c.setDate(b[3]);break;case'm':c.setMonth(b[3]-1);break;case'y':c.setFullYear(b[3]);}}}return c}_isLeapYear(a){return 0==a%4&&0!=a%100||0==a%400}_getDaysInMonth(a,b){return[31,this._isLeapYear(a)?29:28,31,30,31,30,31,31,30,31,30,31][b]}_compareDates(c,a){return c.setHours(0,0,0,0),a.setHours(0,0,0,0),c.getTime()===a.getTime()}}}); +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9leHRlbnNpb24uanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjZMQUFBLG1CQTRJdUQsQUFBSSxLQUFDLEFBQUssTUE1STdELEFBQWdCLEVBQUcsQ0FDckIsQUFBRSxHQUFFLENBQ0YsQUFBUyxVQUFFLEFBQUMsRUFDWixBQUFhLGNBQUUsQUFBZ0IsaUJBQy9CLEFBQVMsVUFBRSxBQUFZLGFBQ3ZCLEFBQU0sT0FBRSxDQUFDLEFBQVMsVUFBRSxBQUFVLFdBQUUsQUFBTyxRQUFFLEFBQU8sUUFBRSxBQUFLLE1BQUUsQUFBTSxPQUFFLEFBQU0sT0FBRSxBQUFRLFNBQUUsQUFBVyxZQUFFLEFBQVMsVUFBRSxBQUFVLFdBQUUsQUFBVSxBQUFDLFlBQ2xJLEFBQVcsWUFBRSxDQUFDLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxBQUFDLE9BQ2pHLEFBQVEsU0FBRSxDQUFDLEFBQVEsU0FBRSxBQUFRLFNBQUUsQUFBUyxVQUFFLEFBQVcsWUFBRSxBQUFVLFdBQUUsQUFBUSxTQUFFLEFBQVUsQUFBQyxZQUN4RixBQUFhLGNBQUUsQ0FBQyxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsQUFDakUsUUFDRCxBQUFFLEdBQUUsQ0FDRixBQUFTLFVBQUUsQUFBQyxFQUNaLEFBQWEsY0FBRSxBQUFrQiw4RkFDakMsQUFBUyxVQUFFLEFBQWlCLHdGQUM1QixBQUFNLE9BQUUsQ0FBQyxBQUFRLHVDQUFFLEFBQVMsNkNBQUUsQUFBTSwyQkFBRSxBQUFRLHVDQUFFLEFBQUsscUJBQUUsQUFBTSwyQkFBRSxBQUFNLDJCQUFFLEFBQVEsdUNBQUUsQUFBVSxtREFBRSxBQUFTLDZDQUFFLEFBQVEsdUNBQUUsQUFBUyxBQUFDLDhDQUM1SCxBQUFXLFlBQUUsQ0FBQyxBQUFLLHFCQUFFLEFBQUsscUJBQUUsQUFBSyxxQkFBRSxBQUFLLHFCQUFFLEFBQUsscUJBQUUsQUFBSyxxQkFBRSxBQUFLLHFCQUFFLEFBQUsscUJBQUUsQUFBSyxxQkFBRSxBQUFLLHFCQUFFLEFBQUsscUJBQUUsQUFBSyxBQUFDLHNCQUNqRyxBQUFRLFNBQUUsQ0FBQyxBQUFhLHFFQUFFLEFBQWEscUVBQUUsQUFBUyw2Q0FBRSxBQUFPLGlDQUFFLEFBQVMsNkNBQUUsQUFBUyw2Q0FBRSxBQUFTLEFBQUMsOENBQzdGLEFBQWEsY0FBRSxDQUFDLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksQUFBQyxBQUMxRCxpQkFDRCxBQUFFLEdBQUUsQ0FDRixBQUFTLFVBQUUsQUFBQyxFQUNaLEFBQWEsY0FBRSxBQUFnQix1QkFDL0IsQUFBUyxVQUFFLEFBQWMsZUFDekIsQUFBTSxPQUFFLENBQUMsQUFBUyxVQUFFLEFBQVMsYUFBRSxBQUFNLE9BQUUsQUFBTyxRQUFFLEFBQUssTUFBRSxBQUFNLE9BQUUsQUFBUyxVQUFFLEFBQU0sVUFBRSxBQUFXLFlBQUUsQUFBUyxVQUFFLEFBQVUsV0FBRSxBQUFVLEFBQUMsZUFDakksQUFBVyxZQUFFLENBQUMsQUFBSyxNQUFFLEFBQUssU0FBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFNLE9BQUUsQUFBTSxPQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsVUFDbkcsQUFBUSxTQUFFLENBQUMsQUFBVSxXQUFFLEFBQU8sUUFBRSxBQUFPLFFBQUUsQUFBVSxXQUFFLEFBQU8sUUFBRSxBQUFVLFdBQUUsQUFBUSxBQUFDLFVBQ25GLEFBQWEsY0FBRSxDQUFDLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssQUFBQyxBQUNqRSxRQUNELEFBQUUsR0FBRSxDQUNGLEFBQVMsVUFBRSxBQUFDLEVBQ1osQUFBYSxjQUFFLEFBQWtCLG1CQUNqQyxBQUFTLFVBQUUsQUFBZ0Isb0JBQzNCLEFBQU0sT0FBRSxDQUFDLEFBQVEsU0FBRSxBQUFTLFVBQUUsQUFBTSxVQUFFLEFBQU8sUUFBRSxBQUFLLE1BQUUsQUFBTSxPQUFFLEFBQU0sT0FBRSxBQUFRLFNBQUUsQUFBVyxZQUFFLEFBQVMsVUFBRSxBQUFVLFdBQUUsQUFBVSxBQUFDLFlBQy9ILEFBQVcsWUFBRSxDQUFDLEFBQUssTUFBRSxBQUFNLE9BQUUsQUFBTSxVQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBTSxPQUFFLEFBQU0sT0FBRSxBQUFLLE1BQUUsQUFBTSxPQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxBQUFDLE9BQ3RHLEFBQVEsU0FBRSxDQUFDLEFBQVMsVUFBRSxBQUFRLFNBQUUsQUFBVSxXQUFFLEFBQVUsV0FBRSxBQUFZLGFBQUUsQUFBUyxVQUFFLEFBQVMsQUFBQyxXQUMzRixBQUFhLGNBQUUsQ0FBQyxBQUFJLEtBQUUsQUFBSSxLQUFFLEFBQUksS0FBRSxBQUFJLEtBQUUsQUFBSSxLQUFFLEFBQUksS0FBRSxBQUFJLEFBQUMsQUFDMUQsT0FDRCxBQUFFLEdBQUUsQ0FDRixBQUFTLFVBQUUsQUFBQyxFQUNaLEFBQWEsY0FBRSxBQUFXLGVBQzFCLEFBQVMsVUFBRSxBQUFZLGFBQ3ZCLEFBQU0sT0FBRSxDQUFDLEFBQU0sT0FBRSxBQUFPLGFBQUUsQUFBTSxPQUFFLEFBQU8sUUFBRSxBQUFPLGFBQUUsQUFBUyxVQUFFLEFBQVEsU0FBRSxBQUFTLGVBQUUsQUFBTyxXQUFFLEFBQU0sT0FBRSxBQUFPLGFBQUUsQUFBUSxBQUFDLGVBQ3ZILEFBQVcsWUFBRSxDQUFDLEFBQUssTUFBRSxBQUFLLFdBQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLFdBQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxBQUFDLE9BQ2pHLEFBQVEsU0FBRSxDQUFDLEFBQU8sUUFBRSxBQUFXLFlBQUUsQUFBTSxZQUFFLEFBQVUsbUJBQUUsQUFBVSxnQkFBRSxBQUFNLE9BQUUsQUFBVyxBQUFDLGFBQ3JGLEFBQWEsY0FBRSxDQUFDLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssU0FBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssQUFBQyxBQUNqRSxRQUNELEFBQUUsR0FBRSxDQUNGLEFBQVMsVUFBRSxBQUFDLEVBQ1osQUFBYSxjQUFFLEFBQWlCLGtCQUNoQyxBQUFTLFVBQUUsQUFBZSxnQkFDMUIsQUFBTSxPQUFFLENBQUMsQUFBUyxVQUFFLEFBQVUsV0FBRSxBQUFPLFFBQUUsQUFBUSxTQUFFLEFBQVEsU0FBRSxBQUFRLFNBQUUsQUFBUSxTQUFFLEFBQVEsU0FBRSxBQUFXLFlBQUUsQUFBUyxVQUFFLEFBQVUsV0FBRSxBQUFVLEFBQUMsWUFDMUksQUFBVyxZQUFFLENBQUMsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsT0FDakcsQUFBUSxTQUFFLENBQUMsQUFBVSxXQUFFLEFBQVEsWUFBRSxBQUFTLGFBQUUsQUFBVyxlQUFFLEFBQVMsYUFBRSxBQUFTLGFBQUUsQUFBUSxBQUFDLFVBQ3hGLEFBQWEsY0FBRSxDQUFDLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssQUFBQyxBQUNqRSxRQUNELEFBQUUsR0FBRSxDQUNGLEFBQVMsVUFBRSxBQUFDLEVBQ1osQUFBYSxjQUFFLEFBQWUsaUZBQzlCLEFBQVMsVUFBRSxBQUFZLCtEQUN2QixBQUFNLE9BQUUsQ0FBQyxBQUFRLHVDQUFFLEFBQVksK0RBQUUsQUFBUSx1Q0FBRSxBQUFRLHVDQUFFLEFBQVMsNkNBQUUsQUFBVSxtREFBRSxBQUFTLDZDQUFFLEFBQVMsNkNBQUUsQUFBUyw2Q0FBRSxBQUFRLHVDQUFFLEFBQVcseURBQUUsQUFBUyxBQUFDLDhDQUM5SSxBQUFXLFlBQUUsQ0FBQyxBQUFNLGlCQUFFLEFBQU0saUJBQUUsQUFBTyx1QkFBRSxBQUFPLHVCQUFFLEFBQU0saUJBQUUsQUFBTyx1QkFBRSxBQUFNLGlCQUFFLEFBQU0saUJBQUUsQUFBTSxpQkFBRSxBQUFNLGlCQUFFLEFBQU0saUJBQUUsQUFBTSxBQUFDLGtCQUNoSCxBQUFRLFNBQUUsQ0FBQyxBQUFTLDZDQUFFLEFBQVEsdUNBQUUsQUFBUSx1Q0FBRSxBQUFLLHFCQUFFLEFBQVUsbURBQUUsQUFBTyxpQ0FBRSxBQUFPLEFBQUMsa0NBQzlFLEFBQWEsY0FBRSxDQUFDLEFBQUssZ0JBQUUsQUFBSSxVQUFFLEFBQUksVUFBRSxBQUFJLFVBQUUsQUFBSyxnQkFBRSxBQUFJLFVBQUUsQUFBSSxBQUFDLEFBQzVELFlBQ0QsQUFBRSxHQUFFLENBQ0YsQUFBUyxVQUFFLEFBQUMsRUFDWixBQUFhLGNBQUUsQUFBZSxxQkFDOUIsQUFBUyxVQUFFLEFBQWtCLHdCQUM3QixBQUFNLE9BQUUsQ0FBQyxBQUFVLGdCQUFFLEFBQVMsZUFBRSxBQUFRLGNBQUUsQUFBUyxVQUFFLEFBQVMsVUFBRSxBQUFRLFNBQUUsQUFBUSxTQUFFLEFBQVMsVUFBRSxBQUFPLFFBQUUsQUFBVSxXQUFFLEFBQVMsVUFBRSxBQUFVLEFBQUMsWUFDMUksQUFBVyxZQUFFLENBQUMsQUFBSyxNQUFFLEFBQU0sT0FBRSxBQUFLLFdBQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsT0FDbEcsQUFBUSxTQUFFLENBQUMsQUFBVSxXQUFFLEFBQWEsY0FBRSxBQUFRLFNBQUUsQUFBUyxVQUFFLEFBQVUsZ0JBQUUsQUFBTyxRQUFFLEFBQVEsQUFBQyxVQUN6RixBQUFhLGNBQUUsQ0FBQyxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxXQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsQUFDakUsUUFDRCxBQUFFLEdBQUUsQ0FDRixBQUFTLFVBQUUsQUFBQyxFQUNaLEFBQWEsY0FBRSxBQUFjLG9CQUM3QixBQUFTLFVBQUUsQUFBZSxxQkFDMUIsQUFBTSxPQUFFLENBQUMsQUFBUSxTQUFFLEFBQVMsVUFBRSxBQUFNLE9BQUUsQUFBTyxRQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQVEsU0FBRSxBQUFXLFlBQUUsQUFBUyxVQUFFLEFBQVUsV0FBRSxBQUFVLEFBQUMsWUFDN0gsQUFBVyxZQUFFLENBQUMsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsT0FDakcsQUFBUSxTQUFFLENBQUMsQUFBUyxVQUFFLEFBQVksYUFBRSxBQUFRLFNBQUUsQUFBTyxRQUFFLEFBQVUsZ0JBQUUsQUFBTyxRQUFFLEFBQVEsQUFBQyxVQUNyRixBQUFhLGNBQUUsQ0FBQyxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxXQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsQUFDakUsUUFDRCxBQUFPLFFBQUUsQ0FDUCxBQUFTLFVBQUUsQUFBQyxFQUNaLEFBQWEsY0FBRSxBQUFLLHFCQUNwQixBQUFTLFVBQUUsQUFBSyxxQkFDaEIsQUFBTSxPQUFFLENBQUMsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUsscUJBQUUsQUFBSyxBQUFDLHNCQUNsRixBQUFXLFlBQUUsQ0FBQyxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSyxxQkFBRSxBQUFLLEFBQUMsc0JBQ3ZGLEFBQVEsU0FBRSxDQUFDLEFBQUsscUJBQUUsQUFBSyxxQkFBRSxBQUFLLHFCQUFFLEFBQUsscUJBQUUsQUFBSyxxQkFBRSxBQUFLLHFCQUFFLEFBQUssQUFBQyxzQkFDM0QsQUFBYSxjQUFFLENBQUMsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxlQUFFLEFBQUksZUFBRSxBQUFJLGVBQUUsQUFBSSxBQUFDLEFBQzFELGlCQUNELEFBQUUsR0FBRSxDQUNGLEFBQVMsVUFBRSxBQUFDLEVBQ1osQUFBYSxjQUFFLEFBQWMsZUFDN0IsQUFBUyxVQUFFLEFBQWEsaUJBQ3hCLEFBQU0sT0FBRSxDQUFDLEFBQU8sUUFBRSxBQUFTLFVBQUUsQUFBTyxRQUFFLEFBQU8sUUFBRSxBQUFNLE9BQUUsQUFBTyxRQUFFLEFBQU8sUUFBRSxBQUFRLFNBQUUsQUFBWSxhQUFFLEFBQVMsVUFBRSxBQUFXLFlBQUUsQUFBVyxBQUFDLGFBQ3JJLEFBQVcsWUFBRSxDQUFDLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxBQUFDLE9BQ2pHLEFBQVEsU0FBRSxDQUFDLEFBQVMsVUFBRSxBQUFPLFFBQUUsQUFBUSxTQUFFLEFBQVcsZUFBRSxBQUFRLFNBQUUsQUFBUyxVQUFFLEFBQVEsQUFBQyxhQUNwRixBQUFhLGNBQUUsQ0FBQyxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLE1BQUUsQUFBSyxNQUFFLEFBQUssTUFBRSxBQUFLLEFBQUMsQUFDakUsQUFDRixlQUVELEFBQU0sQUFBVSxPQUNkLEFBQVcsQUFBQyxBQUFRLGNBQUUsQUFBTyxFQUFHLEFBQUUsR0FBRSxDQU1sQyxHQUpBLEFBQUksS0FBQyxBQUFXLFlBQUksQUFBYyxnQkFBSSxBQUFNLE9BQXpCLENBQTZCLEFBQVksYUFBRyxBQUFPLEFBQUMsUUFFdkUsQUFBSSxLQUFDLEFBQU8sUUFBdUIsQUFBUSxRQUE1QixBQUFPLEFBQVEsV0FBZ0IsQUFBUSxTQUFDLEFBQWEsQUFBQyxBQUFRLEFBQUMsQUFBRyxBQUFRLEFBQUMsbUJBRXRGLENBQUMsQUFBSSxLQUFDLEFBQU8sQUFBRSxRQUNqQixLQUFNLElBQUksQUFBSyxPQUFDLEFBQXdELEFBQUMsQUFBQyxBQUMzRSwwREFHRCxBQUFJLEtBQUMsQUFBTyxRQUFHLEFBQU0sT0FBQyxBQUFNLE9BQUMsQUFBRSxHQUFFLENBQy9CLEFBQVMsVUFBRSxHQUFJLEFBQUksQUFBRSxNQUNyQixBQUFPLFFBQUUsQUFBSSxLQUNiLEFBQU8sUUFBRSxBQUFJLEtBQ2IsQUFBVSxXQUFFLEFBQVksYUFDeEIsQUFBSSxLQUFFLEFBQUksS0FDVixBQUFPLEFBQUUsQUFBSyxXQUNkLEFBQW1CLEFBQUUsQUFBSSx1QkFDekIsQUFBYSxBQUFFLEFBQUksaUJBRW5CLEFBQVEsU0FBRSxBQUFJLEtBQ2QsQUFBTSxPQUFFLEFBQUksS0FDWixBQUFPLFFBQUUsQUFBSSxLQUNiLEFBQVEsU0FBRSxBQUFJLEFBQ2YsQUFBRSxBQUFPLEFBQUMsQUFBQyxTQUdaLEFBQUksS0FBQyxBQUFLLEFBQUUsQUFBQyxPQUNkLENBT0QsQUFBSyxPQUFHLENBeUJOLE1BeEJBLEFBQUksTUFBQyxBQUFHLElBQUcsQUFBWSxhQUFJLEdBQUksQUFBSSxBQUFFLE9BQVgsQ0FBYSxBQUFPLEFBQUUsWUFBYyxBQUFJLFVBQUMsQUFBTSxBQUFFLEFBQUcsQUFBSSxBQUFDLEFBQUssQUFBQyxBQUFJLEFBQUMsQUFBQyxBQUFDLFVBQ2hHLEFBQUksS0FBQyxBQUFJLEtBQTBDLEFBQVcsV0FBbEQsUUFBTyxBQUFnQixHQUFDLEFBQUksS0FBQyxBQUFJLEFBQUMsTUFBK0IsQUFBSSxBQUFDLEFBRWxGLEtBRmlFLEFBQUksS0FBQyxBQUFJLEtBRXRFLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFFLFFBQ3RCLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUyxVQUFHLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFLLEFBQUMsQUFBQyxBQUM5RCxRQUVELEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUyxVQUFHLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQWdCLGlCQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUyxVQUFFLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBVSxBQUFDLEFBQUMsQUFBQyxBQUVqSCxhQUFJLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxBQUFFLFVBQ3hCLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFHLEFBQUksS0FBQyxBQUFVLFdBQUMsQUFBSSxLQUFDLEFBQWdCLGlCQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFFLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBVSxBQUFDLEFBQUMsQUFBQyxBQUM5RyxBQUNELGNBQUksQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUUsVUFDeEIsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLFFBQUcsQUFBSSxLQUFDLEFBQVUsV0FBQyxBQUFJLEtBQUMsQUFBZ0IsaUJBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLFFBQUUsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFVLEFBQUMsQUFBQyxBQUFDLEFBQzlHLGNBRUQsQUFBSSxLQUFDLEFBQUssTUFBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVMsVUFBQyxBQUFRLEFBQUUsQUFBQyxXQUMvQyxBQUFJLEtBQUMsQUFBSSxLQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUyxVQUFDLEFBQVcsQUFBRSxBQUFDLGNBQ2pELEFBQUksS0FBQyxBQUFHLElBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFTLFVBQUMsQUFBTyxBQUFFLEFBQUMsVUFDNUMsQUFBSSxLQUFDLEFBQUksQUFBRyxBQUFLLEFBQUMsUUFFbEIsQUFBSSxLQUFDLEFBQU0sQUFBRSxBQUFDLFNBQ2QsQUFBSSxLQUFDLEFBQVcsQUFBRSxBQUFDLGNBRVosQUFBSSxBQUFDLElBQ2IsQ0FPRCxBQUFNLGNBRUUsQUFBVSxBQUFHLEdBQUMsQUFDVDtpQkFBRSxBQUFJLEtBQUMsQUFBRyxHQUFDLEFBQW9CLHVCQUFFLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFHLEFBQU8sUUFBRyxBQUFFLEVBQUMsQUFDNUU7VUFBRSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQU8sUUFBRyxBQUFzQyx1Q0FBRyxBQUFFLEVBQUMsQUFTbkM7Ozs7Ozs7Ozs0Q0FBRSxBQUFnQixFQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLE1BQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsTUFBQyxBQU8zRDs7Ozs7OzswQ0FBRSxBQUFJLEtBQUMsQUFBRyxHQUFDLEFBUVY7Ozs7Ozs7OzJDQUFFLEFBQUksS0FBQyxBQUFJLElBQUMsQUFTWjs7Ozs7Ozs7OzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBQzVCOzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBQzVCOzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBQzVCOzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBQzVCOzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBQzVCOzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBQzVCOzJDQUFFLEFBQUksS0FBQyxBQUFXLFlBQUMsQUFBQyxBQUFFLEFBQUksQUFBQyxLQUFDLEFBTWpFLEFBQUMsQUFBQzs7Ozs7O0tBL0NGLENBa0RBLEFBQVEsU0FBQyxBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBVyxBQUFFLEFBQVUsQUFBQyxBQUFDLGNBcERuRCxDQXVEUCxBQUFJLEtBQUMsQUFBbUIsb0JBQUcsQUFBUSxTQUFDLEFBQWMsZUFBQyxBQUFJLEtBQUMsQUFBRyxBQUFDLEFBQUMsS0FDN0QsQUFBSSxLQUFDLEFBQWtCLG1CQUFHLEFBQUksS0FBQyxBQUFtQixvQkFBQyxBQUFhLGNBQUMsQUFBVyxBQUFDLEFBQUMsQUFDOUUsYUFBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxVQUN4QixBQUFJLEtBQUMsQUFBaUIsa0JBQUcsQUFBSSxLQUFDLEFBQW1CLG9CQUFDLEFBQWEsY0FBQyxBQUFtQixBQUFDLEFBQUMscUJBQ3JGLEFBQUksS0FBQyxBQUFxQixzQkFBRyxBQUFJLEtBQUMsQUFBbUIsb0JBQUMsQUFBYSxjQUFDLEFBQWMsQUFBQyxBQUFDLEFBQ3JGLGlCQUNELEFBQUksS0FBQyxBQUFxQixzQkFBRyxBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBYSxjQUFDLEFBQWUsQUFBQyxBQUFDLGlCQUNwRixBQUFJLEtBQUMsQUFBMEIsMkJBQUcsQUFBSSxLQUFDLEFBQWtCLG1CQUFDLEFBQWEsY0FBQyxBQUFpQixBQUFDLEFBQUMsbUJBQzNGLEFBQUksS0FBQyxBQUF5QiwwQkFBRyxBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBYSxjQUFDLEFBQWdCLEFBQUMsQUFBQyxrQkFDekYsQUFBSSxLQUFDLEFBQXdCLHlCQUFHLEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFhLGNBQUMsQUFBZSxBQUFDLEFBQUMsaUJBQ3ZGLEFBQUksS0FBQyxBQUFrQyxtQ0FBRyxBQUFJLEtBQUMsQUFBcUIsc0JBQUMsQUFBYSxjQUFDLEFBQThCLEFBQUMsQUFBQyxnQ0FDbkgsQUFBSSxLQUFDLEFBQThCLCtCQUFHLEFBQUksS0FBQyxBQUFxQixzQkFBQyxBQUFhLGNBQUMsQUFBMEIsQUFBQyxBQUFDLDRCQUMzRyxBQUFJLEtBQUMsQUFBaUMsa0NBQUcsQUFBSSxLQUFDLEFBQXFCLHNCQUFDLEFBQWEsY0FBQyxBQUE2QixBQUFDLEFBQUMsK0JBQ2pILEFBQUksS0FBQyxBQUE2Qiw4QkFBRyxBQUFJLEtBQUMsQUFBcUIsc0JBQUMsQUFBYSxjQUFDLEFBQXlCLEFBQUMsQUFBQywyQkFDekcsQUFBSSxLQUFDLEFBQXdCLHlCQUFHLEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFhLGNBQUMsQUFBa0IsQUFBQyxBQUFDLG9CQUMxRixBQUFJLEtBQUMsQUFBc0IsdUJBQUcsQUFBSSxLQUFDLEFBQWtCLG1CQUFDLEFBQWEsY0FBQyxBQUFnQixBQUFDLEFBQUMsaUJBQ3ZGLENBT0QsQUFBVyxhQUFHLENBRVosQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFFLEFBQUMsQUFBQyxLQUFLLENBQ3JELEFBQUMsRUFBQyxBQUFjLEFBQUUsQUFBQyxBQUVuQixpQkFBSSxBQUFJLEtBQUMsQUFBSSxBQUFFLEtBQ2IsQUFBSSxLQUFDLEFBQUksQUFBRSxBQUFDLEFBQ2IsQUFBTSxPQUNMLEFBQUksS0FBQyxBQUFJLEFBQUUsQUFBQyxBQUNiLE1BQ0YsQUFBQyxBQUFDLEFBRUgsR0FBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxBQUV4QixVQUFJLEFBQUksS0FBQyxBQUFxQixBQUFFLHVCQUM5QixBQUFJLEtBQUMsQUFBcUIsc0JBQUMsQUFBZ0IsaUJBQUMsQUFBSSxLQUFDLEFBQVcsWUFBRSxBQUFDLEFBQUMsS0FBSyxDQUNuRSxBQUFDLEVBQUMsQUFBYyxBQUFFLEFBQUMsaUJBQ25CLEFBQUksS0FBQyxBQUFJLEFBQUUsQUFBQyxNQUNiLEFBQUMsQUFBQyxBQUNKLEFBRUQsR0FBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQW1CLEFBQUUscUJBQ3BDLEFBQUksS0FBQyxBQUFpQixrQkFBQyxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFFLEFBQUMsQUFBQyxLQUFLLENBQy9ELEFBQUMsRUFBQyxBQUFjLEFBQUUsQUFBQyxpQkFDbkIsQUFBSSxLQUFDLEFBQUksQUFBRSxBQUFDLE1BQ2IsQUFBQyxBQUFDLEFBQ0osQUFDRixJQUdELEFBQUksS0FBQyxBQUFpQyxrQ0FBQyxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFFLEFBQUMsQUFBQyxLQUFLLENBQy9FLEFBQUMsRUFBQyxBQUFjLEFBQUUsQUFBQyxpQkFDbkIsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLFVBQ2pCLEFBQUMsQUFBQyxHQUNILEFBQUksS0FBQyxBQUE2Qiw4QkFBQyxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFFLEFBQUMsQUFBQyxLQUFLLENBQzNFLEFBQUMsRUFBQyxBQUFjLEFBQUUsQUFBQyxpQkFDbkIsQUFBSSxLQUFDLEFBQVEsQUFBRSxBQUFDLFVBQ2pCLEFBQUMsQUFBQyxHQUdILEFBQUksS0FBQyxBQUFrQyxtQ0FBQyxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFFLEFBQUMsQUFBQyxLQUFLLENBQ2hGLEFBQUMsRUFBQyxBQUFjLEFBQUUsQUFBQyxpQkFDbkIsQUFBSSxLQUFDLEFBQVMsQUFBRSxBQUFDLFdBQ2xCLEFBQUMsQUFBQyxHQUNILEFBQUksS0FBQyxBQUE4QiwrQkFBQyxBQUFnQixpQkFBQyxBQUFJLEtBQUMsQUFBVyxZQUFFLEFBQUMsQUFBQyxLQUFLLENBQzVFLEFBQUMsRUFBQyxBQUFjLEFBQUUsQUFBQyxpQkFDbkIsQUFBSSxLQUFDLEFBQVMsQUFBRSxBQUFDLFdBQ2xCLEFBQUMsQUFBQyxFQUNKLENBT0QsQUFBZSxpQkFBRyxDQUNoQixBQUFFLEdBQUMsQUFBTyxRQUFDLEFBQUksS0FBQyxBQUFJLEtBQUMsQUFBc0IsdUJBQUUsQUFBQyxBQUFXLEtBQUssQ0FDNUQsQUFBVyxFQUFDLEFBQWdCLGlCQUFDLEFBQUksS0FBQyxBQUFXLFlBQUUsQUFBQyxBQUFDLEtBQUssQ0FFcEQsR0FEQSxBQUFDLEVBQUMsQUFBYyxBQUFFLEFBQUMsaUJBQ2YsQ0FBQyxBQUFDLEVBQUMsQUFBYSxjQUFDLEFBQVMsVUFBQyxBQUFRLFNBQUMsQUFBYSxBQUFDLGVBQUUsQ0FDdEQsR0FBSSxBQUFJLEdBQUcsQUFBQyxFQUFDLEFBQWEsY0FBQyxBQUFPLFFBQUMsQUFBSSxLQUFDLEFBQUssTUFBQyxBQUFHLEFBQUMsQUFBQyxBQUNuRCxLQUFJLEFBQUMsQUFBSSxBQUFFLEFBQUssQUFBRSxBQUFHLEFBQUMsQUFBRyxBQUFJLEFBQUMsQUFDOUIsVUFBb0MsQUFBVyxXQUEzQyxRQUFPLEFBQUksTUFBQyxBQUFPLFFBQUMsQUFBUSxVQUNMLEFBQUksSUFBN0IsQUFBSSxPQUFDLEFBQU8sUUFBQyxBQUFRLFVBQ3JCLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUSxBQUFFLFVBQ3ZCLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUSxTQUFDLEdBQUksQUFBSSxBQUFDLEFBQUksQUFBRSxBQUFLLEFBQUUsQUFBRyxBQUFDLEFBQUMsQUFBQyxBQUNuRCxjQUNELEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSyxNQUFHLEFBQUksS0FBQyxBQUFnQixpQkFBRSxHQUFJLEFBQUksQUFBQyxBQUFJLEFBQUUsQUFBSyxBQUFFLEFBQUcsQUFBQyxhQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBVSxBQUFDLEFBQUMsQUFDbEcsWUFBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQWEsQUFBRSxlQUM5QixBQUFJLEtBQUMsQUFBSSxBQUFFLEFBQUMsQUFDYixNQUNGLENBQ0YsQUFBQyxBQUFDLEVBQ0osQUFBQyxBQUFDLEVBQ0osQ0FTRCxBQUFXLEFBQUMsQUFBRyxjQUFFLEFBQUksQUFBRyxBQUFLLEtBQUUsS0FDN0IsQUFBRyxHQUFJLEFBQWdCLEVBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFJLEFBQUMsTUFBQyxBQUFTLEFBQUMsQUFDckQsVUFBYyxBQUFDLEFBQUUsQ0FBVixBQUFHLEtBQ1IsQUFBRyxHQUFJLEFBQUMsQUFBQyxBQUNWLEVBRUQsTUFBTyxBQUFJLEdBQUcsQUFBZ0IsRUFBQyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUksQUFBQyxNQUFDLEFBQWEsQUFBQyxBQUFHLEFBQUMsaUJBQUcsQUFBZ0IsRUFBQyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUksQUFBQyxNQUFDLEFBQVEsQUFBQyxBQUFHLEFBQUMsQUFBQyxXQUMxSCxDQUVELEFBQVUsQUFBQyxBQUFHLEFBQUUsQUFBSyxBQUFFLEFBQUksQUFBRSxBQUFVLEFBQUUsQUFBTyxBQUFFLEFBQVUsQUFBRSxBQUFPLEFBQUUsQUFBUyxBQUFFLEFBQVksQUFBRSxBQUFhLCtCQUFFLENBQzdHLE1BQVEsQUFDVTt3QkFBRyxBQUFFLEFBQUksR0FBUCxDQUFRLEFBQUMsQUFBRSxBQUFLLEtBQUMsQUFBQyxBQUFFLEFBQUcsS0FBQyxBQUFDLEVBQUMsQUFBc0IseUJBQUUsQUFBVSxFQUFHLEFBQWMsZUFBRyxBQUFFLEVBQUMsR0FBRSxBQUFTLEVBQUcsQUFBaUIsa0JBQUcsQUFBRSxFQUFDLEdBQUUsQUFBWSxFQUFHLEFBQXVCLHdCQUFHLEFBQUUsRUFBQyxHQUFFLEFBQWEsRUFBRyxBQUFxQixzQkFBRyxBQUFFLEVBQUMsQUFDM007a0NBQUUsQUFBTyxFQUFHLEFBQVcsWUFBRyxBQUFFLEVBQUMsR0FBRSxBQUFVLEVBQUcsQUFBWSxhQUFHLEFBQUUsRUFBQyxBQUFFLEFBQUUsQUFBRyxLQUYxRixDQUUyRixBQUVsRyxBQUFDLEFBQUM7O0tBQ0gsQ0FFRCxBQUFXLGFBQUcsQ0FDWixLQUFNLEFBQUcsR0FBRyxHQUFJLEFBQUksQUFBRSxBQUFDLE1BQ3ZCLEdBQUksQUFBSSxHQUFHLEFBQUUsQUFBQyxBQUVkLEdBQUksQUFBWSxFQUFHLEFBQUksS0FBQyxBQUFlLGdCQUFDLEFBQUksS0FBQyxBQUFJLEtBQUUsQUFBSSxLQUFDLEFBQUssQUFBQyxPQUM1RCxBQUFNLEVBQUcsR0FBSSxBQUFJLE1BQUMsQUFBSSxLQUFDLEFBQUksS0FBRSxBQUFJLEtBQUMsQUFBSyxNQUFFLEFBQUMsQUFBQyxHQUFDLEFBQU0sQUFBRSxBQUFDLEFBR3ZELFNBQW9DLEFBQVcsV0FBM0MsUUFBTyxBQUFJLE1BQUMsQUFBTyxRQUFDLEFBQVEsVUFDTCxBQUFJLElBQTdCLEFBQUksT0FBQyxBQUFPLFFBQUMsQUFBUSxVQUNyQixBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVEsQUFBRSxVQUN2QixBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVEsU0FBQyxBQUFJLEFBQUMsQUFBQyxBQUM3QixBQUdELE1BQW9ELEFBQUMsQUFBRSxDQUFuRCxBQUFnQixHQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLE1BQUMsQUFBUyxZQUMvQyxBQUFNLEdBQUksQUFBZ0IsRUFBQyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUksQUFBQyxNQUFDLEFBQVMsQUFBQyxBQUN4RCxVQUFhLEFBQUMsQUFBRSxDQUFaLEFBQU0sS0FDUixBQUFNLEdBQUksQUFBQyxBQUFDLEFBQ2IsQUFDRixJQUVELEdBQUksQUFBSyxHQUFHLEFBQVksQUFBRyxBQUFNLElBQy9CLEFBQUssQUFBRyxBQUFLLEFBQUMsQUFDaEIsU0FBZSxBQUFDLEFBQUUsQ0FBWCxBQUFLLElBQ1YsQUFBSyxHQUFJLEFBQUMsQUFBQyxBQUNaLEVBRUQsQUFBSyxHQUFJLEFBQUMsQUFBRyxBQUFLLEFBQUMsSUFDbkIsSUFBSyxHQUFJLEFBQUMsR0FBRyxBQUFDLEVBQUUsQUFBQyxBQUFHLEFBQUssSUFBRSxBQUFDLEFBQUUsSUFBRSxDQUM5QixHQUFJLEFBQUcsR0FBRyxHQUFJLEFBQUksTUFBQyxBQUFJLEtBQUMsQUFBSSxLQUFFLEFBQUksS0FBQyxBQUFLLE1BQUUsQUFBQyxHQUFJLEFBQUMsQUFBRyxBQUFNLEFBQUMsQUFBQyxBQUN6RCxBQUFTLEFBQUcsQUFBSyxNQUNqQixBQUFVLEVBQUcsQUFBSSxLQUFDLEFBQWEsQUFBQyxBQUFHLGdCQUFFLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUyxBQUFDLFdBQzVELEFBQVksQUFBRyxBQUFLLEtBQ3BCLEFBQWEsQUFBRyxBQUFLLEtBQ3JCLEFBQU8sRUFBRyxBQUFJLEtBQUMsQUFBYSxBQUFDLEFBQUcsQUFBRSxBQUFHLEFBQUMsbUJBQ3RDLEFBQU8sRUFBRyxBQUFDLEFBQUcsQUFBTSxLQUFJLEFBQUMsR0FBSyxBQUFZLEFBQUcsQUFBTSxBQUFDLElBQ3BELEFBQVUsQUFBRyxBQUFLLEFBQUMsS0FFckIsQUFBRyxFQUFDLEFBQVEsU0FBQyxBQUFDLEVBQUUsQUFBQyxFQUFFLEFBQUMsRUFBRSxBQUFDLEFBQUMsQUFBQyxBQUV6QixBQUFJLEFBQUMsQUFBVSxBQUFFLE9BQ2YsQUFBWSxBQUFHLEFBQUssQUFBQyxLQUNyQixBQUFhLEFBQUcsQUFBSyxBQUFDLEFBQ3ZCLEFBRUQsT0FBSSxBQUFHLEVBQUMsQUFBUSxBQUFFLGFBQUssQUFBSSxLQUFDLEFBQUssT0FBSyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQU8sVUFDdkQsQUFBRyxFQUFDLEFBQU8sQUFBRSxVQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxXQUFJLEFBQUcsRUFBQyxBQUFPLEFBQUUsVUFBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUUsQUFBQyxBQUFDLEFBQUUsY0FDckcsQUFBVSxBQUFHLEFBQUksQUFBQyxBQUNuQixNQUVELEFBQUksR0FBSSxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQUcsRUFBQyxBQUFPLEFBQUUsVUFBRSxBQUFJLEtBQUMsQUFBSyxNQUFFLEFBQUksS0FBQyxBQUFJLEFBQUUsQUFBVSxBQUFFLEFBQU8sQUFBRSxBQUFVLEFBQUUsQUFBTyxBQUFFLEFBQVMsQUFBRSxBQUFZLEFBQUUsQUFBYSxBQUFDLEFBQUMsb0JBQ2pKLENBRUQsQUFBSSxLQUFDLEFBQXNCLHVCQUFDLEFBQWtCLG1CQUFDLEFBQVcsQUFBRSxBQUFJLEFBQUMsQUFBQyxlQUNsRSxBQUFJLEtBQUMsQUFBc0IsdUJBQUcsQUFBSSxLQUFDLEFBQXNCLHVCQUFDLEFBQWdCLGlCQUFDLEFBQWdCLEFBQUMsQUFBQyxrQkFDN0YsQUFBSSxLQUFDLEFBQWUsQUFBRSxBQUFDLGlCQUN4QixDQU9ELEFBQVMsV0FBRyxDQUNWLEFBQUksS0FBQyxBQUFLLE9BQUksQUFBQyxBQUFDLEVBQ2hCLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsa0JBQ3pCLENBRUQsQUFBaUIsbUJBQUcsQ0FDbEIsQUFBSSxLQUFDLEFBQWtDLG1DQUFDLEFBQVksYUFBQyxBQUFVLFdBQUUsQUFBVSxBQUFDLEFBQUMsV0FDOUUsQ0FFRCxBQUFnQixrQkFBRyxDQUNqQixBQUFJLEtBQUMsQUFBa0MsbUNBQUMsQUFBZSxnQkFBQyxBQUFVLEFBQUMsQUFBQyxXQUNyRSxDQU9ELEFBQVMsV0FBRyxDQUNWLEFBQUksS0FBQyxBQUFLLE9BQUksQUFBQyxBQUFDLEVBQ2hCLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsa0JBQ3pCLENBRUQsQUFBaUIsbUJBQUcsQ0FDbEIsQUFBSSxLQUFDLEFBQThCLCtCQUFDLEFBQVksYUFBQyxBQUFVLFdBQUUsQUFBVSxBQUFDLEFBQUMsV0FDMUUsQ0FFRCxBQUFnQixrQkFBRyxDQUNqQixBQUFJLEtBQUMsQUFBOEIsK0JBQUMsQUFBZSxnQkFBQyxBQUFVLEFBQUMsQUFBQyxXQUNqRSxDQU9ELEFBQVEsVUFBRyxDQUNULEFBQUksS0FBQyxBQUFJLE1BQUksQUFBQyxBQUFDLEVBQ2YsQUFBSSxLQUFDLEFBQWdCLEFBQUUsQUFBQyxrQkFDekIsQ0FFRCxBQUFnQixrQkFBRyxDQUNqQixBQUFJLEtBQUMsQUFBaUMsa0NBQUMsQUFBWSxhQUFDLEFBQVUsV0FBRSxBQUFVLEFBQUMsQUFBQyxXQUM3RSxDQUVELEFBQWUsaUJBQUcsQ0FDaEIsQUFBSSxLQUFDLEFBQWlDLGtDQUFDLEFBQWUsZ0JBQUMsQUFBVSxBQUFDLEFBQUMsV0FDcEUsQ0FPRCxBQUFRLFVBQUcsQ0FDVCxBQUFJLEtBQUMsQUFBSSxNQUFJLEFBQUMsQUFBQyxFQUNmLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsa0JBQ3pCLENBRUQsQUFBZ0Isa0JBQUcsQ0FDakIsQUFBSSxLQUFDLEFBQTZCLDhCQUFDLEFBQVksYUFBQyxBQUFVLFdBQUUsQUFBVSxBQUFDLEFBQUMsV0FDekUsQ0FFRCxBQUFlLGlCQUFHLENBQ2hCLEFBQUksS0FBQyxBQUE2Qiw4QkFBQyxBQUFlLGdCQUFDLEFBQVUsQUFBQyxBQUFDLFdBQ2hFLENBT0QsQUFBSSxNQUFHLEFBRUwsQ0FBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQUssQUFBRSxRQUN0QixBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVMsVUFBRyxBQUFJLEtBQUMsQUFBVSxXQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSyxBQUFDLEFBQUMsQUFDOUQsUUFDRCxBQUFJLEtBQUMsQUFBSyxNQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBUyxVQUFDLEFBQVEsQUFBRSxBQUFDLFdBQy9DLEFBQUksS0FBQyxBQUFJLEtBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFTLFVBQUMsQUFBVyxBQUFFLEFBQUMsY0FDakQsQUFBSSxLQUFDLEFBQUcsSUFBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVMsVUFBQyxBQUFPLEFBQUUsQUFBQyxVQUM1QyxBQUFJLEtBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBRXhCLG1CQUFrQyxBQUFXLFdBQXpDLFFBQU8sQUFBSSxNQUFDLEFBQU8sUUFBQyxBQUFNLFFBQ0wsQUFBSSxJQUEzQixBQUFJLE9BQUMsQUFBTyxRQUFDLEFBQU0sUUFDbkIsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFNLEFBQUUsUUFDckIsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFNLE9BQUMsQUFBSSxBQUFDLEFBQUMsQUFDM0IsTUFFRCxBQUFJLEtBQUMsQUFBbUIsb0JBQUMsQUFBUyxVQUFDLEFBQUcsSUFBQyxBQUFXLEFBQUMsQUFBQyxBQUNwRCxBQUFJLGFBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLEFBQUUsU0FDekIsQUFBSSxLQUFDLEFBQWUsQUFBRSxBQUFDLEFBQ3hCLGtCQUNELEFBQUksS0FBQyxBQUFJLEFBQUcsQUFBSSxBQUFDLE9BQ2xCLENBT0QsQUFBSSxNQUFHLENBQ0wsQUFBSSxLQUFDLEFBQUksQUFBRyxBQUFLLEFBQUMsQUFDbEIsUUFBbUMsQUFBVyxXQUExQyxRQUFPLEFBQUksTUFBQyxBQUFPLFFBQUMsQUFBTyxTQUNMLEFBQUksSUFBNUIsQUFBSSxPQUFDLEFBQU8sUUFBQyxBQUFPLFNBQ3BCLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxBQUFFLFNBQ3RCLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFDLEFBQUksQUFBQyxBQUFDLEFBQzVCLE1BQ0QsQUFBSSxLQUFDLEFBQW1CLG9CQUFDLEFBQVMsVUFBQyxBQUFNLE9BQUMsQUFBVyxBQUFDLEFBQUMsWUFDeEQsQ0FPRCxBQUFnQixrQkFBRyxBQUNqQixPQUN5QixBQUFJLEtBQUMsQUFBRyxJQURoQixBQUFDLEFBQUUsQ0FBaEIsQUFBSSxNQUFDLEFBQUssUUFDWixBQUFJLEtBQUMsQUFBSSxNQUFJLEFBQUksS0FBQyxBQUFJLE9BQVUsQUFBSSxLQUFDLEFBQUssQUFBQyxPQUFHLEFBQUUsQUFBQyxBQUFDLElBQ2xELEFBQUksS0FBQyxBQUFLLE9BQUksQUFBRSxBQUFDLEFBQ2xCLEFBQ0QsSUFBaUIsQUFBRSxBQUFFLEVBQWpCLEFBQUksTUFBQyxBQUFLLFFBQ1osQUFBSSxLQUFDLEFBQUksTUFBSSxBQUFJLEFBQUMsQUFBSyxFQUFDLEFBQUksQUFBQyxBQUFHLEVBQUMsQUFBSSxLQUFDLEFBQUssQUFBQyxPQUFHLEFBQUUsQUFBQyxBQUFDLElBQ25ELEFBQUksS0FBQyxBQUFLLE9BQUksQUFBRSxBQUFDLEFBQ2xCLElBQ0QsQUFBSSxLQUFDLEFBQTBCLDJCQUFDLEFBQVMsVUFBRyxBQUFnQixFQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLE1BQUMsQUFBTSxPQUFDLEFBQUksS0FBQyxBQUFLLEFBQUMsQUFBQyxPQUNuRyxBQUFJLEtBQUMsQUFBeUIsMEJBQUMsQUFBUyxVQUFHLEFBQUksS0FBQyxBQUFJLEFBQUMsS0FDckQsQUFBSSxLQUFDLEFBQXdCLHlCQUFDLEFBQVMsVUFBRyxBQUFJLEtBQUMsQUFBRyxBQUFDLElBQ25ELEFBQUksS0FBQyxBQUFzQix1QkFBQyxBQUFTLFVBQUcsQUFBRSxBQUFDLEdBRTNDLEdBQUksQUFBUSxHQUFHLEFBQUMsRUFDZCxBQUFPLEVBQUcsQUFBQyxFQUNYLEFBQVEsRUFBRyxBQUFFLEdBQ2IsQUFBTyxFQUFHLEFBQUksQUFBQyxBQUVqQixLQWtDQSxNQWxDSSxBQUFJLE1BQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxVQUN4QixBQUFRLEVBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLFFBQUMsQUFBUSxBQUFFLEFBQUMsV0FDM0MsQUFBTyxFQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFDLEFBQVcsQUFBRSxBQUFDLEFBQzlDLEFBQ0QsZUFBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQU8sQUFBRSxVQUN4QixBQUFRLEVBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFPLFFBQUMsQUFBUSxBQUFFLEFBQUMsV0FDM0MsQUFBTyxFQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBTyxRQUFDLEFBQVcsQUFBRSxBQUFDLEFBQzlDLEFBRUQsZUFBSSxBQUFJLEtBQUMsQUFBSSxBQUFJLEFBQU8sQUFBRSxRQUN4QixBQUFJLEtBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQ3pCLEFBQU0sbUJBQ0wsQUFBSSxLQUFDLEFBQWUsQUFBRSxBQUFDLEFBQ3hCLEFBRUQsa0JBQUksQUFBSSxLQUFDLEFBQUksQUFBSSxBQUFPLEFBQUUsUUFDeEIsQUFBSSxLQUFDLEFBQWdCLEFBQUUsQUFBQyxBQUN6QixBQUFNLG1CQUNMLEFBQUksS0FBQyxBQUFlLEFBQUUsQUFBQyxBQUN4QixBQUVELGtCQUFJLEFBQUksS0FBQyxBQUFJLEFBQUksQUFBTyxTQUFJLEFBQUksS0FBQyxBQUFLLEFBQUksQUFBUSxBQUFFLFNBQ2xELEFBQUksS0FBQyxBQUFpQixBQUFFLEFBQUMsQUFDMUIsQUFBTSxvQkFDTCxBQUFJLEtBQUMsQUFBZ0IsQUFBRSxBQUFDLEFBQ3pCLEFBRUQsbUJBQUksQUFBSSxLQUFDLEFBQUksQUFBSSxBQUFPLFNBQUksQUFBSSxLQUFDLEFBQUssQUFBSSxBQUFRLEFBQUUsU0FDbEQsQUFBSSxLQUFDLEFBQWlCLEFBQUUsQUFBQyxBQUMxQixBQUFNLG9CQUNMLEFBQUksS0FBQyxBQUFnQixBQUFFLEFBQUMsQUFDekIsbUJBRUQsQUFBSSxLQUFDLEFBQVcsQUFBRSxBQUFDLGNBQ1osQUFBSSxBQUFDLElBQ2IsQ0FPRCxBQUFlLGlCQUFHLENBQ2hCLEdBS0UsQUFBSSxHQUFFLEFBQUcsRUFBRSxBQUFVLEFBQUMsRUFMcEIsQUFBSyxFQUFHLEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFXLFlBQzdDLEFBQU0sRUFBRyxBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBWSxhQUM3QyxBQUFhLEVBQUcsQUFBTSxPQUFDLEFBQVUsWUFBSSxBQUFRLFNBQUMsQUFBZSxnQkFBQyxBQUFXLFlBQ3pFLEFBQWMsRUFBRyxBQUFNLE9BQUMsQUFBVyxhQUFJLEFBQVEsU0FBQyxBQUFlLGdCQUFDLEFBQVksYUFDNUUsQUFBUyxFQUFHLEFBQU0sT0FBQyxBQUFXLGFBQUksQUFBUSxTQUFDLEFBQUksS0FBQyxBQUFTLFdBQUksQUFBUSxTQUFDLEFBQWUsZ0JBQUMsQUFBUyxVQUdqRyxHQUFrRCxBQUFVLEFBQUUsVUFBMUQsUUFBTyxBQUFJLE1BQUMsQUFBTyxRQUFDLEFBQXFCLHNCQUMzQyxBQUFVLEVBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFxQixBQUFFLEFBQUMsd0JBQ2xELEFBQUksRUFBRyxBQUFVLEVBQUMsQUFBSSxLQUFHLEFBQU0sT0FBQyxBQUFXLEFBQUMsWUFDNUMsQUFBRyxFQUFHLEFBQVUsRUFBQyxBQUFNLE9BQUcsQUFBTSxPQUFDLEFBQVcsQUFBQyxBQUM5QyxBQUFNLHFCQUNMLEFBQUksRUFBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVUsQUFBQyxXQUMvQixBQUFHLEVBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFTLFVBQUcsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFZLEFBQUMsQUFDekQsYUFBUSxBQUFJLEtBQUMsQUFBTyxRQUFHLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBWSxBQUFHLGNBQ2pELEFBQUksR0FBSSxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVUsQUFBQyxXQUNoQyxBQUFHLEdBQUksQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFTLEFBQUMsQUFDL0IsQUFDRixVQUVELEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFLLE1BQUMsQUFBUSxTQUFHLEFBQVUsQUFBQyxXQUNwRCxBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBSyxNQUFDLEFBQUksS0FBRyxBQUFJLEVBQUcsQUFBSSxBQUFDLEtBQ2pELEFBQUksS0FBQyxBQUFrQixtQkFBQyxBQUFLLE1BQUMsQUFBRyxJQUFHLEFBQUcsRUFBRyxBQUFJLEFBQUMsSUFDaEQsQ0FPRCxBQUFPLFNBQUcsQ0FDUixBQUFJLEtBQUMsQUFBa0IsbUJBQUMsQUFBTSxBQUFFLEFBQUMsUUFDbEMsQ0FpQkQsQUFBZ0IsQUFBQyxBQUFFLEFBQUUsQUFBTSxxQkFBRSxDQUMzQixHQUFJLEFBQUssR0FBRyxDQUNWLEFBQUMsRUFBRSxBQUFFLEVBQUMsQUFBTyxBQUFFLFVBQ2YsQUFBRSxHQUFFLEFBQUUsRUFBQyxBQUFPLEFBQUUsVUFDaEIsQUFBQyxFQUFFLEFBQUUsRUFBQyxBQUFNLEFBQUUsU0FDZCxBQUFDLEVBQUUsQUFBRSxFQUFDLEFBQVEsQUFBRSxXQUFHLEFBQUMsRUFDcEIsQUFBRSxHQUFFLEFBQUUsRUFBQyxBQUFRLEFBQUUsV0FBRyxBQUFDLEVBQ3JCLEFBQUMsRUFBRSxBQUFFLEVBQUMsQUFBUSxBQUFFLFdBQ2hCLEFBQUUsR0FBRSxBQUFFLEVBQUMsQUFBUSxBQUFFLFdBQ2pCLEFBQUUsR0FBRSxBQUFFLEVBQUMsQUFBVyxBQUFFLGNBQUMsQUFBUSxBQUFFLFdBQUMsQUFBTSxPQUFDLENBQUMsQUFBQyxBQUFDLEdBQzFDLEFBQUksS0FBRSxBQUFFLEVBQUMsQUFBVyxBQUFFLEFBQ3ZCLEFBQUMsZUFRRixNQU5XLEFBQUUsR0FBYixBQUFLLEdBQUMsQUFBRSxLQUFVLEFBQUssRUFBQyxBQUFFLEdBQUcsQUFBRyxJQUFHLEFBQUssRUFBQyxBQUFFLEFBQUMsQUFBQyxJQUNsQyxBQUFFLEVBQWIsQUFBSyxHQUFDLEFBQUUsS0FBVSxBQUFLLEVBQUMsQUFBRSxHQUFHLEFBQUcsSUFBRyxBQUFLLEVBQUMsQUFBRSxBQUFDLEFBQUMsSUFDN0MsQUFBSyxFQUFDLEFBQUMsRUFBRyxBQUFnQixFQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLE1BQUMsQUFBUSxTQUFDLEFBQUssRUFBQyxBQUFDLEVBQUcsQUFBSyxFQUFDLEFBQUMsRUFBRyxBQUFDLEVBQUcsQUFBQyxBQUFDLEFBQUMsR0FDbEYsQUFBSyxFQUFDLEFBQUMsRUFBRyxBQUFnQixFQUFDLEFBQUksS0FBQyxBQUFPLFFBQUMsQUFBSSxBQUFDLE1BQUMsQUFBVyxZQUFDLEFBQUssRUFBQyxBQUFDLEFBQUMsQUFBQyxHQUNuRSxBQUFLLEVBQUMsQUFBRSxHQUFHLEFBQWdCLEVBQUMsQUFBSSxLQUFDLEFBQU8sUUFBQyxBQUFJLEFBQUMsTUFBQyxBQUFNLE9BQUMsQUFBSyxFQUFDLEFBQUUsQUFBQyxBQUFDLElBRXpELEFBQU0sRUFBQyxBQUFPLFFBQUMsQUFBMkIsNEJBQUUsQUFBUyxBQUFDLFdBQUUsQ0FDN0QsTUFBMkIsQUFBVyxXQUEvQixRQUFPLEFBQUssQUFBQyxBQUFDLEFBQUMsUUFBbUIsQUFBSyxBQUFDLEFBQUMsQUFBQyxBQUFHLEFBQUMsQUFBQyxJQUN2RCxBQUFDLEFBQUMsRUFDSixDQVNELEFBQVUsQUFBQyxBQUFVLGFBQUUsQUFBTSxBQUFHLEFBQVMsU0FBRSxDQUN6QyxLQUFNLEFBQUksR0FBRyxHQUFJLEFBQUksQUFBRSxBQUFDLE1BQ3hCLEFBQUksRUFBQyxBQUFRLFNBQUMsQUFBQyxFQUFFLEFBQUMsRUFBRSxBQUFDLEVBQUUsQUFBQyxBQUFDLEFBQUMsQUFFMUIsQUFBSSxBQUFDLEFBQU0sQUFBRSxPQUNYLEFBQU0sRUFBRyxBQUFJLEtBQUMsQUFBTyxRQUFDLEFBQVUsQUFBQyxBQUNsQyxZQUVELEtBQU0sQUFBYSxHQUFHLEFBQW1HLEFBQUMsQUFDMUgsb0dBQU0sQUFBVyxFQUFHLEFBQThCLEFBQUMsK0JBRW5ELEdBQUksQUFBVyxHQUFHLEFBQWEsRUFBQyxBQUFJLEFBQUMsQUFBTSxBQUFDLEFBQUMsUUFDN0MsQUFBSSxBQUFXLEtBQUUsQ0FDZixHQUFJLEFBQVMsR0FBRyxBQUFXLEVBQUMsQUFBSSxBQUFDLEFBQVUsQUFBQyxBQUFDLFFBQzdDLEFBQUksQUFBUyxLQUFFLENBQ2IsT0FBTyxBQUFXLEVBQUMsQUFBQyxBQUFDLEdBQUMsQUFBQyxBQUFDLElBQ3RCLElBQUssQUFBRyxJQUNOLEFBQUksRUFBQyxBQUFPLFFBQUMsQUFBUyxFQUFDLEFBQUMsQUFBQyxBQUFDLEFBQUMsSUFDM0IsQUFBTSxNQUNSLElBQUssQUFBRyxJQUNOLEFBQUksRUFBQyxBQUFRLFNBQUMsQUFBUyxFQUFDLEFBQUMsQUFBQyxHQUFHLEFBQUMsQUFBQyxBQUFDLEdBQ2hDLEFBQU0sTUFDUixJQUFLLEFBQUcsSUFDTixBQUFJLEVBQUMsQUFBVyxZQUFDLEFBQVMsRUFBQyxBQUFDLEFBQUMsQUFBQyxBQUFDLEFBQy9CLEFBQU0sQUFDVCxLQUVELE9BQU8sQUFBVyxFQUFDLEFBQUMsQUFBQyxHQUFDLEFBQUMsQUFBQyxJQUN0QixJQUFLLEFBQUcsSUFDTixBQUFJLEVBQUMsQUFBTyxRQUFDLEFBQVMsRUFBQyxBQUFDLEFBQUMsQUFBQyxBQUFDLElBQzNCLEFBQU0sTUFDUixJQUFLLEFBQUcsSUFDTixBQUFJLEVBQUMsQUFBUSxTQUFDLEFBQVMsRUFBQyxBQUFDLEFBQUMsR0FBRyxBQUFDLEFBQUMsQUFBQyxHQUNoQyxBQUFNLE1BQ1IsSUFBSyxBQUFHLElBQ04sQUFBSSxFQUFDLEFBQVcsWUFBQyxBQUFTLEVBQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxBQUMvQixBQUFNLEFBQ1QsS0FFRCxPQUFPLEFBQVcsRUFBQyxBQUFDLEFBQUMsR0FBQyxBQUFDLEFBQUMsSUFDdEIsSUFBSyxBQUFHLElBQ04sQUFBSSxFQUFDLEFBQU8sUUFBQyxBQUFTLEVBQUMsQUFBQyxBQUFDLEFBQUMsQUFBQyxJQUMzQixBQUFNLE1BQ1IsSUFBSyxBQUFHLElBQ04sQUFBSSxFQUFDLEFBQVEsU0FBQyxBQUFTLEVBQUMsQUFBQyxBQUFDLEdBQUcsQUFBQyxBQUFDLEFBQUMsR0FDaEMsQUFBTSxNQUNSLElBQUssQUFBRyxJQUNOLEFBQUksRUFBQyxBQUFXLFlBQUMsQUFBUyxFQUFDLEFBQUMsQUFBQyxBQUFDLEFBQUMsQUFDL0IsQUFBTSxBQUNULEtBQ0YsQ0FDRixDQUVELEFBQU8sQUFBSSxBQUFDLFFBQ2IsQ0FRRCxBQUFXLEFBQUMsQUFBSSxjQUFFLENBRWhCLE1BQW9CLEFBQUMsRUFBZCxBQUFJLElBQUcsQUFBQyxHQUF5QixBQUFDLENBQWhCLEFBQUksSUFBRyxBQUFHLEtBQXlCLEFBQUMsQUFBQyxDQUFqQixBQUFJLElBQUcsQUFBRyxHQUN4RCxDQVNELEFBQWUsQUFBQyxBQUFJLEFBQUUsQUFBSyxvQkFBRSxDQUMzQixNQUFPLENBQUMsQUFBRSxHQUFFLEFBQUksS0FBQyxBQUFXLEFBQUMsQUFBSSxBQUFDLGVBQUcsQUFBRSxHQUFHLEFBQUUsR0FBRSxBQUFFLEdBQUUsQUFBRSxHQUFFLEFBQUUsR0FBRSxBQUFFLEdBQUUsQUFBRSxHQUFFLEFBQUUsR0FBRSxBQUFFLEdBQUUsQUFBRSxHQUFFLEFBQUUsR0FBRSxBQUFFLEFBQUMsQUFBQyxBQUFLLEFBQUMsQUFBQyxNQUM5RixDQVNELEFBQWEsQUFBQyxBQUFDLEFBQUUsQUFBQyxrQkFBRSxDQUlsQixNQUZBLEFBQUMsR0FBQyxBQUFRLFNBQUMsQUFBQyxFQUFFLEFBQUMsRUFBRSxBQUFDLEVBQUUsQUFBQyxBQUFDLEFBQUMsR0FDdkIsQUFBQyxFQUFDLEFBQVEsU0FBQyxBQUFDLEVBQUUsQUFBQyxFQUFFLEFBQUMsRUFBRSxBQUFDLEFBQUMsQUFBQyxHQUNoQixBQUFDLEVBQUMsQUFBTyxBQUFFLFlBQUssQUFBQyxFQUFDLEFBQU8sQUFBRSxBQUFDLFNBQ3BDLEFBQ0YsQ0FwcEJnQiIsImZpbGUiOiJidWxtYS1jYWxlbmRhci5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGF0ZXBpY2tlcl9sYW5ncyA9IHtcbiAgZW46IHtcbiAgICB3ZWVrU3RhcnQ6IDEsXG4gICAgcHJldmlvdXNNb250aDogJ1ByZXZpb3VzIE1vbnRoJyxcbiAgICBuZXh0TW9udGg6ICdOZXh0IE1vbnRoJyxcbiAgICBtb250aHM6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLFxuICAgIG1vbnRoc1Nob3J0OiBbJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJywgJ0p1bCcsICdBdWcnLCAnU2VwJywgJ09jdCcsICdOb3YnLCAnRGVjJ10sXG4gICAgd2Vla2RheXM6IFsnU3VuZGF5JywgJ01vbmRheScsICdUdWVzZGF5JywgJ1dlZG5lc2RheScsICdUaHVyc2RheScsICdGcmlkYXknLCAnU2F0dXJkYXknXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUnLCAnRnJpJywgJ1NhdCddXG4gIH0sXG4gIHJ1OiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICfQn9GA0LXQtNGL0LTRg9GJ0LjQuSDQvNC10YHRj9GGJyxcbiAgICBuZXh0TW9udGg6ICfQodC70LXQtNGD0Y7RidC40Lkg0LzQtdGB0Y/RhicsXG4gICAgbW9udGhzOiBbJ9Cv0L3QstCw0YDRjCcsICfQpNC10LLRgNCw0LvRjCcsICfQnNCw0YDRgicsICfQkNC/0YDQtdC70YwnLCAn0JzQsNC5JywgJ9CY0Y7QvdGMJywgJ9CY0Y7Qu9GMJywgJ9CQ0LLQs9GD0YHRgicsICfQodC10L3RgtGP0LHRgNGMJywgJ9Ce0LrRgtGP0LHRgNGMJywgJ9Cd0L7Rj9Cx0YDRjCcsICfQlNC10LrQsNCx0YDRjCddLFxuICAgIG1vbnRoc1Nob3J0OiBbJ9Cv0L3QsicsICfQpNC10LInLCAn0JzQsNGAJywgJ9CQ0L/RgCcsICfQnNCw0LknLCAn0JjRjtC9JywgJ9CY0Y7QuycsICfQkNCy0LMnLCAn0KHQtdC9JywgJ9Ce0LrRgicsICfQndC+0Y8nLCAn0JTQtdC6J10sXG4gICAgd2Vla2RheXM6IFsn0JLQvtGB0LrRgNC10YHQtdC90YzQtScsICfQn9C+0L3QtdC00LXQu9GM0L3QuNC6JywgJ9CS0YLQvtGA0L3QuNC6JywgJ9Ch0YDQtdC00LAnLCAn0KfQtdGC0LLQtdGA0LMnLCAn0J/Rj9GC0L3QuNGG0LAnLCAn0KHRg9Cx0LHQvtGC0LAnXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ9CS0YEnLCAn0J/QvScsICfQktGCJywgJ9Ch0YAnLCAn0KfRgicsICfQn9GCJywgJ9Ch0LEnXVxuICB9LFxuICBmcjoge1xuICAgIHdlZWtTdGFydDogMSxcbiAgICBwcmV2aW91c01vbnRoOiAnTW9pcyBwcsOpY8OpZGVudCcsXG4gICAgbmV4dE1vbnRoOiAnTW9pcyBzdWl2YW50JyxcbiAgICBtb250aHM6IFsnSmFudmllcicsICdGw6l2cmllcicsICdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCAnQW/Du3QnLCAnU2VwdGVtYnJlJywgJ09jdG9icmUnLCAnTm92ZW1icmUnLCAnRMOpY2VtYnJlJ10sXG4gICAgbW9udGhzU2hvcnQ6IFsnSmFuJywgJ0bDqXYnLCAnTWFyJywgJ0F2cicsICdNYWknLCAnSnVpbicsICdKdWlsJywgJ0F1bycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEw6ljJ10sXG4gICAgd2Vla2RheXM6IFsnRGltYW5jaGUnLCAnTHVuZGknLCAnTWFyZGknLCAnTWVyY3JlZGknLCAnSmV1ZGknLCAnVmVuZHJlZGknLCAnU2FtZWRpJ10sXG4gICAgd2Vla2RheXNTaG9ydDogWydEaW0nLCAnTHVuJywgJ01hcicsICdNZXInLCAnSmV1JywgJ1ZlbicsICdTYW0nXVxuICB9LFxuICBkZToge1xuICAgIHdlZWtTdGFydDogMSxcbiAgICBwcmV2aW91c01vbnRoOiAnVm9yaGVyaWdlciBNb25hdCcsXG4gICAgbmV4dE1vbnRoOiAnTsOkY2hzdGVyIE1vbmF0JyxcbiAgICBtb250aHM6IFsnSmFudWFyJywgJ0ZlYnJ1YXInLCAnTcOkcnonLCAnQXByaWwnLCAnTWFpJywgJ0p1bmknLCAnSnVsaScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09rdG9iZXInLCAnTm92ZW1iZXInLCAnRGV6ZW1iZXInXSxcbiAgICBtb250aHNTaG9ydDogWydKYW4nLCAnRmVicicsICdNw6RyeicsICdBcHInLCAnTWFpJywgJ0p1bmknLCAnSnVsaScsICdBdWcnLCAnU2VwdCcsICdPa3QnLCAnTm92JywgJ0RleiddLFxuICAgIHdlZWtkYXlzOiBbJ1Nvbm50YWcnLCAnTW9udGFnJywgJ0RpZW5zdGFnJywgJ01pdHR3b2NoJywgJ0Rvbm5lcnN0YWcnLCAnRnJlaXRhZycsICdTYW1zdGFnJ10sXG4gICAgd2Vla2RheXNTaG9ydDogWydTbycsICdNbycsICdEaScsICdNaScsICdEbycsICdGcicsICdTYSddXG4gIH0sXG4gIHRyOiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICfDlm5jZWtpIEF5JyxcbiAgICBuZXh0TW9udGg6ICdHZWxlY2VrIEF5JyxcbiAgICBtb250aHM6IFsnT2NhaycsICfFnnViYXQnLCAnTWFydCcsICdOaXNhbicsICdNYXnEsXMnLCAnSGF6aXJhbicsICdUZW1tdXonLCAnQcSfdXN0b3MnLCAnRXlsw7xsJywgJ0VraW0nLCAnS2FzxLFtJywgJ0FyYWzEsWsnXSxcbiAgICBtb250aHNTaG9ydDogWydPY2EnLCAnxZ51YicsICdNYXInLCAnTmlzJywgJ01heScsICdIYXonLCAnVGVtJywgJ0HEn3UnLCAnRXlsJywgJ0VraScsICdLYXMnLCAnQXJhJ10sXG4gICAgd2Vla2RheXM6IFsnUGF6YXInLCAnUGF6YXJ0ZXNpJywgJ1NhbMSxJywgJ8OHYXLFn2FtYmEnLCAnUGVyxZ9lbWJlJywgJ0N1bWEnLCAnQ3VtYXJ0ZXNpJ10sXG4gICAgd2Vla2RheXNTaG9ydDogWydQYXonLCAnUHp0JywgJ1NhbCcsICfDh2FyJywgJ1BlcicsICdDdW0nLCAnQ210J11cbiAgfSxcbiAgaXQ6IHtcbiAgICB3ZWVrU3RhcnQ6IDEsXG4gICAgcHJldmlvdXNNb250aDogJ01lc2UgUHJlY2VkZW50ZScsXG4gICAgbmV4dE1vbnRoOiAnUHJvc3NpbW8gTWVzZScsXG4gICAgbW9udGhzOiBbJ0dlbm5haW8nLCAnRmViYnJhaW8nLCAnTWFyem8nLCAnQXByaWxlJywgJ01hZ2dpbycsICdHaXVnbm8nLCAnTHVnbGlvJywgJ0Fnb3N0bycsICdTZXR0ZW1icmUnLCAnT3R0b2JyZScsICdOb3ZlbWJyZScsICdEaWNlbWJyZSddLFxuICAgIG1vbnRoc1Nob3J0OiBbJ0dlbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYWcnLCAnR2l1JywgJ0x1ZycsICdBZ28nLCAnU2V0JywgJ090dCcsICdOb3YnLCAnRGljJ10sXG4gICAgd2Vla2RheXM6IFsnRG9tZW5pY2EnLCAnTHVuZWTDrCcsICdNYXJ0ZWTDrCcsICdNZXJjb2xlZMOsJywgJ0dpb3ZlZMOsJywgJ1ZlbmVyZMOsJywgJ1NhYmF0byddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsnRG9tJywgJ0x1bicsICdNYXInLCAnTWVyJywgJ0dpbycsICdWZW4nLCAnU2FiJ11cbiAgfSxcbiAgdGg6IHtcbiAgICB3ZWVrU3RhcnQ6IDEsXG4gICAgcHJldmlvdXNNb250aDogJ+C5gOC4lOC4t+C4reC4meC4geC5iOC4reC4meC4q+C4meC5ieC4sicsXG4gICAgbmV4dE1vbnRoOiAn4LmA4LiU4Li34Lit4LiZ4LiW4Lix4LiU4LmE4LibJyxcbiAgICBtb250aHM6IFsn4Lih4LiB4Lij4Liy4LiE4LihJywgJ+C4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jCcsICfguKHguLXguJnguLLguITguKEnLCAn4LmA4Lih4Lip4Liy4Lii4LiZJywgJ+C4nuC4pOC4qeC4oOC4suC4hOC4oScsICfguKHguLTguJbguLjguJnguLLguKLguJknLCAn4LiB4Lij4LiB4LiO4Liy4LiE4LihJywgJ+C4quC4tOC4h+C4q+C4suC4hOC4oScsICfguIHguLHguJnguKLguLLguKLguJknLCAn4LiV4Li44Lil4Liy4LiE4LihJywgJ+C4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mScsICfguJjguLHguJnguKfguLLguITguKEnXSxcbiAgICBtb250aHNTaG9ydDogWyfguKEu4LiELicsICfguIEu4LieLicsICfguKHguLUu4LiELicsICfguYDguKEu4LiiLicsICfguJ4u4LiELicsICfguKHguLQu4LiiLicsICfguIEu4LiELicsICfguKou4LiELicsICfguIEu4LiiLicsICfguJUu4LiELicsICfguJ4u4LiiLicsICfguJgu4LiELiddLFxuICAgIHdlZWtkYXlzOiBbJ+C4reC4suC4l+C4tOC4leC4ouC5jCcsICfguIjguLHguJnguJfguKPguYwnLCAn4Lit4Lix4LiH4LiE4Liy4LijJywgJ+C4nuC4uOC4mCcsICfguJ7guKTguKvguLHguKrguJrguJTguLUnLCAn4Lio4Li44LiB4Lij4LmMJywgJ+C5gOC4quC4suC4o+C5jCddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsn4Lit4LiyLicsICfguIguJywgJ+C4rS4nLCAn4LieLicsICfguJ7guKQuJywgJ+C4qC4nLCAn4LiqLiddXG4gIH0sXG4gIGhyOiB7XG4gICAgd2Vla1N0YXJ0OiAyLFxuICAgIHByZXZpb3VzTW9udGg6ICdQcm/FoWxpIG1qZXNlYycsXG4gICAgbmV4dE1vbnRoOiAnU2xpamVkZcSHaSBtamVzZWMnLFxuICAgIG1vbnRoczogWydzaWplxI1hbmonLCAndmVsamHEjWEnLCAnb8W+dWphaycsICd0cmF2YW5qJywgJ3N2aWJhbmonLCAnbGlwYW5qJywgJ3NycGFuaicsICdrb2xvdm96JywgJ3J1amFuJywgJ2xpc3RvcGFkJywgJ3N0dWRlbmknLCAncHJvc2luYWMnXSxcbiAgICBtb250aHNTaG9ydDogWydzaWonLCAndmVsaicsICdvxb51JywgJ3RyYScsICdzdmknLCAnbGlwJywgJ3NycCcsICdrb2wnLCAncnVqJywgJ2xpcycsICdzdHUnLCAncHJvJ10sXG4gICAgd2Vla2RheXM6IFsnbmVkamVsamEnLCAncG9uZWRqZWxqYWsnLCAndXRvcmFrJywgJ3NyaWplZGEnLCAnxI1ldHZydGFrJywgJ3BldGFrJywgJ3N1Ym90YSddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsnbmVkJywgJ3BvbicsICd1dG8nLCAnc3JpJywgJ8SNZXQnLCAncGV0JywgJ3N1YiddXG4gIH0sXG4gIHNyOiB7XG4gICAgd2Vla1N0YXJ0OiAyLFxuICAgIHByZXZpb3VzTW9udGg6ICdQcm/FoWxpIG1lc2VjJyxcbiAgICBuZXh0TW9udGg6ICdTbGVkZcSHaSBtZXNlYycsXG4gICAgbW9udGhzOiBbJ2phbnVhcicsICdmZWJydWFyJywgJ21hcnQnLCAnYXByaWwnLCAnbWFqJywgJ2p1bicsICdqdWwnLCAnYXZndXN0JywgJ3NlcHRlbWJhcicsICdva3RvYmFyJywgJ25vdmVtYmFyJywgJ2RlY2VtYmFyJ10sXG4gICAgbW9udGhzU2hvcnQ6IFsnamFuJywgJ2ZlYicsICdtYXInLCAnYXByJywgJ21haicsICdqdW4nLCAnanVsJywgJ2F2ZycsICdzZXAnLCAnb2t0JywgJ25vdicsICdkZWMnXSxcbiAgICB3ZWVrZGF5czogWyduZWRlbGphJywgJ3BvbmVkZWxqYWsnLCAndXRvcmFrJywgJ3NyZWRhJywgJ8SNZXR2cnRhaycsICdwZXRhaycsICdzdWJvdGEnXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ25lZCcsICdwb24nLCAndXRvJywgJ3NyZScsICfEjWV0JywgJ3BldCcsICdzdWInXVxuICB9LFxuICAnemgtY24nOiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICfkuIrkuKrmnIgnLFxuICAgIG5leHRNb250aDogJ+S4i+S4quaciCcsXG4gICAgbW9udGhzOiBbJ+S4gOaciCcsICfkuozmnIgnLCAn5LiJ5pyIJywgJ+Wbm+aciCcsICfkupTmnIgnLCAn5YWt5pyIJywgJ+S4g+aciCcsICflhavmnIgnLCAn5Lmd5pyIJywgJ+WNgeaciCcsICfljYHkuIDmnIgnLCAn5Y2B5LqM5pyIJ10sXG4gICAgbW9udGhzU2hvcnQ6IFsn5LiA5pyIJywgJ+S6jOaciCcsICfkuInmnIgnLCAn5Zub5pyIJywgJ+S6lOaciCcsICflha3mnIgnLCAn5LiD5pyIJywgJ+WFq+aciCcsICfkuZ3mnIgnLCAn5Y2B5pyIJywgJ+WNgeS4gOaciCcsICfljYHkuozmnIgnXSxcbiAgICB3ZWVrZGF5czogWyfmmJ/mnJ/lpKknLCAn5pif5pyf5LiAJywgJ+aYn+acn+S6jCcsICfmmJ/mnJ/kuIknLCAn5pif5pyf5ZubJywgJ+aYn+acn+S6lCcsICfmmJ/mnJ/lha0nXSxcbiAgICB3ZWVrZGF5c1Nob3J0OiBbJ+WRqOaXpScsICflkajkuIAnLCAn5ZGo5LqMJywgJ+WRqOS4iScsICflkajlm5snLCAn5ZGo5LqUJywgJ+WRqOWFrSddXG4gIH0sXG4gIGVzOiB7XG4gICAgd2Vla1N0YXJ0OiAxLFxuICAgIHByZXZpb3VzTW9udGg6ICdNZXMgYW50ZXJpb3InLFxuICAgIG5leHRNb250aDogJ1Byw7N4aW1vIG1lcycsXG4gICAgbW9udGhzOiBbJ0VuZXJvJywgJ0ZlYnJlcm8nLCAnTWFyem8nLCAnQWJyaWwnLCAnTWF5bycsICdKdW5pbycsICdKdWxpbycsICdBZ29zdG8nLCAnU2VwdGllbWJyZScsICdPY3R1YnJlJywgJ05vdmllbWJyZScsICdEaWNpZW1icmUnXSxcbiAgICBtb250aHNTaG9ydDogWydFbmUnLCAnRmViJywgJ01hcicsICdBYnInLCAnTWF5JywgJ0p1bicsICdKdWwnLCAnQWdvJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RpYyddLFxuICAgIHdlZWtkYXlzOiBbJ0RvbWluZ28nLCAnTHVuZXMnLCAnTWFydGVzJywgJ01pw6lyY29sZXMnLCAnSnVldmVzJywgJ1ZpZXJuZXMnLCAnU8OhYmFkbyddLFxuICAgIHdlZWtkYXlzU2hvcnQ6IFsnRG9tJywgJ0x1bicsICdNYXInLCAnTWllJywgJ0p1ZScsICdWaWUnLCAnU2FiJ11cbiAgfVxufVxuXG5jbGFzcyBkYXRlUGlja2VyIHtcbiAgY29uc3RydWN0b3Ioc2VsZWN0b3IsIG9wdGlvbnMgPSB7fSkge1xuICAgIC8vIERldGVybWluZSBjbGljayBldmVudCBkZXBlbmRpbmcgb24gaWYgd2UgYXJlIG9uIFRvdWNoIGRldmljZSBvciBub3RcbiAgICB0aGlzLl9jbGlja0V2ZW50ID0gKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykgPyAndG91Y2hzdGFydCcgOiAnY2xpY2snO1xuXG4gICAgdGhpcy5lbGVtZW50ID0gdHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJyA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIDogc2VsZWN0b3I7XG4gICAgLy8gQW4gaW52YWxpZCBzZWxlY3RvciBvciBub24tRE9NIG5vZGUgaGFzIGJlZW4gcHJvdmlkZWQuXG4gICAgaWYgKCF0aGlzLmVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQW4gaW52YWxpZCBzZWxlY3RvciBvciBub24tRE9NIG5vZGUgaGFzIGJlZW4gcHJvdmlkZWQuJyk7XG4gICAgfVxuXG4gICAgLy8vIFNldCBkZWZhdWx0IG9wdGlvbnMgYW5kIG1lcmdlIHdpdGggaW5zdGFuY2UgZGVmaW5lZFxuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIG1pbkRhdGU6IG51bGwsXG4gICAgICBtYXhEYXRlOiBudWxsLFxuICAgICAgZGF0ZUZvcm1hdDogJ3l5eXktbW0tZGQnLCAvLyB0aGUgZGVmYXVsdCBkYXRhIGZvcm1hdCBgZmllbGRgIHZhbHVlXG4gICAgICBsYW5nOiAnZW4nLCAvLyBpbnRlcm5hdGlvbmFsaXphdGlvblxuICAgICAgb3ZlcmxheTogZmFsc2UsXG4gICAgICBjbG9zZU9uT3ZlcmxheUNsaWNrOiB0cnVlLFxuICAgICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICAgIC8vIGNhbGxiYWNrIGZ1bmN0aW9uc1xuICAgICAgb25TZWxlY3Q6IG51bGwsXG4gICAgICBvbk9wZW46IG51bGwsXG4gICAgICBvbkNsb3NlOiBudWxsLFxuICAgICAgb25SZW5kZXI6IG51bGxcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIC8vIEluaXRpYXRlIHBsdWdpblxuICAgIHRoaXMuX2luaXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWF0ZSBwbHVnaW4gaW5zdGFuY2VcbiAgICogQG1ldGhvZCBfaW5pdFxuICAgKiBAcmV0dXJuIHtkYXRlUGlja2VyfSBDdXJyZW50IHBsdWdpbiBpbnN0YW5jZVxuICAgKi9cbiAgX2luaXQoKSB7XG4gICAgdGhpcy5faWQgPSAnZGF0ZVBpY2tlcicgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpICsgTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogTWF0aC5mbG9vcig5OTk5KSk7XG4gICAgdGhpcy5sYW5nID0gdHlwZW9mIGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5sYW5nXSAhPT0gJ3VuZGVmaW5lZCcgPyB0aGlzLmxhbmcgOiAnZW4nO1xuICAgIC8vIFNldCB0aGUgc3RhcnREYXRlIHRvIHRoZSBpbnB1dCB2YWx1ZVxuICAgIGlmICh0aGlzLmVsZW1lbnQudmFsdWUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5zdGFydERhdGUgPSB0aGlzLl9wYXJzZURhdGUodGhpcy5lbGVtZW50LnZhbHVlKTtcbiAgICB9XG4gICAgLy8gVHJhbnNmb3JtIHN0YXJ0IGRhdGUgYWNjb3JkaW5nIHRvIGRhdGVGb3JtYXQgb3B0aW9uXG4gICAgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSA9IHRoaXMuX3BhcnNlRGF0ZSh0aGlzLl9nZXRGb3JtYXRlZERhdGUodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSwgdGhpcy5vcHRpb25zLmRhdGVGb3JtYXQpKTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMubWluRGF0ZSkge1xuICAgICAgdGhpcy5vcHRpb25zLm1pbkRhdGUgPSB0aGlzLl9wYXJzZURhdGUodGhpcy5fZ2V0Rm9ybWF0ZWREYXRlKHRoaXMub3B0aW9ucy5taW5EYXRlLCB0aGlzLm9wdGlvbnMuZGF0ZUZvcm1hdCkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLm1heERhdGUpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5tYXhEYXRlID0gdGhpcy5fcGFyc2VEYXRlKHRoaXMuX2dldEZvcm1hdGVkRGF0ZSh0aGlzLm9wdGlvbnMubWF4RGF0ZSwgdGhpcy5vcHRpb25zLmRhdGVGb3JtYXQpKTtcbiAgICB9XG5cbiAgICB0aGlzLm1vbnRoID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMueWVhciA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLmRheSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RGF0ZSgpO1xuICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuXG4gICAgdGhpcy5fYnVpbGQoKTtcbiAgICB0aGlzLl9iaW5kRXZlbnRzKCk7XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBkYXRlUGlja2VyIEhUTUwgY29tcG9uZW50IGFuZCBhcHBlbmQgaXQgdG8gdGhlIERPTVxuICAgKiBAbWV0aG9kIF9idWlsZFxuICAgKiBAcmV0dXJuIHtkYXRlUGlja2VyfSBDdXJyZW50IHBsdWdpbiBpbnN0YW5jZVxuICAgKi9cbiAgX2J1aWxkKCkge1xuICAgIC8vIERlZmluZSBkYXRlUGlja2VyIFRlbXBsYXRlXG4gICAgY29uc3QgZGF0ZVBpY2tlciA9IGBcbiAgICAgIDxkaXYgaWQ9JyR7dGhpcy5faWR9JyBjbGFzcz1cImRhdGVwaWNrZXIgJHt0aGlzLm9wdGlvbnMub3ZlcmxheSA/ICdtb2RhbCcgOiAnJ31cIj5cbiAgICAgICAgJHt0aGlzLm9wdGlvbnMub3ZlcmxheSA/ICc8ZGl2IGNsYXNzPVwibW9kYWwtYmFja2dyb3VuZFwiPjwvZGl2PicgOiAnJ31cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLW5hdlwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLW5hdi1tb250aFwiPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiY2FsZW5kYXItbmF2LXByZXZpb3VzLW1vbnRoIGJ1dHRvbiBpcy1zbWFsbCBpcy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDUwIDgwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIi41ZW1cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBwb2ludHM9XCI0NS42Myw3NS44IDAuMzc1LDM4LjA4NyA0NS42MywwLjM3NSBcIi8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItbW9udGhcIj4ke2RhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLm1vbnRoc1t0aGlzLm1vbnRoXX08L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGVuZGFyLW5hdi1uZXh0LW1vbnRoIGJ1dHRvbiBpcy1zbWFsbCBpcy10ZXh0XCI+XG4gICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDUwIDgwXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIj5cbiAgICAgICAgICAgICAgICAgIDxwb2x5bGluZSBmaWxsPVwibm9uZVwiIHN0cm9rZS13aWR0aD1cIi41ZW1cIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiBwb2ludHM9XCIwLjM3NSwwLjM3NSA0NS42MywzOC4wODcgMC4zNzUsNzUuOCBcIi8+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItbmF2LWRheVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF5XCI+JHt0aGlzLmRheX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLW5hdi15ZWFyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJjYWxlbmRhci1uYXYtcHJldmlvdXMteWVhciBidXR0b24gaXMtc21hbGwgaXMtdGV4dFwiPlxuICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD1cIjAgMCA1MCA4MFwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCI+XG4gICAgICAgICAgICAgICAgICA8cG9seWxpbmUgZmlsbD1cIm5vbmVcIiBzdHJva2Utd2lkdGg9XCIuNWVtXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgcG9pbnRzPVwiNDUuNjMsNzUuOCAwLjM3NSwzOC4wODcgNDUuNjMsMC4zNzUgXCIvPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXllYXJcIj4ke3RoaXMueWVhcn08L2Rpdj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImNhbGVuZGFyLW5hdi1uZXh0LXllYXIgYnV0dG9uIGlzLXNtYWxsIGlzLXRleHRcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgNTAgODBcIiB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiPlxuICAgICAgICAgICAgICAgICAgPHBvbHlsaW5lIGZpbGw9XCJub25lXCIgc3Ryb2tlLXdpZHRoPVwiLjVlbVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIHBvaW50cz1cIjAuMzc1LDAuMzc1IDQ1LjYzLDM4LjA4NyAwLjM3NSw3NS44IFwiLz5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItaGVhZGVyXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXRlXCI+JHt0aGlzLl9nZXREYXlOYW1lKDAsIHRydWUpfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF0ZVwiPiR7dGhpcy5fZ2V0RGF5TmFtZSgxLCB0cnVlKX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWRhdGVcIj4ke3RoaXMuX2dldERheU5hbWUoMiwgdHJ1ZSl9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXRlXCI+JHt0aGlzLl9nZXREYXlOYW1lKDMsIHRydWUpfTwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItZGF0ZVwiPiR7dGhpcy5fZ2V0RGF5TmFtZSg0LCB0cnVlKX08L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWRhdGVcIj4ke3RoaXMuX2dldERheU5hbWUoNSwgdHJ1ZSl9PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXRlXCI+JHt0aGlzLl9nZXREYXlOYW1lKDYsIHRydWUpfTwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPjwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG5cbiAgICAvLyBBZGQgZGF0ZXBpY2tlciBIVE1MIGVsZW1lbnQgdG8gRG9jdW1lbnQgQm9keVxuICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBkYXRlUGlja2VyKTtcblxuICAgIC8vIFNhdmUgcG9pbnRlciB0byBlYWNoIGRhdGVQaWNrZXIgZWxlbWVudCBmb3IgbGF0ZXIgdXNlXG4gICAgdGhpcy5kYXRlUGlja2VyQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5faWQpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyID0gdGhpcy5kYXRlUGlja2VyQ29udGFpbmVyLnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhcicpO1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3ZlcmxheSkge1xuICAgICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRoaXMuZGF0ZVBpY2tlckNvbnRhaW5lci5xdWVyeVNlbGVjdG9yKCcubW9kYWwtYmFja2dyb3VuZCcpO1xuICAgICAgdGhpcy5kYXRlUGlja2VyQ2xvc2VCdXR0b24gPSB0aGlzLmRhdGVQaWNrZXJDb250YWluZXIucXVlcnlTZWxlY3RvcignLm1vZGFsLWNsb3NlJyk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2ID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLW5hdicpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TW9udGggPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5xdWVyeVNlbGVjdG9yKCcuY2FsZW5kYXItbW9udGgnKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdlllYXIgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5xdWVyeVNlbGVjdG9yKCcuY2FsZW5kYXIteWVhcicpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2RGF5ID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLWRheScpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNNb250aCA9IHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhci1uYXYtcHJldmlvdXMtbW9udGgnKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdk5leHRNb250aCA9IHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhci1uYXYtbmV4dC1tb250aCcpO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNZZWFyID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXYucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLW5hdi1wcmV2aW91cy15ZWFyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZOZXh0WWVhciA9IHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2LnF1ZXJ5U2VsZWN0b3IoJy5jYWxlbmRhci1uYXYtbmV4dC15ZWFyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJIZWFkZXIgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5xdWVyeVNlbGVjdG9yKCcuY2FsZW5kYXItaGVhZGVyJyk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJCb2R5ID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIucXVlcnlTZWxlY3RvcignLmNhbGVuZGFyLWJvZHknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCaW5kIGFsbCBldmVudHNcbiAgICogQG1ldGhvZCBfYmluZEV2ZW50c1xuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgX2JpbmRFdmVudHMoKSB7XG4gICAgLy8gQmluZCBldmVudCB0byBlbGVtZW50IGluIG9yZGVyIHRvIGRpc3BsYXkvaGlkZSBkYXRlUGlja2VyIG9uIGNsaWNrXG4gICAgdGhpcy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2hvdygpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5vdmVybGF5KSB7XG4gICAgICAvLyBCaW5kIGNsb3NlIGV2ZW50IG9uIENsb3NlIGJ1dHRvblxuICAgICAgaWYgKHRoaXMuZGF0ZVBpY2tlckNsb3NlQnV0dG9uKSB7XG4gICAgICAgIHRoaXMuZGF0ZVBpY2tlckNsb3NlQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgLy8gQmluZCBjbG9zZSBldmVudCBvbiBvdmVybGF5IGJhc2VkIG9uIG9wdGlvbnNcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuY2xvc2VPbk92ZXJsYXlDbGljaykge1xuICAgICAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJpbmQgeWVhciBuYXZpZ2F0aW9uIGV2ZW50c1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNZZWFyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMucHJldlllYXIoKTtcbiAgICB9KTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdk5leHRZZWFyLmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMubmV4dFllYXIoKTtcbiAgICB9KTtcblxuICAgIC8vIEJpbmQgbW9udGggbmF2aWdhdGlvbiBldmVudHNcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdlByZXZpb3VzTW9udGguYWRkRXZlbnRMaXN0ZW5lcih0aGlzLl9jbGlja0V2ZW50LCAoZSkgPT4ge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5wcmV2TW9udGgoKTtcbiAgICB9KTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdk5leHRNb250aC5hZGRFdmVudExpc3RlbmVyKHRoaXMuX2NsaWNrRXZlbnQsIChlKSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm5leHRNb250aCgpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgZXZlbnRzIG9uIGVhY2ggRGF5IGl0ZW1cbiAgICogQG1ldGhvZCBfYmluZERheXNFdmVudHNcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIF9iaW5kRGF5c0V2ZW50cygpIHtcbiAgICBbXS5mb3JFYWNoLmNhbGwodGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJEYXlzLCAoY2FsZW5kYXJEYXkpID0+IHtcbiAgICAgIGNhbGVuZGFyRGF5LmFkZEV2ZW50TGlzdGVuZXIodGhpcy5fY2xpY2tFdmVudCwgKGUpID0+IHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBpZiAoIWUuY3VycmVudFRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2lzLWRpc2FibGVkJykpIHtcbiAgICAgICAgICBsZXQgZGF0ZSA9IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LmRhdGUuc3BsaXQoJy0nKTtcbiAgICAgICAgICBsZXQgW3llYXIsIG1vbnRoLCBkYXldID0gZGF0ZTtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vblNlbGVjdCAhPSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uU2VsZWN0ICE9IG51bGwgJiZcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5vblNlbGVjdCkge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLm9uU2VsZWN0KG5ldyBEYXRlKHllYXIsIG1vbnRoLCBkYXkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5lbGVtZW50LnZhbHVlID0gdGhpcy5fZ2V0Rm9ybWF0ZWREYXRlKChuZXcgRGF0ZSh5ZWFyLCBtb250aCwgZGF5KSksIHRoaXMub3B0aW9ucy5kYXRlRm9ybWF0KTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLmNsb3NlT25TZWxlY3QpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxvY2FsaXplZCBkYXkgbmFtZVxuICAgKiBAbWV0aG9kIHJlbmRlckRheU5hbWVcbiAgICogQHBhcmFtICB7W3R5cGVdfSAgICAgIGRheSAgICAgICAgICBbZGVzY3JpcHRpb25dXG4gICAqIEBwYXJhbSAge0Jvb2xlYW59ICAgICBbYWJicj1mYWxzZV0gW2Rlc2NyaXB0aW9uXVxuICAgKiBAcmV0dXJuIHtbdHlwZV19ICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl1cbiAgICovXG4gIF9nZXREYXlOYW1lKGRheSwgYWJiciA9IGZhbHNlKSB7XG4gICAgZGF5ICs9IGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLndlZWtTdGFydDtcbiAgICB3aGlsZSAoZGF5ID49IDcpIHtcbiAgICAgIGRheSAtPSA3O1xuICAgIH1cblxuICAgIHJldHVybiBhYmJyID8gZGF0ZXBpY2tlcl9sYW5nc1t0aGlzLm9wdGlvbnMubGFuZ10ud2Vla2RheXNTaG9ydFtkYXldIDogZGF0ZXBpY2tlcl9sYW5nc1t0aGlzLm9wdGlvbnMubGFuZ10ud2Vla2RheXNbZGF5XTtcbiAgfVxuXG4gIF9yZW5kZXJEYXkoZGF5LCBtb250aCwgeWVhciwgaXNTZWxlY3RlZCwgaXNUb2RheSwgaXNEaXNhYmxlZCwgaXNFbXB0eSwgaXNCZXR3ZWVuLCBpc1NlbGVjdGVkSW4sIGlzU2VsZWN0ZWRPdXQpIHtcbiAgICByZXR1cm4gYFxuICAgICAgPGRpdiBkYXRhLWRhdGU9XCIke2Ake3llYXJ9LSR7bW9udGh9LSR7ZGF5fWB9XCIgY2xhc3M9XCJjYWxlbmRhci1kYXRlJHtpc0Rpc2FibGVkID8gJyBpcy1kaXNhYmxlZCcgOiAnJ30ke2lzQmV0d2VlbiA/ICcgY2FsZW5kYXItcmFuZ2UnIDogJyd9JHtpc1NlbGVjdGVkSW4gPyAnIGNhbGVuZGFyLXJhbmdlLXN0YXJ0JyA6ICcnfSR7aXNTZWxlY3RlZE91dCA/ICcgY2FsZW5kYXItcmFuZ2UtZW5kJyA6ICcnfVwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiZGF0ZS1pdGVtJHtpc1RvZGF5ID8gJyBpcy10b2RheScgOiAnJ30ke2lzU2VsZWN0ZWQgPyAnIGlzLWFjdGl2ZScgOiAnJ31cIj4ke2RheX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIGA7XG4gIH1cblxuICBfcmVuZGVyRGF5cygpIHtcbiAgICBjb25zdCBub3cgPSBuZXcgRGF0ZSgpO1xuICAgIGxldCBkYXlzID0gJyc7XG5cbiAgICBsZXQgbnVtYmVyT2ZEYXlzID0gdGhpcy5fZ2V0RGF5c0luTW9udGgodGhpcy55ZWFyLCB0aGlzLm1vbnRoKSxcbiAgICAgIGJlZm9yZSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgMSkuZ2V0RGF5KCk7XG5cbiAgICAvLyBDYWxsIG9uUmVuZGVyIGNhbGxiYWNrIGlmIGRlZmluZWRcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vblJlbmRlciAhPSAndW5kZWZpbmVkJyAmJlxuICAgICAgdGhpcy5vcHRpb25zLm9uUmVuZGVyICE9IG51bGwgJiZcbiAgICAgIHRoaXMub3B0aW9ucy5vblJlbmRlcikge1xuICAgICAgdGhpcy5vcHRpb25zLm9uUmVuZGVyKHRoaXMpO1xuICAgIH1cblxuICAgIC8vIEdldCBzdGFydCBkYXkgZnJvbSBvcHRpb25zXG4gICAgaWYgKGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLndlZWtTdGFydCA+IDApIHtcbiAgICAgIGJlZm9yZSAtPSBkYXRlcGlja2VyX2xhbmdzW3RoaXMub3B0aW9ucy5sYW5nXS53ZWVrU3RhcnQ7XG4gICAgICBpZiAoYmVmb3JlIDwgMCkge1xuICAgICAgICBiZWZvcmUgKz0gNztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgY2VsbHMgPSBudW1iZXJPZkRheXMgKyBiZWZvcmUsXG4gICAgICBhZnRlciA9IGNlbGxzO1xuICAgIHdoaWxlIChhZnRlciA+IDcpIHtcbiAgICAgIGFmdGVyIC09IDc7XG4gICAgfVxuXG4gICAgY2VsbHMgKz0gNyAtIGFmdGVyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2VsbHM7IGkrKykge1xuICAgICAgdmFyIGRheSA9IG5ldyBEYXRlKHRoaXMueWVhciwgdGhpcy5tb250aCwgMSArIChpIC0gYmVmb3JlKSksXG4gICAgICAgIGlzQmV0d2VlbiA9IGZhbHNlLFxuICAgICAgICBpc1NlbGVjdGVkID0gdGhpcy5fY29tcGFyZURhdGVzKGRheSwgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSksXG4gICAgICAgIGlzU2VsZWN0ZWRJbiA9IGZhbHNlLFxuICAgICAgICBpc1NlbGVjdGVkT3V0ID0gZmFsc2UsXG4gICAgICAgIGlzVG9kYXkgPSB0aGlzLl9jb21wYXJlRGF0ZXMoZGF5LCBub3cpLFxuICAgICAgICBpc0VtcHR5ID0gaSA8IGJlZm9yZSB8fCBpID49IChudW1iZXJPZkRheXMgKyBiZWZvcmUpLFxuICAgICAgICBpc0Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICAgIGRheS5zZXRIb3VycygwLCAwLCAwLCAwKTtcblxuICAgICAgaWYgKCFpc1NlbGVjdGVkKSB7XG4gICAgICAgIGlzU2VsZWN0ZWRJbiA9IGZhbHNlO1xuICAgICAgICBpc1NlbGVjdGVkT3V0ID0gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXkuZ2V0TW9udGgoKSAhPT0gdGhpcy5tb250aCB8fCAodGhpcy5vcHRpb25zLm1pbkRhdGUgJiZcbiAgICAgICAgKGRheS5nZXRUaW1lKCkgPCB0aGlzLm9wdGlvbnMubWluRGF0ZS5nZXRUaW1lKCkgfHwgZGF5LmdldFRpbWUoKSA+IHRoaXMub3B0aW9ucy5tYXhEYXRlLmdldFRpbWUoKSkpKSB7XG4gICAgICAgIGlzRGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBkYXlzICs9IHRoaXMuX3JlbmRlckRheShkYXkuZ2V0RGF0ZSgpLCB0aGlzLm1vbnRoLCB0aGlzLnllYXIsIGlzU2VsZWN0ZWQsIGlzVG9kYXksIGlzRGlzYWJsZWQsIGlzRW1wdHksIGlzQmV0d2VlbiwgaXNTZWxlY3RlZEluLCBpc1NlbGVjdGVkT3V0KTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhckJvZHkuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVlbmQnLCBkYXlzKTtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhckRheXMgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhckJvZHkucXVlcnlTZWxlY3RvckFsbCgnLmNhbGVuZGFyLWRhdGUnKTtcbiAgICB0aGlzLl9iaW5kRGF5c0V2ZW50cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyBtb250aCBhbmQgcmVnZW5lcmF0ZSBjYWxlbmRhclxuICAgKiBAbWV0aG9kIHByZXZNb250aFxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgcHJldk1vbnRoKCkge1xuICAgIHRoaXMubW9udGggLT0gMTtcbiAgICB0aGlzLl9yZWZyZXNoQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIF9kaXNhYmxlUHJldk1vbnRoKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNNb250aC5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICBfZW5hYmxlUHJldk1vbnRoKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2UHJldmlvdXNNb250aC5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FibGVkJyk7XG4gIH1cblxuICAvKipcbiAgICogTmF2aWdhdGUgdG8gdGhlIG5leHQgbW9udGggYW5kIHJlZ2VuZXJhdGUgY2FsZW5kYXJcbiAgICogQG1ldGhvZCBuZXh0TW9udGhcbiAgICogQHJldHVybiB7fVxuICAgKi9cbiAgbmV4dE1vbnRoKCkge1xuICAgIHRoaXMubW9udGggKz0gMTtcbiAgICB0aGlzLl9yZWZyZXNoQ2FsZW5kYXIoKTtcbiAgfVxuXG4gIF9kaXNhYmxlTmV4dE1vbnRoKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TmV4dE1vbnRoLnNldEF0dHJpYnV0ZSgnZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTtcbiAgfVxuXG4gIF9lbmFibGVOZXh0TW9udGgoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZOZXh0TW9udGgucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyB5ZWFyIGFuZCByZWdlbmVyYXRlIGNhbGVuZGFyXG4gICAqIEBtZXRob2QgcHJldlllYXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHByZXZZZWFyKCkge1xuICAgIHRoaXMueWVhciAtPSAxO1xuICAgIHRoaXMuX3JlZnJlc2hDYWxlbmRhcigpO1xuICB9XG5cbiAgX2Rpc2FibGVQcmV2WWVhcigpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhck5hdlByZXZpb3VzWWVhci5zZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJywgJ2Rpc2FibGVkJyk7XG4gIH1cblxuICBfZW5hYmxlUHJldlllYXIoKSB7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZQcmV2aW91c1llYXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hdmlnYXRlIHRvIHRoZSBwcmV2aW91cyB5ZWFyIGFuZCByZWdlbmVyYXRlIGNhbGVuZGFyXG4gICAqIEBtZXRob2QgbmV4dFllYXJcbiAgICogQHJldHVybiB7fVxuICAgKi9cbiAgbmV4dFllYXIoKSB7XG4gICAgdGhpcy55ZWFyICs9IDE7XG4gICAgdGhpcy5fcmVmcmVzaENhbGVuZGFyKCk7XG4gIH1cblxuICBfZGlzYWJsZU5leHRZZWFyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TmV4dFllYXIuc2V0QXR0cmlidXRlKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpO1xuICB9XG5cbiAgX2VuYWJsZU5leHRZZWFyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TmV4dFllYXIucmVtb3ZlQXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNob3cgZGF0ZVBpY2tlciBIVE1MIENvbXBvbmVudFxuICAgKiBAbWV0aG9kIHNob3dcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHNob3coKSB7XG4gICAgLy8gU2V0IHRoZSBzdGFydERhdGUgdG8gdGhlIGlucHV0IHZhbHVlXG4gICAgaWYgKHRoaXMuZWxlbWVudC52YWx1ZSkge1xuICAgICAgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSA9IHRoaXMuX3BhcnNlRGF0ZSh0aGlzLmVsZW1lbnQudmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLm1vbnRoID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZS5nZXRNb250aCgpO1xuICAgIHRoaXMueWVhciA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB0aGlzLmRheSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUuZ2V0RGF0ZSgpO1xuICAgIHRoaXMuX3JlZnJlc2hDYWxlbmRhcigpO1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLm9wdGlvbnMub25PcGVuICE9ICd1bmRlZmluZWQnICYmXG4gICAgICB0aGlzLm9wdGlvbnMub25PcGVuICE9IG51bGwgJiZcbiAgICAgIHRoaXMub3B0aW9ucy5vbk9wZW4pIHtcbiAgICAgIHRoaXMub3B0aW9ucy5vbk9wZW4odGhpcyk7XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlUGlja2VyQ29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2lzLWFjdGl2ZScpO1xuICAgIGlmICghdGhpcy5vcHRpb25zLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMuX2FkanVzdFBvc2l0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMub3BlbiA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSGlkZSBkYXRlUGlja2VyIEhUTUwgQ29tcG9uZW50XG4gICAqIEBtZXRob2QgaGlkZVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgaGlkZSgpIHtcbiAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICBpZiAodHlwZW9mIHRoaXMub3B0aW9ucy5vbkNsb3NlICE9ICd1bmRlZmluZWQnICYmXG4gICAgICB0aGlzLm9wdGlvbnMub25DbG9zZSAhPSBudWxsICYmXG4gICAgICB0aGlzLm9wdGlvbnMub25DbG9zZSkge1xuICAgICAgdGhpcy5vcHRpb25zLm9uQ2xvc2UodGhpcyk7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlckNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdpcy1hY3RpdmUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZyZXNoIGNhbGVuZGFyIHdpdGggbmV3IHllYXIvbW9udGggZGF5c1xuICAgKiBAbWV0aG9kIF9yZWZyZXNoQ2FsZW5kYXJcbiAgICogQHJldHVybiB7W3R5cGVdfSAgICAgICAgW2Rlc2NyaXB0aW9uXVxuICAgKi9cbiAgX3JlZnJlc2hDYWxlbmRhcigpIHtcbiAgICBpZiAodGhpcy5tb250aCA8IDApIHtcbiAgICAgIHRoaXMueWVhciAtPSBNYXRoLmNlaWwoTWF0aC5hYnModGhpcy5tb250aCkgLyAxMik7XG4gICAgICB0aGlzLm1vbnRoICs9IDEyO1xuICAgIH1cbiAgICBpZiAodGhpcy5tb250aCA+IDExKSB7XG4gICAgICB0aGlzLnllYXIgKz0gTWF0aC5mbG9vcihNYXRoLmFicyh0aGlzLm1vbnRoKSAvIDEyKTtcbiAgICAgIHRoaXMubW9udGggLT0gMTI7XG4gICAgfVxuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2TW9udGguaW5uZXJIVE1MID0gZGF0ZXBpY2tlcl9sYW5nc1t0aGlzLm9wdGlvbnMubGFuZ10ubW9udGhzW3RoaXMubW9udGhdO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyTmF2WWVhci5pbm5lckhUTUwgPSB0aGlzLnllYXI7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJOYXZEYXkuaW5uZXJIVE1MID0gdGhpcy5kYXk7XG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXJCb2R5LmlubmVySFRNTCA9ICcnO1xuXG4gICAgbGV0IG1pbk1vbnRoID0gMCxcbiAgICAgIG1pblllYXIgPSAwLFxuICAgICAgbWF4TW9udGggPSAxMixcbiAgICAgIG1heFllYXIgPSA5OTk5O1xuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5taW5EYXRlKSB7XG4gICAgICBtaW5Nb250aCA9IHRoaXMub3B0aW9ucy5taW5EYXRlLmdldE1vbnRoKCk7XG4gICAgICBtaW5ZZWFyID0gdGhpcy5vcHRpb25zLm1pbkRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5tYXhEYXRlKSB7XG4gICAgICBtYXhNb250aCA9IHRoaXMub3B0aW9ucy5tYXhEYXRlLmdldE1vbnRoKCk7XG4gICAgICBtYXhZZWFyID0gdGhpcy5vcHRpb25zLm1heERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy55ZWFyIDw9IG1pblllYXIpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVQcmV2WWVhcigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9lbmFibGVQcmV2WWVhcigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnllYXIgPj0gbWF4WWVhcikge1xuICAgICAgdGhpcy5fZGlzYWJsZU5leHRZZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VuYWJsZU5leHRZZWFyKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA8PSBtaW5ZZWFyICYmIHRoaXMubW9udGggPD0gbWluTW9udGgpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVQcmV2TW9udGgoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW5hYmxlUHJldk1vbnRoKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMueWVhciA+PSBtYXhZZWFyICYmIHRoaXMubW9udGggPj0gbWF4TW9udGgpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVOZXh0TW9udGgoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW5hYmxlTmV4dE1vbnRoKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fcmVuZGVyRGF5cygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlY2FsY3VsYXRlIGNhbGVuZGFyIHBvc2l0aW9uXG4gICAqIEBtZXRob2QgX2FkanVzdFBvc2l0aW9uXG4gICAqIEByZXR1cm4ge3ZvaWR9XG4gICAqL1xuICBfYWRqdXN0UG9zaXRpb24oKSB7XG4gICAgdmFyIHdpZHRoID0gdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIub2Zmc2V0V2lkdGgsXG4gICAgICBoZWlnaHQgPSB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5vZmZzZXRIZWlnaHQsXG4gICAgICB2aWV3cG9ydFdpZHRoID0gd2luZG93LmlubmVyV2lkdGggfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuICAgICAgdmlld3BvcnRIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxcbiAgICAgIHNjcm9sbFRvcCA9IHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgbGVmdCwgdG9wLCBjbGllbnRSZWN0O1xuXG4gICAgaWYgKHR5cGVvZiB0aGlzLmVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjbGllbnRSZWN0ID0gdGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgbGVmdCA9IGNsaWVudFJlY3QubGVmdCArIHdpbmRvdy5wYWdlWE9mZnNldDtcbiAgICAgIHRvcCA9IGNsaWVudFJlY3QuYm90dG9tICsgd2luZG93LnBhZ2VZT2Zmc2V0O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZWZ0ID0gdGhpcy5lbGVtZW50Lm9mZnNldExlZnQ7XG4gICAgICB0b3AgPSB0aGlzLmVsZW1lbnQub2Zmc2V0VG9wICsgdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgIHdoaWxlICgodGhpcy5lbGVtZW50ID0gdGhpcy5lbGVtZW50Lm9mZnNldFBhcmVudCkpIHtcbiAgICAgICAgbGVmdCArPSB0aGlzLmVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICAgICAgdG9wICs9IHRoaXMuZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5kYXRlUGlja2VyQ2FsZW5kYXIuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyLnN0eWxlLmxlZnQgPSBsZWZ0ICsgJ3B4JztcbiAgICB0aGlzLmRhdGVQaWNrZXJDYWxlbmRhci5zdHlsZS50b3AgPSB0b3AgKyAncHgnO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc3Ryb3kgZGF0ZVBpY2tlclxuICAgKiBAbWV0aG9kIGRlc3Ryb3lcbiAgICogQHJldHVybiB7W3R5cGVdfSBbZGVzY3JpcHRpb25dXG4gICAqL1xuICBkZXN0cm95KCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlckNhbGVuZGFyLnJlbW92ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgZGF0ZSBhY2NvcmRpbmcgdG8gcGFzc2VkIGZvcm1hdFxuICAgKiBAbWV0aG9kIF9nZXRGb3JtYXRlZERhdGVcbiAgICogQHBhcmFtIHtEYXRlfSAgIGR0ICAgICBEYXRlIG9iamVjdFxuICAgKiBAcGFyYW0ge1N0cmluZ30gZm9ybWF0IEZvcm1hdCBzdHJpbmdcbiAgICogICAgICBkICAgIC0gZGF5IG9mIG1vbnRoXG4gICAqICAgICAgZGQgICAtIDItZGlnaXRzIGRheSBvZiBtb250aFxuICAgKiAgICAgIEQgICAgLSBkYXkgb2Ygd2Vla1xuICAgKiAgICAgIG0gICAgLSBtb250aCBudW1iZXJcbiAgICogICAgICBtbSAgIC0gMi1kaWdpdHMgbW9udGggbnVtYmVyXG4gICAqICAgICAgTSAgICAtIHNob3J0IG1vbnRoIG5hbWVcbiAgICogICAgICBNTSAgIC0gZnVsbCBtb250aCBuYW1lXG4gICAqICAgICAgeXkgICAtIDItZGlnaXRzIHllYXIgbnVtYmVyXG4gICAqICAgICAgeXl5eSAtIDQtZGlnaXRzIHllYXIgbnVtYmVyXG4gICAqL1xuICBfZ2V0Rm9ybWF0ZWREYXRlKGR0LCBmb3JtYXQpIHtcbiAgICB2YXIgaXRlbXMgPSB7XG4gICAgICBkOiBkdC5nZXREYXRlKCksXG4gICAgICBkZDogZHQuZ2V0RGF0ZSgpLFxuICAgICAgRDogZHQuZ2V0RGF5KCksXG4gICAgICBtOiBkdC5nZXRNb250aCgpICsgMSxcbiAgICAgIG1tOiBkdC5nZXRNb250aCgpICsgMSxcbiAgICAgIE06IGR0LmdldE1vbnRoKCksXG4gICAgICBNTTogZHQuZ2V0TW9udGgoKSxcbiAgICAgIHl5OiBkdC5nZXRGdWxsWWVhcigpLnRvU3RyaW5nKCkuc3Vic3RyKC0yKSxcbiAgICAgIHl5eXk6IGR0LmdldEZ1bGxZZWFyKClcbiAgICB9O1xuXG4gICAgaXRlbXMuZGQgPCAxMCAmJiAoaXRlbXMuZGQgPSAnMCcgKyBpdGVtcy5kZCk7XG4gICAgaXRlbXMubW0gPCAxMCAmJiAoaXRlbXMubW0gPSAnMCcgKyBpdGVtcy5tbSk7XG4gICAgaXRlbXMuRCA9IGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLndlZWtkYXlzW2l0ZW1zLkQgPyBpdGVtcy5EIC0gMSA6IDZdO1xuICAgIGl0ZW1zLk0gPSBkYXRlcGlja2VyX2xhbmdzW3RoaXMub3B0aW9ucy5sYW5nXS5tb250aHNTaG9ydFtpdGVtcy5NXTtcbiAgICBpdGVtcy5NTSA9IGRhdGVwaWNrZXJfbGFuZ3NbdGhpcy5vcHRpb25zLmxhbmddLm1vbnRoc1tpdGVtcy5NTV07XG5cbiAgICByZXR1cm4gZm9ybWF0LnJlcGxhY2UoLyg/OltkbU1dezEsMn18RHx5eXl5fHl5KS9nLCBmdW5jdGlvbihtKSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGl0ZW1zW21dICE9PSAndW5kZWZpbmVkJyA/IGl0ZW1zW21dIDogbTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBEYXRlIHN0cmluZyBiYXNlZCBvbiB0aGUgRGF0ZSBGb3JtYXQgZ2l2ZW5cbiAgICogQG1ldGhvZCBfcGFyc2VEYXRlXG4gICAqIEBwYXJhbSAge1N0cmluZ30gICBkYXRlU3RyaW5nICAgICAgICAgIERhdGUgc3RyaW5nIHRvIHBhcnNlXG4gICAqIEBwYXJhbSAge1tTdHJpbmd9ICAgW2Zvcm1hdD11bmRlZmluZWRdIERhdGUgRm9ybWF0XG4gICAqIEByZXR1cm4ge0RhdGV9ICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUgT2JqZWN0IGluaXRpYWxpemVkIHdpdGggRGF0ZSBTdHJpbmcgYmFzZWQgb24gdGhlIERhdGUgRm9ybWF0XG4gICAqL1xuICBfcGFyc2VEYXRlKGRhdGVTdHJpbmcsIGZvcm1hdCA9IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG5cbiAgICBpZiAoIWZvcm1hdCkge1xuICAgICAgZm9ybWF0ID0gdGhpcy5vcHRpb25zLmRhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgY29uc3QgZm9ybWF0UGF0dGVybiA9IC8oKD86bW0/KXwoPzpkZD8pfCg/Onl5eT95PykpW14wLTldKCg/Om1tPyl8KD86ZGQ/KXwoPzp5eXk/eT8pKVteMC05XSgoPzptbT8pfCg/OmRkPyl8KD86eXl5P3k/KSkvaTtcbiAgICBjb25zdCBkYXRlUGF0dGVybiA9IC8oXFxkKylbXjAtOV0oXFxkKylbXjAtOV0oXFxkKykvaTtcblxuICAgIGxldCBtYXRjaEZvcm1hdCA9IGZvcm1hdFBhdHRlcm4uZXhlYyhmb3JtYXQpO1xuICAgIGlmIChtYXRjaEZvcm1hdCkge1xuICAgICAgbGV0IG1hdGNoRGF0ZSA9IGRhdGVQYXR0ZXJuLmV4ZWMoZGF0ZVN0cmluZyk7XG4gICAgICBpZiAobWF0Y2hEYXRlKSB7XG4gICAgICAgIHN3aXRjaChtYXRjaEZvcm1hdFsxXVswXSkge1xuICAgICAgICAgIGNhc2UgJ2QnOlxuICAgICAgICAgICAgZGF0ZS5zZXREYXRlKG1hdGNoRGF0ZVsxXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgIGRhdGUuc2V0TW9udGgobWF0Y2hEYXRlWzFdIC0gMSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgIGRhdGUuc2V0RnVsbFllYXIobWF0Y2hEYXRlWzFdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoKG1hdGNoRm9ybWF0WzJdWzBdKSB7XG4gICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICBkYXRlLnNldERhdGUobWF0Y2hEYXRlWzJdKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ20nOlxuICAgICAgICAgICAgZGF0ZS5zZXRNb250aChtYXRjaERhdGVbMl0gLSAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3knOlxuICAgICAgICAgICAgZGF0ZS5zZXRGdWxsWWVhcihtYXRjaERhdGVbMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2gobWF0Y2hGb3JtYXRbM11bMF0pIHtcbiAgICAgICAgICBjYXNlICdkJzpcbiAgICAgICAgICAgIGRhdGUuc2V0RGF0ZShtYXRjaERhdGVbM10pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnbSc6XG4gICAgICAgICAgICBkYXRlLnNldE1vbnRoKG1hdGNoRGF0ZVszXSAtIDEpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAneSc6XG4gICAgICAgICAgICBkYXRlLnNldEZ1bGxZZWFyKG1hdGNoRGF0ZVszXSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGdpdmVuIHllYXIgaXMgTGVhcFllYXIgb3Igbm90XG4gICAqIEBtZXRob2QgX2lzTGVhcFllYXJcbiAgICogQHBhcmFtICB7SW50ZWdlcn0gICB5ZWFyIFllYXIgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Qm9vbGVhbn0gICAgICAgIFRydWUgaWYgTGVhcFllYXIgdGhlbiBGYWxzZVxuICAgKi9cbiAgX2lzTGVhcFllYXIoeWVhcikge1xuICAgIC8vIHNvbHV0aW9uIGJ5IE1hdHRpIFZpcmtrdW5lbjogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDg4MTk1MVxuICAgIHJldHVybiB5ZWFyICUgNCA9PT0gMCAmJiB5ZWFyICUgMTAwICE9PSAwIHx8IHllYXIgJSA0MDAgPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBudW1iZXIgb2YgZGF5cyBpbiBtb250aFxuICAgKiBAbWV0aG9kIF9nZXREYXlzSW5Nb250aFxuICAgKiBAcGFyYW0gIHtJbnRlZ2VyfSAgICAgICB5ZWFyICBZZWFyIHRvIGNoZWNrIGlmIHdlIGFyZSBmYWNpbmcgYSBsZWFweWVhciBvciBub3RcbiAgICogQHBhcmFtICB7SW50ZWdlcn0gICAgICAgbW9udGggTW9udGggZm9yIHdoaWNoIHdlIHdhbnQgdG8ga25vdyB0aGUgYW1vdW50IG9mIGRheXNcbiAgICogQHJldHVybiB7SW50ZWdlcn0gICAgICAgICAgICAgIERheXMgYW1vdW50XG4gICAqL1xuICBfZ2V0RGF5c0luTW9udGgoeWVhciwgbW9udGgpIHtcbiAgICByZXR1cm4gWzMxLCB0aGlzLl9pc0xlYXBZZWFyKHllYXIpID8gMjkgOiAyOCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzFdW21vbnRoXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJlIHR3byBkYXRlc1xuICAgKiBAbWV0aG9kIF9jb21wYXJlRGF0ZXNcbiAgICogQHBhcmFtICB7RGF0ZX0gICAgIGEgRmlyc3QgZGF0ZSB0byBjb21wYXJlXG4gICAqIEBwYXJhbSAge0RhdGV9ICAgICBiIFNlY29uZCBEYXRlIHRvIGNvbXBhcmUgd2l0aFxuICAgKiBAcmV0dXJuIHtCb29sZWFufSAgICBUcnVlIGlmIGRhdGVzIGFyZSBlcXVhbCB0aGVuIGZhbHNlXG4gICAqL1xuICBfY29tcGFyZURhdGVzKGEsIGIpIHtcbiAgICAvLyB3ZWFrIGRhdGUgY29tcGFyaXNvblxuICAgIGEuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgYi5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gYS5nZXRUaW1lKCkgPT09IGIuZ2V0VGltZSgpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGRhdGVQaWNrZXI7XG4iXX0= diff --git a/gulpfile.js b/gulpfile.js index 7036d7a..fe58da5 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -105,7 +105,7 @@ gulp.task('build:scripts', function() { ] })] }, { - format: gutil.env.jsFormat ? gutil.env.jsFormat : 'iife', + format: gutil.env.jsFormat ? gutil.env.jsFormat : 'umd', name: camelCase(package.name) } ))