@libs-ui/interfaces-types 0.2.355-1 → 0.2.355-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -184,4 +184,4 @@ export {};
|
|
|
184
184
|
// type pathIAssignmentItem = PathOf<IAssignmentItem>;
|
|
185
185
|
// type pathIAssignmentItem = PathOf<unknown>; // string
|
|
186
186
|
// type V_assignees_F = GetValueAtPath<IAssignmentItem, 'assignees[0]', false>; // IAssignee
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBK0tBLDRFQUE0RTtBQUU1RSw4QkFBOEI7QUFDOUIsNENBQTRDO0FBQzVDLElBQUk7QUFFSixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDREQUE0RDtBQUM1RCwwRUFBMEU7QUFDMUUsOEJBQThCO0FBQzlCLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMseUNBQXlDO0FBQ3pDLFVBQVU7QUFDVix1Q0FBdUM7QUFDdkMsc0NBQXNDO0FBQ3RDLHFDQUFxQztBQUNyQyx5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLCtCQUErQjtBQUMvQiw2Q0FBNkM7QUFDN0MsaURBQWlEO0FBQ2pELDRDQUE0QztBQUM1QyxRQUFRO0FBQ1IsSUFBSTtBQUVKLGtGQUFrRjtBQUNsRixpR0FBaUc7QUFFakcsaUhBQWlIO0FBQ2pILGdJQUFnSTtBQUVoSSwwQkFBMEI7QUFDMUIsMkRBQTJEO0FBRTNELGtFQUFrRTtBQUVsRSxtQkFBbUI7QUFDbkIsWUFBWTtBQUNaLG9CQUFvQjtBQUNwQixtQkFBbUI7QUFDbkIsT0FBTztBQUNQLDJCQUEyQjtBQUMzQixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLFFBQVE7QUFDUiw4QkFBOEI7QUFDOUIsa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQyxRQUFRO0FBQ1IsMEJBQTBCO0FBQzFCLDRDQUE0QztBQUM1QyxrQkFBa0I7QUFDbEIsa0NBQWtDO0FBQ2xDLG9CQUFvQjtBQUNwQixRQUFRO0FBRVIsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYix5QkFBeUI7QUFDekIsaUNBQWlDO0FBQ2pDLHdCQUF3QjtBQUN4Qix3QkFBd0I7QUFDeEIsY0FBYztBQUNkLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLGNBQWM7QUFDZCx3Q0FBd0M7QUFDeEMsOEJBQThCO0FBQzlCLHNCQUFzQjtBQUN0QiwwQkFBMEI7QUFDMUIsMENBQTBDO0FBQzFDLHFDQUFxQztBQUNyQywwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLGlEQUFpRDtBQUNqRCxrQ0FBa0M7QUFDbEMsdUJBQXVCO0FBQ3ZCLG1DQUFtQztBQUNuQyxnQ0FBZ0M7QUFDaEMsZ0NBQWdDO0FBQ2hDLHFCQUFxQjtBQUNyQixrQkFBa0I7QUFDbEIsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQixhQUFhO0FBQ2IsV0FBVztBQUNYLFFBQVE7QUFDUixPQUFPO0FBQ1AsSUFBSTtBQUVKLDhCQUE4QjtBQUM5QixnQ0FBZ0M7QUFDaEMsa0NBQWtDO0FBQ2xDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLGtFQUFrRTtBQUNsRSxJQUFJO0FBRUosK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQyw4Q0FBOEM7QUFDOUMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQseUNBQXlDO0FBQ3pDLHdDQUF3QztBQUN4QyxJQUFJO0FBRUosMENBQTBDO0FBQzFDLHNDQUFzQztBQUN0QywwQ0FBMEM7QUFDMUMsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsSUFBSTtBQUVKLG1FQUFtRTtBQUNuRSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLHVGQUF1RjtBQUN2RiwyRUFBMkU7QUFDM0UsMEVBQTBFO0FBQzFFLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFFeEUsb0RBQW9EO0FBQ3BELDRGQUE0RjtBQUM1RiwyR0FBMkc7QUFDM0csMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBRWhGLHdEQUF3RDtBQUN4RCw2RkFBNkY7QUFDN0YsNElBQTRJO0FBQzVJLDZFQUE2RTtBQUM3RSw0RkFBNEY7QUFDNUYsaUZBQWlGO0FBQ2pGLGdHQUFnRztBQUVoRyxpQ0FBaUM7QUFDakMscUVBQXFFO0FBQ3JFLG9FQUFvRTtBQUNwRSwwRUFBMEU7QUFDMUUseUVBQXlFO0FBRXpFLGdDQUFnQztBQUNoQyx5RUFBeUU7QUFDekUsd0ZBQXdGO0FBQ3hGLDhFQUE4RTtBQUM5RSw2RkFBNkY7QUFFN0YsK0NBQStDO0FBQy9DLHlGQUF5RjtBQUN6Rix3R0FBd0c7QUFDeEcsOEZBQThGO0FBQzlGLDZHQUE2RztBQUM3RywwRUFBMEU7QUFDMUUseUZBQXlGO0FBQ3pGLDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFFN0UsY0FBYztBQUNkLDZIQUE2SDtBQUM3SCw0SkFBNEo7QUFDNUosOEZBQThGO0FBQzlGLDZGQUE2RjtBQUM3Riw4RkFBOEY7QUFDOUYsNkdBQTZHO0FBRTdHLHFCQUFxQjtBQUNyQiw2SkFBNko7QUFDN0osNE1BQTRNO0FBQzVNLCtGQUErRjtBQUMvRiw4RkFBOEY7QUFDOUYsK0ZBQStGO0FBQy9GLDhGQUE4RjtBQUM5RixpR0FBaUc7QUFDakcsZ0hBQWdIO0FBQ2hILHNHQUFzRztBQUN0RyxxR0FBcUc7QUFDckcscUhBQXFIO0FBQ3JILG9JQUFvSTtBQUNwSSwwSEFBMEg7QUFDMUgseUlBQXlJO0FBQ3pJLHdHQUF3RztBQUN4Ryx1R0FBdUc7QUFDdkcsd0dBQXdHO0FBQ3hHLHVHQUF1RztBQUV2RyxrSEFBa0g7QUFDbEgsaUlBQWlJO0FBQ2pJLHVIQUF1SDtBQUN2SCxzSEFBc0g7QUFFdEgsc0RBQXNEO0FBQ3RELHdEQUF3RDtBQUV4RCw0RkFBNEYiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IEhlbHBlcnM6IHVud3JhcCAmIHNoYXBlID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbnR5cGUgSXNFbXB0eU9iamVjdDxPYmo+ID0gW2tleW9mIE9ial0gZXh0ZW5kcyBbbmV2ZXJdID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBVbndyYXAgdG/DoG4gYuG7mSBTaWduYWxcbnR5cGUgVW53cmFwQWxsU2lnbmFsczxUPiA9IFQgZXh0ZW5kcyBTaWduYWw8aW5mZXIgVT4gPyBVbndyYXBBbGxTaWduYWxzPFU+IDogVDtcblxuLy8gTG/huqFpIGLhu48gdW5kZWZpbmVkIHwgbnVsbCBzYXUga2hpIHVud3JhcCAxIGzhu5twIFNpZ25hbCDEkeG7gyBzb2kgc2hhcGVcbnR5cGUgQ2xlYW48VD4gPSBFeGNsdWRlPFVud3JhcEFsbFNpZ25hbHM8VD4sIHVuZGVmaW5lZCB8IG51bGw+O1xuXG4vLyBLZXkgZOG6oW5nIHN0cmluZ1xudHlwZSBTdHJLZXlzPFQ+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBBcnJheSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEzhuqV5IGVsZW1lbnQgdHlwZSBj4bunYSBt4bqjbmcsIHThu7EgbMOgbSBz4bqhY2ggKGLhu48gdW5kZWZpbmVkL251bGwsIHVud3JhcCBTaWduYWwgdHLGsOG7m2Mga2hpIGtp4buDbSB0cmEpXG50eXBlIEFycmF5RWxlbWVudFJhdzxUPiA9IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VD4+IGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBVPiA/IFUgOiBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIChpbmZlciBVKVtdID8gVSA6IG5ldmVyO1xuXG4vLyBLaeG7g20gdHJhIGFycmF5LWxpa2Ugc2F1IGtoaSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwgdsOgIGzDoG0gc+G6oWNoIG9wdGlvbmFsXG50eXBlIElzQXJyYXlMaWtlPFQ+ID0gVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyB0cnVlIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyB1bmtub3duW10gPyB0cnVlIDogZmFsc2U7XG5cbi8vIEtp4buDbSB0cmEgb2JqZWN0IGtow7RuZyBwaOG6o2kgYXJyYXkgc2F1IGtoaSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwgdsOgIGzDoG0gc+G6oWNoIG9wdGlvbmFsXG50eXBlIElzTm9uQXJyYXlPYmplY3Q8VD4gPSBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIG9iamVjdCA/IChVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA/IGZhbHNlIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyB1bmtub3duW10gPyBmYWxzZSA6IHRydWUpIDogZmFsc2U7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERPTS9FdnQgZ3VhcmQgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxudHlwZSBJc0RPTVR5cGU8VD4gPSBVbndyYXBBbGxTaWduYWxzPFQ+IGV4dGVuZHMgRXZlbnQgfCBOb2RlIHwgRG9jdW1lbnQgfCBFbGVtZW50IHwgV2luZG93IHwgQ1NTU3R5bGVEZWNsYXJhdGlvbiB8IENTU1J1bGUgfCBDU1NTdHlsZVNoZWV0ID8gdHJ1ZSA6IGZhbHNlO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBGaW5hbGl6ZSAoZ2nhu68gU2lnbmFsIG7hur91IGPhuqduKSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIEZpbmFsaXplPFQsIFIgZXh0ZW5kcyBib29sZWFuPiA9IFIgZXh0ZW5kcyB0cnVlID8gVCA6IFVud3JhcEFsbFNpZ25hbHM8VD47XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERlcHRoIGxpbWl0ZXIgKGh5YnJpZCwgbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIERlYzxOIGV4dGVuZHMgbnVtYmVyPiA9IE4gZXh0ZW5kcyA2ID8gNSA6IE4gZXh0ZW5kcyA1ID8gNCA6IE4gZXh0ZW5kcyA0ID8gMyA6IE4gZXh0ZW5kcyAzID8gMiA6IE4gZXh0ZW5kcyAyID8gMSA6IE4gZXh0ZW5kcyAxID8gMCA6IDA7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFBhdGggYnVpbGRlcnMgKERlcHRoLWxpbWl0ZWQpID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFBhdGggY2hvIGFycmF5IOG7nyByb290L2ZpZWxkXG50eXBlIFBhdGhGb3JBcnJheTxULCBEZXB0aCBleHRlbmRzIG51bWJlcj4gPSBbRGVwdGhdIGV4dGVuZHMgWzBdID8gbmV2ZXIgOiBgWyR7bnVtYmVyfV1gIHwgKFBhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGBbJHtudW1iZXJ9XS4ke1BhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+fWApO1xuXG4vLyBQYXRoIGNobyB04burbmcgcHJvcCBLIHTDuXkga2nhu4N1IGdpw6EgdHLhu4tcbnR5cGUgUGF0aEZvclByb3A8VFByb3AsIEsgZXh0ZW5kcyBzdHJpbmcsIERlcHRoIGV4dGVuZHMgbnVtYmVyPiA9IFtEZXB0aF0gZXh0ZW5kcyBbMF1cbiAgPyBLXG4gIDogSXNBcnJheUxpa2U8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYCR7S31gIHwgYCR7S31bJHtudW1iZXJ9XWAgfCAoUGF0aE9mPEFycmF5RWxlbWVudFJhdzxUUHJvcD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGAke0t9WyR7bnVtYmVyfV0uJHtQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFRQcm9wPiwgRGVjPERlcHRoPj59YClcbiAgICA6IElzTm9uQXJyYXlPYmplY3Q8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBgJHtLfWAgfCAoUGF0aE9mPENsZWFuPFRQcm9wPiwgRGVjPERlcHRoPj4gZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogYCR7S30uJHtQYXRoT2Y8Q2xlYW48VFByb3A+LCBEZWM8RGVwdGg+Pn1gKVxuICAgICAgOiBgJHtLfWA7XG5cbi8vIFBhdGggY2hvIG9iamVjdCAobWFwIHThu6tuZyBrZXkpXG50eXBlIFBhdGhGb3JPYmplY3Q8VCwgRGVwdGggZXh0ZW5kcyBudW1iZXI+ID0ge1xuICBbSyBpbiBTdHJLZXlzPFQ+XTogUGF0aEZvclByb3A8VFtLXSwgSywgRGVwdGg+O1xufVtTdHJLZXlzPFQ+XTtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gUHVibGljOiBQYXRoT2YgKGh5YnJpZCwgRGVwdGggbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG5leHBvcnQgdHlwZSBQYXRoT2Y8VFJhdywgRGVwdGggZXh0ZW5kcyBudW1iZXIgPSA2PiA9XG4gIElzRW1wdHlPYmplY3Q8Q2xlYW48VFJhdz4+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYW55XG4gICAgOiBJc0RPTVR5cGU8Q2xlYW48VFJhdz4+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBhbnlcbiAgICAgIDogW0RlcHRoXSBleHRlbmRzIFswXVxuICAgICAgICA/IG5ldmVyXG4gICAgICAgIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUUmF3Pj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCB1bmtub3duW11cbiAgICAgICAgICA/IFBhdGhGb3JBcnJheTxDbGVhbjxUUmF3PiwgRGVwdGg+XG4gICAgICAgICAgOiBVbndyYXBBbGxTaWduYWxzPENsZWFuPFRSYXc+PiBleHRlbmRzIG9iamVjdFxuICAgICAgICAgICAgPyBQYXRoRm9yT2JqZWN0PFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VFJhdz4+LCBEZXB0aD5cbiAgICAgICAgICAgIDogc3RyaW5nO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBSZXNvbHZlIGdpw6EgdHLhu4sgdGhlbyBwYXRoID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEdldEludGVybmFsOiDEkWkgdGhlbyBzdHJpbmcgcGF0aCDEkeG7gyByZXNvbHZlIHR5cGUgZ2nDoSB0cuG7iyBjdeG7kWkgY8O5bmdcbnR5cGUgR2V0SW50ZXJuYWw8VFJhdywgUCBleHRlbmRzIHN0cmluZywgUiBleHRlbmRzIGJvb2xlYW4+ID1cbiAgLy8gW3hdLlJlc3QgKMSRw6FuaCBpbmRleCB2w6BvIHJvb3QgYXJyYXkpXG4gIFAgZXh0ZW5kcyBgWyR7aW5mZXIgSX1dLiR7aW5mZXIgUmVzdH1gXG4gICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgID8gR2V0SW50ZXJuYWw8QXJyYXlFbGVtZW50UmF3PFRSYXc+LCBSZXN0LCBSPlxuICAgICAgOiBhbnlcbiAgICA6IC8vIFt4XSAoY2jhu4kgaW5kZXgpXG4gICAgICBQIGV4dGVuZHMgYFske2luZmVyIEl9XWBcbiAgICAgID8gSSBleHRlbmRzIGAke251bWJlcn1gXG4gICAgICAgID8gRmluYWxpemU8QXJyYXlFbGVtZW50UmF3PFRSYXc+LCBSPlxuICAgICAgICA6IGFueVxuICAgICAgOiAvLyBLW3hdLlJlc3QgKMSRw6FuaCBpbmRleCB2w6BvIGZpZWxkIG3huqNuZylcbiAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dLiR7aW5mZXIgUmVzdH1gXG4gICAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj4+XG4gICAgICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgICAgID8gR2V0SW50ZXJuYWw8QXJyYXlFbGVtZW50UmF3PENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+W0tdPiwgUmVzdCwgUj5cbiAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgOiBhbnlcbiAgICAgICAgOiAvLyBLLlJlc3QgKMSRaSBzw6J1IHbDoG8gb2JqZWN0KVxuICAgICAgICAgIFAgZXh0ZW5kcyBgJHtpbmZlciBLfS4ke2luZmVyIFJlc3R9YFxuICAgICAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj4+XG4gICAgICAgICAgICA/IElzQXJyYXlMaWtlPENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+W0tdPiBleHRlbmRzIHRydWVcbiAgICAgICAgICAgICAgPyBhbnkgLy8ga2jDtG5nIGjhu5cgdHLhu6MgZG90IHbDoG8gcGjhuqduIHThu60gbeG6o25nIGtoaSB0aGnhur91IGluZGV4XG4gICAgICAgICAgICAgIDogR2V0SW50ZXJuYWw8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10sIFJlc3QsIFI+XG4gICAgICAgICAgICA6IGFueVxuICAgICAgICAgIDogLy8gS1s8bnVtYmVyPl0gKGvhur90IHRow7pjIOG7nyBpbmRleClcbiAgICAgICAgICAgIFAgZXh0ZW5kcyBgJHtpbmZlciBLfVske2luZmVyIEl9XWBcbiAgICAgICAgICAgID8gSyBleHRlbmRzIFN0cktleXM8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj4+XG4gICAgICAgICAgICAgID8gSSBleHRlbmRzIGAke251bWJlcn1gXG4gICAgICAgICAgICAgICAgPyBGaW5hbGl6ZTxBcnJheUVsZW1lbnRSYXc8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10+LCBSPlxuICAgICAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgICA6IC8vIEsgKGvhur90IHRow7pjIOG7nyBrZXkpXG4gICAgICAgICAgICAgIFAgZXh0ZW5kcyBgJHtpbmZlciBLfWBcbiAgICAgICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICAgICAgICA/IEZpbmFsaXplPENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+W0tdLCBSPlxuICAgICAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgICAgIDogYW55O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBQdWJsaWM6IEdldFZhbHVlQXRQYXRoICYgR2V0UmV0dXJuVHlwZSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBSZXNvbHZlIGtp4buDdSBnacOhIHRy4buLIHThuqFpIHBhdGggUC4gTuG6v3UgUj10cnVlLCBnaeG7ryBuZ3V5w6puIFNpZ25hbDsgbeG6t2MgxJHhu4tuaCBSPWZhbHNlIHPhur0gdW53cmFwIHRvw6BuIGLhu5kgU2lnbmFsLlxuZXhwb3J0IHR5cGUgR2V0VmFsdWVBdFBhdGg8VFJhdywgUCBleHRlbmRzIFBhdGhPZjxUUmF3PiwgUiBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gPSBHZXRJbnRlcm5hbDxUUmF3LCBQLCBSPjtcblxuLy8gS2nhu4N1IHRy4bqjIHbhu4EgY+G7p2EgZ2V0KCkgZOG7sWEgdHLDqm4gZGVmYXVsdFZhbHVlIERcbmV4cG9ydCB0eXBlIEdldFJldHVyblR5cGU8TywgUCBleHRlbmRzIFBhdGhPZjxPPiwgS1MgZXh0ZW5kcyBib29sZWFuLCBEPiA9IEQgZXh0ZW5kcyB1bmRlZmluZWQgPyBHZXRWYWx1ZUF0UGF0aDxPLCBQLCBLUz4gOiBEO1xuXG4vLyBLaeG7g20gdHJhIGPDoWMga2nhu4N1IGThu68gbGnhu4d1IMSR4bq3YyBiaeG7h3QgxJHhu4MgY2jhu4kgd3JhcCBzaWduYWwgMSBj4bqlcFxudHlwZSBJc1NwZWNpZmljVHlwZTxUPiA9IFQgZXh0ZW5kc1xuICB8IEV2ZW50XG4gIHwgTm9kZVxuICB8IERvY3VtZW50XG4gIHwgRWxlbWVudFxuICB8IFdpbmRvd1xuICB8IENTU1N0eWxlRGVjbGFyYXRpb25cbiAgfCBDU1NSdWxlXG4gIHwgQ1NTU3R5bGVTaGVldFxuICB8IEh0dHBQYXJhbXNcbiAgfCBEYXlqc1xuICB8IERhdGVcbiAgfCAoKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnkpXG4gIHwgUHJvbWlzZTxhbnk+XG4gIHwgTWFwPGFueSwgYW55PlxuICB8IFNldDxhbnk+XG4gIHwgV2Vha01hcDxhbnksIGFueT5cbiAgfCBXZWFrU2V0PGFueT5cbiAgfCBSZWdFeHBcbiAgfCBGaWxlXG4gIHwgQmxvYlxuICB8IEZpbGVMaXN0XG4gIHwgRm9ybURhdGFcbiAgPyB0cnVlXG4gIDogZmFsc2U7XG5cbi8vIMSQxrBhIGtp4buDdSBk4buvIGxp4buHdSBi4bqldCBr4buzIHbhu4EgZOG6oW5nIHNpZ25hbCwgTuG6v3UgUCA9IHRydWUgxJHGsGEgY+G6oyBk4buvIGxp4buHdSBwcmVtZXRpdmVfdHlwZSB24buBIGThuqFuZyBzaWduYWxcbmV4cG9ydCB0eXBlIFNpZ25hbE9mPFQsIFAgZXh0ZW5kcyBib29sZWFuID0gdHJ1ZSwgRiBleHRlbmRzIGJvb2xlYW4gPSBmYWxzZT4gPSBUIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZFxuICA/IFRcbiAgOiBJc1NwZWNpZmljVHlwZTxDbGVhbjxUPj4gZXh0ZW5kcyB0cnVlXG4gICAgPyBGIGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBXcml0YWJsZVNpZ25hbDxUPlxuICAgICAgOiBUXG4gICAgOiBDbGVhbjxUPiBleHRlbmRzIEFycmF5PGluZmVyIFU+XG4gICAgICA/IEYgZXh0ZW5kcyB0cnVlXG4gICAgICAgID8gV3JpdGFibGVTaWduYWw8QXJyYXk8U2lnbmFsT2Y8Q2xlYW48VT4sIFAsIHRydWU+Pj5cbiAgICAgICAgOiBBcnJheTxTaWduYWxPZjxDbGVhbjxVPiwgUCwgdHJ1ZT4+XG4gICAgICA6IENsZWFuPFQ+IGV4dGVuZHMgb2JqZWN0XG4gICAgICAgID8gRiBleHRlbmRzIHRydWVcbiAgICAgICAgICA/IFdyaXRhYmxlU2lnbmFsPHsgW0sgaW4ga2V5b2YgQ2xlYW48VD5dOiBTaWduYWxPZjxDbGVhbjxDbGVhbjxUPltLXT4sIFAsIHRydWU+IH0+XG4gICAgICAgICAgOiB7IFtLIGluIGtleW9mIENsZWFuPFQ+XTogU2lnbmFsT2Y8Q2xlYW48Q2xlYW48VD5bS10+LCBQLCB0cnVlPiB9XG4gICAgICAgIDogQ2xlYW48VD4gZXh0ZW5kcyBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuXG4gICAgICAgICAgPyBQIGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgPyBXcml0YWJsZVNpZ25hbDxDbGVhbjxUPj5cbiAgICAgICAgICAgIDogQ2xlYW48VD5cbiAgICAgICAgICA6IFdyaXRhYmxlU2lnbmFsPENsZWFuPFQ+PjtcblxuZXhwb3J0IHR5cGUgTm9uU2lnbmFsT2Y8VD4gPSBUIGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCA/IFQgOiBDbGVhbjxUPiBleHRlbmRzIEFycmF5PGluZmVyIFU+ID8gQXJyYXk8Tm9uU2lnbmFsT2Y8Q2xlYW48VT4+PiA6IENsZWFuPFQ+IGV4dGVuZHMgb2JqZWN0ID8geyBbSyBpbiBrZXlvZiBDbGVhbjxUPl06IE5vblNpZ25hbE9mPENsZWFuPENsZWFuPFQ+W0tdPj4gfSA6IENsZWFuPFQ+O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSAoVHXhu7MgY2jhu41uKSBWw60gZOG7pSBuaGFuaCA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElDb21tZW50IHtcbi8vICAgY29tbWVudHM/OiBXcml0YWJsZVNpZ25hbDxJU3ViQ29tbWVudD47XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSVN1YkNvbW1lbnQge1xuLy8gICBzdG9yZT86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElDb21tZW50Pj4+O1xuLy8gICBkYXRhPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIHNwZWNpZmljX3RlbXBfZGF0YT86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElDb21tZW50Pj4+O1xuLy8gICBwYWdpbmc/OiBXcml0YWJsZVNpZ25hbDx7XG4vLyAgICAgY3Vyc29ycz86IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgIGFmdGVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgIGJlZm9yZT86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgfT47XG4vLyAgICAgYmVmb3JlPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBhZnRlcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgbmV4dD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgcHJldmlvdXM/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICB9Pjtcbi8vICAgc3VtbWFyeT86IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBjYW5fY29tbWVudD86IFdyaXRhYmxlU2lnbmFsPGJvb2xlYW4+O1xuLy8gICAgIGNhbm9yZGVyX2NvbW1lbnQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIHRvdGFsX2NvdW50PzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbi8vICAgfT47XG4vLyB9XG5cbi8vIHR5cGUgVl9jb21tZW50c19GID0gR2V0VmFsdWVBdFBhdGg8SUNvbW1lbnQsICdjb21tZW50cycsIGZhbHNlPjsgLy8gSVN1YkNvbW1lbnRcbi8vIHR5cGUgVl9jb21tZW50c19UID0gR2V0VmFsdWVBdFBhdGg8SUNvbW1lbnQsICdjb21tZW50cycsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxJU3ViQ29tbWVudD5cblxuLy8gdHlwZSBWX2NvbW1lbnRzX3N0b3JlX0YgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzLmRhdGEnLCBmYWxzZT47IC8vIEFycmF5PFdyaXRhYmxlU2lnbmFsPElDb21tZW50Pj5cbi8vIHR5cGUgVl9jb21tZW50c19zdG9yZV9UID0gR2V0VmFsdWVBdFBhdGg8SUNvbW1lbnQsICdjb21tZW50cy5kYXRhJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElDb21tZW50Pj4+XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgVGVzdCB7XG4vLyAgIHNwZWNpZmljX3F1ZXJ5PzogV3JpdGFibGVTaWduYWw8SUFzc2lnbm1lbnRJdGVtUXVlcnk+O1xuXG4vLyAgIGRhdGE6IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElBc3NpZ25tZW50SXRlbT4+PjtcblxuLy8gICBpbmRleDogbnVtYmVyO1xuLy8gICBpbmZvOiB7XG4vLyAgICAgbmFtZTogc3RyaW5nO1xuLy8gICAgIGFnZTogbnVtYmVyO1xuLy8gICB9O1xuLy8gICBjaXR5OiBXcml0YWJsZVNpZ25hbDx7XG4vLyAgICAgbmFtZTogc3RyaW5nO1xuLy8gICAgIGNvdW50cnk6IHN0cmluZztcbi8vICAgfT47XG4vLyAgIGFkZHJlc3M6IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwb3J0OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICB9Pjtcbi8vICAgb3duZXI6IEFycmF5PHN0cmluZz47XG4vLyAgIHN1cHBvcnQ6IEFycmF5PFdyaXRhYmxlU2lnbmFsPHN0cmluZz4+O1xuLy8gICBob3N0OiBBcnJheTx7XG4vLyAgICAgaXA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgcG9ydDogbnVtYmVyO1xuLy8gICB9PjtcblxuLy8gICBjb3VudHJ5OiBXcml0YWJsZVNpZ25hbDxcbi8vICAgICBBcnJheTxcbi8vICAgICAgIFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgICAgbmFtZTogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgIHZpOiBzdHJpbmc7XG4vLyAgICAgICAgICAgZW46IHN0cmluZztcbi8vICAgICAgICAgfT47XG4vLyAgICAgICAgIGNvZGU6IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgICAgICB2aTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgICAgICBlbjogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgICAgfT47XG4vLyAgICAgICAgIGZsYWc6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgICAgIHBob25lX2NvZGU6IHN0cmluZztcbi8vICAgICAgICAgY3VycmVuY3k6IHtcbi8vICAgICAgICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgICAgICAgY29kZTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgICAgICBzeW1ib2w6IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgICAgICAgIHZpOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICAgICAgY246IFdyaXRhYmxlU2lnbmFsPEFycmF5PHN0cmluZz4+O1xuLy8gICAgICAgICAgICAganA6IFdyaXRhYmxlU2lnbmFsPFxuLy8gICAgICAgICAgICAgICBBcnJheTxcbi8vICAgICAgICAgICAgICAgICBXcml0YWJsZVNpZ25hbDx7XG4vLyAgICAgICAgICAgICAgICAgICB2aTogc3RyaW5nO1xuLy8gICAgICAgICAgICAgICAgICAgZW46IHN0cmluZztcbi8vICAgICAgICAgICAgICAgICB9PlxuLy8gICAgICAgICAgICAgICA+XG4vLyAgICAgICAgICAgICA+O1xuLy8gICAgICAgICAgIH0+O1xuLy8gICAgICAgICB9O1xuLy8gICAgICAgfT5cbi8vICAgICA+XG4vLyAgID47XG4vLyB9XG5cbi8vIGludGVyZmFjZSBJQXNzaWdubWVudEl0ZW0ge1xuLy8gICBpZDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgbmFtZTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgZGVzY3JpcHRpb246IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGNyZWF0ZWRfYXQ6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHVwZGF0ZWRfYXQ6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGFzc2lnbmVlcz86IFdyaXRhYmxlU2lnbmFsPEFycmF5PFdyaXRhYmxlU2lnbmFsPElBc3NpZ25lZT4+Pjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJQXNzaWduZWUge1xuLy8gICBhc3NpZ25lZV9pZD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGNvbnZlcnNhdGlvbl9pZD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGNyZWF0ZWRfdGltZT86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGNyZWF0ZWRfdXNlcj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGlkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgbm90ZT86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHN0YXR1cz86IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyAgIGFzc2lnbl90YWdfYWN0aXZpdHlfc3RhdHVzPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbi8vICAgY29tbWVudF9pZD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHJhdGluZ19pZD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyB9XG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUFzc2lnbm1lbnRJdGVtUXVlcnkge1xuLy8gICBwZXJfcGFnZTogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbi8vICAgYWZ0ZXJfdG9rZW4/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBiZWZvcmVfdG9rZW4/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBzZWFyY2g/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBzZWFyY2hfaW5kZXg/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gfVxuXG4vLyB0eXBlIFZfaW5kZXhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmRleCcsIGZhbHNlPjsgLy8gbnVtYmVyXG4vLyB0eXBlIFZfaW5kZXhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmRleCcsIHRydWU+OyAvLyBudW1iZXJcblxuLy8gdHlwZSBWX2luZm9fRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvJywgZmFsc2U+OyAvLyB7IG5hbWU6IHN0cmluZzsgYWdlOiBudW1iZXIgfVxuLy8gdHlwZSBWX2luZm9fVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvJywgdHJ1ZT47IC8vIHsgbmFtZTogc3RyaW5nOyBhZ2U6IG51bWJlciB9XG4vLyB0eXBlIFZfaW5mb19uYW1lX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaW5mby5uYW1lJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9pbmZvX25hbWVfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvLm5hbWUnLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfaW5mb19hZ2VfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvLmFnZScsIGZhbHNlPjsgLy8gbnVtYmVyXG4vLyB0eXBlIFZfaW5mb19hZ2VfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvLmFnZScsIHRydWU+OyAvLyBudW1iZXJcblxuLy8gLy8gQ2l0eSAoc2lnbmFsLXdyYXBwZWQgb2JqZWN0IHdpdGggcGxhaW4gZmllbGRzKVxuLy8gdHlwZSBWX2NpdHlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5JywgZmFsc2U+OyAvLyB7IG5hbWU6IHN0cmluZzsgY291bnRyeTogc3RyaW5nIH1cbi8vIHR5cGUgVl9jaXR5X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY2l0eScsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDx7IG5hbWU6IHN0cmluZzsgY291bnRyeTogc3RyaW5nIH0+XG4vLyB0eXBlIFZfY2l0eV9uYW1lX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY2l0eS5uYW1lJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jaXR5X25hbWVfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5Lm5hbWUnLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfY2l0eV9jb3VudHJ5X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY2l0eS5jb3VudHJ5JywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jaXR5X2NvdW50cnlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5LmNvdW50cnknLCB0cnVlPjsgLy8gc3RyaW5nXG5cbi8vIC8vIEFkZHJlc3MgKHNpZ25hbC13cmFwcGVkIG9iamVjdCB3aXRoIHNpZ25hbCBsZWF2ZXMpXG4vLyB0eXBlIFZfYWRkcmVzc19GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MnLCBmYWxzZT47IC8vIHsgaXA6IHN0cmluZzsgcG9ydDogbnVtYmVyIH1cbi8vIHR5cGUgVl9hZGRyZXNzX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcycsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDx7IGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+OyBwb3J0OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+IH0+XG4vLyB0eXBlIFZfYWRkcmVzc19pcF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MuaXAnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2FkZHJlc3NfaXBfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzLmlwJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cbi8vIHR5cGUgVl9hZGRyZXNzX3BvcnRfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzLnBvcnQnLCBmYWxzZT47IC8vIG51bWJlclxuLy8gdHlwZSBWX2FkZHJlc3NfcG9ydF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MucG9ydCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxudW1iZXI+XG5cbi8vIC8vIE93bmVyIChhcnJheSBvZiBwcmltaXRpdmVzKVxuLy8gdHlwZSBWX293bmVyX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnb3duZXInLCBmYWxzZT47IC8vIHN0cmluZ1tdXG4vLyB0eXBlIFZfb3duZXJfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdvd25lcicsIHRydWU+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX293bmVyX2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyWzBdJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9vd25lcl9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdvd25lclswXScsIHRydWU+OyAvLyBzdHJpbmdcblxuLy8gLy8gU3VwcG9ydCAoYXJyYXkgb2Ygc2lnbmFscylcbi8vIHR5cGUgVl9zdXBwb3J0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnc3VwcG9ydCcsIGZhbHNlPjsgLy8gc3RyaW5nW11cbi8vIHR5cGUgVl9zdXBwb3J0X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnc3VwcG9ydCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+W11cbi8vIHR5cGUgVl9zdXBwb3J0X2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ3N1cHBvcnRbMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N1cHBvcnRfaWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnc3VwcG9ydFswXScsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+XG5cbi8vIC8vIEhvc3QgKGFycmF5IG9mIG9iamVjdHMgd2l0aCBtaXhlZCBsZWF2ZXMpXG4vLyB0eXBlIFZfaG9zdF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3QnLCBmYWxzZT47IC8vIHsgaXA6IHN0cmluZzsgcG9ydDogbnVtYmVyIH1bXVxuLy8gdHlwZSBWX2hvc3RfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0JywgdHJ1ZT47IC8vIHsgaXA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47IHBvcnQ6IG51bWJlciB9W11cbi8vIHR5cGUgVl9ob3N0X2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3RbMF0nLCBmYWxzZT47IC8vIHsgaXA6IHN0cmluZzsgcG9ydDogbnVtYmVyIH1cbi8vIHR5cGUgVl9ob3N0X2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3RbMF0nLCB0cnVlPjsgLy8geyBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgcG9ydDogbnVtYmVyIH1cbi8vIHR5cGUgVl9ob3N0X2lwX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5pcCcsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfaG9zdF9pcF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3RbMF0uaXAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPlxuLy8gdHlwZSBWX2hvc3RfcG9ydF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3RbMF0ucG9ydCcsIGZhbHNlPjsgLy8gbnVtYmVyXG4vLyB0eXBlIFZfaG9zdF9wb3J0X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5wb3J0JywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyAvLyBjdXJyZW5jeVxuLy8gdHlwZSBWX2N1cnJlbmN5X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeScsIGZhbHNlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGNvZGU6IHN0cmluZzsgc3ltYm9sOiB7IC4uLiB9IH1cbi8vIHR5cGUgVl9jdXJyZW5jeV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3knLCB0cnVlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGNvZGU6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47IHN5bWJvbDogV3JpdGFibGVTaWduYWw8eyAuLi4gfT4gfVxuLy8gdHlwZSBWX2N1cnJlbmN5X25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5Lm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2N1cnJlbmN5X25hbWVfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5Lm5hbWUnLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfY3VycmVuY3lfY29kZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuY29kZScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfY3VycmVuY3lfY29kZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuY29kZScsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+XG5cbi8vIC8vIGN1cnJlbmN5LnN5bWJvbFxuLy8gdHlwZSBWX3N5bWJvbF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sJywgZmFsc2U+OyAvLyB7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmc7IGNuOiBzdHJpbmdbXTsganA6IHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9W10gfVxuLy8gdHlwZSBWX3N5bWJvbF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgdmk6IHN0cmluZzsgZW46IHN0cmluZzsgY246IFdyaXRhYmxlU2lnbmFsPHN0cmluZ1tdPjsganA6IFdyaXRhYmxlU2lnbmFsPHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9W10+IH0+XG4vLyB0eXBlIFZfc3ltYm9sX3ZpX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wudmknLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF92aV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLnZpJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9lbl9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmVuJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfZW5fVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5lbicsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfY25fRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jbicsIGZhbHNlPjsgLy8gc3RyaW5nW11cbi8vIHR5cGUgVl9zeW1ib2xfY25fVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jbicsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmdbXT5cbi8vIHR5cGUgVl9zeW1ib2xfY25faWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY25bMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9jbl9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jblswXScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcCcsIGZhbHNlPjsgLy8geyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXVxuLy8gdHlwZSBWX3N5bWJvbF9qcF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9W10+XG4vLyB0eXBlIFZfc3ltYm9sX2pwX2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdJywgZmFsc2U+OyAvLyB7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVxuLy8gdHlwZSBWX3N5bWJvbF9qcF9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXScsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDx7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfT5cbi8vIHR5cGUgVl9zeW1ib2xfanBfdmlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS52aScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2pwX3ZpX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0udmknLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2pwX2VuX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0uZW4nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9qcF9lbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdLmVuJywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyB0eXBlIFZfQXJyYXlfc3ltYm9sX2NuX0YgPSBHZXRWYWx1ZUF0UGF0aDxBcnJheTxUZXN0PiwgJ1swXS5jb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jbicsIGZhbHNlPjsgLy8gc3RyaW5nW11cbi8vIHR5cGUgVl9BcnJheV9zeW1ib2xfY25fVCA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZ1tdPlxuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9BcnJheV9zeW1ib2xfY25faWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxBcnJheTxUZXN0PiwgJ1swXS5jb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jblswXScsIHRydWU+OyAvLyBzdHJpbmdcblxuLy8gdHlwZSBwYXRoSUFzc2lnbm1lbnRJdGVtID0gUGF0aE9mPElBc3NpZ25tZW50SXRlbT47XG4vLyB0eXBlIHBhdGhJQXNzaWdubWVudEl0ZW0gPSBQYXRoT2Y8dW5rbm93bj47IC8vIHN0cmluZ1xuXG4vLyB0eXBlIFZfYXNzaWduZWVzX0YgPSBHZXRWYWx1ZUF0UGF0aDxJQXNzaWdubWVudEl0ZW0sICdhc3NpZ25lZXNbMF0nLCBmYWxzZT47IC8vIElBc3NpZ25lZVxuIl19
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMtdWkvaW50ZXJmYWNlcy10eXBlcy9zcmMvZ2VuZXJpYy11dGlsaXRpZXMtZm9yLXBhdGgtdmFsdWUudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBaUxBLDRFQUE0RTtBQUU1RSw4QkFBOEI7QUFDOUIsNENBQTRDO0FBQzVDLElBQUk7QUFFSixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDREQUE0RDtBQUM1RCwwRUFBMEU7QUFDMUUsOEJBQThCO0FBQzlCLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMseUNBQXlDO0FBQ3pDLFVBQVU7QUFDVix1Q0FBdUM7QUFDdkMsc0NBQXNDO0FBQ3RDLHFDQUFxQztBQUNyQyx5Q0FBeUM7QUFDekMsUUFBUTtBQUNSLCtCQUErQjtBQUMvQiw2Q0FBNkM7QUFDN0MsaURBQWlEO0FBQ2pELDRDQUE0QztBQUM1QyxRQUFRO0FBQ1IsSUFBSTtBQUVKLGtGQUFrRjtBQUNsRixpR0FBaUc7QUFFakcsaUhBQWlIO0FBQ2pILGdJQUFnSTtBQUVoSSwwQkFBMEI7QUFDMUIsMkRBQTJEO0FBRTNELGtFQUFrRTtBQUVsRSxtQkFBbUI7QUFDbkIsWUFBWTtBQUNaLG9CQUFvQjtBQUNwQixtQkFBbUI7QUFDbkIsT0FBTztBQUNQLDJCQUEyQjtBQUMzQixvQkFBb0I7QUFDcEIsdUJBQXVCO0FBQ3ZCLFFBQVE7QUFDUiw4QkFBOEI7QUFDOUIsa0NBQWtDO0FBQ2xDLG9DQUFvQztBQUNwQyxRQUFRO0FBQ1IsMEJBQTBCO0FBQzFCLDRDQUE0QztBQUM1QyxrQkFBa0I7QUFDbEIsa0NBQWtDO0FBQ2xDLG9CQUFvQjtBQUNwQixRQUFRO0FBRVIsNkJBQTZCO0FBQzdCLGFBQWE7QUFDYix5QkFBeUI7QUFDekIsaUNBQWlDO0FBQ2pDLHdCQUF3QjtBQUN4Qix3QkFBd0I7QUFDeEIsY0FBYztBQUNkLGlDQUFpQztBQUNqQyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLGNBQWM7QUFDZCx3Q0FBd0M7QUFDeEMsOEJBQThCO0FBQzlCLHNCQUFzQjtBQUN0QiwwQkFBMEI7QUFDMUIsMENBQTBDO0FBQzFDLHFDQUFxQztBQUNyQywwQkFBMEI7QUFDMUIsMEJBQTBCO0FBQzFCLGlEQUFpRDtBQUNqRCxrQ0FBa0M7QUFDbEMsdUJBQXVCO0FBQ3ZCLG1DQUFtQztBQUNuQyxnQ0FBZ0M7QUFDaEMsZ0NBQWdDO0FBQ2hDLHFCQUFxQjtBQUNyQixrQkFBa0I7QUFDbEIsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQixhQUFhO0FBQ2IsV0FBVztBQUNYLFFBQVE7QUFDUixPQUFPO0FBQ1AsSUFBSTtBQUVKLDhCQUE4QjtBQUM5QixnQ0FBZ0M7QUFDaEMsa0NBQWtDO0FBQ2xDLHlDQUF5QztBQUN6Qyx3Q0FBd0M7QUFDeEMsd0NBQXdDO0FBQ3hDLGtFQUFrRTtBQUNsRSxJQUFJO0FBRUosK0JBQStCO0FBQy9CLDBDQUEwQztBQUMxQyw4Q0FBOEM7QUFDOUMsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyxpQ0FBaUM7QUFDakMsbUNBQW1DO0FBQ25DLHFDQUFxQztBQUNyQyx5REFBeUQ7QUFDekQseUNBQXlDO0FBQ3pDLHdDQUF3QztBQUN4QyxJQUFJO0FBRUosMENBQTBDO0FBQzFDLHNDQUFzQztBQUN0QywwQ0FBMEM7QUFDMUMsMkNBQTJDO0FBQzNDLHFDQUFxQztBQUNyQywyQ0FBMkM7QUFDM0MsSUFBSTtBQUVKLG1FQUFtRTtBQUNuRSxrRUFBa0U7QUFFbEUsd0ZBQXdGO0FBQ3hGLHVGQUF1RjtBQUN2RiwyRUFBMkU7QUFDM0UsMEVBQTBFO0FBQzFFLHlFQUF5RTtBQUN6RSx3RUFBd0U7QUFFeEUsb0RBQW9EO0FBQ3BELDRGQUE0RjtBQUM1RiwyR0FBMkc7QUFDM0csMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSxpRkFBaUY7QUFDakYsZ0ZBQWdGO0FBRWhGLHdEQUF3RDtBQUN4RCw2RkFBNkY7QUFDN0YsNElBQTRJO0FBQzVJLDZFQUE2RTtBQUM3RSw0RkFBNEY7QUFDNUYsaUZBQWlGO0FBQ2pGLGdHQUFnRztBQUVoRyxpQ0FBaUM7QUFDakMscUVBQXFFO0FBQ3JFLG9FQUFvRTtBQUNwRSwwRUFBMEU7QUFDMUUseUVBQXlFO0FBRXpFLGdDQUFnQztBQUNoQyx5RUFBeUU7QUFDekUsd0ZBQXdGO0FBQ3hGLDhFQUE4RTtBQUM5RSw2RkFBNkY7QUFFN0YsK0NBQStDO0FBQy9DLHlGQUF5RjtBQUN6Rix3R0FBd0c7QUFDeEcsOEZBQThGO0FBQzlGLDZHQUE2RztBQUM3RywwRUFBMEU7QUFDMUUseUZBQXlGO0FBQ3pGLDhFQUE4RTtBQUM5RSw2RUFBNkU7QUFFN0UsY0FBYztBQUNkLDZIQUE2SDtBQUM3SCw0SkFBNEo7QUFDNUosOEZBQThGO0FBQzlGLDZGQUE2RjtBQUM3Riw4RkFBOEY7QUFDOUYsNkdBQTZHO0FBRTdHLHFCQUFxQjtBQUNyQiw2SkFBNko7QUFDN0osNE1BQTRNO0FBQzVNLCtGQUErRjtBQUMvRiw4RkFBOEY7QUFDOUYsK0ZBQStGO0FBQy9GLDhGQUE4RjtBQUM5RixpR0FBaUc7QUFDakcsZ0hBQWdIO0FBQ2hILHNHQUFzRztBQUN0RyxxR0FBcUc7QUFDckcscUhBQXFIO0FBQ3JILG9JQUFvSTtBQUNwSSwwSEFBMEg7QUFDMUgseUlBQXlJO0FBQ3pJLHdHQUF3RztBQUN4Ryx1R0FBdUc7QUFDdkcsd0dBQXdHO0FBQ3hHLHVHQUF1RztBQUV2RyxrSEFBa0g7QUFDbEgsaUlBQWlJO0FBQ2pJLHVIQUF1SDtBQUN2SCxzSEFBc0g7QUFFdEgsc0RBQXNEO0FBQ3RELHdEQUF3RDtBQUV4RCw0RkFBNEYiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBIdHRwUGFyYW1zIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU2lnbmFsLCBXcml0YWJsZVNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF5anMgfSBmcm9tICdkYXlqcyc7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IEhlbHBlcnM6IHVud3JhcCAmIHNoYXBlID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbnR5cGUgSXNFbXB0eU9iamVjdDxPYmo+ID0gW2tleW9mIE9ial0gZXh0ZW5kcyBbbmV2ZXJdID8gdHJ1ZSA6IGZhbHNlO1xuXG4vLyBVbndyYXAgdG/DoG4gYuG7mSBTaWduYWxcbnR5cGUgVW53cmFwQWxsU2lnbmFsczxUPiA9IFQgZXh0ZW5kcyBTaWduYWw8aW5mZXIgVT4gPyBVbndyYXBBbGxTaWduYWxzPFU+IDogVDtcblxuLy8gTG/huqFpIGLhu48gdW5kZWZpbmVkIHwgbnVsbCBzYXUga2hpIHVud3JhcCAxIGzhu5twIFNpZ25hbCDEkeG7gyBzb2kgc2hhcGVcbnR5cGUgQ2xlYW48VD4gPSBFeGNsdWRlPFVud3JhcEFsbFNpZ25hbHM8VD4sIHVuZGVmaW5lZCB8IG51bGw+O1xuXG4vLyBLZXkgZOG6oW5nIHN0cmluZ1xudHlwZSBTdHJLZXlzPFQ+ID0gRXh0cmFjdDxrZXlvZiBULCBzdHJpbmc+O1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBBcnJheSBoZWxwZXJzID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEzhuqV5IGVsZW1lbnQgdHlwZSBj4bunYSBt4bqjbmcsIHThu7EgbMOgbSBz4bqhY2ggKGLhu48gdW5kZWZpbmVkL251bGwsIHVud3JhcCBTaWduYWwgdHLGsOG7m2Mga2hpIGtp4buDbSB0cmEpXG50eXBlIEFycmF5RWxlbWVudFJhdzxUPiA9IFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VD4+IGV4dGVuZHMgUmVhZG9ubHlBcnJheTxpbmZlciBVPiA/IFUgOiBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIChpbmZlciBVKVtdID8gVSA6IG5ldmVyO1xuXG4vLyBLaeG7g20gdHJhIGFycmF5LWxpa2Ugc2F1IGtoaSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwgdsOgIGzDoG0gc+G6oWNoIG9wdGlvbmFsXG50eXBlIElzQXJyYXlMaWtlPFQ+ID0gVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gPyB0cnVlIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyB1bmtub3duW10gPyB0cnVlIDogZmFsc2U7XG5cbi8vIEtp4buDbSB0cmEgb2JqZWN0IGtow7RuZyBwaOG6o2kgYXJyYXkgc2F1IGtoaSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwgdsOgIGzDoG0gc+G6oWNoIG9wdGlvbmFsXG50eXBlIElzTm9uQXJyYXlPYmplY3Q8VD4gPSBVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIG9iamVjdCA/IChVbndyYXBBbGxTaWduYWxzPENsZWFuPFQ+PiBleHRlbmRzIHJlYWRvbmx5IHVua25vd25bXSA/IGZhbHNlIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUPj4gZXh0ZW5kcyB1bmtub3duW10gPyBmYWxzZSA6IHRydWUpIDogZmFsc2U7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERPTS9FdnQgZ3VhcmQgPT09PT09PT09PT09PT09PT09PT09PSAqKi9cblxudHlwZSBJc0RPTVR5cGU8VD4gPSBVbndyYXBBbGxTaWduYWxzPFQ+IGV4dGVuZHMgRXZlbnQgfCBOb2RlIHwgRG9jdW1lbnQgfCBFbGVtZW50IHwgV2luZG93IHwgQ1NTU3R5bGVEZWNsYXJhdGlvbiB8IENTU1J1bGUgfCBDU1NTdHlsZVNoZWV0ID8gdHJ1ZSA6IGZhbHNlO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBGaW5hbGl6ZSAoZ2nhu68gU2lnbmFsIG7hur91IGPhuqduKSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIEZpbmFsaXplPFQsIFIgZXh0ZW5kcyBib29sZWFuPiA9IFIgZXh0ZW5kcyB0cnVlID8gVCA6IFVud3JhcEFsbFNpZ25hbHM8VD47XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IERlcHRoIGxpbWl0ZXIgKGh5YnJpZCwgbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG50eXBlIERlYzxOIGV4dGVuZHMgbnVtYmVyPiA9IE4gZXh0ZW5kcyA2ID8gNSA6IE4gZXh0ZW5kcyA1ID8gNCA6IE4gZXh0ZW5kcyA0ID8gMyA6IE4gZXh0ZW5kcyAzID8gMiA6IE4gZXh0ZW5kcyAyID8gMSA6IE4gZXh0ZW5kcyAxID8gMCA6IDA7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFBhdGggYnVpbGRlcnMgKERlcHRoLWxpbWl0ZWQpID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFBhdGggY2hvIGFycmF5IOG7nyByb290L2ZpZWxkXG50eXBlIFBhdGhGb3JBcnJheTxULCBEZXB0aCBleHRlbmRzIG51bWJlcj4gPSBbRGVwdGhdIGV4dGVuZHMgWzBdID8gbmV2ZXIgOiBgWyR7bnVtYmVyfV1gIHwgKFBhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGBbJHtudW1iZXJ9XS4ke1BhdGhPZjxBcnJheUVsZW1lbnRSYXc8VD4sIERlYzxEZXB0aD4+fWApO1xuXG4vLyBQYXRoIGNobyB04burbmcgcHJvcCBLIHTDuXkga2nhu4N1IGdpw6EgdHLhu4tcbnR5cGUgUGF0aEZvclByb3A8VFByb3AsIEsgZXh0ZW5kcyBzdHJpbmcsIERlcHRoIGV4dGVuZHMgbnVtYmVyPiA9IFtEZXB0aF0gZXh0ZW5kcyBbMF1cbiAgPyBLXG4gIDogSXNBcnJheUxpa2U8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYCR7S31gIHwgYCR7S31bJHtudW1iZXJ9XWAgfCAoUGF0aE9mPEFycmF5RWxlbWVudFJhdzxUUHJvcD4sIERlYzxEZXB0aD4+IGV4dGVuZHMgbmV2ZXIgPyBuZXZlciA6IGAke0t9WyR7bnVtYmVyfV0uJHtQYXRoT2Y8QXJyYXlFbGVtZW50UmF3PFRQcm9wPiwgRGVjPERlcHRoPj59YClcbiAgICA6IElzTm9uQXJyYXlPYmplY3Q8VFByb3A+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBgJHtLfWAgfCAoUGF0aE9mPENsZWFuPFRQcm9wPiwgRGVjPERlcHRoPj4gZXh0ZW5kcyBuZXZlciA/IG5ldmVyIDogYCR7S30uJHtQYXRoT2Y8Q2xlYW48VFByb3A+LCBEZWM8RGVwdGg+Pn1gKVxuICAgICAgOiBgJHtLfWA7XG5cbi8vIFBhdGggY2hvIG9iamVjdCAobWFwIHThu6tuZyBrZXkpXG50eXBlIFBhdGhGb3JPYmplY3Q8VCwgRGVwdGggZXh0ZW5kcyBudW1iZXI+ID0ge1xuICBbSyBpbiBTdHJLZXlzPFQ+XTogUGF0aEZvclByb3A8VFtLXSwgSywgRGVwdGg+O1xufVtTdHJLZXlzPFQ+XTtcblxuLyoqID09PT09PT09PT09PT09PT09PT09PT0gUHVibGljOiBQYXRoT2YgKGh5YnJpZCwgRGVwdGggbeG6t2MgxJHhu4tuaCA2KSA9PT09PT09PT09PT09PT09PT09PT09ICoqL1xuXG5leHBvcnQgdHlwZSBQYXRoT2Y8VFJhdywgRGVwdGggZXh0ZW5kcyBudW1iZXIgPSA2PiA9XG4gIElzRW1wdHlPYmplY3Q8Q2xlYW48VFJhdz4+IGV4dGVuZHMgdHJ1ZVxuICAgID8gYW55XG4gICAgOiBJc0RPTVR5cGU8Q2xlYW48VFJhdz4+IGV4dGVuZHMgdHJ1ZVxuICAgICAgPyBhbnlcbiAgICAgIDogW0RlcHRoXSBleHRlbmRzIFswXVxuICAgICAgICA/IG5ldmVyXG4gICAgICAgIDogVW53cmFwQWxsU2lnbmFsczxDbGVhbjxUUmF3Pj4gZXh0ZW5kcyByZWFkb25seSB1bmtub3duW10gfCB1bmtub3duW11cbiAgICAgICAgICA/IFBhdGhGb3JBcnJheTxDbGVhbjxUUmF3PiwgRGVwdGg+XG4gICAgICAgICAgOiBVbndyYXBBbGxTaWduYWxzPENsZWFuPFRSYXc+PiBleHRlbmRzIG9iamVjdFxuICAgICAgICAgICAgPyBQYXRoRm9yT2JqZWN0PFVud3JhcEFsbFNpZ25hbHM8Q2xlYW48VFJhdz4+LCBEZXB0aD5cbiAgICAgICAgICAgIDogc3RyaW5nO1xuXG4vKiogPT09PT09PT09PT09PT09PT09PT09PSBSZXNvbHZlIGdpw6EgdHLhu4sgdGhlbyBwYXRoID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIEdldEludGVybmFsOiDEkWkgdGhlbyBzdHJpbmcgcGF0aCDEkeG7gyByZXNvbHZlIHR5cGUgZ2nDoSB0cuG7iyBjdeG7kWkgY8O5bmdcbi8vIFPhu60gZOG7pW5nIGRpc3RyaWJ1dGl2ZSBjb25kaXRpb25hbCB0eXBlIChUUmF3IGV4dGVuZHMgbnVsbCB8IHVuZGVmaW5lZCkgxJHhu4MgdOG7sSDEkeG7mW5nIGhhbmRsZSB1bmlvbiBjw7MgdW5kZWZpbmVkL251bGwgKHbDrSBk4bulIG9wdGlvbmFsIHByb3BzKS5cbnR5cGUgR2V0SW50ZXJuYWw8VFJhdywgUCBleHRlbmRzIHN0cmluZywgUiBleHRlbmRzIGJvb2xlYW4+ID0gVFJhdyBleHRlbmRzIG51bGwgfCB1bmRlZmluZWRcbiAgPyBUUmF3XG4gIDogLy8gW3hdLlJlc3QgKMSRw6FuaCBpbmRleCB2w6BvIHJvb3QgYXJyYXkpXG4gICAgUCBleHRlbmRzIGBbJHtpbmZlciBJfV0uJHtpbmZlciBSZXN0fWBcbiAgICA/IEkgZXh0ZW5kcyBgJHtudW1iZXJ9YFxuICAgICAgPyBHZXRJbnRlcm5hbDxBcnJheUVsZW1lbnRSYXc8VFJhdz4sIFJlc3QsIFI+XG4gICAgICA6IGFueVxuICAgIDogLy8gW3hdIChjaOG7iSBpbmRleClcbiAgICAgIFAgZXh0ZW5kcyBgWyR7aW5mZXIgSX1dYFxuICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgPyBGaW5hbGl6ZTxBcnJheUVsZW1lbnRSYXc8VFJhdz4sIFI+XG4gICAgICAgIDogYW55XG4gICAgICA6IC8vIEtbeF0uUmVzdCAoxJHDoW5oIGluZGV4IHbDoG8gZmllbGQgbeG6o25nKVxuICAgICAgICBQIGV4dGVuZHMgYCR7aW5mZXIgS31bJHtpbmZlciBJfV0uJHtpbmZlciBSZXN0fWBcbiAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICA/IEkgZXh0ZW5kcyBgJHtudW1iZXJ9YFxuICAgICAgICAgICAgPyBHZXRJbnRlcm5hbDxBcnJheUVsZW1lbnRSYXc8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10+LCBSZXN0LCBSPlxuICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICA6IGFueVxuICAgICAgICA6IC8vIEsuUmVzdCAoxJFpIHPDonUgdsOgbyBvYmplY3QpXG4gICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9LiR7aW5mZXIgUmVzdH1gXG4gICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICAgID8gSXNBcnJheUxpa2U8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10+IGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgICAgICA/IGFueSAvLyBraMO0bmcgaOG7lyB0cuG7oyBkb3QgdsOgbyBwaOG6p24gdOG7rSBt4bqjbmcga2hpIHRoaeG6v3UgaW5kZXhcbiAgICAgICAgICAgICAgOiBHZXRJbnRlcm5hbDxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+PltLXSwgUmVzdCwgUj5cbiAgICAgICAgICAgIDogYW55XG4gICAgICAgICAgOiAvLyBLWzxudW1iZXI+XSAoa+G6v3QgdGjDumMg4bufIGluZGV4KVxuICAgICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9WyR7aW5mZXIgSX1dYFxuICAgICAgICAgICAgPyBLIGV4dGVuZHMgU3RyS2V5czxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+Pj5cbiAgICAgICAgICAgICAgPyBJIGV4dGVuZHMgYCR7bnVtYmVyfWBcbiAgICAgICAgICAgICAgICA/IEZpbmFsaXplPEFycmF5RWxlbWVudFJhdzxDbGVhbjxVbndyYXBBbGxTaWduYWxzPFRSYXc+PltLXT4sIFI+XG4gICAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgIDogLy8gSyAoa+G6v3QgdGjDumMg4bufIGtleSlcbiAgICAgICAgICAgICAgUCBleHRlbmRzIGAke2luZmVyIEt9YFxuICAgICAgICAgICAgICA/IEsgZXh0ZW5kcyBTdHJLZXlzPENsZWFuPFVud3JhcEFsbFNpZ25hbHM8VFJhdz4+PlxuICAgICAgICAgICAgICAgID8gRmluYWxpemU8Q2xlYW48VW53cmFwQWxsU2lnbmFsczxUUmF3Pj5bS10sIFI+XG4gICAgICAgICAgICAgICAgOiBhbnlcbiAgICAgICAgICAgICAgOiBhbnk7XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IFB1YmxpYzogR2V0VmFsdWVBdFBhdGggJiBHZXRSZXR1cm5UeXBlID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIFJlc29sdmUga2nhu4N1IGdpw6EgdHLhu4sgdOG6oWkgcGF0aCBQLiBO4bq/dSBSPXRydWUsIGdp4buvIG5ndXnDqm4gU2lnbmFsOyBt4bq3YyDEkeG7i25oIFI9ZmFsc2Ugc+G6vSB1bndyYXAgdG/DoG4gYuG7mSBTaWduYWwuXG5leHBvcnQgdHlwZSBHZXRWYWx1ZUF0UGF0aDxUUmF3LCBQIGV4dGVuZHMgUGF0aE9mPFRSYXc+LCBSIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IFRSYXcgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gVFJhdyA6IEdldEludGVybmFsPFRSYXcsIFAsIFI+O1xuXG4vLyBLaeG7g3UgdHLhuqMgduG7gSBj4bunYSBnZXQoKSBk4buxYSB0csOqbiBkZWZhdWx0VmFsdWUgRFxuZXhwb3J0IHR5cGUgR2V0UmV0dXJuVHlwZTxPLCBQIGV4dGVuZHMgUGF0aE9mPE8+LCBLUyBleHRlbmRzIGJvb2xlYW4sIEQ+ID0gRCBleHRlbmRzIHVuZGVmaW5lZCA/IEdldFZhbHVlQXRQYXRoPE8sIFAsIEtTPiA6IEQ7XG5cbi8vIEtp4buDbSB0cmEgY8OhYyBraeG7g3UgZOG7ryBsaeG7h3UgxJHhurdjIGJp4buHdCDEkeG7gyBjaOG7iSB3cmFwIHNpZ25hbCAxIGPhuqVwXG50eXBlIElzU3BlY2lmaWNUeXBlPFQ+ID0gVCBleHRlbmRzXG4gIHwgRXZlbnRcbiAgfCBOb2RlXG4gIHwgRG9jdW1lbnRcbiAgfCBFbGVtZW50XG4gIHwgV2luZG93XG4gIHwgQ1NTU3R5bGVEZWNsYXJhdGlvblxuICB8IENTU1J1bGVcbiAgfCBDU1NTdHlsZVNoZWV0XG4gIHwgSHR0cFBhcmFtc1xuICB8IERheWpzXG4gIHwgRGF0ZVxuICB8ICgoLi4uYXJnczogYW55W10pID0+IGFueSlcbiAgfCBQcm9taXNlPGFueT5cbiAgfCBNYXA8YW55LCBhbnk+XG4gIHwgU2V0PGFueT5cbiAgfCBXZWFrTWFwPGFueSwgYW55PlxuICB8IFdlYWtTZXQ8YW55PlxuICB8IFJlZ0V4cFxuICB8IEZpbGVcbiAgfCBCbG9iXG4gIHwgRmlsZUxpc3RcbiAgfCBGb3JtRGF0YVxuICA/IHRydWVcbiAgOiBmYWxzZTtcblxuLy8gxJDGsGEga2nhu4N1IGThu68gbGnhu4d1IGLhuqV0IGvhu7MgduG7gSBk4bqhbmcgc2lnbmFsLCBO4bq/dSBQID0gdHJ1ZSDEkcawYSBj4bqjIGThu68gbGnhu4d1IHByZW1ldGl2ZV90eXBlIHbhu4EgZOG6oW5nIHNpZ25hbFxuZXhwb3J0IHR5cGUgU2lnbmFsT2Y8VCwgUCBleHRlbmRzIGJvb2xlYW4gPSB0cnVlLCBGIGV4dGVuZHMgYm9vbGVhbiA9IGZhbHNlPiA9IFQgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkXG4gID8gVFxuICA6IElzU3BlY2lmaWNUeXBlPENsZWFuPFQ+PiBleHRlbmRzIHRydWVcbiAgICA/IEYgZXh0ZW5kcyB0cnVlXG4gICAgICA/IFdyaXRhYmxlU2lnbmFsPFQ+XG4gICAgICA6IFRcbiAgICA6IENsZWFuPFQ+IGV4dGVuZHMgQXJyYXk8aW5mZXIgVT5cbiAgICAgID8gRiBleHRlbmRzIHRydWVcbiAgICAgICAgPyBXcml0YWJsZVNpZ25hbDxBcnJheTxTaWduYWxPZjxDbGVhbjxVPiwgUCwgdHJ1ZT4+PlxuICAgICAgICA6IEFycmF5PFNpZ25hbE9mPENsZWFuPFU+LCBQLCB0cnVlPj5cbiAgICAgIDogQ2xlYW48VD4gZXh0ZW5kcyBvYmplY3RcbiAgICAgICAgPyBGIGV4dGVuZHMgdHJ1ZVxuICAgICAgICAgID8gV3JpdGFibGVTaWduYWw8eyBbSyBpbiBrZXlvZiBDbGVhbjxUPl06IFNpZ25hbE9mPENsZWFuPENsZWFuPFQ+W0tdPiwgUCwgdHJ1ZT4gfT5cbiAgICAgICAgICA6IHsgW0sgaW4ga2V5b2YgQ2xlYW48VD5dOiBTaWduYWxPZjxDbGVhbjxDbGVhbjxUPltLXT4sIFAsIHRydWU+IH1cbiAgICAgICAgOiBDbGVhbjxUPiBleHRlbmRzIHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW5cbiAgICAgICAgICA/IFAgZXh0ZW5kcyB0cnVlXG4gICAgICAgICAgICA/IFdyaXRhYmxlU2lnbmFsPENsZWFuPFQ+PlxuICAgICAgICAgICAgOiBDbGVhbjxUPlxuICAgICAgICAgIDogV3JpdGFibGVTaWduYWw8Q2xlYW48VD4+O1xuXG5leHBvcnQgdHlwZSBOb25TaWduYWxPZjxUPiA9IFQgZXh0ZW5kcyBudWxsIHwgdW5kZWZpbmVkID8gVCA6IENsZWFuPFQ+IGV4dGVuZHMgQXJyYXk8aW5mZXIgVT4gPyBBcnJheTxOb25TaWduYWxPZjxDbGVhbjxVPj4+IDogQ2xlYW48VD4gZXh0ZW5kcyBvYmplY3QgPyB7IFtLIGluIGtleW9mIENsZWFuPFQ+XTogTm9uU2lnbmFsT2Y8Q2xlYW48Q2xlYW48VD5bS10+PiB9IDogQ2xlYW48VD47XG5cbi8qKiA9PT09PT09PT09PT09PT09PT09PT09IChUdeG7syBjaOG7jW4pIFbDrSBk4bulIG5oYW5oID09PT09PT09PT09PT09PT09PT09PT0gKiovXG5cbi8vIGV4cG9ydCBpbnRlcmZhY2UgSUNvbW1lbnQge1xuLy8gICBjb21tZW50cz86IFdyaXRhYmxlU2lnbmFsPElTdWJDb21tZW50Pjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJU3ViQ29tbWVudCB7XG4vLyAgIHN0b3JlPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIGRhdGE/OiBXcml0YWJsZVNpZ25hbDxBcnJheTxXcml0YWJsZVNpZ25hbDxJQ29tbWVudD4+Pjtcbi8vICAgc3BlY2lmaWNfdGVtcF9kYXRhPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj47XG4vLyAgIHBhZ2luZz86IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBjdXJzb3JzPzogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgYWZ0ZXI/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgYmVmb3JlPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICB9Pjtcbi8vICAgICBiZWZvcmU/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIGFmdGVyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBuZXh0PzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwcmV2aW91cz86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIH0+O1xuLy8gICBzdW1tYXJ5PzogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgIGNhbl9jb21tZW50PzogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj47XG4vLyAgICAgY2Fub3JkZXJfY29tbWVudD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgICAgdG90YWxfY291bnQ/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICB9Pjtcbi8vIH1cblxuLy8gdHlwZSBWX2NvbW1lbnRzX0YgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzJywgZmFsc2U+OyAvLyBJU3ViQ29tbWVudFxuLy8gdHlwZSBWX2NvbW1lbnRzX1QgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPElTdWJDb21tZW50PlxuXG4vLyB0eXBlIFZfY29tbWVudHNfc3RvcmVfRiA9IEdldFZhbHVlQXRQYXRoPElDb21tZW50LCAnY29tbWVudHMuZGF0YScsIGZhbHNlPjsgLy8gQXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+PlxuLy8gdHlwZSBWX2NvbW1lbnRzX3N0b3JlX1QgPSBHZXRWYWx1ZUF0UGF0aDxJQ29tbWVudCwgJ2NvbW1lbnRzLmRhdGEnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUNvbW1lbnQ+Pj5cblxuLy8gZXhwb3J0IGludGVyZmFjZSBUZXN0IHtcbi8vICAgc3BlY2lmaWNfcXVlcnk/OiBXcml0YWJsZVNpZ25hbDxJQXNzaWdubWVudEl0ZW1RdWVyeT47XG5cbi8vICAgZGF0YTogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUFzc2lnbm1lbnRJdGVtPj4+O1xuXG4vLyAgIGluZGV4OiBudW1iZXI7XG4vLyAgIGluZm86IHtcbi8vICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgYWdlOiBudW1iZXI7XG4vLyAgIH07XG4vLyAgIGNpdHk6IFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICBuYW1lOiBzdHJpbmc7XG4vLyAgICAgY291bnRyeTogc3RyaW5nO1xuLy8gICB9Pjtcbi8vICAgYWRkcmVzczogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgIGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgIHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyAgIH0+O1xuLy8gICBvd25lcjogQXJyYXk8c3RyaW5nPjtcbi8vICAgc3VwcG9ydDogQXJyYXk8V3JpdGFibGVTaWduYWw8c3RyaW5nPj47XG4vLyAgIGhvc3Q6IEFycmF5PHtcbi8vICAgICBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICBwb3J0OiBudW1iZXI7XG4vLyAgIH0+O1xuXG4vLyAgIGNvdW50cnk6IFdyaXRhYmxlU2lnbmFsPFxuLy8gICAgIEFycmF5PFxuLy8gICAgICAgV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICBuYW1lOiBXcml0YWJsZVNpZ25hbDx7XG4vLyAgICAgICAgICAgdmk6IHN0cmluZztcbi8vICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICB9Pjtcbi8vICAgICAgICAgY29kZTogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgIHZpOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICAgIGVuOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICB9Pjtcbi8vICAgICAgICAgZmxhZzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgICAgICAgcGhvbmVfY29kZTogc3RyaW5nO1xuLy8gICAgICAgICBjdXJyZW5jeToge1xuLy8gICAgICAgICAgIG5hbWU6IHN0cmluZztcbi8vICAgICAgICAgICBjb2RlOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICAgICAgICAgIHN5bWJvbDogV3JpdGFibGVTaWduYWw8e1xuLy8gICAgICAgICAgICAgdmk6IHN0cmluZztcbi8vICAgICAgICAgICAgIGVuOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICBjbjogV3JpdGFibGVTaWduYWw8QXJyYXk8c3RyaW5nPj47XG4vLyAgICAgICAgICAgICBqcDogV3JpdGFibGVTaWduYWw8XG4vLyAgICAgICAgICAgICAgIEFycmF5PFxuLy8gICAgICAgICAgICAgICAgIFdyaXRhYmxlU2lnbmFsPHtcbi8vICAgICAgICAgICAgICAgICAgIHZpOiBzdHJpbmc7XG4vLyAgICAgICAgICAgICAgICAgICBlbjogc3RyaW5nO1xuLy8gICAgICAgICAgICAgICAgIH0+XG4vLyAgICAgICAgICAgICAgID5cbi8vICAgICAgICAgICAgID47XG4vLyAgICAgICAgICAgfT47XG4vLyAgICAgICAgIH07XG4vLyAgICAgICB9PlxuLy8gICAgID5cbi8vICAgPjtcbi8vIH1cblxuLy8gaW50ZXJmYWNlIElBc3NpZ25tZW50SXRlbSB7XG4vLyAgIGlkOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBuYW1lOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBkZXNjcmlwdGlvbjogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgdXBkYXRlZF9hdDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgYXNzaWduZWVzPzogV3JpdGFibGVTaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SUFzc2lnbmVlPj4+O1xuLy8gfVxuXG4vLyBleHBvcnQgaW50ZXJmYWNlIElBc3NpZ25lZSB7XG4vLyAgIGFzc2lnbmVlX2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY29udmVyc2F0aW9uX2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF90aW1lPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgY3JlYXRlZF91c2VyPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgaWQ/OiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+O1xuLy8gICBub3RlPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgc3RhdHVzPzogV3JpdGFibGVTaWduYWw8bnVtYmVyPjtcbi8vICAgYXNzaWduX3RhZ19hY3Rpdml0eV9zdGF0dXM/OiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICBjb21tZW50X2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vICAgcmF0aW5nX2lkPzogV3JpdGFibGVTaWduYWw8c3RyaW5nPjtcbi8vIH1cblxuLy8gZXhwb3J0IGludGVyZmFjZSBJQXNzaWdubWVudEl0ZW1RdWVyeSB7XG4vLyAgIHBlcl9wYWdlOiBXcml0YWJsZVNpZ25hbDxudW1iZXI+O1xuLy8gICBhZnRlcl90b2tlbj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIGJlZm9yZV90b2tlbj86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHNlYXJjaD86IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47XG4vLyAgIHNlYXJjaF9pbmRleD86IFdyaXRhYmxlU2lnbmFsPG51bWJlcj47XG4vLyB9XG5cbi8vIHR5cGUgVl9pbmRleF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZGV4JywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9pbmRleF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZGV4JywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyB0eXBlIFZfaW5mb19GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8nLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBhZ2U6IG51bWJlciB9XG4vLyB0eXBlIFZfaW5mb19UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8nLCB0cnVlPjsgLy8geyBuYW1lOiBzdHJpbmc7IGFnZTogbnVtYmVyIH1cbi8vIHR5cGUgVl9pbmZvX25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdpbmZvLm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2luZm9fbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8ubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9pbmZvX2FnZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8uYWdlJywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9pbmZvX2FnZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2luZm8uYWdlJywgdHJ1ZT47IC8vIG51bWJlclxuXG4vLyAvLyBDaXR5IChzaWduYWwtd3JhcHBlZCBvYmplY3Qgd2l0aCBwbGFpbiBmaWVsZHMpXG4vLyB0eXBlIFZfY2l0eV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHknLCBmYWxzZT47IC8vIHsgbmFtZTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmcgfVxuLy8gdHlwZSBWX2NpdHlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgbmFtZTogc3RyaW5nOyBjb3VudHJ5OiBzdHJpbmcgfT5cbi8vIHR5cGUgVl9jaXR5X25hbWVfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5Lm5hbWUnLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2NpdHlfbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jaXR5X2NvdW50cnlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjaXR5LmNvdW50cnknLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX2NpdHlfY291bnRyeV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NpdHkuY291bnRyeScsIHRydWU+OyAvLyBzdHJpbmdcblxuLy8gLy8gQWRkcmVzcyAoc2lnbmFsLXdyYXBwZWQgb2JqZWN0IHdpdGggc2lnbmFsIGxlYXZlcylcbi8vIHR5cGUgVl9hZGRyZXNzX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcycsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2FkZHJlc3NfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdhZGRyZXNzJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgaXA6IFdyaXRhYmxlU2lnbmFsPHN0cmluZz47IHBvcnQ6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gfT5cbi8vIHR5cGUgVl9hZGRyZXNzX2lwX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5pcCcsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfYWRkcmVzc19pcF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MuaXAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nPlxuLy8gdHlwZSBWX2FkZHJlc3NfcG9ydF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2FkZHJlc3MucG9ydCcsIGZhbHNlPjsgLy8gbnVtYmVyXG4vLyB0eXBlIFZfYWRkcmVzc19wb3J0X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnYWRkcmVzcy5wb3J0JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPG51bWJlcj5cblxuLy8gLy8gT3duZXIgKGFycmF5IG9mIHByaW1pdGl2ZXMpXG4vLyB0eXBlIFZfb3duZXJfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdvd25lcicsIGZhbHNlPjsgLy8gc3RyaW5nW11cbi8vIHR5cGUgVl9vd25lcl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyJywgdHJ1ZT47IC8vIHN0cmluZ1tdXG4vLyB0eXBlIFZfb3duZXJfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnb3duZXJbMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX293bmVyX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ293bmVyWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyAvLyBTdXBwb3J0IChhcnJheSBvZiBzaWduYWxzKVxuLy8gdHlwZSBWX3N1cHBvcnRfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0JywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX3N1cHBvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0JywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5bXVxuLy8gdHlwZSBWX3N1cHBvcnRfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnc3VwcG9ydFswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3VwcG9ydF9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdzdXBwb3J0WzBdJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cblxuLy8gLy8gSG9zdCAoYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIG1peGVkIGxlYXZlcylcbi8vIHR5cGUgVl9ob3N0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdCcsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVtdXG4vLyB0eXBlIFZfaG9zdF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2hvc3QnLCB0cnVlPjsgLy8geyBpcDogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgcG9ydDogbnVtYmVyIH1bXVxuLy8gdHlwZSBWX2hvc3RfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXScsIGZhbHNlPjsgLy8geyBpcDogc3RyaW5nOyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2hvc3RfaWR4X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXScsIHRydWU+OyAvLyB7IGlwOiBXcml0YWJsZVNpZ25hbDxzdHJpbmc+OyBwb3J0OiBudW1iZXIgfVxuLy8gdHlwZSBWX2hvc3RfaXBfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLmlwJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9ob3N0X2lwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5pcCcsIHRydWU+OyAvLyBXcml0YWJsZVNpZ25hbDxzdHJpbmc+XG4vLyB0eXBlIFZfaG9zdF9wb3J0X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnaG9zdFswXS5wb3J0JywgZmFsc2U+OyAvLyBudW1iZXJcbi8vIHR5cGUgVl9ob3N0X3BvcnRfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdob3N0WzBdLnBvcnQnLCB0cnVlPjsgLy8gbnVtYmVyXG5cbi8vIC8vIGN1cnJlbmN5XG4vLyB0eXBlIFZfY3VycmVuY3lfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5JywgZmFsc2U+OyAvLyB7IG5hbWU6IHN0cmluZzsgY29kZTogc3RyaW5nOyBzeW1ib2w6IHsgLi4uIH0gfVxuLy8gdHlwZSBWX2N1cnJlbmN5X1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeScsIHRydWU+OyAvLyB7IG5hbWU6IHN0cmluZzsgY29kZTogV3JpdGFibGVTaWduYWw8c3RyaW5nPjsgc3ltYm9sOiBXcml0YWJsZVNpZ25hbDx7IC4uLiB9PiB9XG4vLyB0eXBlIFZfY3VycmVuY3lfbmFtZV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kubmFtZScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfY3VycmVuY3lfbmFtZV9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kubmFtZScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jdXJyZW5jeV9jb2RlX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5jb2RlJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9jdXJyZW5jeV9jb2RlX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5jb2RlJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZz5cblxuLy8gLy8gY3VycmVuY3kuc3ltYm9sXG4vLyB0eXBlIFZfc3ltYm9sX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wnLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZzsgY246IHN0cmluZ1tdOyBqcDogeyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXSB9XG4vLyB0eXBlIFZfc3ltYm9sX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nOyBjbjogV3JpdGFibGVTaWduYWw8c3RyaW5nW10+OyBqcDogV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXT4gfT5cbi8vIHR5cGUgVl9zeW1ib2xfdmlfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC52aScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX3ZpX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wudmknLCB0cnVlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2VuX0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuZW4nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9lbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmVuJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9jbl9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX3N5bWJvbF9jbl9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHN0cmluZ1tdPlxuLy8gdHlwZSBWX3N5bWJvbF9jbl9pZHhfRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5jblswXScsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2NuX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX3N5bWJvbF9qcF9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwJywgZmFsc2U+OyAvLyB7IHZpOiBzdHJpbmc7IGVuOiBzdHJpbmcgfVtdXG4vLyB0eXBlIFZfc3ltYm9sX2pwX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanAnLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8eyB2aTogc3RyaW5nOyBlbjogc3RyaW5nIH1bXT5cbi8vIHR5cGUgVl9zeW1ib2xfanBfaWR4X0YgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0nLCBmYWxzZT47IC8vIHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9XG4vLyB0eXBlIFZfc3ltYm9sX2pwX2lkeF9UID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdJywgdHJ1ZT47IC8vIFdyaXRhYmxlU2lnbmFsPHsgdmk6IHN0cmluZzsgZW46IHN0cmluZyB9PlxuLy8gdHlwZSBWX3N5bWJvbF9qcF92aV9GID0gR2V0VmFsdWVBdFBhdGg8VGVzdCwgJ2NvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmpwWzBdLnZpJywgZmFsc2U+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfdmlfVCA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS52aScsIHRydWU+OyAvLyBzdHJpbmdcbi8vIHR5cGUgVl9zeW1ib2xfanBfZW5fRiA9IEdldFZhbHVlQXRQYXRoPFRlc3QsICdjb3VudHJ5WzBdLmN1cnJlbmN5LnN5bWJvbC5qcFswXS5lbicsIGZhbHNlPjsgLy8gc3RyaW5nXG4vLyB0eXBlIFZfc3ltYm9sX2pwX2VuX1QgPSBHZXRWYWx1ZUF0UGF0aDxUZXN0LCAnY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuanBbMF0uZW4nLCB0cnVlPjsgLy8gc3RyaW5nXG5cbi8vIHR5cGUgVl9BcnJheV9zeW1ib2xfY25fRiA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuJywgZmFsc2U+OyAvLyBzdHJpbmdbXVxuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9UID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY24nLCB0cnVlPjsgLy8gV3JpdGFibGVTaWduYWw8c3RyaW5nW10+XG4vLyB0eXBlIFZfQXJyYXlfc3ltYm9sX2NuX2lkeF9GID0gR2V0VmFsdWVBdFBhdGg8QXJyYXk8VGVzdD4sICdbMF0uY291bnRyeVswXS5jdXJyZW5jeS5zeW1ib2wuY25bMF0nLCBmYWxzZT47IC8vIHN0cmluZ1xuLy8gdHlwZSBWX0FycmF5X3N5bWJvbF9jbl9pZHhfVCA9IEdldFZhbHVlQXRQYXRoPEFycmF5PFRlc3Q+LCAnWzBdLmNvdW50cnlbMF0uY3VycmVuY3kuc3ltYm9sLmNuWzBdJywgdHJ1ZT47IC8vIHN0cmluZ1xuXG4vLyB0eXBlIHBhdGhJQXNzaWdubWVudEl0ZW0gPSBQYXRoT2Y8SUFzc2lnbm1lbnRJdGVtPjtcbi8vIHR5cGUgcGF0aElBc3NpZ25tZW50SXRlbSA9IFBhdGhPZjx1bmtub3duPjsgLy8gc3RyaW5nXG5cbi8vIHR5cGUgVl9hc3NpZ25lZXNfRiA9IEdldFZhbHVlQXRQYXRoPElBc3NpZ25tZW50SXRlbSwgJ2Fzc2lnbmVlc1swXScsIGZhbHNlPjsgLy8gSUFzc2lnbmVlXG4iXX0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"libs-ui-interfaces-types.mjs","sources":["../../../../libs-ui/interfaces-types/src/event-browser.interface.ts","../../../../libs-ui/interfaces-types/src/generic-utilities-for-path-value.type.ts","../../../../libs-ui/interfaces-types/src/language-support.type.ts","../../../../libs-ui/interfaces-types/src/libs-ui-interfaces-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface IEvent extends Event, MouseEvent, IEventCustom, KeyboardEvent, ErrorEvent {\n target: IEventTarget;\n keyCode: number;\n dataTransfer?: DataTransfer;\n clipboardData?: DataTransfer;\n which: number;\n}\n\nexport interface IEventTarget extends EventTarget {\n value: any;\n selectionStart: number;\n scrollHeight: number;\n scrollTop: number;\n offsetHeight: number;\n style: any;\n files?: any;\n src?: string;\n innerHTML: any;\n textContent: string;\n parentElement: any;\n getAttribute: (key: string) => any;\n setAttribute: (key: string, value: any) => void;\n className: string;\n}\nexport interface IEventCustom {\n target: IEventTarget;\n data: any;\n keyCode?: number;\n fakeEvent?: boolean;\n which?: number;\n inputType?: 'deleteContentBackward' | 'insertText' | 'insertFromPaste' | 'insertCompositionText';\n preventDefault: () => void;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { Signal, WritableSignal } from '@angular/core';\nimport { Dayjs } from 'dayjs';\n\n/** ====================== Helpers: unwrap & shape ====================== **/\n\ntype IsEmptyObject<Obj> = [keyof Obj] extends [never] ? true : false;\n\n// Unwrap toàn bộ Signal\ntype UnwrapAllSignals<T> = T extends Signal<infer U> ? UnwrapAllSignals<U> : T;\n\n// Loại bỏ undefined | null sau khi unwrap 1 lớp Signal để soi shape\ntype Clean<T> = Exclude<UnwrapAllSignals<T>, undefined | null>;\n\n// Key dạng string\ntype StrKeys<T> = Extract<keyof T, string>;\n\n/** ====================== Array helpers ====================== **/\n\n// Lấy element type của mảng, tự làm sạch (bỏ undefined/null, unwrap Signal trước khi kiểm tra)\ntype ArrayElementRaw<T> = UnwrapAllSignals<Clean<T>> extends ReadonlyArray<infer U> ? U : UnwrapAllSignals<Clean<T>> extends (infer U)[] ? U : never;\n\n// Kiểm tra array-like sau khi unwrap toàn bộ Signal và làm sạch optional\ntype IsArrayLike<T> = UnwrapAllSignals<Clean<T>> extends readonly unknown[] ? true : UnwrapAllSignals<Clean<T>> extends unknown[] ? true : false;\n\n// Kiểm tra object không phải array sau khi unwrap toàn bộ Signal và làm sạch optional\ntype IsNonArrayObject<T> = UnwrapAllSignals<Clean<T>> extends object ? (UnwrapAllSignals<Clean<T>> extends readonly unknown[] ? false : UnwrapAllSignals<Clean<T>> extends unknown[] ? false : true) : false;\n\n/** ====================== DOM/Evt guard ====================== **/\n\ntype IsDOMType<T> = UnwrapAllSignals<T> extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet ? true : false;\n\n/** ====================== Finalize (giữ Signal nếu cần) ====================== **/\n\ntype Finalize<T, R extends boolean> = R extends true ? T : UnwrapAllSignals<T>;\n\n/** ====================== Depth limiter (hybrid, mặc định 6) ====================== **/\n\ntype Dec<N extends number> = N extends 6 ? 5 : N extends 5 ? 4 : N extends 4 ? 3 : N extends 3 ? 2 : N extends 2 ? 1 : N extends 1 ? 0 : 0;\n\n/** ====================== Path builders (Depth-limited) ====================== **/\n\n// Path cho array ở root/field\ntype PathForArray<T, Depth extends number> = [Depth] extends [0] ? never : `[${number}]` | (PathOf<ArrayElementRaw<T>, Dec<Depth>> extends never ? never : `[${number}].${PathOf<ArrayElementRaw<T>, Dec<Depth>>}`);\n\n// Path cho từng prop K tùy kiểu giá trị\ntype PathForProp<TProp, K extends string, Depth extends number> = [Depth] extends [0]\n ? K\n : IsArrayLike<TProp> extends true\n ? `${K}` | `${K}[${number}]` | (PathOf<ArrayElementRaw<TProp>, Dec<Depth>> extends never ? never : `${K}[${number}].${PathOf<ArrayElementRaw<TProp>, Dec<Depth>>}`)\n : IsNonArrayObject<TProp> extends true\n ? `${K}` | (PathOf<Clean<TProp>, Dec<Depth>> extends never ? never : `${K}.${PathOf<Clean<TProp>, Dec<Depth>>}`)\n : `${K}`;\n\n// Path cho object (map từng key)\ntype PathForObject<T, Depth extends number> = {\n [K in StrKeys<T>]: PathForProp<T[K], K, Depth>;\n}[StrKeys<T>];\n\n/** ====================== Public: PathOf (hybrid, Depth mặc định 6) ====================== **/\n\nexport type PathOf<TRaw, Depth extends number = 6> =\n IsEmptyObject<Clean<TRaw>> extends true\n ? any\n : IsDOMType<Clean<TRaw>> extends true\n ? any\n : [Depth] extends [0]\n ? never\n : UnwrapAllSignals<Clean<TRaw>> extends readonly unknown[] | unknown[]\n ? PathForArray<Clean<TRaw>, Depth>\n : UnwrapAllSignals<Clean<TRaw>> extends object\n ? PathForObject<UnwrapAllSignals<Clean<TRaw>>, Depth>\n : string;\n\n/** ====================== Resolve giá trị theo path ====================== **/\n\n// GetInternal: đi theo string path để resolve type giá trị cuối cùng\ntype GetInternal<TRaw, P extends string, R extends boolean> =\n // [x].Rest (đánh index vào root array)\n P extends `[${infer I}].${infer Rest}`\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<TRaw>, Rest, R>\n : any\n : // [x] (chỉ index)\n P extends `[${infer I}]`\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<TRaw>, R>\n : any\n : // K[x].Rest (đánh index vào field mảng)\n P extends `${infer K}[${infer I}].${infer Rest}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, Rest, R>\n : any\n : any\n : // K.Rest (đi sâu vào object)\n P extends `${infer K}.${infer Rest}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? IsArrayLike<Clean<UnwrapAllSignals<TRaw>>[K]> extends true\n ? any // không hỗ trợ dot vào phần tử mảng khi thiếu index\n : GetInternal<Clean<UnwrapAllSignals<TRaw>>[K], Rest, R>\n : any\n : // K[<number>] (kết thúc ở index)\n P extends `${infer K}[${infer I}]`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, R>\n : any\n : any\n : // K (kết thúc ở key)\n P extends `${infer K}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? Finalize<Clean<UnwrapAllSignals<TRaw>>[K], R>\n : any\n : any;\n\n/** ====================== Public: GetValueAtPath & GetReturnType ====================== **/\n\n// Resolve kiểu giá trị tại path P. Nếu R=true, giữ nguyên Signal; mặc định R=false sẽ unwrap toàn bộ Signal.\nexport type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = GetInternal<TRaw, P, R>;\n\n// Kiểu trả về của get() dựa trên defaultValue D\nexport type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> : D;\n\n// Kiểm tra các kiểu dữ liệu đặc biệt để chỉ wrap signal 1 cấp\ntype IsSpecificType<T> = T extends\n | Event\n | Node\n | Document\n | Element\n | Window\n | CSSStyleDeclaration\n | CSSRule\n | CSSStyleSheet\n | HttpParams\n | Dayjs\n | Date\n | ((...args: any[]) => any)\n | Promise<any>\n | Map<any, any>\n | Set<any>\n | WeakMap<any, any>\n | WeakSet<any>\n | RegExp\n | File\n | Blob\n | FileList\n | FormData\n ? true\n : false;\n\n// Đưa kiểu dữ liệu bất kỳ về dạng signal, Nếu P = true đưa cả dữ liệu premetive_type về dạng signal\nexport type SignalOf<T, P extends boolean = true, F extends boolean = false> = T extends null | undefined\n ? T\n : IsSpecificType<Clean<T>> extends true\n ? F extends true\n ? WritableSignal<T>\n : T\n : Clean<T> extends Array<infer U>\n ? F extends true\n ? WritableSignal<Array<SignalOf<Clean<U>, P, true>>>\n : Array<SignalOf<Clean<U>, P, true>>\n : Clean<T> extends object\n ? F extends true\n ? WritableSignal<{ [K in keyof Clean<T>]: SignalOf<Clean<Clean<T>[K]>, P, true> }>\n : { [K in keyof Clean<T>]: SignalOf<Clean<Clean<T>[K]>, P, true> }\n : Clean<T> extends string | number | boolean\n ? P extends true\n ? WritableSignal<Clean<T>>\n : Clean<T>\n : WritableSignal<Clean<T>>;\n\nexport type NonSignalOf<T> = T extends null | undefined ? T : Clean<T> extends Array<infer U> ? Array<NonSignalOf<Clean<U>>> : Clean<T> extends object ? { [K in keyof Clean<T>]: NonSignalOf<Clean<Clean<T>[K]>> } : Clean<T>;\n\n/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/\n\n// export interface IComment {\n// comments?: WritableSignal<ISubComment>;\n// }\n\n// export interface ISubComment {\n// store?: WritableSignal<Array<WritableSignal<IComment>>>;\n// data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// paging?: WritableSignal<{\n// cursors?: WritableSignal<{\n// after?: WritableSignal<string>;\n// before?: WritableSignal<string>;\n// }>;\n// before?: WritableSignal<string>;\n// after?: WritableSignal<string>;\n// next?: WritableSignal<string>;\n// previous?: WritableSignal<string>;\n// }>;\n// summary?: WritableSignal<{\n// can_comment?: WritableSignal<boolean>;\n// canorder_comment?: WritableSignal<string>;\n// total_count?: WritableSignal<number>;\n// }>;\n// }\n\n// type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment\n// type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>\n\n// type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>\n// type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>\n\n// export interface Test {\n// specific_query?: WritableSignal<IAssignmentItemQuery>;\n\n// data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;\n\n// index: number;\n// info: {\n// name: string;\n// age: number;\n// };\n// city: WritableSignal<{\n// name: string;\n// country: string;\n// }>;\n// address: WritableSignal<{\n// ip: WritableSignal<string>;\n// port: WritableSignal<number>;\n// }>;\n// owner: Array<string>;\n// support: Array<WritableSignal<string>>;\n// host: Array<{\n// ip: WritableSignal<string>;\n// port: number;\n// }>;\n\n// country: WritableSignal<\n// Array<\n// WritableSignal<{\n// name: WritableSignal<{\n// vi: string;\n// en: string;\n// }>;\n// code: WritableSignal<{\n// vi: WritableSignal<string>;\n// en: WritableSignal<string>;\n// }>;\n// flag: WritableSignal<string>;\n// phone_code: string;\n// currency: {\n// name: string;\n// code: WritableSignal<string>;\n// symbol: WritableSignal<{\n// vi: string;\n// en: string;\n// cn: WritableSignal<Array<string>>;\n// jp: WritableSignal<\n// Array<\n// WritableSignal<{\n// vi: string;\n// en: string;\n// }>\n// >\n// >;\n// }>;\n// };\n// }>\n// >\n// >;\n// }\n\n// interface IAssignmentItem {\n// id: WritableSignal<string>;\n// name: WritableSignal<string>;\n// description: WritableSignal<string>;\n// created_at: WritableSignal<string>;\n// updated_at: WritableSignal<string>;\n// assignees?: WritableSignal<Array<WritableSignal<IAssignee>>>;\n// }\n\n// export interface IAssignee {\n// assignee_id?: WritableSignal<string>;\n// conversation_id?: WritableSignal<string>;\n// created_time?: WritableSignal<string>;\n// created_user?: WritableSignal<string>;\n// id?: WritableSignal<string>;\n// note?: WritableSignal<string>;\n// status?: WritableSignal<number>;\n// assign_tag_activity_status?: WritableSignal<number>;\n// comment_id?: WritableSignal<string>;\n// rating_id?: WritableSignal<string>;\n// }\n\n// export interface IAssignmentItemQuery {\n// per_page: WritableSignal<number>;\n// after_token?: WritableSignal<string>;\n// before_token?: WritableSignal<string>;\n// search?: WritableSignal<string>;\n// search_index?: WritableSignal<number>;\n// }\n\n// type V_index_F = GetValueAtPath<Test, 'index', false>; // number\n// type V_index_T = GetValueAtPath<Test, 'index', true>; // number\n\n// type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }\n// type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }\n// type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string\n// type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string\n// type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number\n// type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number\n\n// // City (signal-wrapped object with plain fields)\n// type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }\n// type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>\n// type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string\n// type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string\n// type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string\n// type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string\n\n// // Address (signal-wrapped object with signal leaves)\n// type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }\n// type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>\n// type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string\n// type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>\n// type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number\n// type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>\n\n// // Owner (array of primitives)\n// type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]\n// type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]\n// type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string\n// type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string\n\n// // Support (array of signals)\n// type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]\n// type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]\n// type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string\n// type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>\n\n// // Host (array of objects with mixed leaves)\n// type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]\n// type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]\n// type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }\n// type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }\n// type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string\n// type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>\n// type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number\n// type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number\n\n// // currency\n// type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }\n// type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }\n// type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string\n// type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string\n// type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string\n// type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>\n\n// // currency.symbol\n// type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }\n// type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>\n// type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string\n// type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string\n// type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string\n// type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string\n// type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]\n// type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string\n// type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string\n// type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]\n// type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>\n// type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }\n// type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>\n// type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string\n// type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string\n// type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string\n// type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string\n\n// type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]\n// type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string\n// type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string\n\n// type pathIAssignmentItem = PathOf<IAssignmentItem>;\n// type pathIAssignmentItem = PathOf<unknown>; // string\n\n// type V_assignees_F = GetValueAtPath<IAssignmentItem, 'assignees[0]', false>; // IAssignee\n","export type TYPE_LANGUAGE_SUPPORT =\n | 'vi' // Tiếng Việt\n | 'en'; // Tiếng Anh\n// | \"fr\" // Tiếng Pháp\n// | \"de\" // Tiếng Đức\n// | \"es\" // Tiếng Tây Ban Nha\n// | \"zh\" // Tiếng Trung (Giản thể)\n// | \"zh-TW\" // Tiếng Trung (Phồn thể)\n// | \"ja\" // Tiếng Nhật\n// | \"ko\" // Tiếng Hàn\n// | \"ru\" // Tiếng Nga\n// | \"it\" // Tiếng Ý\n// | \"pt\" // Tiếng Bồ Đào Nha\n// | \"th\" // Tiếng Thái\n// | \"id\" // Tiếng Indonesia\n// | \"ms\" // Tiếng Malaysia\n// | \"ar\" // Tiếng Ả Rập\n// | \"hi\" // Tiếng Hindi\n// | \"bn\" // Tiếng Bengal\n// | \"tr\" // Tiếng Thổ Nhĩ Kỳ\n// | \"nl\" // Tiếng Hà Lan\n// | \"km\" // Tiếng Khmer (Campuchia)\n// | \"lo\" // Tiếng Lào\n// | \"my\" // Tiếng Miến Điện (Myanmar)\n// | \"tl\" // Tiếng Tagalog (Philippines)\n// | \"ceb\" // Tiếng Cebuano (Philippines)\n// | \"jv\" // Tiếng Java (Indonesia)\n// | \"su\"; // Tiếng Sundanese (Indonesia)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AC+KA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AC3XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;;AAEG"}
|
|
1
|
+
{"version":3,"file":"libs-ui-interfaces-types.mjs","sources":["../../../../libs-ui/interfaces-types/src/event-browser.interface.ts","../../../../libs-ui/interfaces-types/src/generic-utilities-for-path-value.type.ts","../../../../libs-ui/interfaces-types/src/language-support.type.ts","../../../../libs-ui/interfaces-types/src/libs-ui-interfaces-types.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport interface IEvent extends Event, MouseEvent, IEventCustom, KeyboardEvent, ErrorEvent {\n target: IEventTarget;\n keyCode: number;\n dataTransfer?: DataTransfer;\n clipboardData?: DataTransfer;\n which: number;\n}\n\nexport interface IEventTarget extends EventTarget {\n value: any;\n selectionStart: number;\n scrollHeight: number;\n scrollTop: number;\n offsetHeight: number;\n style: any;\n files?: any;\n src?: string;\n innerHTML: any;\n textContent: string;\n parentElement: any;\n getAttribute: (key: string) => any;\n setAttribute: (key: string, value: any) => void;\n className: string;\n}\nexport interface IEventCustom {\n target: IEventTarget;\n data: any;\n keyCode?: number;\n fakeEvent?: boolean;\n which?: number;\n inputType?: 'deleteContentBackward' | 'insertText' | 'insertFromPaste' | 'insertCompositionText';\n preventDefault: () => void;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HttpParams } from '@angular/common/http';\nimport { Signal, WritableSignal } from '@angular/core';\nimport { Dayjs } from 'dayjs';\n\n/** ====================== Helpers: unwrap & shape ====================== **/\n\ntype IsEmptyObject<Obj> = [keyof Obj] extends [never] ? true : false;\n\n// Unwrap toàn bộ Signal\ntype UnwrapAllSignals<T> = T extends Signal<infer U> ? UnwrapAllSignals<U> : T;\n\n// Loại bỏ undefined | null sau khi unwrap 1 lớp Signal để soi shape\ntype Clean<T> = Exclude<UnwrapAllSignals<T>, undefined | null>;\n\n// Key dạng string\ntype StrKeys<T> = Extract<keyof T, string>;\n\n/** ====================== Array helpers ====================== **/\n\n// Lấy element type của mảng, tự làm sạch (bỏ undefined/null, unwrap Signal trước khi kiểm tra)\ntype ArrayElementRaw<T> = UnwrapAllSignals<Clean<T>> extends ReadonlyArray<infer U> ? U : UnwrapAllSignals<Clean<T>> extends (infer U)[] ? U : never;\n\n// Kiểm tra array-like sau khi unwrap toàn bộ Signal và làm sạch optional\ntype IsArrayLike<T> = UnwrapAllSignals<Clean<T>> extends readonly unknown[] ? true : UnwrapAllSignals<Clean<T>> extends unknown[] ? true : false;\n\n// Kiểm tra object không phải array sau khi unwrap toàn bộ Signal và làm sạch optional\ntype IsNonArrayObject<T> = UnwrapAllSignals<Clean<T>> extends object ? (UnwrapAllSignals<Clean<T>> extends readonly unknown[] ? false : UnwrapAllSignals<Clean<T>> extends unknown[] ? false : true) : false;\n\n/** ====================== DOM/Evt guard ====================== **/\n\ntype IsDOMType<T> = UnwrapAllSignals<T> extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet ? true : false;\n\n/** ====================== Finalize (giữ Signal nếu cần) ====================== **/\n\ntype Finalize<T, R extends boolean> = R extends true ? T : UnwrapAllSignals<T>;\n\n/** ====================== Depth limiter (hybrid, mặc định 6) ====================== **/\n\ntype Dec<N extends number> = N extends 6 ? 5 : N extends 5 ? 4 : N extends 4 ? 3 : N extends 3 ? 2 : N extends 2 ? 1 : N extends 1 ? 0 : 0;\n\n/** ====================== Path builders (Depth-limited) ====================== **/\n\n// Path cho array ở root/field\ntype PathForArray<T, Depth extends number> = [Depth] extends [0] ? never : `[${number}]` | (PathOf<ArrayElementRaw<T>, Dec<Depth>> extends never ? never : `[${number}].${PathOf<ArrayElementRaw<T>, Dec<Depth>>}`);\n\n// Path cho từng prop K tùy kiểu giá trị\ntype PathForProp<TProp, K extends string, Depth extends number> = [Depth] extends [0]\n ? K\n : IsArrayLike<TProp> extends true\n ? `${K}` | `${K}[${number}]` | (PathOf<ArrayElementRaw<TProp>, Dec<Depth>> extends never ? never : `${K}[${number}].${PathOf<ArrayElementRaw<TProp>, Dec<Depth>>}`)\n : IsNonArrayObject<TProp> extends true\n ? `${K}` | (PathOf<Clean<TProp>, Dec<Depth>> extends never ? never : `${K}.${PathOf<Clean<TProp>, Dec<Depth>>}`)\n : `${K}`;\n\n// Path cho object (map từng key)\ntype PathForObject<T, Depth extends number> = {\n [K in StrKeys<T>]: PathForProp<T[K], K, Depth>;\n}[StrKeys<T>];\n\n/** ====================== Public: PathOf (hybrid, Depth mặc định 6) ====================== **/\n\nexport type PathOf<TRaw, Depth extends number = 6> =\n IsEmptyObject<Clean<TRaw>> extends true\n ? any\n : IsDOMType<Clean<TRaw>> extends true\n ? any\n : [Depth] extends [0]\n ? never\n : UnwrapAllSignals<Clean<TRaw>> extends readonly unknown[] | unknown[]\n ? PathForArray<Clean<TRaw>, Depth>\n : UnwrapAllSignals<Clean<TRaw>> extends object\n ? PathForObject<UnwrapAllSignals<Clean<TRaw>>, Depth>\n : string;\n\n/** ====================== Resolve giá trị theo path ====================== **/\n\n// GetInternal: đi theo string path để resolve type giá trị cuối cùng\n// Sử dụng distributive conditional type (TRaw extends null | undefined) để tự động handle union có undefined/null (ví dụ optional props).\ntype GetInternal<TRaw, P extends string, R extends boolean> = TRaw extends null | undefined\n ? TRaw\n : // [x].Rest (đánh index vào root array)\n P extends `[${infer I}].${infer Rest}`\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<TRaw>, Rest, R>\n : any\n : // [x] (chỉ index)\n P extends `[${infer I}]`\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<TRaw>, R>\n : any\n : // K[x].Rest (đánh index vào field mảng)\n P extends `${infer K}[${infer I}].${infer Rest}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? I extends `${number}`\n ? GetInternal<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, Rest, R>\n : any\n : any\n : // K.Rest (đi sâu vào object)\n P extends `${infer K}.${infer Rest}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? IsArrayLike<Clean<UnwrapAllSignals<TRaw>>[K]> extends true\n ? any // không hỗ trợ dot vào phần tử mảng khi thiếu index\n : GetInternal<Clean<UnwrapAllSignals<TRaw>>[K], Rest, R>\n : any\n : // K[<number>] (kết thúc ở index)\n P extends `${infer K}[${infer I}]`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? I extends `${number}`\n ? Finalize<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, R>\n : any\n : any\n : // K (kết thúc ở key)\n P extends `${infer K}`\n ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>>\n ? Finalize<Clean<UnwrapAllSignals<TRaw>>[K], R>\n : any\n : any;\n\n/** ====================== Public: GetValueAtPath & GetReturnType ====================== **/\n\n// Resolve kiểu giá trị tại path P. Nếu R=true, giữ nguyên Signal; mặc định R=false sẽ unwrap toàn bộ Signal.\nexport type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = TRaw extends null | undefined ? TRaw : GetInternal<TRaw, P, R>;\n\n// Kiểu trả về của get() dựa trên defaultValue D\nexport type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> : D;\n\n// Kiểm tra các kiểu dữ liệu đặc biệt để chỉ wrap signal 1 cấp\ntype IsSpecificType<T> = T extends\n | Event\n | Node\n | Document\n | Element\n | Window\n | CSSStyleDeclaration\n | CSSRule\n | CSSStyleSheet\n | HttpParams\n | Dayjs\n | Date\n | ((...args: any[]) => any)\n | Promise<any>\n | Map<any, any>\n | Set<any>\n | WeakMap<any, any>\n | WeakSet<any>\n | RegExp\n | File\n | Blob\n | FileList\n | FormData\n ? true\n : false;\n\n// Đưa kiểu dữ liệu bất kỳ về dạng signal, Nếu P = true đưa cả dữ liệu premetive_type về dạng signal\nexport type SignalOf<T, P extends boolean = true, F extends boolean = false> = T extends null | undefined\n ? T\n : IsSpecificType<Clean<T>> extends true\n ? F extends true\n ? WritableSignal<T>\n : T\n : Clean<T> extends Array<infer U>\n ? F extends true\n ? WritableSignal<Array<SignalOf<Clean<U>, P, true>>>\n : Array<SignalOf<Clean<U>, P, true>>\n : Clean<T> extends object\n ? F extends true\n ? WritableSignal<{ [K in keyof Clean<T>]: SignalOf<Clean<Clean<T>[K]>, P, true> }>\n : { [K in keyof Clean<T>]: SignalOf<Clean<Clean<T>[K]>, P, true> }\n : Clean<T> extends string | number | boolean\n ? P extends true\n ? WritableSignal<Clean<T>>\n : Clean<T>\n : WritableSignal<Clean<T>>;\n\nexport type NonSignalOf<T> = T extends null | undefined ? T : Clean<T> extends Array<infer U> ? Array<NonSignalOf<Clean<U>>> : Clean<T> extends object ? { [K in keyof Clean<T>]: NonSignalOf<Clean<Clean<T>[K]>> } : Clean<T>;\n\n/** ====================== (Tuỳ chọn) Ví dụ nhanh ====================== **/\n\n// export interface IComment {\n// comments?: WritableSignal<ISubComment>;\n// }\n\n// export interface ISubComment {\n// store?: WritableSignal<Array<WritableSignal<IComment>>>;\n// data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// specific_temp_data?: WritableSignal<Array<WritableSignal<IComment>>>;\n// paging?: WritableSignal<{\n// cursors?: WritableSignal<{\n// after?: WritableSignal<string>;\n// before?: WritableSignal<string>;\n// }>;\n// before?: WritableSignal<string>;\n// after?: WritableSignal<string>;\n// next?: WritableSignal<string>;\n// previous?: WritableSignal<string>;\n// }>;\n// summary?: WritableSignal<{\n// can_comment?: WritableSignal<boolean>;\n// canorder_comment?: WritableSignal<string>;\n// total_count?: WritableSignal<number>;\n// }>;\n// }\n\n// type V_comments_F = GetValueAtPath<IComment, 'comments', false>; // ISubComment\n// type V_comments_T = GetValueAtPath<IComment, 'comments', true>; // WritableSignal<ISubComment>\n\n// type V_comments_store_F = GetValueAtPath<IComment, 'comments.data', false>; // Array<WritableSignal<IComment>>\n// type V_comments_store_T = GetValueAtPath<IComment, 'comments.data', true>; // WritableSignal<Array<WritableSignal<IComment>>>\n\n// export interface Test {\n// specific_query?: WritableSignal<IAssignmentItemQuery>;\n\n// data: WritableSignal<Array<WritableSignal<IAssignmentItem>>>;\n\n// index: number;\n// info: {\n// name: string;\n// age: number;\n// };\n// city: WritableSignal<{\n// name: string;\n// country: string;\n// }>;\n// address: WritableSignal<{\n// ip: WritableSignal<string>;\n// port: WritableSignal<number>;\n// }>;\n// owner: Array<string>;\n// support: Array<WritableSignal<string>>;\n// host: Array<{\n// ip: WritableSignal<string>;\n// port: number;\n// }>;\n\n// country: WritableSignal<\n// Array<\n// WritableSignal<{\n// name: WritableSignal<{\n// vi: string;\n// en: string;\n// }>;\n// code: WritableSignal<{\n// vi: WritableSignal<string>;\n// en: WritableSignal<string>;\n// }>;\n// flag: WritableSignal<string>;\n// phone_code: string;\n// currency: {\n// name: string;\n// code: WritableSignal<string>;\n// symbol: WritableSignal<{\n// vi: string;\n// en: string;\n// cn: WritableSignal<Array<string>>;\n// jp: WritableSignal<\n// Array<\n// WritableSignal<{\n// vi: string;\n// en: string;\n// }>\n// >\n// >;\n// }>;\n// };\n// }>\n// >\n// >;\n// }\n\n// interface IAssignmentItem {\n// id: WritableSignal<string>;\n// name: WritableSignal<string>;\n// description: WritableSignal<string>;\n// created_at: WritableSignal<string>;\n// updated_at: WritableSignal<string>;\n// assignees?: WritableSignal<Array<WritableSignal<IAssignee>>>;\n// }\n\n// export interface IAssignee {\n// assignee_id?: WritableSignal<string>;\n// conversation_id?: WritableSignal<string>;\n// created_time?: WritableSignal<string>;\n// created_user?: WritableSignal<string>;\n// id?: WritableSignal<string>;\n// note?: WritableSignal<string>;\n// status?: WritableSignal<number>;\n// assign_tag_activity_status?: WritableSignal<number>;\n// comment_id?: WritableSignal<string>;\n// rating_id?: WritableSignal<string>;\n// }\n\n// export interface IAssignmentItemQuery {\n// per_page: WritableSignal<number>;\n// after_token?: WritableSignal<string>;\n// before_token?: WritableSignal<string>;\n// search?: WritableSignal<string>;\n// search_index?: WritableSignal<number>;\n// }\n\n// type V_index_F = GetValueAtPath<Test, 'index', false>; // number\n// type V_index_T = GetValueAtPath<Test, 'index', true>; // number\n\n// type V_info_F = GetValueAtPath<Test, 'info', false>; // { name: string; age: number }\n// type V_info_T = GetValueAtPath<Test, 'info', true>; // { name: string; age: number }\n// type V_info_name_F = GetValueAtPath<Test, 'info.name', false>; // string\n// type V_info_name_T = GetValueAtPath<Test, 'info.name', true>; // string\n// type V_info_age_F = GetValueAtPath<Test, 'info.age', false>; // number\n// type V_info_age_T = GetValueAtPath<Test, 'info.age', true>; // number\n\n// // City (signal-wrapped object with plain fields)\n// type V_city_F = GetValueAtPath<Test, 'city', false>; // { name: string; country: string }\n// type V_city_T = GetValueAtPath<Test, 'city', true>; // WritableSignal<{ name: string; country: string }>\n// type V_city_name_F = GetValueAtPath<Test, 'city.name', false>; // string\n// type V_city_name_T = GetValueAtPath<Test, 'city.name', true>; // string\n// type V_city_country_F = GetValueAtPath<Test, 'city.country', false>; // string\n// type V_city_country_T = GetValueAtPath<Test, 'city.country', true>; // string\n\n// // Address (signal-wrapped object with signal leaves)\n// type V_address_F = GetValueAtPath<Test, 'address', false>; // { ip: string; port: number }\n// type V_address_T = GetValueAtPath<Test, 'address', true>; // WritableSignal<{ ip: WritableSignal<string>; port: WritableSignal<number> }>\n// type V_address_ip_F = GetValueAtPath<Test, 'address.ip', false>; // string\n// type V_address_ip_T = GetValueAtPath<Test, 'address.ip', true>; // WritableSignal<string>\n// type V_address_port_F = GetValueAtPath<Test, 'address.port', false>; // number\n// type V_address_port_T = GetValueAtPath<Test, 'address.port', true>; // WritableSignal<number>\n\n// // Owner (array of primitives)\n// type V_owner_F = GetValueAtPath<Test, 'owner', false>; // string[]\n// type V_owner_T = GetValueAtPath<Test, 'owner', true>; // string[]\n// type V_owner_idx_F = GetValueAtPath<Test, 'owner[0]', false>; // string\n// type V_owner_idx_T = GetValueAtPath<Test, 'owner[0]', true>; // string\n\n// // Support (array of signals)\n// type V_support_F = GetValueAtPath<Test, 'support', false>; // string[]\n// type V_support_T = GetValueAtPath<Test, 'support', true>; // WritableSignal<string>[]\n// type V_support_idx_F = GetValueAtPath<Test, 'support[0]', false>; // string\n// type V_support_idx_T = GetValueAtPath<Test, 'support[0]', true>; // WritableSignal<string>\n\n// // Host (array of objects with mixed leaves)\n// type V_host_F = GetValueAtPath<Test, 'host', false>; // { ip: string; port: number }[]\n// type V_host_T = GetValueAtPath<Test, 'host', true>; // { ip: WritableSignal<string>; port: number }[]\n// type V_host_idx_F = GetValueAtPath<Test, 'host[0]', false>; // { ip: string; port: number }\n// type V_host_idx_T = GetValueAtPath<Test, 'host[0]', true>; // { ip: WritableSignal<string>; port: number }\n// type V_host_ip_F = GetValueAtPath<Test, 'host[0].ip', false>; // string\n// type V_host_ip_T = GetValueAtPath<Test, 'host[0].ip', true>; // WritableSignal<string>\n// type V_host_port_F = GetValueAtPath<Test, 'host[0].port', false>; // number\n// type V_host_port_T = GetValueAtPath<Test, 'host[0].port', true>; // number\n\n// // currency\n// type V_currency_F = GetValueAtPath<Test, 'country[0].currency', false>; // { name: string; code: string; symbol: { ... } }\n// type V_currency_T = GetValueAtPath<Test, 'country[0].currency', true>; // { name: string; code: WritableSignal<string>; symbol: WritableSignal<{ ... }> }\n// type V_currency_name_F = GetValueAtPath<Test, 'country[0].currency.name', false>; // string\n// type V_currency_name_T = GetValueAtPath<Test, 'country[0].currency.name', true>; // string\n// type V_currency_code_F = GetValueAtPath<Test, 'country[0].currency.code', false>; // string\n// type V_currency_code_T = GetValueAtPath<Test, 'country[0].currency.code', true>; // WritableSignal<string>\n\n// // currency.symbol\n// type V_symbol_F = GetValueAtPath<Test, 'country[0].currency.symbol', false>; // { vi: string; en: string; cn: string[]; jp: { vi: string; en: string }[] }\n// type V_symbol_T = GetValueAtPath<Test, 'country[0].currency.symbol', true>; // WritableSignal<{ vi: string; en: string; cn: WritableSignal<string[]>; jp: WritableSignal<{ vi: string; en: string }[]> }>\n// type V_symbol_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.vi', false>; // string\n// type V_symbol_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.vi', true>; // string\n// type V_symbol_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.en', false>; // string\n// type V_symbol_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.en', true>; // string\n// type V_symbol_cn_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn', false>; // string[]\n// type V_symbol_cn_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_symbol_cn_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', false>; // string\n// type V_symbol_cn_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.cn[0]', true>; // string\n// type V_symbol_jp_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp', false>; // { vi: string; en: string }[]\n// type V_symbol_jp_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp', true>; // WritableSignal<{ vi: string; en: string }[]>\n// type V_symbol_jp_idx_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', false>; // { vi: string; en: string }\n// type V_symbol_jp_idx_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0]', true>; // WritableSignal<{ vi: string; en: string }>\n// type V_symbol_jp_vi_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', false>; // string\n// type V_symbol_jp_vi_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].vi', true>; // string\n// type V_symbol_jp_en_F = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', false>; // string\n// type V_symbol_jp_en_T = GetValueAtPath<Test, 'country[0].currency.symbol.jp[0].en', true>; // string\n\n// type V_Array_symbol_cn_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', false>; // string[]\n// type V_Array_symbol_cn_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn', true>; // WritableSignal<string[]>\n// type V_Array_symbol_cn_idx_F = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', false>; // string\n// type V_Array_symbol_cn_idx_T = GetValueAtPath<Array<Test>, '[0].country[0].currency.symbol.cn[0]', true>; // string\n\n// type pathIAssignmentItem = PathOf<IAssignmentItem>;\n// type pathIAssignmentItem = PathOf<unknown>; // string\n\n// type V_assignees_F = GetValueAtPath<IAssignmentItem, 'assignees[0]', false>; // IAssignee\n","export type TYPE_LANGUAGE_SUPPORT =\n | 'vi' // Tiếng Việt\n | 'en'; // Tiếng Anh\n// | \"fr\" // Tiếng Pháp\n// | \"de\" // Tiếng Đức\n// | \"es\" // Tiếng Tây Ban Nha\n// | \"zh\" // Tiếng Trung (Giản thể)\n// | \"zh-TW\" // Tiếng Trung (Phồn thể)\n// | \"ja\" // Tiếng Nhật\n// | \"ko\" // Tiếng Hàn\n// | \"ru\" // Tiếng Nga\n// | \"it\" // Tiếng Ý\n// | \"pt\" // Tiếng Bồ Đào Nha\n// | \"th\" // Tiếng Thái\n// | \"id\" // Tiếng Indonesia\n// | \"ms\" // Tiếng Malaysia\n// | \"ar\" // Tiếng Ả Rập\n// | \"hi\" // Tiếng Hindi\n// | \"bn\" // Tiếng Bengal\n// | \"tr\" // Tiếng Thổ Nhĩ Kỳ\n// | \"nl\" // Tiếng Hà Lan\n// | \"km\" // Tiếng Khmer (Campuchia)\n// | \"lo\" // Tiếng Lào\n// | \"my\" // Tiếng Miến Điện (Myanmar)\n// | \"tl\" // Tiếng Tagalog (Philippines)\n// | \"ceb\" // Tiếng Cebuano (Philippines)\n// | \"jv\" // Tiếng Java (Indonesia)\n// | \"su\"; // Tiếng Sundanese (Indonesia)\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;ACiLA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AAEA;;AC7XA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC3BA;;AAEG"}
|
|
@@ -25,9 +25,9 @@ type PathForObject<T, Depth extends number> = {
|
|
|
25
25
|
/** ====================== Public: PathOf (hybrid, Depth mặc định 6) ====================== **/
|
|
26
26
|
export type PathOf<TRaw, Depth extends number = 6> = IsEmptyObject<Clean<TRaw>> extends true ? any : IsDOMType<Clean<TRaw>> extends true ? any : [Depth] extends [0] ? never : UnwrapAllSignals<Clean<TRaw>> extends readonly unknown[] | unknown[] ? PathForArray<Clean<TRaw>, Depth> : UnwrapAllSignals<Clean<TRaw>> extends object ? PathForObject<UnwrapAllSignals<Clean<TRaw>>, Depth> : string;
|
|
27
27
|
/** ====================== Resolve giá trị theo path ====================== **/
|
|
28
|
-
type GetInternal<TRaw, P extends string, R extends boolean> = P extends `[${infer I}].${infer Rest}` ? I extends `${number}` ? GetInternal<ArrayElementRaw<TRaw>, Rest, R> : any : P extends `[${infer I}]` ? I extends `${number}` ? Finalize<ArrayElementRaw<TRaw>, R> : any : P extends `${infer K}[${infer I}].${infer Rest}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? I extends `${number}` ? GetInternal<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, Rest, R> : any : any : P extends `${infer K}.${infer Rest}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? IsArrayLike<Clean<UnwrapAllSignals<TRaw>>[K]> extends true ? any : GetInternal<Clean<UnwrapAllSignals<TRaw>>[K], Rest, R> : any : P extends `${infer K}[${infer I}]` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? I extends `${number}` ? Finalize<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, R> : any : any : P extends `${infer K}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? Finalize<Clean<UnwrapAllSignals<TRaw>>[K], R> : any : any;
|
|
28
|
+
type GetInternal<TRaw, P extends string, R extends boolean> = TRaw extends null | undefined ? TRaw : P extends `[${infer I}].${infer Rest}` ? I extends `${number}` ? GetInternal<ArrayElementRaw<TRaw>, Rest, R> : any : P extends `[${infer I}]` ? I extends `${number}` ? Finalize<ArrayElementRaw<TRaw>, R> : any : P extends `${infer K}[${infer I}].${infer Rest}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? I extends `${number}` ? GetInternal<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, Rest, R> : any : any : P extends `${infer K}.${infer Rest}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? IsArrayLike<Clean<UnwrapAllSignals<TRaw>>[K]> extends true ? any : GetInternal<Clean<UnwrapAllSignals<TRaw>>[K], Rest, R> : any : P extends `${infer K}[${infer I}]` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? I extends `${number}` ? Finalize<ArrayElementRaw<Clean<UnwrapAllSignals<TRaw>>[K]>, R> : any : any : P extends `${infer K}` ? K extends StrKeys<Clean<UnwrapAllSignals<TRaw>>> ? Finalize<Clean<UnwrapAllSignals<TRaw>>[K], R> : any : any;
|
|
29
29
|
/** ====================== Public: GetValueAtPath & GetReturnType ====================== **/
|
|
30
|
-
export type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = GetInternal<TRaw, P, R>;
|
|
30
|
+
export type GetValueAtPath<TRaw, P extends PathOf<TRaw>, R extends boolean = false> = TRaw extends null | undefined ? TRaw : GetInternal<TRaw, P, R>;
|
|
31
31
|
export type GetReturnType<O, P extends PathOf<O>, KS extends boolean, D> = D extends undefined ? GetValueAtPath<O, P, KS> : D;
|
|
32
32
|
type IsSpecificType<T> = T extends Event | Node | Document | Element | Window | CSSStyleDeclaration | CSSRule | CSSStyleSheet | HttpParams | Dayjs | Date | ((...args: any[]) => any) | Promise<any> | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | RegExp | File | Blob | FileList | FormData ? true : false;
|
|
33
33
|
export type SignalOf<T, P extends boolean = true, F extends boolean = false> = T extends null | undefined ? T : IsSpecificType<Clean<T>> extends true ? F extends true ? WritableSignal<T> : T : Clean<T> extends Array<infer U> ? F extends true ? WritableSignal<Array<SignalOf<Clean<U>, P, true>>> : Array<SignalOf<Clean<U>, P, true>> : Clean<T> extends object ? F extends true ? WritableSignal<{
|