UNPKG

bp-prism-game

Version:
779 lines 77.6 kB
import { Injectable } from '@angular/core'; import { ImageLoadedEnum } from '../enum/image-loaded.enum'; import { SCENERY_TREE_IMAGE } from '../images/scenery/tree/tree.base64'; import { SCENERY_WATER_ZERO_IMAGE } from '../images/scenery/water/water-zero.base64'; import { LEVEL_ONE_IMAGE } from '../images/levels/level-one.base64'; import { MAIN_GUNNER_SUPPORT_IMAGE } from '../images/main-gunner/main-gunner-support.base64'; import { MAIN_GUNNER_IMAGE } from '../images/main-gunner/main-gunner.base64'; import { SCENERY_LAVA_ONE_IMAGE } from '../images/scenery/lava/lava-one.base64'; import { LEVEL_BRIDGE_IMAGE } from '../images/levels/bridge.base64'; import { SCENERY_ROCK_IMAGE } from '../images/scenery/rock/rock.base64'; import { SCENERY_GRASS_IMAGE } from '../images/scenery/grass.base64'; import { MISSILE_WHITE_IMAGE } from '../images/main-gunner/missiles/missile.base64'; import { MISSILE_RED_IMAGE } from '../images/main-gunner/missiles/missile-red.base64'; import { MISSILE_BLUE_IMAGE } from '../images/main-gunner/missiles/missile-blue.base64'; import { MISSILE_GREEN_IMAGE } from '../images/main-gunner/missiles/missile-green.base64'; import { MISSILE_INDIGO_IMAGE } from '../images/main-gunner/missiles/missile-indigo.base64'; import { MISSILE_ORANGE_IMAGE } from '../images/main-gunner/missiles/missile-orange.base64'; import { MISSILE_YELLOW_IMAGE } from '../images/main-gunner/missiles/missile-yellow.base64'; import { MISSILE_VIOLET_IMAGE } from '../images/main-gunner/missiles/missile-violet.base64'; import { LEVEL_PATH_IMAGE } from '../images/levels/path.base64'; import { SCENERY_SLIME_IMAGE } from '../images/scenery/slime/slime.base64'; import { LEVEL_PATH_DIRECTION_IMAGE } from '../images/levels/path-direction.base64'; import { ALIEN_ONE_RIGHT_IMAGE } from '../images/alien/alien-1/alien-one-right.base64'; import { ALIEN_ONE_LEFT_IMAGE } from '../images/alien/alien-1/alien-one-left.base64'; import { SCENERY_TREE_LAND_IMAGE } from '../images/scenery/tree/tree-land.base64'; import { Subject } from 'rxjs'; import { ALIEN_DROPSHIP_1_IMAGE } from '../images/alien/alien-dropship/alien-dropship-1.base64'; import { TRACTOR_BEAM_1_IMAGE } from '../images/alien/alien-dropship/tractor-beam/tractor-beam-1.base64'; import { ALIEN_BASE_IMAGE } from '../images/alien/alien-base.base64'; import { PRISM_BASE_IMAGE } from '../images/prism-base/prism-base.base64'; import { SCENERY_WATER_ELEVEN_IMAGE } from '../images/scenery/water/water-eleven.base64'; import { SCENERY_WATER_THREE_IMAGE } from '../images/scenery/water/water-three.base64'; import { SCENERY_WATER_ONE_IMAGE } from '../images/scenery/water/water-one.base64'; import { SCENERY_WATER_WAVES_IMAGE } from '../images/scenery/water/water-waves.base64'; import { TRACTOR_BEAM_2_IMAGE } from '../images/alien/alien-dropship/tractor-beam/tractor-beam-2.base64'; import { TRACTOR_BEAM_3_IMAGE } from '../images/alien/alien-dropship/tractor-beam/tractor-beam-3.base64'; import { SCENERY_ROCK_LAND_IMAGE } from '../images/scenery/rock/rock-land.base64'; import { SCENERY_SLIME_GROUND_IMAGE } from '../images/scenery/slime/slime-ground.base64'; import { SCENERY_SLIME_TWO_IMAGE } from '../images/scenery/slime/slime-two.base64'; import { ALIEN_2_ANIMATION_EAST_1_IMAGE } from '../images/alien/alien-2/alien-2-animate-east-1.base64'; import { ALIEN_2_ANIMATION_EAST_2_IMAGE } from '../images/alien/alien-2/alien-2-animate-east-2.base64'; import { ALIEN_2_ANIMATION_WEST_1_IMAGE } from '../images/alien/alien-2/alien-2-animate-west-1.base64'; import { ALIEN_2_ANIMATION_WEST_2_IMAGE } from '../images/alien/alien-2/alien-2-animate-west-2.base64'; import { ALIEN_2_ANIMATION_NORTH_1_IMAGE } from '../images/alien/alien-2/alien-2-animate-north-1.base64'; import { ALIEN_2_ANIMATION_NORTH_2_IMAGE } from '../images/alien/alien-2/alien-2-animate-north-2.base64'; import { NUMBER_0_IMAGE } from '../images/number/number-0.base64'; import { NUMBER_1_IMAGE } from '../images/number/number-1.base64'; import { NUMBER_2_IMAGE } from '../images/number/number-2.base64'; import { NUMBER_3_IMAGE } from '../images/number/number-3.base64'; import { NUMBER_4_IMAGE } from '../images/number/number-4.base64'; import { NUMBER_5_IMAGE } from '../images/number/number-5.base64'; import { NUMBER_6_IMAGE } from '../images/number/number-6.base64'; import { NUMBER_7_IMAGE } from '../images/number/number-7.base64'; import { NUMBER_8_IMAGE } from '../images/number/number-8.base64'; import { NUMBER_9_IMAGE } from '../images/number/number-9.base64'; import { LETTER_L_IMAGE } from '../images/letter/letter-l.base64'; import { LETTER_P_IMAGE } from '../images/letter/letter-p.base64'; import { PRISM_BLAST_ICON_IMAGE } from '../images/prism-blast-icon/prism-blast-icon.base64'; import { ALIEN_DROPSHIP_2_IMAGE } from '../images/alien/alien-dropship/alien-dropship-2.base64'; import * as i0 from "@angular/core"; /** * The image service */ export class ImageService { /** * The constructor */ constructor() { /** * Images Loaded Observable Subject$ */ this.imagesLoadedSubject$ = new Subject(); this.resetLoadedImages(); this.images = {}; } /** * Reset the loaded Images */ resetLoadedImages() { this.imagesLoaded = { alienBase: false, alienDropship1: false, alienDropship2: false, alienOneRight: false, alienOneLeft: false, alien2AnimationEast1: false, alien2AnimationEast2: false, alien2AnimationNorth1: false, alien2AnimationNorth2: false, alien2AnimationWest1: false, alien2AnimationWest2: false, bridge: false, grass: false, lava: false, levelOneMap: false, mainGunner: false, missileBlue: false, missileGreen: false, missileIndigo: false, missileOrange: false, missileRed: false, missileViolet: false, missileYellow: false, missileWhite: false, number0: false, number1: false, number2: false, number3: false, number4: false, number5: false, number6: false, number7: false, number8: false, number9: false, letterl: false, letterp: false, path: false, pathDirection: false, prismBase: false, prismBlastIcon: false, rock: false, rockGround: false, slime: false, slime2: false, slimeGround: false, tractorBeam1: false, tractorBeam2: false, tractorBeam3: false, tree: false, treeGround: false, water0: false, water1: false, water2: false, water3: false, water4: false, water5: false, water6: false, water7: false, water8: false, water9: false, water10: false, water11: false, water12: false, water13: false, water14: false, water15: false, waterWaves: false }; } /** * Get image * @param imageType The image type to get */ getImage(imageType) { return this.images[imageType]; } /** * Set all the images loaded * @param imageType The image type */ setImageLoaded(imageType) { this.imagesLoaded[imageType] = true; let allLoaded = true; Object.keys(this.imagesLoaded).map((key) => { allLoaded = allLoaded && this.imagesLoaded[key]; }); if (allLoaded) { this.imagesLoadedSubject$.next(true); } } /** * Load the game images */ loadImages() { this.resetLoadedImages(); this.loadAlienImages(); this.loadLevelImages(); this.loadLetterImages(); this.loadMissileImages(); this.loadNumberImages(); this.loadPrismBaseImages(); this.loadPrismBlastImages(); this.loadSceneryImages(); this.loadSceneryWaterImages(); return this.imagesLoadedSubject$; } /** * Load the game images */ loadImageGroups(imagesToLoad) { imagesToLoad.map((imageData) => { const baseImage = new Image(); baseImage.src = imageData.image; baseImage.onload = () => { this.setImageLoaded(imageData.key); }; this.images[imageData.key] = { x: imageData.x, y: imageData.y, height: baseImage.height, width: baseImage.width, imageSource: baseImage, isRotate: imageData.isRotate, rotate: imageData.rotate }; }); return this.imagesLoadedSubject$; } /** * Load the alien images */ loadAlienImages() { const imagesToLoad = [ { key: ImageLoadedEnum.alienBase, image: ALIEN_BASE_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.alienDropship1, image: ALIEN_DROPSHIP_1_IMAGE, x: -12.5, y: -5, isRotate: false }, { key: ImageLoadedEnum.alienDropship2, image: ALIEN_DROPSHIP_2_IMAGE, x: -12.5, y: -5, isRotate: false }, { key: ImageLoadedEnum.alienOneLeft, image: ALIEN_ONE_LEFT_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alienOneRight, image: ALIEN_ONE_RIGHT_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alien2AnimationEast1, image: ALIEN_2_ANIMATION_EAST_1_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alien2AnimationEast2, image: ALIEN_2_ANIMATION_EAST_2_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alien2AnimationNorth1, image: ALIEN_2_ANIMATION_NORTH_1_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alien2AnimationNorth2, image: ALIEN_2_ANIMATION_NORTH_2_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alien2AnimationWest1, image: ALIEN_2_ANIMATION_WEST_1_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.alien2AnimationWest2, image: ALIEN_2_ANIMATION_WEST_2_IMAGE, x: -12.5, y: -12.5, isRotate: false }, { key: ImageLoadedEnum.tractorBeam1, image: TRACTOR_BEAM_1_IMAGE, x: -12.5, y: -10, isRotate: false }, { key: ImageLoadedEnum.tractorBeam2, image: TRACTOR_BEAM_2_IMAGE, x: -12.5, y: -10, isRotate: false }, { key: ImageLoadedEnum.tractorBeam3, image: TRACTOR_BEAM_3_IMAGE, x: -12.5, y: -10, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the scenery images */ loadSceneryImages() { const imagesToLoad = [ { key: ImageLoadedEnum.bridge, image: LEVEL_BRIDGE_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.grass, image: SCENERY_GRASS_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.lava, image: SCENERY_LAVA_ONE_IMAGE, x: 0, y: 0, width: 25, height: 25, isRotate: false }, { key: ImageLoadedEnum.rock, image: SCENERY_ROCK_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.rockGround, image: SCENERY_ROCK_LAND_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.slime, image: SCENERY_SLIME_IMAGE, x: -27, y: -20, isRotate: true, rotate: 180 }, { key: ImageLoadedEnum.slime2, image: SCENERY_SLIME_TWO_IMAGE, x: -26, y: -20, isRotate: true, rotate: 180 }, { key: ImageLoadedEnum.slimeGround, image: SCENERY_SLIME_GROUND_IMAGE, x: -1, y: 0, isRotate: false }, { key: ImageLoadedEnum.tree, image: SCENERY_TREE_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.treeGround, image: SCENERY_TREE_LAND_IMAGE, x: -1, y: -1, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the scenery water images */ loadSceneryWaterImages() { const imagesToLoad = [ { key: ImageLoadedEnum.water0, image: SCENERY_WATER_ZERO_IMAGE, x: -0.5, y: -0.5, isRotate: false }, { key: ImageLoadedEnum.water1, image: SCENERY_WATER_ONE_IMAGE, x: -0.5, y: -0.5, isRotate: false }, { key: ImageLoadedEnum.water2, image: SCENERY_WATER_ONE_IMAGE, x: -0.5, y: -25.5, isRotate: true, rotate: 90 }, { key: ImageLoadedEnum.water3, image: SCENERY_WATER_THREE_IMAGE, x: -0.5, y: -0.5, isRotate: false }, { key: ImageLoadedEnum.water4, image: SCENERY_WATER_ONE_IMAGE, x: -25.5, y: -25.5, isRotate: true, rotate: 180 }, { key: ImageLoadedEnum.water5, image: SCENERY_WATER_ZERO_IMAGE, x: -0.5, y: -0.5, isRotate: false }, { key: ImageLoadedEnum.water6, image: SCENERY_WATER_THREE_IMAGE, x: -0.5, y: -25.5, isRotate: true, rotate: 90 }, { key: ImageLoadedEnum.water7, image: SCENERY_WATER_ELEVEN_IMAGE, x: -0.5, y: -25.5, isRotate: true, rotate: 90 }, { key: ImageLoadedEnum.water8, image: SCENERY_WATER_ONE_IMAGE, x: -25.5, y: -0.5, isRotate: true, rotate: -90 }, { key: ImageLoadedEnum.water9, image: SCENERY_WATER_THREE_IMAGE, x: -26, y: 0, isRotate: true, rotate: -90 }, { key: ImageLoadedEnum.water10, image: SCENERY_WATER_ZERO_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.water11, image: SCENERY_WATER_ELEVEN_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.water12, image: SCENERY_WATER_THREE_IMAGE, x: -26, y: -26, isRotate: true, rotate: 180 }, { key: ImageLoadedEnum.water13, image: SCENERY_WATER_ELEVEN_IMAGE, x: -25.5, y: -0.5, isRotate: true, rotate: -90 }, { key: ImageLoadedEnum.water14, image: SCENERY_WATER_ELEVEN_IMAGE, x: -25.5, y: -25.5, isRotate: true, rotate: 180 }, { key: ImageLoadedEnum.water15, image: SCENERY_WATER_ZERO_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.waterWaves, image: SCENERY_WATER_WAVES_IMAGE, x: -0.5, y: -0.5, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the missile images */ loadMissileImages() { const imagesToLoad = [ { key: ImageLoadedEnum.missileBlue, image: MISSILE_BLUE_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileGreen, image: MISSILE_GREEN_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileIndigo, image: MISSILE_INDIGO_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileOrange, image: MISSILE_ORANGE_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileRed, image: MISSILE_RED_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileViolet, image: MISSILE_VIOLET_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileWhite, image: MISSILE_WHITE_IMAGE, x: 0, y: 0, isRotate: true }, { key: ImageLoadedEnum.missileYellow, image: MISSILE_YELLOW_IMAGE, x: 0, y: 0, isRotate: true } ]; this.loadImageGroups(imagesToLoad); } /** * Load the prism bases */ loadPrismBaseImages() { const imagesToLoad = [ { key: ImageLoadedEnum.mainGunner, image: MAIN_GUNNER_IMAGE, x: -27, y: -27, isRotate: true }, { key: ImageLoadedEnum.mainGunnerSupport, image: MAIN_GUNNER_SUPPORT_IMAGE, x: -36, y: -50, isRotate: false }, { key: ImageLoadedEnum.prismBase, image: PRISM_BASE_IMAGE, x: -25, y: -12.5, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the prism blast icon */ loadPrismBlastImages() { const imagesToLoad = [ { key: ImageLoadedEnum.prismBlastIcon, image: PRISM_BLAST_ICON_IMAGE, x: 0, y: 0, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the level images */ loadLevelImages() { const imagesToLoad = [ { key: ImageLoadedEnum.levelOneMap, image: LEVEL_ONE_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.path, image: LEVEL_PATH_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.pathDirection, image: LEVEL_PATH_DIRECTION_IMAGE, x: 0, y: 0, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the letter images */ loadLetterImages() { const imagesToLoad = [ { key: ImageLoadedEnum.letterl, image: LETTER_L_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.letterp, image: LETTER_P_IMAGE, x: 0, y: 0, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } /** * Load the number images */ loadNumberImages() { const imagesToLoad = [ { key: ImageLoadedEnum.number0, image: NUMBER_0_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number1, image: NUMBER_1_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number2, image: NUMBER_2_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number3, image: NUMBER_3_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number4, image: NUMBER_4_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number5, image: NUMBER_5_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number6, image: NUMBER_6_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number7, image: NUMBER_7_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number8, image: NUMBER_8_IMAGE, x: 0, y: 0, isRotate: false }, { key: ImageLoadedEnum.number9, image: NUMBER_9_IMAGE, x: 0, y: 0, isRotate: false } ]; this.loadImageGroups(imagesToLoad); } } ImageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); ImageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImageService, providedIn: 'root' }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.2", ngImport: i0, type: ImageService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: function () { return []; } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByaXNtL3NyYy9saWIvc2VydmljZS9pbWFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBR3hFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUNoRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN4RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNwRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxzREFBc0QsQ0FBQztBQUM1RixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxz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QUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyQyxDQUFDOzt5R0FwdUJVLFlBQVk7NkdBQVosWUFBWSxjQUZYLE1BQU07MkZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbWFnZUxvYWRlZEVudW0gfSBmcm9tICcuLi9lbnVtL2ltYWdlLWxvYWRlZC5lbnVtJztcbmltcG9ydCB7IFNDRU5FUllfVFJFRV9JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9zY2VuZXJ5L3RyZWUvdHJlZS5iYXNlNjQnO1xuaW1wb3J0IHsgSW1hZ2VEYXRhTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9pbWFnZS9pbWFnZS1kYXRhLm1vZGVsJztcbmltcG9ydCB7IEltYWdlTG9jYXRpb25Nb2RlbCB9IGZyb20gJy4uL21vZGVsL2ltYWdlL2ltYWdlLWxvY2F0aW9uLm1vZGVsJztcbmltcG9ydCB7IFNDRU5FUllfV0FURVJfWkVST19JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9zY2VuZXJ5L3dhdGVyL3dhdGVyLXplcm8uYmFzZTY0JztcbmltcG9ydCB7IExFVkVMX09ORV9JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9sZXZlbHMvbGV2ZWwtb25lLmJhc2U2NCc7XG5pbXBvcnQgeyBNQUlOX0dVTk5FUl9TVVBQT1JUX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21haW4tZ3VubmVyLXN1cHBvcnQuYmFzZTY0JztcbmltcG9ydCB7IE1BSU5fR1VOTkVSX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21haW4tZ3VubmVyLmJhc2U2NCc7XG5pbXBvcnQgeyBTQ0VORVJZX0xBVkFfT05FX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL3NjZW5lcnkvbGF2YS9sYXZhLW9uZS5iYXNlNjQnO1xuaW1wb3J0IHsgTEVWRUxfQlJJREdFX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL2xldmVscy9icmlkZ2UuYmFzZTY0JztcbmltcG9ydCB7IFNDRU5FUllfUk9DS19JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9zY2VuZXJ5L3JvY2svcm9jay5iYXNlNjQnO1xuaW1wb3J0IHsgU0NFTkVSWV9HUkFTU19JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9zY2VuZXJ5L2dyYXNzLmJhc2U2NCc7XG5pbXBvcnQgeyBNSVNTSUxFX1dISVRFX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21pc3NpbGVzL21pc3NpbGUuYmFzZTY0JztcbmltcG9ydCB7IE1JU1NJTEVfUkVEX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21pc3NpbGVzL21pc3NpbGUtcmVkLmJhc2U2NCc7XG5pbXBvcnQgeyBNSVNTSUxFX0JMVUVfSU1BR0UgfSBmcm9tICcuLi9pbWFnZXMvbWFpbi1ndW5uZXIvbWlzc2lsZXMvbWlzc2lsZS1ibHVlLmJhc2U2NCc7XG5pbXBvcnQgeyBNSVNTSUxFX0dSRUVOX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21pc3NpbGVzL21pc3NpbGUtZ3JlZW4uYmFzZTY0JztcbmltcG9ydCB7IE1JU1NJTEVfSU5ESUdPX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21pc3NpbGVzL21pc3NpbGUtaW5kaWdvLmJhc2U2NCc7XG5pbXBvcnQgeyBNSVNTSUxFX09SQU5HRV9JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9tYWluLWd1bm5lci9taXNzaWxlcy9taXNzaWxlLW9yYW5nZS5iYXNlNjQnO1xuaW1wb3J0IHsgTUlTU0lMRV9ZRUxMT1dfSU1BR0UgfSBmcm9tICcuLi9pbWFnZXMvbWFpbi1ndW5uZXIvbWlzc2lsZXMvbWlzc2lsZS15ZWxsb3cuYmFzZTY0JztcbmltcG9ydCB7IE1JU1NJTEVfVklPTEVUX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL21haW4tZ3VubmVyL21pc3NpbGVzL21pc3NpbGUtdmlvbGV0LmJhc2U2NCc7XG5pbXBvcnQgeyBMRVZFTF9QQVRIX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL2xldmVscy9wYXRoLmJhc2U2NCc7XG5pbXBvcnQgeyBTQ0VORVJZX1NMSU1FX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL3NjZW5lcnkvc2xpbWUvc2xpbWUuYmFzZTY0JztcbmltcG9ydCB7IExFVkVMX1BBVEhfRElSRUNUSU9OX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL2xldmVscy9wYXRoLWRpcmVjdGlvbi5iYXNlNjQnO1xuaW1wb3J0IHsgQUxJRU5fT05FX1JJR0hUX0lNQUdFIH0gZnJvbSAnLi4vaW1hZ2VzL2FsaWVuL2FsaWVuLTEvYWxpZW4tb25lLXJpZ2h0LmJhc2U2NCc7XG5pbXBvcnQgeyBBTElFTl9PTkVfTEVGVF9JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9hbGllbi9hbGllbi0xL2FsaWVuLW9uZS1sZWZ0LmJhc2U2NCc7XG5pbXBvcnQgeyBTQ0VORVJZX1RSRUVfTEFORF9JTUFHRSB9IGZyb20gJy4uL2ltYWdlcy9zY2