1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
8 |
|
9 | var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
10 |
|
11 | var _querystring = require("querystring");
|
12 |
|
13 | var _querystring2 = _interopRequireDefault(_querystring);
|
14 |
|
15 | var _StreamResource = require("./StreamResource");
|
16 |
|
17 | var _StreamResource2 = _interopRequireDefault(_StreamResource);
|
18 |
|
19 | var _TalkResource = require("./TalkResource");
|
20 |
|
21 | var _TalkResource2 = _interopRequireDefault(_TalkResource);
|
22 |
|
23 | var _DtmfResource = require("./DtmfResource");
|
24 |
|
25 | var _DtmfResource2 = _interopRequireDefault(_DtmfResource);
|
26 |
|
27 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
28 |
|
29 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
30 |
|
31 | /**
|
32 | * Provides access to the `calls` resource.
|
33 | */
|
34 | var CallsResource = function () {
|
35 | _createClass(CallsResource, null, [{
|
36 | key: "PATH",
|
37 |
|
38 | /**
|
39 | * The path to the `calls` resource.
|
40 | */
|
41 | get: function get() {
|
42 | return "/v1/calls";
|
43 | }
|
44 |
|
45 | /**
|
46 | * Creates a new CallsResource.
|
47 | *
|
48 | * @param {Credentials} creds - Credentials used when interacting with the Nexmo API.
|
49 | * @param {Object} options - additional options for the class.
|
50 | */
|
51 |
|
52 | }]);
|
53 |
|
54 | function CallsResource(creds, options) {
|
55 | _classCallCheck(this, CallsResource);
|
56 |
|
57 | this.creds = creds;
|
58 | this.options = options;
|
59 |
|
60 | /**
|
61 | * @type StreamController
|
62 | */
|
63 | this.stream = new _StreamResource2.default(this.creds, this.options);
|
64 |
|
65 | /**
|
66 | * @type TalkResource
|
67 | */
|
68 | this.talk = new _TalkResource2.default(this.creds, this.options);
|
69 |
|
70 | /**
|
71 | * @type DtmfResource
|
72 | */
|
73 | this.dtmf = new _DtmfResource2.default(this.creds, this.options);
|
74 | }
|
75 |
|
76 | /**
|
77 | * Create a new call.
|
78 | *
|
79 | * @param {Object} params - Parameters used when creating the call. See https://developer.nexmo.com/api/voice#create-an-outbound-call for more information.
|
80 | * @param {function} callback - function to be called when the request completes.
|
81 | */
|
82 |
|
83 |
|
84 | _createClass(CallsResource, [{
|
85 | key: "create",
|
86 | value: function create(params, callback) {
|
87 | params = JSON.stringify(params);
|
88 |
|
89 | var config = {
|
90 | host: this.options.apiHost || "api.nexmo.com",
|
91 | path: CallsResource.PATH,
|
92 | method: "POST",
|
93 | body: params,
|
94 | headers: {
|
95 | "Content-Type": "application/json",
|
96 | "Content-Length": Buffer.byteLength(params),
|
97 | Authorization: "Bearer " + this.creds.generateJwt()
|
98 | }
|
99 | };
|
100 | this.options.httpClient.request(config, callback);
|
101 | }
|
102 |
|
103 | /**
|
104 | * Get an existing call.
|
105 | *
|
106 | * @param {string|object} query - The unique identifier for the call to retrieve
|
107 | * or a set of filter parameters for the query. For more information
|
108 | * see https://docs.nexmo.com/voice/voice-api/api-reference#call_retrieve
|
109 | * @param {function} callback - function to be called when the request completes.
|
110 | */
|
111 |
|
112 | }, {
|
113 | key: "get",
|
114 | value: function get(query, callback) {
|
115 | if (!query) {
|
116 | throw new Error('"query" is a required parameter');
|
117 | }
|
118 |
|
119 | var pathExt = "";
|
120 | if (typeof query === "string") {
|
121 | // single call Id
|
122 | pathExt = "/" + query;
|
123 | } else if ((typeof query === "undefined" ? "undefined" : _typeof(query)) === "object" && Object.keys(query).length > 0) {
|
124 | // filter
|
125 | pathExt = "?" + _querystring2.default.stringify(query);
|
126 | }
|
127 |
|
128 | var config = {
|
129 | host: this.options.apiHost || "api.nexmo.com",
|
130 | path: "" + CallsResource.PATH + pathExt,
|
131 | method: "GET",
|
132 | headers: {
|
133 | "Content-Type": "application/json",
|
134 | Authorization: "Bearer " + this.creds.generateJwt()
|
135 | }
|
136 | };
|
137 | this.options.httpClient.request(config, callback);
|
138 | }
|
139 |
|
140 | /**
|
141 | * Update an existing call.
|
142 | *
|
143 | * @param {string} [callId] - The unique identifier for the call to update.
|
144 | * @param {Object} params - Parameters used when updating the call. See https://developer.nexmo.com/api/voice#modify-an-existing-call for more information.
|
145 | * @param {function} callback - function to be called when the request completes.
|
146 | */
|
147 |
|
148 | }, {
|
149 | key: "update",
|
150 | value: function update(callId, params, callback) {
|
151 | params = JSON.stringify(params);
|
152 |
|
153 | var config = {
|
154 | host: this.options.apiHost || "api.nexmo.com",
|
155 | path: CallsResource.PATH + "/" + callId,
|
156 | method: "PUT",
|
157 | body: params,
|
158 | headers: {
|
159 | "Content-Type": "application/json",
|
160 | "Content-Length": Buffer.byteLength(params),
|
161 | Authorization: "Bearer " + this.creds.generateJwt()
|
162 | }
|
163 | };
|
164 | this.options.httpClient.request(config, callback);
|
165 | }
|
166 | }]);
|
167 |
|
168 | return CallsResource;
|
169 | }();
|
170 |
|
171 | exports.default = CallsResource;
|
172 | module.exports = exports["default"];
|
173 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9DYWxsc1Jlc291cmNlLmpzIl0sIm5hbWVzIjpbIkNhbGxzUmVzb3VyY2UiLCJjcmVkcyIsIm9wdGlvbnMiLCJzdHJlYW0iLCJ0YWxrIiwiZHRtZiIsInBhcmFtcyIsImNhbGxiYWNrIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvbmZpZyIsImhvc3QiLCJhcGlIb3N0IiwicGF0aCIsIlBBVEgiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsIkJ1ZmZlciIsImJ5dGVMZW5ndGgiLCJBdXRob3JpemF0aW9uIiwiZ2VuZXJhdGVKd3QiLCJodHRwQ2xpZW50IiwicmVxdWVzdCIsInF1ZXJ5IiwiRXJyb3IiLCJwYXRoRXh0IiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImNhbGxJZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7O0FBRUE7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7OztBQUVBOzs7SUFHTUEsYTs7OztBQUNKOzs7d0JBR2tCO0FBQ2hCLGFBQU8sV0FBUDtBQUNEOztBQUVEOzs7Ozs7Ozs7QUFNQSx5QkFBWUMsS0FBWixFQUFtQkMsT0FBbkIsRUFBNEI7QUFBQTs7QUFDMUIsU0FBS0QsS0FBTCxHQUFhQSxLQUFiO0FBQ0EsU0FBS0MsT0FBTCxHQUFlQSxPQUFmOztBQUVBOzs7QUFHQSxTQUFLQyxNQUFMLEdBQWMsNkJBQW1CLEtBQUtGLEtBQXhCLEVBQStCLEtBQUtDLE9BQXBDLENBQWQ7O0FBRUE7OztBQUdBLFNBQUtFLElBQUwsR0FBWSwyQkFBaUIsS0FBS0gsS0FBdEIsRUFBNkIsS0FBS0MsT0FBbEMsQ0FBWjs7QUFFQTs7O0FBR0EsU0FBS0csSUFBTCxHQUFZLDJCQUFpQixLQUFLSixLQUF0QixFQUE2QixLQUFLQyxPQUFsQyxDQUFaO0FBQ0Q7O0FBRUQ7Ozs7Ozs7Ozs7MkJBTU9JLE0sRUFBUUMsUSxFQUFVO0FBQ3ZCRCxlQUFTRSxLQUFLQyxTQUFMLENBQWVILE1BQWYsQ0FBVDs7QUFFQSxVQUFJSSxTQUFTO0FBQ1hDLGNBQU0sS0FBS1QsT0FBTCxDQUFhVSxPQUFiLElBQXdCLGVBRG5CO0FBRVhDLGNBQU1iLGNBQWNjLElBRlQ7QUFHWEMsZ0JBQVEsTUFIRztBQUlYQyxjQUFNVixNQUpLO0FBS1hXLGlCQUFTO0FBQ1AsMEJBQWdCLGtCQURUO0FBRVAsNEJBQWtCQyxPQUFPQyxVQUFQLENBQWtCYixNQUFsQixDQUZYO0FBR1BjLHFDQUF5QixLQUFLbkIsS0FBTCxDQUFXb0IsV0FBWDtBQUhsQjtBQUxFLE9BQWI7QUFXQSxXQUFLbkIsT0FBTCxDQUFhb0IsVUFBYixDQUF3QkMsT0FBeEIsQ0FBZ0NiLE1BQWhDLEVBQXdDSCxRQUF4QztBQUNEOztBQUVEOzs7Ozs7Ozs7Ozt3QkFRSWlCLEssRUFBT2pCLFEsRUFBVTtBQUNuQixVQUFJLENBQUNpQixLQUFMLEVBQVk7QUFDVixjQUFNLElBQUlDLEtBQUosQ0FBVSxpQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsVUFBSUMsVUFBVSxFQUFkO0FBQ0EsVUFBSSxPQUFPRixLQUFQLEtBQWlCLFFBQXJCLEVBQStCO0FBQzdCO0FBQ0FFLHdCQUFjRixLQUFkO0FBQ0QsT0FIRCxNQUdPLElBQUksUUFBT0EsS0FBUCx5Q0FBT0EsS0FBUCxPQUFpQixRQUFqQixJQUE2QkcsT0FBT0MsSUFBUCxDQUFZSixLQUFaLEVBQW1CSyxNQUFuQixHQUE0QixDQUE3RCxFQUFnRTtBQUNyRTtBQUNBSCx3QkFBYyxzQkFBWWpCLFNBQVosQ0FBc0JlLEtBQXRCLENBQWQ7QUFDRDs7QUFFRCxVQUFJZCxTQUFTO0FBQ1hDLGNBQU0sS0FBS1QsT0FBTCxDQUFhVSxPQUFiLElBQXdCLGVBRG5CO0FBRVhDLG1CQUFTYixjQUFjYyxJQUF2QixHQUE4QlksT0FGbkI7QUFHWFgsZ0JBQVEsS0FIRztBQUlYRSxpQkFBUztBQUNQLDBCQUFnQixrQkFEVDtBQUVQRyxxQ0FBeUIsS0FBS25CLEtBQUwsQ0FBV29CLFdBQVg7QUFGbEI7QUFKRSxPQUFiO0FBU0EsV0FBS25CLE9BQUwsQ0FBYW9CLFVBQWIsQ0FBd0JDLE9BQXhCLENBQWdDYixNQUFoQyxFQUF3Q0gsUUFBeEM7QUFDRDs7QUFFRDs7Ozs7Ozs7OzsyQkFPT3VCLE0sRUFBUXhCLE0sRUFBUUMsUSxFQUFVO0FBQy9CRCxlQUFTRSxLQUFLQyxTQUFMLENBQWVILE1BQWYsQ0FBVDs7QUFFQSxVQUFJSSxTQUFTO0FBQ1hDLGNBQU0sS0FBS1QsT0FBTCxDQUFhVSxPQUFiLElBQXdCLGVBRG5CO0FBRVhDLGNBQVNiLGNBQWNjLElBQXZCLFNBQStCZ0IsTUFGcEI7QUFHWGYsZ0JBQVEsS0FIRztBQUlYQyxjQUFNVixNQUpLO0FBS1hXLGlCQUFTO0FBQ1AsMEJBQWdCLGtCQURUO0FBRVAsNEJBQWtCQyxPQUFPQyxVQUFQLENBQWtCYixNQUFsQixDQUZYO0FBR1BjLHFDQUF5QixLQUFLbkIsS0FBTCxDQUFXb0IsV0FBWDtBQUhsQjtBQUxFLE9BQWI7QUFXQSxXQUFLbkIsT0FBTCxDQUFhb0IsVUFBYixDQUF3QkMsT0FBeEIsQ0FBZ0NiLE1BQWhDLEVBQXdDSCxRQUF4QztBQUNEOzs7Ozs7a0JBR1lQLGEiLCJmaWxlIjoiQ2FsbHNSZXNvdXJjZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBxdWVyeXN0cmluZyBmcm9tIFwicXVlcnlzdHJpbmdcIjtcblxuaW1wb3J0IFN0cmVhbVJlc291cmNlIGZyb20gXCIuL1N0cmVhbVJlc291cmNlXCI7XG5pbXBvcnQgVGFsa1Jlc291cmNlIGZyb20gXCIuL1RhbGtSZXNvdXJjZVwiO1xuaW1wb3J0IER0bWZSZXNvdXJjZSBmcm9tIFwiLi9EdG1mUmVzb3VyY2VcIjtcblxuLyoqXG4gKiBQcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGBjYWxsc2AgcmVzb3VyY2UuXG4gKi9cbmNsYXNzIENhbGxzUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGBjYWxsc2AgcmVzb3VyY2UuXG4gICAqL1xuICBzdGF0aWMgZ2V0IFBBVEgoKSB7XG4gICAgcmV0dXJuIFwiL3YxL2NhbGxzXCI7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBDYWxsc1Jlc291cmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0NyZWRlbnRpYWxzfSBjcmVkcyAtIENyZWRlbnRpYWxzIHVzZWQgd2hlbiBpbnRlcmFjdGluZyB3aXRoIHRoZSBOZXhtbyBBUEkuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gYWRkaXRpb25hbCBvcHRpb25zIGZvciB0aGUgY2xhc3MuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihjcmVkcywgb3B0aW9ucykge1xuICAgIHRoaXMuY3JlZHMgPSBjcmVkcztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgLyoqXG4gICAgICogQHR5cGUgU3RyZWFtQ29udHJvbGxlclxuICAgICAqL1xuICAgIHRoaXMuc3RyZWFtID0gbmV3IFN0cmVhbVJlc291cmNlKHRoaXMuY3JlZHMsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBUYWxrUmVzb3VyY2VcbiAgICAgKi9cbiAgICB0aGlzLnRhbGsgPSBuZXcgVGFsa1Jlc291cmNlKHRoaXMuY3JlZHMsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAvKipcbiAgICAgKiBAdHlwZSBEdG1mUmVzb3VyY2VcbiAgICAgKi9cbiAgICB0aGlzLmR0bWYgPSBuZXcgRHRtZlJlc291cmNlKHRoaXMuY3JlZHMsIHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNhbGwuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBQYXJhbWV0ZXJzIHVzZWQgd2hlbiBjcmVhdGluZyB0aGUgY2FsbC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm5leG1vLmNvbS9hcGkvdm9pY2UjY3JlYXRlLWFuLW91dGJvdW5kLWNhbGwgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgY3JlYXRlKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMgPSBKU09OLnN0cmluZ2lmeShwYXJhbXMpO1xuXG4gICAgdmFyIGNvbmZpZyA9IHtcbiAgICAgIGhvc3Q6IHRoaXMub3B0aW9ucy5hcGlIb3N0IHx8IFwiYXBpLm5leG1vLmNvbVwiLFxuICAgICAgcGF0aDogQ2FsbHNSZXNvdXJjZS5QQVRILFxuICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgIGJvZHk6IHBhcmFtcyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIFwiQ29udGVudC1MZW5ndGhcIjogQnVmZmVyLmJ5dGVMZW5ndGgocGFyYW1zKSxcbiAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3RoaXMuY3JlZHMuZ2VuZXJhdGVKd3QoKX1gXG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLm9wdGlvbnMuaHR0cENsaWVudC5yZXF1ZXN0KGNvbmZpZywgY2FsbGJhY2spO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBleGlzdGluZyBjYWxsLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHF1ZXJ5IC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY2FsbCB0byByZXRyaWV2ZVxuICAgKiAgICAgICAgICAgICAgIG9yIGEgc2V0IG9mIGZpbHRlciBwYXJhbWV0ZXJzIGZvciB0aGUgcXVlcnkuIEZvciBtb3JlIGluZm9ybWF0aW9uXG4gICAqICAgICAgICAgICAgICAgc2VlIGh0dHBzOi8vZG9jcy5uZXhtby5jb20vdm9pY2Uvdm9pY2UtYXBpL2FwaS1yZWZlcmVuY2UjY2FsbF9yZXRyaWV2ZVxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayAtIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSByZXF1ZXN0IGNvbXBsZXRlcy5cbiAgICovXG4gIGdldChxdWVyeSwgY2FsbGJhY2spIHtcbiAgICBpZiAoIXF1ZXJ5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wicXVlcnlcIiBpcyBhIHJlcXVpcmVkIHBhcmFtZXRlcicpO1xuICAgIH1cblxuICAgIHZhciBwYXRoRXh0ID0gXCJcIjtcbiAgICBpZiAodHlwZW9mIHF1ZXJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBzaW5nbGUgY2FsbCBJZFxuICAgICAgcGF0aEV4dCA9IGAvJHtxdWVyeX1gO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHF1ZXJ5ID09PSBcIm9iamVjdFwiICYmIE9iamVjdC5rZXlzKHF1ZXJ5KS5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBmaWx0ZXJcbiAgICAgIHBhdGhFeHQgPSBgPyR7cXVlcnlzdHJpbmcuc3RyaW5naWZ5KHF1ZXJ5KX1gO1xuICAgIH1cblxuICAgIHZhciBjb25maWcgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdGlvbnMuYXBpSG9zdCB8fCBcImFwaS5uZXhtby5jb21cIixcbiAgICAgIHBhdGg6IGAke0NhbGxzUmVzb3VyY2UuUEFUSH0ke3BhdGhFeHR9YCxcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNyZWRzLmdlbmVyYXRlSnd0KCl9YFxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5vcHRpb25zLmh0dHBDbGllbnQucmVxdWVzdChjb25maWcsIGNhbGxiYWNrKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgY2FsbC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtjYWxsSWRdIC0gVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgY2FsbCB0byB1cGRhdGUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBwYXJhbXMgLSBQYXJhbWV0ZXJzIHVzZWQgd2hlbiB1cGRhdGluZyB0aGUgY2FsbC4gU2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm5leG1vLmNvbS9hcGkvdm9pY2UjbW9kaWZ5LWFuLWV4aXN0aW5nLWNhbGwgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIC0gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHJlcXVlc3QgY29tcGxldGVzLlxuICAgKi9cbiAgdXBkYXRlKGNhbGxJZCwgcGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHBhcmFtcyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtcyk7XG5cbiAgICB2YXIgY29uZmlnID0ge1xuICAgICAgaG9zdDogdGhpcy5vcHRpb25zLmFwaUhvc3QgfHwgXCJhcGkubmV4bW8uY29tXCIsXG4gICAgICBwYXRoOiBgJHtDYWxsc1Jlc291cmNlLlBBVEh9LyR7Y2FsbElkfWAsXG4gICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICBib2R5OiBwYXJhbXMsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBcIkNvbnRlbnQtTGVuZ3RoXCI6IEJ1ZmZlci5ieXRlTGVuZ3RoKHBhcmFtcyksXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmNyZWRzLmdlbmVyYXRlSnd0KCl9YFxuICAgICAgfVxuICAgIH07XG4gICAgdGhpcy5vcHRpb25zLmh0dHBDbGllbnQucmVxdWVzdChjb25maWcsIGNhbGxiYWNrKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDYWxsc1Jlc291cmNlO1xuIl19 |
\ | No newline at end of file |