UNPKG

ng-yunzai-mobile

Version:

1. 修改wechat.micro.ts

379 lines 27.4 kB
/** * @fileoverview added by tsickle * Generated from: devices/dingtalk.ts * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { BaseDevice } from "./base.device"; import { Inject, Injectable } from "@angular/core"; import { TokenService } from "../token/token.service"; import { HttpClient } from "@angular/common/http"; import { UserService } from "../user/user.service"; import { BASE_CLIENT } from "../client/base.client"; import { preloaderFinished } from "../auth/preloader"; import { from } from "rxjs"; import { Title } from "@angular/platform-browser"; import * as i0 from "@angular/core"; import * as i1 from "../token/token.service"; import * as i2 from "@angular/common/http"; import * as i3 from "../user/user.service"; import * as i4 from "@angular/platform-browser"; import * as i5 from "../client/base.client"; /** @type {?} */ const apis = [ 'requestAuthCode', 'scan', 'getLocation', 'device.geolocation.get', ]; export class Dingtalk extends BaseDevice { /** * @param {?} tokenService * @param {?} http * @param {?} user * @param {?} title * @param {?} baseclient */ constructor(tokenService, http, user, title, baseclient) { super(); this.tokenService = tokenService; this.http = http; this.user = user; this.title = title; this.baseclient = baseclient; } /** * @return {?} */ auth() { if (this.baseclient.dingtalk && this.baseclient.dingtalk.auth === false) { return new Promise((/** * @param {?} resolve * @param {?} reject * @return {?} */ (resolve, reject) => { preloaderFinished(); resolve(true); })); } return new Promise((/** * @param {?} reject * @param {?} resolve * @return {?} */ (reject, resolve) => { /** @type {?} */ const url = encodeURIComponent(window.location.href); this.http .get(`${this.baseclient.gateway}/wechat/mp/token?url=` + url) .subscribe((/** * @param {?} token * @return {?} */ (token) => { if (token.error_code === 200) { this.tokenService.set((/** @type {?} */ ({ accessToken: token.message, tokenType: "bearer", }))); this.http .get(`${this.baseclient.gateway}/auth/user`) .subscribe((/** * @param {?} response * @return {?} */ (response) => { this.user.set(response.principal); this.generateDingtalkConfig(); preloaderFinished(); reject(null); })); } else if (token.error_code === 500) { // 没有token,则重定向到认证页面,认证完成后会跳回本页面 window.location.href = token.path; } })); })); } /** * @param {?} iwindow * @return {?} */ openWindow(iwindow) { window.open(iwindow.url, '_self'); } /** * @param {?} ititle * @return {?} */ setTitle(ititle) { this.title.setTitle(ititle.title); } /** * @param {?} navigationBar * @return {?} */ setNavigationBar(navigationBar) { alert("dingtalk暂不支持放置按钮!"); } /** * @param {?} ishare * @return {?} */ share(ishare) { alert("dingtalk暂不支持分享!"); } /** * @return {?} */ getToken() { return this.tokenService.get(); } /** * @return {?} */ scanCode() { /** @type {?} */ const p = new Promise((/** * @param {?} resolve * @return {?} */ resolve => { dd.scan({ type: 'qr', success: (/** * @param {?} res * @return {?} */ (res) => { resolve(res.text); }), fail: (/** * @param {?} err * @return {?} */ (err) => { console.log('调用扫一扫失败:' + JSON.stringify(err)); }), }); })); return from(p); } /** * @return {?} */ userLocation() { /** @type {?} */ const p = new Promise((/** * @param {?} resolve * @return {?} */ resolve => { dd.getLocation({ type: 1, useCache: true, coordinate: '0', cacheTimeout: 20, withReGeocode: true, targetAccuracy: '200', success: (/** * @param {?} res * @return {?} */ (res) => { console.log(res); const { latitude, longitude, address } = res; resolve({ latitude, longitude, address }); }), fail: (/** * @param {?} err * @return {?} */ (err) => { console.log('调用定位失败:' + JSON.stringify(err)); }), }); })); return from(p); } /** * @param {?} bssids * @return {?} */ validateInWifi(bssids) { alert("dingtalk暂不支持WIFI验证!"); return undefined; } /** * @return {?} */ getWifiMac() { alert("dingtalk暂不支持获取MAC地址!"); return undefined; } /** * @param {?} count * @return {?} */ chooseContacts(count) { alert("dingtalk暂不支持获取联系人!"); return undefined; } /** * @param {?} targetUserId * @return {?} */ contactDetails(targetUserId) { alert("dingtalk暂不支持查询联系人详细信息!"); return undefined; } /** * @param {?} count * @param {?} sourceType * @return {?} */ uploadImage(count, sourceType) { alert("dingtalk暂不支持图片上传!"); return undefined; } /** * @param {?} url * @param {?} openType * @param {?} title * @param {?} id * @param {?} type * @return {?} */ openReadWithTimer(url, openType, title, id, type) { alert("dingtalk暂不支持读物时间统计!"); return undefined; } /** * @param {?} limitMinute * @return {?} */ uploadMovie(limitMinute) { alert("dingtalk暂不支持视频上传!"); return undefined; } /** * @param {?} url * @param {?} title * @return {?} */ fileBrowser(url, title) { alert("dingtalk暂不支持此功能!"); return undefined; } /** * @param {?} ticket * @param {?} callback * @return {?} */ startSearchBeacons(ticket, callback) { throw new Error("Method not implemented."); } /** * @param {?} callback * @return {?} */ stopSearchBeacons(callback) { throw new Error("Method not implemented."); } /** * @param {?} callback * @return {?} */ onSearchBeacons(callback) { throw new Error("Method not implemented."); } /** * @return {?} */ generateDingtalkConfig() { this.http .get(`${this.baseclient.gateway}/wechat/mp/jssdk?url=${encodeURIComponent(window.location.href)}`) .subscribe((/** * @param {?} response * @return {?} */ (response) => { try { dd.config({ agentId: response.agentId, // 必填,微应用ID corpId: response.corpId, // 必填,企业ID timeStamp: response.timestamp, // 必填,生成签名的时间戳 nonceStr: response.nonceStr, // 必填,自定义固定字符串。 signature: response.signature, // 必填,签名 type: 0, // 选填。0表示微应用的jsapi,1表示服务窗的jsapi;不填默认为0。该参数从dingtalk.js的0.8.3版本开始支持 jsApiList: apis // 必填,需要使用的jsapi列表,注意:不要带dd。 }); } catch (e) { console.log(e); } })); dd.ready((/** * @return {?} */ () => { console.log('钉钉jssdk初始化完成.'); })); dd.error((/** * @param {?} res * @return {?} */ (res) => { console.log('钉钉jssdk初始化失败:', res); })); } } Dingtalk.decorators = [ { type: Injectable, args: [{ providedIn: "root", },] } ]; /** @nocollapse */ Dingtalk.ctorParameters = () => [ { type: TokenService }, { type: HttpClient }, { type: UserService }, { type: Title }, { type: undefined, decorators: [{ type: Inject, args: [BASE_CLIENT,] }] } ]; /** @nocollapse */ Dingtalk.ngInjectableDef = i0.ɵɵdefineInjectable({ factory: function Dingtalk_Factory() { return new Dingtalk(i0.ɵɵinject(i1.TokenService), i0.ɵɵinject(i2.HttpClient), i0.ɵɵinject(i3.UserService), i0.ɵɵinject(i4.Title), i0.ɵɵinject(i5.BASE_CLIENT)); }, token: Dingtalk, providedIn: "root" }); if (false) { /** * @type {?} * @private */ Dingtalk.prototype.tokenService; /** * @type {?} * @private */ Dingtalk.prototype.http; /** * @type {?} * @private */ Dingtalk.prototype.user; /** * @type {?} * @private */ Dingtalk.prototype.title; /** * @type {?} * @private */ Dingtalk.prototype.baseclient; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGluZ3RhbGsuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy15dW56YWktbW9iaWxlLyIsInNvdXJjZXMiOlsiZGV2aWNlcy9kaW5ndGFsay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDakQsT0FBTyxFQUFDLFdBQVcsRUFBYSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRXBELE9BQU8sRUFBQyxJQUFJLEVBQWEsTUFBTSxNQUFNLENBQUM7QUFFdEMsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztNQUkxQyxJQUFJLEdBQUc7SUFDWCxpQkFBaUI7SUFDakIsTUFBTTtJQUNOLGFBQWE7SUFDYix3QkFBd0I7Q0FDekI7QUFRRCxNQUFNLE9BQU8sUUFBUyxTQUFRLFVBQVU7Ozs7Ozs7O0lBQ3RDLFlBQ1UsWUFBMEIsRUFDMUIsSUFBZ0IsRUFDaEIsSUFBaUIsRUFDakIsS0FBWSxFQUNTLFVBQXNCO1FBRW5ELEtBQUssRUFBRSxDQUFDO1FBTkEsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLFVBQUssR0FBTCxLQUFLLENBQU87UUFDUyxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBR3JELENBQUM7Ozs7SUFFRCxJQUFJO1FBQ0YsSUFBSSxJQUFJLENBQUMsVUFBVSxD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QUN6Qix5QkFBb0I7Ozs7O0lBQ3BCLDhCQUFtRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QmFzZURldmljZX0gZnJvbSBcIi4vYmFzZS5kZXZpY2VcIjtcclxuaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VG9rZW5TZXJ2aWNlfSBmcm9tIFwiLi4vdG9rZW4vdG9rZW4uc2VydmljZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQge1VzZXJTZXJ2aWNlfSBmcm9tIFwiLi4vdXNlci91c2VyLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCQVNFX0NMSUVOVCwgQmFzZUNsaWVudH0gZnJvbSBcIi4uL2NsaWVudC9iYXNlLmNsaWVudFwiO1xyXG5pbXBvcnQge3ByZWxvYWRlckZpbmlzaGVkfSBmcm9tIFwiLi4vYXV0aC9wcmVsb2FkZXJcIjtcclxuaW1wb3J0IHtJdG9rZW59IGZyb20gXCIuLi9hdXRoL2l0b2tlblwiO1xyXG5pbXBvcnQge2Zyb20sIE9ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7SVNoYXJlLCBJVGl0bGUsIElXaW5kb3csIE5hdmlnYXRpb25CYXIsIFVzZXJMb2NhdGlvbn0gZnJvbSBcIi4vbW9kZWxcIjtcclxuaW1wb3J0IHtUaXRsZX0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHtNeVdlY2hhdE1wVG9rZW59IGZyb20gXCIuL21vZGVsL3dlY2hhdC5tcFwiO1xyXG5cclxuXHJcbmNvbnN0IGFwaXMgPSBbXHJcbiAgJ3JlcXVlc3RBdXRoQ29kZScsXHJcbiAgJ3NjYW4nLFxyXG4gICdnZXRMb2NhdGlvbicsXHJcbiAgJ2RldmljZS5nZW9sb2NhdGlvbi5nZXQnLFxyXG5dO1xyXG5cclxuXHJcbmRlY2xhcmUgbGV0IGRkO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGluZ3RhbGsgZXh0ZW5kcyBCYXNlRGV2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBUb2tlblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHVzZXI6IFVzZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0aXRsZTogVGl0bGUsXHJcbiAgICBASW5qZWN0KEJBU0VfQ0xJRU5UKSBwcml2YXRlIGJhc2VjbGllbnQ6IEJhc2VDbGllbnRcclxuICApIHtcclxuICAgIHN1cGVyKCk7XHJcbiAgfVxyXG5cclxuICBhdXRoKCk6IFByb21pc2U8YW55PiB7XHJcbiAgICBpZiAodGhpcy5iYXNlY2xpZW50LmRpbmd0YWxrICYmIHRoaXMuYmFzZWNsaWVudC5kaW5ndGFsay5hdXRoID09PSBmYWxzZSkge1xyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgcHJlbG9hZGVyRmluaXNoZWQoKTtcclxuICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZTxhbnk+KChyZWplY3QsIHJlc29sdmUpID0+IHtcclxuICAgICAgY29uc3QgdXJsID0gZW5jb2RlVVJJQ29tcG9uZW50KHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgLmdldChgJHt0aGlzLmJhc2VjbGllbnQuZ2F0ZXdheX0vd2VjaGF0L21wL3Rva2VuP3VybD1gICsgdXJsKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRva2VuOiBNeVdlY2hhdE1wVG9rZW4pID0+IHtcclxuICAgICAgICAgIGlmICh0b2tlbi5lcnJvcl9jb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy50b2tlblNlcnZpY2Uuc2V0KHtcclxuICAgICAgICAgICAgICBhY2Nlc3NUb2tlbjogdG9rZW4ubWVzc2FnZSxcclxuICAgICAgICAgICAgICB0b2tlblR5cGU6IFwiYmVhcmVyXCIsXHJcbiAgICAgICAgICAgIH0gYXMgYW55KTtcclxuICAgICAgICAgICAgdGhpcy5odHRwXHJcbiAgICAgICAgICAgICAgLmdldChgJHt0aGlzLmJhc2VjbGllbnQuZ2F0ZXdheX0vYXV0aC91c2VyYClcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVzZXIuc2V0KHJlc3BvbnNlLnByaW5jaXBhbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGluZ3RhbGtDb25maWcoKTtcclxuICAgICAgICAgICAgICAgIHByZWxvYWRlckZpbmlzaGVkKCk7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobnVsbCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHRva2VuLmVycm9yX2NvZGUgPT09IDUwMCkge1xyXG4gICAgICAgICAgICAvLyDmsqHmnIl0b2tlbu+8jOWImemHjeWumuWQkeWIsOiupOivgemhtemdou+8jOiupOivgeWujOaIkOWQjuS8mui3s+WbnuacrOmhtemdolxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHRva2VuLnBhdGg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9wZW5XaW5kb3coaXdpbmRvdzogSVdpbmRvdyk6IHZvaWQge1xyXG4gICAgd2luZG93Lm9wZW4oaXdpbmRvdy51cmwsICdfc2VsZicpO1xyXG4gIH1cclxuXHJcbiAgc2V0VGl0bGUoaXRpdGxlOiBJVGl0bGUpOiB2b2lkIHtcclxuICAgIHRoaXMudGl0bGUuc2V0VGl0bGUoaXRpdGxlLnRpdGxlKTtcclxuICB9XHJcblxyXG4gIHNldE5hdmlnYXRpb25CYXIobmF2aWdhdGlvbkJhcjogTmF2aWdhdGlvbkJhcik6IHZvaWQge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeaUvue9ruaMiemSriFcIik7XHJcbiAgfVxyXG5cclxuICBzaGFyZShpc2hhcmU6IElTaGFyZSk6IHZvaWQge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeWIhuS6qyFcIik7XHJcbiAgfVxyXG5cclxuICBnZXRUb2tlbigpOiBJdG9rZW4ge1xyXG4gICAgcmV0dXJuIHRoaXMudG9rZW5TZXJ2aWNlLmdldCgpO1xyXG4gIH1cclxuXHJcbiAgc2NhbkNvZGUoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHAgPSBuZXcgUHJvbWlzZTxzdHJpbmc+KHJlc29sdmUgPT4ge1xyXG4gICAgICBkZC5zY2FuKHtcclxuICAgICAgICB0eXBlOiAncXInLFxyXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuICAgICAgICAgIHJlc29sdmUocmVzLnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFpbDogKGVycikgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2coJ+iwg+eUqOaJq+S4gOaJq+Wksei0pTonICsgSlNPTi5zdHJpbmdpZnkoZXJyKSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmcm9tKHApO1xyXG4gIH1cclxuXHJcbiAgdXNlckxvY2F0aW9uKCk6IE9ic2VydmFibGU8VXNlckxvY2F0aW9uPiB7XHJcbiAgICBjb25zdCBwID0gbmV3IFByb21pc2U8VXNlckxvY2F0aW9uPihyZXNvbHZlID0+IHtcclxuICAgICAgZGQuZ2V0TG9jYXRpb24oe1xyXG4gICAgICAgIHR5cGU6IDEsXHJcbiAgICAgICAgdXNlQ2FjaGU6IHRydWUsXHJcbiAgICAgICAgY29vcmRpbmF0ZTogJzAnLFxyXG4gICAgICAgIGNhY2hlVGltZW91dDogMjAsXHJcbiAgICAgICAgd2l0aFJlR2VvY29kZTogdHJ1ZSxcclxuICAgICAgICB0YXJnZXRBY2N1cmFjeTogJzIwMCcsXHJcbiAgICAgICAgc3VjY2VzczogKHJlcykgPT4ge1xyXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzKTtcclxuICAgICAgICAgIGNvbnN0IHtsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhZGRyZXNzfSA9IHJlcztcclxuICAgICAgICAgIHJlc29sdmUoe2xhdGl0dWRlLCBsb25naXR1ZGUsIGFkZHJlc3N9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IChlcnIpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKCfosIPnlKjlrprkvY3lpLHotKU6JyArIEpTT04uc3RyaW5naWZ5KGVycikpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZnJvbShwKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlSW5XaWZpKGJzc2lkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIFXSUZJ6aqM6K+BIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBnZXRXaWZpTWFjKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB6I635Y+WTUFD5Zyw5Z2AIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBjaG9vc2VDb250YWN0cyhjb3VudDogbnVtYmVyKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHojrflj5bogZTns7vkurohXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIGNvbnRhY3REZXRhaWxzKHRhcmdldFVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHmn6Xor6LogZTns7vkurror6bnu4bkv6Hmga8hXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHVwbG9hZEltYWdlKGNvdW50OiBudW1iZXIsIHNvdXJjZVR5cGU6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBhbGVydChcImRpbmd0YWxr5pqC5LiN5pSv5oyB5Zu+54mH5LiK5LygIVwiKTtcclxuICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBvcGVuUmVhZFdpdGhUaW1lcihcclxuICAgIHVybDogYW55LFxyXG4gICAgb3BlblR5cGU6IGFueSxcclxuICAgIHRpdGxlOiBhbnksXHJcbiAgICBpZDogYW55LFxyXG4gICAgdHlwZTogYW55XHJcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGFsZXJ0KFwiZGluZ3RhbGvmmoLkuI3mlK/mjIHor7vnianml7bpl7Tnu5/orqEhXCIpO1xyXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHVwbG9hZE1vdmllKGxpbWl0TWludXRlOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeinhumikeS4iuS8oCFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgZmlsZUJyb3dzZXIodXJsOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgYWxlcnQoXCJkaW5ndGFsa+aaguS4jeaUr+aMgeatpOWKn+iDvSFcIik7XHJcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gIH1cclxuXHJcbiAgc3RhcnRTZWFyY2hCZWFjb25zKHRpY2tldDogc3RyaW5nLCBjYWxsYmFjazogKGFyZ3Y6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgfVxyXG5cclxuICBzdG9wU2VhcmNoQmVhY29ucyhjYWxsYmFjazogKGFyZ3Y6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XHJcbiAgfVxyXG5cclxuICBvblNlYXJjaEJlYWNvbnMoY2FsbGJhY2s6IChhcmd2OiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xyXG4gIH1cclxuXHJcblxyXG4gIGdlbmVyYXRlRGluZ3RhbGtDb25maWcoKTogdm9pZCB7XHJcbiAgICB0aGlzLmh0dHBcclxuICAgICAgLmdldChgJHt0aGlzLmJhc2VjbGllbnQuZ2F0ZXdheX0vd2VjaGF0L21wL2pzc2RrP3VybD0ke2VuY29kZVVSSUNvbXBvbmVudCh3aW5kb3cubG9jYXRpb24uaHJlZil9YClcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBkZC5jb25maWcoe1xyXG4gICAgICAgICAgICBhZ2VudElkOiByZXNwb25zZS5hZ2VudElkLCAvLyDlv4XloavvvIzlvq7lupTnlKhJRFxyXG4gICAgICAgICAgICBjb3JwSWQ6IHJlc3BvbnNlLmNvcnBJZCwgLy8g5b+F5aGr77yM5LyB5LiaSURcclxuICAgICAgICAgICAgdGltZVN0YW1wOiByZXNwb25zZS50aW1lc3RhbXAsIC8vIOW/heWhq++8jOeUn+aIkOetvuWQjeeahOaXtumXtOaIs1xyXG4gICAgICAgICAgICBub25jZVN0cjogcmVzcG9uc2Uubm9uY2VTdHIsIC8vIOW/heWhq++8jOiHquWumuS5ieWbuuWumuWtl+espuS4suOAglxyXG4gICAgICAgICAgICBzaWduYXR1cmU6IHJlc3BvbnNlLnNpZ25hdHVyZSwgLy8g5b+F5aGr77yM562+5ZCNXHJcbiAgICAgICAgICAgIHR5cGU6IDAsICAgLy8g6YCJ5aGr44CCMOihqOekuuW+ruW6lOeUqOeahGpzYXBpLDHooajnpLrmnI3liqHnqpfnmoRqc2Fwae+8m+S4jeWhq+m7mOiupOS4ujDjgILor6Xlj4LmlbDku45kaW5ndGFsay5qc+eahDAuOC4z54mI5pys5byA5aeL5pSv5oyBXHJcbiAgICAgICAgICAgIGpzQXBpTGlzdDogYXBpcyAvLyDlv4XloavvvIzpnIDopoHkvb/nlKjnmoRqc2FwaeWIl+ihqO+8jOazqOaEj++8muS4jeimgeW4pmRk44CCXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgZGQucmVhZHkoKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn6ZKJ6ZKJanNzZGvliJ3lp4vljJblrozmiJAuJyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBkZC5lcnJvcigocmVzKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCfpkonpkolqc3Nka+WIneWni+WMluWksei0pTonLCByZXMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==