UNPKG

ddb-table

Version:

Strongly typed library for querying and modeling DynamoDB documents.

61 lines (60 loc) 22.8 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _Query = _interopRequireDefault(require("./Query")); var _expressions = require("../expressions"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } class UpdateQuery extends _Query.default { constructor(client, params) { super(client.update.bind(client), params); this.values = void 0; this.conditions = void 0; this.update = void 0; this.handleInputUpdated(); } handleInputUpdated() { super.handleInputUpdated(); this.values = new _expressions.ExpressionAttributeValues(this.input.ExpressionAttributeValues); this.conditions = new _expressions.ConditionExpression(this.names, this.values, this.input.ConditionExpression); this.update = new _expressions.UpdateExpression(this.names, this.values, this.input.UpdateExpression); } syncInput() { super.syncInput(); this.input.ExpressionAttributeValues = this.values.serialize(); this.input.ConditionExpression = this.conditions.serialize(); this.input.UpdateExpression = this.update.serialize(); } condition(fn) { this.conditions.and(fn); return this; } set(path, value) { if (value !== undefined) { this.update.set(path, value); } else { if (!Array.isArray(path)) { path = [path]; } this.update.remove(...path); } return this; } remove(...path) { this.update.remove(...path); return this; } add(path, value) { this.update.add(path, value); return this; } delete(path, value) { this.update.delete(path, value); return this; } return(values) { this.input.ReturnValues = values; return this; } } exports.default = UpdateQuery; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfUXVlcnkiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9leHByZXNzaW9ucyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiVXBkYXRlUXVlcnkiLCJRdWVyeSIsImNvbnN0cnVjdG9yIiwiY2xpZW50IiwicGFyYW1zIiwidXBkYXRlIiwiYmluZCIsInZhbHVlcyIsImNvbmRpdGlvbnMiLCJoYW5kbGVJbnB1dFVwZGF0ZWQiLCJFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzIiwiaW5wdXQiLCJDb25kaXRpb25FeHByZXNzaW9uIiwibmFtZXMiLCJVcGRhdGVFeHByZXNzaW9uIiwic3luY0lucHV0Iiwic2VyaWFsaXplIiwiY29uZGl0aW9uIiwiZm4iLCJhbmQiLCJzZXQiLCJwYXRoIiwidmFsdWUiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJyZW1vdmUiLCJhZGQiLCJkZWxldGUiLCJyZXR1cm4iLCJSZXR1cm5WYWx1ZXMiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3F1ZXJpZXMvVXBkYXRlUXVlcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IER5bmFtb0RCRG9jdW1lbnQsIHtcbiAgSXRlbSxcbiAgVXBkYXRlQ29tbWFuZElucHV0LFxuICBVcGRhdGVDb21tYW5kT3V0cHV0LFxufSBmcm9tICcuLi9Eb2N1bWVudENsaWVudCc7XG5pbXBvcnQgUXVlcnksIHsgUXVlcnlSZXF1ZXN0IH0gZnJvbSAnLi9RdWVyeSc7XG5pbXBvcnQge1xuICBDb25kaXRpb25FeHByZXNzaW9uLFxuICBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzLFxuICBVcGRhdGVFeHByZXNzaW9uLFxufSBmcm9tICcuLi9leHByZXNzaW9ucyc7XG5pbXBvcnQge1xuICBTZXRWYWx1ZSxcbiAgQWRkVmFsdWUsXG4gIERlbGV0ZVZhbHVlLFxufSBmcm9tICcuLi9leHByZXNzaW9ucy9VcGRhdGVFeHByZXNzaW9uJztcbmltcG9ydCB7IENvbmRpdGlvbkdlbmVyYXRvciB9IGZyb20gJy4uL2V4cHJlc3Npb25zL0NvbmRpdGlvbkV4cHJlc3Npb24nO1xuXG50eXBlIFF1ZXJ5SW5wdXQ8Sz4gPSBPbWl0PFVwZGF0ZUNvbW1hbmRJbnB1dCwgJ0tleSc+ICYgeyBLZXk6IEsgfTtcbnR5cGUgUXVlcnlPdXRwdXQ8VD4gPSBPbWl0PFVwZGF0ZUNvbW1hbmRPdXRwdXQsICdBdHRyaWJ1dGVzJz4gJiB7XG4gIEF0dHJpYnV0ZXM/OiBUO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXBkYXRlUXVlcnk8VCBleHRlbmRzIEssIEsgZXh0ZW5kcyBJdGVtPiBleHRlbmRzIFF1ZXJ5PFxuICBULFxuICBRdWVyeUlucHV0PEs+LFxuICBRdWVyeU91dHB1dDxUPlxuPiB7XG4gIHByaXZhdGUgdmFsdWVzITogRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcztcbiAgcHJpdmF0ZSBjb25kaXRpb25zITogQ29uZGl0aW9uRXhwcmVzc2lvbjxUPjtcbiAgcHJpdmF0ZSB1cGRhdGUhOiBVcGRhdGVFeHByZXNzaW9uPFQ+O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihjbGllbnQ6IER5bmFtb0RCRG9jdW1lbnQsIHBhcmFtczogUXVlcnlJbnB1dDxLPikge1xuICAgIHN1cGVyKFxuICAgICAgY2xpZW50LnVwZGF0ZS5iaW5kKGNsaWVudCkgYXMgUXVlcnlSZXF1ZXN0PFF1ZXJ5SW5wdXQ8Sz4sIFF1ZXJ5T3V0cHV0PFQ+PixcbiAgICAgIHBhcmFtcyxcbiAgICApO1xuXG4gICAgdGhpcy5oYW5kbGVJbnB1dFVwZGF0ZWQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVJbnB1dFVwZGF0ZWQoKTogdm9pZCB7XG4gICAgc3VwZXIuaGFuZGxlSW5wdXRVcGRhdGVkKCk7XG5cbiAgICB0aGlzLnZhbHVlcyA9IG5ldyBFeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzKFxuICAgICAgdGhpcy5pbnB1dC5FeHByZXNzaW9uQXR0cmlidXRlVmFsdWVzLFxuICAgICk7XG5cbiAgICB0aGlzLmNvbmRpdGlvbnMgPSBuZXcgQ29uZGl0aW9uRXhwcmVzc2lvbihcbiAgICAgIHRoaXMubmFtZXMsXG4gICAgICB0aGlzLnZhbHVlcyxcbiAgICAgIHRoaXMuaW5wdXQuQ29uZGl0aW9uRXhwcmVzc2lvbixcbiAgICApO1xuXG4gICAgdGhpcy51cGRhdGUgPSBuZXcgVXBkYXRlRXhwcmVzc2lvbihcbiAgICAgIHRoaXMubmFtZXMsXG4gICAgICB0aGlzLnZhbHVlcyxcbiAgICAgIHRoaXMuaW5wdXQuVXBkYXRlRXhwcmVzc2lvbixcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bmNJbnB1dCgpOiB2b2lkIHtcbiAgICBzdXBlci5zeW5jSW5wdXQoKTtcblxuICAgIHRoaXMuaW5wdXQuRXhwcmVzc2lvbkF0dHJpYnV0ZVZhbHVlcyA9IHRoaXMudmFsdWVzLnNlcmlhbGl6ZSgpO1xuICAgIHRoaXMuaW5wdXQuQ29uZGl0aW9uRXhwcmVzc2lvbiA9IHRoaXMuY29uZGl0aW9ucy5zZXJpYWxpemUoKTtcbiAgICB0aGlzLmlucHV0LlVwZGF0ZUV4cHJlc3Npb24gPSB0aGlzLnVwZGF0ZS5zZXJpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25kaXRpb24oZm46IENvbmRpdGlvbkdlbmVyYXRvcjxUPik6IHRoaXMge1xuICAgIHRoaXMuY29uZGl0aW9ucy5hbmQoZm4pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHNldDxLMSBleHRlbmRzIGtleW9mIFQ+KFxuICAgIHBhdGg6IEsxIHwgW0sxXSxcbiAgICB2YWx1ZTogU2V0VmFsdWU8VCwgVFtLMV0+LFxuICApOiB0aGlzO1xuICBwdWJsaWMgc2V0PEsxIGV4dGVuZHMga2V5b2YgVCwgSzIgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxUW0sxXT4+KFxuICAgIHBhdGg6IFtLMSwgSzJdLFxuICAgIHZhbHVlOiBTZXRWYWx1ZTxULCBOb25OdWxsYWJsZTxUW0sxXT5bSzJdPixcbiAgKTogdGhpcztcbiAgcHVibGljIHNldDxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxUW0sxXT4sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPixcbiAgPihcbiAgICBwYXRoOiBbSzEsIEsyLCBLM10sXG4gICAgdmFsdWU6IFNldFZhbHVlPFQsIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBzZXQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8VFtLMV0+LFxuICAgIEszIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT4sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+LFxuICA+KFxuICAgIHBhdGg6IFtLMSwgSzIsIEszLCBLNF0sXG4gICAgdmFsdWU6IFNldFZhbHVlPFxuICAgICAgVCxcbiAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdXG4gICAgPixcbiAgKTogdGhpcztcbiAgcHVibGljIHNldDxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxUW0sxXT4sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPixcbiAgICBLNCBleHRlbmRzIGtleW9mIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT4sXG4gICAgSzUgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxcbiAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdXG4gICAgPixcbiAgPihcbiAgICBwYXRoOiBbSzEsIEsyLCBLMywgSzQsIEs1XSxcbiAgICB2YWx1ZTogU2V0VmFsdWU8XG4gICAgICBULFxuICAgICAgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT5bSzNdPltLNF0+W0s1XVxuICAgID4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBzZXQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8VFtLMV0+LFxuICAgIEszIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT4sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+LFxuICAgIEs1IGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8XG4gICAgICBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+W0s0XVxuICAgID4sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxcbiAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdPltLNV1cbiAgICA+LFxuICA+KFxuICAgIHBhdGg6IFtLMSwgSzIsIEszLCBLNCwgSzUsIEs2XSxcbiAgICB2YWx1ZTogU2V0VmFsdWU8XG4gICAgICBULFxuICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgIE5vbk51bGxhYmxlPFxuICAgICAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdXG4gICAgICAgID5bSzVdXG4gICAgICA+W0s2XVxuICAgID4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBzZXQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8VFtLMV0+LFxuICAgIEszIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT4sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+LFxuICAgIEs1IGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8XG4gICAgICBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+W0s0XVxuICAgID4sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxcbiAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdPltLNV1cbiAgICA+LFxuICAgIEs3IGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8XG4gICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT5bSzNdPltLNF1cbiAgICAgICAgPltLNV1cbiAgICAgID5bSzZdXG4gICAgPixcbiAgPihcbiAgICBwYXRoOiBbSzEsIEsyLCBLMywgSzQsIEs1LCBLNiwgSzddLFxuICAgIHZhbHVlOiBTZXRWYWx1ZTxcbiAgICAgIFQsXG4gICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgICBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+W0s0XVxuICAgICAgICAgID5bSzVdXG4gICAgICAgID5bSzZdXG4gICAgICA+W0s3XVxuICAgID4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBzZXQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8VFtLMV0+LFxuICAgIEszIGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT4sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+LFxuICAgIEs1IGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8XG4gICAgICBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+W0s0XVxuICAgID4sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxcbiAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdPltLNV1cbiAgICA+LFxuICAgIEs3IGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8XG4gICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT5bSzNdPltLNF1cbiAgICAgICAgPltLNV1cbiAgICAgID5bSzZdXG4gICAgPixcbiAgICBLOCBleHRlbmRzIGtleW9mIE5vbk51bGxhYmxlPFxuICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgIE5vbk51bGxhYmxlPFxuICAgICAgICAgIE5vbk51bGxhYmxlPFxuICAgICAgICAgICAgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT5bSzNdPltLNF1cbiAgICAgICAgICA+W0s1XVxuICAgICAgICA+W0s2XVxuICAgICAgPltLN11cbiAgICA+LFxuICA+KFxuICAgIHBhdGg6IFtLMSwgSzIsIEszLCBLNCwgSzUsIEs2LCBLNywgSzhdLFxuICAgIHZhbHVlOiBTZXRWYWx1ZTxcbiAgICAgIFQsXG4gICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgICAgICAgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT5bSzNdPltLNF1cbiAgICAgICAgICAgID5bSzVdXG4gICAgICAgICAgPltLNl1cbiAgICAgICAgPltLN11cbiAgICAgID5bSzhdXG4gICAgPixcbiAgKTogdGhpcztcbiAgcHVibGljIHNldDxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxUW0sxXT4sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPixcbiAgICBLNCBleHRlbmRzIGtleW9mIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT4sXG4gICAgSzUgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxcbiAgICAgIE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPE5vbk51bGxhYmxlPFRbSzFdPltLMl0+W0szXT5bSzRdXG4gICAgPixcbiAgICBLNiBleHRlbmRzIGtleW9mIE5vbk51bGxhYmxlPFxuICAgICAgTm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8Tm9uTnVsbGFibGU8VFtLMV0+W0syXT5bSzNdPltLNF0+W0s1XVxuICAgID4sXG4gICAgSzcgZXh0ZW5kcyBrZXlvZiBOb25OdWxsYWJsZTxcbiAgICAgIE5vbk51bGxhYmxlPFxuICAgICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgICBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+W0s0XVxuICAgICAgICA+W0s1XVxuICAgICAgPltLNl1cbiAgICA+LFxuICAgIEs4IGV4dGVuZHMga2V5b2YgTm9uTnVsbGFibGU8XG4gICAgICBOb25OdWxsYWJsZTxcbiAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgTm9uTnVsbGFibGU8XG4gICAgICAgICAgICBOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxOb25OdWxsYWJsZTxUW0sxXT5bSzJdPltLM10+W0s0XVxuICAgICAgICAgID5bSzVdXG4gICAgICAgID5bSzZdXG4gICAgICA+W0s3XVxuICAgID4sXG4gID4oXG4gICAgcGF0aDogSzEgfCBbSzEsIEsyPywgSzM/LCBLND8sIEs1PywgSzY/LCBLNz8sIEs4PywgLi4uKHN0cmluZyB8IG51bWJlcilbXV0sXG4gICAgdmFsdWU6IFNldFZhbHVlPFQsIHVua25vd24+LFxuICApOiB0aGlzIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy51cGRhdGUuc2V0KHBhdGggYXMgW0sxLCBLMiwgSzMsIEs0LCBLNSwgSzYsIEs3LCBLOF0sIHZhbHVlIGFzIG5ldmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGgpKSB7XG4gICAgICAgIHBhdGggPSBbcGF0aF07XG4gICAgICB9XG5cbiAgICAgIHRoaXMudXBkYXRlLnJlbW92ZSguLi4ocGF0aCBhcyBbSzEsIEsyLCBLMywgSzQsIEs1LCBLNiwgSzcsIEs4XSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmU8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl0sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdLFxuICAgIEs1IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF0sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV0sXG4gICAgSzcgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV1bSzZdLFxuICAgIEs4IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XVtLN10sXG4gID4oXG4gICAgLi4ucGF0aDogW0sxLCBLMj8sIEszPywgSzQ/LCBLNT8sIEs2PywgSzc/LCBLOD8sIC4uLihzdHJpbmcgfCBudW1iZXIpW11dXG4gICk6IHRoaXMge1xuICAgIHRoaXMudXBkYXRlLnJlbW92ZSguLi5wYXRoKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGFkZDxLMSBleHRlbmRzIGtleW9mIFQ+KHBhdGg6IEsxIHwgW0sxXSwgdmFsdWU6IEFkZFZhbHVlPFRbSzFdPik6IHRoaXM7XG4gIHB1YmxpYyBhZGQ8SzEgZXh0ZW5kcyBrZXlvZiBULCBLMiBleHRlbmRzIGtleW9mIFRbSzFdPihcbiAgICBwYXRoOiBbSzEsIEsyXSxcbiAgICB2YWx1ZTogQWRkVmFsdWU8VFtLMV1bSzJdPixcbiAgKTogdGhpcztcbiAgcHVibGljIGFkZDxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBUW0sxXSxcbiAgICBLMyBleHRlbmRzIGtleW9mIFRbSzFdW0syXSxcbiAgPihwYXRoOiBbSzEsIEsyLCBLM10sIHZhbHVlOiBBZGRWYWx1ZTxUW0sxXVtLMl1bSzNdPik6IHRoaXM7XG4gIHB1YmxpYyBhZGQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl0sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdLFxuICA+KHBhdGg6IFtLMSwgSzIsIEszLCBLNF0sIHZhbHVlOiBBZGRWYWx1ZTxUW0sxXVtLMl1bSzNdW0s0XT4pOiB0aGlzO1xuICBwdWJsaWMgYWRkPFxuICAgIEsxIGV4dGVuZHMga2V5b2YgVCxcbiAgICBLMiBleHRlbmRzIGtleW9mIFRbSzFdLFxuICAgIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdLFxuICAgIEs0IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXSxcbiAgICBLNSBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdLFxuICA+KHBhdGg6IFtLMSwgSzIsIEszLCBLNCwgSzVdLCB2YWx1ZTogQWRkVmFsdWU8VFtLMV1bSzJdW0szXVtLNF1bSzVdPik6IHRoaXM7XG4gIHB1YmxpYyBhZGQ8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl0sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdLFxuICAgIEs1IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF0sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV0sXG4gID4oXG4gICAgcGF0aDogW0sxLCBLMiwgSzMsIEs0LCBLNSwgSzZdLFxuICAgIHZhbHVlOiBBZGRWYWx1ZTxUW0sxXVtLMl1bSzNdW0s0XVtLNV1bSzZdPixcbiAgKTogdGhpcztcbiAgcHVibGljIGFkZDxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBUW0sxXSxcbiAgICBLMyBleHRlbmRzIGtleW9mIFRbSzFdW0syXSxcbiAgICBLNCBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM10sXG4gICAgSzUgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XSxcbiAgICBLNiBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdW0s1XSxcbiAgICBLNyBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdW0s1XVtLNl0sXG4gID4oXG4gICAgcGF0aDogW0sxLCBLMiwgSzMsIEs0LCBLNSwgSzYsIEs3XSxcbiAgICB2YWx1ZTogQWRkVmFsdWU8VFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XVtLN10+LFxuICApOiB0aGlzO1xuICBwdWJsaWMgYWRkPFxuICAgIEsxIGV4dGVuZHMga2V5b2YgVCxcbiAgICBLMiBleHRlbmRzIGtleW9mIFRbSzFdLFxuICAgIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdLFxuICAgIEs0IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXSxcbiAgICBLNSBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdLFxuICAgIEs2IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdLFxuICAgIEs3IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XSxcbiAgICBLOCBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdW0s1XVtLNl1bSzddLFxuICA+KFxuICAgIHBhdGg6IFtLMSwgSzIsIEszLCBLNCwgSzUsIEs2LCBLNywgSzhdLFxuICAgIHZhbHVlOiBBZGRWYWx1ZTxUW0sxXVtLMl1bSzNdW0s0XVtLNV1bSzZdW0s3XVtLOF0+LFxuICApOiB0aGlzO1xuICBwdWJsaWMgYWRkPFxuICAgIEsxIGV4dGVuZHMga2V5b2YgVCxcbiAgICBLMiBleHRlbmRzIGtleW9mIFRbSzFdLFxuICAgIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdLFxuICAgIEs0IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXSxcbiAgICBLNSBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdLFxuICAgIEs2IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdLFxuICAgIEs3IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XSxcbiAgICBLOCBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdW0s1XVtLNl1bSzddLFxuICA+KFxuICAgIHBhdGg6IEsxIHwgW0sxLCBLMj8sIEszPywgSzQ/LCBLNT8sIEs2PywgSzc/LCBLOD8sIC4uLihzdHJpbmcgfCBudW1iZXIpW11dLFxuICAgIHZhbHVlOiB1bmtub3duLFxuICApOiB0aGlzIHtcbiAgICB0aGlzLnVwZGF0ZS5hZGQocGF0aCBhcyBbSzEsIEsyLCBLMywgSzQsIEs1LCBLNiwgSzcsIEs4XSwgdmFsdWUgYXMgbmV2ZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZTxLMSBleHRlbmRzIGtleW9mIFQ+KFxuICAgIHBhdGg6IEsxIHwgW0sxXSxcbiAgICB2YWx1ZTogRGVsZXRlVmFsdWU8VFtLMV0+LFxuICApOiB0aGlzO1xuICBwdWJsaWMgZGVsZXRlPEsxIGV4dGVuZHMga2V5b2YgVCwgSzIgZXh0ZW5kcyBrZXlvZiBUW0sxXT4oXG4gICAgcGF0aDogW0sxLCBLMl0sXG4gICAgdmFsdWU6IERlbGV0ZVZhbHVlPFRbSzFdW0syXT4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBkZWxldGU8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl0sXG4gID4ocGF0aDogW0sxLCBLMiwgSzNdLCB2YWx1ZTogRGVsZXRlVmFsdWU8VFtLMV1bSzJdW0szXT4pOiB0aGlzO1xuICBwdWJsaWMgZGVsZXRlPFxuICAgIEsxIGV4dGVuZHMga2V5b2YgVCxcbiAgICBLMiBleHRlbmRzIGtleW9mIFRbSzFdLFxuICAgIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdLFxuICAgIEs0IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXSxcbiAgPihwYXRoOiBbSzEsIEsyLCBLMywgSzRdLCB2YWx1ZTogRGVsZXRlVmFsdWU8VFtLMV1bSzJdW0szXVtLNF0+KTogdGhpcztcbiAgcHVibGljIGRlbGV0ZTxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBUW0sxXSxcbiAgICBLMyBleHRlbmRzIGtleW9mIFRbSzFdW0syXSxcbiAgICBLNCBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM10sXG4gICAgSzUgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XSxcbiAgPihcbiAgICBwYXRoOiBbSzEsIEsyLCBLMywgSzQsIEs1XSxcbiAgICB2YWx1ZTogRGVsZXRlVmFsdWU8VFtLMV1bSzJdW0szXVtLNF1bSzVdPixcbiAgKTogdGhpcztcbiAgcHVibGljIGRlbGV0ZTxcbiAgICBLMSBleHRlbmRzIGtleW9mIFQsXG4gICAgSzIgZXh0ZW5kcyBrZXlvZiBUW0sxXSxcbiAgICBLMyBleHRlbmRzIGtleW9mIFRbSzFdW0syXSxcbiAgICBLNCBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM10sXG4gICAgSzUgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XSxcbiAgICBLNiBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdW0s1XSxcbiAgPihcbiAgICBwYXRoOiBbSzEsIEsyLCBLMywgSzQsIEs1LCBLNl0sXG4gICAgdmFsdWU6IERlbGV0ZVZhbHVlPFRbSzFdW0syXVtLM11bSzRdW0s1XVtLNl0+LFxuICApOiB0aGlzO1xuICBwdWJsaWMgZGVsZXRlPFxuICAgIEsxIGV4dGVuZHMga2V5b2YgVCxcbiAgICBLMiBleHRlbmRzIGtleW9mIFRbSzFdLFxuICAgIEszIGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdLFxuICAgIEs0IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXSxcbiAgICBLNSBleHRlbmRzIGtleW9mIFRbSzFdW0syXVtLM11bSzRdLFxuICAgIEs2IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdLFxuICAgIEs3IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XSxcbiAgPihcbiAgICBwYXRoOiBbSzEsIEsyLCBLMywgSzQsIEs1LCBLNiwgSzddLFxuICAgIHZhbHVlOiBEZWxldGVWYWx1ZTxUW0sxXVtLMl1bSzNdW0s0XVtLNV1bSzZdW0s3XT4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBkZWxldGU8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl0sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdLFxuICAgIEs1IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF0sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV0sXG4gICAgSzcgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV1bSzZdLFxuICAgIEs4IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XVtLN10sXG4gID4oXG4gICAgcGF0aDogW0sxLCBLMiwgSzMsIEs0LCBLNSwgSzYsIEs3LCBLOF0sXG4gICAgdmFsdWU6IERlbGV0ZVZhbHVlPFRbSzFdW0syXVtLM11bSzRdW0s1XVtLNl1bSzddW0s4XT4sXG4gICk6IHRoaXM7XG4gIHB1YmxpYyBkZWxldGU8XG4gICAgSzEgZXh0ZW5kcyBrZXlvZiBULFxuICAgIEsyIGV4dGVuZHMga2V5b2YgVFtLMV0sXG4gICAgSzMgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl0sXG4gICAgSzQgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdLFxuICAgIEs1IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF0sXG4gICAgSzYgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV0sXG4gICAgSzcgZXh0ZW5kcyBrZXlvZiBUW0sxXVtLMl1bSzNdW0s0XVtLNV1bSzZdLFxuICAgIEs4IGV4dGVuZHMga2V5b2YgVFtLMV1bSzJdW0szXVtLNF1bSzVdW0s2XVtLN10sXG4gID4oXG4gICAgcGF0aDogSzEgfCBbSzEsIEsyPywgSzM/LCBLND8sIEs1PywgSzY/LCBLNz8sIEs4PywgLi4uKHN0cmluZyB8IG51bWJlcilbXV0sXG4gICAgdmFsdWU6IHVua25vd24sXG4gICk6IHRoaXMge1xuICAgIHRoaXMudXBkYXRlLmRlbGV0ZShcbiAgICAgIHBhdGggYXMgW0sxLCBLMiwgSzMsIEs0LCBLNSwgSzYsIEs3LCBLOF0sXG4gICAgICB2YWx1ZSBhcyBuZXZlcixcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIHJldHVybihcbiAgICB2YWx1ZXM6ICdBTExfT0xEJyB8ICdBTExfTkVXJyB8ICdVUERBVEVEX09MRCcgfCAnVVBEQVRFRF9ORVcnIHwgJ05PTkUnLFxuICApOiB0aGlzIHtcbiAgICB0aGlzLmlucHV0LlJldHVyblZhbHVlcyA9IHZhbHVlcztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBS0EsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsWUFBQSxHQUFBRCxPQUFBO0FBSXdCLFNBQUFELHVCQUFBRyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBYVQsTUFBTUcsV0FBVyxTQUFzQ0MsY0FBSyxDQUl6RTtFQUtPQyxXQUFXQSxDQUFDQyxNQUF3QixFQUFFQyxNQUFxQixFQUFFO0lBQ2xFLEtBQUssQ0FDSEQsTUFBTSxDQUFDRSxNQUFNLENBQUNDLElBQUksQ0FBQ0gsTUFBTSxDQUFDLEVBQzFCQyxNQUFNLENBQ1A7SUFBQyxLQVJJRyxNQUFNO0lBQUEsS0FDTkMsVUFBVTtJQUFBLEtBQ1ZILE1BQU07SUFRWixJQUFJLENBQUNJLGtCQUFrQixFQUFFO0VBQzNCO0VBRVVBLGtCQUFrQkEsQ0FBQSxFQUFTO0lBQ25DLEtBQUssQ0FBQ0Esa0JBQWtCLEVBQUU7SUFFMUIsSUFBSSxDQUFDRixNQUFNLEdBQUcsSUFBSUcsc0NBQXlCLENBQ3pDLElBQUksQ0FBQ0MsS0FBSyxDQUFDRCx5QkFBeUIsQ0FDckM7SUFFRCxJQUFJLENBQUNGLFVBQVUsR0FBRyxJQUFJSSxnQ0FBbUIsQ0FDdkMsSUFBSSxDQUFDQyxLQUFLLEVBQ1YsSUFBSSxDQUFDTixNQUFNLEVBQ1gsSUFBSSxDQUFDSSxLQUFLLENBQUNDLG1CQUFtQixDQUMvQjtJQUVELElBQUksQ0FBQ1AsTUFBTSxHQUFHLElBQUlTLDZCQUFnQixDQUNoQyxJQUFJLENBQUNELEtBQUssRUFDVixJQUFJLENBQUNOLE1BQU0sRUFDWCxJQUFJLENBQUNJLEtBQUssQ0FBQ0csZ0JBQWdCLENBQzVCO0VBQ0g7RUFFVUMsU0FBU0EsQ0FBQSxFQUFTO0lBQzFCLEtBQUssQ0FBQ0EsU0FBUyxFQUFFO0lBRWpCLElBQUksQ0FBQ0osS0FBSyxDQUFDRCx5QkFBeUIsR0FBRyxJQUFJLENBQUNILE1BQU0sQ0FBQ1MsU0FBUyxFQUFFO0lBQzlELElBQUksQ0FBQ0wsS0FBSyxDQUFDQyxtQkFBbUIsR0FBRyxJQUFJLENBQUNKLFVBQVUsQ0FBQ1EsU0FBUyxFQUFFO0lBQzVELElBQUksQ0FBQ0wsS0FBSyxDQUFDRyxnQkFBZ0IsR0FBRyxJQUFJLENBQUNULE1BQU0sQ0FBQ1csU0FBUyxFQUFFO0VBQ3ZEO0VBRU9DLFNBQVNBLENBQUNDLEVBQXlCLEVBQVE7SUFDaEQsSUFBSSxDQUFDVixVQUFVLENBQUNXLEdBQUcsQ0FBQ0QsRUFBRSxDQUFDO0lBQ3ZCLE9BQU8sSUFBSTtFQUNiO0VBNElPRSxHQUFHQSxDQTRCUkMsSUFBMEUsRUFDMUVDLEtBQTJCLEVBQ3JCO0lBQ04sSUFBSUEsS0FBSyxLQUFLQyxTQUFTLEVBQUU7TUFDdkIsSUFBSSxDQUFDbEIsTUFBTSxDQUFDZSxHQUFHLENBQUNDLElBQUksRUFBc0NDLEtBQUssQ0FBVTtJQUMzRSxDQUFDLE1BQU07TUFDTCxJQUFJLENBQUNFLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSixJQUFJLENBQUMsRUFBRTtRQUN4QkEsSUFBSSxHQUFHLENBQUNBLElBQUksQ0FBQztNQUNmO01BRUEsSUFBSSxDQUFDaEIsTUFBTSxDQUFDcUIsTUFBTSxDQUFDLEdBQUlMLElBQXlDLENBQUM7SUFDbkU7SUFDQSxPQUFPLElBQUk7RUFDYjtFQUVPSyxNQUFNQSxDQVVYLEdBQUdMLElBQXFFLEVBQ2xFO0lBQ04sSUFBSSxDQUFDaEIsTUFBTSxDQUFDcUIsTUFBTSxDQUFDLEdBQUdMLElBQUksQ0FBQztJQUUzQixPQUFPLElBQUk7RUFDYjtFQTZET00sR0FBR0EsQ0FVUk4sSUFBMEUsRUFDMUVDLEtBQWMsRUFDUjtJQUNOLElBQUksQ0FBQ2pCLE1BQU0sQ0FBQ3NCLEdBQUcsQ0FBQ04sSUFBSSxFQUFzQ0MsS0FBSyxDQUFVO0lBQ3pFLE9BQU8sSUFBSTtFQUNiO0VBbUVPTSxNQUFNQSxDQVVYUCxJQUEwRSxFQUMxRUMsS0FBYyxFQUNSO0lBQ04sSUFBSSxDQUFDakIsTUFBTSxDQUFDdUIsTUFBTSxDQUNoQlAsSUFBSSxFQUNKQyxLQUFLLENBQ047SUFDRCxPQUFPLElBQUk7RUFDYjtFQUVPTyxNQUFNQSxDQUNYdEIsTUFBc0UsRUFDaEU7SUFDTixJQUFJLENBQUNJLEtBQUssQ0FBQ21CLFlBQVksR0FBR3ZCLE1BQU07SUFDaEMsT0FBTyxJQUFJO0VBQ2I7QUFDRjtBQUFDd0IsT0FBQSxDQUFBaEMsT0FBQSxHQUFBQyxXQUFBIn0=