bp-prism-game
Version:
The BP Prism Game
779 lines • 77.6 kB
JavaScript
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