israeli-bank-scrapers-core 6.3.0 → 6.3.1
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.
package/README.md
CHANGED
|
@@ -178,6 +178,13 @@ const scrapeResult = await scraper.scrape({ username: 'vr29485', password: 'some
|
|
|
178
178
|
await browser.close();
|
|
179
179
|
```
|
|
180
180
|
|
|
181
|
+
### OptIn Features
|
|
182
|
+
|
|
183
|
+
Some scrapers support opt-in features that can be enabled by passing the `optInFeatures` option when creating the scraper.
|
|
184
|
+
Opt in features are usually used for breaking changes that are not enabled by default to avoid breaking existing users.
|
|
185
|
+
|
|
186
|
+
See the [OptInFeatures](https://github.com/eshaham/israeli-bank-scrapers/blob/master/src/scrapers/interface.ts#:~:text=export-,type%20OptInFeatures) interface for available features.
|
|
187
|
+
|
|
181
188
|
## Two-Factor Authentication Scrapers
|
|
182
189
|
|
|
183
190
|
Some companies require two-factor authentication, and as such the scraper cannot be fully automated. When using the relevant scrapers, you have two options:
|
|
@@ -32,6 +32,7 @@ export type ScraperCredentials = {
|
|
|
32
32
|
} | {
|
|
33
33
|
otpLongTermToken: string;
|
|
34
34
|
}));
|
|
35
|
+
export type OptInFeatures = 'mizrahi:pendingIfNoIdentifier' | 'mizrahi:pendingIfHasGenericDescription' | 'mizrahi:pendingIfTodayTransaction';
|
|
35
36
|
export interface FutureDebit {
|
|
36
37
|
amount: number;
|
|
37
38
|
amountCurrency: string;
|
|
@@ -143,6 +144,10 @@ export type ScraperOptions = ScraperBrowserOptions & {
|
|
|
143
144
|
* The number of times to retry the navigation in case of a failure (default 0)
|
|
144
145
|
*/
|
|
145
146
|
navigationRetryCount?: number;
|
|
147
|
+
/**
|
|
148
|
+
* Opt-in features for the scrapers, allowing safe rollout of new breaking changes.
|
|
149
|
+
*/
|
|
150
|
+
optInFeatures?: Array<OptInFeatures>;
|
|
146
151
|
};
|
|
147
152
|
export interface OutputDataOptions {
|
|
148
153
|
/**
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IHR5cGUgQ29tcGFueVR5cGVzLCB0eXBlIFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHR5cGUgRXJyb3JSZXN1bHQsIHR5cGUgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFRPRE86IFJlbW92ZSB0aGlzIHR5cGUgd2hlbiB0aGUgc2NyYXBlciAnZmFjdG9yeScgd2lsbCByZXR1cm4gY29uY3JldGUgc2NyYXBlciB0eXBlc1xuLy8gSW5zdGVhZCBvZiBhIGdlbmVyaWMgaW50ZXJmYWNlICh3aGljaCBpbiB0dXJuIHVzZXMgdGhpcyB0eXBlKVxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID1cbiAgfCB7IHVzZXJDb2RlOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgbmF0aW9uYWxJRDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCAoeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gICAgICB8IHtcbiAgICAgICAgICBvdHBDb2RlUmV0cmlldmVyOiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG4gICAgICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSk7XG5cbmV4cG9ydCB0eXBlIE9wdEluRmVhdHVyZXMgPVxuICB8ICdtaXpyYWhpOnBlbmRpbmdJZk5vSWRlbnRpZmllcidcbiAgfCAnbWl6cmFoaTpwZW5kaW5nSWZIYXNHZW5lcmljRGVzY3JpcHRpb24nXG4gIHwgJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnV0dXJlRGViaXQge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgYW1vdW50Q3VycmVuY3k6IHN0cmluZztcbiAgY2hhcmdlRGF0ZT86IHN0cmluZztcbiAgYmFua0FjY291bnROdW1iZXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGV4dGVybmFsbHkgY3JlYXRlZCBicm93c2VyIGluc3RhbmNlLlxuICAgKiB5b3UgY2FuIGdldCBhIGJyb3dzZXIgZGlyZWN0bHkgZnJvbSBwdXBwZXRlZXIgdmlhIGBwdXBwZXRlZXIubGF1bmNoKClgXG4gICAqXG4gICAqIE5vdGU6IFRoZSBicm93c2VyIHdpbGwgYmUgY2xvc2VkIGJ5IHRoZSBsaWJyYXJ5IGFmdGVyIHRoZSBzY3JhcGVyIGZpbmlzaGVzIHVubGVzcyBgc2tpcENsb3NlQnJvd3NlcmAgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIGJyb3dzZXI6IEJyb3dzZXI7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBicm93c2VyIHdpbGwgbm90IGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlc1xuICAgKi9cbiAgc2tpcENsb3NlQnJvd3Nlcj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IG1hbmFnZWQgYnJvd3NlciBjb250ZXh0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIG1hbmFnZSB0aGUgYnJvd3NlclxuICAgKi9cbiAgYnJvd3NlckNvbnRleHQ6IEJyb3dzZXJDb250ZXh0O1xufVxuXG5pbnRlcmZhY2UgRGVmYXVsdEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIHNob3dzIHRoZSBicm93c2VyIHdoaWxlIHNjcmFwaW5nLCBnb29kIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQgZmFsc2UpXG4gICAqL1xuICBzaG93QnJvd3Nlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByb3ZpZGUgYSBwYXRjaCB0byBsb2NhbCBjaHJvbWl1bSB0byBiZSB1c2VkIGJ5IHB1cHBldGVlci4gUmVsZXZhbnQgd2hlbiB1c2luZ1xuICAgKiBgaXNyYWVsaS1iYW5rLXNjcmFwZXJzLWNvcmVgIGxpYnJhcnlcbiAgICovXG4gIGV4ZWN1dGFibGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBicm93c2VyIGluc3RhbmNlLiBUaGUgbGlzdCBvZiBmbGFncyBjYW4gYmUgZm91bmQgaW5cbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL0NvbW1hbmRfTGluZV9PcHRpb25zXG4gICAqIGh0dHBzOi8vcGV0ZXIuc2gvZXhwZXJpbWVudHMvY2hyb21pdW0tY29tbWFuZC1saW5lLXN3aXRjaGVzL1xuICAgKi9cbiAgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG5hdmlnYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMsIHBhc3MgMCB0byBkaXNhYmxlIHRpbWVvdXQuXG4gICAqIEBkZWZhdWx0IDMwMDAwXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIGJyb3dzZXIgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWRcbiAgICpcbiAgICogQHBhcmFtIGJyb3dzZXJcbiAgICovXG4gIHByZXBhcmVCcm93c2VyPzogKGJyb3dzZXI6IEJyb3dzZXIpID0+IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgU2NyYXBlckJyb3dzZXJPcHRpb25zID0gRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB8IEV4dGVybmFsQnJvd3NlckNvbnRleHRPcHRpb25zIHwgRGVmYXVsdEJyb3dzZXJPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBTY3JhcGVyT3B0aW9ucyA9IFNjcmFwZXJCcm93c2VyT3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wYW55IHlvdSB3YW50IHRvIHNjcmFwZVxuICAgKi9cbiAgY29tcGFueUlkOiBDb21wYW55VHlwZXM7XG5cbiAgLyoqXG4gICAqIGluY2x1ZGUgbW9yZSBkZWJ1ZyBpbmZvIGFib3V0IGluIHRoZSBvdXRwdXRcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgZGF0ZSB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZnJvbSAoY2FuJ3QgYmUgYmVmb3JlIHRoZSBtaW5pbXVtIGFsbG93ZWQgdGltZSBkaWZmZXJlbmNlIGZvciB0aGUgc2NyYXBlcilcbiAgICovXG4gIHN0YXJ0RGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogc2NyYXBlIHRyYW5zYWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgWCBtb250aHMgaW4gdGhlIGZ1dHVyZVxuICAgKi9cbiAgZnV0dXJlTW9udGhzVG9TY3JhcGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGlmIHNldCB0byB0cnVlLCBhbGwgaW5zdGFsbG1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgY29tYmluZSBpbnRvIHRoZSBmaXJzdCBvbmVcbiAgICovXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIHBhZ2UgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlXG4gICAqL1xuICBwcmVwYXJlUGFnZT86IChwYWdlOiBQYWdlKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHN0b3JlIGEgc2NyZWVuc2hvdCBpZiBmYWlsZWQgdG8gc2NyYXBlLiBVc2VkIGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgKi9cbiAgc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgd2lsbCBzZXQgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIG9mIHB1cHBldGVlcidzIGBwYWdlLnNldERlZmF1bHRUaW1lb3V0YC5cbiAgICovXG4gIGRlZmF1bHRUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBtYW5pcHVsYXRpb24gb2Ygb3V0cHV0IGRhdGFcbiAgICovXG4gIG91dHB1dERhdGE/OiBPdXRwdXREYXRhT3B0aW9ucztcblxuICAvKipcbiAgICogUGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbiBmb3IgZWFjaCB0cmFuc2FjdGlvbiB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiAoTGlrZSBjYXRlZ29yeSkgYWJvdXQgaXQuXG4gICAqIFBsZWFzZSBub3RlOiBJdCB3aWxsIHRha2UgbW9yZSB0aW1lIHRvIGZpbmlzaCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRqdXN0IHRoZSB2aWV3cG9ydCBzaXplIG9mIHRoZSBicm93c2VyIHBhZ2UuXG4gICAqIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHZpZXdwb3J0IHNpemUgb2YgMTAyNHg3Njggd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgdmlld3BvcnRTaXplPzoge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgdGhlIG5hdmlnYXRpb24gaW4gY2FzZSBvZiBhIGZhaWx1cmUgKGRlZmF1bHQgMClcbiAgICovXG4gIG5hdmlnYXRpb25SZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHQtaW4gZmVhdHVyZXMgZm9yIHRoZSBzY3JhcGVycywgYWxsb3dpbmcgc2FmZSByb2xsb3V0IG9mIG5ldyBicmVha2luZyBjaGFuZ2VzLlxuICAgKi9cbiAgb3B0SW5GZWF0dXJlcz86IEFycmF5PE9wdEluRmVhdHVyZXM+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBpZiB0cnVlLCB0aGUgcmVzdWx0IHdvdWxkbid0IGJlIGZpbHRlcmVkIG91dCBieSBkYXRlLCBhbmQgeW91IHdpbGwgcmV0dXJuIHVuZmlsdGVyZWQgc2NyYXBwZWQgZGF0YS5cbiAgICovXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlclNjcmFwaW5nUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgYWNjb3VudHM/OiBUcmFuc2FjdGlvbnNBY2NvdW50W107XG4gIGZ1dHVyZURlYml0cz86IEZ1dHVyZURlYml0W107XG4gIGVycm9yVHlwZT86IFNjcmFwZXJFcnJvclR5cGVzO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7IC8vIG9ubHkgb24gc3VjY2Vzcz1mYWxzZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXI8VENyZWRlbnRpYWxzIGV4dGVuZHMgU2NyYXBlckNyZWRlbnRpYWxzPiB7XG4gIHNjcmFwZShjcmVkZW50aWFsczogVENyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+O1xuICBvblByb2dyZXNzKGZ1bmM6IChjb21wYW55SWQ6IENvbXBhbnlUeXBlcywgcGF5bG9hZDogeyB0eXBlOiBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9KSA9PiB2b2lkKTogdm9pZDtcbiAgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PjtcbiAgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0Pjtcbn1cblxuZXhwb3J0IHR5cGUgU2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQgPVxuICB8IEVycm9yUmVzdWx0XG4gIHwge1xuICAgICAgc3VjY2VzczogdHJ1ZTtcbiAgICAgIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyTG9naW5SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2VcbiAgcGVyc2lzdGVudE90cFRva2VuPzogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
|
package/lib/scrapers/mizrahi.js
CHANGED
|
@@ -38,6 +38,7 @@ const accountDropDownItemSelector = '#AccountPicker .item';
|
|
|
38
38
|
const pendingTrxIdentifierId = '#ctl00_ContentPlaceHolder2_panel1';
|
|
39
39
|
const checkingAccountTabHebrewName = 'עובר ושב';
|
|
40
40
|
const checkingAccountTabEnglishName = 'Checking Account';
|
|
41
|
+
const genericDescriptions = ['העברת יומן לבנק זר מסניף זר'];
|
|
41
42
|
function createLoginFields(credentials) {
|
|
42
43
|
return [{
|
|
43
44
|
selector: usernameSelector,
|
|
@@ -118,7 +119,7 @@ function createHeadersFromRequest(request) {
|
|
|
118
119
|
'Content-Type': request.headers()['content-type']
|
|
119
120
|
};
|
|
120
121
|
}
|
|
121
|
-
async function convertTransactions(txns, getMoreDetails) {
|
|
122
|
+
async function convertTransactions(txns, getMoreDetails, pendingIfTodayTransaction = false) {
|
|
122
123
|
return Promise.all(txns.map(async row => {
|
|
123
124
|
const moreDetails = await getMoreDetails(row);
|
|
124
125
|
const txnDate = (0, _moment.default)(row.MC02PeulaTaaEZ, _moment.default.HTML5_FMT.DATETIME_LOCAL_SECONDS).toISOString();
|
|
@@ -132,7 +133,7 @@ async function convertTransactions(txns, getMoreDetails) {
|
|
|
132
133
|
chargedAmount: row.MC02SchumEZ,
|
|
133
134
|
description: row.MC02TnuaTeurEZ,
|
|
134
135
|
memo: moreDetails?.memo,
|
|
135
|
-
status: _transactions.TransactionStatuses.Completed
|
|
136
|
+
status: pendingIfTodayTransaction && row.IsTodayTransaction ? _transactions.TransactionStatuses.Pending : _transactions.TransactionStatuses.Completed
|
|
136
137
|
};
|
|
137
138
|
}));
|
|
138
139
|
}
|
|
@@ -232,7 +233,10 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
232
233
|
const oshTxn = await convertTransactions(relevantRows, this.options.additionalTransactionInformation ? row => getExtraTransactionDetails(this.page, row, apiHeaders) : () => Promise.resolve({
|
|
233
234
|
entries: {},
|
|
234
235
|
memo: undefined
|
|
235
|
-
}));
|
|
236
|
+
}), this.options.optInFeatures?.includes('mizrahi:pendingIfTodayTransaction'));
|
|
237
|
+
oshTxn.filter(txn => this.shouldMarkAsPending(txn)).forEach(txn => {
|
|
238
|
+
txn.status = _transactions.TransactionStatuses.Pending;
|
|
239
|
+
});
|
|
236
240
|
|
|
237
241
|
// workaround for a bug which the bank's API returns transactions before the requested start date
|
|
238
242
|
const startMoment = getStartMoment(this.options.startDate);
|
|
@@ -245,6 +249,17 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
245
249
|
balance: +response.body.fields?.Yitra
|
|
246
250
|
};
|
|
247
251
|
}
|
|
252
|
+
shouldMarkAsPending(txn) {
|
|
253
|
+
if (this.options.optInFeatures?.includes('mizrahi:pendingIfNoIdentifier') && !txn.identifier) {
|
|
254
|
+
debug(`Marking transaction '${txn.description}' as pending due to no identifier.`);
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
if (this.options.optInFeatures?.includes('mizrahi:pendingIfHasGenericDescription') && genericDescriptions.includes(txn.description)) {
|
|
258
|
+
debug(`Marking transaction '${txn.description}' as pending due to generic description.`);
|
|
259
|
+
return true;
|
|
260
|
+
}
|
|
261
|
+
return false;
|
|
262
|
+
}
|
|
248
263
|
}
|
|
249
264
|
var _default = exports.default = MizrahiScraper;
|
|
250
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImlzTG9nZ2VkSW4iLCJvcHRpb25zIiwicGFnZSIsIm9zaFhQYXRoIiwib3NoVGFiIiwiJCQiLCJsZW5ndGgiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCIkIiwiQ2hhbmdlUGFzc3dvcmQiLCJnZXRTdGFydE1vbWVudCIsIm9wdGlvbnNTdGFydERhdGUiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJtb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsImdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzIiwiaXRlbSIsImFwaUhlYWRlcnMiLCJNQzAyU2hvd0RldGFpbHNFWiIsInRhclBldWxhIiwiTUMwMlBldWxhVGFhRVoiLCJ0YXJFcmVjaCIsIk1DMDJFcmVoVGFhRVoiLCJwYXJhbXMiLCJpbktvZEdvcmVtIiwiTUMwMktvZEdvcmVtRVoiLCJpbkFzbWFjaHRhIiwiTUMwMkFzbWFodGFNZWtvcml0RVoiLCJpblNjaHVtIiwiTUMwMlNjaHVtRVoiLCJpbk5ha3Zhbml0IiwiaW5TdWdUbnVhIiwiTUMwMlN1Z1RudWFLYXNwaXRFWiIsImluQWdpZCIsIk1DMDJBZ2lkRVoiLCJpblRhclBldWxhRm9ybWF0dGVkIiwiZm9ybWF0IiwiaW5UYXJFcmVjaEZvcm1hdHRlZCIsInllYXIiLCJpbktvZE5vc2UiLCJNQzAyU2VpZk1hcmFsRVoiLCJpbktvZFRhdE5vc2UiLCJNQzAyTm9zZU1hcmFsRVoiLCJpblRyYW5zYWN0aW9uTnVtYmVyIiwiVHJhbnNhY3Rpb25OdW1iZXIiLCJyZXNwb25zZSIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJkZXRhaWxzIiwiYm9keSIsImZpZWxkcyIsIlJlY29yZHMiLCJGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJlbnRyaWVzIiwibWFwIiwicmVjb3JkIiwiTGFiZWwiLCJ0cmltIiwiVmFsdWUiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsIm1lbW8iLCJmaWx0ZXIiLCJsYWJlbCIsInNvbWUiLCJrZXkiLCJzdGFydHNXaXRoIiwiam9pbiIsImVycm9yIiwidW5kZWZpbmVkIiwiY3JlYXRlRGF0YUZyb21SZXF1ZXN0IiwicmVxdWVzdCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwb3N0RGF0YSIsImluRnJvbURhdGUiLCJpblRvRGF0ZSIsInRhYmxlIiwibWF4Um93IiwiY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0IiwibWl6cmFoaXhzcmZ0b2tlbiIsImhlYWRlcnMiLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsImdldE1vcmVEZXRhaWxzIiwiUHJvbWlzZSIsImFsbCIsInJvdyIsIm1vcmVEZXRhaWxzIiwidHhuRGF0ZSIsIkhUTUw1X0ZNVCIsIkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMiLCJ0b0lTT1N0cmluZyIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiaWRlbnRpZmllciIsInBhcnNlSW50IiwiZGF0ZSIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJNQzAyVG51YVRldXJFWiIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInR4biIsIlBlbmRpbmciLCJwb3N0TG9naW4iLCJyYWNlIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwid2FpdEZvclVybCIsIk1penJhaGlTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiY2hlY2tSZWFkaW5lc3MiLCJ3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsIiRldmFsIiwiZWwiLCJjbGljayIsIm51bU9mQWNjb3VudHMiLCJyZXN1bHRzIiwiaSIsInB1c2giLCJmZXRjaEFjY291bnQiLCJzdWNjZXNzIiwiYWNjb3VudHMiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkdlbmVyaWMiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlIiwiZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucyIsImZyYW1lIiwid2FpdFVudGlsSWZyYW1lRm91bmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJpc1BlbmRpbmciLCJ0aGVuIiwiY2F0Y2giLCJ3YWl0Rm9yU2VsZWN0b3IiLCJhY2NvdW50TnVtYmVyRWxlbWVudCIsImFjY291bnROdW1iZXJIYW5kbGUiLCJnZXRQcm9wZXJ0eSIsImFjY291bnROdW1iZXIiLCJqc29uVmFsdWUiLCJFcnJvciIsImFueSIsIndhaXRGb3JSZXF1ZXN0IiwiaGVhZGVyIiwibWVzc2FnZXMiLCJ0ZXh0IiwicmVsZXZhbnRSb3dzIiwicm93cyIsIlJlY1R5cGVTcGVjaWZpZWQiLCJvc2hUeG4iLCJhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsInJlc29sdmUiLCJzdGFydE1vbWVudCIsIm9zaFR4bkFmdGVyU3RhcnREYXRlIiwiaXNTYW1lT3JBZnRlciIsImFsbFR4biIsImNvbmNhdCIsImJhbGFuY2UiLCJZaXRyYSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9taXpyYWhpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgRnJhbWUsIHR5cGUgSFRUUFJlcXVlc3QsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBwYWdlRXZhbEFsbCxcbiAgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICB3YWl0VW50aWxJZnJhbWVGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgd2FpdEZvclVybCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWl6cmFoaScpO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgUmVjVHlwZVNwZWNpZmllZDogYm9vbGVhbjtcbiAgTUMwMlBldWxhVGFhRVo6IHN0cmluZztcbiAgTUMwMlNjaHVtRVo6IG51bWJlcjtcbiAgTUMwMkFzbWFodGFNZWtvcml0RVo6IHN0cmluZztcbiAgTUMwMlRudWFUZXVyRVo6IHN0cmluZztcbiAgTUMwMkVyZWhUYWFFWjogc3RyaW5nO1xuICBNQzAyU2hvd0RldGFpbHNFWj86IHN0cmluZztcbiAgTUMwMktvZEdvcmVtRVo6IGFueTtcbiAgTUMwMlN1Z1RudWFLYXNwaXRFWjogYW55O1xuICBNQzAyQWdpZEVaOiBhbnk7XG4gIE1DMDJTZWlmTWFyYWxFWjogYW55O1xuICBNQzAyTm9zZU1hcmFsRVo6IGFueTtcbiAgVHJhbnNhY3Rpb25OdW1iZXI6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICBoZWFkZXI6IHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiB7IHRleHQ6IHN0cmluZyB9W107XG4gIH07XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFlpdHJhOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxudHlwZSBNb3JlRGV0YWlsc1Jlc3BvbnNlID0ge1xuICBib2R5OiB7XG4gICAgZmllbGRzOiBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZWNvcmRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZpZWxkczogQXJyYXk8e1xuICAgICAgICAgICAgICAgIExhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgfT47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG4gIH07XG59O1xuXG50eXBlIE1vcmVEZXRhaWxzID0ge1xuICBlbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBCQVNFX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3Lm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFQlNJVEVfVVJMfS9sb2dpbi9pbmRleC5odG1sIy9hdXRoLXBhZ2UtaGVgO1xuY29uc3QgQkFTRV9BUFBfVVJMID0gJ2h0dHBzOi8vbXRvLm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBBRlRFUl9MT0dJTl9CQVNFX1VSTCA9IC9odHRwczpcXC9cXC9tdG9cXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvT25saW5lQXBwXFwvLiovO1xuY29uc3QgT1NIX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1NYWluJztcbmNvbnN0IFRSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L3Jvb3QtbWFpbi1vc2gtcDQyOE5ldyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTID0gW1xuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZVBpbG90L2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbl07XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtcDQyMCc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUgPSAncDQyMC5hc3B4JztcbmNvbnN0IE1PUkVfREVUQUlMU19VUkwgPSBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvT1NIL2dldE1haGVyQmVydXJpbVNNRmA7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL2luZGV4XFwuaHRtbCNcXC9jaGFuZ2UtcGFzcy87XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE1BWF9ST1dTX1BFUl9SRVFVRVNUID0gMTAwMDAwMDAwMDA7XG5cbmNvbnN0IHVzZXJuYW1lU2VsZWN0b3IgPSAnI3VzZXJOdW1iZXJEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkRGVza3RvcEhlYic7XG5jb25zdCBzdWJtaXRCdXR0b25TZWxlY3RvciA9ICdidXR0b24uYnRuLmJ0bi1wcmltYXJ5JztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0xvZ2dlZEluKG9wdGlvbnM6IHsgcGFnZT86IFBhZ2UgfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkge1xuICBpZiAoIW9wdGlvbnM/LnBhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb3NoWFBhdGggPSBgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWA7XG4gIGNvbnN0IG9zaFRhYiA9IGF3YWl0IG9wdGlvbnMucGFnZS4kJChgeHBhdGgke29zaFhQYXRofWApO1xuICByZXR1cm4gb3NoVGFiLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBpc0xvZ2dlZEluXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcGFnZTogUGFnZSxcbiAgaXRlbTogU2NyYXBlZFRyYW5zYWN0aW9uLFxuICBhcGlIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUHJvbWlzZTxNb3JlRGV0YWlscz4ge1xuICB0cnkge1xuICAgIGRlYnVnKCdnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyBmb3IgaXRlbTonLCBpdGVtKTtcbiAgICBpZiAoaXRlbS5NQzAyU2hvd0RldGFpbHNFWiA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB0YXJQZXVsYSA9IG1vbWVudChpdGVtLk1DMDJQZXVsYVRhYUVaKTtcbiAgICAgIGNvbnN0IHRhckVyZWNoID0gbW9tZW50KGl0ZW0uTUMwMkVyZWhUYWFFWik7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgaW5Lb2RHb3JlbTogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5Bc21hY2h0YTogaXRlbS5NQzAyQXNtYWh0YU1la29yaXRFWixcbiAgICAgICAgaW5TY2h1bTogaXRlbS5NQzAyU2NodW1FWixcbiAgICAgICAgaW5OYWt2YW5pdDogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5TdWdUbnVhOiBpdGVtLk1DMDJTdWdUbnVhS2FzcGl0RVosXG4gICAgICAgIGluQWdpZDogaXRlbS5NQzAyQWdpZEVaLFxuICAgICAgICBpblRhclBldWxhRm9ybWF0dGVkOiB0YXJQZXVsYS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpblRhckVyZWNoRm9ybWF0dGVkOiAodGFyRXJlY2gueWVhcigpID4gMjAwMCA/IHRhckVyZWNoIDogdGFyUGV1bGEpLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluS29kTm9zZTogaXRlbS5NQzAyU2VpZk1hcmFsRVosXG4gICAgICAgIGluS29kVGF0Tm9zZTogaXRlbS5NQzAyTm9zZU1hcmFsRVosXG4gICAgICAgIGluVHJhbnNhY3Rpb25OdW1iZXI6IGl0ZW0uVHJhbnNhY3Rpb25OdW1iZXIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8TW9yZURldGFpbHNSZXNwb25zZT4ocGFnZSwgTU9SRV9ERVRBSUxTX1VSTCwgcGFyYW1zLCBhcGlIZWFkZXJzKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSByZXNwb25zZT8uYm9keS5maWVsZHM/LlswXT8uWzBdPy5SZWNvcmRzPy5bMF0uRmllbGRzO1xuICAgICAgZGVidWcoJ2ZldGNoIGRldGFpbHMgZm9yJywgcGFyYW1zLCAnZGV0YWlsczonLCBkZXRhaWxzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbHMpICYmIGRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGV0YWlscy5tYXAocmVjb3JkID0+IFtyZWNvcmQuTGFiZWwudHJpbSgpLCByZWNvcmQuVmFsdWUudHJpbSgpXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50cmllczogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIG1lbW86IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKFtsYWJlbF0pID0+IFsn16nXnScsICfXnteU15XXqicsICfXl9ep15HXldefJ10uc29tZShrZXkgPT4gbGFiZWwuc3RhcnRzV2l0aChrZXkpKSlcbiAgICAgICAgICAgIC5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiBgJHtsYWJlbH0gJHt2YWx1ZX1gKVxuICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBleHRyYSB0cmFuc2FjdGlvbiBkZXRhaWxzOicsIGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50cmllczoge30sXG4gICAgbWVtbzogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QpIHtcbiAgcmV0dXJuIHtcbiAgICBtaXpyYWhpeHNyZnRva2VuOiByZXF1ZXN0LmhlYWRlcnMoKS5taXpyYWhpeHNyZnRva2VuLFxuICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmhlYWRlcnMoKVsnY29udGVudC10eXBlJ10sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gIHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLFxuICBnZXRNb3JlRGV0YWlsczogKHJvdzogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiBQcm9taXNlPE1vcmVEZXRhaWxzPixcbik6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdHhucy5tYXAoYXN5bmMgcm93ID0+IHtcbiAgICAgIGNvbnN0IG1vcmVEZXRhaWxzID0gYXdhaXQgZ2V0TW9yZURldGFpbHMocm93KTtcblxuICAgICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudChyb3cuTUMwMlBldWxhVGFhRVosIG1vbWVudC5IVE1MNV9GTVQuREFURVRJTUVfTE9DQUxfU0VDT05EUykudG9JU09TdHJpbmcoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIGlkZW50aWZpZXI6IHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiA/IHBhcnNlSW50KHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgICBvcmlnaW5hbEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICAgIGNoYXJnZWRBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgZGVzY3JpcHRpb246IHJvdy5NQzAyVG51YVRldXJFWixcbiAgICAgICAgbWVtbzogbW9yZURldGFpbHM/Lm1lbW8sXG4gICAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93LCB0ci5yZ0FsdFJvdycsIFtdLCB0cnMgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKHRyID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgdGQgPT4gdGQudGV4dENvbnRlbnQgfHwgJycpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBlbmRpbmdUeG5cbiAgICAubWFwKChbZGF0ZVN0ciwgZGVzY3JpcHRpb24sIGluY29tZUFtb3VudFN0ciwgYW1vdW50U3RyXSkgPT4gKHtcbiAgICAgIGRhdGU6IG1vbWVudChkYXRlU3RyLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpLFxuICAgICAgYW1vdW50OiBwYXJzZUludChhbW91bnRTdHIsIDEwKSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgaW5jb21lQW1vdW50U3RyLCAvLyBUT0RPOiBoYW5kbGUgaW5jb21lQW1vdW50U3RyIG9uY2Ugd2Uga25vdyB0aGUgc2lnbiBvZiBpdFxuICAgIH0pKVxuICAgIC5maWx0ZXIodHhuID0+IHR4bi5kYXRlKVxuICAgIC5tYXAoKHsgZGF0ZSwgZGVzY3JpcHRpb24sIGFtb3VudCB9KSA9PiAoe1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGAke2FjY291bnREcm9wRG93bkl0ZW1TZWxlY3Rvcn06bnRoLWNoaWxkKCR7aSArIDF9KWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaChhd2FpdCB0aGlzLmZldGNoQWNjb3VudCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgZiA9PiBmLnVybCgpLmluY2x1ZGVzKFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSkpO1xuICAgIGNvbnN0IGlzUGVuZGluZyA9IGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgcGVuZGluZ1RyeElkZW50aWZpZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIGlmICghaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKGZyYW1lKTtcbiAgICByZXR1cm4gcGVuZGluZ1R4bjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yU2VsZWN0b3IoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgYWNjb3VudE51bWJlckVsZW1lbnQgPSBhd2FpdCB0aGlzLnBhZ2UuJCgnI2Ryb3Bkb3duQmFzaWMgYiBzcGFuJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlckhhbmRsZSA9IGF3YWl0IGFjY291bnROdW1iZXJFbGVtZW50Py5nZXRQcm9wZXJ0eSgndGl0bGUnKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gKGF3YWl0IGFjY291bnROdW1iZXJIYW5kbGU/Lmpzb25WYWx1ZSgpKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjY291bnQgbnVtYmVyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNwb25zZSwgYXBpSGVhZGVyc10gPSBhd2FpdCBQcm9taXNlLmFueShcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMubWFwKGFzeW5jIHVybCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclJlcXVlc3QodXJsKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICByZXR1cm4gW2F3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4odGhpcy5wYWdlLCB1cmwsIGRhdGEsIGhlYWRlcnMpLCBoZWFkZXJzXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24uIFJlc3BvbnNlIG1lc3NhZ2U6ICR7cmVzcG9uc2UgPyByZXNwb25zZS5oZWFkZXIubWVzc2FnZXNbMF0udGV4dCA6ICcnfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGV2YW50Um93cyA9IHJlc3BvbnNlLmJvZHkudGFibGUucm93cy5maWx0ZXIocm93ID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBhd2FpdCBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgICAgcmVsZXZhbnRSb3dzLFxuICAgICAgdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgICAgID8gcm93ID0+IGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKHRoaXMucGFnZSwgcm93LCBhcGlIZWFkZXJzKVxuICAgICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSh7IGVudHJpZXM6IHt9LCBtZW1vOiB1bmRlZmluZWQgfSksXG4gICAgKTtcblxuICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIHdoaWNoIHRoZSBiYW5rJ3MgQVBJIHJldHVybnMgdHJhbnNhY3Rpb25zIGJlZm9yZSB0aGUgcmVxdWVzdGVkIHN0YXJ0IGRhdGVcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IGdldFN0YXJ0TW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpO1xuICAgIGNvbnN0IG9zaFR4bkFmdGVyU3RhcnREYXRlID0gb3NoVHhuLmZpbHRlcih0eG4gPT4gbW9tZW50KHR4bi5kYXRlKS5pc1NhbWVPckFmdGVyKHN0YXJ0TW9tZW50KSk7XG5cbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgdGhpcy5nZXRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7XG4gICAgY29uc3QgYWxsVHhuID0gb3NoVHhuQWZ0ZXJTdGFydERhdGUuY29uY2F0KHBlbmRpbmdUeG4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBhbGxUeG4sXG4gICAgICBiYWxhbmNlOiArcmVzcG9uc2UuYm9keS5maWVsZHM/LllpdHJhLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWl6cmFoaVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQTRDLFNBQUFELHVCQUFBVSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTVDLE1BQU1HLEtBQUssR0FBRyxJQUFBQyxlQUFRLEVBQUMsU0FBUyxDQUFDO0FBeURqQyxNQUFNQyxnQkFBZ0IsR0FBRyxtQ0FBbUM7QUFDNUQsTUFBTUMsU0FBUyxHQUFHLEdBQUdELGdCQUFnQixpQ0FBaUM7QUFDdEUsTUFBTUUsWUFBWSxHQUFHLG1DQUFtQztBQUN4RCxNQUFNQyxvQkFBb0Is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
|
|
265
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInR4biIsInBvc3RMb2dpbiIsInJhY2UiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJ3YWl0Rm9yVXJsIiwiTWl6cmFoaVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJjaGVja1JlYWRpbmVzcyIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiJGV2YWwiLCJlbCIsImNsaWNrIiwibnVtT2ZBY2NvdW50cyIsInJlc3VsdHMiLCJpIiwicHVzaCIsImZldGNoQWNjb3VudCIsInN1Y2Nlc3MiLCJhY2NvdW50cyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJnZXRQZW5kaW5nVHJhbnNhY3Rpb25zIiwiZnJhbWUiLCJ3YWl0VW50aWxJZnJhbWVGb3VuZCIsImYiLCJ1cmwiLCJpbmNsdWRlcyIsImlzUGVuZGluZyIsInRoZW4iLCJjYXRjaCIsIndhaXRGb3JTZWxlY3RvciIsImFjY291bnROdW1iZXJFbGVtZW50IiwiYWNjb3VudE51bWJlckhhbmRsZSIsImdldFByb3BlcnR5IiwiYWNjb3VudE51bWJlciIsImpzb25WYWx1ZSIsIkVycm9yIiwiYW55Iiwid2FpdEZvclJlcXVlc3QiLCJoZWFkZXIiLCJtZXNzYWdlcyIsInRleHQiLCJyZWxldmFudFJvd3MiLCJyb3dzIiwiUmVjVHlwZVNwZWNpZmllZCIsIm9zaFR4biIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwicmVzb2x2ZSIsIm9wdEluRmVhdHVyZXMiLCJzaG91bGRNYXJrQXNQZW5kaW5nIiwiZm9yRWFjaCIsInN0YXJ0TW9tZW50Iiwib3NoVHhuQWZ0ZXJTdGFydERhdGUiLCJpc1NhbWVPckFmdGVyIiwiYWxsVHhuIiwiY29uY2F0IiwiYmFsYW5jZSIsIllpdHJhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL21penJhaGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBGcmFtZSwgdHlwZSBIVFRQUmVxdWVzdCwgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHdhaXRVbnRpbElmcmFtZUZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yVXJsIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtaXpyYWhpJyk7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBSZWNUeXBlU3BlY2lmaWVkOiBib29sZWFuO1xuICBNQzAyUGV1bGFUYWFFWjogc3RyaW5nO1xuICBNQzAyU2NodW1FWjogbnVtYmVyO1xuICBNQzAyQXNtYWh0YU1la29yaXRFWjogc3RyaW5nO1xuICBNQzAyVG51YVRldXJFWjogc3RyaW5nO1xuICBJc1RvZGF5VHJhbnNhY3Rpb246IGJvb2xlYW47XG4gIE1DMDJFcmVoVGFhRVo6IHN0cmluZztcbiAgTUMwMlNob3dEZXRhaWxzRVo/OiBzdHJpbmc7XG4gIE1DMDJLb2RHb3JlbUVaOiBhbnk7XG4gIE1DMDJTdWdUbnVhS2FzcGl0RVo6IGFueTtcbiAgTUMwMkFnaWRFWjogYW55O1xuICBNQzAyU2VpZk1hcmFsRVo6IGFueTtcbiAgTUMwMk5vc2VNYXJhbEVaOiBhbnk7XG4gIFRyYW5zYWN0aW9uTnVtYmVyOiBhbnk7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0IHtcbiAgaGVhZGVyOiB7XG4gICAgc3VjY2VzczogYm9vbGVhbjtcbiAgICBtZXNzYWdlczogeyB0ZXh0OiBzdHJpbmcgfVtdO1xuICB9O1xuICBib2R5OiB7XG4gICAgZmllbGRzOiB7XG4gICAgICBZaXRyYTogc3RyaW5nO1xuICAgIH07XG4gICAgdGFibGU6IHtcbiAgICAgIHJvd3M6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbnR5cGUgTW9yZURldGFpbHNSZXNwb25zZSA9IHtcbiAgYm9keToge1xuICAgIGZpZWxkczogW1xuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgUmVjb3JkczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBGaWVsZHM6IEFycmF5PHtcbiAgICAgICAgICAgICAgICBMYWJlbDogc3RyaW5nO1xuICAgICAgICAgICAgICAgIFZhbHVlOiBzdHJpbmc7XG4gICAgICAgICAgICAgIH0+O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdO1xuICAgICAgICB9LFxuICAgICAgXSxcbiAgICBdO1xuICB9O1xufTtcblxudHlwZSBNb3JlRGV0YWlscyA9IHtcbiAgZW50cmllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgbWVtbzogc3RyaW5nIHwgdW5kZWZpbmVkO1xufTtcblxuY29uc3QgQkFTRV9XRUJTSVRFX1VSTCA9ICdodHRwczovL3d3dy5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgTE9HSU5fVVJMID0gYCR7QkFTRV9XRUJTSVRFX1VSTH0vbG9naW4vaW5kZXguaHRtbCMvYXV0aC1wYWdlLWhlYDtcbmNvbnN0IEJBU0VfQVBQX1VSTCA9ICdodHRwczovL210by5taXpyYWhpLXRlZmFob3QuY28uaWwnO1xuY29uc3QgQUZURVJfTE9HSU5fQkFTRV9VUkwgPSAvaHR0cHM6XFwvXFwvbXRvXFwubWl6cmFoaS10ZWZhaG90XFwuY29cXC5pbFxcL09ubGluZUFwcFxcLy4qLztcbmNvbnN0IE9TSF9QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtTWFpbic7XG5jb25zdCBUUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9yb290LW1haW4tb3NoLXA0MjhOZXcnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfVVJMUyA9IFtcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmVQaWxvdC9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbiAgYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL1NreU9TSC9nZXQ0MjhJbmRleGAsXG5dO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSA9ICcvb3NoL2xlZ2FjeS9sZWdhY3ktT3NoLXA0MjAnO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfSUZSQU1FID0gJ3A0MjAuYXNweCc7XG5jb25zdCBNT1JFX0RFVEFJTFNfVVJMID0gYCR7QkFTRV9BUFBfVVJMfS9PbmxpbmUvYXBpL09TSC9nZXRNYWhlckJlcnVyaW1TTUZgO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX1VSTCA9IC9odHRwczpcXC9cXC93d3dcXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvbG9naW5cXC9pbmRleFxcLmh0bWwjXFwvY2hhbmdlLXBhc3MvO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBNQVhfUk9XU19QRVJfUkVRVUVTVCA9IDEwMDAwMDAwMDAwO1xuXG5jb25zdCB1c2VybmFtZVNlbGVjdG9yID0gJyN1c2VyTnVtYmVyRGVza3RvcEhlYic7XG5jb25zdCBwYXNzd29yZFNlbGVjdG9yID0gJyNwYXNzd29yZERlc2t0b3BIZWInO1xuY29uc3Qgc3VibWl0QnV0dG9uU2VsZWN0b3IgPSAnYnV0dG9uLmJ0bi5idG4tcHJpbWFyeSc7XG5jb25zdCBpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciA9ICdhW2hyZWYqPVwiaHR0cHM6Ly9zYy5taXpyYWhpLXRlZmFob3QuY28uaWwvU0NTZXJ2aWNlcy9TQy9QMDEwLmFzcHhcIl0nO1xuY29uc3QgYWZ0ZXJMb2dpblNlbGVjdG9yID0gJyNkcm9wZG93bkJhc2ljJztcbmNvbnN0IGxvZ2luU3Bpbm5lclNlbGVjdG9yID0gJ2Rpdi5uZ3gtb3ZlcmxheS5sb2FkaW5nLWZvcmVncm91bmQnO1xuY29uc3QgYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yID0gJyNBY2NvdW50UGlja2VyIC5pdGVtJztcbmNvbnN0IHBlbmRpbmdUcnhJZGVudGlmaWVySWQgPSAnI2N0bDAwX0NvbnRlbnRQbGFjZUhvbGRlcjJfcGFuZWwxJztcbmNvbnN0IGNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUgPSAn16LXldeR16gg15XXqdeRJztcbmNvbnN0IGNoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lID0gJ0NoZWNraW5nIEFjY291bnQnO1xuY29uc3QgZ2VuZXJpY0Rlc2NyaXB0aW9ucyA9IFsn15TXoteR16jXqiDXmdeV157XnyDXnNeR16DXpyDXlteoINee16HXoNeZ16Mg15bXqCddO1xuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiB1c2VybmFtZVNlbGVjdG9yLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiBwYXNzd29yZFNlbGVjdG9yLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNMb2dnZWRJbihvcHRpb25zOiB7IHBhZ2U/OiBQYWdlIHwgdW5kZWZpbmVkIH0gfCB1bmRlZmluZWQpIHtcbiAgaWYgKCFvcHRpb25zPy5wYWdlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IG9zaFhQYXRoID0gYC8vYS8vc3Bhbltjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZX1cIikgb3IgY29udGFpbnMoLiwgXCIke2NoZWNraW5nQWNjb3VudFRhYkVuZ2xpc2hOYW1lfVwiKV1gO1xuICBjb25zdCBvc2hUYWIgPSBhd2FpdCBvcHRpb25zLnBhZ2UuJCQoYHhwYXRoJHtvc2hYUGF0aH1gKTtcbiAgcmV0dXJuIG9zaFRhYi5sZW5ndGggPiAwO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhwYWdlOiBQYWdlKTogUG9zc2libGVMb2dpblJlc3VsdHMge1xuICByZXR1cm4ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFtBRlRFUl9MT0dJTl9CQVNFX1VSTCwgaXNMb2dnZWRJbl0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbYXN5bmMgKCkgPT4gISEoYXdhaXQgcGFnZS4kKGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSldLFxuICAgIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbQ0hBTkdFX1BBU1NXT1JEX1VSTF0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnNTdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICByZXR1cm4gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHBhZ2U6IFBhZ2UsXG4gIGl0ZW06IFNjcmFwZWRUcmFuc2FjdGlvbixcbiAgYXBpSGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbik6IFByb21pc2U8TW9yZURldGFpbHM+IHtcbiAgdHJ5IHtcbiAgICBkZWJ1ZygnZ2V0RXh0cmFUcmFuc2FjdGlvbkRldGFpbHMgZm9yIGl0ZW06JywgaXRlbSk7XG4gICAgaWYgKGl0ZW0uTUMwMlNob3dEZXRhaWxzRVogPT09ICcxJykge1xuICAgICAgY29uc3QgdGFyUGV1bGEgPSBtb21lbnQoaXRlbS5NQzAyUGV1bGFUYWFFWik7XG4gICAgICBjb25zdCB0YXJFcmVjaCA9IG1vbWVudChpdGVtLk1DMDJFcmVoVGFhRVopO1xuXG4gICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgIGluS29kR29yZW06IGl0ZW0uTUMwMktvZEdvcmVtRVosXG4gICAgICAgIGluQXNtYWNodGE6IGl0ZW0uTUMwMkFzbWFodGFNZWtvcml0RVosXG4gICAgICAgIGluU2NodW06IGl0ZW0uTUMwMlNjaHVtRVosXG4gICAgICAgIGluTmFrdmFuaXQ6IGl0ZW0uTUMwMktvZEdvcmVtRVosXG4gICAgICAgIGluU3VnVG51YTogaXRlbS5NQzAyU3VnVG51YUthc3BpdEVaLFxuICAgICAgICBpbkFnaWQ6IGl0ZW0uTUMwMkFnaWRFWixcbiAgICAgICAgaW5UYXJQZXVsYUZvcm1hdHRlZDogdGFyUGV1bGEuZm9ybWF0KERBVEVfRk9STUFUKSxcbiAgICAgICAgaW5UYXJFcmVjaEZvcm1hdHRlZDogKHRhckVyZWNoLnllYXIoKSA+IDIwMDAgPyB0YXJFcmVjaCA6IHRhclBldWxhKS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpbktvZE5vc2U6IGl0ZW0uTUMwMlNlaWZNYXJhbEVaLFxuICAgICAgICBpbktvZFRhdE5vc2U6IGl0ZW0uTUMwMk5vc2VNYXJhbEVaLFxuICAgICAgICBpblRyYW5zYWN0aW9uTnVtYmVyOiBpdGVtLlRyYW5zYWN0aW9uTnVtYmVyLFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPE1vcmVEZXRhaWxzUmVzcG9uc2U+KHBhZ2UsIE1PUkVfREVUQUlMU19VUkwsIHBhcmFtcywgYXBpSGVhZGVycyk7XG4gICAgICBjb25zdCBkZXRhaWxzID0gcmVzcG9uc2U/LmJvZHkuZmllbGRzPy5bMF0/LlswXT8uUmVjb3Jkcz8uWzBdLkZpZWxkcztcbiAgICAgIGRlYnVnKCdmZXRjaCBkZXRhaWxzIGZvcicsIHBhcmFtcywgJ2RldGFpbHM6JywgZGV0YWlscyk7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShkZXRhaWxzKSAmJiBkZXRhaWxzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGRldGFpbHMubWFwKHJlY29yZCA9PiBbcmVjb3JkLkxhYmVsLnRyaW0oKSwgcmVjb3JkLlZhbHVlLnRyaW0oKV0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGVudHJpZXM6IE9iamVjdC5mcm9tRW50cmllcyhlbnRyaWVzKSxcbiAgICAgICAgICBtZW1vOiBlbnRyaWVzXG4gICAgICAgICAgICAuZmlsdGVyKChbbGFiZWxdKSA9PiBbJ9ep150nLCAn157XlNeV16onLCAn15fXqdeR15XXnyddLnNvbWUoa2V5ID0+IGxhYmVsLnN0YXJ0c1dpdGgoa2V5KSkpXG4gICAgICAgICAgICAubWFwKChbbGFiZWwsIHZhbHVlXSkgPT4gYCR7bGFiZWx9ICR7dmFsdWV9YClcbiAgICAgICAgICAgIC5qb2luKCcsICcpLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBkZWJ1ZygnRXJyb3IgZmV0Y2hpbmcgZXh0cmEgdHJhbnNhY3Rpb24gZGV0YWlsczonLCBlcnJvcik7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGVudHJpZXM6IHt9LFxuICAgIG1lbW86IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRGF0YUZyb21SZXF1ZXN0KHJlcXVlc3Q6IEhUVFBSZXF1ZXN0LCBvcHRpb25zU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHJlcXVlc3QucG9zdERhdGEoKSB8fCAne30nKTtcblxuICBkYXRhLmluRnJvbURhdGUgPSBnZXRTdGFydE1vbWVudChvcHRpb25zU3RhcnREYXRlKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLmluVG9EYXRlID0gbW9tZW50KCkuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgZGF0YS50YWJsZS5tYXhSb3cgPSBNQVhfUk9XU19QRVJfUkVRVUVTVDtcblxuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0KHJlcXVlc3Q6IEhUVFBSZXF1ZXN0KSB7XG4gIHJldHVybiB7XG4gICAgbWl6cmFoaXhzcmZ0b2tlbjogcmVxdWVzdC5oZWFkZXJzKCkubWl6cmFoaXhzcmZ0b2tlbixcbiAgICAnQ29udGVudC1UeXBlJzogcmVxdWVzdC5oZWFkZXJzKClbJ2NvbnRlbnQtdHlwZSddLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSxcbiAgZ2V0TW9yZURldGFpbHM6IChyb3c6IFNjcmFwZWRUcmFuc2FjdGlvbikgPT4gUHJvbWlzZTxNb3JlRGV0YWlscz4sXG4gIHBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb246IGJvb2xlYW4gPSBmYWxzZSxcbik6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdHhucy5tYXAoYXN5bmMgcm93ID0+IHtcbiAgICAgIGNvbnN0IG1vcmVEZXRhaWxzID0gYXdhaXQgZ2V0TW9yZURldGFpbHMocm93KTtcblxuICAgICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudChyb3cuTUMwMlBldWxhVGFhRVosIG1vbWVudC5IVE1MNV9GTVQuREFURVRJTUVfTE9DQUxfU0VDT05EUykudG9JU09TdHJpbmcoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIGlkZW50aWZpZXI6IHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiA/IHBhcnNlSW50KHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgICBvcmlnaW5hbEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICAgIGNoYXJnZWRBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgZGVzY3JpcHRpb246IHJvdy5NQzAyVG51YVRldXJFWixcbiAgICAgICAgbWVtbzogbW9yZURldGFpbHM/Lm1lbW8sXG4gICAgICAgIHN0YXR1czpcbiAgICAgICAgICBwZW5kaW5nSWZUb2RheVRyYW5zYWN0aW9uICYmIHJvdy5Jc1RvZGF5VHJhbnNhY3Rpb25cbiAgICAgICAgICAgID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nXG4gICAgICAgICAgICA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgfTtcbiAgICB9KSxcbiAgKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXh0cmFjdFBlbmRpbmdUcmFuc2FjdGlvbnMocGFnZTogRnJhbWUpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICd0ci5yZ1JvdywgdHIucmdBbHRSb3cnLCBbXSwgdHJzID0+IHtcbiAgICByZXR1cm4gdHJzLm1hcCh0ciA9PiBBcnJheS5mcm9tKHRyLnF1ZXJ5U2VsZWN0b3JBbGwoJ3RkJyksIHRkID0+IHRkLnRleHRDb250ZW50IHx8ICcnKSk7XG4gIH0pO1xuXG4gIHJldHVybiBwZW5kaW5nVHhuXG4gICAgLm1hcCgoW2RhdGVTdHIsIGRlc2NyaXB0aW9uLCBpbmNvbWVBbW91bnRTdHIsIGFtb3VudFN0cl0pID0+ICh7XG4gICAgICBkYXRlOiBtb21lbnQoZGF0ZVN0ciwgJ0REL01NL1lZJykudG9JU09TdHJpbmcoKSxcbiAgICAgIGFtb3VudDogcGFyc2VJbnQoYW1vdW50U3RyLCAxMCksXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIGluY29tZUFtb3VudFN0ciwgLy8gVE9ETzogaGFuZGxlIGluY29tZUFtb3VudFN0ciBvbmNlIHdlIGtub3cgdGhlIHNpZ24gb2YgaXRcbiAgICB9KSlcbiAgICAuZmlsdGVyKHR4biA9PiB0eG4uZGF0ZSlcbiAgICAubWFwKCh7IGRhdGUsIGRlc2NyaXB0aW9uLCBhbW91bnQgfSkgPT4gKHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgZGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGRhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogYW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogYW1vdW50LFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyxcbiAgICB9KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBvc3RMb2dpbihwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IFByb21pc2UucmFjZShbXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGFmdGVyTG9naW5TZWxlY3RvciksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGludmFsaWRQYXNzd29yZFNlbGVjdG9yKSxcbiAgICB3YWl0Rm9yVXJsKHBhZ2UsIENIQU5HRV9QQVNTV09SRF9VUkwpLFxuICBdKTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBNaXpyYWhpU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcixcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHRoaXMucGFnZSwgbG9naW5TcGlubmVyU2VsZWN0b3IpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoJyNkcm9wZG93bkJhc2ljLCAuaXRlbScsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG5cbiAgICBjb25zdCBudW1PZkFjY291bnRzID0gKGF3YWl0IHRoaXMucGFnZS4kJChhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IpKS5sZW5ndGg7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtT2ZBY2NvdW50czsgaSArPSAxKSB7XG4gICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgJHthY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3J9Om50aC1jaGlsZCgke2kgKyAxfSlgLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICByZXN1bHRzLnB1c2goYXdhaXQgdGhpcy5mZXRjaEFjY291bnQoKSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICAgIGFjY291bnRzOiByZXN1bHRzLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgICBlcnJvck1lc3NhZ2U6IChlIGFzIEVycm9yKS5tZXNzYWdlLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCB3YWl0VW50aWxJZnJhbWVGb3VuZCh0aGlzLnBhZ2UsIGYgPT4gZi51cmwoKS5pbmNsdWRlcyhQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUpKTtcbiAgICBjb25zdCBpc1BlbmRpbmcgPSBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsIHBlbmRpbmdUcnhJZGVudGlmaWVySWQpXG4gICAgICAudGhlbigoKSA9PiB0cnVlKVxuICAgICAgLmNhdGNoKCgpID0+IGZhbHNlKTtcbiAgICBpZiAoIWlzUGVuZGluZykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhmcmFtZSk7XG4gICAgcmV0dXJuIHBlbmRpbmdUeG47XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoQWNjb3VudCgpIHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclNlbGVjdG9yKGBhW2hyZWYqPVwiJHtPU0hfUEFHRX1cIl1gKTtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgYGFbaHJlZio9XCIke1RSQU5TQUNUSU9OU19QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IGFjY291bnROdW1iZXJFbGVtZW50ID0gYXdhaXQgdGhpcy5wYWdlLiQoJyNkcm9wZG93bkJhc2ljIGIgc3BhbicpO1xuICAgIGNvbnN0IGFjY291bnROdW1iZXJIYW5kbGUgPSBhd2FpdCBhY2NvdW50TnVtYmVyRWxlbWVudD8uZ2V0UHJvcGVydHkoJ3RpdGxlJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlciA9IChhd2FpdCBhY2NvdW50TnVtYmVySGFuZGxlPy5qc29uVmFsdWUoKSkgYXMgc3RyaW5nO1xuICAgIGlmICghYWNjb3VudE51bWJlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY2NvdW50IG51bWJlciBub3QgZm91bmQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBbcmVzcG9uc2UsIGFwaUhlYWRlcnNdID0gYXdhaXQgUHJvbWlzZS5hbnkoXG4gICAgICBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTLm1hcChhc3luYyB1cmwgPT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5wYWdlLndhaXRGb3JSZXF1ZXN0KHVybCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdCwgdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdCk7XG5cbiAgICAgICAgcmV0dXJuIFthd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQ+KHRoaXMucGFnZSwgdXJsLCBkYXRhLCBoZWFkZXJzKSwgaGVhZGVyc10gYXMgY29uc3Q7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgaWYgKCFyZXNwb25zZSB8fCByZXNwb25zZS5oZWFkZXIuc3VjY2VzcyA9PT0gZmFsc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVycm9yIGZldGNoaW5nIHRyYW5zYWN0aW9uLiBSZXNwb25zZSBtZXNzYWdlOiAke3Jlc3BvbnNlID8gcmVzcG9uc2UuaGVhZGVyLm1lc3NhZ2VzWzBdLnRleHQgOiAnJ31gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxldmFudFJvd3MgPSByZXNwb25zZS5ib2R5LnRhYmxlLnJvd3MuZmlsdGVyKHJvdyA9PiByb3cuUmVjVHlwZVNwZWNpZmllZCk7XG4gICAgY29uc3Qgb3NoVHhuID0gYXdhaXQgY29udmVydFRyYW5zYWN0aW9ucyhcbiAgICAgIHJlbGV2YW50Um93cyxcbiAgICAgIHRoaXMub3B0aW9ucy5hZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvblxuICAgICAgICA/IHJvdyA9PiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyh0aGlzLnBhZ2UsIHJvdywgYXBpSGVhZGVycylcbiAgICAgICAgOiAoKSA9PiBQcm9taXNlLnJlc29sdmUoeyBlbnRyaWVzOiB7fSwgbWVtbzogdW5kZWZpbmVkIH0pLFxuICAgICAgdGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24nKSxcbiAgICApO1xuXG4gICAgb3NoVHhuXG4gICAgICAuZmlsdGVyKHR4biA9PiB0aGlzLnNob3VsZE1hcmtBc1BlbmRpbmcodHhuKSlcbiAgICAgIC5mb3JFYWNoKHR4biA9PiB7XG4gICAgICAgIHR4bi5zdGF0dXMgPSBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmc7XG4gICAgICB9KTtcblxuICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIHdoaWNoIHRoZSBiYW5rJ3MgQVBJIHJldHVybnMgdHJhbnNhY3Rpb25zIGJlZm9yZSB0aGUgcmVxdWVzdGVkIHN0YXJ0IGRhdGVcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IGdldFN0YXJ0TW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpO1xuICAgIGNvbnN0IG9zaFR4bkFmdGVyU3RhcnREYXRlID0gb3NoVHhuLmZpbHRlcih0eG4gPT4gbW9tZW50KHR4bi5kYXRlKS5pc1NhbWVPckFmdGVyKHN0YXJ0TW9tZW50KSk7XG5cbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgdGhpcy5nZXRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7XG4gICAgY29uc3QgYWxsVHhuID0gb3NoVHhuQWZ0ZXJTdGFydERhdGUuY29uY2F0KHBlbmRpbmdUeG4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBhbGxUeG4sXG4gICAgICBiYWxhbmNlOiArcmVzcG9uc2UuYm9keS5maWVsZHM/LllpdHJhLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHNob3VsZE1hcmtBc1BlbmRpbmcodHhuOiBUcmFuc2FjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmTm9JZGVudGlmaWVyJykgJiYgIXR4bi5pZGVudGlmaWVyKSB7XG4gICAgICBkZWJ1ZyhgTWFya2luZyB0cmFuc2FjdGlvbiAnJHt0eG4uZGVzY3JpcHRpb259JyBhcyBwZW5kaW5nIGR1ZSB0byBubyBpZGVudGlmaWVyLmApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5vcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbicpICYmXG4gICAgICBnZW5lcmljRGVzY3JpcHRpb25zLmluY2x1ZGVzKHR4bi5kZXNjcmlwdGlvbilcbiAgICApIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIGdlbmVyaWMgZGVzY3JpcHRpb24uYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWl6cmFoaVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFB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RUFBRXRCLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FDMUUsQ0FBQztJQUVEbUIsTUFBTSxDQUNIckgsTUFBTSxDQUFDZ0UsR0FBRyxJQUFJLElBQUksQ0FBQ3lELG1CQUFtQixDQUFDekQsR0FBRyxDQUFDLENBQUMsQ0FDNUMwRCxPQUFPLENBQUMxRCxHQUFHLElBQUk7TUFDZEEsR0FBRyxDQUFDbEIsTUFBTSxHQUFHRSxpQ0FBbUIsQ0FBQ0MsT0FBTztJQUMxQyxDQUFDLENBQUM7O0lBRUo7SUFDQSxNQUFNMEUsV0FBVyxHQUFHbkwsY0FBYyxDQUFDLElBQUksQ0FBQ1osT0FBTyxDQUFDaUIsU0FBUyxDQUFDO0lBQzFELE1BQU0rSyxvQkFBb0IsR0FBR1AsTUFBTSxDQUFDckgsTUFBTSxDQUFDZ0UsR0FBRyxJQUFJLElBQUFySCxlQUFNLEVBQUNxSCxHQUFHLENBQUMxQixJQUFJLENBQUMsQ0FBQ3VGLGFBQWEsQ0FBQ0YsV0FBVyxDQUFDLENBQUM7SUFFOUYsTUFBTXZFLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQ3lDLHNCQUFzQixDQUFDLENBQUM7SUFDdEQsTUFBTWlDLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNHLE1BQU0sQ0FBQzNFLFVBQVUsQ0FBQztJQUV0RCxPQUFPO01BQ0xzRCxhQUFhO01BQ2JwRixJQUFJLEVBQUV3RyxNQUFNO01BQ1pFLE9BQU8sRUFBRSxDQUFDbEosUUFBUSxDQUFDRyxJQUFJLENBQUNDLE1BQU0sRUFBRStJO0lBQ2xDLENBQUM7RUFDSDtFQUVRUixtQkFBbUJBLENBQUN6RCxHQUFnQixFQUFXO0lBQ3JELElBQUksSUFBSSxDQUFDcEksT0FBTyxDQUFDNEwsYUFBYSxFQUFFdEIsUUFBUSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQ2xDLEdBQUcsQ0FBQzVCLFVBQVUsRUFBRTtNQUM1RnpJLEtBQUssQ0FBQyx3QkFBd0JxSyxHQUFHLENBQUNwQixXQUFXLG9DQUFvQyxDQUFDO01BQ2xGLE9BQU8sSUFBSTtJQUNiO0lBRUEsSUFDRSxJQUFJLENBQUNoSCxPQUFPLENBQUM0TCxhQUFhLEVBQUV0QixRQUFRLENBQUMsd0NBQXdDLENBQUMsSUFDOUU5SyxtQkFBbUIsQ0FBQzhLLFFBQVEsQ0FBQ2xDLEdBQUcsQ0FBQ3BCLFdBQVcsQ0FBQyxFQUM3QztNQUNBakosS0FBSyxDQUFDLHdCQUF3QnFLLEdBQUcsQ0FBQ3BCLFdBQVcsMENBQTBDLENBQUM7TUFDeEYsT0FBTyxJQUFJO0lBQ2I7SUFFQSxPQUFPLEtBQUs7RUFDZDtBQUNGO0FBQUMsSUFBQXNGLFFBQUEsR0FBQUMsT0FBQSxDQUFBek8sT0FBQSxHQUVjMkssY0FBYyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -36,6 +36,7 @@ describe('Mizrahi scraper', () => {
|
|
|
36
36
|
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions', async () => {
|
|
37
37
|
const options = {
|
|
38
38
|
...testsConfig.options,
|
|
39
|
+
optInFeatures: ['mizrahi:pendingIfHasGenericDescription', 'mizrahi:pendingIfHasGenericDescriptionWithDate', 'mizrahi:pendingIfTodayTransaction'],
|
|
39
40
|
companyId: COMPANY_ID
|
|
40
41
|
};
|
|
41
42
|
const scraper = new _mizrahi.default(options);
|
|
@@ -52,4 +53,4 @@ describe('Mizrahi scraper', () => {
|
|
|
52
53
|
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
53
54
|
});
|
|
54
55
|
});
|
|
55
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWl6cmFoaSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfZGVmaW5pdGlvbnMiLCJfY29uc3RhbnRzIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZGVidWciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImVuYWJsZSIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJtaXpyYWhpIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJNaXpyYWhpU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsIm9wdEluRmVhdHVyZXMiLCJjcmVkZW50aWFscyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwidHJpbSIsInRvQmVUcnV0aHkiLCJhY2NvdW50cyIsImxlbmd0aCIsInRvQmVHcmVhdGVyVGhhbiIsImFjY291bnQiLCJhY2NvdW50TnVtYmVyIiwibm90IiwidHhucyIsImRhdGUiLCJ0b01hdGNoIiwiSVNPX0RBVEVfUkVHRVgiLCJleHBvcnRUcmFuc2FjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWl6cmFoaS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNaXpyYWhpU2NyYXBlciBmcm9tICcuL21penJhaGknO1xuaW1wb3J0IHsgbWF5YmVUZXN0Q29tcGFueUFQSSwgZXh0ZW5kQXN5bmNUaW1lb3V0LCBnZXRUZXN0c0NvbmZpZywgZXhwb3J0VHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBJU09fREFURV9SRUdFWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5kZWJ1Zy5lbmFibGUoJ2lzcmFlbGktYmFuay1zY3JhcGVyczptaXpyYWhpJyk7XG5cbmNvbnN0IENPTVBBTllfSUQgPSAnbWl6cmFoaSc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ01penJhaGkgc2NyYXBlcicsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBleHRlbmRBc3luY1RpbWVvdXQoKTsgLy8gVGhlIGRlZmF1bHQgdGltZW91dCBpcyA1IHNlY29uZHMgcGVyIGFzeW5jIHRlc3QsIHRoaXMgZnVuY3Rpb24gZXh0ZW5kcyB0aGUgdGltZW91dCB2YWx1ZVxuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgZXhwb3NlIGxvZ2luIGZpZWxkcyBpbiBzY3JhcGVycyBjb25zdGFudCcsICgpID0+IHtcbiAgICBleHBlY3QoU0NSQVBFUlMubWl6cmFoaSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMubWl6cmFoaS5sb2dpbkZpZWxkcykudG9Db250YWluKCd1c2VybmFtZScpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5taXpyYWhpLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ3Bhc3N3b3JkJyk7XG4gIH0pO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCwgY29uZmlnID0+IGNvbmZpZy5jb21wYW55QVBJLmludmFsaWRQYXNzd29yZCkoXG4gICAgJ3Nob3VsZCBmYWlsIG9uIGludmFsaWQgdXNlci9wYXNzd29yZCcsXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2NyYXBlciA9IG5ldyBNaXpyYWhpU2NyYXBlcihvcHRpb25zKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUoeyB1c2VybmFtZTogJ2UxMHMxMicsIHBhc3N3b3JkOiAnM2Yzc3MzZCcgfSk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvclR5cGUpLnRvQmUoTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZCk7XG4gICAgfSxcbiAgKTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQpKCdzaG91bGQgc2NyYXBlIHRyYW5zYWN0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBvcHRJbkZlYXR1cmVzOiBbXG4gICAgICAgICdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbicsXG4gICAgICAgICdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbldpdGhEYXRlJyxcbiAgICAgICAgJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbicsXG4gICAgICBdLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IE1penJhaGlTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHRlc3RzQ29uZmlnLmNyZWRlbnRpYWxzLm1penJhaGkpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgY29uc3QgZXJyb3IgPSBgJHtyZXN1bHQuZXJyb3JUeXBlIHx8ICcnfSAke3Jlc3VsdC5lcnJvck1lc3NhZ2UgfHwgJyd9YC50cmltKCk7XG4gICAgZXhwZWN0KGVycm9yKS50b0JlKCcnKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QocmVzdWx0LmFjY291bnRzKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdCgocmVzdWx0LmFjY291bnRzIGFzIGFueSkubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgY29uc3QgYWNjb3VudDogVHJhbnNhY3Rpb25zQWNjb3VudCA9IChyZXN1bHQgYXMgYW55KS5hY2NvdW50c1swXTtcbiAgICBleHBlY3QoYWNjb3VudC5hY2NvdW50TnVtYmVyKS5ub3QudG9CZSgnJyk7XG4gICAgZXhwZWN0KGFjY291bnQudHhuc1swXS5kYXRlKS50b01hdGNoKElTT19EQVRFX1JFR0VYKTtcblxuICAgIGV4cG9ydFRyYW5zYWN0aW9ucyhDT01QQU5ZX0lELCByZXN1bHQuYWNjb3VudHMgfHwgW10pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElB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
|