| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- var hwRequirement_1 = require("../../service/hwRequirement");
- var hwUser_1 = require("../../service/hwUser");
- var app = getApp();
- var cover_animation = {};
- Page({
- data: {
- 'indicator_dots': false,
- 'autoplay': true,
- 'circular': true,
- 'interval': 3000,
- 'duration': 1500,
- 'condition_animation': {},
- 'list_animation': {},
- 'cover_animation': {},
- 'swiper': [],
- 'industry': '行业',
- 'price': '单价',
- 'district': '不限区域',
- 'conditionList': [],
- 'condition': '',
- 'action_index': 0,
- 'industry_index': 0,
- 'industry_id': '',
- 'price_index': 0,
- 'price_id': '',
- 'province_id': '',
- 'city_id': '',
- 'area_id': '',
- 'industryList': [{
- id: '',
- name: '不限行业'
- },
- {
- id: 0,
- name: '教育培训'
- },
- {
- id: 1,
- name: 'IT互联网'
- },
- {
- id: 2,
- name: '仓储物流'
- },
- {
- id: 3,
- name: '酒店餐饮'
- },
- {
- id: 4,
- name: '家政保洁'
- },
- {
- id: 5,
- name: '维修保养'
- },
- {
- id: 6,
- name: '会务会展'
- },
- {
- id: 7,
- name: '专业服务'
- },
- {
- id: 8,
- name: '生产制造'
- },
- {
- id: 9,
- name: '其他行业'
- },
- ],
- 'priceList': [{
- id: '',
- name: '不限'
- },
- {
- id: 1,
- name: '3K以下'
- },
- {
- id: 2,
- name: '3K-5K'
- },
- {
- id: 3,
- name: '5K-8K'
- },
- {
- id: 4,
- name: '8K-12K'
- },
- {
- id: 5,
- name: '12K-20K'
- },
- {
- id: 6,
- name: '20K-30K'
- },
- {
- id: 7,
- name: '30K以上'
- },
- ],
- 'list': [],
- 'pageNo': 1,
- 'isLast': false,
- 'offline': false,
- 'loading': true,
- 'list_length': false,
- 'show': false,
- 'transition': true,
- 'fixTop': 0,
- 'scrollTop': 0,
- swiperIndex: 0
- },
- swiperChange: function (e) {
- this.setData({
- swiperIndex: e.detail.current
- });
- },
- chooseCondition: function (e) {
- var condition = e.currentTarget.dataset.condition === this.data.condition ? '' : e.currentTarget.dataset.condition;
- this.doAnimation(e.currentTarget.dataset.condition === this.data.condition);
- this.setData({
- condition: condition,
- });
- },
- openArea: function () {
- this.doAnimation(true);
- cover_animation.left(0).step();
- this.setData({
- cover_animation: cover_animation.export(),
- condition: '',
- });
- },
- choose: function (e) {
- var _a;
- var _this = this;
- var index = e.currentTarget.dataset.index;
- var id = e.currentTarget.dataset.id;
- var condition = this.data.condition;
- var list = [];
- if (condition === 'industry') {
- list = this.data.industryList;
- }
- else {
- list = this.data.priceList;
- }
- this.setData((_a = {},
- _a[condition] = list[index].name,
- _a[condition + "_index"] = index,
- _a[condition + "_id"] = id,
- _a.condition = '',
- _a.list = [],
- _a.loading = true,
- _a), function () {
- _this.getList(1);
- });
- this.doAnimation(true);
- },
- saveDistrict: function (e) {
- var _this = this;
- cover_animation.left(750 + 'rpx').step();
- this.setData({
- cover_animation: cover_animation.export(),
- district: e.detail.area_name,
- province_id: e.detail.province_id,
- city_id: e.detail.city_id,
- area_id: e.detail.area_id,
- list: []
- }, function () {
- _this.getList(1);
- });
- },
- coloseDistrict: function () {
- cover_animation.left(750 + 'rpx').step();
- this.setData({
- cover_animation: cover_animation.export()
- });
- this.doAnimation(true);
- },
- doAnimation: function (status) {
- var fixTop = this.data.fixTop;
- var scrollTop = this.data.scrollTop;
- if (fixTop > scrollTop) {
- this.setData({
- transition: status
- });
- }
- },
- toPerson: function () {
- if (wx.getStorageSync('userId') && wx.getStorageSync('userToken')) {
- wx.navigateTo({
- url: '/pages/person/person',
- });
- }
- else {
- wx.showModal({
- title: '提示',
- content: '你还未登陆,是否立即登录',
- cancelColor: '#888A8E',
- confirmColor: '#31364C',
- success: function (res) {
- if (res.confirm) {
- wx.navigateTo({
- url: '/pages/login/login',
- });
- }
- }
- });
- }
- },
- toDetail: function (e) {
- var id = e.currentTarget.dataset.id;
- wx.navigateTo({
- url: "/pages/detail/detail?id=" + id + "&&status=1",
- });
- },
- getList: function (pageNo, province_code, city_code, country_code, trade_type, priceType) {
- var _this = this;
- var _pageNo = pageNo || this.data.pageNo;
- var param = Object.assign({
- pageNo: _pageNo,
- province_code: this.data.province_id,
- city_code: this.data.city_id,
- country_code: this.data.area_id,
- trade_type: this.data.industry_id,
- priceType: this.data.price_id
- }, {
- pageNo: pageNo,
- pageSize: 10,
- province_code: province_code,
- city_code: city_code,
- country_code: country_code,
- trade_type: trade_type,
- priceType: priceType,
- platform_id: app.globalData.platformId
- });
- hwRequirement_1.getRequirementsApi(param).then(function (res) {
- var _a;
- if (typeof res === 'string') {
- if (res === 'offline' && _this.data.list.length === 0) {
- _this.setData({
- offline: true,
- loading: false,
- list_length: false
- });
- }
- }
- var data = res;
- if (data.errcode === 0) {
- if (pageNo === 1 && data.data.requirements.length === 0) {
- _this.setData({
- loading: false,
- list_length: true,
- offline: false
- });
- return;
- }
- _pageNo++;
- _this.setData((_a = {
- pageNo: _pageNo
- },
- _a["list[" + (_pageNo - 2) + "]"] = data.data.requirements,
- _a.isLast = data.data.isLast,
- _a.offline = false,
- _a.list_length = false,
- _a.loading = false,
- _a));
- }
- }).catch(function () {
- _this.setData({
- loading: false,
- list_length: true,
- offline: false
- });
- });
- },
- getBanner: function () {
- var _this = this;
- hwUser_1.bannerApi().then(function (res) {
- var data = res;
- if (data.errcode === 0) {
- _this.setData({
- swiper: data.data.bannerList
- });
- }
- });
- },
- reload: function () {
- var _this = this;
- this.setData({
- list: [],
- pageNo: 1,
- scrollTop: 0
- }, function () {
- _this.getBanner();
- _this.getList();
- });
- },
- checkLogin: function () {
- if (wx.getStorageSync('userId') && wx.getStorageSync('userToken')) {
- if (wx.getStorageSync('userInfo').registerFrom === 0) {
- wx.reLaunch({
- url: '/pages/success/success',
- });
- }
- else {
- this.reload();
- this.setData({
- show: false
- });
- }
- }
- else {
- wx.navigateTo({
- url: '/pages/login/login',
- });
- }
- },
- onLoad: function () { this.getBanner(); },
- onReady: function () {
- },
- onShow: function () {
- var _this = this;
- this.setData({
- route: this.route
- });
- this.checkLogin();
- cover_animation = wx.createAnimation({
- duration: 600,
- timingFunction: 'ease',
- });
- wx.getSystemInfo({
- success: function (res) {
- _this.setData({
- per: 750 / res.windowWidth
- });
- }
- });
- wx.createSelectorQuery().select('.choose-area').boundingClientRect(function (rect) {
- _this.setData({
- fixTop: rect.top,
- });
- }).exec();
- if (app.globalData.webview) {
- wx.navigateTo({
- url: app.globalData.webview,
- success: function () {
- app.globalData.webview = null;
- }
- });
- }
- },
- onHide: function () {
- },
- onUnload: function () {
- },
- onPullDownRefresh: function () {
- var _this = this;
- this.setData({
- list: [],
- pageNo: 1,
- scrollTop: 0
- }, function () {
- _this.getList();
- });
- },
- onReachBottom: function () {
- var isLast = this.data.isLast;
- if (isLast) {
- }
- else {
- this.getList();
- }
- },
- onShareAppMessage: function () {
- },
- onPageScroll: function (res) {
- var top = res.scrollTop;
- this.setData({
- scrollTop: top
- });
- }
- });
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZEQUFrRTtBQUNsRSwrQ0FBaUQ7QUFDakQsSUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFDcEIsSUFBSSxlQUFlLEdBQVEsRUFBRSxDQUFBO0FBQzdCLElBQUksQ0FBQztJQUlELElBQUksRUFBRTtRQUNGLGdCQUFnQixFQUFFLEtBQUs7UUFDdkIsVUFBVSxFQUFFLElBQUk7UUFDaEIsVUFBVSxFQUFFLElBQUk7UUFDaEIsVUFBVSxFQUFFLElBQUk7UUFDaEIsVUFBVSxFQUFFLElBQUk7UUFDaEIscUJBQXFCLEVBQUUsRUFBRTtRQUN6QixnQkFBZ0IsRUFBRSxFQUFFO1FBQ3BCLGlCQUFpQixFQUFFLEVBQUU7UUFDckIsUUFBUSxFQUFFLEVBQUU7UUFDWixVQUFVLEVBQUUsSUFBSTtRQUNoQixPQUFPLEVBQUUsSUFBSTtRQUNiLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFdBQVcsRUFBRSxFQUFFO1FBQ2YsY0FBYyxFQUFFLENBQUM7UUFDakIsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixhQUFhLEVBQUUsRUFBRTtRQUNqQixhQUFhLEVBQUUsQ0FBQztRQUNoQixVQUFVLEVBQUUsRUFBRTtRQUNkLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsU0FBUyxFQUFFLEVBQUU7UUFDYixjQUFjLEVBQUUsQ0FBQztnQkFDYixFQUFFLEVBQUUsRUFBRTtnQkFDTixJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE1BQU07YUFDZjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxPQUFPO2FBQ2hCO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE1B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QTtnQkFDakMsQ0FBQzthQUNKLENBQUMsQ0FBQTtTQUNMO0lBRUwsQ0FBQztJQUtELE1BQU0sRUFBRTtJQUVSLENBQUM7SUFLRCxRQUFRLEVBQUU7SUFFVixDQUFDO0lBS0QsaUJBQWlCLEVBQUU7UUFBQSxpQkFRbEI7UUFQRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxDQUFDO1NBQ2YsRUFBRTtZQUNDLEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFLRCxhQUFhLEVBQUU7UUFDWCxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLE1BQU0sRUFBRTtTQUtYO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDakI7SUFDTCxDQUFDO0lBS0QsaUJBQWlCLEVBQUU7SUFFbkIsQ0FBQztJQUNELFlBQVksRUFBRSxVQUFVLEdBQUc7UUFDdkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1QsU0FBUyxFQUFFLEdBQUc7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vaW5kZXguanNcbi8v6I635Y+W5bqU55So5a6e5L6LXG5pbXBvcnQgeyBnZXRSZXF1aXJlbWVudHNBcGksIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvaHdSZXF1aXJlbWVudFwiO1xuaW1wb3J0IHsgYmFubmVyQXBpIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvaHdVc2VyXCI7XG5jb25zdCBhcHAgPSBnZXRBcHAoKVxubGV0IGNvdmVyX2FuaW1hdGlvbjogYW55ID0ge31cblBhZ2Uoe1xuICAgIC8qKlxuICAgICAqIOmhtemdoueahOWIneWni+aVsOaNrlxuICAgICAqL1xuICAgIGRhdGE6IHtcbiAgICAgICAgJ2luZGljYXRvcl9kb3RzJzogZmFsc2UsIC8v6L2u5pKt5oyH56S654K5XG4gICAgICAgICdhdXRvcGxheSc6IHRydWUsIC8v6L2u5pKt6Ieq5Yqo5pKt5pS+XG4gICAgICAgICdjaXJjdWxhcic6IHRydWUsIC8v6L2u5pKt6KGU5o6l5Yqo55S7XG4gICAgICAgICdpbnRlcnZhbCc6IDMwMDAsIC8v6L2u5pKt6Ze06ZqU5pe26Ze0XG4gICAgICAgICdkdXJhdGlvbic6IDE1MDAsIC8v6L2u5pKt5Yqo55S75pe26Ze0XG4gICAgICAgICdjb25kaXRpb25fYW5pbWF0aW9uJzoge30sIC8v5LiK5pa55p2h5Lu25Yqo55S7XG4gICAgICAgICdsaXN0X2FuaW1hdGlvbic6IHt9LCAvL+S4i+aWueWIl+ihqOWKqOeUu1xuICAgICAgICAnY292ZXJfYW5pbWF0aW9uJzoge30sIC8v6YCJ5oup5Zyw5Z2A5Yqo55S7XG4gICAgICAgICdzd2lwZXInOiBbXSwgLy8g6L2u5pKt5YiX6KGoXG4gICAgICAgICdpbmR1c3RyeSc6ICfooYzkuJonLCAvL+ihjOS4mlxuICAgICAgICAncHJpY2UnOiAn5Y2V5Lu3JywgLy/ljZXku7dcbiAgICAgICAgJ2Rpc3RyaWN0JzogJ+S4jemZkOWMuuWfnycsIC8v5Yy65Z+fXG4gICAgICAgICdjb25kaXRpb25MaXN0JzogW10sIC8v546w6KGM5p2h5Lu25YiX6KGoXG4gICAgICAgICdjb25kaXRpb24nOiAnJywgLy/njrDooYzmnaHku7ZcbiAgICAgICAgJ2FjdGlvbl9pbmRleCc6IDAsIC8v546w6KGM5p2h5Lu257Si5byVXG4gICAgICAgICdpbmR1c3RyeV9pbmRleCc6IDAsIC8v6KGM5Lia57Si5byVXG4gICAgICAgICdpbmR1c3RyeV9pZCc6ICcnLCAvL+ihjOS4mmlkXG4gICAgICAgICdwcmljZV9pbmRleCc6IDAsIC8v5Y2V5Lu357Si5byVXG4gICAgICAgICdwcmljZV9pZCc6ICcnLCAvL+WNleS7t2lkXG4gICAgICAgICdwcm92aW5jZV9pZCc6ICcnLCAvL+ecgeS7vUlEXG4gICAgICAgICdjaXR5X2lkJzogJycsIC8v5Z+O5biCSURcbiAgICAgICAgJ2FyZWFfaWQnOiAnJywgLy/lnLDljLpJRFxuICAgICAgICAnaW5kdXN0cnlMaXN0JzogW3tcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIG5hbWU6ICfkuI3pmZDooYzkuJonXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgbmFtZTogJ+aVmeiCsuWfueiurSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICBuYW1lOiAnSVTkupLogZTnvZEnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgbmFtZTogJ+S7k+WCqOeJqea1gSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgICBuYW1lOiAn6YWS5bqX6aSQ6aWuJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogNCxcbiAgICAgICAgICAgIG5hbWU6ICflrrbmlL/kv53mtIEnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA1LFxuICAgICAgICAgICAgbmFtZTogJ+e7tOS/ruS/neWFuydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDYsXG4gICAgICAgICAgICBuYW1lOiAn5Lya5Yqh5Lya5bGVJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogNyxcbiAgICAgICAgICAgIG5hbWU6ICfkuJPkuJrmnI3liqEnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA4LFxuICAgICAgICAgICAgbmFtZTogJ+eUn+S6p+WItumAoCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDksXG4gICAgICAgICAgICBuYW1lOiAn5YW25LuW6KGM5LiaJ1xuICAgICAgICB9LFxuICAgICAgICBdLCAvL+ihjOS4muWIl+ihqFxuICAgICAgICAncHJpY2VMaXN0JzogW3tcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIG5hbWU6ICfkuI3pmZAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgbmFtZTogJzNL5Lul5LiLJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogMixcbiAgICAgICAgICAgIG5hbWU6ICczSy01SydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgICBuYW1lOiAnNUstOEsnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgbmFtZTogJzhLLTEySydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDUsXG4gICAgICAgICAgICBuYW1lOiAnMTJLLTIwSydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDYsXG4gICAgICAgICAgICBuYW1lOiAnMjBLLTMwSydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDcsXG4gICAgICAgICAgICBuYW1lOiAnMzBL5Lul5LiKJ1xuICAgICAgICB9LFxuICAgICAgICBdLCAvLyDljZXku7fliJfooahcbiAgICAgICAgJ2xpc3QnOiBbXSwgLy/pnIDmsYLliJfooahcbiAgICAgICAgJ3BhZ2VObyc6IDEsXG4gICAgICAgICdpc0xhc3QnOiBmYWxzZSxcbiAgICAgICAgJ29mZmxpbmUnOiBmYWxzZSxcbiAgICAgICAgJ2xvYWRpbmcnOiB0cnVlLFxuICAgICAgICAnbGlzdF9sZW5ndGgnOiBmYWxzZSxcbiAgICAgICAgJ3Nob3cnOiBmYWxzZSxcbiAgICAgICAgJ3RyYW5zaXRpb24nOiB0cnVlLFxuICAgICAgICAnZml4VG9wJzogMCxcbiAgICAgICAgJ3Njcm9sbFRvcCc6IDAsXG4gICAgICAgIHN3aXBlckluZGV4OiAwXG4gICAgfSxcbiAgICBzd2lwZXJDaGFuZ2UoZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICBzd2lwZXJJbmRleDogZS5kZXRhaWwuY3VycmVudFxuICAgICAgICB9KVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5bGV56S65Yig6YCJ5p2h5Lu2XG4gICAgICogQGNvbmRpdGlvbiB7c3RyaW5nfSAg5p2h5Lu2ICDlvZPojrflj5bnmoTmnaHku7bkuI3nrYnkuo5kYXRh6YeM6Z2i55qE5p2h5Lu25pe2IOS4jeWBmuaUueWPmCAgIOS4jeetieaXtiDmlLnlj5jmnaHku7Yg5Lul5Y+K5a+55bqU55qE5bGV56S65p2h5Lu2XG4gICAgICovXG4gICAgY2hvb3NlQ29uZGl0aW9uKGU6IGFueSkge1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5jb25kaXRpb24gPT09IHRoaXMuZGF0YS5jb25kaXRpb24gPyAnJyA6IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LmNvbmRpdGlvbjtcbiAgICAgICAgdGhpcy5kb0FuaW1hdGlvbihlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5jb25kaXRpb24gPT09IHRoaXMuZGF0YS5jb25kaXRpb24pXG4gICAgICAgIC8vIHRoaXMuZG9BbmltYXRpb24oZmFsc2UpXG4gICAgICAgIC8vIGxldCBhY3Rpb25faW5kZXggPSB0aGlzLmRhdGEuY29uZGl0aW9uID09PSB0aGlzLmRhdGEuYWN0aW9uX2luZGV4ID8gW10gOiB0aGlzLmRhdGFbYCR7Y29uZGl0aW9ufV9pbmRleGBdO1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgY29uZGl0aW9uLFxuICAgICAgICAgICAgLy8gYWN0aW9uX2luZGV4XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlsZXlvIDljLrln5/pgInmi6lcbiAgICAgKiBcbiAgICAgKi9cbiAgICBvcGVuQXJlYSgpIHtcbiAgICAgICAgdGhpcy5kb0FuaW1hdGlvbih0cnVlKVxuICAgICAgICBjb3Zlcl9hbmltYXRpb24ubGVmdCgwKS5zdGVwKCk7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICBjb3Zlcl9hbmltYXRpb246IGNvdmVyX2FuaW1hdGlvbi5leHBvcnQoKSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJycsXG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+mAieaLqeadoeS7tlxuICAgICAqIOagueaNruS4jeWQjOeahOadoeS7tuaPkuWFpeS4jeWQjOeahOWAvFxuICAgICAqL1xuICAgIGNob29zZShlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5pbmRleDtcbiAgICAgICAgY29uc3QgaWQgPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5pZDtcbiAgICAgICAgbGV0IGNvbmRpdGlvbiA9IHRoaXMuZGF0YS5jb25kaXRpb247XG4gICAgICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdXG4gICAgICAgIGlmIChjb25kaXRpb24gPT09ICdpbmR1c3RyeScpIHtcbiAgICAgICAgICAgIGxpc3QgPSB0aGlzLmRhdGEuaW5kdXN0cnlMaXN0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0ID0gdGhpcy5kYXRhLnByaWNlTGlzdFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgIFtjb25kaXRpb25dOiBsaXN0W2luZGV4XS5uYW1lLFxuICAgICAgICAgICAgW2Ake2NvbmRpdGlvbn1faW5kZXhgXTogaW5kZXgsXG4gICAgICAgICAgICBbYCR7Y29uZGl0aW9ufV9pZGBdOiBpZCxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJycsXG4gICAgICAgICAgICBsaXN0OiBbXSxcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KDEpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZG9BbmltYXRpb24odHJ1ZSlcblxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDkv53lrZjlnLDljLpcbiAgICAgKiBAZGlzdHJpY3Qge3N0cmluZ30g5Zyw5Yy6XG4gICAgICogQHByb3ZpbmNlX2lkIHt9IOecgeS7vUlEXG4gICAgICogQGNpdHlfaWQge30g5Z+O5biCSURcbiAgICAgKiBAYXJlYV9pZCB7fSDlnLDljLpJRFxuICAgICAqL1xuICAgIHNhdmVEaXN0cmljdChlOiBhbnkpIHtcbiAgICAgICAgY292ZXJfYW5pbWF0aW9uLmxlZnQoNzUwICsgJ3JweCcpLnN0ZXAoKTtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgIGNvdmVyX2FuaW1hdGlvbjogY292ZXJfYW5pbWF0aW9uLmV4cG9ydCgpLFxuICAgICAgICAgICAgZGlzdHJpY3Q6IGUuZGV0YWlsLmFyZWFfbmFtZSxcbiAgICAgICAgICAgIHByb3ZpbmNlX2lkOiBlLmRldGFpbC5wcm92aW5jZV9pZCxcbiAgICAgICAgICAgIGNpdHlfaWQ6IGUuZGV0YWlsLmNpdHlfaWQsXG4gICAgICAgICAgICBhcmVhX2lkOiBlLmRldGFpbC5hcmVhX2lkLFxuICAgICAgICAgICAgbGlzdDogW11cbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KDEpXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlhbPpl63lnLDljLrpgInmi6lcbiAgICAgKiBAY292ZXJfYW5pbWF0aW9uIOWcsOWMuumAieaLqeWKqOeUu1xuICAgICAqL1xuICAgIGNvbG9zZURpc3RyaWN0KCkge1xuICAgICAgICBjb3Zlcl9hbmltYXRpb24ubGVmdCg3NTAgKyAncnB4Jykuc3RlcCgpO1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgY292ZXJfYW5pbWF0aW9uOiBjb3Zlcl9hbmltYXRpb24uZXhwb3J0KClcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5kb0FuaW1hdGlvbih0cnVlKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5omn6KGM5p2h5Lu25Yqo55S7XG4gICAgICovXG4gICAgZG9BbmltYXRpb24oc3RhdHVzOiBib29sZWFuKSB7XG4gICAgICAgIC8vIGNvbnN0IGNvbmRpdGlvbl9hbmltYXRpb24gPSB0aGlzLmNvbmRpdGlvbl9hbmltYXRpb247XG4gICAgICAgIC8vIGNvbnN0IGxpc3RfYW5pbWF0aW9uID0gdGhpcy5saXN0X2FuaW1hdGlvbjtcbiAgICAgICAgLy8gY29uc3QgY29uZGl0aW9uX2xlbmd0aCA9IHN0YXR1cyA/IDAgOiAtNDEyICsgJ3JweCdcbiAgICAgICAgLy8gY29uc3QgbGlzdF9sZW5ndGggPSBzdGF0dXMgPyA1NDggKyAncnB4JyA6IDIwMSArICdycHgnXG4gICAgICAgIC8vIGNvbmRpdGlvbl9hbmltYXRpb24udG9wKGNvbmRpdGlvbl9sZW5ndGgpLnN0ZXAoKTtcbiAgICAgICAgLy8gbGlzdF9hbmltYXRpb24udG9wKGxpc3RfbGVuZ3RoKS5zdGVwKCk7XG4gICAgICAgIC8vIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIC8vICAgY29uZGl0aW9uX2FuaW1hdGlvbjogY29uZGl0aW9uX2FuaW1hdGlvbi5leHBvcnQoKSxcbiAgICAgICAgLy8gICBsaXN0X2FuaW1hdGlvbjogbGlzdF9hbmltYXRpb24uZXhwb3J0KCksXG4gICAgICAgIC8vIH0pXG4gICAgICAgIGNvbnN0IGZpeFRvcCA9IHRoaXMuZGF0YS5maXhUb3A7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuZGF0YS5zY3JvbGxUb3A7XG4gICAgICAgIGlmIChmaXhUb3AgPiBzY3JvbGxUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogc3RhdHVzXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDot7PovazkuKrkurrkuK3lv4NcbiAgICAgKi9cbiAgICB0b1BlcnNvbigpIHtcbiAgICAgICAgaWYgKHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VySWQnKSAmJiB3eC5nZXRTdG9yYWdlU3luYygndXNlclRva2VuJykpIHtcbiAgICAgICAgICAgIHd4Lm5hdmlnYXRlVG8oe1xuICAgICAgICAgICAgICAgIHVybDogJy9wYWdlcy9wZXJzb24vcGVyc29uJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3eC5zaG93TW9kYWwoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn5L2g6L+Y5pyq55m76ZmG77yM5piv5ZCm56uL5Y2z55m75b2VJyxcbiAgICAgICAgICAgICAgICBjYW5jZWxDb2xvcjogJyM4ODhBOEUnLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1Db2xvcjogJyMzMTM2NEMnLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29uZmlybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3gubmF2aWdhdGVUbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL3BhZ2VzL2xvZ2luL2xvZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi3s+i9rOivpuaDhemhtVxuICAgICAqL1xuICAgIHRvRGV0YWlsKGU6IGFueSkge1xuICAgICAgICBjb25zdCBpZCA9IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LmlkO1xuICAgICAgICB3eC5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgIHVybDogYC9wYWdlcy9kZXRhaWwvZGV0YWlsP2lkPSR7aWR9JiZzdGF0dXM9MWAsXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDojrflj5bpnIDmsYLliJfooahcbiAgICAgKiBAcGFnZU5vIHtudW1iZXJ9IOmhteeggVxuICAgICAqIEBwYWdlU2l6ZSB7bnVtYmVyfSDmlbDmja7mnaHmlbBcbiAgICAgKiBAcHJvdmluY2VfY29kZSB7bnVtYmVyfSDnnIHku73ku6PnoIFcbiAgICAgKiBAY2l0eV9jb2RlIHtudW1iZXJ9IOWfjuW4guS7o+eggVxuICAgICAqIEBjb3VudHJ5X2NvZGUge251bWJlcn0g5Zyw5Yy65Luj56CBXG4gICAgICogQHRyYWRlX3R5cGUge251bWJlcn0g6KGM5Lia57G75Z6LXG4gICAgICogQHByaWNlVHlwZSB7bnVtYmVyfSDku7fmoLzku6Plj7coMS03KSjkuI3pmZDnmoTor53kuI3kvKDmraTlj4LmlbApXG4gICAgICogQHBsYXRmb3JtX2lkIHtudW1iZXJ9IOaOpeWNleS6uueUqOaIt+aJgOWxnuW5s+WPsGlkXG4gICAgICovXG4gICAgZ2V0TGlzdChwYWdlTm8/OiBudW1iZXIsIHByb3ZpbmNlX2NvZGU/OiBudW1iZXIsIGNpdHlfY29kZT86IG51bWJlciwgY291bnRyeV9jb2RlPzogbnVtYmVyLCB0cmFkZV90eXBlPzogbnVtYmVyLCBwcmljZVR5cGU/OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IF9wYWdlTm86IG51bWJlciA9IHBhZ2VObyB8fCB0aGlzLmRhdGEucGFnZU5vXG4gICAgICAgIGNvbnN0IHBhcmFtID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICBwYWdlTm86IF9wYWdlTm8sXG4gICAgICAgICAgICBwcm92aW5jZV9jb2RlOiB0aGlzLmRhdGEucHJvdmluY2VfaWQsXG4gICAgICAgICAgICBjaXR5X2NvZGU6IHRoaXMuZGF0YS5jaXR5X2lkLFxuICAgICAgICAgICAgY291bnRyeV9jb2RlOiB0aGlzLmRhdGEuYXJlYV9pZCxcbiAgICAgICAgICAgIHRyYWRlX3R5cGU6IHRoaXMuZGF0YS5pbmR1c3RyeV9pZCxcbiAgICAgICAgICAgIHByaWNlVHlwZTogdGhpcy5kYXRhLnByaWNlX2lkXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHBhZ2VObyxcbiAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgICAgICAgIHByb3ZpbmNlX2NvZGUsXG4gICAgICAgICAgICBjaXR5X2NvZGUsXG4gICAgICAgICAgICBjb3VudHJ5X2NvZGUsXG4gICAgICAgICAgICB0cmFkZV90eXBlLFxuICAgICAgICAgICAgcHJpY2VUeXBlLFxuICAgICAgICAgICAgcGxhdGZvcm1faWQ6IGFwcC5nbG9iYWxEYXRhLnBsYXRmb3JtSWRcbiAgICAgICAgfSlcbiAgICAgICAgZ2V0UmVxdWlyZW1lbnRzQXBpKHBhcmFtKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzmsqHmnInnvZHnu5wgIOWxleekuue9kee7nOaVhemanOeVjOmdolxuICAgICAgICAgICAgICAgIGlmIChyZXMgPT09ICdvZmZsaW5lJyAmJiB0aGlzLmRhdGEubGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfbGVuZ3RoOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSA8cmVzcG9uc2VPcHRpb25zVHlwZT5yZXNcbiAgICAgICAgICAgIGlmIChkYXRhLmVycmNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocGFnZU5vID09PSAxICYmIGRhdGEuZGF0YS5yZXF1aXJlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZG9BbmltYXRpb24oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2xlbmd0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmxpbmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyDlnKjmiJDlip/lkI7pobXmlbDliqDkuIDmlrnkvr/ml6XlkI7osIPnlKhcbiAgICAgICAgICAgICAgICBfcGFnZU5vKys7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZU5vOiBfcGFnZU5vLFxuICAgICAgICAgICAgICAgICAgICBbYGxpc3RbJHtfcGFnZU5vIC0gMn1dYF06IGRhdGEuZGF0YS5yZXF1aXJlbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIGlzTGFzdDogZGF0YS5kYXRhLmlzTGFzdCxcbiAgICAgICAgICAgICAgICAgICAgb2ZmbGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGxpc3RfbGVuZ3RoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpc3RfbGVuZ3RoOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9mZmxpbmU6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6I635Y+W6aaW6aG1YmFubmVy5Zu+XG4gICAgICovXG4gICAgZ2V0QmFubmVyKCkge1xuICAgICAgICBiYW5uZXJBcGkoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gPHJlc3BvbnNlT3B0aW9uc1R5cGU+cmVzXG4gICAgICAgICAgICBpZiAoZGF0YS5lcnJjb2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiBkYXRhLmRhdGEuYmFubmVyTGlzdFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICByZWxvYWQoKSB7XG4gICAgICAgIC8vIOiOt+WPlumcgOaxguWIl+ihqFxuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgbGlzdDogW10sXG4gICAgICAgICAgICBwYWdlTm86IDEsXG4gICAgICAgICAgICBzY3JvbGxUb3A6IDBcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgLy8g6I635Y+W6aaW6aG1YmFubmVy5Zu+XG4gICAgICAgICAgICB0aGlzLmdldEJhbm5lcigpO1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIGFwcC51dGlscy5nZXRId1VzZXJJbmZvKCk7XG4gICAgfSxcbiAgICBjaGVja0xvZ2luKCkge1xuICAgICAgICBpZiAod3guZ2V0U3RvcmFnZVN5bmMoJ3VzZXJJZCcpICYmIHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VyVG9rZW4nKSkge1xuICAgICAgICAgICAgaWYgKHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VySW5mbycpLnJlZ2lzdGVyRnJvbSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHd4LnJlTGF1bmNoKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL3BhZ2VzL3N1Y2Nlc3Mvc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3eC5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgICAgICB1cmw6ICcvcGFnZXMvbG9naW4vbG9naW4nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLliqDovb1cbiAgICAgKi9cbiAgICBvbkxvYWQ6IGZ1bmN0aW9uICgpIHsgdGhpcy5nZXRCYW5uZXIoKTsgfSxcblxuICAgIC8qKlxuICAgICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5Yid5qyh5riy5p+T5a6M5oiQXG4gICAgICovXG4gICAgb25SZWFkeTogZnVuY3Rpb24gKCkge1xuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5pi+56S6XG4gICAgICovXG4gICAgb25TaG93OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICByb3V0ZTogdGhpcy5yb3V0ZVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNoZWNrTG9naW4oKVxuICAgICAgICAvLyB0aGlzLnJlbG9hZCgpXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDliJ3lp4vljJbliqjnlLtcbiAgICAgICAgICogQGNvbmRpdGlvbl9hbmltYXRpb24g5p2h5Lu25qGG5Yqo55S7XG4gICAgICAgICAqIEBsaXN0X2FuaW1hdGlvbiDpnIDmsYLliJfooajliqjnlLtcbiAgICAgICAgICogQGNvdmVyX2FuaW1hdGlvbiDlnLDlnYDpgInmi6nliqjnlLtcbiAgICAgICAgICovXG4gICAgICAgIC8vIHRoaXMuY29uZGl0aW9uX2FuaW1hdGlvbiA9IHd4LmNyZWF0ZUFuaW1hdGlvbih7XG4gICAgICAgIC8vICAgZHVyYXRpb246IDcwMCxcbiAgICAgICAgLy8gICB0aW1pbmdGdW5jdGlvbjogJ2Vhc2UnLFxuICAgICAgICAvLyB9KVxuICAgICAgICAvLyB0aGlzLmxpc3RfYW5pbWF0aW9uID0gd3guY3JlYXRlQW5pbWF0aW9uKHtcbiAgICAgICAgLy8gICBkdXJhdGlvbjogNjAwLFxuICAgICAgICAvLyAgIHRpbWluZ0Z1bmN0aW9uOiAnZWFzZScsXG4gICAgICAgIC8vIH0pXG4gICAgICAgIGNvdmVyX2FuaW1hdGlvbiA9IHd4LmNyZWF0ZUFuaW1hdGlvbih7XG4gICAgICAgICAgICBkdXJhdGlvbjogNjAwLFxuICAgICAgICAgICAgdGltaW5nRnVuY3Rpb246ICdlYXNlJyxcbiAgICAgICAgfSlcbiAgICAgICAgLy8g6I635Y+W57O757uf5L+h5oGv566X5Ye65YOP57Sg5q+UXG4gICAgICAgIHd4LmdldFN5c3RlbUluZm8oe1xuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICBwZXI6IDc1MCAvIHJlcy53aW5kb3dXaWR0aFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC8vIOiOt+WPlue7neWvueWumuS9jeeahOmrmOW6plxuICAgICAgICB3eC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0KCcuY2hvb3NlLWFyZWEnKS5ib3VuZGluZ0NsaWVudFJlY3QoKHJlY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgICAgZml4VG9wOiByZWN0LnRvcCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pLmV4ZWMoKTtcbiAgICAgICAgaWYgKGFwcC5nbG9iYWxEYXRhLndlYnZpZXcpIHtcbiAgICAgICAgICAgIHd4Lm5hdmlnYXRlVG8oe1xuICAgICAgICAgICAgICAgIHVybDogYXBwLmdsb2JhbERhdGEud2VidmlldyxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcC5nbG9iYWxEYXRhLndlYnZpZXcgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i6ZqQ6JePXG4gICAgICovXG4gICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLljbjovb1cbiAgICAgKi9cbiAgICBvblVubG9hZDogZnVuY3Rpb24gKCkge1xuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOmhtemdouebuOWFs+S6i+S7tuWkhOeQhuWHveaVsC0t55uR5ZCs55So5oi35LiL5ouJ5Yqo5L2cXG4gICAgICovXG4gICAgb25QdWxsRG93blJlZnJlc2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgIGxpc3Q6IFtdLFxuICAgICAgICAgICAgcGFnZU5vOiAxLFxuICAgICAgICAgICAgc2Nyb2xsVG9wOiAwXG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpXG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOmhtemdouS4iuaLieinpuW6leS6i+S7tueahOWkhOeQhuWHveaVsFxuICAgICAqL1xuICAgIG9uUmVhY2hCb3R0b206IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgaXNMYXN0ID0gdGhpcy5kYXRhLmlzTGFzdDtcbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgICAgLy8gd3guc2hvd1RvYXN0KHtcbiAgICAgICAgICAgIC8vICAgaWNvbjogJ25vbmUnLFxuICAgICAgICAgICAgLy8gICB0aXRsZTogJ+W3sue7j+aYr+acgOWQjuS4gOmhteS6hicsXG4gICAgICAgICAgICAvLyB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KClcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDnlKjmiLfngrnlh7vlj7PkuIrop5LliIbkuqtcbiAgICAgKi9cbiAgICBvblNoYXJlQXBwTWVzc2FnZTogZnVuY3Rpb24gKCkge1xuXG4gICAgfSxcbiAgICBvblBhZ2VTY3JvbGw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgbGV0IHRvcCA9IHJlcy5zY3JvbGxUb3A7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHRvcFxuICAgICAgICB9KTtcbiAgICB9XG59KSJdfQ==
|