ngx-spine
Version:
[](https://travis-ci.org/PoiScript/ngx-spine)
313 lines • 25.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/******************************************************************************
* Spine Runtimes License Agreement
* Last updated May 1, 2019. Replaces all prior versions.
*
* Copyright (c) 2013-2019, Esoteric Software LLC
*
* Integration of the Spine Runtimes into software or otherwise creating
* derivative works of the Spine Runtimes is permitted under the terms and
* conditions of Section 2 of the Spine Editor License Agreement:
* http://esotericsoftware.com/spine-editor-license
*
* Otherwise, it is permitted to integrate the Spine Runtimes into software
* or otherwise create derivative works of the Spine Runtimes (collectively,
* "Products"), provided that each user of the Products must obtain their own
* Spine Editor license and redistribution of the Products in any form must
* include this license and copyright notice.
*
* THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS
* INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*****************************************************************************/
var SkeletonData = /** @class */ (function () {
function SkeletonData() {
this.bones = new Array(); // Ordered parents first.
// Ordered parents first.
this.slots = new Array(); // Setup pose draw order.
// Setup pose draw order.
this.skins = new Array();
this.events = new Array();
this.animations = new Array();
this.ikConstraints = new Array();
this.transformConstraints = new Array();
this.pathConstraints = new Array();
// Nonessential
this.fps = 0;
}
/**
* @param {?} boneName
* @return {?}
*/
SkeletonData.prototype.findBone = /**
* @param {?} boneName
* @return {?}
*/
function (boneName) {
if (boneName == null)
throw new Error("boneName cannot be null.");
/** @type {?} */
var bones = this.bones;
for (var i = 0, n = bones.length; i < n; i++) {
/** @type {?} */
var bone = bones[i];
if (bone.name == boneName)
return bone;
}
return null;
};
/**
* @param {?} boneName
* @return {?}
*/
SkeletonData.prototype.findBoneIndex = /**
* @param {?} boneName
* @return {?}
*/
function (boneName) {
if (boneName == null)
throw new Error("boneName cannot be null.");
/** @type {?} */
var bones = this.bones;
for (var i = 0, n = bones.length; i < n; i++)
if (bones[i].name == boneName)
return i;
return -1;
};
/**
* @param {?} slotName
* @return {?}
*/
SkeletonData.prototype.findSlot = /**
* @param {?} slotName
* @return {?}
*/
function (slotName) {
if (slotName == null)
throw new Error("slotName cannot be null.");
/** @type {?} */
var slots = this.slots;
for (var i = 0, n = slots.length; i < n; i++) {
/** @type {?} */
var slot = slots[i];
if (slot.name == slotName)
return slot;
}
return null;
};
/**
* @param {?} slotName
* @return {?}
*/
SkeletonData.prototype.findSlotIndex = /**
* @param {?} slotName
* @return {?}
*/
function (slotName) {
if (slotName == null)
throw new Error("slotName cannot be null.");
/** @type {?} */
var slots = this.slots;
for (var i = 0, n = slots.length; i < n; i++)
if (slots[i].name == slotName)
return i;
return -1;
};
/**
* @param {?} skinName
* @return {?}
*/
SkeletonData.prototype.findSkin = /**
* @param {?} skinName
* @return {?}
*/
function (skinName) {
if (skinName == null)
throw new Error("skinName cannot be null.");
/** @type {?} */
var skins = this.skins;
for (var i = 0, n = skins.length; i < n; i++) {
/** @type {?} */
var skin = skins[i];
if (skin.name == skinName)
return skin;
}
return null;
};
/**
* @param {?} eventDataName
* @return {?}
*/
SkeletonData.prototype.findEvent = /**
* @param {?} eventDataName
* @return {?}
*/
function (eventDataName) {
if (eventDataName == null)
throw new Error("eventDataName cannot be null.");
/** @type {?} */
var events = this.events;
for (var i = 0, n = events.length; i < n; i++) {
/** @type {?} */
var event_1 = events[i];
if (event_1.name == eventDataName)
return event_1;
}
return null;
};
/**
* @param {?} animationName
* @return {?}
*/
SkeletonData.prototype.findAnimation = /**
* @param {?} animationName
* @return {?}
*/
function (animationName) {
if (animationName == null)
throw new Error("animationName cannot be null.");
/** @type {?} */
var animations = this.animations;
for (var i = 0, n = animations.length; i < n; i++) {
/** @type {?} */
var animation = animations[i];
if (animation.name == animationName)
return animation;
}
return null;
};
/**
* @param {?} constraintName
* @return {?}
*/
SkeletonData.prototype.findIkConstraint = /**
* @param {?} constraintName
* @return {?}
*/
function (constraintName) {
if (constraintName == null)
throw new Error("constraintName cannot be null.");
/** @type {?} */
var ikConstraints = this.ikConstraints;
for (var i = 0, n = ikConstraints.length; i < n; i++) {
/** @type {?} */
var constraint = ikConstraints[i];
if (constraint.name == constraintName)
return constraint;
}
return null;
};
/**
* @param {?} constraintName
* @return {?}
*/
SkeletonData.prototype.findTransformConstraint = /**
* @param {?} constraintName
* @return {?}
*/
function (constraintName) {
if (constraintName == null)
throw new Error("constraintName cannot be null.");
/** @type {?} */
var transformConstraints = this.transformConstraints;
for (var i = 0, n = transformConstraints.length; i < n; i++) {
/** @type {?} */
var constraint = transformConstraints[i];
if (constraint.name == constraintName)
return constraint;
}
return null;
};
/**
* @param {?} constraintName
* @return {?}
*/
SkeletonData.prototype.findPathConstraint = /**
* @param {?} constraintName
* @return {?}
*/
function (constraintName) {
if (constraintName == null)
throw new Error("constraintName cannot be null.");
/** @type {?} */
var pathConstraints = this.pathConstraints;
for (var i = 0, n = pathConstraints.length; i < n; i++) {
/** @type {?} */
var constraint = pathConstraints[i];
if (constraint.name == constraintName)
return constraint;
}
return null;
};
/**
* @param {?} pathConstraintName
* @return {?}
*/
SkeletonData.prototype.findPathConstraintIndex = /**
* @param {?} pathConstraintName
* @return {?}
*/
function (pathConstraintName) {
if (pathConstraintName == null)
throw new Error("pathConstraintName cannot be null.");
/** @type {?} */
var pathConstraints = this.pathConstraints;
for (var i = 0, n = pathConstraints.length; i < n; i++)
if (pathConstraints[i].name == pathConstraintName)
return i;
return -1;
};
return SkeletonData;
}());
export { SkeletonData };
if (false) {
/** @type {?} */
SkeletonData.prototype.name;
/** @type {?} */
SkeletonData.prototype.bones;
/** @type {?} */
SkeletonData.prototype.slots;
/** @type {?} */
SkeletonData.prototype.skins;
/** @type {?} */
SkeletonData.prototype.defaultSkin;
/** @type {?} */
SkeletonData.prototype.events;
/** @type {?} */
SkeletonData.prototype.animations;
/** @type {?} */
SkeletonData.prototype.ikConstraints;
/** @type {?} */
SkeletonData.prototype.transformConstraints;
/** @type {?} */
SkeletonData.prototype.pathConstraints;
/** @type {?} */
SkeletonData.prototype.x;
/** @type {?} */
SkeletonData.prototype.y;
/** @type {?} */
SkeletonData.prototype.width;
/** @type {?} */
SkeletonData.prototype.height;
/** @type {?} */
SkeletonData.prototype.version;
/** @type {?} */
SkeletonData.prototype.hash;
/** @type {?} */
SkeletonData.prototype.fps;
/** @type {?} */
SkeletonData.prototype.imagesPath;
/** @type {?} */
SkeletonData.prototype.audioPath;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2tlbGV0b25EYXRhLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LXNwaW5lLyIsInNvdXJjZXMiOlsibGliL3NwaW5lLXRzL2NvcmUvU2tlbGV0b25EYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0NBO0lBQUE7UUFFRSxVQUFLLEdBQUcsSUFBSSxLQUFLLEVBQVksQ0FBQyxDQUFDLHlCQUF5Qjs7UUFDeEQsVUFBSyxHQUFHLElBQUksS0FBSyxFQUFZLENBQUMsQ0FBQyx5QkFBeUI7O1FBQ3hELFVBQUssR0FBRyxJQUFJLEtBQUssRUFBUSxDQUFDO1FBRTFCLFdBQU0sR0FBRyxJQUFJLEtBQUssRUFBYSxDQUFDO1FBQ2hDLGVBQVUsR0FBRyxJQUFJLEtBQUssRUFBYSxDQUFDO1FBQ3BDLGtCQUFhLEdBQUcsSUFBSSxLQUFLLEVBQW9CLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxLQUFLLEVBQTJCLENBQUM7UUFDNUQsb0JBQWUsR0FBRyxJQUFJLEtBQUssRUFBc0IsQ0FBQzs7UUFRbEQsUUFBRyxHQUFHLENBQUMsQ0FBQztJQW9HVixDQUFDOzs7OztJQWpHQywrQkFBUTs7OztJQUFSLFVBQVMsUUFBZ0I7UUFDdkIsSUFBSSxRQUFRLElBQUksSUFBSTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQzs7WUFDOUQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLO1FBQ3RCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7O2dCQUN4QyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUTtnQkFBRSxPQUFPLElBQUksQ0FBQztTQUN4QztRQUNELE9BQU8sSUFBSSxDQUFDO0lB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QUM7SUFDWixDQUFDO0lBQ0gsbUJBQUM7QUFBRCxDQUFDLEFBdEhELElBc0hDOzs7O0lBckhDLDRCQUFhOztJQUNiLDZCQUE4Qjs7SUFDOUIsNkJBQThCOztJQUM5Qiw2QkFBMEI7O0lBQzFCLG1DQUFrQjs7SUFDbEIsOEJBQWdDOztJQUNoQyxrQ0FBb0M7O0lBQ3BDLHFDQUE4Qzs7SUFDOUMsNENBQTREOztJQUM1RCx1Q0FBa0Q7O0lBQ2xELHlCQUFVOztJQUNWLHlCQUFVOztJQUNWLDZCQUFjOztJQUNkLDhCQUFlOztJQUNmLCtCQUFnQjs7SUFDaEIsNEJBQWE7O0lBRWIsMkJBQVE7O0lBQ1Isa0NBQW1COztJQUNuQixpQ0FBa0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAqIFNwaW5lIFJ1bnRpbWVzIExpY2Vuc2UgQWdyZWVtZW50XHJcbiAqIExhc3QgdXBkYXRlZCBNYXkgMSwgMjAxOS4gUmVwbGFjZXMgYWxsIHByaW9yIHZlcnNpb25zLlxyXG4gKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxOSwgRXNvdGVyaWMgU29mdHdhcmUgTExDXHJcbiAqXHJcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xyXG4gKiBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpcyBwZXJtaXR0ZWQgdW5kZXIgdGhlIHRlcm1zIGFuZFxyXG4gKiBjb25kaXRpb25zIG9mIFNlY3Rpb24gMiBvZiB0aGUgU3BpbmUgRWRpdG9yIExpY2Vuc2UgQWdyZWVtZW50OlxyXG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcclxuICpcclxuICogT3RoZXJ3aXNlLCBpdCBpcyBwZXJtaXR0ZWQgdG8gaW50ZWdyYXRlIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlXHJcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcclxuICogXCJQcm9kdWN0c1wiKSwgcHJvdmlkZWQgdGhhdCBlYWNoIHVzZXIgb2YgdGhlIFByb2R1Y3RzIG11c3Qgb2J0YWluIHRoZWlyIG93blxyXG4gKiBTcGluZSBFZGl0b3IgbGljZW5zZSBhbmQgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2R1Y3RzIGluIGFueSBmb3JtIG11c3RcclxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXHJcbiAqXHJcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgRVNPVEVSSUMgU09GVFdBUkUgTExDIFwiQVMgSVNcIiBBTkQgQU5ZIEVYUFJFU1NcclxuICogT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFU1xyXG4gKiBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTlxyXG4gKiBOTyBFVkVOVCBTSEFMTCBFU09URVJJQyBTT0ZUV0FSRSBMTEMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCxcclxuICogSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORyxcclxuICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTLCBCVVNJTkVTU1xyXG4gKiBJTlRFUlJVUFRJT04sIE9SIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXHJcbiAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElOR1xyXG4gKiBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsXHJcbiAqIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXHJcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cclxuXHJcbmltcG9ydCB7IEFuaW1hdGlvbiB9IGZyb20gXCIuL0FuaW1hdGlvblwiO1xyXG5pbXBvcnQgeyBCb25lRGF0YSB9IGZyb20gXCIuL0JvbmVEYXRhXCI7XHJcbmltcG9ydCB7IFNsb3REYXRhIH0gZnJvbSBcIi4vU2xvdERhdGFcIjtcclxuaW1wb3J0IHsgU2tpbiB9IGZyb20gXCIuL1NraW5cIjtcclxuaW1wb3J0IHsgRXZlbnREYXRhIH0gZnJvbSBcIi4vRXZlbnREYXRhXCI7XHJcbmltcG9ydCB7IElrQ29uc3RyYWludERhdGEgfSBmcm9tIFwiLi9Ja0NvbnN0cmFpbnREYXRhXCI7XHJcbmltcG9ydCB7IFRyYW5zZm9ybUNvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vVHJhbnNmb3JtQ29uc3RyYWludERhdGFcIjtcclxuaW1wb3J0IHsgUGF0aENvbnN0cmFpbnREYXRhIH0gZnJvbSBcIi4vUGF0aENvbnN0cmFpbnREYXRhXCI7XHJcblxyXG5leHBvcnQgY2xhc3MgU2tlbGV0b25EYXRhIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgYm9uZXMgPSBuZXcgQXJyYXk8Qm9uZURhdGE+KCk7IC8vIE9yZGVyZWQgcGFyZW50cyBmaXJzdC5cclxuICBzbG90cyA9IG5ldyBBcnJheTxTbG90RGF0YT4oKTsgLy8gU2V0dXAgcG9zZSBkcmF3IG9yZGVyLlxyXG4gIHNraW5zID0gbmV3IEFycmF5PFNraW4+KCk7XHJcbiAgZGVmYXVsdFNraW46IFNraW47XHJcbiAgZXZlbnRzID0gbmV3IEFycmF5PEV2ZW50RGF0YT4oKTtcclxuICBhbmltYXRpb25zID0gbmV3IEFycmF5PEFuaW1hdGlvbj4oKTtcclxuICBpa0NvbnN0cmFpbnRzID0gbmV3IEFycmF5PElrQ29uc3RyYWludERhdGE+KCk7XHJcbiAgdHJhbnNmb3JtQ29uc3RyYWludHMgPSBuZXcgQXJyYXk8VHJhbnNmb3JtQ29uc3RyYWludERhdGE+KCk7XHJcbiAgcGF0aENvbnN0cmFpbnRzID0gbmV3IEFycmF5PFBhdGhDb25zdHJhaW50RGF0YT4oKTtcclxuICB4OiBudW1iZXI7XHJcbiAgeTogbnVtYmVyO1xyXG4gIHdpZHRoOiBudW1iZXI7XHJcbiAgaGVpZ2h0OiBudW1iZXI7XHJcbiAgdmVyc2lvbjogc3RyaW5nO1xyXG4gIGhhc2g6IHN0cmluZztcclxuICAvLyBOb25lc3NlbnRpYWxcclxuICBmcHMgPSAwO1xyXG4gIGltYWdlc1BhdGg6IHN0cmluZztcclxuICBhdWRpb1BhdGg6IHN0cmluZztcclxuICBmaW5kQm9uZShib25lTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoYm9uZU5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwiYm9uZU5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IGJvbmVzID0gdGhpcy5ib25lcztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gYm9uZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBib25lID0gYm9uZXNbaV07XHJcbiAgICAgIGlmIChib25lLm5hbWUgPT0gYm9uZU5hbWUpIHJldHVybiBib25lO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRCb25lSW5kZXgoYm9uZU5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGJvbmVOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcImJvbmVOYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBib25lcyA9IHRoaXMuYm9uZXM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGJvbmVzLmxlbmd0aDsgaSA8IG47IGkrKylcclxuICAgICAgaWYgKGJvbmVzW2ldLm5hbWUgPT0gYm9uZU5hbWUpIHJldHVybiBpO1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICBmaW5kU2xvdChzbG90TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoc2xvdE5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic2xvdE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IHNsb3RzID0gdGhpcy5zbG90cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gc2xvdHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBzbG90ID0gc2xvdHNbaV07XHJcbiAgICAgIGlmIChzbG90Lm5hbWUgPT0gc2xvdE5hbWUpIHJldHVybiBzbG90O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRTbG90SW5kZXgoc2xvdE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHNsb3ROYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcInNsb3ROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBzbG90cyA9IHRoaXMuc2xvdHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHNsb3RzLmxlbmd0aDsgaSA8IG47IGkrKylcclxuICAgICAgaWYgKHNsb3RzW2ldLm5hbWUgPT0gc2xvdE5hbWUpIHJldHVybiBpO1xyXG4gICAgcmV0dXJuIC0xO1xyXG4gIH1cclxuICBmaW5kU2tpbihza2luTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoc2tpbk5hbWUgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKFwic2tpbk5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IHNraW5zID0gdGhpcy5za2lucztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gc2tpbnMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBza2luID0gc2tpbnNbaV07XHJcbiAgICAgIGlmIChza2luLm5hbWUgPT0gc2tpbk5hbWUpIHJldHVybiBza2luO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRFdmVudChldmVudERhdGFOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudERhdGFOYW1lID09IG51bGwpIHRocm93IG5ldyBFcnJvcihcImV2ZW50RGF0YU5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IGV2ZW50cyA9IHRoaXMuZXZlbnRzO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBldmVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBldmVudCA9IGV2ZW50c1tpXTtcclxuICAgICAgaWYgKGV2ZW50Lm5hbWUgPT0gZXZlbnREYXRhTmFtZSkgcmV0dXJuIGV2ZW50O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGZpbmRBbmltYXRpb24oYW5pbWF0aW9uTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoYW5pbWF0aW9uTmFtZSA9PSBudWxsKSB0aHJvdyBuZXcgRXJyb3IoXCJhbmltYXRpb25OYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBhbmltYXRpb25zID0gdGhpcy5hbmltYXRpb25zO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIG4gPSBhbmltYXRpb25zLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgYW5pbWF0aW9uID0gYW5pbWF0aW9uc1tpXTtcclxuICAgICAgaWYgKGFuaW1hdGlvbi5uYW1lID09IGFuaW1hdGlvbk5hbWUpIHJldHVybiBhbmltYXRpb247XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZElrQ29uc3RyYWludChjb25zdHJhaW50TmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoY29uc3RyYWludE5hbWUgPT0gbnVsbClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY29uc3RyYWludE5hbWUgY2Fubm90IGJlIG51bGwuXCIpO1xyXG4gICAgbGV0IGlrQ29uc3RyYWludHMgPSB0aGlzLmlrQ29uc3RyYWludHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IGlrQ29uc3RyYWludHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgIGxldCBjb25zdHJhaW50ID0gaWtDb25zdHJhaW50c1tpXTtcclxuICAgICAgaWYgKGNvbnN0cmFpbnQubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgcmV0dXJuIGNvbnN0cmFpbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZFRyYW5zZm9ybUNvbnN0cmFpbnQoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnN0cmFpbnROYW1lID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCB0cmFuc2Zvcm1Db25zdHJhaW50cyA9IHRoaXMudHJhbnNmb3JtQ29uc3RyYWludHM7XHJcbiAgICBmb3IgKGxldCBpID0gMCwgbiA9IHRyYW5zZm9ybUNvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgY29uc3RyYWludCA9IHRyYW5zZm9ybUNvbnN0cmFpbnRzW2ldO1xyXG4gICAgICBpZiAoY29uc3RyYWludC5uYW1lID09IGNvbnN0cmFpbnROYW1lKSByZXR1cm4gY29uc3RyYWludDtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICBmaW5kUGF0aENvbnN0cmFpbnQoY29uc3RyYWludE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnN0cmFpbnROYW1lID09IG51bGwpXHJcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImNvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBwYXRoQ29uc3RyYWludHMgPSB0aGlzLnBhdGhDb25zdHJhaW50cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gcGF0aENvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICBsZXQgY29uc3RyYWludCA9IHBhdGhDb25zdHJhaW50c1tpXTtcclxuICAgICAgaWYgKGNvbnN0cmFpbnQubmFtZSA9PSBjb25zdHJhaW50TmFtZSkgcmV0dXJuIGNvbnN0cmFpbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZmluZFBhdGhDb25zdHJhaW50SW5kZXgocGF0aENvbnN0cmFpbnROYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChwYXRoQ29uc3RyYWludE5hbWUgPT0gbnVsbClcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicGF0aENvbnN0cmFpbnROYW1lIGNhbm5vdCBiZSBudWxsLlwiKTtcclxuICAgIGxldCBwYXRoQ29uc3RyYWludHMgPSB0aGlzLnBhdGhDb25zdHJhaW50cztcclxuICAgIGZvciAobGV0IGkgPSAwLCBuID0gcGF0aENvbnN0cmFpbnRzLmxlbmd0aDsgaSA8IG47IGkrKylcclxuICAgICAgaWYgKHBhdGhDb25zdHJhaW50c1tpXS5uYW1lID09IHBhdGhDb25zdHJhaW50TmFtZSkgcmV0dXJuIGk7XHJcbiAgICByZXR1cm4gLTE7XHJcbiAgfVxyXG59XHJcbiJdfQ==